package cn.ksource.web.facade.uc.order; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.beans.SC_WORKFLOW_CI_REMIND; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.page.PageInfo; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.web.Constants; import cn.ksource.web.service.order.OrderService; @Service("ucCiRemindFacade") public class UcCiRemindFacadeImpl implements UcCiRemindFacade { @Autowired private BaseDao baseDao; @Autowired private OrderService orderService; @Override public int queryRemindOrderCount(Map params) { StringBuilder builder = new StringBuilder(); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND)); builder = getAllRemindSql(builder,params); String sql = "select count(*) from ( " + builder.toString() + " ) t" ; return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo queryRemindOrderList(PageInfo pageInfo,Map params) { StringBuilder builder = new StringBuilder(); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND)); builder = getAllRemindSql(builder,params); return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params); } /** * 服务台工单列表 * @param request * @return */ private StringBuilder getAllRemindSql(StringBuilder builder,Map params){ String flowState = params.get("flowState"); String subCustomerId = params.get("subCustomerId"); builder.append(" SELECT b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, t.PLAN_EXECUTION_DATE, "); builder.append(" r.ORDER_CODE,r.ID ORDERID,r.SERVICE_CONTENT,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE "); builder.append(" FROM SC_WORKFLOW_CI_REMIND r "); builder.append(" INNER JOIN WORKFLOW_BASE B on r.FLOW_ID = b.ID INNER JOIN CI_REMIND_TIMERTASK t on r.FLOW_ID = t.FLOW_ID"); builder.append(" WHERE b.BUSINESSTYPE = :businessType "); //工单状态 if(StringUtil.notEmpty(flowState)) { builder.append(" AND B.WFSTATE =:flowState "); } builder.append(" AND B.CUSTOMER_ID = :cusId "); //下属单位 if(StringUtil.isNotBlank(subCustomerId)) { builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId "); } //工单编号 String orderCode = params.get("orderCode"); if(StringUtil.notEmpty(orderCode)) { builder.append(" AND r.ORDER_CODE LIKE :orderCode"); params.put("orderCode", "%"+orderCode+"%"); } builder.append(" ORDER BY b.CREATETIME DESC,t.PLAN_EXECUTION_DATE DESC"); return builder; } @Override public List getRemindCiList(String orderId) { StringBuilder sql = new StringBuilder(); sql.append(" select b.ID CIID,r.USER_NAME,r.DEAL_STATE,r.ID,c.NAME CATENAME,c.ID CATEID,b.CINAME,b.SEARCHCODE,b.POSITION from SC_WORKFLOW_CI_REMIND_DETAIL r "); sql.append(" inner join cmdb_ci_base b "); sql.append(" on r.CI_ID = b.ID "); sql.append(" inner join cmdb_ci_category c "); sql.append(" on b.LV3_ID = c.ID "); sql.append(" where r.ORDER_ID = :orderId "); return baseDao.queryForList(sql.toString(),new SqlParameter("orderId",orderId)); } @Override public Map getRemindeItem(String flowId) { Map param = new HashMap(); param.put("flowId",flowId); StringBuilder sql = new StringBuilder(); sql.append("SELECT * FROM SC_WORKFLOW_CI_REMIND c "); sql.append(" WHERE c.FLOW_ID=:flowId"); Map remindMap=baseDao.queryForMap(sql.toString(), param); Map map =new HashMap(); if(remindMap!=null && remindMap.size()>0){ //服务工程师 StringBuilder selSql=new StringBuilder(); selSql.append("SELECT A.CURRENT_DEALER_NAME,B.SJHM FROM workflow_node A,GG_USER B WHERE A.CURRENT_DEALER_ID=B.ID AND A.FLOWID=:flowId AND A.IS_ADMIN=1 AND A.NODE_TEMPLATE_ID=:nodeId"); Map dealerMap=baseDao.queryForMap(selSql.toString(),new SqlParameter().addValue("flowId", flowId).addValue("nodeId", Constants.REMIND_DEAL)); System.out.println(dealerMap); map.put("dealerMap", dealerMap); //应维护配置数量 sql.setLength(0); param.put("orderId",remindMap.get("ID")); sql.append("SELECT ID FROM SC_WORKFLOW_CI_REMIND_DETAIL WHERE ORDER_ID=:orderId"); List detailCountList=baseDao.queryForList(sql.toString(),param); map.put("detailCount", detailCountList.size()); if(detailCountList==null || detailCountList.size()==0)map.put("detailCount", 0); //实际维护配置数量 sql.setLength(0); param.put("state",Constants.CI_REMIND_DETAIL_STATE_ONE); sql.append("SELECT ID FROM SC_WORKFLOW_CI_REMIND_DETAIL WHERE ORDER_ID=:orderId AND DEAL_STATE=:state"); List detailStateCountList=baseDao.queryForList(sql.toString(),param); map.put("detailStateCount", detailStateCountList.size()); if(detailStateCountList==null || detailStateCountList.size()==0)map.put("detailStateCount", 0); //审核人 sql.setLength(0); sql.append("SELECT * FROM WORKFLOW_NODE WHERE NODE_TEMPLATE_ID=:templateId AND FLOWID=:flowId ORDER BY CREATETIME DESC"); param.put("templateId", "04e5ae6861fd4ef6bbc521e30b4d11bc"); param.put("flowId", flowId); List nodeList=baseDao.queryForList(sql.toString(), param); if(nodeList!=null && nodeList.size()>0){ map.put("node", nodeList.get(0)); } //文档列表 String fileSql = "select * from GG_FILES where EXTEND1=:BUSINESS_ID AND DEL_FLAG = 1 order by ORDERNUM"; List fileList = baseDao.queryForList(fileSql,new SqlParameter("BUSINESS_ID",flowId)); map.put("fileList", fileList); //涉及工单列表 List orderList=orderService.queryLinkOrders(flowId); if(orderList!=null && orderList.size()>0){ for(Map orderMap:orderList){ orderMap.put("WFSTATE", Constants.getWORKFLOW_BASE_WFSTATE_Label(orderMap.get("WFSTATE").toString())); } } map.put("orderList", orderList); } map.put("remindMap", remindMap); return map; } @Override public Map getPatrolInfo(String patrolId) { String sql = " select * from SC_WORKFLOW_CI_REMIND_DETAIL where id = :patrolId"; SqlParameter param = new SqlParameter(); param.addValue("patrolId", patrolId); return baseDao.queryForMap(sql, param); } @Override public Map getRemindDetail(String orderId) { Map param=new HashMap(); param.put("orderId", orderId); StringBuilder sql=new StringBuilder(); sql.append("SELECT c.USER_NAME,c.ORDER_NOTE,b.CINAME,b.POSITION,c.FINISH_TIME,c.DEAL_STATE FROM SC_WORKFLOW_CI_REMIND_DETAIL c,CMDB_CI_BASE b "); sql.append(" WHERE c.CI_ID=b.ID AND c.ORDER_ID=:orderId"); List detailList=baseDao.queryForList(sql.toString(),param); if(detailList!=null && detailList.size()>0){ for(Map map :detailList){ map.put("DEAL_STATE", Constants.getmapCI_REMIND_DETAIL_STATE(Integer.parseInt(map.get("DEAL_STATE").toString()))); } } SC_WORKFLOW_CI_REMIND remind = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById(); Map map = new HashMap(); map.put("remind", remind); map.put("detailList", detailList); return map; } }