package cn.ksource.web.facade.change; import cn.ksource.beans.*; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.page.PageInfo; import cn.ksource.core.util.*; import cn.ksource.core.web.SysInfoMsg; import cn.ksource.core.web.WebUtil; import cn.ksource.core.workflow.*; import cn.ksource.web.Constants; import cn.ksource.web.entity.WorkFlowSupportEntity; import cn.ksource.web.facade.dsl.DSLFacade; import cn.ksource.web.facade.incident.IncidentFacade; import cn.ksource.web.service.WorkOrderCodeService; import cn.ksource.web.service.device.DeviceService; import cn.ksource.web.service.file.FileService; import cn.ksource.web.service.order.OrderService; import cn.ksource.web.service.record.RecordService; import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService; 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("changeFacade") public class ChangeFacadeImpl implements ChangeFacade { @Autowired private BaseDao baseDao; @Autowired private RecordService recordService; @Autowired private FileService fileService; @Autowired private WorkOrderCodeService workOrderCodeService; @Autowired private WorkFlowSupportService workFlowSupportService; @Autowired private WorkflowBusinessService workflowBusinessService; @Autowired private WorkflowCoreService workflowCoreService; @Autowired private OrderService orderService; @Autowired private DeviceService deviceService; @Autowired private IncidentFacade incidentFacade; @Autowired private DSLFacade dslFacade; /** * 保存变更基本信息 */ @Override public Map saveChange(HttpServletRequest request, SC_WORKFLOW_CHANGE sc_workflow_change) { sc_workflow_change.setIs_sys_change(2);//硬件变更 Map resultMap = new HashMap(); resultMap.put("result", 2); Map user = WebUtil.getLoginUser(request).getLoginUser(); String sh = request.getParameter("sh"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); String serivceListId = request.getParameter("serivceListId"); String serivceList = request.getParameter("serivceList"); String first_category_id = new String(); String first_category_name = new String(); String second_category_id = new String(); String second_category_name = new String(); String third_category_id = new String(); String third_category_name = new String(); if (StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) { String[] serivceListIds = serivceListId.split("-"); String[] serivceLists = serivceList.split("-"); first_category_id = serivceListIds[0]; first_category_name = serivceLists[0]; second_category_id = serivceListIds[1]; second_category_name = serivceLists[1]; third_category_id = serivceListIds[2]; third_category_name = serivceLists[2]; } Map serviceUsers = new HashMap(); String dealer = request.getParameter("dealer"); String[] dealerAry = dealer.split("-"); String dealId = dealerAry[0]; String dealName = dealerAry[1]; serviceUsers.put("USER_ID", dealId); serviceUsers.put("USER_NAME", dealName); String dealerType = "2"; if (!StringUtil.isEmpty(dealerType)) { String state = "1"; String order_code = workOrderCodeService.getChangeOrderCode(); String partnerId = ""; long createTime = DateUtil.getCurrentDate14(); sc_workflow_change.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id) .setSecond_category_name(second_category_name).setThird_category_id(third_category_id).setThird_category_name(third_category_name); if (StringUtil.isBlank(sc_workflow_change.getId())) { sc_workflow_change.setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(createTime); sc_workflow_change.setState(ConvertUtil.obj2Integer(state)).setFlow_name(sc_workflow_change.getName()).setOrder_code(order_code).setPartner_id(partnerId); } sc_workflow_change.insertOrUpdate(); String dealUserName = ""; if (dealerType.equals("1")) { dealUserName = ConvertUtil.obj2StrBlank(serviceUsers.get("GROUP_NAME")); } else { dealUserName = ConvertUtil.obj2StrBlank(serviceUsers.get("USER_NAME")); } if ("1".equals(sh)) { //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId, userId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //添加修改信息处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("修改变更:" + userName + "修改了变更信息"); record.setDeal_time(DateUtil.getCurrentDate14()); // record.setDeal_user_id(userId); record.setDeal_user_name(userName); record.setBusiness_id(flowId); record.setNode_id(nodeId).setNode_name(nodeName); recordService.addRecord(record); } WORKFLOW_BASE base = new WORKFLOW_BASE(); if (!"2".equals(sh)) { //发起标准变更流程 base = workflowBusinessService.startChangeWorkflow(sc_workflow_change.getId()); flowId = base.getId(); // 2017-9-13 标准变更流程修复 流程第一个节点由知识管理流程的节点 变更受理 变为 标准流程的第一个节点 变更申请 SqlParameter parameter=new SqlParameter("flowId",flowId).addValue("node_template_id",Constants.BGSQ) .addValue("nodeName",Constants.getchangeNodeLabel(Constants.BGSQ)) .addValue("bz",request.getParameter("bz")); baseDao.execute("update workflow_node set node_template_id=:node_template_id,nodename=:nodeName,deal_note=:bz where flowid=:flowId",parameter); GG_RECORD record = new GG_RECORD(); record.setDeal_content("申请变更:" + userName + "申请了变更信息,受理人:" + dealName); record.setDeal_time(DateUtil.getCurrentDate14()); record.setBusiness_id(flowId); record.setDeal_user_name(userName); recordService.addRecord(record); } else { base = new WORKFLOW_BASE(flowId).getInstanceById(); base.setWfname(sc_workflow_change.getName()).setWfnote(sc_workflow_change.getDescrip()).update(); GG_RECORD record = new GG_RECORD(); record.setDeal_content("变更修改:" + userName + "修改了变更信息,受理人:" + dealName); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_name(userName); record.setBusiness_id(flowId); recordService.addRecord(record); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(userName + "完成了节点"); finishEntity.setDeal_note(userName + "完成了节点"); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); //关闭当前节点 workflowCoreService.finishNode(base, node, finishEntity); } Map param = new HashMap(); param.put("flowId", flowId); //提交工单时添加关联工单 //先删除已存在的工单 baseDao.execute("DELETE FROM ORDER_REF_ORDER WHERE BUSINESS_ID = :flowId ", param); String[] orderId = request.getParameterValues("orderId"); orderService.saveLinkOrders(flowId,orderId,request); //提交工单时上传文档附件 fileService.uploadFile(request, flowId, flowId, null, null); // fileService.newuploadFileAll(request,flowId,userId, Constants.GG_FOLDERS_BGFOLDERS, Constants.FILE_STATE_SHTG,"",sc_workflow_change.getCustomer_id(),sc_workflow_change.getProject_id(),sc_workflow_change.getProject_name(),sc_workflow_change.getCustomer_name()); //提交工单时添加关联配置 //先删除已存在的配置 baseDao.execute("DELETE FROM CMDB_CI_REF_ORDER WHERE FLOW_ID = :flowId ", param); String[] deviceId = request.getParameterValues("deviceId"); deviceService.saveLinkDevices(flowId,deviceId); sc_workflow_change.setFlow_id(flowId); List userMap = new ArrayList(); NodeDealEntity entity = new NodeDealEntity(); if ("2".equals(sh)) {//回退到申请环节后提交 dealerType = "2"; /*String nextNode = request.getParameter("nextNode");*/ /*WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); WORKFLOW_NODE beforenode = new WORKFLOW_NODE(node.getSource_node_instance_id()).getInstanceById(); String node_template_id = beforenode.getNode_template_id(); String sql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :node_template_id AND IS_ADMIN = :is_admin order by createtime desc limit 1 "; Map paramMap = new HashMap(); paramMap.put("flowid", beforenode.getFlowid()); paramMap.put("node_template_id", node_template_id); paramMap.put("is_admin", "1"); Map nodeMap = baseDao.queryForMap(sql, paramMap);*/ Map map = new HashMap(); map.put("USER_ID", dealId); map.put("USER_NAME", dealName); map.put("IS_ADMIN", "1"); userMap.add(map); entity.setDealerList(userMap); dealUserName = ConvertUtil.obj2StrBlank(dealerAry[1]); } else { List users = new ArrayList(); Map uMap = new HashMap(); uMap.put("USER_ID", dealId); uMap.put("USER_NAME", dealName); uMap.put("IS_ADMIN", 1); users.add(uMap); entity.setDealerList(users); Map tParam = new HashMap(); tParam.put("ID", StringUtil.getUUID()); tParam.put("WORKFLOWID", sc_workflow_change.getFlow_id()); tParam.put("PNAME", "处理人"); tParam.put("PVALUE", "1" + "&" + dealId + "-1"); baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", tParam); } entity.setDealer_type(ConvertUtil.obj2Integer(dealerType)); workflowCoreService.toNode(base, Constants.BGSL, entity); //发送消息 resultMap.put("result", 1); } else { resultMap.put("nouser", "1"); } return resultMap; } /** * 通过orderid获取流程信息 */ @Override public Map getFlowMsg(String flowId, String userId) { String selectSql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowId AND CURRENT_DEALER_ID = :userId AND FLOWSTATE <> 3 "; return baseDao.queryForMap(selectSql, new SqlParameter("flowId", flowId).addValue("userId", userId)); } @Override public int queryMyChangeCount(HttpServletRequest request) { String userId = WebUtil.getLoginedUserId(request); Map jsMap = WebUtil.getLoginUser(request).getRoleMap(); Map paramMap = new HashMap(); StringBuilder builder = new StringBuilder(); paramMap.put("ysc", Constants.WORKFLOW_BASE_WFSTATE_DELETE); paramMap.put("userId", userId); /** * 查询逻辑 * 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的, * 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的) * 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个) * 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个) * 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复) */ String flowstate = request.getParameter("flowstate"); if (StringUtil.notEmpty(flowstate)) { if (flowstate.equals("1")) { builder.append(" SELECT DISTINCT D.* FROM ( "); //查询处理人是我的 builder.append(" SELECT B.BUSINESS_ID, B.BUSINESSTYPE, B.CREATERID, B.CREATERNAME, B.CREATETIME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_NODE_ID, B.CURRENT_NODE_NAME, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.DEAL_TYPE, B.ENDTIME, B.ID, B.MAINFLOWID, B.ORDER_CODE, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_ID, B.SUB_CUSTOMER_NAME, B.WF_TEMPLATE_ID, B.WFNAME, B.WFSTATE, B.WORKFLOWTYPE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl "); builder.append(")D"); paramMap.put("jddcl", Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE); } else if (flowstate.equals("2")) { builder.append(" SELECT DISTINCT D.* FROM ( "); builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz"); builder.append(")D"); paramMap.put("jdjxz", Constants.WORKFLOW_NODE_FLOWSTATE_DOING); } else { builder.append(" SELECT DISTINCT D.* FROM ( "); builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc "); builder.append(")D"); paramMap.put("jdywc", Constants.WORKFLOW_NODE_FLOWSTATE_FINISH); } } else { builder.append(" SELECT DISTINCT D.* FROM ( "); //查询处理人是我的 builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId "); builder.append(")D"); } builder.append(" WHERE 1=1 "); String project_Id = request.getParameter("project_Id"); if (!StringUtil.isEmpty(project_Id)) { builder.append(" AND D.PROJECT_ID = :project_Id "); paramMap.put("project_Id", project_Id); } String customerId = request.getParameter("customerId"); if (StringUtil.notEmpty(customerId)) { builder.append(" AND D.CUSTOMER_ID = :customerId "); paramMap.put("customerId", customerId); } String subCustomerId = request.getParameter("subCustomerId"); if (StringUtil.notEmpty(subCustomerId)) { builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId "); paramMap.put("subCustomerId", subCustomerId); } String status = request.getParameter("status"); if (StringUtil.notEmpty(status)) { builder.append(" AND D.WFSTATE = :status "); paramMap.put("status", status); } String orderName = request.getParameter("orderName"); if (StringUtil.notEmpty(orderName)) { builder.append(" AND D.WFNAME LIKE :orderName "); paramMap.put("orderName", "%" + orderName + "%"); } String hjName = request.getParameter("hjName"); if (StringUtil.notEmpty(hjName)) { builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName "); paramMap.put("hjName", "%" + hjName + "%"); } String orderCode = request.getParameter("orderCode"); if (StringUtil.notEmpty(orderCode)) { builder.append(" AND D.ORDER_CODE LIKE :orderCode"); paramMap.put("orderCode", "%" + orderCode + "%"); } String customerName = request.getParameter("customerName"); if (StringUtil.notEmpty(customerName)) { builder.append(" AND D.CUSTOMER_NAME LIKE :customerName "); paramMap.put("customerName", "%" + customerName + "%"); } String contract = request.getParameter("contract"); if (StringUtil.notEmpty(contract)) { builder.append(" AND D.CONTACT_NAME LIKE :contract "); paramMap.put("contract", "%" + contract + "&"); } String pri = request.getParameter("pri"); if (StringUtil.notEmpty(pri)) { String[] pris = pri.split(","); if (pris.length == 1) { builder.append(" AND D.RISK_LEVEL_ID = :priority_id"); paramMap.put("priority_id", pris[0]); } else { builder.append(" AND D.RISK_LEVEL_ID IN ("); for (int i = 0; i < pris.length; i++) { builder.append(" :pri" + i); builder.append(","); paramMap.put("pri" + i, pris[i]); } builder.deleteCharAt(builder.lastIndexOf(",")); builder.append(")"); } } String source = request.getParameter("source"); if (StringUtil.notEmpty(source)) { String[] sources = source.split(","); if (sources.length == 1) { builder.append(" AND D.SOURCE_ID = :type_id"); paramMap.put("type_id", sources[0]); } else { builder.append(" AND D.SOURCE_ID IN ("); for (int i = 0; i < sources.length; i++) { builder.append(" :type" + i); builder.append(","); paramMap.put("type" + i, sources[i]); } builder.deleteCharAt(builder.lastIndexOf(",")); builder.append(")"); } } String sl = request.getParameter("sl"); if (StringUtil.notEmpty(sl)) { String[] sls = sl.split(","); if (sls.length == 1) { builder.append(" AND D.THIRD_CATEGORY_ID = :third_category_id"); paramMap.put("third_category_id", sls[0]); } else { builder.append(" AND D.THIRD_CATEGORY_ID IN ("); for (int i = 0; i < sls.length; i++) { builder.append(" :third_category_id" + i); builder.append(","); paramMap.put("third_category_id" + i, sls[i]); } builder.deleteCharAt(builder.lastIndexOf(",")); builder.append(")"); } } String business = ConvertUtil.obj2Str(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE); builder.append(" AND D.BUSINESSTYPE = " + business); StringBuilder newBuild = new StringBuilder(); newBuild.append("SELECT COUNT(*) FROM ( "); newBuild.append(builder.toString()); newBuild.append(") E"); return baseDao.queryForInteger(newBuild.toString(), paramMap); } @Override public List queryMyChangeData(HttpServletRequest request) { String userId = WebUtil.getLoginedUserId(request); Map jsMap = WebUtil.getLoginUser(request).getRoleMap(); Map paramMap = new HashMap(); StringBuilder builder = new StringBuilder(); paramMap.put("ysc", Constants.WORKFLOW_BASE_WFSTATE_DELETE); paramMap.put("userId", userId); /** * 查询逻辑 * 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的, * 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的) * 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个) * 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个) * 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复) */ String flowstate = request.getParameter("flowstate"); if (StringUtil.notEmpty(flowstate)) { if (flowstate.equals("1")) { builder.append(" SELECT D.* FROM ( "); //查询处理人是我的 builder.append(" SELECT C.RISK_LEVEL_NAME,C.CREATE_TIME,B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId "); builder.append(")D"); builder.append(" AND D.FLOWSTATE = :jddcl "); paramMap.put("jddcl", Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE); } else if (flowstate.equals("2")) { builder.append(" SELECT D.* FROM ( "); builder.append(" SELECT C.RISK_LEVEL_NAME,C.CREATE_TIME,B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz"); builder.append(")D"); paramMap.put("jdjxz", Constants.WORKFLOW_NODE_FLOWSTATE_DOING); } else { builder.append(" SELECT D.* FROM ( "); builder.append(" SELECT DISTINCT C.RISK_LEVEL_NAME,B.*,C.CREATE_TIME,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc "); builder.append(")D"); paramMap.put("jdywc", Constants.WORKFLOW_NODE_FLOWSTATE_FINISH); } } else { builder.append(" SELECT D.* FROM ( "); //查询处理人是我的 builder.append(" SELECT C.RISK_LEVEL_NAME,B.*,A.FLOWSTATE,C.CREATE_TIME,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId "); builder.append(")D"); } builder.append(" WHERE 1=1 "); String project_Id = request.getParameter("project_Id"); if (!StringUtil.isEmpty(project_Id)) { builder.append(" AND D.PROJECT_ID = :project_Id "); paramMap.put("project_Id", project_Id); } String customerId = request.getParameter("customerId"); if (StringUtil.notEmpty(customerId)) { builder.append(" AND D.CUSTOMER_ID = :customerId "); paramMap.put("customerId", customerId); } String subCustomerId = request.getParameter("subCustomerId"); if (StringUtil.notEmpty(subCustomerId)) { builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId "); paramMap.put("subCustomerId", subCustomerId); } String status = request.getParameter("status"); if (StringUtil.notEmpty(status)) { builder.append(" AND D.WFSTATE = :status "); paramMap.put("status", status); } String orderName = request.getParameter("orderName"); if (StringUtil.notEmpty(orderName)) { builder.append(" AND D.WFNAME LIKE :orderName "); paramMap.put("orderName", "%" + orderName + "%"); } String hjName = request.getParameter("hjName"); if (StringUtil.notEmpty(hjName)) { builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName "); paramMap.put("hjName", "%" + hjName + "%"); } String orderCode = request.getParameter("orderCode"); if (StringUtil.notEmpty(orderCode)) { builder.append(" AND D.ORDER_CODE LIKE :orderCode"); paramMap.put("orderCode", "%" + orderCode + "%"); } String customerName = request.getParameter("customerName"); if (StringUtil.notEmpty(customerName)) { builder.append(" AND D.CUSTOMER_NAME LIKE :customerName "); paramMap.put("customerName", "%" + customerName + "%"); } String contract = request.getParameter("contract"); if (StringUtil.notEmpty(contract)) { builder.append(" AND D.CONTACT_NAME LIKE :contract "); paramMap.put("contract", "%" + contract + "%"); } String pri = request.getParameter("pri"); if (StringUtil.notEmpty(pri)) { String[] pris = pri.split(","); if (pris.length == 1) { builder.append(" AND D.RISK_LEVEL_ID = :priority_id"); paramMap.put("priority_id", pris[0]); } else { builder.append(" AND D.RISK_LEVEL_ID IN ("); for (int i = 0; i < pris.length; i++) { builder.append(" :pri" + i); builder.append(","); paramMap.put("pri" + i, pris[i]); } builder.deleteCharAt(builder.lastIndexOf(",")); builder.append(")"); } } String source = request.getParameter("source"); if (StringUtil.notEmpty(source)) { String[] sources = source.split(","); if (sources.length == 1) { builder.append(" AND D.SOURCE_ID = :type_id"); paramMap.put("type_id", sources[0]); } else { builder.append(" AND D.SOURCE_ID IN ("); for (int i = 0; i < sources.length; i++) { builder.append(" :type" + i); builder.append(","); paramMap.put("type" + i, sources[i]); } builder.deleteCharAt(builder.lastIndexOf(",")); builder.append(")"); } } String sl = request.getParameter("sl"); if (StringUtil.notEmpty(sl)) { String[] sls = sl.split(","); if (sls.length == 1) { builder.append(" AND D.THIRD_CATEGORY_ID = :third_category_id"); paramMap.put("third_category_id", sls[0]); } else { builder.append(" AND D.THIRD_CATEGORY_ID IN ("); for (int i = 0; i < sls.length; i++) { builder.append(" :third_category_id" + i); builder.append(","); paramMap.put("third_category_id" + i, sls[i]); } builder.deleteCharAt(builder.lastIndexOf(",")); builder.append(")"); } } String startDate = request.getParameter("startDate"); if (StringUtil.notEmpty(startDate)) { builder.append(" AND D.CREATE_TIME >= :startDate "); paramMap.put("startDate", startDate + "000000"); } String endDate = request.getParameter("endDate"); if (StringUtil.notEmpty(startDate)) { builder.append(" AND D.CREATE_TIME <= :endDate "); paramMap.put("endDate", endDate + "666666"); } String business = ConvertUtil.obj2Str(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE); builder.append(" AND D.BUSINESSTYPE = " + business); String pageSize = request.getParameter("pageSize"); String currPage = request.getParameter("currPage"); if (!StringUtil.notEmptyNum(pageSize)) { pageSize = "10"; } if (!StringUtil.notEmptyNum(currPage)) { currPage = "1"; } int begin = Integer.valueOf(currPage); int size = Integer.valueOf(pageSize); if (!StringUtil.notEmpty(flowstate)) { builder.append(" ORDER BY D.CREATETIME DESC"); List result = baseDao.queryForList(builder.toString(), paramMap); List resultList = new ArrayList(); List list = new ArrayList(); Map cacheMap = new HashMap(); if (null != result && result.size() > 0) { for (Map m : result) { String flowId = ConvertUtil.obj2StrBlank(m.get("ID")); if (cacheMap.containsKey(flowId)) { String flowState = ConvertUtil.obj2StrBlank(m.get("FLOWSTATE")); if (flowState.equals(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE.toString()) || flowState.equals(Constants.WORKFLOW_NODE_FLOWSTATE_DOING.toString())) { cacheMap.put(flowId, m); if (!list.contains(flowId)) { list.add(flowId); } } } else { cacheMap.put(flowId, m); list.add(flowId); } } if (cacheMap.size() > 0) { for (String str : list) { resultList.add(cacheMap.get(str)); } } } int infoCount = resultList.size(); int bin = (begin - 1) * size; int end = (begin - 1) * size + size; if (end > infoCount) { end = infoCount; } return resultList.subList(bin, end); } else { builder.append(" ORDER BY D.CREATETIME DESC "); List result = baseDao.queryforSplitPage(request, builder.toString(), paramMap); return result; } } @Override public Map getChangeMsgById(String orderId) { Map changeMap = new SC_WORKFLOW_CHANGE(orderId).getBeanMapById(); //查询当前节点能是否能关闭工单 Map param = new HashMap(); param.put("partnerId", changeMap.get("PARTNER_ID")); param.put("projectId", changeMap.get("PROJECT_ID")); param.put("rolu_type", changeMap.get("TYPE")); changeMap.put("closejd", ""); changeMap.put("backjd", ""); return changeMap; } @Override public Map queryChangeBaseMsg(String partnerId, String orderId) { String selectSql = "SELECT A.*,N.ANSWER_TIME FROM SC_WORKFLOW_CHANGE A LEFT JOIN WORKFLOW_BASE B ON A.ID = B.BUSINESS_ID LEFT JOIN WORKFLOW_NODE N ON B.CURRENT_NODE_ID = N.ID WHERE A.ID = :orderId AND A.PARTNER_ID = :partnerId "; Map baseMap = baseDao.queryForMap(selectSql, new SqlParameter("orderId", orderId).addValue("partnerId", partnerId)); if (null != baseMap && baseMap.size() > 0) { //查询附件 List files = fileService.getFileList(orderId); baseMap.put("files", files); } return baseMap; } public String anwerSubmit(HttpServletRequest request) { WORKFLOW_BASE base = new WORKFLOW_BASE(request.getParameter("flowId")).getInstanceById(); WORKFLOW_NODE node = new WORKFLOW_NODE(request.getParameter("nodeId")).getInstanceById(); NodeAnswerEntity entity = new NodeAnswerEntity(); Map user = WebUtil.getLoginUser(request).getLoginUser(); entity.setUser_id(user.get("ID").toString()); entity.setUser_name(user.get("ZSXM").toString()); boolean result = workflowCoreService.answerNode(base, node, entity); //工单响应 if (!result) { return "2"; } else { return "1"; } } @Override public Map getPsResult(String orderId) { SC_WORKFLOW_CHANGE change = new SC_WORKFLOW_CHANGE(orderId).getInstanceById(); String pssql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :psnode_template_id ORDER BY DEALTIME "; String sssql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :ssnode_template_id ORDER BY DEALTIME "; String sspssql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :sspsnode_template_id ORDER BY DEALTIME "; Map param = new HashMap(); param.put("flowid", change.getFlow_id()); param.put("psnode_template_id", Constants.CCBSP); param.put("ssnode_template_id", Constants.BGSH); param.put("sspsnode_template_id", Constants.BGHG); List psList = baseDao.queryForList(pssql, param); List ssList = baseDao.queryForList(sssql, param); List sspsList = baseDao.queryForList(sspssql, param); String psstarttime = ""; String psendtime = ""; String psuser = ""; String psresult = ""; String ssstarttime = ""; String ssendtime = ""; String ssuser = ""; String ssresult = ""; String sspsstarttime = ""; String sspsendtime = ""; String sspsuser = ""; String sspsresult = ""; if (psList.size() > 0) { for (Map map : psList) { if ("1".equals(ConvertUtil.obj2StrBlank(map.get("IS_ADMIN")))) { psstarttime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME")); psendtime = ConvertUtil.obj2StrBlank(map.get("DEALTIME")); psresult = ConvertUtil.obj2StrBlank(map.get("DEAL_NOTE")); } psuser = psuser + ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME")) + ","; } psuser = psuser.substring(0, psuser.length() - 1); } if (ssList.size() > 0) { for (Map map : ssList) { if ("1".equals(ConvertUtil.obj2StrBlank(map.get("IS_ADMIN")))) { ssstarttime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME")); ssendtime = ConvertUtil.obj2StrBlank(map.get("DEALTIME")); ssresult = ConvertUtil.obj2StrBlank(map.get("DEAL_NOTE")); } ssuser = ssuser + ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME")) + ","; } ssuser = ssuser.substring(0, ssuser.length() - 1); } if (sspsList.size() > 0) { for (Map map : sspsList) { if ("1".equals(ConvertUtil.obj2StrBlank(map.get("IS_ADMIN")))) { sspsstarttime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME")); sspsendtime = ConvertUtil.obj2StrBlank(map.get("DEALTIME")); sspsresult = ConvertUtil.obj2StrBlank(map.get("DEAL_NOTE")); } sspsuser = sspsuser + ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME")) + ","; } sspsuser = sspsuser.substring(0, sspsuser.length() - 1); } Map result = new HashMap(); result.put("psstarttime", psstarttime); result.put("psendtime", psendtime); result.put("psuser", psuser); result.put("psresult", psresult); result.put("ssstarttime", ssstarttime); result.put("ssendtime", ssendtime); result.put("ssuser", ssuser); result.put("ssresult", ssresult); result.put("sspsstarttime", sspsstarttime); result.put("sspsendtime", sspsendtime); result.put("sspsuser", sspsuser); result.put("sspsresult", sspsresult); return result; } @Override public Map getCcbRule(String proId, String partner_id) { Map param = new HashMap(); param.put("project_id", proId); param.put("partner_id", partner_id); String sql = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRULE WHERE PROJECT_ID = :project_id "; Map ccbMap = baseDao.queryForMap(sql, param); if (StringUtil.isEmpty(ConvertUtil.obj2StrBlank(ccbMap.get("ID")))) { String sqlpartner = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRULE WHERE PROJECT_ID IS NULL AND PARTNER_ID = :partner_id "; ccbMap = baseDao.queryForMap(sqlpartner, param); } return ccbMap; } @Override public Map saveCcbEndResult(HttpServletRequest request) { String flowId = request.getParameter("flowId"); String resolve = request.getParameter("resolve"); String suggest = request.getParameter("suggest"); String proId = request.getParameter("projectId"); String nodeId = request.getParameter("nodeId"); String partnerId = ""; //ccb评审规则 Map ccbrule = getCcbRule(proId, partnerId); double bfjpz = 0; double bfb = 0; int is_tg = 0; if (!StringUtil.isEmpty(ConvertUtil.obj2StrBlank(ccbrule.get("ID")))) { String userId = WebUtil.getLoginedUserId(request); String userName = ConvertUtil.obj2StrBlank(WebUtil.getLoginUser(request).getLoginUser().get("ZSXM")); //保存评审结果 Map param = new HashMap(); param.put("flow_id", flowId); param.put("create_id", userId); // baseDao.execute("DELETE FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id AND CREATE_ID =:create_id ", param); SC_WORKFLOW_CHANGE_CCBRESULT result = new SC_WORKFLOW_CHANGE_CCBRESULT(); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); String sameKey = node.getSame_node_key(); param.put("sameKey", sameKey); String sqla = "SELECT MAX(NUM) FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID=:flow_id"; String number = baseDao.queryForString(sqla, param); String sqlb = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY=:sameKey"; Map mapr = baseDao.queryForMap(sqlb, param); int num = 0; if (number == null) { num = 1; } else { num = Integer.parseInt(number) + 1; } param.put("num", num); if (mapr.size() > 0) { num = ConvertUtil.obj2Int(mapr.get("NUM")); } result.setFlow_id(flowId).setResult(ConvertUtil.obj2Integer(resolve)).setSuggest(suggest) .setIs_end(2).setIs_main(1).setCreate_id(userId).setCreate_name(userName) .setSamekey(sameKey).setNum(num).insert(); //获取所有评审结果 List ccbList = getCcbResult(flowId); List ccb = (List) ccbList.get(ccbList.size() - 1).get("result"); int count = 0; for (Map map : ccb) { if (ConvertUtil.obj2Integer(ccbrule.get("TGTJ")) == 2) { bfjpz = ConvertUtil.obj2Double(ccbrule.get("BFJ")); //计算通过百分比 if (ConvertUtil.obj2Integer(map.get("RESULT")) == 1) { count = count + 1; } } } if(ccb.size()>0){ if (ConvertUtil.obj2Integer(ccbrule.get("TGTJ")) == 2) { bfb = NumberUtil.div(ConvertUtil.obj2Double(count), ConvertUtil.obj2Double(ccb.size()), 3); bfb = NumberUtil.mul(bfb, 100.0); if (bfb >= bfjpz) { is_tg = 1; } ccbrule.put("is_tg", is_tg); } } // baseDao.execute("DELETE FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id AND IS_END = 1 ", param); SC_WORKFLOW_CHANGE_CCBRESULT resultmain = new SC_WORKFLOW_CHANGE_CCBRESULT(); if (ConvertUtil.obj2Integer(ccbrule.get("TGTJ")) == 2) { if (is_tg == 1) { resultmain.setResult(1); if (bfb == bfjpz) { resultmain.setSuggest("通过率为" + bfb + "%,等于" + bfjpz + "%,评审通过"); } else if (bfb > bfjpz) { resultmain.setSuggest("通过率为" + bfb + "%,大于" + bfjpz + "%,评审通过"); } } else { resultmain.setResult(2); resultmain.setSuggest("通过率为" + bfb + "%,小于" + bfjpz + "%,评审不通过"); } } else { if ("1".equals(resolve)) { resultmain.setResult(1); resultmain.setSuggest("主负责人通过则评审通过"); } else { resultmain.setResult(2); resultmain.setSuggest("主负责人不通过则评审不通过"); } } resultmain.setIs_main(2).setFlow_id(flowId).setIs_end(1).setCreate_name("系统生成"). setSamekey(sameKey).setNum(num).insert(); } else { ccbrule.put("norule", "1"); } return ccbrule; } @Override public List getCcbResult(String flowId) { String sqla = "SELECT SAMEKEY,NUM FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY,NUM ORDER BY NUM "; List fzList = baseDao.queryForList(sqla, new SqlParameter("flow_id", flowId)); for (Map mapa : fzList) { String sqlb = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY=:sameKey ORDER BY IS_END ,IS_MAIN"; List ccbList = baseDao.queryForList(sqlb, new SqlParameter("sameKey", mapa.get("SAMEKEY"))); for (Map map : ccbList) { if (ConvertUtil.obj2Integer(map.get("RESULT")) == 1) { map.put("RESULT_TEXT", "通过"); } else if (ConvertUtil.obj2Integer(map.get("RESULT")) == 2) { map.put("RESULT_TEXT", "不通过"); } if (ConvertUtil.obj2Integer(map.get("IS_END")) == 1) { map.put("IS_END_TEXT", "是"); } else if (ConvertUtil.obj2Integer(map.get("IS_END")) == 2) { map.put("IS_END_TEXT", "否"); } } mapa.put("result", ccbList); } return fzList; } @Override public List getCcbTjResult(String flowId) { Map param = new HashMap(); param.put("flow_id", flowId); String sqla="SELECT SAMEKEY,NUM FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY,NUM ORDER BY NUM"; List ccbList = baseDao.queryForList(sqla,param); for(Map mapa:ccbList){ param.put("sameKey", mapa.get("SAMEKEY")); String sql = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY = :sameKey "; List resultList = baseDao.queryForList(sql,param); //通过人数 int tgnum = 0; //反对人数 int fdnum = 0; //通过率 double tgrate = 0; //评审结果 int result = 0 ; //处理结果数量 int resultNum = 0 ; for(Map map:resultList){ if(ConvertUtil.obj2Integer(map.get("RESULT"))==1 && ConvertUtil.obj2Integer(map.get("IS_END"))!=1){ tgnum = tgnum + 1; }else if(ConvertUtil.obj2Integer(map.get("RESULT"))==2 && ConvertUtil.obj2Integer(map.get("IS_END"))!=1){ fdnum = fdnum + 1; } if(ConvertUtil.obj2Integer(map.get("IS_END"))==1){ result = ConvertUtil.obj2Integer(map.get("RESULT")); } } //主负责人没处理 if(result == 0){ resultNum = resultList.size(); }else{ resultNum = resultList.size()-1; } if(resultNum != 0){ //CCB评审人数 String sqlcount = "SELECT DISTINCT CURRENT_DEALER_ID FROM WORKFLOW_NODE WHERE FLOWID = :flow_id AND NODE_TEMPLATE_ID = :node_template_id AND SAME_NODE_KEY=:sameKey"; param.put("node_template_id", Constants.CCBSP); List usercount = baseDao.queryForList(sqlcount, param); tgrate = NumberUtil.div(ConvertUtil.obj2Double(tgnum),ConvertUtil.obj2Double(usercount.size()) , 3); tgrate = NumberUtil.mul(tgrate, 100.0); } Map resultMap = new HashMap(); mapa.put("tgnum", tgnum); mapa.put("tgrate", tgrate); mapa.put("result", result); mapa.put("fdnum", fdnum); } return ccbList; } @Override public String issave(HttpServletRequest request) { String nodeId = request.getParameter("nodeId"); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); List nodeList = baseDao.queryForList("select * from WORKFLOW_NODE where FLOWID=:FLOWID and NODE_TEMPLATE_ID=:NODE_TEMPLATE_ID and FLOWSTATE <> 3 and ID <> :NODEID", new SqlParameter("FLOWID",node.getFlowid()).addValue("NODEID", nodeId).addValue("NODE_TEMPLATE_ID", node.getNode_template_id())); String result=""; //如果存在其他环节,且当前环节是主负责人,不可以关闭 if (nodeList.size() > 0 && node.getIs_admin() != null) { for(Map map:nodeList){ result+=ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME"))+","; } }else if(nodeList.size() == 0 && node.getIs_admin() == 1){ result = "0"; }else { result = "2"; } return result; } public Map getCurrentNode(String flowId) { String selectSql = "SELECT B.NODE_TEMPLATE_ID FROM WORKFLOW_BASE A,WORKFLOW_NODE B WHERE A.CURRENT_NODE_ID = B.ID AND A.ID = :id"; return baseDao.queryForMap(selectSql,new SqlParameter("id",flowId)); } @Override public Map updateAssign(HttpServletRequest request) { Map resultMap = new HashMap(); resultMap.put("result", 2); String partnerId = ""; String id = request.getParameter("flowId"); String selectUser = request.getParameter("alluserid"); String usertype = request.getParameter("type"); String nextnodeid = request.getParameter("node"); String bz = request.getParameter("bz"); String resolve = request.getParameter("resolve"); String result = request.getParameter("result"); String release_order = request.getParameter("release_order"); String is_notice = request.getParameter("is_notice"); String curnodeId = request.getParameter("curnodeId"); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); WORKFLOW_BASE base = new WORKFLOW_BASE(id).getInstanceById(); SC_WORKFLOW_CHANGE mychange = new SC_WORKFLOW_CHANGE(base.getBusiness_id()).getInstanceById(); //获取当前所处的节点 Map flowMsg = getFlowMsg(id,userId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); String dealUserId = new String(); String dealUserName = new String(); String state = new String(); String type = new String(); String node_template_id = Constants.BGSQ; if(StringUtil.notEmpty(selectUser)) { if(usertype.equals("3")){ usertype = "1"; } node_template_id = nextnodeid; Map param = new HashMap(); param.put("ID", StringUtil.getUUID()); param.put("WORKFLOWID", id); param.put("PNAME", "处理人"); param.put("PVALUE", usertype+"&"+selectUser); state = "1"; } if(StringUtil.notEmpty(selectUser)) { //执行分派任务 NodeDealEntity entity = new NodeDealEntity(); entity.setDealer_type(3); List dealerList = new ArrayList(); if(usertype.equals("1")) { entity.setBefore_Dealer_type(2); String[] userList2 = selectUser.split(","); for(int i=0;i params) { String flowId = params.get("flowId"); String nodeId = params.get("nodeId"); String userId = params.get("userId"); String userName = params.get("userName"); params.put("templateId", Constants.BGSQ); String sql = " select b.business_id,n.current_dealer_id,n.current_dealer_name from workflow_base b,workflow_node n where b.id = n.flowid" + " and b.id = :flowId and n.node_template_id = :templateId order by n.createtime limit 1 "; Map startNode = baseDao.queryForMap(sql.toString(), params); String orderId = ConvertUtil.obj2StrBlank(startNode.get("business_id")); String dealId = ConvertUtil.obj2StrBlank(startNode.get("current_dealer_id")); String dealName = ConvertUtil.obj2StrBlank(startNode.get("current_dealer_name")); List userList = new ArrayList(); Map user = new HashMap(); user.put("USER_ID",dealId); user.put("USER_NAME",dealName); user.put("IS_ADMIN","1"); userList.add(user); WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setNextUserList(userList); support.setOrderId(orderId); support.setNextNodeTemplateId(Constants.BGSQ); support.setUserName(userName); support.setUserId(userId); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE); SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); return msg; } @Override public Map queryChangeCcbConfig(HttpServletRequest request) { String selectSql = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRULE WHERE CUSTOMER_ID IS NULL AND PROJECT_ID IS NULL AND PARTNER_ID = :partner_id "; Map map = baseDao.queryForMap(selectSql,new SqlParameter("partner_id","")); return map; } @Override public void saveChangeCcbConfig(HttpServletRequest request) { String tgtj = request.getParameter("tgtj"); String tgbfj = request.getParameter("tgbfj"); String lzfa = request.getParameter("lzfa"); String updateSql = ""; String id = request.getParameter("id"); if(StringUtil.isEmpty(id)){ id = StringUtil.getUUID(); updateSql = "INSERT INTO SC_WORKFLOW_CHANGE_CCBRULE(ID,TGTJ,BFJ,LZFA,PARTNER_ID) VALUES(:id,:tgtj,:tgbfj,:lzfa,:partner_id)"; } else { updateSql = "UPDATE SC_WORKFLOW_CHANGE_CCBRULE SET TGTJ = :tgtj,BFJ=:tgbfj,LZFA=:lzfa WHERE ID = :id "; } Map paramMap = new HashMap(); paramMap.put("id", id); paramMap.put("tgtj", tgtj); paramMap.put("tgbfj", tgbfj); paramMap.put("lzfa", lzfa); paramMap.put("partner_id", ""); baseDao.execute(updateSql, paramMap); } @Override public Map getNextNode(String flowId) { Map nodeMap = new HashMap(); nodeMap.put("userId", ""); nodeMap.put("userName", ""); StringBuilder sql = new StringBuilder("select b.node_template_id from workflow_base a,workflow_node b where a.current_node_id = b.id and a.id = :flowId ORDER BY b.CREATETIME DESC"); String templateId = baseDao.queryForString(sql.toString(), new SqlParameter("flowId", flowId)); if (templateId.equals(Constants.BGSQ)) { nodeMap.put("nodeId", Constants.BGSL); nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGSL)); }else if(templateId.equals(Constants.BGSL)) { nodeMap.put("nodeId", Constants.CCBSP); nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.CCBSP)); }else if(templateId.equals(Constants.CCBSP)) { nodeMap.put("nodeId", Constants.BGSP); nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGSP)); }else if(templateId.equals(Constants.BGSP)) { sql.setLength(0); //查询创建人 Map user = queryUserByTemplateId(flowId,Constants.BGSQ); nodeMap.put("userId", user.get("current_dealer_id")); nodeMap.put("userName", user.get("current_dealer_name")); nodeMap.put("nodeId", Constants.BGZX); nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGZX)); }else if(templateId.equals(Constants.BGZX)) { nodeMap.put("nodeId", Constants.BGSH); nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGSH)); }else if(templateId.equals(Constants.BGSH)) { Map user = queryUserByTemplateId(flowId,Constants.BGSL); nodeMap.put("userId", user.get("current_dealer_id")); nodeMap.put("userName", user.get("current_dealer_name")); nodeMap.put("nodeId", Constants.BGHG); nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGHG)); } return nodeMap; } public Map queryUserByTemplateId(String flowId,String templateId){ String sql = " select n.current_dealer_id,n.current_dealer_name from workflow_base b,workflow_node n where b.id = n.flowid" + " and b.id=:flowId and n.node_template_id = :templateId and is_admin=1 order by n.createtime DESC limit 1 "; SqlParameter sqlParameter = new SqlParameter(); sqlParameter.addValue("templateId", templateId) .addValue("flowId", flowId); return baseDao.queryForMap(sql, sqlParameter); } @Override public void orderSubmit(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String solveWay = ""; String solveWayName = request.getParameter("solveWayName"); String solve = request.getParameter("solve"); if (solve.equals("1")) { solveWay = request.getParameter("solveWay"); } else { solveWay = request.getParameter("solveWay1"); } String content = request.getParameter("content"); String state = ""; if ("1".equals(solve)) { state = Constants.SC_WORKFLOW_CHANGE_STATE_YJJ; } else { state = Constants.SC_WORKFLOW_CHANGE_STATE_YGB; } //修改变更信息的解决方式 SC_WORKFLOW_CHANGE change = new SC_WORKFLOW_CHANGE(orderId).getInstanceById(); change.setId(orderId).setResolve(ConvertUtil.obj2Integer(solve)).setResolve_type_id(solveWay).setResolve_type_name(solveWayName).setState(ConvertUtil.obj2Integer(state)).update(); //添加处理记录 Map user = WebUtil.getLoginUser(request).getLoginUser(); String createUserId = ConvertUtil.obj2StrBlank(user.get("ID")); String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId, createUserId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //添加修改信息处理记录 String id = StringUtil.getUUID(); GG_RECORD record = new GG_RECORD(); record.setDeal_content("结束变更:" + createUserName + "结束了变更工单"); record.setDeal_time(DateUtil.getCurrentDate14()); // record.setDeal_user_id(createUserId); record.setDeal_user_name(createUserName); record.setBusiness_id(flowId); record.setNode_id(nodeid).setNode_name(nodeName); recordService.addRecord(record); fileService.uploadFile(request, id, flowId, null, null); fileService.newuploadFileAll(request,id,flowId,Constants.GG_FOLDERS_BGFOLDERS,Constants.FILE_STATE_SHTG,"",change.getCustomer_id(),change.getProject_id(),change.getProject_name(),change.getCustomer_name()); /*if("1".equals(solve)){ //流程结束,将变更中的配置信息存档,修改正式库中的信息,并将相应的正式库的版本号+1 propformFacade.updateConfigMsg(flowId); //配置关系保存到记录表-结束工单 saveRelationWhenClose(flowId); //保存配置关系-结束工单 updateRelationWhenFinish(flowId); //删除变更中的配置关系-结束工单 delRelationWhenClose(flowId); //保存DSL资料修改 saveDsl(flowId); //保存关联DSL变更到记录表--结束工单 dslFacade.saveConfigDslDealRecord(flowId); //保存关联DSL-结束工单 dslFacade.updateConfigDslWhenFinish(flowId); }else{ //配置关系保存到记录表-关闭工单 saveRelationWhenClose(flowId); //删除变更中的配置关系-关闭工单 delRelationWhenClose(flowId); //保存关联DSL变更到记录表--关闭工单 dslFacade.saveConfigDslDealRecord(flowId); //恢复关联DSL-关闭工单 dslFacade.updateConfigDslWhenClose(flowId); //恢复DSL资料 delDslMsg(flowId); }*/ WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(createUserName + "结束节点"); finishEntity.setDeal_note(content); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); //关闭当前节点 workflowCoreService.finishNode(base, node, finishEntity); if ("1".equals(solve)) { workflowCoreService.finishWorkFlow(base); } else { workflowCoreService.closeWorkFlow(base); } } @Override public void saveRelationWhenClose(String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); //变更中的操作记录 String sql = "SELECT * FROM CMDB_CI_RELATION_ING WHERE BUSINESS_ID = :flowId AND DEAL_TYPE IS NOT NULL "; List recordList = baseDao.queryForList(sql,param); List addparamList = new ArrayList(); for(Map map:recordList){ SqlParameter params = new SqlParameter(); params.putAll(map); String id = StringUtil.getUUID(); params.put("ID", id); params.put("MAINCIID", map.get("MAINID")); if(ConvertUtil.obj2Integer(map.get("DEAL_TYPE")) == 2){ if(!ConvertUtil.obj2Integer(map.get("RELATION_TYPE")).equals(ConvertUtil.obj2Integer(map.get("AFTER_RELATION_TYPE")))){ addparamList.add(params); } }else{ addparamList.add(params); } } //新增配置变更记录 baseDao.executeBatch("INSERT INTO CMDB_CI_RELATION_RECORD(ID,MAINCIID,SUBCIID,BUSINESS_ID,DEAL_TYPE,RELATION_TYPE,AFTER_RELATION_TYPE,DEALER_ID,DEALER_NAME,UPDATE_TIME) VALUES(:ID,:MAINCIID,:SUBCIID,:BUSINESS_ID,:DEAL_TYPE,:RELATION_TYPE,:AFTER_RELATION_TYPE,:DEALER_ID,:DEALER_NAME,:CREATE_TIME) ", addparamList); } @Override public List changeLzRecord(String flowId) { String selectSql = "SELECT DISTINCT N.* FROM WORKFLOW_NODE N WHERE FLOWID = :flowId AND N.IS_ADMIN = 1 ORDER BY CREATETIME DESC "; List lzs = baseDao.queryForList(selectSql,new SqlParameter("flowId",flowId)); if(null!=lzs && lzs.size()>0) { for(Map lz : lzs) { String answer_usertime = ConvertUtil.obj2StrBlank(lz.get("ANSWER_USERTIME")); if(StringUtil.notEmpty(answer_usertime) && !answer_usertime.equals("0")) { String answerTime = DateUtil.getFormatSeconds(ConvertUtil.obj2Int(answer_usertime)); lz.put("ANSWER_USERTIME", answerTime); } String deal_usetime = ConvertUtil.obj2StrBlank(lz.get("DEAL_USETIME")); if(StringUtil.notEmpty(deal_usetime) && !deal_usetime.equals("0")) { String dealTime = DateUtil.getFormatSeconds(ConvertUtil.obj2Int(deal_usetime)); lz.put("DEAL_USETIME", dealTime); } } } return lzs; } @Override public void delRelationWhenClose(String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); //新增配置变更记录 baseDao.execute("DELETE FROM CMDB_CI_RELATION_ING WHERE BUSINESS_ID = :flowId ", param); } @Override public void updateRelationWhenFinish(String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); //变更中的操作记录 String sql = "SELECT * FROM CMDB_CI_RELATION_ING WHERE BUSINESS_ID = :flowId AND DEAL_TYPE IS NOT NULL "; List recordList = baseDao.queryForList(sql,param); List addparamList = new ArrayList(); List updparamList = new ArrayList(); List delparamList = new ArrayList(); for(Map map:recordList){ SqlParameter params = new SqlParameter(); params.putAll(map); params.put("MAINCIID", map.get("MAINID")); if(ConvertUtil.obj2Integer(map.get("DEAL_TYPE")) == 1){ String id = StringUtil.getUUID(); params.put("ID", id); params.put("STATE", 1); addparamList.add(params); } else if(ConvertUtil.obj2Integer(map.get("DEAL_TYPE")) == 2){ if(!ConvertUtil.obj2Integer(map.get("RELATION_TYPE")).equals(ConvertUtil.obj2Integer(map.get("AFTER_RELATION_TYPE")))){ updparamList.add(params); } }else{ delparamList.add(params); } } //保存配置关系变更 baseDao.executeBatch("DELETE FROM CMDB_CI_RELATION WHERE MAINCIID = :MAINCIID AND SUBCIID = :SUBCIID ", delparamList); baseDao.executeBatch("UPDATE CMDB_CI_RELATION SET RELATION = :AFTER_RELATION_TYPE WHERE MAINCIID = :MAINCIID AND SUBCIID = :SUBCIID ", updparamList); baseDao.executeBatch("INSERT INTO CMDB_CI_RELATION(ID,MAINCIID,SUBCIID,BUSINESS_ID,RELATION,STATE,CREATE_TIME) VALUES(:ID,:MAINCIID,:SUBCIID,:BUSINESS_ID,:AFTER_RELATION_TYPE,:STATE,:CREATE_TIME) ", addparamList); } @Override public List queryChangeOrderList(HttpServletRequest request) { String partner_id = ""; StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT B.DESCRIP,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE,C.FLOWSTATE ,WB.CURRENT_DEALER_NAME,B.RISK_LEVEL_NAME, "); sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE "); sql.append(" FROM SC_WORKFLOW_CHANGE B ,WORKFLOW_BASE WB LEFT JOIN WORKFLOW_NODE C ON C.FLOWID = WB.ID AND WB.CURRENT_NODE_ID = C.ID "); sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID "); Map paramMap = new HashMap(); String business = ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE); sqlpart.append(" AND WB.BUSINESSTYPE = "+business); //========================================================================不同服务台的权限控制 //只有服务台和管理人员才可以看到所有的工单,(所以查询当前的用户属于那种服务台) List customers = incidentFacade.getCustomerList(); String project_Id = request.getParameter("project_Id"); String customerid = request.getParameter("customerId"); if(!StringUtil.isEmpty(project_Id)){ sqlpart.append(" AND B.PROJECT_ID = :project_Id "); paramMap.put("project_Id",project_Id); } if(StringUtil.notEmpty(customerid)) { sqlpart.append(" AND B.CUSTOMER_ID = :customerId "); paramMap.put("customerId", customerid); } //========================================================================不同服务台的权限控制 String subCustomerId = request.getParameter("subCustomerId"); if(StringUtil.notEmpty(subCustomerId)) { sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId "); paramMap.put("subCustomerId", subCustomerId); } String orderName = request.getParameter("orderName"); if(StringUtil.notEmpty(orderName)) { sqlpart.append(" AND B.NAME LIKE :orderName "); paramMap.put("orderName", "%"+orderName+"%"); } String orderCode = request.getParameter("orderCode"); if(StringUtil.notEmpty(orderCode)) { sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode "); paramMap.put("orderCode", "%"+orderCode+"%"); } String contract = request.getParameter("contract"); if(StringUtil.notEmpty(contract)) { sqlpart.append(" AND B.CONTACT_NAME LIKE :contract "); paramMap.put("contract", "%"+contract+"%"); } String pri = request.getParameter("pri"); if(StringUtil.notEmpty(pri)) { String[] pris = pri.split(","); if(pris.length==1) { sqlpart.append(" AND B.RISK_LEVEL_ID = :priority_id"); paramMap.put("priority_id", pris[0]); } else { sqlpart.append(" AND B.RISK_LEVEL_ID IN ("); for(int i=0; i 3 " ); sqlpart.append("WHERE WB.BUSINESS_ID = B.ID "); Map paramMap = new HashMap(); //========================================================================不同服务台的权限控制 //只有服务台和管理人员才可以看到所有的工单,(所以查询当前的用户属于那种服务台) List customers = incidentFacade.getCustomerList(); String project_Id = request.getParameter("project_Id"); String customerid = request.getParameter("customerId"); if(!StringUtil.isEmpty(project_Id)){ sqlpart.append(" AND B.PROJECT_ID = :project_Id "); paramMap.put("project_Id",project_Id); } if(StringUtil.notEmpty(customerid)) { sqlpart.append(" AND B.CUSTOMER_ID = :customerId "); paramMap.put("customerId", customerid); } String subCustomerId = request.getParameter("subCustomerId"); if(StringUtil.notEmpty(subCustomerId)) { sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId "); paramMap.put("subCustomerId", subCustomerId); } String orderName = request.getParameter("orderName"); if(StringUtil.notEmpty(orderName)) { sqlpart.append(" AND B.NAME LIKE :orderName "); paramMap.put("orderName", "%"+orderName+"%"); } String orderCode = request.getParameter("orderCode"); if(StringUtil.notEmpty(orderCode)) { sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode "); paramMap.put("orderCode", "%"+orderCode+"%"); } String contract = request.getParameter("contract"); if(StringUtil.notEmpty(contract)) { sqlpart.append(" AND B.CONTACT_NAME LIKE :contract "); paramMap.put("contract", "%"+contract+"%"); } String pri = request.getParameter("pri"); if(StringUtil.notEmpty(pri)) { String[] pris = pri.split(","); if(pris.length==1) { sqlpart.append(" AND B.RISK_LEVEL_ID = :priority_id"); paramMap.put("priority_id", pris[0]); } else { sqlpart.append(" AND B.RISK_LEVEL_ID IN ("); for(int i=0; i nodesList = baseDao.queryForList("SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND SAME_NODE_KEY = :same_node_key ",new SqlParameter("flowid",flowId).addValue("same_node_key", node.getSame_node_key())); //回退时,关闭所有节点 for(Map nodes:nodesList){ WORKFLOW_NODE nodeid = new WORKFLOW_NODE(ConvertUtil.obj2StrBlank(nodes.get("ID"))); nodeid.setDealtime(ConvertUtil.obj2Long(nodes.get("DEALTIME"))).setAnswer_time(ConvertUtil.obj2Long(nodes.get("ANSWER_TIME"))); workflowCoreService.finishNode(base,nodeid , finishEntity); } String state = "1"; //更新状态 String updateSql = "UPDATE SC_WORKFLOW_CHANGE SET STATE = :state WHERE ID = :questionId "; baseDao.execute(updateSql, new SqlParameter("state",state).addValue("questionId", orderId)); List list = new ArrayList(); Map map = new HashMap(); map.put("USER_ID", nodeMap.get("CURRENT_DEALER_ID")); map.put("USER_NAME", nodeMap.get("CURRENT_DEALER_NAME")); map.put("IS_ADMIN", "1"); list.add(map); NodeDealEntity entity = new NodeDealEntity(); entity.setBefore_Dealer_type(2); entity.setDealer_type(2); entity.setDealerList(list); entity.setFlow_type(2); entity.setSource_node_instance_id(node.getId()); //回退到上一节点 workflowCoreService.toNode(base, ConvertUtil.obj2Str(nodeMap.get("NODE_TEMPLATE_ID")), entity); Map resultMap = new HashMap(); SysInfoMsg msg = new SysInfoMsg("2",ConvertUtil.obj2Str(nodeMap.get("CURRENT_DEALER_NAME")),Constants.changeNode.get(ConvertUtil.obj2Str(nodeMap.get("NODE_TEMPLATE_ID")))); resultMap.put("msg", msg); GG_RECORD record = new GG_RECORD(); record.setDeal_content("回退变更:"+userName+"回退了变更工单,节点处理人:"+ConvertUtil.obj2Str(nodeMap.get("CURRENT_DEALER_NAME"))); record.setBusiness_id(flowId); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_name(userName); recordService.addRecord(record); return resultMap; } @Override public int getDslLinkCiCount(HttpServletRequest request) { String dslId = request.getParameter("id"); String flowId = request.getParameter("flowId"); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); String sql = ""; if(base!=null){ if(base.getWfstate()==1){ sql = "SELECT COUNT(A.ID) FROM CMDB_DSL_LINK A WHERE A.DSL_ID = :dslId AND A.FLOW_ID = :flowId AND A.STATE <> 3 "; }else{ sql = "SELECT COUNT(A.ID) FROM CMDB_DSL_LINK A WHERE A.DSL_ID = :dslId "; } }else{ sql = "SELECT COUNT(A.ID) FROM CMDB_DSL_LINK A WHERE A.DSL_ID = :dslId AND A.FLOW_ID = :flowId AND A.STATE <> 3 "; } Map param = new HashMap(); param.put("dslId", dslId); param.put("flowId", flowId); int count = baseDao.queryForInteger( sql, param); return count; } @Override public PageInfo getDslLinkCiData(HttpServletRequest request) { String dslId = request.getParameter("dslId"); String flowId = request.getParameter("flowId"); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); String sql = ""; if(base!=null){ if(base.getWfstate()==1){ sql = "SELECT A.*,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,(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.FLOW_ID = :flowId "; }else{ sql = "SELECT A.*,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,(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 "; } }else{ sql = "SELECT A.*,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,(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.FLOW_ID = :flowId "; } Map param = new HashMap(); param.put("dslId", dslId); param.put("flowId", flowId); PageInfo info = baseDao.queryforSplitPageInfo(request, sql, param); return info; } @Override public int queryDslVersionCount(HttpServletRequest request) { StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM DSL_VERSION A WHERE A.DSL_ID = :dslId "); 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 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 int queryDslConfigRecordCount(HttpServletRequest request, String versionId) { String flowId = request.getParameter("flowId"); String id = request.getParameter("id"); StringBuilder builder = new StringBuilder("SELECT COUNT(B.ID) FROM DSL_CONFIG_FILE_CHANGE_DETAIL B WHERE B.DSL_VERSION_ID = :versionId AND B.FLOW_ID = :flowId "); Map paramMap = new HashMap(); paramMap.put("versionId", versionId); paramMap.put("flowId", flowId); if(StringUtil.notEmpty(id)) { builder.append(" AND SECOND_CONFIG_CATE = :folderId "); paramMap.put("folderId", id); } int count = baseDao.queryForInteger(builder.toString(), paramMap); return count; } @Override public PageInfo queryDslConfigRecordData(HttpServletRequest request, String versionId) { String flowId = request.getParameter("flowId"); String id = request.getParameter("id"); StringBuilder builder = new StringBuilder("SELECT B.*,A.FILE_NAME,A.FILE_SIZE,A.USER_NAME,A.CREATE_TIME FROM DSL_CONFIG_FILE A,DSL_CONFIG_FILE_CHANGE_DETAIL B WHERE B.FILE_ID = A.ID AND B.DSL_VERSION_ID = :versionId AND B.FLOW_ID = :flowId "); Map paramMap = new HashMap(); paramMap.put("versionId", versionId); paramMap.put("flowId", flowId); if(StringUtil.notEmpty(id)) { builder.append(" AND SECOND_CONFIG_CATE = :folderId "); paramMap.put("folderId", id); } builder.append(" ORDER BY A.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 List getDslciData(HttpServletRequest request) { String flowId = request.getParameter("flowId"); String dslId = request.getParameter("dslId"); String projectId = request.getParameter("proId"); /*if(!StringUtil.notEmpty(projectId)) { WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); projectId = base.getProject_id(); }*/ Map param = new HashMap(); param.put("project_id", projectId); param.put("flow_id", flowId); param.put("dsl_id", dslId); StringBuffer sql1 = new StringBuffer("select * from (SELECT 1 AS UPDTYPE, A.*,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE A.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE A.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE A.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_CI_BASE A WHERE A.STATE = 1 AND A.ID NOT IN (SELECT B.CI_ID FROM CMDB_DSL_LINK B WHERE B.DSL_ID = :dsl_id )");//A.LEIX = 1 AND StringBuffer sql2 = new StringBuffer("SELECT 2 AS UPDTYPE,A.*,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE A.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE A.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE A.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_CI_BASE A WHERE A.STATE = 1 AND A.ID IN (SELECT B.CI_ID FROM CMDB_DSL_LINK B WHERE B.FLOW_ID IS NULL AND B.DSL_ID = :dsl_id )"); sql1.append(" UNION ALL "); sql1.append(sql2); sql1.append(" ) s where 1 = 1"); String searchCode = request.getParameter("searchCode"); if(StringUtil.notEmpty(searchCode)) { sql1.append(" AND SEARCHCODE LIKE :searchCode "); param.put("searchCode", "%"+searchCode+"%"); } String ciName = request.getParameter("cmdbName"); if(StringUtil.notEmpty(ciName)) { sql1.append(" AND CINAME LIKE :cmdbName "); param.put("cmdbName", "%"+ciName+"%"); } String cate = request.getParameter("categoryId"); if(StringUtil.notEmpty(cate)) { sql1.append(" AND LV3_ID = :cate "); param.put("cate", cate); } List cilist = baseDao.queryForList(sql1.toString(),param); return cilist; } @Override public String deleteDslci(HttpServletRequest request) { String id = request.getParameter("id"); CMDB_DSL_LINK dslci = new CMDB_DSL_LINK(id).getInstanceById(); if(dslci.getState() == 2){ dslci.setState(null).setNew_version_id(dslci.getDsl_version_id()) .setFlow_id(null).setDealer_id(null).setDealer_name(null).setUpdate_time(null).update(); }else{ dslci.deleteById(); } return "1"; } @Override public String saveDslci(HttpServletRequest request) { String ids = request.getParameter("devices"); String dslId = request.getParameter("dslId"); String flowId = request.getParameter("flowId"); //获取最新版本 String newvesion = "SELECT A.*,C.EDITION,C.VER_ID FROM PROJECT_DSL A LEFT JOIN (SELECT B.DSL_ID,B.EDITION,B.ID AS VER_ID FROM DSL_VERSION B WHERE B.DSL_ID = :id ORDER BY B.CREATE_TIME DESC LIMIT 0,1 ) C ON A.ID = C.DSL_ID WHERE A.ID = :id "; Map vesion = baseDao.queryForMap(newvesion, new SqlParameter("id",dslId)); String insertSql = "INSERT INTO CMDB_DSL_LINK(ID,DSL_VERSION_ID,CI_ID,DSL_ID,NEW_VERSION_ID,STATE,FLOW_ID,DEALER_ID,DEALER_NAME,UPDATE_TIME) VALUES (:id,:dsl_version_id,:ci_id,:dsl_id,:new_version_id,:state,:flow_id,:dealer_id,:dealer_name,:update_time)"; String updSql = "UPDATE CMDB_DSL_LINK SET NEW_VERSION_ID = :new_version_id,STATE = 2 ,DEALER_ID = :dealer_id,DEALER_NAME= :dealer_name,UPDATE_TIME= :update_time, FLOW_ID = :flow_id WHERE DSL_ID = :dsl_id AND CI_ID = :ci_id "; long create_time = DateUtil.getCurrentDate14(); List listParams = new ArrayList(); List updParams = new ArrayList(); String[] linkIds = ids.split(","); String userId = ""; Map user = WebUtil.getLoginUser(request).getLoginUser(); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); List listParamsRecord = new ArrayList(); for(String linkId : linkIds) { SqlParameter sqlParameter = new SqlParameter(); String citype[] = linkId.split("-"); sqlParameter.put("id", StringUtil.getUUID()); sqlParameter.put("dsl_version_id", vesion.get("VER_ID")); sqlParameter.put("ci_id", citype[0]); sqlParameter.put("dsl_id", dslId); sqlParameter.put("new_version_id", vesion.get("VER_ID")); sqlParameter.put("flow_id", flowId); sqlParameter.put("dealer_id", userId); sqlParameter.put("dealer_name", userName); sqlParameter.put("update_time", create_time); if("1".equals(citype[1])){ sqlParameter.put("state", 1); listParams.add(sqlParameter); }else{ updParams.add(sqlParameter); } } baseDao.executeBatch(insertSql,listParams); baseDao.executeBatch(updSql,updParams); return "1"; } @Override public List changeFileReport(HttpServletRequest request) { String partnerId = ""; String flowId = request.getParameter("flowId"); Map paramMap = new HashMap(); paramMap.put("flowId", flowId); String selectSql = "SELECT A.*,B.FILE_NAME,B.FILE_SIZE,B.USER_NAME AS UPLOAD_USER FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_CONFIG_FILE B WHERE A.FILE_ID = B.ID AND A.FLOW_ID = :flowId "; List records = baseDao.queryForList(selectSql,paramMap); Map cacheRecord = new HashMap(); if(null!=records && records.size()>0) { for(Map record : records) { String versionId = ConvertUtil.obj2StrBlank(record.get("DSL_VERSION_ID")); String first_config_cate = ConvertUtil.obj2StrBlank(record.get("first_config_cate")); String second_config_cate = ConvertUtil.obj2StrBlank(record.get("SECOND_CONFIG_CATE")); String unitKey = versionId+"-"+first_config_cate+"-"+second_config_cate; record.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(record.get("FILE_SIZE")))); if(cacheRecord.containsKey(unitKey)) { List list = (List)cacheRecord.get(unitKey); list.add(record); } else { List list = new ArrayList(); list.add(record); cacheRecord.put(unitKey, list); } } } StringBuilder selectCateSql = new StringBuilder("SELECT B.ID AS VERSION_ID,A.FIRST_CONFIG_CATE,(SELECT A1.NAME FROM DSL_CONFIG A1 WHERE A.FIRST_CONFIG_CATE = A1.ID) AS FIRST_NAME,A.SECOND_CONFIG_CATE,(SELECT A2.NAME FROM DSL_CONFIG A2 WHERE A.SECOND_CONFIG_CATE = A2.ID) AS SECOND_NAME FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_VERSION B,PROJECT_DSL C WHERE A.DSL_VERSION_ID = B.ID AND B.DSL_ID = C.ID AND A.FLOW_ID = :flowId GROUP BY B.ID,A.FIRST_CONFIG_CATE,A.SECOND_CONFIG_CATE"); List cates = baseDao.queryForList(selectCateSql.toString(),paramMap); if(cates.size()==0){ selectCateSql = new StringBuilder("SELECT B.ID AS VERSION_ID FROM DSL_VERSION B,PROJECT_DSL C WHERE B.DSL_ID = C.ID AND B.CREATE_FLOW_ID = :flowId GROUP BY B.ID"); cates = baseDao.queryForList(selectCateSql.toString(),paramMap); } if(cates.size()==0){ selectCateSql = new StringBuilder("SELECT C.* FROM PROJECT_DSL C WHERE C.FLOW_ID = :flowId "); cates = baseDao.queryForList(selectCateSql.toString(),paramMap); } Map cacheFirst = new HashMap(); Map version = new HashMap(); if(null!=cates && cates.size()>0) { for(Map cate : cates) { String versionId = ConvertUtil.obj2StrBlank(cate.get("VERSION_ID")); String first_config_cate = ConvertUtil.obj2StrBlank(cate.get("FIRST_CONFIG_CATE")); String unitKey = versionId+"-"+first_config_cate; String first_name = ConvertUtil.obj2StrBlank(cate.get("FIRST_NAME")); String second_config_cate = ConvertUtil.obj2StrBlank(cate.get("SECOND_CONFIG_CATE")); String second_name = ConvertUtil.obj2StrBlank(cate.get("SECOND_NAME")); List result = new ArrayList(); if(version.containsKey(versionId)) { result = (List)version.get(versionId); } else { version.put(versionId, result); } if(cacheFirst.containsKey(unitKey)) { List secondCates = (List)cacheFirst.get(unitKey); Map secondMap = new HashMap(); secondMap.put("second_config_cate", second_config_cate); secondMap.put("second_name", second_name); String key = unitKey+"-"+second_config_cate; secondMap.put("files", cacheRecord.get(key)); secondCates.add(secondMap); } else { Map firstMap = new HashMap(); firstMap.put("key", unitKey); firstMap.put("first_name", first_name); List secondCates = new ArrayList(); Map secondMap = new HashMap(); secondMap.put("second_config_cate", second_config_cate); secondMap.put("second_name", second_name); String key = unitKey+"-"+second_config_cate; secondMap.put("files", cacheRecord.get(key)); secondCates.add(secondMap); firstMap.put("seconds", secondCates); cacheFirst.put(unitKey,secondCates); result.add(firstMap); } } } String selectVersionSql = new String("SELECT C.DSL_SEARCHCODE,C.ID AS DSL_ID,C.DSL_NAME,B.ID AS VERSION_ID,B.EDITION,(SELECT B1.EDITION FROM DSL_VERSION B1 WHERE B.LAST_VERSION = B1.ID) AS LAST_VERSION FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_VERSION B,PROJECT_DSL C WHERE A.DSL_VERSION_ID = B.ID AND B.DSL_ID = C.ID AND A.FLOW_ID = :flowId GROUP BY C.ID,B.ID"); List versions = baseDao.queryForList(selectVersionSql,paramMap); if(versions.size()==0){ selectVersionSql = new String("SELECT C.DSL_SEARCHCODE,C.ID AS DSL_ID,C.DSL_NAME,B.ID AS VERSION_ID,B.EDITION,(SELECT B1.EDITION FROM DSL_VERSION B1 WHERE B.LAST_VERSION = B1.ID) AS LAST_VERSION FROM DSL_VERSION B,PROJECT_DSL C WHERE B.DSL_ID = C.ID AND B.CREATE_FLOW_ID = :flowId GROUP BY B.ID"); versions = baseDao.queryForList(selectVersionSql.toString(),paramMap); } if(versions.size()==0){ selectVersionSql = new String("SELECT C.*,C.ID AS DSL_ID FROM PROJECT_DSL C WHERE C.FLOW_ID = :flowId "); versions = baseDao.queryForList(selectVersionSql.toString(),paramMap); } List resultList = new ArrayList(); Map cacheDsl = new HashMap(); if(null!=versions && versions.size()>0) { for(Map ver : versions) { String dsl_searchcode = ConvertUtil.obj2StrBlank(ver.get("DSL_SEARCHCODE")); String dsl_id = ConvertUtil.obj2StrBlank(ver.get("DSL_ID")); String dsl_name = ConvertUtil.obj2StrBlank(ver.get("DSL_NAME")); String version_id = ConvertUtil.obj2StrBlank(ver.get("VERSION_ID")); String edition = ConvertUtil.obj2StrBlank(ver.get("EDITION")); String last_version = ConvertUtil.obj2StrBlank(ver.get("LAST_VERSION")); String dslId = ConvertUtil.obj2StrBlank(ver.get("DSL_ID")); Map v = new HashMap(); v.put("version_id", version_id); v.put("edition", edition); List cs = (List)version.get(version_id); System.out.println("vs------->"+JsonUtil.list2Json(cs)); int totalNum = 0; //查询三级分类展示成列表的需要占的表格数 for(Map yj : cs) { int num = 0; List ejList = (List)(yj.get("seconds")); if(null!=ejList && ejList.size()>0) { for(Map ej :ejList) { List sjList = (List)ej.get("files"); if(sjList != null&&sjList.size() >0){ int sjNum = sjList.size(); if(sjNum>0) { num = num+sjNum; ej.put("sjNum", sjNum); } else { num = num+1; ej.put("sjNum", 1); } }else{ num = num+1; ej.put("sjNum", 1); } } } else { num = num+1; } totalNum += num; yj.put("num", num); } v.put("cates", cs); if(cacheDsl.containsKey(dslId)) { List vs = (List)cacheDsl.get(dslId); vs.add(v); } else { Map dsl = new HashMap(); dsl.put("dsl_id", dsl_id); dsl.put("dsl_name", dsl_name); dsl.put("dsl_searchcode", dsl_searchcode); dsl.put("last_version", last_version); resultList.add(dsl); List vs = new ArrayList(); vs.add(v); dsl.put("vs", vs); cacheDsl.put(dslId, vs); } } } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public void updatefinishnode(HttpServletRequest request) { String userId = WebUtil.getLoginedUserId(request); String userName = ConvertUtil.obj2StrBlank(WebUtil.getLoginUser(request).getLoginUser().get("ZSXM")); String flowId = request.getParameter("flowId"); String curnodeId = request.getParameter("curnodeId"); String nodeId = request.getParameter("nodeId"); String note = request.getParameter("note"); String hours = request.getParameter("hours"); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); if(StringUtil.isNotBlank(hours)){ node.setWorking_hours(hours).update(); } if(Constants.CCBSP.equals(curnodeId)){ String suggest = request.getParameter("suggest"); String resolve = request.getParameter("resolve"); note = suggest; Map param = new HashMap(); param.put("flow_id", flowId); param.put("create_id", userId); // baseDao.execute("DELETE FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id AND CREATE_ID =:create_id ", param); SC_WORKFLOW_CHANGE_CCBRESULT result = new SC_WORKFLOW_CHANGE_CCBRESULT(); // WORKFLOW_NODE node=new WORKFLOW_NODE(nodeId).getInstanceById(); String sameKey=node.getSame_node_key(); param.put("sameKey", sameKey); String sqla="SELECT MAX(NUM) FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID=:flow_id"; String number=baseDao.queryForString(sqla, param); String sqlb="SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY=:sameKey"; Map mapr=baseDao.queryForMap(sqlb, param); int num=0; if(number==null){ num=1; }else{ num=Integer.parseInt(number)+1; } param.put("num", num); if(mapr.size()>0){ num=ConvertUtil.obj2Int(mapr.get("NUM")); } result.setFlow_id(flowId).setResult(ConvertUtil.obj2Integer(resolve)).setSuggest(suggest) .setIs_end(2).setIs_main(2).setCreate_id(userId).setCreate_name(userName). setSamekey(sameKey).setNum(num).insert(); } NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(userName+"完成了节点"); finishEntity.setDeal_note(note); WORKFLOW_BASE base = new WORKFLOW_BASE(node.getFlowid()).getInstanceById(); //关闭当前节点 workflowCoreService.finishNode(base, node, finishEntity); } @Override public void updateResolveType(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String solveWay = request.getParameter("solveWay"); String solveWayName = request.getParameter("solveWayName"); //修改变更信息的解决方式 SC_WORKFLOW_CHANGE question = new SC_WORKFLOW_CHANGE(orderId).getInstanceById(); question.setId(orderId).setResolve_type_id(solveWay).setResolve_type_name(solveWayName).setState(ConvertUtil.obj2Integer(Constants.SC_WORKFLOW_CHANGE_STATE_YGB)).update(); //添加处理记录 Map user = WebUtil.getLoginUser(request).getLoginUser(); String createUserId = ConvertUtil.obj2StrBlank(user.get("ID")); String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId,createUserId); String curnodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //添加修改信息处理记录 String id = StringUtil.getUUID(); GG_RECORD record = new GG_RECORD(); record.setDeal_content("关闭变更:"+createUserName+"关闭了变更工单"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id(createUserId); record.setDeal_user_name(createUserName); record.setBusiness_id(flowId); record.setNode_id(curnodeid).setNode_name(nodeName); recordService.addRecord(record); fileService.uploadFile(request, id, flowId, null, null); //fileService.newuploadFileAll(request,id,flowId,Constants.GG_FOLDERS_BGFOLDERS,Constants.FILE_STATE_SHTG,"",question.getCustomer_id(),question.getProject_id(),question.getProject_name(),question.getCustomer_name()); //配置关系保存到记录表-关闭工单 saveRelationWhenClose(flowId); //删除变更中的配置关系-关闭工单 delRelationWhenClose(flowId); //保存关联DSL变更到记录表--关闭工单 dslFacade.saveConfigDslDealRecord(flowId); //恢复关联DSL-关闭工单 dslFacade.updateConfigDslWhenClose(flowId); //恢复DSL资料 delDslMsg(flowId); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(createUserName+"结束节点"); finishEntity.setDeal_note(createUserName+"结束节点"); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); List nodesList = baseDao.queryForList("SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND SAME_NODE_KEY = :same_node_key ",new SqlParameter("flowid",flowId).addValue("same_node_key", node.getSame_node_key())); //关闭所有节点 for(Map nodes:nodesList){ WORKFLOW_NODE nodeid = new WORKFLOW_NODE(ConvertUtil.obj2StrBlank(nodes.get("ID"))); nodeid.setDealtime(ConvertUtil.obj2Long(nodes.get("DEALTIME"))).setAnswer_time(ConvertUtil.obj2Long(nodes.get("ANSWER_TIME"))); workflowCoreService.finishNode(base,nodeid , finishEntity); } //关闭工单 workflowCoreService.closeWorkFlow(base); } @Override public void delDslMsg(String flowId) { SqlParameter param = new SqlParameter(); param.addValue("flowId", flowId); //删除新增DSL版本的配置文件记录 String sqlfilerecord = "DELETE FROM DSL_CONFIG_FILE_CHANGE_DETAIL WHERE FLOW_ID = :flowId "; //删除新增DSL版本的配置文件 String sql = "DELETE FROM DSL_CONFIG_FILE WHERE VERSION_ID IN ( SELECT ID FROM DSL_VERSION WHERE CREATE_FLOW_ID = :flowId AND STATE = 3 ) "; //删除新增版本 String sqlversion = "DELETE FROM DSL_VERSION WHERE CREATE_FLOW_ID = :flowId AND STATE = 3 "; //删除新增DSL String sqldsl = "DELETE FROM PROJECT_DSL WHERE FLOW_ID = :flowId AND STATE = 3 "; baseDao.execute(sqlfilerecord, param); baseDao.execute(sql, param); baseDao.execute(sqlversion, param); baseDao.execute(sqldsl, param); } }