package cn.ksource.web.facade.releaseManage; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import cn.ksource.beans.GG_RECORD; import cn.ksource.beans.SC_WORKFLOW_RELEASE; import cn.ksource.beans.WORKFLOW_BASE; import cn.ksource.beans.WORKFLOW_NODE; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.util.TreeUtil; import cn.ksource.core.web.SysInfoMsg; import cn.ksource.core.web.WebUtil; import cn.ksource.core.workflow.NodeAnswerEntity; import cn.ksource.core.workflow.NodeFinishEntity; import cn.ksource.core.workflow.WorkflowCoreService; import cn.ksource.web.Constants; import cn.ksource.web.entity.WorkFlowSupportEntity; import cn.ksource.web.facade.change.ChangeFacade; import cn.ksource.web.facade.dsl.DSLFacade; import cn.ksource.web.service.WorkOrderCodeService; import cn.ksource.web.service.record.RecordService; import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService; @SuppressWarnings("unchecked") @Repository public class ReleaseFacadeImpl implements ReleaseFacade{ @Autowired private BaseDao baseDao; @Autowired private DSLFacade dslFacade; @Autowired private ChangeFacade changeFacade; @Autowired private WorkOrderCodeService workOrderCodeService; @Autowired private WorkFlowSupportService workFlowSupportService; @Autowired private RecordService recordService; @Autowired private WorkflowCoreService workflowCoreService; /** * 获取我的发布管理数据 * @param request * @return */ private Map getMyRealseSupportMap(HttpServletRequest request){ String userId = WebUtil.getLoginedUserId(request); //String partnerId = WebUtil.getLoginedPartnerId(request); String flowState = request.getParameter("flowState"); String nodeState = request.getParameter("nodeState"); String customerId = request.getParameter("customerId"); String projectId = request.getParameter("projectId"); String subCustomerId = request.getParameter("subCustomerId"); int businessType = Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE; //工单编号 String orderCode = request.getParameter("orderCode"); String orderName = request.getParameter("orderName"); String startDate = request.getParameter("startDate"); String endDate = request.getParameter("endDate"); SqlParameter param = new SqlParameter(); param.addValue("userId", userId) //.addValue("partnerId", partnerId) .addValue("flowState", flowState) .addValue("nodeState", nodeState) .addValue("customerId", customerId) .addValue("projectId", projectId) .addValue("subCustomerId", subCustomerId) .addValue("businessType", businessType) .addValue("orderCode", "%"+orderCode+"%") .addValue("orderName", "%"+orderName+"%") .addValue("startDate", startDate+"000000") .addValue("endDate", endDate+"666666"); StringBuilder builder = new StringBuilder(); builder.append(" select r.NAME,b.CURRENT_DEALER_NAME,r.PROJECT_NAME,r.RELEASE_REASON,n.*,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, "); builder.append(" r.ORDER_CODE,r.ID ORDERID,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE "); builder.append(" from SC_WORKFLOW_RELEASE r "); builder.append(" inner join WORKFLOW_BASE B on r.FLOW_ID = b.ID "); builder.append(" inner join "); builder.append(" ( "); builder.append(" select * from ( "); builder.append(" select ID NODEID, CREATETIME NODETIME,FLOWSTATE NODESTATE,FLOWID from WORKFLOW_NODE "); builder.append(" where CURRENT_DEALER_ID = :userId "); //环节状态 if(StringUtil.isNotBlank(nodeState)){ builder.append("and FLOWSTATE =:nodeState "); } builder.append(" order by FLOWSTATE asc "); builder.append(" ) t "); builder.append(" group by FLOWID "); builder.append(" ) n "); builder.append(" on b.ID = n.FLOWID "); //builder.append(" where b.PARTNER_ID =:partnerId "); //工单类型 builder.append(" AND b.BUSINESSTYPE = :businessType"); //工单状态 if(StringUtil.notEmpty(flowState)) { builder.append(" AND b.WFSTATE =:flowState "); } //客户 if(StringUtil.isNotBlank(customerId)) { builder.append(" AND b.CUSTOMER_ID = :customerId "); } //下属单位 if(StringUtil.isNotBlank(subCustomerId)) { builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId "); } //项目 if(StringUtil.isNotBlank(projectId)) { builder.append(" AND b.PROJECT_ID = :projectId "); } if(StringUtil.notEmpty(orderCode)) { builder.append(" AND r.ORDER_CODE LIKE :orderCode"); } if(StringUtil.notEmpty(orderName)) { builder.append(" AND r.NAME LIKE :orderName"); } if(StringUtil.notEmpty(startDate)) { builder.append(" AND b.CREATETIME >=:startDate"); } if(StringUtil.notEmpty(endDate)) { builder.append(" AND b.CREATETIME <=:endDate"); } builder.append(" order by n.NODESTATE ASC,n.NODETIME desc,b.CREATETIME desc "); Map supportMap = new HashMap(); supportMap.put("sql", builder.toString()); supportMap.put("param", param); return supportMap; } @Override public int queryMyRealseCount(HttpServletRequest request) { Map supportMap = getMyRealseSupportMap(request); String sql = " select count(*) from ( " + supportMap.get("sql").toString() +" ) t "; SqlParameter param = (SqlParameter)supportMap.get("param"); return baseDao.queryForInteger(sql,param); } @Override public List queryMyRealseData(HttpServletRequest request) { Map supportMap = getMyRealseSupportMap(request); String sql = supportMap.get("sql").toString(); SqlParameter param = (SqlParameter)supportMap.get("param"); return baseDao.queryforSplitPage(request, sql, param); } @Override public List queryLinkDeviceList(String flowId) { String sql = " select c.id,c.ciname,c.position,c.SEARCHCODE seachcode from cmdb_ci_base c " + " inner join CMDB_CI_REF_ORDER r on c.ID = r.CI_ID " + " where r.FLOW_ID=:flowId "; return baseDao.queryForList(sql,new SqlParameter().addValue("flowId", flowId)); } @Override public List queryLinkOrderList(String orderId) { String sql = " select b.id,businesstype,wfname,wfstate,order_code,createtime from workflow_base b " + " inner join ORDER_REF_ORDER r on b.ID = r.RELATE_FLOW_ID " + " where r.BUSINESS_ID = :orderId" ; List list = baseDao.queryForList(sql,new SqlParameter().addValue("orderId", orderId)); for(Map map:list){ map.put("businesstype_text", Constants.mapWORKFLOW_BUSINESS_TYPE_Label(ConvertUtil.obj2Str(map.get("businesstype")))); } return list; } @Override public Map getChangeInfoById(String changeId) { String sql = "select oa_id,id change_id,name,customer_id,customer_name,project_id,project_name from sc_workflow_change where id = :changeId "; return baseDao.queryForMap(sql, new SqlParameter("changeId", changeId)); } @Override public String saveRelease(HttpServletRequest request, SC_WORKFLOW_RELEASE release) { String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); //String partnerId = WebUtil.getLoginedPartnerId(request); String configDataJson = request.getParameter("configDataJson"); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userName = user.get("ZSXM").toString(); String userId = user.get("Id").toString(); //服务目录 String serivceListId = request.getParameter("serivceListId"); String serivceList = request.getParameter("serivceListName"); String first_category_id = ""; String first_category_name = ""; String second_category_id = ""; String second_category_name = ""; String third_category_id = ""; String third_category_name = ""; if(StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) { String[] serivceListIds = serivceListId.split("-"); String[] serivceLists = serivceList.split(Constants.splitMark); 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]; } release.setFirst_category_id(first_category_id); release.setFirst_category_name(first_category_name); release.setSecond_category_id(second_category_id); release.setSecond_category_name(second_category_name); release.setThird_category_id(third_category_id); release.setThird_category_name(third_category_name); //工单编号 String order_code = workOrderCodeService.getReleaseOrderCode(); release.setOrder_code(order_code); release.setRelease_user_id(userId); release.setRelease_user_name(userName); release.setCreate_time(DateUtil.getCurrentDate14()); //release.setPartner_id(partnerId); release.setRelation_configure(configDataJson); if(StringUtil.isNotBlank(orderId)){ release.setId(orderId); } release.insertOrUpdate(); //更新workflow_base中的信息 SqlParameter baseParam = new SqlParameter("wfname",release.getName()).addValue("customer_id", release.getCustomer_id()).addValue("customer_name", release.getCustomer_name()).addValue("sub_customer_id", release.getSub_customer_id()).addValue("sub_customer_name", release.getSub_customer_name()).addValue("orderId", release.getId()); baseDao.execute("UPDATE WORKFLOW_BASE SET WFNAME = :wfname,CUSTOMER_ID = :customer_id,CUSTOMER_NAME = :customer_name,SUB_CUSTOMER_ID = :sub_customer_id,SUB_CUSTOMER_NAME = :sub_customer_name WHERE BUSINESS_ID = :orderId", baseParam); orderId = release.getId(); if(StringUtil.isNotBlank(release.getSource_change_id())){//从变更升级 SqlParameter param = new SqlParameter(); param.addValue("changeId", release.getSource_change_id()) .addValue("orderId", orderId); baseDao.execute("update sc_workflow_change set release_id = :orderId where id=:changeId ", param); } String[] linkOrderIds = request.getParameterValues("linkOrderId"); String[] linkDeviceIds = request.getParameterValues("linkDeviceId"); if(StringUtil.isBlank(flowId)||flowId.equals(orderId)){ String sql = " update sc_workflow_release set flow_id = :orderId where id=:orderId "; baseDao.execute(sql, new SqlParameter("orderId",orderId)); flowId = orderId; } //添加关联信息 workFlowSupportService.saveLinkOrders(flowId,linkOrderIds); workFlowSupportService.saveLinkDevices(flowId,linkDeviceIds); //配置库数据 //String sysInfoJson = request.getParameter("sysInfoJson"); //saveSysInfo(orderId,sysInfoJson); return orderId; } @Override public SysInfoMsg doOrganizationDSL(HttpServletRequest request){ String orderId = request.getParameter("orderId"); String nodeId = request.getParameter("nodeId"); String flowId = request.getParameter("flowId"); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userName = user.get("ZSXM").toString(); String userId = user.get("Id").toString(); //发送到审批环节 String sql = "select project_id from sc_workflow_release where id = :orderId" ; SqlParameter param = new SqlParameter("orderId",orderId); String projectId = baseDao.queryForString(sql,param); String nextTemplateId = request.getParameter("nextTemplateId"); List userList = new ArrayList(); Map dealer = new HashMap(); dealer.put("USER_ID",request.getParameter("dealId")); dealer.put("USER_NAME",request.getParameter("dealName")); dealer.put("IS_ADMIN","1"); userList.add(dealer); WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setNextUserList(userList); support.setOrderId(orderId); support.setNextNodeTemplateId(nextTemplateId); support.setUserName(userName); support.setUserId(userId); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); support.setNote(request.getParameter("bz")); SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); if(orderId.equals(flowId)){ flowId = baseDao.queryForString(" select FLOW_ID from sc_workflow_release where id=:orderId ",new SqlParameter("orderId",orderId)); param.addValue("flowId", flowId); sql = " update CMDB_CI_REF_ORDER set FLOW_ID = :flowId where FLOW_ID = :orderId "; baseDao.execute(sql, param); sql = " update ORDER_REF_ORDER set BUSINESS_ID = :flowId where BUSINESS_ID = :orderId "; baseDao.execute(sql, param); //更新DSL sql = " update PROJECT_DSL set FLOW_ID = :flowId where FLOW_ID = :orderId "; baseDao.execute(sql, param); sql = " update DSL_VERSION set CREATE_FLOW_ID = :flowId where CREATE_FLOW_ID = :orderId "; baseDao.execute(sql, param); sql = " update CMDB_DSL_LINK set FLOW_ID = :flowId where FLOW_ID = :orderId "; baseDao.execute(sql, param); sql = " update DSL_ORDER_LINK set FLOW_ID = :flowId where FLOW_ID = :orderId "; baseDao.execute(sql, param); } //增加处理记录 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); recordService.addRecord(record); return msg; } @Override public Map getDSLInfo(String configureId, String thirdCateId, String flowId, String partnerId) { SqlParameter param = new SqlParameter(); param.addValue("configureId", configureId) .addValue("thirdCateId", thirdCateId) .addValue("flowId", flowId) .addValue("partnerId", partnerId); StringBuilder builder = new StringBuilder(); //查询dsl基本信息 builder.append(" select id,pid,'name',note,lv from CONFIG_DSL where state=1 and THIRD_CATEGORY_ID=:thirdCateId and PARTNER_ID=:partnerId order by lv,sort_id asc "); List dataList = baseDao.queryForList(builder.toString(),param); //查询dsl附件信息 builder.setLength(0); builder.append(" select *,TRUNCATE(FILE_SIZE/(1024*1024),2) FILE_SIZE_M from GG_FILES WHERE DEL_FLAG = 1 "); builder.append(" and BUSINESS_ID = :flowId and EXTEND1 =:configureId and EXTEND2 = :secondDslId "); if(dataList!=null&&dataList.size()>0){ for(Map data:dataList){ if(data.get("lv")!=null&&data.get("lv").toString().equals("2")){ param.addValue("secondDslId", data.get("id")); data.put("files", baseDao.queryForList(builder.toString(), param)); } } } Map root = TreeUtil.createTreeByListMap(dataList); builder.setLength(0); builder.append(" select VERSION_NO from config_dsl_pro where configure_id =:configureId and release_flow_id=:flowId "); String versionNo = baseDao.queryForString(builder.toString(),param); root.put("versionNo",versionNo); return root; } @Override public Map getNextNode(Map params) { String nodeId = params.get("nodeId"); String flowId = params.get("flowId"); Map nextNode = new HashMap(); nextNode.put("userId", ""); nextNode.put("userName", ""); String templateId = Constants.RELEASE_APPLY; if (nodeId==null||StringUtil.isBlank(nodeId)) { nextNode.put("nodeId", Constants.RELEASE_APPROVE); nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.RELEASE_APPROVE)); }else{ 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 "); templateId = baseDao.queryForString(sql.toString(), new SqlParameter("flowId", flowId)); if(templateId.equals(Constants.RELEASE_APPLY)){ nextNode.put("nodeId", Constants.RELEASE_APPROVE); nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.RELEASE_APPROVE)); }else if(templateId.equals(Constants.RELEASE_APPROVE)){ nextNode.put("nodeId", Constants.RELEASE_EXECUTE); nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.RELEASE_EXECUTE)); }/*else if(templateId.equals(Constants.CIADD_APPLY)){ nextNode.put("nodeId", Constants.CIADD_APPROVE); nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.CIADD_APPROVE)); }*/ } nextNode.put("curTemplateId", templateId); return nextNode; } @Override public SysInfoMsg doApproveAssign(HttpServletRequest request) { String orderId = request.getParameter("orderId"); /*String noticeUserId = request.getParameter("noticeUserId");*/ String executeUserId = request.getParameter("dealId"); String executeUserName = request.getParameter("dealName"); SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById(); release.setExecute_id(executeUserId); release.setExecute_name(executeUserName); release.update(); /*if(StringUtil.isNotBlank(noticeUserId)){ return doRealseApprove(request); }else{*/ return doReleaseNotice(request); /*}*/ } @Override public SysInfoMsg doReleaseNotice(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String nodeId = request.getParameter("nodeId"); String flowId = request.getParameter("flowId"); String note = request.getParameter("bz"); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userName = user.get("ZSXM").toString(); String userId = user.get("Id").toString(); SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById(); List userList = new ArrayList(); Map executorMap = new HashMap(); executorMap.put("USER_ID", release.getExecute_id()); executorMap.put("USER_NAME", release.getExecute_name()); executorMap.put("IS_ADMIN", "1"); userList.add(executorMap); WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setUserName(userName); support.setUserId(userId); support.setNote(note); support.setNextUserList(userList); support.setNextNodeTemplateId(Constants.RELEASE_EXECUTE); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); //增加处理记录 String dealUserName=""; for(Map map:userList){ if(StringUtil.isNotBlank(dealUserName)){ dealUserName = dealUserName + "," + map.get("USER_NAME"); }else{ dealUserName = dealUserName + map.get("USER_NAME"); } } GG_RECORD record = new GG_RECORD(); record.setDeal_content("工单流转:"+userName+"将工单发送给了"+dealUserName); record.setDeal_time(DateUtil.getCurrentDate14()); // record.setDeal_user_id(userId); record.setDeal_user_name(userName); record.setBusiness_id(flowId); recordService.addRecord(record); return msg; } @Override public SysInfoMsg doReleaseExec(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String nodeId = request.getParameter("nodeId"); String flowId = request.getParameter("flowId"); String flowNote = request.getParameter("flowNote"); String execStep = request.getParameter("execStep"); String backStep = request.getParameter("backStep"); String execSituation=request.getParameter("execSituation"); /*String hours = request.getParameter("hours"); new WORKFLOW_NODE(nodeId).getInstanceById().setWorking_hours(hours).update();*/ Map user = WebUtil.getLoginUser(request).getLoginUser(); String userName = user.get("ZSXM").toString(); String userId = user.get("Id").toString(); SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById(); release.setExec_step(execStep); release.setBack_step(backStep); release.setRelease_result(ConvertUtil.obj2Int(execSituation)); release.update(); //发送到审核 WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setUserName(userName); support.setUserId(userId); support.setNote(flowNote); support.setEverDealflag(true); support.setEverNodeTemplateId(Constants.RELEASE_APPROVE); support.setNextNodeTemplateId(Constants.RELEASE_APPROVAL); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); //查询发布审批主负责人() Map lastNode = changeFacade.queryUserByTemplateId(flowId, Constants.RELEASE_APPROVE); //增加处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("工单流转:"+userName+"将工单发送给了"+lastNode.get("CURRENT_DEALER_NAME")); record.setDeal_time(DateUtil.getCurrentDate14()); // record.setDeal_user_id(userId); record.setDeal_user_name(userName); record.setBusiness_id(flowId); recordService.addRecord(record); return msg; } @Override public SysInfoMsg doReleaseApproval(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String nodeId = request.getParameter("nodeId"); String flowId = request.getParameter("flowId"); String flowNote = request.getParameter("flowNote"); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userName = user.get("ZSXM").toString(); String userId = user.get("Id").toString(); SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById(); //发送到OA if(StringUtil.isNotBlank(release.getOa_id())){ //发送到关键用户确认 WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setUserName(userName); support.setUserId(userId); support.setNote(flowNote); support.setEverDealflag(true); support.setEverNodeTemplateId(Constants.RELEASE_APPROVAL); support.setNextNodeTemplateId(Constants.RELEASE_REVIEW); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); //增加处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("工单流转:"+userName+"将工单发送给了"+workFlowSupportService.getEverNodeExecutor(flowId,Constants.RELEASE_APPROVAL).get(0).get("USER_NAME")); record.setDeal_time(DateUtil.getCurrentDate14()); // record.setDeal_user_id(userId); record.setDeal_user_name(userName); record.setBusiness_id(flowId); recordService.addRecord(record); //发送消息到oa /*Map param = new HashMap(); param.put("OA_ID", release.getOa_id()); param.put("Order_ID", release.getId()); WebServiceConfig cfg = WebServiceConfig.getInstance(); try { KmMaintainWebService service = (KmMaintainWebService)WebServiceClient.callService(cfg.getAddress(), cfg.getServiceClass()); service.addPublishExecute(JsonUtil.map2Json(param)); } catch (Exception e) { e.printStackTrace(); }*/ return msg; }else{ doOrderFinish(request); return null; } } @Override public void doOrderFinish(HttpServletRequest request){ String orderId = request.getParameter("orderId"); String nodeId = request.getParameter("nodeId"); String flowNote = request.getParameter("flowNote"); String sucessFlag = request.getParameter("sucessFlag"); if (StringUtil.isBlank(sucessFlag)) { sucessFlag = "1"; } Map user = WebUtil.getLoginUser(request).getLoginUser(); String sql = " update sc_workflow_release set sucess_flag =:sucessFlag where id=:orderId "; baseDao.execute(sql, new SqlParameter().addValue("sucessFlag",sucessFlag) .addValue("orderId", orderId)); String userName = user.get("ZSXM").toString(); String userId = user.get("Id").toString(); SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById(); String flowId = release.getFlow_id(); //环节流转 WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setUserName(userName); support.setUserName(userId); support.setNodeId(nodeId); support.setNote(flowNote); support.setFlowEndflag(true); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); workFlowSupportService.doOrderFlow(support); //保存dsl操作记录 dslFacade.saveConfigDslDealRecord(flowId); //更新dsl关系 dslFacade.updateConfigDslWhenFinish(flowId); //配置关系保存到记录表 changeFacade.saveRelationWhenClose(flowId); //保存配置关系-结束工单 changeFacade.updateRelationWhenFinish(flowId); //增加处理记录 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); recordService.addRecord(record); } @Override public List querySysInfoList(String orderId) { String sql = " select * from SC_WORKFLOW_RELEASE_BUSINESS_SYS where BUSINESS_ID = :orderId" ; return baseDao.queryForList(sql,new SqlParameter().addValue("orderId", orderId)); } @Override public boolean doAnswer(HttpServletRequest request) { String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); WORKFLOW_NODE node = new WORKFLOW_NODE(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 flag = workflowCoreService.answerNode(base, node, entity); return flag; } @Override public SysInfoMsg doSendBack(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String nodeId = request.getParameter("nodeId"); String lastNodeTemplateId = request.getParameter("lastNodeTemplateId"); String note = request.getParameter("backNote"); String flowId = new SC_WORKFLOW_RELEASE(orderId).getInstanceById().getInstanceById().getFlow_id(); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userName = user.get("ZSXM").toString(); String userId = user.get("Id").toString(); WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setUserName(userName); support.setUserId(userId); support.setNote(note); support.setEverNodeTemplateId(lastNodeTemplateId); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); SysInfoMsg msg = workFlowSupportService.doOrderSendback(support); return msg; } @Override public void doCloseFlow(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String closeNote = request.getParameter("closeNote"); String nodeId = request.getParameter("nodeId"); String userName = WebUtil.getLoginUser(request).getLoginUser().get("ZSXM").toString(); String userId = WebUtil.getLoginedUserId(request); SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById(); WORKFLOW_BASE base = new WORKFLOW_BASE(release.getFlow_id()).getInstanceById(); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(userName+"关闭了工单"); finishEntity.setDeal_note(closeNote); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); workflowCoreService.finishNode(base, node, finishEntity); workflowCoreService.closeWorkFlow(base); String flowId = base.getId(); //保存dsl操作记录 dslFacade.saveConfigDslDealRecord(flowId); //更新dsl关系 dslFacade.updateConfigDslWhenClose(flowId); //配置关系保存到记录表 changeFacade.saveRelationWhenClose(flowId); //删除变更中的配置关系 changeFacade.delRelationWhenClose(flowId); //增加处理记录 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(node.getFlowid()); recordService.addRecord(record); } @Override public Map getSurveyNum(HttpServletRequest request) { Map result = new HashMap(); //String partnerId = WebUtil.getLoginedPartnerId(request); SqlParameter param = new SqlParameter(); param.addValue("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); List projects = new ArrayList(); //projects = WebUtil.getProjects(request); StringBuilder builder = new StringBuilder(); builder.append(" select COUNT(b.ID) num,n.NODE_TEMPLATE_ID "); builder.append(" from WORKFLOW_BASE b,WORKFLOW_NODE n "); builder.append(" where b.CURRENT_NODE_ID = n.ID AND b.BUSINESSTYPE = :businessType "); builder.append(" AND b.WFSTATE=1 AND n.NODE_TEMPLATE_ID is not null "); /*//过滤项目 builder = getProjectSql(builder,projects);*/ //工单类型 builder.append(" GROUP BY n.NODE_TEMPLATE_ID "); List queryList = baseDao.queryForList(builder.toString(),param); if(queryList!=null&&queryList.size()>0){ for(Map map:queryList){ if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_APPLY)){ result.put("applyNum", map.get("num")); }else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_APPROVE)){ result.put("approveNum", map.get("num")); }else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_EXECUTE)){ result.put("excNum", map.get("num")); }else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_APPROVAL)){ result.put("approvalNum", map.get("num")); }else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_REVIEW)){ result.put("reviewNum", map.get("num")); } } } return result; } @Override public List queryRealseData(HttpServletRequest request) { StringBuilder builder = new StringBuilder(); //String partnerId = WebUtil.getLoginedPartnerId(request); String flowState = request.getParameter("flowState"); String orderCode = request.getParameter("orderCode"); String projectId = request.getParameter("projectId"); String customerId = request.getParameter("customerId"); String subCustomerId = request.getParameter("subCustomerId"); String nodeTemplateId = request.getParameter("nodeTemplateId"); String nodeTempId = request.getParameter("nodeTempId"); String orderName = request.getParameter("orderName"); String startDate = request.getParameter("startDate"); String endDate = request.getParameter("endDate"); Map paramMap = new HashMap(); paramMap.put("projectId", projectId); paramMap.put("customerId", customerId); paramMap.put("subCustomerId", subCustomerId); //paramMap.put("partnerId", partnerId); paramMap.put("flowState", flowState); paramMap.put("orderCode", "%"+orderCode+"%"); paramMap.put("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); paramMap.put("nodeTempId", nodeTempId); paramMap.put("nodeTemplateId", nodeTemplateId); paramMap.put("startDate", startDate+"000000"); paramMap.put("endDate", startDate+"666666"); paramMap.put("orderName", "%"+orderName+"%"); builder = getAllRemindSql(request); return baseDao.queryforSplitPage(request, builder.toString(), paramMap); } @Override public int queryRealseCount(HttpServletRequest request) { StringBuilder builder = new StringBuilder(); //String partnerId = WebUtil.getLoginedPartnerId(request); String flowState = request.getParameter("flowState"); String orderCode = request.getParameter("orderCode"); String projectId = request.getParameter("projectId"); String customerId = request.getParameter("customerId"); String subCustomerId = request.getParameter("subCustomerId"); String nodeTemplateId = request.getParameter("nodeTemplateId"); String orderName = request.getParameter("orderName"); String startDate = request.getParameter("startDate"); String endDate = request.getParameter("endDate"); Map paramMap = new HashMap(); //paramMap.put("partnerId", partnerId); paramMap.put("flowState", flowState); paramMap.put("projectId", projectId); paramMap.put("customerId", customerId); paramMap.put("subCustomerId", subCustomerId); paramMap.put("orderCode", "%"+orderCode+"%"); paramMap.put("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE); String nodeTempId = request.getParameter("nodeTempId"); paramMap.put("nodeTempId", nodeTempId); paramMap.put("nodeTemplateId", nodeTemplateId); paramMap.put("startDate", startDate+"000000"); paramMap.put("endDate", endDate+"666666"); paramMap.put("orderName", "%"+orderName+"%"); builder = getAllRemindSql(request); String sql = "select count(*) from ( " + builder.toString() + " ) t" ; return baseDao.queryForInteger(sql.toString(),paramMap); } /** * 服务台工单列表 * @param request * @return */ private StringBuilder getAllRemindSql(HttpServletRequest request){ String flowState = request.getParameter("flowState"); String projectId = request.getParameter("projectId"); String customerId = request.getParameter("customerId"); String subCustomerId = request.getParameter("subCustomerId"); String nodeTemplateId = request.getParameter("nodeTemplateId"); String nodeTempId = request.getParameter("nodeTempId"); /*List projects = new ArrayList(); if(StringUtil.notEmpty(customerId) && StringUtil.notEmpty(projectId)) { } else if (StringUtil.notEmpty(customerId) && !StringUtil.notEmpty(projectId)) { //通过当前客户查询出所有的项目信息 projects = slaProjectFacade.queryProjects(request, customerId); } else { projects = WebUtil.getProjects(request); }*/ StringBuilder builder = new StringBuilder(); builder.append(" select n.FLOWSTATE NODESTATE,b.CURRENT_DEALER_NAME,b.PROJECT_NAME,r.RELEASE_REASON,b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, "); builder.append(" r.ORDER_CODE,r.ID ORDERID,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE "); builder.append(" from SC_WORKFLOW_RELEASE r "); builder.append(" inner join WORKFLOW_BASE b on r.FLOW_ID = b.ID "); builder.append(" inner join WORKFLOW_NODE N on b.CURRENT_NODE_ID = n.ID "); builder.append(" where 1=1 "); //工单类型 builder.append(" AND b.BUSINESSTYPE = :businessType"); //工单状态 if(StringUtil.notEmpty(flowState)) { builder.append(" AND b.WFSTATE =:flowState "); } if(StringUtil.isNotBlank(nodeTemplateId)){ builder.append(" and n.NODE_TEMPLATE_ID IS NOT NULL and n.NODE_TEMPLATE_ID =:nodeTemplateId and b.WFSTATE = 1 "); } /*if(StringUtil.notEmpty(customerId) && StringUtil.notEmpty(projectId)) { builder.append(" AND b.CUSTOMER_ID = :customerId AND b.PROJECT_ID = :projectId "); } else { builder = getProjectSql(builder,projects); }*/ //客户 if(StringUtil.isNotBlank(customerId)) { builder.append(" AND b.CUSTOMER_ID = :customerId "); } //下属单位 if(StringUtil.isNotBlank(subCustomerId)) { builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId "); } //工单编号 String orderCode = request.getParameter("orderCode"); if(StringUtil.notEmpty(orderCode)) { builder.append(" AND r.ORDER_CODE LIKE :orderCode"); } String orderName = request.getParameter("orderName"); if(StringUtil.notEmpty(orderName)) { builder.append(" AND r.ORDER_CODE LIKE :orderName"); } String startDate = request.getParameter("startDate"); if(StringUtil.notEmpty(startDate)) { builder.append(" AND b.CREATETIME >= :startDate"); } String endDate = request.getParameter("endDate"); if(StringUtil.notEmpty(endDate)) { builder.append(" AND b.CREATETIME <= :endDate"); } if(StringUtil.notEmpty(nodeTempId)) { builder.append(" AND EXISTS (SELECT n.ID FROM WORKFLOW_NODE n WHERE b.CURRENT_NODE_ID = n.ID AND n.NODE_TEMPLATE_ID = :nodeTempId ) "); } builder.append(" order by b.CREATETIME desc "); return builder; } }