package cn.ksource.web.facade.customerconfig;
|
|
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 org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.*;
|
|
@Service("cusSubFacade")
|
@SuppressWarnings("unchecked")
|
public class CusSubFacadeImpl implements CusSubFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Override
|
public Map querySubCustomer(String customerId) {
|
Map paramMap = new HashMap();
|
paramMap.put("customerId", customerId);
|
//查询当前客户的信息
|
String selectSql = "SELECT A.ID,A.CUSTOMER_NAME,wm_concat(B.USER_ID) AS USERID,wm_concat(B.USER_NAME) AS USERNAME FROM SC_PARTNER_CUSTOMER_INFO A LEFT JOIN SC_CUSTOMER_ZC_UESR B ON A.ID = B.CUSTOMER_ID WHERE A.ID = :customerId GROUP BY A.ID,A.CUSTOMER_NAME ";
|
Map customer = baseDao.queryForMap(selectSql,paramMap);
|
if(null!=customer && customer.size()>0) {
|
//查询下级客户
|
String selectSubSql = "SELECT A.id,A.CUSTOMER_NAME ,A.P_ID ,A.MY_LEVEL ,A.CUSTOMER_ID ,A.DEL_FLAG ,A.CONTACT ,A.PHONE,wm_concat(B.USER_ID) AS USERID,wm_concat(B.USER_NAME) AS USERNAME FROM SC_PARTNER_CUSTOMER_SUB A LEFT JOIN SC_CUSTOMER_ZC_UESR B ON A.ID = B.CUSTOMER_ID WHERE A.CUSTOMER_ID = :customerId AND A.DEL_FLAG = 1 GROUP BY A.ID,A.CUSTOMER_NAME ,A.P_ID ,A.MY_LEVEL ,A.CUSTOMER_ID ,A.DEL_FLAG ,A.CONTACT ,A.PHONE ORDER BY A.MY_LEVEL";
|
List<Map> subCus = baseDao.queryForList(selectSubSql,paramMap);
|
if(null!=subCus && subCus.size()>0){
|
List subs = new ArrayList();
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
for(Map cus : subCus) {
|
String level = ConvertUtil.obj2StrBlank(cus.get("MY_LEVEL"));
|
String id = ConvertUtil.obj2Str(cus.get("ID"));
|
//一级树
|
if (level.equalsIgnoreCase("1")) {
|
yjgnCache.put(id, cus);
|
List<Map> ejgnList = new LinkedList<Map>();
|
cus.put("ejTree", ejgnList);
|
subs.add(cus);
|
continue;
|
}
|
//二级树
|
if (level.equalsIgnoreCase("2")) {
|
String pId = cus.get("P_ID").toString();
|
if(yjgnCache.containsKey(pId)) {
|
Map yjgnMap = yjgnCache.get(pId);
|
List<Map> list = (List<Map>)yjgnMap.get("ejTree");
|
list.add(cus);
|
|
ejgnCache.put(id, cus);
|
}
|
continue;
|
}
|
}
|
customer.put("subs", subs);
|
}
|
/*String selectSubSql = "SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID = :customerId AND DEL_FLAG = 1 AND MY_LEVEL = 1 ";
|
List<Map> subCus = baseDao.queryForList(selectSubSql,paramMap);
|
customer.put("subs", subCus);*/
|
}
|
return customer;
|
}
|
|
|
@Override
|
public PageInfo querySubCusList(PageInfo pageInfo,Map<String,String> params) {
|
String pId = params.get("pId");
|
StringBuilder selectSql = new StringBuilder("SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID = :customerId ");
|
if(StringUtil.isEmpty(pId)){
|
selectSql.append(" AND (P_ID IS NULL OR P_ID = '')");
|
}else{
|
selectSql.append(" AND P_ID = :pId ");
|
}
|
return baseDao.queryforSplitPageInfo(pageInfo, selectSql.toString(), params);
|
}
|
|
|
@Override
|
public int querySubCusCount(Map<String, String> params) {
|
String pId = params.get("pId");
|
StringBuilder selectSql = new StringBuilder("SELECT COUNT(ID) FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID = :customerId ");
|
if(StringUtil.isEmpty(pId)){
|
selectSql.append(" AND (P_ID IS NULL OR P_ID = '') ");
|
}else{
|
selectSql.append(" AND P_ID = :pId ");
|
}
|
return baseDao.queryForInteger(selectSql.toString(), params);
|
}
|
|
/**
|
* 保存下属单位
|
*/
|
@Override
|
public void saveSubCus(HttpServletRequest request) {
|
String customerId = request.getParameter("customerId");
|
String pId = request.getParameter("pId");
|
String customerName = request.getParameter("customer_name");
|
String level = request.getParameter("level");
|
String id = request.getParameter("id");
|
|
String contact = request.getParameter("contact");
|
String phone = request.getParameter("phone");
|
String note = request.getParameter("note");
|
|
Map paramMap = new HashMap();
|
String updateSql = new String();
|
if(StringUtil.notEmpty(id)) {
|
updateSql = "UPDATE SC_PARTNER_CUSTOMER_SUB SET CUSTOMER_NAME = :customerName,CONTACT = :contact,PHONE = :phone,NOTE = :note WHERE ID = :id";
|
paramMap.put("id", id);
|
Map param=new HashMap();
|
param.put("name", customerName);
|
param.put("id", id);
|
String sqla="update SC_WORKFLOW_INCIDENT_TEMPLATE set SUB_CUSTOMER_NAME=:name where SUB_CUSTOMER_ID=:id";
|
String sqlb="update SC_WORKFLOW_INCIDENT set SUB_CUSTOMER_NAME=:name where SUB_CUSTOMER_ID=:id";
|
String sqlc="update SC_WORKFLOW_QUESTION set SUB_CUSTOMER_NAME=:name where SUB_CUSTOMER_ID=:id";
|
baseDao.execute(sqla, param);
|
baseDao.execute(sqlb, param);
|
baseDao.execute(sqlc, param);
|
} else {
|
updateSql = "INSERT INTO SC_PARTNER_CUSTOMER_SUB (ID,CUSTOMER_NAME,P_ID,MY_LEVEL,CUSTOMER_ID,CONTACT,PHONE,NOTE,DEL_FLAG) VALUES (:id,:customerName,:pId,:level,:customerId,:contact,:phone,:note,1)";
|
paramMap.put("id", StringUtil.getUUID());
|
}
|
paramMap.put("customerName", customerName);
|
paramMap.put("pId", pId);
|
paramMap.put("level", level);
|
paramMap.put("customerId", customerId);
|
paramMap.put("contact", contact);
|
paramMap.put("phone", phone);
|
paramMap.put("note", note);
|
baseDao.execute(updateSql, paramMap);
|
}
|
|
@Override
|
public boolean updateState(HttpServletRequest request) {
|
String id = request.getParameter("id");
|
String state = request.getParameter("state");
|
if(state.equals("2")) {
|
//查询该分类下是否有信息
|
String sql = "SELECT COUNT(ID) FROM SC_PARTNER_CUSTOMER_SUB WHERE P_ID = :id AND DEL_FLAG = 1";
|
int count = baseDao.queryForInteger(sql,new SqlParameter("id",id));
|
if(count>0) {
|
return false;
|
}
|
}
|
|
String updateSql = "UPDATE SC_PARTNER_CUSTOMER_SUB SET DEL_FLAG = :state WHERE ID = :id ";
|
baseDao.execute(updateSql, new SqlParameter("id",id).addValue("state", state));
|
return true;
|
}
|
|
|
@Override
|
public List<Map> queryCurrentZcUser(String customerId) {
|
String sql = "SELECT a.* FROM SC_CUSTOMER_ZC_UESR a,GG_USER b,AC_ROLE c,AC_USER_REF_ROLE d where a.USER_ID=b.ID and b.ID=D.YHBH and c.ID=D.JSBH and c.IDENTIFY='LOCATION' and b.ZT=1 ";
|
return baseDao.queryForList(sql);
|
}
|
|
|
@Override
|
public Map queryAllUser(String sl) {
|
//当前所有用户
|
StringBuffer userSql = new StringBuffer("select A.ID,A.ZSXM,A.SSBMBH,A.LOGINNAME from GG_USER A where A.ZT=1 ");
|
if(!StringUtil.isEmpty(sl)){
|
userSql.append("AND A.ID NOT IN ( ");
|
String[] sls = sl.split(",");
|
for(int i=0;i<sls.length;i++){
|
userSql.append("'"+sls[i]+"',");
|
}
|
userSql.deleteCharAt(userSql.lastIndexOf(","));
|
userSql.append(")");
|
}
|
userSql.append(" and A.ID IN (SELECT YHBH FROM ac_user_ref_role WHERE JSBH IN (SELECT ID FROM ac_role WHERE IDENTIFY = 'LOCATION'))");
|
userSql.append(" AND A.ID NOT IN (SELECT USER_ID FROM SC_CUSTOMER_ZC_UESR )");
|
List<Map> allUserList = baseDao.queryForList(userSql.toString());
|
Map resultMap = new HashMap();
|
resultMap.put("PARTNERLIST", allUserList);
|
//所有部门
|
String sql = "SELECT * FROM GG_ZZJG WHERE ZT=1 ORDER BY CENGJ ASC,SXH ASC";
|
List<Map> bmList = baseDao.queryForList(sql, new SqlParameter());
|
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 : bmList) {
|
String level = map.get("CENGJ").toString();
|
String id = map.get("ID").toString();
|
|
//一级树
|
if (level.equalsIgnoreCase("1")) {
|
yjgnCache.put(id, map);
|
List<Map> ejgnList = new LinkedList<Map>();
|
map.put("ejTree", ejgnList);
|
resultList.add(map);
|
continue;
|
}
|
//二级树
|
if (level.equalsIgnoreCase("2")) {
|
String pId = map.get("SJBH").toString();
|
if(yjgnCache.containsKey(pId)) {
|
Map yjgnMap = yjgnCache.get(pId);
|
List<Map> list = (List<Map>)yjgnMap.get("ejTree");
|
map.put("sjTree", new LinkedList<Map>());
|
list.add(map);
|
|
ejgnCache.put(id, map);
|
}
|
continue;
|
}
|
//三级树
|
if (level.equalsIgnoreCase("3")) {
|
if(null!=map.get("SJBH")){
|
String pId = map.get("SJBH").toString();
|
if(ejgnCache.containsKey(pId)) {
|
Map ejgnMap = ejgnCache.get(map.get("SJBH").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
map.put("fjTree", new LinkedList<Map>());
|
list.add(map);
|
sjgnCache.put(id, map);
|
}
|
}
|
}
|
}
|
resultMap.put("resultList", resultList);
|
return resultMap;
|
}
|
|
|
@Override
|
public boolean saveZcCus(Map<String,String> params) {
|
|
String[] customers = params.get("customerId").split(",");
|
if(customers.length > 0){
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
List<SqlParameter> delList = new ArrayList<SqlParameter>();
|
for(int i=0;i<customers.length;i++){
|
//将所有客户和子客户的id保存
|
SqlParameter delId = new SqlParameter("CUSTOMER_ID", customers[i]);
|
delList.add(delId);
|
|
if(!StringUtil.isEmpty(customers[i])){
|
String userId = params.get("user"+customers[i]);
|
String userName = params.get("userName"+customers[i]);
|
if(!StringUtil.isEmpty(userId)){
|
String[] userIds = userId.split(",");
|
String[] userNames = userName.split(",");
|
if(userIds.length > 0){
|
for(int j=0;j<userIds.length;j++){
|
SqlParameter param = new SqlParameter();
|
param.put("ID", StringUtil.getUUID());
|
param.put("CUSTOMER_ID", customers[i]);
|
param.put("USER_ID", userIds[j]);
|
param.put("USER_NAME", userNames[j]);
|
paramList.add(param);
|
}
|
|
}
|
}
|
}
|
}
|
|
String insertSql = "INSERT INTO SC_CUSTOMER_ZC_UESR(ID,CUSTOMER_ID,USER_ID,USER_NAME) VALUES (:ID,:CUSTOMER_ID,:USER_ID,:USER_NAME)";
|
|
//删除客户的驻场
|
String deleteSql = "DELETE FROM SC_CUSTOMER_ZC_UESR WHERE CUSTOMER_ID = :CUSTOMER_ID";
|
baseDao.executeBatch(deleteSql, delList);
|
|
//添加新的客户驻场
|
baseDao.executeBatch(insertSql,paramList);
|
return true;
|
}
|
|
|
return false;
|
}
|
|
}
|