package cn.ksource.web.facade.uc.ucsearch;
|
|
import java.util.HashMap;
|
import java.util.LinkedList;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import cn.ksource.beans.SC_WORKFLOW_INCIDENT;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.StringUtil;
|
|
@Service("ucSearchFacade")
|
public class UcSearchFacadeImpl implements UcSearchFacade{
|
@Autowired
|
private BaseDao baseDao;
|
|
@Override
|
public int queryMainufacturerCount(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT C.ID) FROM CMDB_MAINUFACTURER C WHERE C.STATE=1 ");
|
queryMainufacturerIf(params,sql);
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
public PageInfo queryMainufacturerData(PageInfo pageInfo,
|
Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT * FROM CMDB_MAINUFACTURER C WHERE C.STATE=1");
|
queryMainufacturerIf(params, sql);
|
sql.append(" ORDER BY C.STATE,C.CREATE_TIME DESC");
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
private void queryMainufacturerIf(Map<String, String> params,
|
StringBuilder sql) {
|
sql.append(" AND C.CUSTOMER_ID = :cusId");
|
if(StringUtil.notEmpty(params.get("mainufacturerName"))){
|
sql.append(" AND C.ZH_NAME LIKE :mainufacturerName");
|
String mainufacturerName = String.valueOf(params.get("mainufacturerName"));
|
params.put("mainufacturerName", "%"+mainufacturerName+"%");
|
}
|
if(StringUtil.notEmpty(params.get("type"))){
|
String[] types = params.get("type").split(",");
|
if(types.length==1){
|
params.put("type", types[0]);
|
sql.append(" AND C.TYPE =:type");
|
}else{
|
params.put("typeOne", types[0]);
|
params.put("typeTwo", types[1]);
|
sql.append(" AND (C.TYPE =:typeOne or C.TYPE=:typeTwo)");
|
}
|
}
|
}
|
|
@Override
|
public int queryContactPersonCount(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT p.ID) FROM CMDB_MAINUFACTURER_CONTACTS p,CMDB_MAINUFACTURER c WHERE p.MAINUFACTUREERID=c.ID AND p.DEL_FLAG=1 AND c.STATE=1 ");
|
queryContactPersonIf(params,sql);
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
public PageInfo queryContactPersonData(PageInfo pageInfo,
|
Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT p.ID,p.CONTACTS,p.TELPHONE,p.MOBILE,p.COMPANYADDRESS,p.LEVEL,c.TYPE,c.ZH_NAME FROM CMDB_MAINUFACTURER_CONTACTS p,CMDB_MAINUFACTURER c WHERE p.MAINUFACTUREERID=c.ID AND p.DEL_FLAG=1 AND c.STATE=1 ");
|
queryContactPersonIf(params, sql);
|
sql.append(" ORDER BY p.LEVEL,p.CREATE_TIME DESC");
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
private void queryContactPersonIf(Map<String, String> params,
|
StringBuilder sql) {
|
sql.append(" AND C.CUSTOMER_ID = :cusId");
|
if(StringUtil.notEmpty(params.get("personName"))){
|
sql.append(" AND p.CONTACTS LIKE :personName");
|
}
|
if(StringUtil.notEmpty(params.get("type"))){
|
String[] types = params.get("type").split(",");
|
if(types.length==1){
|
params.put("type", types[0]);
|
sql.append(" AND C.TYPE =:type");
|
}else{
|
params.put("typeOne", types[0]);
|
params.put("typeTwo", types[1]);
|
sql.append(" AND (C.TYPE =:typeOne or C.TYPE=:typeTwo)");
|
}
|
}
|
if(StringUtil.notEmpty(params.get("phone"))){
|
sql.append(" AND p.MOBILE LIKE :phone");
|
}
|
if(StringUtil.notEmpty(params.get("contactsName"))){
|
sql.append(" AND c.ZH_NAME LIKE :contactsName");
|
}
|
}
|
|
@Override
|
public PageInfo queryContactsData(PageInfo pageInfo, Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT c.* FROM CUSTOMER_CONTACTS c WHERE c.STATE=1 ");
|
queryContactsIf(params, sql);
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
@Override
|
public int queryConttactsCount(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT c.ID) FROM CUSTOMER_CONTACTS c WHERE c.STATE=1 ");
|
queryContactsIf(params,sql);
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
private void queryContactsIf(Map<String, String> params, StringBuilder sql) {
|
sql.append(" AND C.CUSTOMER_ID = :cusId");
|
if(StringUtil.notEmpty(params.get("contactName"))){
|
sql.append(" AND c.CONTACT_NAME LIKE :contactName");
|
}
|
if(StringUtil.notEmpty(params.get("mobile"))){
|
sql.append(" AND c.MOBILE LIKE :mobile");
|
}
|
if(StringUtil.notEmpty(params.get("levelId"))){
|
sql.append(" AND c.LEVEL_ID = :levelId");
|
}
|
if(StringUtil.notEmpty(params.get("allow_login"))){
|
sql.append(" AND c.ALLOW_LOGIN = :allow_login");
|
}
|
if(StringUtil.notEmpty(params.get("is_satis"))){
|
sql.append(" AND c.IS_SATIS = :is_satis");
|
}
|
}
|
|
@Override
|
public int getsearchKnowCount(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT K.ID) FROM KM_LIBRARY K WHERE K.STATE=1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) ");
|
querysearchKnowIf(params,sql);
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
public PageInfo getsearchKnowData(PageInfo pageInfo,
|
Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT K.* FROM KM_LIBRARY K WHERE K.STATE=1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) ");
|
querysearchKnowIf(params, sql);
|
sql.append(" ORDER BY K.CREATE_TIME DESC");
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
private void querysearchKnowIf(Map<String, String> params, StringBuilder sql) {
|
String title = params.get("title");
|
String keyword = params.get("keyword");
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sql.append(" AND k.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
sql.append(" AND k.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sql.append(" :third_category_id"+i);
|
sql.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
String know = params.get("know");
|
if(StringUtil.notEmpty(know)) {
|
String[] knows = know.split(",");
|
if(knows.length==1) {
|
sql.append(" AND k.CATEGORY_ID = :category_id");
|
params.put("category_id", knows[0]);
|
} else {
|
sql.append(" AND k.CATEGORY_ID IN (");
|
for(int i=0; i<knows.length; i++) {
|
sql.append(" :category_id"+i);
|
sql.append(",");
|
params.put("category_id"+i, knows[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
String ci = params.get("ci");
|
if(StringUtil.notEmpty(ci)) {
|
String[] cis = ci.split(",");
|
if(cis.length==1) {
|
sql.append(" AND k.THIRDLEVEL_ID = :thirdlevel_id");
|
params.put("thirdlevel_id", cis[0]);
|
} else {
|
sql.append(" AND k.THIRDLEVEL_ID IN (");
|
for(int i=0; i<cis.length; i++) {
|
sql.append(" :thirdlevel_id"+i);
|
sql.append(",");
|
params.put("thirdlevel_id"+i, cis[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
if (!StringUtil.isEmpty(title)) {
|
sql.append(" and k.TITLE like :title ");
|
params.put("title", "%" + title + "%");
|
}
|
|
if (!StringUtil.isEmpty(keyword)) {
|
sql.append(" and k.TAG like :keyword ");
|
params.put("keyword", "%" + keyword + "%");
|
}
|
}
|
|
@Override
|
public Map categoryListTree(HttpServletRequest request) {
|
String sql="SELECT * FROM KM_LIBRARY_CATEGORY WHERE STATE = 1 ";
|
sql +=" ORDER BY LEVEL ";
|
Map slMap = new HashMap();
|
String sl = request.getParameter("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
for(String s : sls) {
|
slMap.put(s, s);
|
}
|
}
|
Map param = new HashMap();
|
List<Map> categoryList = baseDao.queryForList(sql);
|
|
Map result = new HashMap();
|
|
List<Map> resultList = new LinkedList<Map>();
|
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
Map<String, Map> sjgnCache = new HashMap<String, Map>();
|
|
for (Map map : categoryList) {
|
|
//一级树
|
if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
|
yjgnCache.put(map.get("ID").toString(), map);
|
List<Map> ejgnList = new LinkedList<Map>();
|
map.put("ejTree", ejgnList);
|
resultList.add(map);
|
continue;
|
}
|
//二级树
|
if (map.get("LEVEL").toString().equalsIgnoreCase("2")) {
|
Map yjgnMap = yjgnCache.get(map.get("TAG").toString());
|
List<Map> list = (List<Map>)yjgnMap.get("ejTree");
|
map.put("sjTree", new LinkedList<Map>());
|
list.add(map);
|
|
ejgnCache.put(map.get("ID").toString(), map);
|
continue;
|
}
|
//三级树
|
if (map.get("LEVEL").toString().equalsIgnoreCase("3")) {
|
if(null!=map.get("TAG")){
|
if(slMap.containsKey(map.get("ID"))) {
|
slMap.put(map.get("ID"), map.get("TITLE"));
|
map.put("check", 1);
|
} else {
|
map.put("check", 2);
|
}
|
|
Map ejgnMap = ejgnCache.get(map.get("TAG").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
}
|
}
|
Map resultMap = new HashMap();
|
resultMap.put("categoryList", resultList);
|
resultMap.put("slMap", slMap);
|
return resultMap;
|
}
|
|
@Override
|
public Map thirdlevelListTree(HttpServletRequest request) {
|
String sql="SELECT * FROM CMDB_CI_CATEGORY WHERE STATE = 1 and cate_type=1 ORDER BY LV,SERIAL ";
|
|
Map slMap = new HashMap();
|
String sl = request.getParameter("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
for(String s : sls) {
|
slMap.put(s, s);
|
}
|
}
|
|
List<Map> categoryList = baseDao.queryForList(sql);
|
|
Map result = new HashMap();
|
|
List<Map> resultList = new LinkedList<Map>();
|
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
Map<String, Map> sjgnCache = new HashMap<String, Map>();
|
|
for (Map map : categoryList) {
|
|
//一级树
|
if (map.get("LV").toString().equalsIgnoreCase("1")) {
|
yjgnCache.put(map.get("ID").toString(), map);
|
List<Map> ejgnList = new LinkedList<Map>();
|
map.put("ejTree", ejgnList);
|
resultList.add(map);
|
continue;
|
}
|
//二级树
|
if (map.get("LV").toString().equalsIgnoreCase("2")) {
|
Map yjgnMap = yjgnCache.get(map.get("PID").toString());
|
List<Map> list = (List<Map>)yjgnMap.get("ejTree");
|
map.put("sjTree", new LinkedList<Map>());
|
list.add(map);
|
|
ejgnCache.put(map.get("ID").toString(), map);
|
continue;
|
}
|
//三级树
|
if (map.get("LV").toString().equalsIgnoreCase("3")) {
|
if(null!=map.get("PID")){
|
if(slMap.containsKey(map.get("ID"))) {
|
slMap.put(map.get("ID"), map.get("NAME"));
|
map.put("check", 1);
|
} else {
|
map.put("check", 2);
|
}
|
|
Map ejgnMap = ejgnCache.get(map.get("PID").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
}
|
}
|
Map resultMap = new HashMap();
|
resultMap.put("categoryList", resultList);
|
resultMap.put("slMap", slMap);
|
return resultMap;
|
}
|
|
@Override
|
public Map repairDetail(String id) {
|
String sql = "SELECT A.*,B.YWKS,B.ZW,B.CONTACTS_TYPE,B.TELEPHONE,B.MOBILE,C.CUSTOMER_NAME FROM SC_PARTNER_CUSTOMER_INFO C,REPAIR_RECORD A left join CUSTOMER_CONTACTS B on B.ID = A.CREATE_ID WHERE A.CUS_ID = C.ID AND A.ID = :id ";
|
Map param = new HashMap();
|
param.put("id", id);
|
Map repair = baseDao.queryForMap(sql, param);
|
if(ConvertUtil.obj2Integer(repair.get("STATUS"))==3){
|
SC_WORKFLOW_INCIDENT incident = new SC_WORKFLOW_INCIDENT(ConvertUtil.obj2StrBlank(repair.get("INCIDENT_ID"))).getInstanceById();
|
repair.put("FLOWID", incident.getFlow_id());
|
repair.put("ORDER_CODE", incident.getOrder_code());
|
}
|
return repair;
|
}
|
|
@Override
|
public int repairListCount(Map<String, String> params) {
|
|
String userId = params.get("userId");
|
String state = params.get("state");
|
StringBuffer sql = new StringBuffer("SELECT COUNT(A.ID) FROM REPAIR_RECORD A,SC_PARTNER_CUSTOMER_INFO C WHERE A.CUS_ID = C.ID AND A.CREATE_ID = :user_id ");
|
Map param = new HashMap();
|
param.put("user_id", userId);
|
if(!StringUtil.isEmpty(state)){
|
sql.append(" AND A.STATUS = :state ");
|
param.put("state", state);
|
}
|
int count = baseDao.queryForInteger(sql.toString(), param);
|
return count;
|
}
|
|
@Override
|
public PageInfo repairListData(PageInfo pageInfo, Map<String, String> params) {
|
String userId = params.get("userId");
|
String state = params.get("state");
|
StringBuffer sql = new StringBuffer("SELECT A.*,C.CUSTOMER_NAME FROM REPAIR_RECORD A,SC_PARTNER_CUSTOMER_INFO C WHERE A.CUS_ID = C.ID AND A.CREATE_ID = :user_id ");
|
Map param = new HashMap();
|
param.put("user_id", userId);
|
if(!StringUtil.isEmpty(state)){
|
sql.append(" AND A.STATUS = :state ");
|
param.put("state", state);
|
}
|
sql.append(" ORDER BY A.CREATE_TIME DESC ");
|
PageInfo recordList = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), param);
|
return recordList;
|
}
|
|
|
}
|