package cn.ksource.web.facade.servicelist; import cn.ksource.beans.CONFIG_DATA_DICTIONARY; import cn.ksource.beans.CUSTOMER_CONTACTS; import cn.ksource.beans.SC_SERVCE_CATEGORY; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.page.PageInfo; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.PasswordEncoder; import cn.ksource.core.web.WebUtil; import cn.ksource.web.Constants; import cn.ksource.web.SysConstants; import cn.ksource.web.facade.incident.IncidentFacade; import cn.ksource.web.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service("slaProjectFacade") public class SlaProjectFacadeImpl implements SlaProjectFacade { @Autowired private BaseDao baseDao; @Autowired private UserService userService; @Autowired private IncidentFacade incidentFacade; @Override public PageInfo queryProjectContacts(Map params, PageInfo pageInfo) { StringBuilder sql = new StringBuilder("SELECT DISTINCT ID , CUSTOMER_ID , CONTACT_NAME , YWKS , ZW , TELEPHONE , MOBILE , LEVEL_ID , LEVEL_NAME , IS_SATIS , STATE , LOGIN_NAME , PASSWORD , EMAIL , QQ_OPEN_ID , ISEMAIL , ISPHONE , ALLOW_LOGIN , WECHAT_OPEN_ID , SUB_CUSTOMER_ID , SUB_CUSTOMER_NAME , CONTACTS_TYPE , IME FROM CUSTOMER_CONTACTS WHERE CUSTOMER_ID = :customerId"); queryProjectContactsIf(params, sql); sql.append(" ORDER BY ALLOW_LOGIN ASC,IS_SATIS DESC,STATE ASC"); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } @Override public int queryProjectContactsCount(Map params) { StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT ID) FROM CUSTOMER_CONTACTS WHERE CUSTOMER_ID = :customerId"); queryProjectContactsIf(params,sql); return baseDao.queryForInteger(sql.toString(), params); } private void queryProjectContactsIf(Map params, StringBuilder sql) { String contact_name = params.get("contact_name"); if(!StringUtil.isEmpty(contact_name)){ sql.append(" AND CONTACT_NAME LIKE :contact_name "); params.put("contact_name", "%"+contact_name+"%"); } String login_name = params.get("login_name"); if(!StringUtil.isEmpty(login_name)){ sql.append(" AND LOGIN_NAME LIKE :login_name "); params.put("login_name", "%"+login_name+"%"); } //联系方式 String mobile = params.get("mobile"); if(!StringUtil.isEmpty(mobile)){ sql.append(" AND CONTACTS_TYPE LIKE :mobile "); params.put("mobile", "%"+mobile+"%"); } String state = params.get("state"); if(!StringUtil.isEmpty(state)){ sql.append(" AND STATE = :state "); params.put("state", state); } String allow_login = params.get("allow_login"); if(!StringUtil.isEmpty(allow_login)){ sql.append(" AND ALLOW_LOGIN = :allow_login "); params.put("allow_login", allow_login); } String sub_customer_id = params.get("sub_customer_id"); if(StringUtil.notEmpty(sub_customer_id)) { sql.append(" AND SUB_CUSTOMER_ID = :sub_customer_id "); params.put("sub_customer_id", sub_customer_id); } String is_satis = params.get("is_satis"); if(StringUtil.notEmpty(is_satis)) { sql.append(" AND IS_SATIS = :is_satis "); params.put("is_satis", is_satis); } } @Override public Map queryMaxCusNum() { Map resultMap = new HashMap(); SqlParameter sqlParameter = new SqlParameter(); String selectSql = "SELECT COUNT(A.ID) FROM CUSTOMER_CONTACTS A,SC_PARTNER_CUSTOMER_INFO B WHERE A.CUSTOMER_ID = B.ID AND A.STATE=1 "; int count = baseDao.queryForInteger(selectSql,sqlParameter); //查询该加盟商下最多可以添加多少客户账户 String selectUser = "SELECT CUSTOMER_ACCOUNT_NUM FROM SC_PARTNER_INFO"; int moreNum = baseDao.queryForInteger(selectUser); if(moreNum>count) { resultMap.put("result", 1); } else { resultMap.put("result", 2); } resultMap.put("nowNum", count); resultMap.put("maxNum", moreNum); return resultMap; } @Override public Map querySubCus(String customerId, String subCustomerId) { Map resultMap = new HashMap(); Map paramMap = new HashMap(); paramMap.put("customerId", customerId); String selectSubSql = "SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID = :customerId AND DEL_FLAG = 1 ORDER BY MY_LEVEL "; List subCus = baseDao.queryForList(selectSubSql,paramMap); List subs = new ArrayList(); List checkSl = new ArrayList(); if(null!=subCus && subCus.size()>0){ Map cacheMap = new HashMap(); for(Map cus : subCus) { String level = ConvertUtil.obj2StrBlank(cus.get("MY_LEVEL")); String id = ConvertUtil.obj2Str(cus.get("ID")); String name = ConvertUtil.obj2StrBlank(cus.get("CUSTOMER_NAME")); if(subCustomerId.equals(id)) { cus.put("checked", 1); Map map = new HashMap(); map.put("checkId", id); map.put("checkName", name); checkSl.add(map); } else { cus.put("checked", 2); } if(level.equals("1")) { List ejList = new ArrayList(); cacheMap.put(id, ejList); cus.put("subs", ejList); subs.add(cus); continue; } if(level.equals("2")) { String pid = ConvertUtil.obj2StrBlank(cus.get("P_ID")); List ejList = (List)cacheMap.get(pid); ejList.add(cus); } } } resultMap.put("subs", subs); resultMap.put("checks", checkSl); return resultMap; } @Override public boolean isLogin_NameExists(String name) { int count = baseDao.queryForInteger("SELECT COUNT(*) FROM CUSTOMER_CONTACTS WHERE LOGIN_NAME=:login_name ", new SqlParameter("login_name",name)); return count > 0 ? true : false; } @Override public boolean isEmailExists(String email, String id) { Map param = new HashMap(); param.put("email", email); String sql = "SELECT COUNT(*) FROM CUSTOMER_CONTACTS WHERE EMAIL=:email "; if(!StringUtil.isEmpty(id)){ sql += " AND ID <> :id "; param.put("id", id); } int count = baseDao.queryForInteger(sql,param); return count > 0 ? true : false; } @Override public boolean saveProjectContacts(HttpServletRequest request) { String customerId=request.getParameter("customerId"); String contactsName=request.getParameter("contractsName"); String ywks=request.getParameter("ywks"); String zw=request.getParameter("zw"); //String telePhone=request.getParameter("telePhone"); String mobile=request.getParameter("mobile"); String contactsNote=request.getParameter("contactsNote"); String levelId=request.getParameter("levelId"); String isStais=request.getParameter("isStais"); String login_name=request.getParameter("login_name"); String email=request.getParameter("email"); String allow_login=request.getParameter("allow_login"); String sub_customer_id = request.getParameter("sub_customer_id"); String sub_customer_name = request.getParameter("sub_customer_name"); String contacts_type = request.getParameter("contacts_type"); if(!StringUtil.notEmpty(isStais)){ isStais="0"; } CUSTOMER_CONTACTS project= new CUSTOMER_CONTACTS(); project.setCustomer_id(customerId); project.setContact_name(contactsName); project.setYwks(ywks); project.setZw(zw); //project.setTelephone(telePhone); project.setMobile(mobile); project.setConstacts_note(contactsNote); project.setLogin_name(login_name); project.setEmail(email); project.setAllow_login(ConvertUtil.obj2Integer(allow_login)); if("1".equals(allow_login)){ project.setPassword(PasswordEncoder.encode(SysConstants.default_Password)); } project.setIsemail(1).setIsphone(1); project.setLevel_id(levelId).setSub_customer_id(sub_customer_id).setSub_customer_name(sub_customer_name).setContacts_type(contacts_type); CONFIG_DATA_DICTIONARY data=new CONFIG_DATA_DICTIONARY(levelId).getInstanceById(); project.setLevel_name(data.getDatavalue()); project.setIs_satis(Integer.parseInt(isStais)); project.setState(1); project.insert(); return true; } @Override public boolean updateProjectContacts(HttpServletRequest request) { String customerId=request.getParameter("customerId"); String contactsName=request.getParameter("contractsName"); String login_name=request.getParameter("login_name"); String ywks=request.getParameter("ywks"); String zw=request.getParameter("zw"); //String telePhone=request.getParameter("telePhone"); String mobile=request.getParameter("mobile"); String contactsNote=request.getParameter("contactsNote"); String levelId=request.getParameter("levelId"); String isStais=request.getParameter("isStais"); String email=request.getParameter("email"); String allow_login=request.getParameter("allow_login"); String sub_customer_id = request.getParameter("sub_customer_id"); String sub_customer_name = request.getParameter("sub_customer_name"); String contacts_type = request.getParameter("contacts_type"); String id=request.getParameter("id"); CUSTOMER_CONTACTS project= new CUSTOMER_CONTACTS(id); project=project.getInstanceById(); if(StringUtil.isEmpty(project.getPassword())){ project.setLogin_name(login_name).setPassword(PasswordEncoder.encode(SysConstants.default_Password)); } project.setCustomer_id(customerId); project.setContact_name(contactsName); project.setYwks(ywks); project.setZw(zw); //project.setTelephone(telePhone); project.setMobile(mobile); project.setConstacts_note(contactsNote); project.setLevel_id(levelId).setSub_customer_id(sub_customer_id).setSub_customer_name(sub_customer_name).setContacts_type(contacts_type); project.setEmail(email); project.setAllow_login(ConvertUtil.obj2Integer(allow_login)); CONFIG_DATA_DICTIONARY data=new CONFIG_DATA_DICTIONARY(levelId).getInstanceById(); project.setLevel_name(data.getDatavalue()); project.setIs_satis(Integer.parseInt(isStais)); project.update(); return true; } @Override public void execInitUserPwd(String id, String loginname) { baseDao.execute("UPDATE CUSTOMER_CONTACTS SET PASSWORD=:password WHERE LOGIN_NAME=:loginname AND ID = :id ", new SqlParameter("password",userService.getEncodedPassword(userService.getDefaultPwd())).addValue("loginname", loginname).addValue("id", id)); } @Override public String deleteProjectContacts(HttpServletRequest request) { String id=request.getParameter("id"); String state=request.getParameter("state"); String updateSql="UPDATE CUSTOMER_CONTACTS SET STATE=:state WHERE ID=:id"; baseDao.execute(updateSql,new SqlParameter("id",id).addValue("state", state)); return "1"; } @Override public Map getHealthCiDetail(HttpServletRequest request) { Map infoMap = new HashMap(); String flowId=request.getParameter("flowId"); StringBuilder sql = new StringBuilder(); sql.append("SELECT B.ID AS orderCiID,C.ID AS ciID,C.SEARCHCODE,C.CINAME,C.POSITION,B.ORDER_NOTE "); sql.append("FROM SC_WORKFLOW_CI_HEALTH A,SC_WORKFLOW_CI_HEALTH_CIDETAIL B,CMDB_CI_BASE C "); sql.append("WHERE A.ID=B.ORDER_ID AND B.CI_ID=C.ID AND A.FLOW_ID=:flowId"); List ciList=baseDao.queryForList(sql.toString(),new SqlParameter().addValue("flowId", flowId)); if(null!=ciList && ciList.size()>0){ for(Map ciMap:ciList){ sql.setLength(0); sql.append("SELECT B.ITEM_NAME,A.ITEM_RESULT,A.ORDER_NOTE,A.USER_NAME FROM SC_WORKFLOW_ITEM_HEALTH_CIDETAIL A,CI_HEALTH_ITEM B"); sql.append(" WHERE A.ITEM_ID=B.ID AND A.CI_ID=:ciId AND A.ORDER_CI_ID=:orderCiId "); List itemList=baseDao.queryForList(sql.toString(),new SqlParameter().addValue("ciId", ciMap.get("ciID")).addValue("orderCiId", ciMap.get("orderCiID"))); if(null!=itemList && itemList.size()>0){ for(Map map :itemList){ if(map.get("ITEM_RESULT")!=null && StringUtil.notEmpty(map.get("ITEM_RESULT").toString())){ map.put("ITEM_RESULT", Constants.getmapCI_HEALTH_PLAN_CI_STATE_Label(Integer.parseInt(map.get("ITEM_RESULT").toString()))); } } } ciMap.put("itemList", itemList); } } //服务工程师 StringBuilder selSql=new StringBuilder(); selSql.append("SELECT A.CURRENT_DEALER_NAME FROM workflow_node A,GG_USER B WHERE A.CURRENT_DEALER_ID=B.ID AND A.FLOWID=:flowId AND A.IS_ADMIN=1 AND A.NODE_TEMPLATE_ID=:nodeId"); Map dealerMap=baseDao.queryForMap(selSql.toString(),new SqlParameter().addValue("flowId", flowId).addValue("nodeId", Constants.HEALTH_PATROL)); infoMap.put("dealerMap", dealerMap); infoMap.put("ciList", ciList); return infoMap; } /** * 保存服务人员 */ @Override public boolean saveUser(HttpServletRequest request) { String cateId = request.getParameter("cateId"); Map type = new HashMap(); type.put("1", "一线工程师"); type.put("2", "二线工程师"); type.put("3", "三线工程师"); //查询工单类型 List paramList = new ArrayList(); List result = new ArrayList(); for (Object key : type.keySet()) { String dealer_type = request.getParameter("dealType"+key); if(StringUtil.notEmpty(dealer_type)) { String group_id = request.getParameter("group"+key); String group_name = request.getParameter("groupName"+key); String user_id = new String(); String user_name = new String(); if(dealer_type.equals("2")) { user_id = request.getParameter("user"+key); user_name = request.getParameter("userName"+key); group_id = request.getParameter("roleId"+key); group_name = request.getParameter("roleName"+key); } SqlParameter sqlParameter = new SqlParameter(); sqlParameter.put("id", StringUtil.getUUID()); sqlParameter.put("category_id", cateId); sqlParameter.put("user_type", dealer_type); sqlParameter.put("user_id", user_id); sqlParameter.put("user_name", user_name); sqlParameter.put("group_id", group_id); sqlParameter.put("group_name", group_name); paramList.add(sqlParameter); } } if(null!=paramList && paramList.size()>0) { String deleteSql = "DELETE FROM SC_SERVCE_CATEGORY_USER WHERE CATEGORY_ID = :cateId AND CUSTOMER_ID IS NULL "; Map paramMap = new HashMap(); paramMap.put("cateId", cateId); baseDao.execute(deleteSql, paramMap); String insertSql = "INSERT INTO SC_SERVCE_CATEGORY_USER(ID,CATEGORY_ID,USER_TYPE,USER_ID,USER_NAME,GROUP_ID,GROUP_NAME) VALUES (:id,:category_id,:user_type,:user_id,:user_name,:group_id,:group_name) "; baseDao.executeBatch(insertSql,paramList); } //二级等级协议修改,对应三级等级协议清空 SC_SERVCE_CATEGORY cate = new SC_SERVCE_CATEGORY(cateId).getInstanceById(); if(cate.getLevel() == 2){ String catesql = "SELECT * FROM SC_SERVCE_CATEGORY WHERE P_ID = :p_id "; List cateList = baseDao.queryForList(catesql, new SqlParameter("p_id",cate.getId())); List paramsList = new ArrayList(); for(Map map:cateList){ SqlParameter param = new SqlParameter(); param.put("category_id", map.get("ID")); paramsList.add(param); } String del = "DELETE FROM SC_SERVCE_CATEGORY_USER WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID IS NULL "; baseDao.executeBatch(del, paramsList); } return true; } @Override public Map getserviceUser(HttpServletRequest request) { String cateId = request.getParameter("cateId"); Map param = new HashMap(); param.put("cateId", cateId); String groupsql = "SELECT A.* FROM AC_ROLE_GROUP A,AC_ROLE B WHERE A.JSBH = B.ID AND A.STATE = 1 AND B.IDENTIFY = :identify "; String usersql = "SELECT A.* FROM GG_USER A,AC_USER_REF_ROLE B,AC_ROLE C WHERE A.ID = B.YHBH AND B.JSBH = C.ID AND A.ZT = 1 AND C.IDENTIFY = :identify "; StringBuilder sql = new StringBuilder("(SELECT A.* FROM SC_SERVCE_CATEGORY_USER A,AC_ROLE B WHERE A.GROUP_ID = B.ID AND B.IDENTIFY = :identify AND A.CATEGORY_ID = :cateId AND A.CUSTOMER_ID IS NULL ) UNION ALL (SELECT C.* FROM SC_SERVCE_CATEGORY_USER C,AC_ROLE_GROUP D,AC_ROLE E WHERE C.GROUP_ID = D.ID AND D.JSBH = E.ID AND E.IDENTIFY = :identify AND C.CATEGORY_ID = :cateId AND C.CUSTOMER_ID IS NULL) "); param.put("identify", Constants.ROLE_FLINE); Map yxMap = baseDao.queryForMap(sql.toString(), param); List groupList = baseDao.queryForList(groupsql, param); List userList = baseDao.queryForList(usersql, param); yxMap.put("groupList", groupList); yxMap.put("userList", userList); param.put("identify", Constants.ROLE_SLINE); Map exMap = baseDao.queryForMap(sql.toString(), param); List egroupList = baseDao.queryForList(groupsql, param); List euserList = baseDao.queryForList(usersql, param); exMap.put("groupList", egroupList); exMap.put("userList", euserList); param.put("identify", Constants.ROLE_TLINE); Map sxMap = baseDao.queryForMap(sql.toString(), param); List sgroupList = baseDao.queryForList(groupsql, param); List suserList = baseDao.queryForList(usersql, param); sxMap.put("groupList", sgroupList); sxMap.put("userList", suserList); Map result = new HashMap(); result.put("yxMap", yxMap); result.put("exMap", exMap); result.put("sxMap", sxMap); return result; } @Override public List queryProjects(HttpServletRequest request,String customerId) { List projects = incidentFacade.getCustomerList(); List pro = new ArrayList(); if(null!=projects && projects.size()>0) { for(Map project : projects) { String cusId = ConvertUtil.obj2StrBlank(project.get("CUSTOMER_ID")); if(customerId.equals(cusId)) { pro.add(project); } } } return pro; } @Override public List queryProjectMainListData(HttpServletRequest request) { Map paramMap = new HashMap(); List customerList = WebUtil.getCustomers(request); String tempStr = " AND A.CUSTOMER_ID IN ( "; for(Map customer : customerList){ tempStr = tempStr + "'" + customer.get("CUSTOMER_ID").toString() + "'"; } tempStr = tempStr + ")"; tempStr = tempStr.replace("''", "','"); StringBuilder builder = new StringBuilder("SELECT A.*,B.CUSTOMER_NAME FROM SC_PARTNER_CUSTOMER_PROJECT A,SC_PARTNER_CUSTOMER_INFO B WHERE A.CUSTOMER_ID=B.ID AND A.PROJECT_STATE != 2 "); builder.append(tempStr); String projectCode = request.getParameter("projectCode"); if(StringUtil.notEmpty(projectCode)) { builder.append(" AND A.PROJECT_CODE LIKE :projectCode "); paramMap.put("projectCode", "%"+projectCode+"%"); } String projectName = request.getParameter("projectName"); if(StringUtil.notEmpty(projectName)) { builder.append(" AND A.PROJECT_NAME LIKE :projectName "); paramMap.put("projectName", "%"+projectName+"%"); } String departmentId = request.getParameter("departmentId"); if(StringUtil.notEmpty(departmentId)) { builder.append(" AND A.DEPARTMENT_ID = :departmentId "); paramMap.put("departmentId", departmentId); } String customer_id = request.getParameter("customer_id"); if(StringUtil.notEmpty(customer_id)) { builder.append(" AND A.CUSTOMER_ID = :customer_id "); paramMap.put("customer_id", customer_id); } String projectState = request.getParameter("projectState"); if(StringUtil.notEmpty(projectState)) { builder.append(" AND A.PROJECT_STATE = :projectState "); paramMap.put("projectState", projectState); } builder.append(" ORDER BY CREATE_TIME DESC "); List projects = baseDao.queryforSplitPage(request, builder.toString(), paramMap); return projects; } @Override public int queryProjectMainListCount(HttpServletRequest request) { Map paramMap = new HashMap(); String customerId = request.getParameter("customerId"); paramMap.put("customerId", customerId); List customerList = WebUtil.getCustomers(request); String tempStr = " AND A.CUSTOMER_ID IN ( "; for(Map customer : customerList){ tempStr = tempStr + "'" + customer.get("CUSTOMER_ID").toString() + "'"; } tempStr = tempStr + ")"; tempStr = tempStr.replace("''", "','"); StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM SC_PARTNER_CUSTOMER_PROJECT A WHERE A.PROJECT_STATE != 2 "); builder.append(tempStr); String projectCode = request.getParameter("projectCode"); if(StringUtil.notEmpty(projectCode)) { builder.append(" AND A.PROJECT_CODE LIKE :projectCode "); paramMap.put("projectCode", "%"+projectCode+"%"); } String projectName = request.getParameter("projectName"); if(StringUtil.notEmpty(projectName)) { builder.append(" AND A.PROJECT_NAME LIKE :projectName "); paramMap.put("projectName", "%"+projectName+"%"); } String departmentId = request.getParameter("departmentId"); if(StringUtil.notEmpty(departmentId)) { builder.append(" AND A.DEPARTMENT_ID = :departmentId "); paramMap.put("departmentId", departmentId); } String projectState = request.getParameter("projectState"); if(StringUtil.notEmpty(projectState)) { builder.append(" AND A.PROJECT_STATE = :projectState "); paramMap.put("projectState", projectState); } int count = baseDao.queryForInteger(builder.toString(), paramMap); return count; } }