package cn.ksource.web.facade.dsl; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import cn.ksource.beans.DSL_CATEGORY; import cn.ksource.beans.DSL_CONFIG; import cn.ksource.beans.DSL_CONFIG_FILE; import cn.ksource.beans.DSL_VERSION; import cn.ksource.beans.PROJECT_DSL; 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.JsonUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.TreeNode; import cn.ksource.core.web.WebUtil; import cn.ksource.entity.FacedeResponse; import cn.ksource.web.Constants; import cn.ksource.web.service.cmdb.SequenceService; import cn.ksource.web.service.file.FileService; @Service("dslFacade") public class DSLFacadeImpl implements DSLFacade{ @Resource private BaseDao baseDao; @Resource private FileService fileService; @Autowired private SequenceService sequenceService; /*@Autowired private SequenceService sequenceService;*/ @Override public List getOrderDslList(String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); String sql = " SELECT * FROM ( "+ " SELECT D.FLOW_ID,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,L.ID LINK_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION " + " FROM DSL_ORDER_LINK L " + " INNER JOIN PROJECT_DSL D ON L.DSL_ID = D.ID " + " LEFT JOIN ( " + " SELECT UPDATE_TIME,ID,EDITION FROM DSL_VERSION WHERE (STATE=1 OR STATE=3) " + " ) V ON L.DSL_VERSION_ID = V.ID " + " WHERE (D.STATE=1 OR D.STATE=3) AND L.FLOW_ID=:flowId " + " ORDER BY V.UPDATE_TIME DESC " + " ) T GROUP BY DSL_ID ORDER BY UPDATE_TIME DESC "; return baseDao.queryForList(sql,param); } @Override public void saveConfigDslDealRecord(String flowId) { String sql = "SELECT ID,DSL_VERSION_ID,CI_ID,DSL_ID,NEW_VERSION_ID,FLOW_ID,STATE,DEALER_ID,DEALER_NAME,UPDATE_TIME " + "FROM CMDB_DSL_LINK WHERE FLOW_ID = :flowId AND STATE IS NOT NULL "; String sqlinsert = " INSERT INTO CMDB_CI_DSL_RELATION_RECORD (ID,DSL_VERSION_ID,CI_ID,DSL_ID,NEW_VERSION_ID,FLOW_ID,STATE,DEALER_ID,DEALER_NAME,UPDATE_TIME) " + "VALUES (:ID,:DSL_VERSION_ID,:CI_ID,:DSL_ID,:NEW_VERSION_ID,:FLOW_ID,:STATE,:DEALER_ID,:DEALER_NAME,:UPDATE_TIME) " ; SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); List record = baseDao.queryForList(sql, param); List paramList = new ArrayList(); for(Map map:record){ SqlParameter params = new SqlParameter(); String id = StringUtil.getUUID(); params.putAll(map); params.put("ID", id); paramList.add(params); } baseDao.executeBatch(sqlinsert, paramList); } @Override public void updateConfigDslWhenFinish(String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); //删除 baseDao.execute(" DELETE FROM CMDB_DSL_LINK WHERE STATE=3 AND FLOW_ID = :flowId ", param); //新增 baseDao.execute(" UPDATE CMDB_DSL_LINK SET STATE=NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE STATE=1 AND FLOW_ID = :flowId ", param); //修改 baseDao.execute(" UPDATE CMDB_DSL_LINK SET DSL_VERSION_ID=NEW_VERSION_ID,STATE=NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE STATE=2 AND FLOW_ID = :flowId ", param); //更新dsl状态 baseDao.execute(" UPDATE PROJECT_DSL SET STATE=1 WHERE FLOW_ID = :flowId ", param); baseDao.execute(" UPDATE DSL_VERSION SET STATE=1 WHERE CREATE_FLOW_ID = :flowId ", param); } @Override public void updateConfigDslWhenClose(String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); //新增的数据删除 baseDao.execute(" DELETE FROM CMDB_DSL_LINK WHERE STATE=1 AND FLOW_ID = :flowId ", param); //将要删除的数据恢复 baseDao.execute(" UPDATE CMDB_DSL_LINK SET STATE=NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE STATE=3 AND FLOW_ID = :flowId ", param); //将要修改的数据恢复 baseDao.execute(" UPDATE CMDB_DSL_LINK SET NEW_VERSION_ID=DSL_VERSION_ID,STATE=NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE STATE=2 AND FLOW_ID = :flowId ", param); } @Override public void addDslByFlow(PROJECT_DSL proDsl,String flowId){ String searchcode = sequenceService.getDslCategorySequence(proDsl.getDsl_third_category_id()); proDsl.setDsl_searchcode(searchcode); proDsl.setState(3); proDsl.setAdd_time(DateUtil.getCurrentDate14()); proDsl.insert(); String dslId = proDsl.getId(); String sql = ""; SqlParameter param = new SqlParameter(); if(StringUtil.isNotBlank(flowId)){ sql = " insert into DSL_ORDER_LINK (ID,FLOW_ID,DSL_ID) values (:id,:flowId,:dslId) "; param.addValue("id", StringUtil.getUUID()) .addValue("flowId", flowId) .addValue("dslId", dslId); baseDao.execute(sql, param); } } @Override public PageInfo getProDslContainAddData(HttpServletRequest request) { Map support = getProDslContainAddSupport(request); String sql = (String)support.get("sql"); SqlParameter param = (SqlParameter)support.get("param"); PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, sql, param); return pageInfo; } @Override public int getProDslContainAddCount(HttpServletRequest request) { Map support = getProDslContainAddSupport(request); String sql = "SELECT COUNT(*) FROM ( " + (String)support.get("sql") + " ) A"; SqlParameter param = (SqlParameter)support.get("param"); int count = baseDao.queryForInteger(sql, param); return count; } private Map getProDslContainAddSupport(HttpServletRequest request) { Map support = new HashMap(); SqlParameter param = new SqlParameter(); StringBuilder builder = new StringBuilder(); builder.append(" SELECT * FROM ( "); builder.append(" SELECT * FROM ( "); builder.append(" SELECT D.STATE,D.DSL_THIRD_CATEGORY_NAME DSL_CATEGORY_ID,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION "); builder.append(" FROM PROJECT_DSL D LEFT JOIN (SELECT * FROM DSL_VERSION WHERE STATE=1) V ON D.ID = V.DSL_ID "); builder.append(" WHERE D.STATE=1 "); builder.append(" ) T1 "); String flowId = request.getParameter("flowId"); if(StringUtil.notEmpty(flowId)) { builder.append(" UNION SELECT * FROM ( "); builder.append(" SELECT D.STATE,D.DSL_THIRD_CATEGORY_NAME DSL_CATEGORY_ID,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION "); builder.append(" FROM PROJECT_DSL D INNER JOIN DSL_ORDER_LINK L ON D.ID = L.DSL_ID LEFT JOIN "); builder.append(" ( "); builder.append(" SELECT * FROM DSL_VERSION WHERE STATE=3 "); builder.append(" ) V ON L.DSL_VERSION_ID = V.ID "); builder.append(" WHERE (D.STATE=1 OR D.STATE=3) AND L.FLOW_ID= :flowId "); builder.append(" ) T1 "); param.put("flowId", flowId); } builder.append(" ORDER BY UPDATE_TIME DESC "); builder.append(" ) T WHERE 1=1 "); String proId = request.getParameter("proId"); if(StringUtil.notEmpty(proId)) { param.put("proId", proId); } String dslName = request.getParameter("dslName"); if(StringUtil.notEmpty(dslName)) { builder.append(" AND DSL_NAME LIKE :dslName "); param.put("dslName", "%" + dslName + "%"); } String dslCate = request.getParameter("dslCate"); if(StringUtil.notEmpty(dslCate)) { builder.append(" AND DSL_CATEGORY_ID = :dslCate "); param.put("dslCate", dslCate); } String dslSearchCode = request.getParameter("dslSearchCode"); if(StringUtil.notEmpty(dslSearchCode)) { builder.append(" AND DSL_SEARCHCODE like :dslSearchCode "); param.put("dslSearchCode", "%"+dslSearchCode+"%"); } String dslIds = request.getParameter("dslIds"); if(StringUtil.notEmpty(dslIds)) { dslIds = "'" + dslIds.replace(",", "','") + "'"; builder.append(" AND DSL_ID NOT IN ("+dslIds+") "); } builder.append(" GROUP BY DSL_ID ORDER BY UPDATE_TIME DESC "); support.put("sql", builder.toString()); support.put("param", param); return support; } @Override public int queryDslCount(HttpServletRequest request) { StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM PROJECT_DSL A WHERE A.PARTNER_ID = :partnerId AND A.STATE != 3 "); //String partnerId = WebUtil.getLoginedPartnerId(request); Map paramMap = new HashMap(); //paramMap.put("partnerId", partnerId); String projectId = request.getParameter("projectId"); if(StringUtil.notEmpty(projectId)) { builder.append(" AND A.PROJECT_ID = :projectId "); paramMap.put("projectId", projectId); } String dslName = request.getParameter("dslName"); if(StringUtil.notEmpty(dslName)) { builder.append(" AND A.DSL_NAME LIKE :dslName "); paramMap.put("dslName", "%"+dslName+"%"); } String dslCate = request.getParameter("dslCate"); if(StringUtil.notEmpty(dslCate)) { builder.append(" AND A.DSL_THIRD_CATEGORY_ID = :dslCate "); paramMap.put("dslCate", dslCate); } String dslSearchCode = request.getParameter("dslSearchCode"); if(StringUtil.notEmpty(dslSearchCode)) { builder.append(" AND A.DSL_SEARCHCODE = :dslSearchCode "); paramMap.put("dslSearchCode", dslSearchCode); } int count = baseDao.queryForInteger(builder.toString(),paramMap); return count; } @Override public PageInfo queryDslData(HttpServletRequest request) { StringBuilder builder = new StringBuilder("SELECT A.*,C.EDITION FROM PROJECT_DSL A LEFT JOIN (SELECT E.DSL_ID,E.EDITION FROM DSL_VERSION E,(SELECT MAX(B.CREATE_TIME) AS TIME,B.DSL_ID FROM DSL_VERSION B WHERE B.STATE = 1 GROUP BY B.DSL_ID) F WHERE E.DSL_ID = F.DSL_ID AND E.CREATE_TIME = F.TIME) C ON A.ID = C.DSL_ID WHERE A.STATE != 3 "); //String partnerId = WebUtil.getLoginedPartnerId(request); Map paramMap = new HashMap(); //paramMap.put("partnerId", partnerId); String projectId = request.getParameter("projectId"); if(StringUtil.notEmpty(projectId)) { builder.append(" AND A.PROJECT_ID = :projectId "); paramMap.put("projectId", projectId); } String dslName = request.getParameter("dslName"); if(StringUtil.notEmpty(dslName)) { builder.append(" AND A.DSL_NAME LIKE :dslName "); paramMap.put("dslName", "%"+dslName+"%"); } String dslCate = request.getParameter("dslCate"); if(StringUtil.notEmpty(dslCate)) { builder.append(" AND A.DSL_THIRD_CATEGORY_ID = :dslCate "); paramMap.put("dslCate", dslCate); } String dslSearchCode = request.getParameter("dslSearchCode"); if(StringUtil.notEmpty(dslSearchCode)) { builder.append(" AND A.DSL_SEARCHCODE like :dslSearchCode "); paramMap.put("dslSearchCode", "%"+dslSearchCode+"%"); } builder.append(" ORDER BY A.STATE ASC, A.ORDER_NUM ASC,ADD_TIME DESC "); PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap); return pageInfo; } @Override public List getDslCateTree(String pid, String partnerId) { String sql = " SELECT ID as id,P_ID AS pid,CATEGORY_NAME AS name,LEVEL AS jb FROM DSL_CATEGORY WHERE STATE=1 AND PARTNER_ID=:partnerId"; SqlParameter param = new SqlParameter(); param.addValue("partnerId", partnerId); if(StringUtil.isNotBlank(pid)){ sql += " AND P_ID =:pid "; param.addValue("pid", pid); }else{ sql += " AND LEVEL = 1 "; } sql += " ORDER BY STATE,LEVEL,ORDER_NUM "; List list = baseDao.queryForList(sql,param); for(Map map:list){ map.put("isParent", true); } return list; } @Override public Map queryDslLevelTree(String partnerId, String cates) { String selectSql = "SELECT A.* FROM DSL_CATEGORY A WHERE A.STATE = 1 ORDER BY A.LEVEL,A.ORDER_NUM "; List categoryList = baseDao.queryForList(selectSql,new SqlParameter("partnerId",partnerId)); Map slMap = new HashMap(); if(StringUtil.notEmpty(cates)) { String[] catess = cates.split(","); for(String s : catess) { slMap.put(s, s); } } Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { String level = ConvertUtil.obj2StrBlank(map.get("LEVEL")); String id = ConvertUtil.obj2StrBlank(map.get("ID")); //一级树 if (level.equalsIgnoreCase("1")) { yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (level.equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("P_ID").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); ejgnCache.put(id, map); continue; } //三级树 if (level.equalsIgnoreCase("3")) { if(null!=map.get("P_ID")){ if(slMap.containsKey(id)) { slMap.put(id, map.get("CATEGORY_NAME")); map.put("check", 1); } else { map.put("check", 2); } Map ejgnMap = ejgnCache.get(map.get("P_ID").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 void addOrderLinkDsl(String flowId, String dslIds, String verIds) { List params = new ArrayList(); String[] dslArr = dslIds.split(","); String[] verArr = verIds.split(","); for(int i=0;i getDSLConfigTreeData(String thirdCateId,String partnerId,String configId) { TreeNode root = new TreeNode("0","DSL配置树"); StringBuilder sql = new StringBuilder(); sql.append("select SORT_ID,NAME,ID,PID,LV,STATE from CONFIG_DSL WHERE PARTNER_ID=:partnerId AND THIRD_CATEGORY_ID = :thirdCateId "); if (StringUtils.isBlank(configId) || "0".equals(configId)) { sql.append(" AND LV=1 AND (PID IS NULL OR PID ='' OR PID =0) "); } else { sql.append(" AND PID=:pid "); } sql.append(" ORDER BY SORT_ID "); SqlParameter param = new SqlParameter("pid",configId); param.addValue("partnerId", partnerId); param.addValue("thirdCateId", thirdCateId); List firstList = new LinkedList(); List dataList = baseDao.queryForList(sql.toString(), param); for (Map map : dataList) { firstList.add(map); if (ConvertUtil.obj2Int(map.get("STATE")) == 1) { map.put("STATE_TEXT", "已启用"); } else { map.put("STATE_TEXT", "未启用"); } if (!EqualUtil.isStringEqual(map.get("LV"), "2")) { map.put("state", "closed"); map.put("children", new LinkedList()); } } if (StringUtils.isBlank(configId)) { List resultList = new LinkedList(); Map map = new HashMap(); map.put("NAME", "配置分类树"); map.put("ID", "0"); map.put("LV", 0); map.put("children", firstList); resultList.add(map); return resultList; } return firstList; } @Override public String addDslConfig(HttpServletRequest request) { String configId = request.getParameter("configId"); String thirdCateId = request.getParameter("thirdCate"); String sortId = request.getParameter("sort_id"); String pId = request.getParameter("pId"); String partnerId = ""; String note = request.getParameter("note"); String name = request.getParameter("name"); String thirdCateName = new DSL_CATEGORY(thirdCateId).getInstanceById().getCategory_name(); if(StringUtil.notEmpty(configId)) { DSL_CONFIG dsl = new DSL_CONFIG(configId).getInstanceById(); pId = dsl.getPid(); String updateSql = "UPDATE DSL_CONFIG SET NAME = :name,NOTE = :note,sort_id = :sort_id WHERE ID = :id"; Map paramMap = new HashMap(); paramMap.put("id", configId); paramMap.put("sort_id", sortId); paramMap.put("note", note); paramMap.put("name", name); baseDao.execute(updateSql, paramMap); } else { int level = 0; if(StringUtil.notEmpty(pId)) { level = 2; } else { level = 1; } String insertSql = "INSERT INTO DSL_CONFIG(ID,THIRD_CATEGORY_ID,THIRD_CATEGORY_NAME,LV,SORT_ID,STATE,PID,PARTNER_ID,NOTE,NAME) " + "VALUES (:id,:third_category_id,:third_category_name,:lv,:sort_id,1,:pid,:partner_id,:note,:name)"; Map paramMap = new HashMap(); paramMap.put("id", StringUtil.getUUID()); paramMap.put("third_category_id", thirdCateId); paramMap.put("third_category_name", thirdCateName); paramMap.put("lv", level); paramMap.put("sort_id", sortId); paramMap.put("pid", pId); paramMap.put("partner_id", partnerId); paramMap.put("note", note); paramMap.put("name", name); baseDao.execute(insertSql, paramMap); } return pId; } @Override public void saveProDslInfo(HttpServletRequest request) { String flowId = request.getParameter("flowId"); String projectId = request.getParameter("projectId"); String configureId = request.getParameter("configureId"); String versionNo = request.getParameter("versionNo"); SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId) .addValue("projectId", projectId) .addValue("versionNo", versionNo) .addValue("configureId", configureId) .addValue("id", StringUtil.getUUID()); StringBuilder builder = new StringBuilder(); builder.append(" delete from config_dsl_pro where RELEASE_FLOW_ID = :flowId and CONFIGURE_ID=:configureId and PROJECT_ID=:projectId "); baseDao.execute(builder.toString(), param); builder.setLength(0); builder.append(" insert into config_dsl_pro (id,PROJECT_ID,CONFIGURE_ID,VERSION_NO,RELEASE_FLOW_ID,SOURCE_TYPE) "); builder.append(" values (:id,:projectId,:configureId,:versionNo,:flowId,1) "); baseDao.execute(builder.toString(), param); } @Override public List getSecondDslfileList(String orderId,String configureId,String secondDslId){ SqlParameter param = new SqlParameter(); param.addValue("orderId", orderId) .addValue("configureId", configureId) .addValue("secondDslId", secondDslId); String sql = "select *,TRUNCATE(FILE_SIZE/(1024*1024),2) FILE_SIZE_M from GG_FILES WHERE DEL_FLAG = 1 " + "and BUSINESS_ID = :orderId and EXTEND1 =:configureId and EXTEND2 = :secondDslId "; return baseDao.queryForList(sql,param); } @Override public void saveDslFile(HttpServletRequest request){ Map user = WebUtil.getLoginUser(request).getLoginUser(); String configureId = request.getParameter("configureId"); String secondDslId = request.getParameter("secondDslId"); String orderId = request.getParameter("orderId"); List paramList = new ArrayList(); //保存文件 String saveSql = "INSERT INTO GG_FILES(ID,FILE_NAME,FILE_PATH,FILE_SIZE,FILE_FORMAT,BUSINESS_ID,CREATE_TIME,USER_ID,USER_NAME,EXTEND1,EXTEND2) VALUES (:id,:fileName,:filePath,:fileSize,:fileFormat,:businessId,:createTime,:userId,:userName,:EXTEND1,:EXTEND2)"; // 解析器解析request的上下文 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); // 先判断request中是否包涵multipart类型的数据, if (multipartResolver.isMultipart(request)) { // 再将request中的数据转化成multipart类型的数据 MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; Iterator iter = (Iterator)multiRequest.getFileNames(); while (iter.hasNext()) { MultipartFile file = multiRequest.getFile((String)iter.next()); if (file != null) { String fileName = file.getOriginalFilename(); String path = "/upload/infofiles/" + fileName; //System.out.println("-----------"+request.getSession().getServletContext().getRealPath("/")); String fullPath = request.getSession().getServletContext().getRealPath("/")+"/upload/infofiles/" + fileName; long size = file.getSize(); String fileFormat = fileName.substring(fileName.lastIndexOf(".")+1); File localFile = new File(fullPath); // 写文件到本地 try { file.transferTo(localFile); SqlParameter param = new SqlParameter(); param.addValue("id", StringUtil.getUUID()); param.addValue("fileName", fileName); param.addValue("filePath", path); param.addValue("fileSize", size); param.addValue("fileFormat", fileFormat); param.addValue("businessId", orderId); param.addValue("EXTEND1", configureId); param.addValue("EXTEND2", secondDslId); param.addValue("createTime", DateUtil.getCurrentDate14()); param.addValue("userId", user.get("ID")); param.addValue("userName", user.get("ZSXM")); paramList.add(param); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } baseDao.executeBatch(saveSql, paramList); } } @Override public List dslconfigCateTree(HttpServletRequest request) { Map paramMap = new HashMap(); //String partnerId = WebUtil.getLoginedPartnerId(request); String selectSubSql = "SELECT * FROM DSL_CONFIG WHERE THIRD_CATEGORY_ID = :thirdCateId AND STATE = 1 ORDER BY LV,SORT_ID "; String thirdCateId = request.getParameter("thirdCate"); paramMap.put("thirdCateId", thirdCateId); //paramMap.put("partnerId", partnerId); List cates = baseDao.queryForList(selectSubSql,paramMap); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); for (Map map : cates) { String level = map.get("LV").toString(); String id = map.get("ID").toString(); //一级树 if (level.equalsIgnoreCase("1")) { yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (level.equalsIgnoreCase("2")) { String pId = map.get("PID").toString(); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); List list = (List)yjgnMap.get("ejTree"); list.add(map); } continue; } } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public int dslconfigCateCount(HttpServletRequest request) { StringBuilder sql = new StringBuilder(); //String partnerId = WebUtil.getLoginedPartnerId(request); String thirdCateId = request.getParameter("thirdCate"); String pId = request.getParameter("pId"); sql.append("SELECT COUNT(ID) FROM DSL_CONFIG WHERE THIRD_CATEGORY_ID = :thirdCateId "); Map paramMap = new HashMap(); //paramMap.put("partnerId", partnerId); paramMap.put("thirdCateId", thirdCateId); if(StringUtil.notEmpty(pId)) { sql.append(" AND PID=:pid "); paramMap.put("pid", pId); } else { sql.append(" AND LV=1 AND (PID IS NULL OR PID ='' OR PID =0) "); } return baseDao.queryForInteger(sql.toString(), paramMap); } @Override public PageInfo dslconfigCateData(HttpServletRequest request) { StringBuilder sql = new StringBuilder(); //String partnerId = WebUtil.getLoginedPartnerId(request); String thirdCateId = request.getParameter("thirdCate"); String pId = request.getParameter("pId"); sql.append("SELECT SORT_ID,NAME,ID,PID,LV,STATE FROM DSL_CONFIG WHERE THIRD_CATEGORY_ID = :thirdCateId "); Map paramMap = new HashMap(); //paramMap.put("partnerId", partnerId); paramMap.put("thirdCateId", thirdCateId); if(StringUtil.notEmpty(pId)) { sql.append(" AND PID=:pid "); paramMap.put("pid", pId); } else { sql.append(" AND LV=1 AND (PID IS NULL OR PID ='' OR PID =0) "); } sql.append(" ORDER BY SORT_ID "); return baseDao.queryforSplitPageInfo(request, sql.toString(), paramMap); } /** * 查询下级的状态 */ @Override public int getDSLConfig(String configId) { String selectSql = "SELECT COUNT(ID) FROM DSL_CONFIG WHERE PID = :pid AND STATE = 1 "; return baseDao.queryForInteger(selectSql,new SqlParameter("pid",configId)); } @Override public boolean saveProjectDsl(HttpServletRequest request) { String dsl_name = request.getParameter("dsl_name"); String dslCateName = request.getParameter("dslCateName"); String dslCateId = request.getParameter("dslCateId"); String note = request.getParameter("note"); String id = StringUtil.getUUID(); String projectId = request.getParameter("projectId"); String order_num = request.getParameter("order_num"); String[] cates = dslCateId.split("-"); String dsl_first_category_id = cates[0]; String dsl_second_category_id = cates[1]; String dsl_third_category_id = cates[2]; String searchcode = sequenceService.getDslCategorySequence(dsl_third_category_id); sequenceService.nextCICategorySequence(dsl_third_category_id); String[] cateNames = dslCateName.split("-"); String dsl_first_category_name = cateNames[0]; String dsl_second_category_name = cateNames[1]; String dsl_third_category_name = cateNames[2]; String insertSql = "INSERT INTO PROJECT_DSL(ID,DSL_NAME,DSL_FIRST_CATEGORY_ID,DSL_FIRST_CATEGORY_NAME,DSL_SECOND_CATEGORY_ID,DSL_SECOND_CATEGORY_NAME,DSL_THIRD_CATEGORY_ID,DSL_THIRD_CATEGORY_NAME,NOTE,DSL_SEARCHCODE,STATE,PROJECT_ID,PARTNER_ID,ADD_TIME,ORDER_NUM)" + "VALUES (:id,:dsl_name,:dsl_first_category_id,:dsl_first_category_name,:dsl_second_category_id,:dsl_second_category_name,:dsl_third_category_id,:dsl_third_category_name,:note,:dsl_searchcode,1,:project_id,:partner_id,:add_time,:order_num)"; Map paramMap = new HashMap(); paramMap.put("id", id); paramMap.put("dsl_name", dsl_name); paramMap.put("dsl_first_category_id", dsl_first_category_id); paramMap.put("dsl_first_category_name", dsl_first_category_name); paramMap.put("dsl_second_category_id", dsl_second_category_id); paramMap.put("dsl_second_category_name", dsl_second_category_name); paramMap.put("dsl_third_category_id", dsl_third_category_id); paramMap.put("dsl_third_category_name", dsl_third_category_name); paramMap.put("note", note); paramMap.put("dsl_searchcode", searchcode); paramMap.put("project_id", projectId); //paramMap.put("partner_id", WebUtil.getLoginedPartnerId(request)); paramMap.put("add_time", DateUtil.getCurrentDate14()); paramMap.put("order_num", order_num); baseDao.execute(insertSql, paramMap); return true; } @Override public Map queryDslById(String id) { String selectSql = "SELECT A.*,(SELECT COUNT(B.ID) FROM DSL_VERSION B WHERE A.ID = B.DSL_ID) AS VERSION_NUM FROM PROJECT_DSL A WHERE A.ID = :id "; Map dsl = baseDao.queryForMap(selectSql,new SqlParameter("id",id)); if(null!=dsl && dsl.size()>0) { int versionNum = ConvertUtil.obj2Int(dsl.get("VERSION_NUM")); if(versionNum>0) { dsl.put("type", 1); } else { dsl.put("type", 2); } } return dsl; } @Override public boolean updateProjectDsl(HttpServletRequest request) { String dsl_name = request.getParameter("dsl_name"); String dslCateName = request.getParameter("dslCateName"); String dslCateId = request.getParameter("dslCateId"); String note = request.getParameter("note"); String id = request.getParameter("id"); String order_num = request.getParameter("order_num"); String[] cates = dslCateId.split("-"); String dsl_first_category_id = cates[0]; String dsl_second_category_id = cates[1]; String dsl_third_category_id = cates[2]; String searchcode = sequenceService.getDslCategorySequence(dsl_third_category_id); String[] cateNames = dslCateName.split("-"); String dsl_first_category_name = cateNames[0]; String dsl_second_category_name = cateNames[1]; String dsl_third_category_name = cateNames[2]; String updateSql = "UPDATE PROJECT_DSL SET DSL_NAME = :dsl_name,DSL_FIRST_CATEGORY_ID = :dsl_first_category_id,DSL_FIRST_CATEGORY_NAME = :dsl_first_category_name," + "DSL_SECOND_CATEGORY_ID = :dsl_second_category_id,DSL_SECOND_CATEGORY_NAME = :dsl_second_category_name,DSL_THIRD_CATEGORY_ID = :dsl_third_category_id,DSL_THIRD_CATEGORY_NAME = :dsl_third_category_name,NOTE = :note,ORDER_NUM = :order_num WHERE ID = :id "; Map paramMap = new HashMap(); paramMap.put("id", id); paramMap.put("dsl_name", dsl_name); paramMap.put("dsl_first_category_id", dsl_first_category_id); paramMap.put("dsl_first_category_name", dsl_first_category_name); paramMap.put("dsl_second_category_id", dsl_second_category_id); paramMap.put("dsl_second_category_name", dsl_second_category_name); paramMap.put("dsl_third_category_id", dsl_third_category_id); paramMap.put("dsl_third_category_name", dsl_third_category_name); paramMap.put("note", note); paramMap.put("order_num", order_num); baseDao.execute(updateSql, paramMap); return true; } @Override public String updateDslState(HttpServletRequest request) { String id = request.getParameter("id"); String state = request.getParameter("state"); String updateSql = "UPDATE PROJECT_DSL SET STATE = :state WHERE ID = :id "; Map paramMap = new HashMap(); paramMap.put("state", state); paramMap.put("id", id); baseDao.execute(updateSql, paramMap); return "1"; } @Override public List dslCateTree(HttpServletRequest request) { Map paramMap = new HashMap(); //String partnerId = WebUtil.getLoginedPartnerId(request); String selectSubSql = "SELECT * FROM DSL_CATEGORY WHERE STATE = 1 ORDER BY LEVEL,ORDER_NUM "; //paramMap.put("partnerId", partnerId); List cates = baseDao.queryForList(selectSubSql,paramMap); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : cates) { String level = map.get("LEVEL").toString(); String id = map.get("ID").toString(); //一级树 if (level.equalsIgnoreCase("1")) { yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (level.equalsIgnoreCase("2")) { String pId = map.get("P_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); ejgnCache.put(id, map); } continue; } //三级树 if (level.equalsIgnoreCase("3")) { if(null!=map.get("P_ID")){ String pId = map.get("P_ID").toString(); if(ejgnCache.containsKey(pId)) { Map ejgnMap = ejgnCache.get(map.get("P_ID").toString()); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public int dslCateCount(HttpServletRequest request) { String pId = request.getParameter("pId"); //String partnerId = WebUtil.getLoginedPartnerId(request); StringBuilder builder = new StringBuilder("SELECT COUNT(C.ID) FROM DSL_CATEGORY C WHERE 1=1 "); Map paramMap = new HashMap(); //paramMap.put("partnerId", partnerId); if(StringUtil.notEmpty(pId)) { builder.append(" AND C.P_ID = :pId "); paramMap.put("pId", pId); } else { builder.append(" AND C.LEVEL = 1 "); } int count = baseDao.queryForInteger(builder.toString(),paramMap); return count; } @Override public PageInfo dslCateData(HttpServletRequest request) { String pId = request.getParameter("pId"); //String partnerId = WebUtil.getLoginedPartnerId(request); StringBuilder builder = new StringBuilder("SELECT C.* FROM DSL_CATEGORY C WHERE 1=1 "); Map paramMap = new HashMap(); //paramMap.put("partnerId", partnerId); if(StringUtil.notEmpty(pId)) { builder.append(" AND C.P_ID = :pId "); paramMap.put("pId", pId); } else { builder.append(" AND C.LEVEL = 1 "); } builder.append(" ORDER BY STATE,ORDER_NUM "); PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap); return pageInfo; } @Override public Map addDslCate(HttpServletRequest request,DSL_CATEGORY dsl_category) { String partner_id = ""; String id = dsl_category.getId(); String categoryid = request.getParameter("pId"); String firstCate = ""; String secondCate = ""; if(!StringUtil.notEmpty(id)) { if(StringUtil.notEmpty(categoryid)){ DSL_CATEGORY pCate = new DSL_CATEGORY(categoryid).getInstanceById(); int level = ConvertUtil.obj2Integer(pCate.getLevel()); dsl_category.setP_id(categoryid); dsl_category.setLevel(level+1); if(level==2) { firstCate = pCate.getP_id(); secondCate = pCate.getId(); } else { firstCate = pCate.getId(); } } else { dsl_category.setP_id(null); dsl_category.setLevel(1); } dsl_category.setState(Constants.COMMON_STATE_ENABLE);//所有节点添加时 dsl_category.setPartner_id(partner_id); } dsl_category.insertOrUpdate(); Map result = new HashMap(); result.put("firstCate", firstCate); result.put("secondCate", secondCate); return result; } @Override public List getConfigDslList(String configId) { SqlParameter param = new SqlParameter(); param.addValue("configId", configId); String sql = " SELECT L.NEW_VERSION_ID,L.STATE FLAG,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,L.ID LINK_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION " + " FROM CMDB_DSL_LINK L ,DSL_VERSION V , PROJECT_DSL D " + " WHERE L.DSL_ID = D.ID AND L.NEW_VERSION_ID = V.ID AND L.CI_ID = :configId AND (L.STATE IS NULL OR L.STATE = 1 OR L.STATE = 2 )"; return baseDao.queryForList(sql,param); } @Override public void addDslByConfig(PROJECT_DSL proDsl,String configId){ proDsl.setState(3); proDsl.setAdd_time(DateUtil.getCurrentDate14()); proDsl.insert(); String dslId = proDsl.getId(); String sql = ""; SqlParameter param = new SqlParameter(); if(StringUtil.isNotBlank(configId)){ sql = " insert into CMDB_DSL_LINK (ID,CI_ID,DSL_ID) values (:id,:configId,:dslId) "; param.addValue("id", StringUtil.getUUID()) .addValue("configId", configId) .addValue("dslId", dslId); baseDao.execute(sql, param); } } @Override public void addDslVersionByOrder(DSL_VERSION dslVersion){ String id = StringUtil.getUUID(); Map oldversion = queryDslNewestVersionById(dslVersion.getDsl_id()); if(oldversion != null){ if(!StringUtil.isEmpty(ConvertUtil.obj2StrBlank(oldversion.get("VER_ID")))){ dslVersion.setLast_version(ConvertUtil.obj2StrBlank(oldversion.get("VER_ID"))); } } dslVersion.setState(3); dslVersion.setCreate_time(DateUtil.getCurrentDate14()); dslVersion.setUpdate_time(DateUtil.getCurrentDate14()); dslVersion.setId(id).insert(); String versionId = dslVersion.getId(); String sql = ""; SqlParameter param = new SqlParameter(); param.addValue("id", StringUtil.getUUID()) .addValue("flowId", dslVersion.getCreate_flow_id()) .addValue("versionId", versionId) .addValue("dslId", dslVersion.getDsl_id()) .addValue("dealer_id", dslVersion.getDealer_user_id()) .addValue("dealer_name", dslVersion.getDealer_user_name()) .addValue("update_time", dslVersion.getCreate_time()); baseDao.execute("delete from DSL_ORDER_LINK where FLOW_ID=:flowId and DSL_ID = :dslId ", param); sql = " insert into DSL_ORDER_LINK (ID,FLOW_ID,DSL_ID,DSL_VERSION_ID) values (:id,:flowId,:dslId,:versionId) "; if(oldversion != null){ if(!StringUtil.isEmpty(ConvertUtil.obj2StrBlank(oldversion.get("VER_ID")))){ //复制最新版本的配置信息 saveDslConfig(ConvertUtil.obj2StrBlank(oldversion.get("VER_ID")),id); } } baseDao.execute(sql, param); //dsl关联配置默认为最新版本 baseDao.execute("UPDATE CMDB_DSL_LINK SET STATE = 2,NEW_VERSION_ID = :versionId , FLOW_ID = :flowId,DEALER_ID = :dealer_id,DEALER_NAME = :dealer_name,UPDATE_TIME = :update_time WHERE DSL_ID = :dslId ", param); } @Override public int selectByCode(String code, String id,String partnerId,String pId) { StringBuffer sql=new StringBuffer("select count(*) from DSL_CATEGORY where CATE_CODE= :code AND PARTNER_ID =:partner_id AND P_ID =:p_id "); if (StringUtils.isNotBlank(id)) { sql.append(" and id <> :id"); } SqlParameter param = new SqlParameter(); param.addValue("code", code); param.addValue("partner_id", partnerId); param.addValue("id", id); param.addValue("p_id", pId); int count=baseDao.queryForInteger(sql.toString(),param); return count; } @Override public int selectByName(String name, String id,String partnerId,String pId) { StringBuffer sql=new StringBuffer("select count(*) from DSL_CATEGORY where CATEGORY_NAME= :name AND PARTNER_ID =:partner_id AND P_ID =:p_id "); if (StringUtils.isNotBlank(id)) { sql.append(" and id <> :id"); } SqlParameter param = new SqlParameter(); param.addValue("name", name); param.addValue("partner_id", partnerId); param.addValue("id", id); param.addValue("p_id", pId); int count=baseDao.queryForInteger(sql.toString(),param); return count; } @Override public FacedeResponse execDisableDslCategory(String id, String partnerId) { FacedeResponse res = new FacedeResponse(); //获取该分类下的所有子类 List list = this.getAllChildList(id); Map map = new HashMap(); map.put("ID", id); list.add(map); //先删除原来的分类 String sql = "UPDATE DSL_CATEGORY SET STATE = 2 WHERE ID=:id AND PARTNER_ID=:partner_id "; List paramList = new ArrayList(); if (list != null && list.size() > 0) { for (Map map2 : list) { String categoryId = ConvertUtil.obj2Str(map2.get("ID")); SqlParameter param = new SqlParameter(); param.addValue("id", categoryId); param.addValue("partner_id", partnerId); paramList.add(param); } baseDao.executeBatch(sql, paramList); } return res; } @Override public FacedeResponse execEnableDslCategory(String id, String partnerId) { FacedeResponse res = new FacedeResponse(); //获取该分类的父类 List pList = this.getAllParentList(id, new ArrayList()); //获取该分类下的所有子类 List list = this.getAllChildList(id); Map map = new HashMap(); map.put("ID", id); list.add(map); //合并父类和子类列表 list.addAll(pList); //修改DSL分类状态 this.saveDslCategory(list, partnerId); return res; } /** * 保存加盟商DSL分类 * @param categoryIdList * @param partnerId */ private void saveDslCategory(List categoryIdList, String partnerId) { List paramList = new ArrayList(); if (categoryIdList != null && categoryIdList.size() > 0) { for (Map map : categoryIdList) { String categoryId = ConvertUtil.obj2Str(map.get("ID")); SqlParameter param = new SqlParameter(); param.addValue("id", categoryId); param.addValue("partner_id", partnerId); paramList.add(param); } String sql = "UPDATE DSL_CATEGORY SET STATE = 1 WHERE ID = :id AND PARTNER_ID=:partner_id "; baseDao.executeBatch(sql, paramList); } } /** * 递归,获取分类下的所有子类,一直到三级分类 * @param pid * @return */ private List getAllChildList(String pid) { String sql = "select ID,LEVEL from DSL_CATEGORY where STATE=1 and P_ID=:pid "; List list = baseDao.queryForList(sql, new SqlParameter("pid", pid)); if (list != null && list.size() > 0) { for (int i=0 ;i getAllParentList(String id, List tList) { String sql = "select c.ID,c.LEVEL from DSL_CATEGORY c where c.STATE=1 and c.ID=(select P_ID from DSL_CATEGORY c2 where c2.STATE=1 and c2.ID=:id) "; Map map = baseDao.queryForMap(sql, new SqlParameter("id", id)); if (map != null && map.size() > 0) { tList.add(map); String cid = ConvertUtil.obj2Str(map.get("ID")); String jb = ConvertUtil.obj2Str(map.get("LEVEL")); if (!"1".equals(jb)) { //目前只考虑三级分类 this.getAllParentList(cid, tList); } } return tList; } @Override public int selectByconfigName(String name, String id,String partnerId,String pId,String thirdCate) { StringBuffer sql=new StringBuffer("select count(*) from DSL_CONFIG where NAME= :name AND PARTNER_ID =:partner_id AND PID =:p_id AND THIRD_CATEGORY_ID = :thirdCate "); if (StringUtils.isNotBlank(id)) { sql.append(" and id <> :id"); } SqlParameter param = new SqlParameter(); param.addValue("name", name); param.addValue("partner_id", partnerId); param.addValue("id", id); param.addValue("p_id", pId); param.addValue("thirdCate", thirdCate); int count=baseDao.queryForInteger(sql.toString(),param); return count; } @Override public FacedeResponse execDisableDslconfigCate(String id, String partnerId) { FacedeResponse res = new FacedeResponse(); //获取该分类下的所有子类 List list = this.getAllChildconfigList(id); Map map = new HashMap(); map.put("ID", id); list.add(map); //先删除原来的分类 String sql = "UPDATE DSL_CONFIG SET STATE = 2 WHERE ID=:id AND PARTNER_ID=:partner_id "; List paramList = new ArrayList(); if (list != null && list.size() > 0) { for (Map map2 : list) { String categoryId = ConvertUtil.obj2Str(map2.get("ID")); SqlParameter param = new SqlParameter(); param.addValue("id", categoryId); param.addValue("partner_id", partnerId); paramList.add(param); } baseDao.executeBatch(sql, paramList); } return res; } @Override public FacedeResponse execEnableDslconfigCate(String id, String partnerId) { FacedeResponse res = new FacedeResponse(); //获取该分类的父类 List pList = this.getAllParentconfigList(id, new ArrayList()); //获取该分类下的所有子类 List list = this.getAllChildconfigList(id); Map map = new HashMap(); map.put("ID", id); list.add(map); //合并父类和子类列表 list.addAll(pList); //修改DSL分类状态 this.saveDslconfigCate(list, partnerId); return res; } /** * 保存加盟商DSL分类 * @param categoryIdList * @param partnerId */ private void saveDslconfigCate(List categoryIdList, String partnerId) { List paramList = new ArrayList(); if (categoryIdList != null && categoryIdList.size() > 0) { for (Map map : categoryIdList) { String categoryId = ConvertUtil.obj2Str(map.get("ID")); SqlParameter param = new SqlParameter(); param.addValue("id", categoryId); param.addValue("partner_id", partnerId); paramList.add(param); } String sql = "UPDATE DSL_CONFIG SET STATE = 1 WHERE ID = :id AND PARTNER_ID=:partner_id "; baseDao.executeBatch(sql, paramList); } } /** * 递归,获取分类下的所有子类,一直到三级分类 * @param pid * @return */ private List getAllChildconfigList(String pid) { String sql = "select ID,LV from DSL_CONFIG where STATE=1 and PID=:pid "; List list = baseDao.queryForList(sql, new SqlParameter("pid", pid)); if (list != null && list.size() > 0) { for (int i=0 ;i getAllParentconfigList(String id, List tList) { String sql = "select c.ID,c.LV from DSL_CONFIG c where c.STATE=1 and c.ID=(select PID from DSL_CATEGORY c2 where c2.STATE=1 and c2.ID=:id) "; Map map = baseDao.queryForMap(sql, new SqlParameter("id", id)); if (map != null && map.size() > 0) { tList.add(map); String cid = ConvertUtil.obj2Str(map.get("ID")); String jb = ConvertUtil.obj2Str(map.get("LV")); if (!"1".equals(jb)) { //目前只考虑三级分类 this.getAllParentconfigList(cid, tList); } } return tList; } @Override public Map preview(String id,HttpServletRequest request) { Map cate = new DSL_CATEGORY(id).getBeanMapById(); Map paramMap = new HashMap(); //String partnerId = WebUtil.getLoginedPartnerId(request); String selectSubSql = "SELECT * FROM DSL_CONFIG WHERE THIRD_CATEGORY_ID = :thirdCateId AND STATE = 1 ORDER BY LV,SORT_ID "; //paramMap.put("partnerId", partnerId); paramMap.put("thirdCateId", id); List cates = baseDao.queryForList(selectSubSql,paramMap); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); for (Map map : cates) { String level = map.get("LV").toString(); String configId = map.get("ID").toString(); //一级树 if (level.equalsIgnoreCase("1")) { yjgnCache.put(configId, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (level.equalsIgnoreCase("2")) { String pId = map.get("PID").toString(); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); List list = (List)yjgnMap.get("ejTree"); list.add(map); } continue; } } int count = 0; for(Map map:resultList){ List list = (List)map.get("ejTree"); map.put("count", list.size()); count = count +list.size(); } cate.put("count", count+4); System.out.println(JsonUtil.list2Json(resultList)); cate.put("resultList", resultList); return cate; } @Override public int queryDslVersionCount(HttpServletRequest request) { StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM DSL_VERSION A WHERE A.DSL_ID = :dslId AND A.STATE <> 3 "); String dslId = request.getParameter("dslId"); Map paramMap = new HashMap(); paramMap.put("dslId", dslId); int count = baseDao.queryForInteger(builder.toString(), paramMap); return count; } @Override public PageInfo queryDslVersionData(HttpServletRequest request) { StringBuilder builder = new StringBuilder("SELECT A.*,B.WFNAME FROM DSL_VERSION A LEFT JOIN WORKFLOW_BASE B ON A.CREATE_FLOW_ID = B.ID WHERE A.DSL_ID = :dslId AND A.STATE <> 3 ORDER BY A.CREATE_TIME DESC "); String dslId = request.getParameter("dslId"); Map paramMap = new HashMap(); paramMap.put("dslId", dslId); PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap); return pageInfo; } @Override public boolean saveDslVersion(HttpServletRequest request) { String dsl_id = request.getParameter("dsl_id"); String edition = request.getParameter("edition"); String note = request.getParameter("note"); long update_time = DateUtil.getCurrentDate14(); long create_time = update_time; String dealer_user_id = WebUtil.getLoginedUserId(request); Map user = WebUtil.getLoginUser(request).getLoginUser(); String dealer_user_name = ConvertUtil.obj2StrBlank(user.get("ZSXM")); String id = StringUtil.getUUID(); Map paramMap = new HashMap(); paramMap.put("id", id); paramMap.put("dsl_id", dsl_id); paramMap.put("edition", edition); paramMap.put("dealer_user_id", dealer_user_id); paramMap.put("dealer_user_name", dealer_user_name); paramMap.put("create_time", create_time); paramMap.put("update_time", update_time); paramMap.put("note", note); String insertSql = "INSERT INTO DSL_VERSION(ID,DSL_ID,EDITION,STATE,UPDATE_TIME,DEALER_USER_ID,DEALER_USER_NAME,CREATE_TIME,NOTE,LAST_VERSION) VALUES (:id,:dsl_id,:edition,1,:update_time,:dealer_user_id,:dealer_user_name,:create_time,:note,:lastVersion)"; //查询当前最新的版本信息 Map newestVersion = queryDslNewestVersionById(dsl_id); String oldVersion = new String(); if(null!=newestVersion && newestVersion.size()>0) { oldVersion = ConvertUtil.obj2StrBlank(newestVersion.get("VER_ID")); } paramMap.put("lastVersion", oldVersion); baseDao.execute(insertSql, paramMap); if(StringUtil.notEmpty(oldVersion)) { //复制版本信息 saveDslConfig(oldVersion, id); } return true; } @Override public String updateDslVersionState(HttpServletRequest request) { String id = request.getParameter("id"); String state = request.getParameter("state"); String updateSql = "UPDATE DSL_VERSION SET STATE = :state WHERE ID = :id "; Map paramMap = new HashMap(); paramMap.put("state", state); paramMap.put("id", id); baseDao.execute(updateSql, paramMap); return "1"; } @Override public Map versionMore(String id) { String selectSql = "SELECT A.*,B.DSL_NAME,B.DSL_FIRST_CATEGORY_NAME,B.DSL_SECOND_CATEGORY_NAME,B.DSL_THIRD_CATEGORY_NAME FROM DSL_VERSION A,PROJECT_DSL B WHERE A.DSL_ID = B.ID AND A.ID = :id "; Map version = baseDao.queryForMap(selectSql,new SqlParameter("id",id)); return version; } @Override public Map queryDslNewestVersionById(String dslId) { String selectSql = "SELECT A.*,C.EDITION,C.VER_ID,C.UPDATE_TIME FROM PROJECT_DSL A LEFT JOIN (SELECT B.DSL_ID,B.EDITION,B.ID AS VER_ID,B.UPDATE_TIME FROM DSL_VERSION B WHERE B.STATE = 1 AND B.DSL_ID = :dslId ORDER BY B.CREATE_TIME DESC LIMIT 0,1 ) C ON A.ID = C.DSL_ID WHERE A.ID = :dslId "; Map newestVersion = baseDao.queryForMap(selectSql,new SqlParameter("dslId",dslId)); return newestVersion; } @Override public String checkVersion(HttpServletRequest request) { String dslId = request.getParameter("dslId"); String edition = request.getParameter("edition"); String selectSql = "SELECT COUNT(ID) FROM DSL_VERSION WHERE EDITION = :edition AND DSL_ID = :dslId "; Map paramMap = new HashMap(); paramMap.put("dslId", dslId); paramMap.put("edition", edition); int count = baseDao.queryForInteger(selectSql,paramMap); if(count>0) { return "1"; } return "0"; } @Override public List queryDslConfigFolder(String partnerId,String cateId) { Map paramMap = new HashMap(); String selectSubSql = "SELECT * FROM DSL_CONFIG WHERE PARTNER_ID=:partnerId AND THIRD_CATEGORY_ID = :cateId AND STATE = 1 ORDER BY LV,SORT_ID "; paramMap.put("partnerId", partnerId); paramMap.put("cateId", cateId); List cates = baseDao.queryForList(selectSubSql,paramMap); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); for (Map map : cates) { String level = map.get("LV").toString(); String id = map.get("ID").toString(); //一级树 if (level.equalsIgnoreCase("1")) { yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (level.equalsIgnoreCase("2")) { String pId = map.get("PID").toString(); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); List list = (List)yjgnMap.get("ejTree"); list.add(map); } } } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public int queryDslVersionFileCount(String folderId, String versionId) { StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM DSL_CONFIG_FILE A WHERE A.VERSION_ID = :versionId AND DEL_FLAG = 1 "); Map paramMap = new HashMap(); paramMap.put("versionId", versionId); if(StringUtil.notEmpty(folderId)) { builder.append(" AND DSL_SECOND_CATE = :folderId "); paramMap.put("folderId", folderId); } int count = baseDao.queryForInteger(builder.toString(),paramMap); return count; } @Override public PageInfo queryDslVersionFileData(HttpServletRequest request,String folderId, String versionId) { StringBuilder builder = new StringBuilder("SELECT A.* FROM DSL_CONFIG_FILE A WHERE A.VERSION_ID = :versionId AND DEL_FLAG = 1 "); Map paramMap = new HashMap(); paramMap.put("versionId", versionId); if(StringUtil.notEmpty(folderId)) { builder.append(" AND DSL_SECOND_CATE = :folderId "); paramMap.put("folderId", folderId); } builder.append(" ORDER BY CREATE_TIME DESC "); PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap); List files = pageInfo.getDatas(); if(null!=files && files.size()>0) { for(Map file : files) { file.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(file.get("FILE_SIZE")))); } } return pageInfo; } @Override public boolean deleteDslFile(HttpServletRequest request,String fileId) { String userId = WebUtil.getLoginedUserId(request); String userName = ConvertUtil.obj2StrBlank(WebUtil.getLoginUser(request).getLoginUser().get("ZSXM")); String updateSql = "UPDATE DSL_CONFIG_FILE SET DEL_FLAG = 2 WHERE ID = :fileId "; baseDao.execute(updateSql, new SqlParameter("fileId",fileId)); DSL_CONFIG_FILE file = new DSL_CONFIG_FILE(fileId).getInstanceById(); //添加删除文件记录 DSL_VERSION version = new DSL_VERSION(file.getVersion_id()).getInstanceById(); String saverecordSql = "INSERT INTO DSL_CONFIG_FILE_CHANGE_DETAIL(ID,FIRST_CONFIG_CATE,SECOND_CONFIG_CATE,DSL_VERSION_ID,FILE_ID,DEAL_TYPE,FLOW_ID,CREATE_TIME,USER_ID,USER_NAME) VALUES(:id,:first_config_cate,:folderId,:versionId,:file_id,:deal_type,:flow_id,:createTime,:userId,:userName)"; Map param = new HashMap(); param.put("id", StringUtil.getUUID()); param.put("file_id", fileId); param.put("versionId", file.getVersion_id()); param.put("deal_type", 2); param.put("first_config_cate", file.getDsl_first_cate()); param.put("folderId", file.getDsl_second_cate()); param.put("flow_id", version.getCreate_flow_id()); param.put("createTime", DateUtil.getCurrentDate14()); param.put("userId", userId); param.put("userName", userName); baseDao.execute(saverecordSql, param); return true; } @Override public void addConfigLinkDsl(String configId, String dslIds, String verIds, String delFlags, String flowId, String userId, String userName) { List addParams = new ArrayList(); List updateParams = new ArrayList(); Long curDate = DateUtil.getCurrentDate14(); String[] dslArr = dslIds.split(","); String[] verArr = verIds.split(","); String[] flagArr = delFlags.split(","); for(int i=0;i0){ baseDao.executeBatch(sql, addParams); } //有记录则去掉state为删除状态的标识 if(updateParams.size()>0){ sql = " UPDATE CMDB_DSL_LINK SET STATE = NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE CI_ID=:configId AND DSL_ID =:dslId AND STATE=3 "; baseDao.executeBatch(sql, updateParams); } } private Map getSelConfigDslSupport(HttpServletRequest request) { Map support = new HashMap(); SqlParameter param = new SqlParameter(); StringBuilder builder = new StringBuilder(); builder.append(" SELECT * FROM ( "); builder.append(" SELECT 0 AS DEL_FLAG,D.STATE,D.DSL_THIRD_CATEGORY_ID,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION "); builder.append(" FROM PROJECT_DSL D ,DSL_VERSION V "); builder.append(" WHERE D.ID = V.DSL_ID AND ((D.STATE=1 AND V.STATE=1) OR (D.STATE=3 AND D.FLOW_ID=:flowId)) AND PROJECT_ID= :proId "); builder.append(" AND NOT EXISTS ( "); builder.append(" SELECT L.DSL_ID FROM CMDB_DSL_LINK L WHERE L.STATE!=3 AND L.CI_ID= :configId AND L.DSL_ID = D.ID "); builder.append(" ) "); builder.append(" UNION "); builder.append(" SELECT 1 AS DEL_FLAG,D.STATE,D.DSL_THIRD_CATEGORY_ID,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION "); builder.append(" FROM CMDB_DSL_LINK L,PROJECT_DSL D,DSL_VERSION V "); builder.append(" WHERE L.DSL_ID = D.ID AND L.DSL_VERSION_ID = V.ID AND L.STATE=3 AND L.CI_ID = :configId ORDER BY UPDATE_TIME DESC "); builder.append(" ) T WHERE 1=1 "); String proId = request.getParameter("proId"); if(StringUtil.notEmpty(proId)) { param.put("proId", proId); } String configId = request.getParameter("configId"); if(StringUtil.notEmpty(configId)) { param.put("configId", configId); } String flowId = request.getParameter("flowId"); if(StringUtil.notEmpty(flowId)) { param.put("flowId", flowId); } String dslName = request.getParameter("dslName"); if(StringUtil.notEmpty(dslName)) { builder.append(" AND DSL_NAME LIKE :dslName "); param.put("dslName", "%" + dslName + "%"); } String dslCate = request.getParameter("dslCate"); if(StringUtil.notEmpty(dslCate)) { builder.append(" AND DSL_THIRD_CATEGORY_ID = :dslCate "); param.put("dslCate", dslCate); } String dslSearchCode = request.getParameter("dslSearchCode"); if(StringUtil.notEmpty(dslSearchCode)) { builder.append(" AND DSL_SEARCHCODE like :dslSearchCode "); param.put("dslSearchCode", "%"+dslSearchCode+"%"); } String dslIds = request.getParameter("dslIds"); if(StringUtil.notEmpty(dslIds)) { dslIds = "'" + dslIds.replace(",", "','") + "'"; builder.append(" AND DSL_ID NOT IN ("+dslIds+") "); } builder.append(" GROUP BY DSL_ID ORDER BY UPDATE_TIME DESC "); support.put("sql", builder.toString()); support.put("param", param); return support; } @Override public Map getDslMsgById(String id,HttpServletRequest request) { StringBuilder builder = new StringBuilder("SELECT c.*,A.EDITION,A.CREATE_TIME,A.VERSIONID FROM PROJECT_DSL c LEFT JOIN (SELECT MAX(B.CREATE_TIME),B.ID AS VERSIONID,B.DSL_ID,B.EDITION,B.CREATE_TIME FROM DSL_VERSION B WHERE B.STATE = 1 AND B.ID = :id ) A ON c.ID = A.DSL_ID WHERE c.STATE <> 3 "); // String partnerId = WebUtil.getLoginedPartnerId(request); Map paramMap = new HashMap(); paramMap.put("id", id); //paramMap.put("partnerId", partnerId); Map dslMap = baseDao.queryForMap(builder.toString(), paramMap); return dslMap; } @Override public void deleteConfigLinkDsl(String linkId, String flag, String userId, String userName,String flowId) { Long curDate = DateUtil.getCurrentDate14(); String sql = "DELETE FROM CMDB_DSL_LINK WHERE ID = :linkId"; if(!flag.equals("1")){//不是当前流程新增的dsl关系 sql = " UPDATE CMDB_DSL_LINK SET STATE=3,DEALER_ID=:userId,DEALER_NAME=:userName,UPDATE_TIME=:curDate,FLOW_ID = :flowId WHERE ID = :linkId "; } SqlParameter param = new SqlParameter(); param.addValue("linkId", linkId) .addValue("userId", userId) .addValue("userName", userName) .addValue("curDate", curDate) .addValue("flowId", flowId); baseDao.execute(sql, param); } @Override public PageInfo getSelConfigDslListData(HttpServletRequest request) { Map support = getSelConfigDslSupport(request); String sql = (String)support.get("sql"); SqlParameter param = (SqlParameter)support.get("param"); PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, sql, param); return pageInfo; } @Override public int getSelConfigDslListCount(HttpServletRequest request) { Map support = getSelConfigDslSupport(request); String sql = "SELECT COUNT(*) FROM ( " + (String)support.get("sql") + " ) A"; SqlParameter param = (SqlParameter)support.get("param"); int count = baseDao.queryForInteger(sql, param); return count; } @Override public void updateConfigLinkDsl(String linkId, String verId, String flag, String userId, String userName,String flowId) { Long curDate = DateUtil.getCurrentDate14(); String sql = " UPDATE CMDB_DSL_LINK SET STATE=2,NEW_VERSION_ID=:verId,DEALER_ID=:userId,DEALER_NAME=:userName,UPDATE_TIME=:curDate,FLOW_ID = :flowId WHERE ID = :linkId"; if(flag.equals("1")){//新增的数据,修改所有版本号,但不修改标识 sql = " UPDATE CMDB_DSL_LINK SET DSL_VERSION_ID=:verId,NEW_VERSION_ID=:verId,DEALER_ID=:userId,DEALER_NAME=:userName,UPDATE_TIME=:curDate WHERE ID = :linkId"; } SqlParameter param = new SqlParameter(); param.addValue("linkId", linkId) .addValue("verId", verId) .addValue("userId", userId) .addValue("userName", userName) .addValue("curDate", curDate) .addValue("flowId", flowId); baseDao.execute(sql, param); } @Override public void doRevertConfigDsl(String configId, String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId) .addValue("configId", configId); //新增的数据删除 baseDao.execute(" DELETE FROM CMDB_DSL_LINK WHERE STATE=1 AND FLOW_ID = :flowId AND CI_ID=:configId ", param); //将要删除的数据恢复 baseDao.execute(" UPDATE CMDB_DSL_LINK SET STATE=NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE STATE=3 AND FLOW_ID = :flowId AND CI_ID=:configId ", param); //将要修改的数据恢复 baseDao.execute(" UPDATE CMDB_DSL_LINK SET NEW_VERSION_ID=DSL_VERSION_ID,STATE=NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE STATE=3 AND FLOW_ID = :flowId AND CI_ID=:configId ", param); } @Override public int getIsCanAddversion(HttpServletRequest request) { String dslId = request.getParameter("dslId"); String flowId = request.getParameter("flowId"); Map param = new HashMap(); param.put("dslId", dslId); param.put("flowId", flowId); String sql = "SELECT COUNT(ID) FROM DSL_VERSION WHERE DSL_ID = :dslId AND (STATE = 1 OR (STATE = 3 AND CREATE_FLOW_ID =:flowId)) "; int count = baseDao.queryForInteger(sql, param); return count; } @Override public Map queryDslMsgByVerId(String verId) { if(StringUtil.notEmpty(verId)) { String selectSql = "SELECT B.* FROM DSL_VERSION A,PROJECT_DSL B WHERE A.DSL_ID = B.ID AND A.ID = :verId"; Map dsl = baseDao.queryForMap(selectSql,new SqlParameter("verId",verId)); return dsl; } return new HashMap(); } @Override public void saveDslConfig(String oldVersion, String newVersion) { String selectSql = "SELECT * FROM DSL_CONFIG_FILE WHERE VERSION_ID = :oldVersion AND DEL_FLAG = 1 "; List configs = baseDao.queryForList(selectSql,new SqlParameter("oldVersion",oldVersion)); if(null!=configs && configs.size()>0) { List paramList = new ArrayList(); long create_time = DateUtil.getCurrentDate14(); for(Map map : configs) { SqlParameter sqlParameter = new SqlParameter(); sqlParameter.putAll(map); sqlParameter.put("ID", StringUtil.getUUID()); sqlParameter.put("CREATE_TIME", DateUtil.getCurrentDate14()); sqlParameter.put("VERSION_ID", newVersion); paramList.add(sqlParameter); } String insertSql = "INSERT INTO DSL_CONFIG_FILE(ID,FILE_NAME,FILE_PATH,FILE_SIZE,FILE_FORMAT,VERSION_ID,ORDERNUM,FILE_NOTE,DSL_FIRST_CATE,DSL_SECOND_CATE,CREATE_TIME,USER_ID,USER_NAME,DEL_FLAG) VALUES (:ID,:FILE_NAME,:FILE_PATH,:FILE_SIZE,:FILE_FORMAT,:VERSION_ID,:ORDERNUM,:FILE_NOTE,:DSL_FIRST_CATE,:DSL_SECOND_CATE,:CREATE_TIME,:USER_ID,:USER_NAME,:DEL_FLAG)"; baseDao.executeBatch(insertSql,paramList); } } @Override public int queryDsllinkorderCount(HttpServletRequest request, String id) { String sql = "SELECT COUNT(B.ID) FROM DSL_ORDER_LINK A,WORKFLOW_BASE B WHERE A.FLOW_ID = B.ID AND A.DSL_ID = :dsl_id "; Map param = new HashMap(); param.put("dsl_id", id); int count = baseDao.queryForInteger(sql, param); return count; } @Override public PageInfo queryDsllinkorderData(HttpServletRequest request, String id) { String sql = "SELECT B.* FROM DSL_ORDER_LINK A,WORKFLOW_BASE B WHERE A.FLOW_ID = B.ID AND A.DSL_ID = :dsl_id "; Map param = new HashMap(); param.put("dsl_id", id); PageInfo info = baseDao.queryforSplitPageInfo(request, sql, param); return info; } @Override public int queryDsllinkciCount(HttpServletRequest request, String id) { String sql = "SELECT COUNT(ID) FROM CMDB_DSL_LINK WHERE DSL_ID = :dslId AND STATE IS NULL "; Map param = new HashMap(); param.put("dslId", id); int count = baseDao.queryForInteger(sql, param); return count; } @Override public PageInfo queryDsllinkciData(HttpServletRequest request, String id) { String sql = "SELECT A.*,B.ID AS CI_ID,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,B.LV3_ID THIRDLEVELID,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE B.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE B.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE B.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_DSL_LINK A,CMDB_CI_BASE B WHERE A.CI_ID = B.ID AND A.DSL_ID = :dslId AND A.STATE = 1 "; Map param = new HashMap(); param.put("dslId", id); PageInfo info = baseDao.queryforSplitPageInfo(request, sql, param); return info; } @Override public int queryDslHistoryCount(HttpServletRequest request, String id) { String sql = "SELECT COUNT(ID) FROM DSL_VERSION WHERE DSL_ID = :dsl_id "; Map param = new HashMap(); param.put("dsl_id", id); int count = baseDao.queryForInteger(sql, param); return count; } @Override public PageInfo queryDslHistoryData(HttpServletRequest request, String id) { String sql = "SELECT A.*,B.WFNAME FROM DSL_VERSION A LEFT JOIN WORKFLOW_BASE B ON A.CREATE_FLOW_ID = B.ID WHERE DSL_ID = :dsl_id "; Map param = new HashMap(); param.put("dsl_id", id); PageInfo info = baseDao.queryforSplitPageInfo(request, sql, param); return info; } }