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 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 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 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 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 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 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 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 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 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 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 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 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 categoryList = baseDao.queryForList(sql); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("1")) { yjgnCache.put(map.get("ID").toString(), map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("TAG").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); 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 list = (List)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 categoryList = baseDao.queryForList(sql); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LV").toString().equalsIgnoreCase("1")) { yjgnCache.put(map.get("ID").toString(), map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (map.get("LV").toString().equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("PID").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); 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 list = (List)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 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 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; } }