package cn.ksource.web.facade.satis; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.beans.CUSTOMER_SATIS_TEMPLATE; import cn.ksource.beans.KPI_SATIS_TEMPLATE; 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.DateUtil; import cn.ksource.core.util.EqualUtil; import cn.ksource.core.util.NumberUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.TreeNode; import cn.ksource.core.web.WebUtil; import cn.ksource.web.Constants; @Service("satisfationConfigFacade") public class SatisfationConfigFacadeImpl implements SatisfationConfigFacade { @Autowired private BaseDao baseDao; @Override public PageInfo querysatisfactionData(PageInfo pageInfo, HttpServletRequest request) { StringBuffer sql = new StringBuffer("SELECT * FROM CUSTOMER_SATIS_TEMPLATE WHERE 1=1"); Map param = new HashMap(); String template_name = request.getParameter("template_name"); if(!StringUtil.isEmpty(template_name)){ sql.append(" AND TEMPLATE_NAME LIKE :template_name "); param.put("template_name", "%"+template_name+"%"); } String template_type = request.getParameter("template_type"); if(!StringUtil.isEmpty(template_type)){ sql.append(" AND TEMPLATE_TYPE = :template_type "); param.put("template_type", template_type); } String state = request.getParameter("state"); if(!StringUtil.isEmpty(state)){ sql.append(" AND STATE = :state "); param.put("state", state); } sql.append(" ORDER BY STATE,TEMPLATE_TYPE DESC,UPLOAD_TIME DESC"); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), param); } @Override public int satisfationCount(HttpServletRequest request) { StringBuffer sql = new StringBuffer("SELECT COUNT(ID) FROM CUSTOMER_SATIS_TEMPLATE WHERE 1=1"); Map param = new HashMap(); String template_name = request.getParameter("template_name"); if(!StringUtil.isEmpty(template_name)){ sql.append(" AND TEMPLATE_NAME LIKE :template_name "); param.put("template_name", "%"+template_name+"%"); } String template_type = request.getParameter("template_type"); if(!StringUtil.isEmpty(template_type)){ sql.append(" AND TEMPLATE_TYPE = :template_type "); param.put("template_type", template_type); } String state = request.getParameter("state"); if(!StringUtil.isEmpty(state)){ sql.append(" AND STATE = :state "); param.put("state", state); } return baseDao.queryForInteger(sql.toString(), param); } @Override public String checkVersion(HttpServletRequest request) { String version = request.getParameter("version"); String type = request.getParameter("type"); String id = request.getParameter("id"); String sql = "SELECT COUNT(ID) FROM CUSTOMER_SATIS_TEMPLATE WHERE VERSION = :version AND TEMPLATE_TYPE = :template_type "; if(!StringUtil.isEmpty(id)){ sql += " AND ID <> :id"; } Map param = new HashMap(); param.put("version", version); param.put("template_type", type); param.put("id", id); int count = baseDao.queryForInteger(sql, param); if(count > 0){ return "1"; }else{ return "0"; } } @Override public void updateState(CUSTOMER_SATIS_TEMPLATE template) { String sql = "UPDATE CUSTOMER_SATIS_TEMPLATE SET STATE = :index WHERE STATE = :state AND TEMPLATE_TYPE = :template_type "; Map param = new HashMap(); param.put("index", Constants.CUSTOMER_SATIS_TEMPLATE_STATE_TWO); param.put("state", Constants.CUSTOMER_SATIS_TEMPLATE_STATE_ONE); param.put("template_type", template.getTemplate_type()); baseDao.execute(sql, param); template.update(); } @Override public Map getOrderTemplate(HttpServletRequest request) { String id = request.getParameter("id"); StringBuffer sqlYj = new StringBuffer("SELECT C.* FROM CUSTOMER_SATIS_TEMPLATE_ITEM C"); sqlYj.append(" WHERE C.STATE = 1 AND C.ITEM_LEVEL = 1 AND C.TEMPLATE_ID = :id ORDER BY C.ORDERNUM "); StringBuffer sqlEj = new StringBuffer("SELECT C.* FROM CUSTOMER_SATIS_TEMPLATE_ITEM C"); sqlEj.append(" WHERE C.STATE = 1 AND C.ITEM_LEVEL = 2 AND C.TEMPLATE_ID = :id ORDER BY C.ORDERNUM "); StringBuffer sqlEva = new StringBuffer("SELECT A.* FROM SATIS_EVA_ITEM A "); sqlEva.append(" WHERE A.ITEM_ID IN (SELECT C.ID FROM CUSTOMER_SATIS_TEMPLATE_ITEM C,CUSTOMER_SATIS_TEMPLATE B,CUSTOMER_SATIS_TEMPLATE_ITEM D "); sqlEva.append(" WHERE C.STATE = 1 AND C.ITEM_LEVEL = 2 AND C.TEMPLATE_ID = B.ID AND C.FATHER_ID = D.ID AND B.ID = :id ) ORDER BY A.ORDERNUM "); List itemYjList = baseDao.queryForList(sqlYj.toString(),new SqlParameter("id",id)); List itemList = baseDao.queryForList(sqlEj.toString(),new SqlParameter("id",id)); List evaList = baseDao.queryForList(sqlEva.toString(),new SqlParameter("id",id)); if(itemList != null && itemList.size()>0){ for(Map item:itemList){ List evaluList = new ArrayList(); for(Map eva:evaList){ if(eva.get("ITEM_ID").equals(item.get("ID"))){ evaluList.add(eva); } } item.put("EVALUATION", evaluList); item.put("ROWSPAN", evaluList.size()); } } Map cardMap = new HashMap(); cardMap.put("itemYjList", itemYjList); cardMap.put("itemList", itemList); return cardMap; } @Override public int queryQzCount(HttpServletRequest request) { StringBuffer sql = new StringBuffer("SELECT COUNT(ID) FROM KPI_SATIS_TEMPLATE WHERE 1=1 "); Map param = new HashMap(); String template_name = request.getParameter("template_name"); if(!StringUtil.isEmpty(template_name)){ sql.append(" AND TEMPLATE_NAME LIKE :template_name "); param.put("template_name", "%"+template_name+"%"); } return baseDao.queryForInteger(sql.toString(), param); } @Override public PageInfo queryQzdata(HttpServletRequest request, PageInfo pageInfo) { StringBuffer sql = new StringBuffer("SELECT * FROM KPI_SATIS_TEMPLATE WHERE 1=1 "); Map param = new HashMap(); String template_name = request.getParameter("template_name"); if(!StringUtil.isEmpty(template_name)){ sql.append(" AND TEMPLATE_NAME LIKE :template_name "); param.put("template_name", "%"+template_name+"%"); } sql.append(" ORDER BY STATE "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), param); } @Override public String checkkpiVersion(HttpServletRequest request) { String version = request.getParameter("version"); String id = request.getParameter("id"); String sql = "SELECT COUNT(ID) FROM KPI_SATIS_TEMPLATE WHERE VERSION = :version"; if(!StringUtil.isEmpty(id)){ sql += " AND ID <> :id"; } Map param = new HashMap(); param.put("version", version); param.put("id", id); int count = baseDao.queryForInteger(sql, param); if(count > 0){ return "1"; }else{ return "0"; } } @Override public void updatekpiState(KPI_SATIS_TEMPLATE template) { String sql = "UPDATE KPI_SATIS_TEMPLATE SET STATE = :index WHERE STATE = :state "; Map param = new HashMap(); param.put("index", Constants.CUSTOMER_SATIS_TEMPLATE_STATE_TWO); param.put("state", Constants.CUSTOMER_SATIS_TEMPLATE_STATE_ONE); baseDao.execute(sql, param); template.update(); } @Override public List checkisadd(HttpServletRequest request) { String sjbh = request.getParameter("cateId"); String templateId = request.getParameter("templateId"); String sql = "SELECT A.* FROM CUSTOMER_SATIS_TEMPLATE_ITEM A WHERE A.TEMPLATE_ID = :templateId "; SqlParameter param = new SqlParameter(); param.addValue("templateId", templateId); if(StringUtils.isBlank(sjbh)||"0".equals(sjbh)){ sql = sql + " AND A.ITEM_LEVEL=1 AND (A.FATHER_ID is null OR A.FATHER_ID = '' OR A.FATHER_ID = 0 )"; }else{ sql = sql + " AND A.FATHER_ID = :p_id "; param.addValue("p_id",sjbh); } sql = sql + " ORDER BY A.ORDERNUM "; List count = baseDao.queryForList(sql, param); return count; } @Override public List getsatisQuotatreeList(HttpServletRequest request) { String templateId = request.getParameter("templateId"); Map paramMap = new HashMap(); String selectSubSql = "SELECT * from CUSTOMER_SATIS_TEMPLATE_ITEM WHERE STATE = 1 AND TEMPLATE_ID = :templateId ORDER BY ITEM_LEVEL,ORDERNUM "; paramMap.put("templateId", templateId); List cates = baseDao.queryForList(selectSubSql,paramMap); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); for (Map map : cates) { //一级树 if (map.get("ITEM_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("ITEM_LEVEL").toString().equalsIgnoreCase("2")) { String pId = map.get("FATHER_ID").toString(); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); } } } return resultList; } @Override public int partnerquotaCount(HttpServletRequest request) { String sjbh = request.getParameter("categoryid"); String templateId = request.getParameter("templateId"); String sql = "SELECT COUNT(A.ID) FROM CUSTOMER_SATIS_TEMPLATE_ITEM A WHERE A.TEMPLATE_ID = :templateId "; SqlParameter param = new SqlParameter(); param.addValue("templateId", templateId); if(StringUtils.isBlank(sjbh)||"0".equals(sjbh)){ sql = sql + " AND A.ITEM_LEVEL=1 AND (A.FATHER_ID is null OR A.FATHER_ID = '' OR A.FATHER_ID = 0 )"; }else{ sql = sql + " AND A.FATHER_ID = :p_id "; param.addValue("p_id",sjbh); } int count = baseDao.queryForInteger(sql, param); return count; } @Override public PageInfo queryPartnerquotaData(HttpServletRequest request, PageInfo pageInfo) { String sjbh = request.getParameter("cateId"); String templateId = request.getParameter("templateId"); String sql = "SELECT A.*,B.ITEM_NAME AS QUOTANAME FROM CUSTOMER_SATIS_TEMPLATE_ITEM A LEFT JOIN CUSTOMER_SATIS_TEMPLATE_ITEM B ON B.ID = A.FATHER_ID WHERE A.TEMPLATE_ID = :templateId "; SqlParameter param = new SqlParameter(); param.addValue("templateId", templateId); if(StringUtils.isBlank(sjbh)||"0".equals(sjbh)){ sql = sql + " AND A.ITEM_LEVEL=1 AND (A.FATHER_ID is null OR A.FATHER_ID = '' OR A.FATHER_ID = 0 )"; }else{ sql = sql + " AND A.FATHER_ID = :p_id "; param.addValue("p_id",sjbh); } sql = sql + " ORDER BY A.ORDERNUM "; return baseDao.queryforSplitPageInfo(pageInfo, sql, param); } @Override public Map saveSatisquota(HttpServletRequest request) { String categoryid = request.getParameter("categoryid"); String templateId = request.getParameter("templateId"); String item_level = request.getParameter("item_level"); String zhs[] = request.getParameterValues("zh"); Map result = new HashMap(); String firstCate = ""; if("1".equals(item_level)) { firstCate = categoryid; } List param = new ArrayList(); List paramEva = new ArrayList(); for(int i=0;i < zhs.length;i++){ if(!StringUtil.isEmpty(zhs[i])){ String[] zhvalue = zhs[i].split("&"); String id = StringUtil.getUUID(); SqlParameter paraMap = new SqlParameter(); paraMap.put("id", id); paraMap.put("template_id", templateId); paraMap.put("item_name", zhvalue[0]); if(zhvalue.length==4){ paraMap.put("item_note", zhvalue[3]); } else { paraMap.put("item_note",""); } paraMap.put("ordernum", zhvalue[2]); paraMap.put("evaluation", "[{name:'非常满意',score:100},{name:'满意',score:80},{name:'一般',score:60},{name:'不满意',score:0}]"); paraMap.put("state", 1); paraMap.put("item_level", ConvertUtil.obj2Int(item_level)+1); paraMap.put("father_id", categoryid); paraMap.put("template_weight", zhvalue[1]); param.add(paraMap); SqlParameter paramMap1 = new SqlParameter(); SqlParameter paramMap2 = new SqlParameter(); SqlParameter paramMap3 = new SqlParameter(); SqlParameter paramMap4 = new SqlParameter(); if("1".equals(item_level)){ paramMap1.put("id", StringUtil.getUUID()); paramMap1.put("item_id", id); paramMap1.put("eva_name", "非常满意"); paramMap1.put("score", 100); paramMap1.put("is_default", 2); paramMap1.put("ordernum", 1); paramMap2.put("id", StringUtil.getUUID()); paramMap2.put("item_id", id); paramMap2.put("eva_name", "满意"); paramMap2.put("score", 80); paramMap2.put("is_default", 2); paramMap2.put("ordernum", 2); paramMap3.put("id", StringUtil.getUUID()); paramMap3.put("item_id", id); paramMap3.put("eva_name", "一般"); paramMap3.put("score", 60); paramMap3.put("is_default", 2); paramMap3.put("ordernum", 3); paramMap4.put("id", StringUtil.getUUID()); paramMap4.put("item_id", id); paramMap4.put("eva_name", "不满意"); paramMap4.put("score", 0); paramMap4.put("is_default", 2); paramMap4.put("ordernum", 4); paramEva.add(paramMap1); paramEva.add(paramMap2); paramEva.add(paramMap3); paramEva.add(paramMap4); } } } StringBuffer sql = new StringBuffer("INSERT INTO CUSTOMER_SATIS_TEMPLATE_ITEM(ID,TEMPLATE_ID,ITEM_NAME,ITEM_NOTE,ORDERNUM,EVALUATION,STATE,ITEM_LEVEL,FATHER_ID,TEMPLATE_WEIGHT) "); sql.append( "VALUES(:id,:template_id,:item_name,:item_note,:ordernum,:evaluation,:state,:item_level,:father_id,:template_weight)"); baseDao.executeBatch(sql.toString(), param); if("1".equals(item_level)){ StringBuffer sqlEva = new StringBuffer("INSERT INTO SATIS_EVA_ITEM(ID,ITEM_ID,EVA_NAME,SCORE,IS_DEFAULT,ORDERNUM) "); sqlEva.append( "VALUES(:id,:item_id,:eva_name,:score,:is_default,:ordernum)"); baseDao.executeBatch(sqlEva.toString(), paramEva); } result.put("firstCate", firstCate); return result; } @Override public Map updateSatisquota(HttpServletRequest request) { String categoryid = request.getParameter("cateId"); String templateId = request.getParameter("templateId"); String item_level = request.getParameter("item_level"); String zhs[] = request.getParameterValues("zh"); String ids[] = request.getParameterValues("id"); String delids[] = request.getParameterValues("delid"); Map result = new HashMap(); String firstCate = ""; if("1".equals(item_level)) { firstCate = categoryid; } List param = new ArrayList(); List updparam = new ArrayList(); List delparam = new ArrayList(); List paramEva = new ArrayList(); if(delids != null){ if(delids.length > 0){ for(int i=0;i < delids.length;i++){ SqlParameter paraMap = new SqlParameter(); if(!StringUtil.isEmpty(delids[i])){ paraMap.put("id", delids[i]); delparam.add(paraMap); } } } } for(int i=0;i < zhs.length;i++){ if(!StringUtil.isEmpty(zhs[i])){ if(StringUtil.isEmpty(ids[i])){ String[] zhvalue = zhs[i].split("-"); String id = StringUtil.getUUID(); SqlParameter paraMap = new SqlParameter(); paraMap.put("id", id); paraMap.put("template_id", templateId); paraMap.put("item_name", zhvalue[0]); if(zhvalue.length==4){ paraMap.put("item_note", zhvalue[3]); }else{ paraMap.put("item_note", ""); } paraMap.put("ordernum", zhvalue[2]); paraMap.put("state", 1); paraMap.put("item_level", ConvertUtil.obj2Int(item_level)+1); paraMap.put("father_id", categoryid); paraMap.put("template_weight", zhvalue[1]); param.add(paraMap); SqlParameter paramMap1 = new SqlParameter(); SqlParameter paramMap2 = new SqlParameter(); SqlParameter paramMap3 = new SqlParameter(); SqlParameter paramMap4 = new SqlParameter(); if("1".equals(item_level)){ paramMap1.put("id", StringUtil.getUUID()); paramMap1.put("item_id", id); paramMap1.put("eva_name", "非常满意"); paramMap1.put("score", 100); paramMap1.put("is_default", 2); paramMap1.put("ordernum", 1); paramMap2.put("id", StringUtil.getUUID()); paramMap2.put("item_id", id); paramMap2.put("eva_name", "满意"); paramMap2.put("score", 80); paramMap2.put("is_default", 2); paramMap2.put("ordernum", 2); paramMap3.put("id", StringUtil.getUUID()); paramMap3.put("item_id", id); paramMap3.put("eva_name", "一般"); paramMap3.put("score", 60); paramMap3.put("is_default", 2); paramMap3.put("ordernum", 3); paramMap4.put("id", StringUtil.getUUID()); paramMap4.put("item_id", id); paramMap4.put("eva_name", "不满意"); paramMap4.put("score", 0); paramMap4.put("is_default", 2); paramMap4.put("ordernum", 4); paramEva.add(paramMap1); paramEva.add(paramMap2); paramEva.add(paramMap3); paramEva.add(paramMap4); } }else{ String[] zhvalue = zhs[i].split("-"); SqlParameter paraMap = new SqlParameter(); paraMap.put("id", ids[i]); paraMap.put("item_name", zhvalue[0]); if(zhvalue.length==4){ paraMap.put("item_note", zhvalue[3]); } else { paraMap.put("item_note",""); } paraMap.put("ordernum", zhvalue[2]); paraMap.put("template_weight", zhvalue[1]); updparam.add(paraMap); } } } if("1".equals(item_level)){ baseDao.executeBatch("DELETE FROM SATIS_EVA_ITEM WHERE ITEM_ID = :id ", delparam); baseDao.executeBatch("DELETE FROM CUSTOMER_SATIS_TEMPLATE_ITEM WHERE ID = :id ", delparam); }else{ baseDao.executeBatch("DELETE FROM SATIS_EVA_ITEM WHERE ITEM_ID IN (SELECT ID FROM CUSTOMER_SATIS_TEMPLATE_ITEM WHERE FATHER_ID = :id) ", delparam); baseDao.executeBatch("DELETE FROM CUSTOMER_SATIS_TEMPLATE_ITEM WHERE FATHER_ID = :id ", delparam); baseDao.executeBatch("DELETE FROM CUSTOMER_SATIS_TEMPLATE_ITEM WHERE ID = :id ", delparam); } StringBuffer sqlupd = new StringBuffer("UPDATE CUSTOMER_SATIS_TEMPLATE_ITEM "); sqlupd.append( " SET ITEM_NAME = :item_name,ITEM_NOTE = :item_note,ORDERNUM = :ordernum,TEMPLATE_WEIGHT = :template_weight WHERE ID = :id "); baseDao.executeBatch(sqlupd.toString(), updparam); StringBuffer sql = new StringBuffer("INSERT INTO CUSTOMER_SATIS_TEMPLATE_ITEM(ID,TEMPLATE_ID,ITEM_NAME,ITEM_NOTE,ORDERNUM,STATE,ITEM_LEVEL,FATHER_ID,TEMPLATE_WEIGHT) "); sql.append( "VALUES(:id,:template_id,:item_name,:item_note,:ordernum,:state,:item_level,:father_id,:template_weight)"); baseDao.executeBatch(sql.toString(), param); if("1".equals(item_level)){ StringBuffer sqlEva = new StringBuffer("INSERT INTO SATIS_EVA_ITEM(ID,ITEM_ID,EVA_NAME,SCORE,IS_DEFAULT,ORDERNUM) "); sqlEva.append( "VALUES(:id,:item_id,:eva_name,:score,:is_default,:ordernum)"); baseDao.executeBatch(sqlEva.toString(), paramEva); } result.put("firstCate", firstCate); return result; } @Override public List getEvaList(HttpServletRequest request) { String id = request.getParameter("id"); String sql = "SELECT * FROM SATIS_EVA_ITEM WHERE ITEM_ID = :item_id ORDER BY ORDERNUM "; return baseDao.queryForList(sql, new SqlParameter("item_id",id)); } @Override public boolean updateQuota(HttpServletRequest request) { String id = request.getParameter("id"); String[] evaluations = request.getParameterValues("evaluation"); String[] scores = request.getParameterValues("score"); String[] ordernums = request.getParameterValues("ordernum"); String is_default = request.getParameter("is_default"); List list = new ArrayList(); if(null != evaluations && evaluations.length!=0) { for(int i=0; i 0){ for(int i = 0;i paramList = new ArrayList(); for(int i=0;i 0){ for(int j=0;j kpiList = baseDao.queryForList("SELECT * FROM KPI_CONFIG WHERE TEMPLATE_ID = :template_id ", new SqlParameter("template_id",templateId)); Map result = new HashMap(); for(Map map:kpiList){ if(ConvertUtil.obj2Integer(map.get("SATIS_TYPE")) == 1){ result.put("xyMap", map); }else if(ConvertUtil.obj2Integer(map.get("SATIS_TYPE")) == 3){ result.put("zcMap", map); } } return result; } }