package cn.ksource.web.facade.ciremind; 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.ConvertUtil; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.SysInfoMsg; 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.service.order.OrderService; import cn.ksource.web.service.record.RecordService; import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService; import cn.ksource.web.util.DateParepareUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @Service("ciRemindFacade") public class CiRemindFacadeImpl implements CiRemindFacade { @Autowired private BaseDao baseDao; @Autowired private WorkflowCoreService workflowCoreService; @Autowired private WorkFlowSupportService workFlowSupportService; @Autowired private OrderService orderService; @Autowired private RecordService recordService; @Override public PageInfo queryMyRemindData(PageInfo pageInfo,Map param) { String userId=param.get("userId"); String flowState = param.get("flowState"); String nodeState = param.get("nodeState"); String customerId = param.get("customerId"); String subCustomerId = param.get("subCustomerId"); String orderCode = param.get("orderCode"); param.put("userId", userId); param.put("nodeState", nodeState); param.put("flowState", flowState); param.put("customerId", customerId); param.put("subCustomerId", subCustomerId); param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND)); param.put("orderCode", "%"+orderCode+"%"); StringBuilder builder = getMyRemindSql(param); return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), param); } @Override public int queryMyRemindCount(Map param) { String userId=param.get("userId"); String flowState = param.get("flowState"); String nodeState = param.get("nodeState"); String customerId = param.get("customerId"); String subCustomerId = param.get("subCustomerId"); String orderCode = param.get("orderCode"); param.put("userId", userId); param.put("nodeState", nodeState); param.put("flowState", flowState); param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND)); param.put("orderCode", "%"+orderCode+"%"); param.put("customerId", customerId); param.put("subCustomerId", subCustomerId); StringBuilder builder = getMyRemindSql(param); String sql = "select count(*) from ( " + builder.toString() + " ) t"; return baseDao.queryForInteger(sql,param); } /** * 获取我的工单 * @param request * @return */ private StringBuilder getMyRemindSql(Map param){ String userId=param.get("userId"); String flowState = param.get("flowState"); String nodeState = param.get("nodeState"); String customerId = param.get("customerId"); String subCustomerId = param.get("subCustomerId"); StringBuilder builder = new StringBuilder(); builder.append(" select n.*,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, "); builder.append(" t.PLAN_EXECUTION_DATE, 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 "); builder.append(" inner join CI_REMIND_TIMERTASK t on r.FLOW_ID = t.FLOW_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,NODEID,NODETIME,NODESTATE "); builder.append(" ) n "); builder.append(" on b.ID = n.FLOWID "); //工单类型 builder.append(" where 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 "); } //工单编号 String orderCode = param.get("orderCode"); if(StringUtil.notEmpty(orderCode)) { builder.append(" AND r.ORDER_CODE LIKE :orderCode"); } builder.append(" order by n.NODESTATE ASC,n.NODETIME desc,b.CREATETIME desc "); return builder; } /** * 例行巡检基本信息 */ @Override public Map queryRemindInfo(String orderId) { String sql = " select b.WFSTATE,h.*,t.PLAN_EXECUTION_DATE from SC_WORKFLOW_CI_REMIND h ,CI_REMIND_TIMERTASK t, WORKFLOW_BASE b " + " where h.FLOW_ID = t.FLOW_ID and b.ID=h.FLOW_ID and h.id = :orderId "; return baseDao.queryForMap(sql,new SqlParameter("orderId",orderId)); } /** * 工单响应 * @param request * @return */ @Override public boolean answerSubmit(Map param) { String orderId = param.get("orderId"); SC_WORKFLOW_CI_REMIND remind = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById(); String nodeId = param.get("nodeId"); WORKFLOW_BASE base = new WORKFLOW_BASE(remind.getFlow_id()).getInstanceById(); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); NodeAnswerEntity entity = new NodeAnswerEntity(); entity.setUser_id(param.get("ID")); entity.setUser_name(param.get("ZSXM")); boolean flag = workflowCoreService.answerNode(base, node, entity); return flag; } /** * 关闭流程 */ public void closeWorkFlowSubmit(Map param){ String orderId = param.get("orderId"); String closeNote = param.get("closeNote"); String nodeId = param.get("nodeId"); String userName = param.get("userName"); SC_WORKFLOW_CI_REMIND order = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById(); WORKFLOW_BASE base = new WORKFLOW_BASE(order.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); } /** * 服务台调度 提交 */ @Override public SysInfoMsg doServerDispatch(Map param,SC_WORKFLOW_CI_REMIND remind,String[] ciIdAry) { String orderId =param.get("orderId"); String nodeId =param.get("nodeId"); String executorIds = param.get("executorIds"); String executorNames = param.get("executorNames"); String main_executorId = param.get("main_executorId"); String flowNote = param.get("flowNote"); String dealUserName = ""; String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id(); //更新业务表数据 remind.setId(orderId).update(); //设定执行人 List userList = new ArrayList(); String[] executorIdAry = executorIds.split(","); String[] executorNameAry = executorNames.split(","); Map cacheuser = new HashMap(); for(int i=0;i0){ ArrayList paramList = new ArrayList(); for(int i=0;i 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 List getRemindCiList(Map param) { String sql = " select c.business_id cateId from ci_remind_timertask a , ci_remind_customer_item b, ci_remind_item c " + " where a.customer_item_id=b.id and b.item_id = c.id and a.flow_id = :flowId "; String cateId = baseDao.queryForString(sql,param); param.put("cateId",cateId); String ciIds = ConvertUtil.obj2Str(param.get("ciIds")); sql = " select b.*,c.NAME CATENAME from cmdb_ci_base b " + " inner join cmdb_ci_category c on b.LV3_ID = c.ID " + " inner join CI_REMIND_CILIST r on r.CI_ID = b.id " + " where b.CUS_ID = :customerId and b.SUB_CUS_ID=:subCustomerId " ; if(StringUtil.isNotBlank(ciIds)){ sql = sql + " and b.ID not in (:ciIds) "; param.put("ciIds", Arrays.asList(ciIds.split(","))); } if (StringUtil.notEmpty(cateId)) { sql = sql + " and ( b.lv3_id=:cateId OR b.lv2_id=:cateId )"; } sql = sql + " and b.STATE=1 group by b.id "; return baseDao.queryForList(sql,param); } @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 SysInfoMsg doEngineerPatrol(Map param) { String orderId = ConvertUtil.obj2StrBlank(param.get("orderId")); String nodeId = ConvertUtil.obj2StrBlank(param.get("nodeId")); String note = ConvertUtil.obj2StrBlank(param.get("flowNote")); String summary = ConvertUtil.obj2StrBlank(param.get("summary")); String userName = param.get("ZSXM"); String userId = param.get("Id"); new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().setOrder_note(summary).update(); String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id(); 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(nodeName+":"+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); //环节流转 WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setNote(note); support.setUserName(userName); support.setUserId(userId); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND); Integer is_admin = new WORKFLOW_NODE(nodeId).getInstanceById().getIs_admin(); if(is_admin!=null&&is_admin==1){ support.setNextNodeTemplateId(Constants.REMIND_APPROVE); support.setEverDealflag(true); support.setEverNodeTemplateId(Constants.REMIND_DISPATCH); } SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); return msg; } /** * 回退 */ @Override public void doSendback(Map param) { String orderId = param.get("orderId"); String nodeId = param.get("nodeId"); String lastNodeTemplateId = param.get("lastNodeTemplateId"); String note = param.get("backNote"); String userName = ConvertUtil.obj2StrBlank(param.get("ZSXM")); String userId = ConvertUtil.obj2StrBlank(param.get("ID")); String flowId = param.get("flowId"); 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_CI_REMIND); SysInfoMsg msg = workFlowSupportService.doOrderSendback(support); } /** * 结束流程 */ @Override public SysInfoMsg doEndRemindFlow(Map param) { String orderId = ConvertUtil.obj2StrBlank(param.get("orderId")); String nodeId = ConvertUtil.obj2StrBlank(param.get("nodeId")); String note = ConvertUtil.obj2StrBlank(param.get("flowNote")); String userName = param.get("ZSXM").toString(); String userId = param.get("Id").toString(); String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id(); 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(nodeName+":"+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); //环节流转 WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setFlowId(flowId); support.setNodeId(nodeId); support.setNote(note); support.setUserName(userName); support.setUserId(userId); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND); support.setFlowEndflag(true); SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); Long endTime = DateUtil.getCurrentDate14(); new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().setFinish_time(endTime).update(); return msg; } @Override public Map getRemindeItem(Map param) { String flowId= param.get("flowId"); 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",String.valueOf(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",String.valueOf(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 getRemindDetail(Map param) { String orderId=param.get("orderId"); 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; } //例行维护管理 @Override public int queryJxzRemindOrderCount(Map param) { StringBuilder buffer = new StringBuilder("SELECT COUNT(b.ID) FROM WORKFLOW_BASE b WHERE b.BUSINESSTYPE = :businessType AND b.WFSTATE = :wfstate "); return baseDao.queryForInteger(buffer.toString(),new SqlParameter("businessType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND).addValue("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DOING)); } @Override public Map queryNodeCount(Map param) { StringBuilder buffer = new StringBuilder("SELECT n.NODE_TEMPLATE_ID,COUNT(n.NODE_TEMPLATE_ID) AS num FROM WORKFLOW_NODE n, WORKFLOW_BASE b WHERE b.CURRENT_NODE_ID = n.ID and b.BUSINESSTYPE = :businessType AND b.WFSTATE = :wfstate "); buffer.append(" GROUP BY n.NODE_TEMPLATE_ID "); List list = baseDao.queryForList(buffer.toString(),new SqlParameter("businessType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND).addValue("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DOING)); Map resultMap = new HashMap(); if(null != list && list.size()>0) { for(Map map : list) { resultMap.put(map.get("NODE_TEMPLATE_ID"), map.get("num")); } } return resultMap; } @Override public PageInfo queryRemindOrderList(PageInfo pageInfo,Map param) { StringBuilder builder = new StringBuilder(); String flowState = param.get("flowState"); String orderCode = param.get("orderCode"); String customerId = param.get("customerId"); String subCustomerId = param.get("subCustomerId"); String nodeTempId = param.get("nodeTempId"); param.put("customerId", customerId); param.put("subCustomerId", subCustomerId); param.put("flowState", flowState); param.put("orderCode", "%"+orderCode+"%"); param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND)); param.put("nodeTempId", nodeTempId); builder = getAllRemindSql(param); return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), param); } @Override public int queryRemindOrderCount(Map param) { StringBuilder builder = new StringBuilder(); String flowState = param.get("flowState"); String orderCode = param.get("orderCode"); String customerId = param.get("customerId"); String subCustomerId = param.get("subCustomerId"); param.put("flowState", flowState); param.put("customerId", customerId); param.put("subCustomerId", subCustomerId); param.put("orderCode", "%"+orderCode+"%"); param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND)); String nodeTempId = param.get("nodeTempId"); param.put("nodeTempId", nodeTempId); builder = getAllRemindSql(param); String sql = "select count(*) from ( " + builder.toString() + " ) t" ; return baseDao.queryForInteger(sql.toString(),param); } /** * 服务台工单列表 * @param request * @return */ private StringBuilder getAllRemindSql(Map param){ String flowState = param.get("flowState"); String customerId = param.get("customerId"); String subCustomerId = param.get("subCustomerId"); String nodeTempId = param.get("nodeTempId"); StringBuilder builder = new StringBuilder(); builder.append(" select b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, "); builder.append(" t.PLAN_EXECUTION_DATE,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 "); builder.append(" 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 "); } //客户 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 = param.get("orderCode"); if(StringUtil.notEmpty(orderCode)) { builder.append(" AND r.ORDER_CODE LIKE :orderCode"); } 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,t.PLAN_EXECUTION_DATE desc "); return builder; } @Override public Map getRemindItemSubTimerTaskData(String customerId, String month) { //查询该客户下的所有下属单位 String sql="SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID=:customerId AND DEL_FLAG=1"; List subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId)); Map currentCustomer = new HashMap(); currentCustomer.put("ID", customerId); currentCustomer.put("CUSTOMER_NAME", new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById().getCustomer_name()); subList.add(0, currentCustomer); if(!StringUtil.notEmpty(month)) { month = DateUtil.getCurrentDate6().toString(); } String monthBeginDay = month+"01"; //查询当月的所有天数 String monthLastDay = DateParepareUtil.lastDayMonth(month, "yyyyMM", "yyyyMMdd"); List days = DateUtil.getBetweenTwoDateCycleList(monthBeginDay, monthLastDay, 2,1, "yyyyMMdd","yyyyMMdd"); if(subList!=null && subList.size()>0){ for(Map subMap:subList){ //查询执行计划 StringBuilder taskSql=new StringBuilder("SELECT A.PLAN_EXECUTION_DATE,A.STATE,A.FLOW_ID,A.SUB_CUSTOMER_ID FROM CI_REMIND_TIMERTASK A,CI_REMIND_CUSTOMER_ITEM B WHERE A.CUSTOMER_ITEM_ID=B.ID "); taskSql.append(" AND A.CUSTOMER_ID=:customerId AND A.SUB_CUSTOMER_ID=:subId AND A.PLAN_EXECUTION_DATE>:beginDate AND A.PLAN_EXECUTION_DATE<:endDate"); List taskList=baseDao.queryForList(taskSql.toString(), new SqlParameter().addValue("customerId", customerId).addValue("subId", subMap.get("ID")) .addValue("beginDate", monthBeginDay).addValue("endDate", monthLastDay)); List isMarkList = new ArrayList(); for(String day:days){ Map markMap=new HashMap(); markMap.put("day", day); int zjh = 0; int yzx = 0; if(taskList!=null && taskList.size()>0){ List plans = new ArrayList(); for(Map map:taskList){ Map plan = new HashMap(); Integer task=2; Integer mark=0; String orderId = new String(); String plan_execution_date = ConvertUtil.obj2StrBlank(map.get("PLAN_EXECUTION_DATE")); if(plan_execution_date.equals(day)){ task=1; if(String.valueOf(map.get("STATE")).equals("1")){ mark=1; }else if(String.valueOf(map.get("STATE")).equals("2")){ yzx++; mark=2; orderId = ConvertUtil.obj2StrBlank(map.get("FLOW_ID")); } zjh++; } plan.put("task", String.valueOf(task)); plan.put("mark", String.valueOf(mark)); plan.put("orderId", orderId); plans.add(plan); } markMap.put("plans", plans); } markMap.put("zjh", zjh); markMap.put("yzx", yzx); isMarkList.add(markMap); } subMap.put("isMarkList", isMarkList); } } System.out.println(subList); Map map = new HashMap(); map.put("subList", subList); map.put("days", days); return map; } @Override public List querySubCustomerRemindPlanForDay(Map param) { String customerId = param.get("customerId"); String subCustomerId = param.get("subCustomerId"); String day = param.get("day"); String selectSql = "SELECT A.*,C.ITEM_NAME,C.ITEM_NOTE ,W.ID ORDER_ID FROM " + " CI_REMIND_TIMERTASK A,CI_REMIND_CUSTOMER_ITEM B,CI_REMIND_ITEM C ,SC_WORKFLOW_CI_REMIND W " + " WHERE A.CUSTOMER_ITEM_ID = B.ID AND B.ITEM_ID = C.ID AND A.FLOW_ID=W.FLOW_ID " + " AND A.CUSTOMER_ID = :customerId AND A.SUB_CUSTOMER_ID = :subCustomerId " + " AND A.PLAN_EXECUTION_DATE = :day AND B.USING_STATE = 1 " + " ORDER BY A.PLAN_EXECUTION_DATE DESC "; //Map paramMap = new HashMap(); param.put("customerId", customerId); param.put("subCustomerId", subCustomerId); param.put("day", day); List plans = baseDao.queryForList(selectSql,param); return plans; } @Override public PageInfo getRemindItemData(PageInfo pageInfo,Map param) { String customerId=param.get("customerId"); String itemName=param.get("itemName"); String subId=param.get("subId"); StringBuilder sql = new StringBuilder(); sql.append("SELECT A.*,B.ID AS PROJECT_ITEM_ID,S.CUSTOMER_NAME " + " FROM (SELECT D.ID,D.CUSTOMER_NAME FROM SC_PARTNER_CUSTOMER_SUB D UNION ALL SELECT E.ID,E.CUSTOMER_NAME FROM SC_PARTNER_CUSTOMER_INFO E) S, CI_REMIND_ITEM A ," + " CI_REMIND_CUSTOMER_ITEM B LEFT JOIN CI_REMIND_CUSTOMER_ITEM_CYCLE C ON C.PROJECT_ITEM_ID=B.ID " + " WHERE A.ID=B.ITEM_ID AND S.ID=C.SUB_CUSTOMER_ID AND B.USING_STATE=1 "); if(StringUtil.notEmpty(itemName)){ sql.append(" AND A.ITEM_NAME LIKE :itemName"); } if(StringUtil.notEmpty(subId)){ sql.append(" AND C.SUB_CUSTOMER_ID=:subId"); } sql.append(" AND B.CUSTOMER_ID=:customerId "); sql.append(" ORDER BY A.ITEM_TYPE,ORDER_NUM ASC"); //SqlParameter paramMap = new SqlParameter(); param.put("itemName", "%"+itemName+"%"); param.put("subId", subId); param.put("customerId", customerId); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), param); } @Override public Integer getRemindItemCount(Map param) { String customerId=param.get("customerId"); String itemName=param.get("itemName"); String subId=param.get("subId"); StringBuilder sql = new StringBuilder(); sql.append("SELECT count(*) FROM CI_REMIND_ITEM A ,CI_REMIND_CUSTOMER_ITEM B LEFT JOIN CI_REMIND_CUSTOMER_ITEM_CYCLE C ON C.PROJECT_ITEM_ID=B.ID WHERE A.ID=B.ITEM_ID AND B.USING_STATE=1 "); if(StringUtil.notEmpty(itemName)){ sql.append(" AND A.ITEM_NAME LIKE:itemName"); } if(StringUtil.notEmpty(subId)){ sql.append(" AND C.SUB_CUSTOMER_ID=:subId"); } sql.append(" AND B.CUSTOMER_ID=:customerId "); //SqlParameter paramMap = new SqlParameter(); param.put("customerId", customerId); param.put("itemName", "%"+itemName+"%"); param.put("subId", subId); return baseDao.queryForInteger(sql.toString(), param); } @Override public Map queryRemind(String customerItemId) { String selectSql = "SELECT A.ID,A.ITEM_NAME,A.CYCLE,A.PRIORITY_LEVEL_ID,A.PRIORITY_LEVEL_NAME," + " A.ITEM_NOTE,A.ORDER_NUM,A.STATE,A.BUSINESS_ID,A.BUSINESS_NAME,A.ITEM_TYPE,B.ID AS PROJECT_ITEM_ID,B.CUSTOMER_ID " + " FROM CI_REMIND_ITEM A,CI_REMIND_CUSTOMER_ITEM B WHERE A.ID = B.ITEM_ID AND B.ID = :id "; Map item = baseDao.queryForMap(selectSql,new SqlParameter("id",customerItemId)); return item; } /** * 查询执行计划 * @param customerItemId * @param customerId * @param subCustomerId * @return */ @Override public List queryItemPlan(String customerItemId,String customerId,String subCustomerId) { List result = new ArrayList(); if(StringUtil.notEmpty(customerId)) { SC_PARTNER_CUSTOMER_INFO customer = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById(); long beginTime = customer.getValid_begin_date(); long endTime = customer.getValid_end_date(); Map paramMap = new HashMap(); //查询所有已经生成的计划 String selectSql = "SELECT A.*,W.ID ORDER_ID " + " FROM CI_REMIND_TIMERTASK A LEFT JOIN SC_WORKFLOW_CI_REMIND W ON A.FLOW_ID=W.FLOW_ID " + " WHERE A.CUSTOMER_ITEM_ID = :customerItemId AND A.CUSTOMER_ID = :customerId "; paramMap.put("customerId", customerId); paramMap.put("customerItemId", customerItemId); selectSql += " AND A.SUB_CUSTOMER_ID = :subId "; if(StringUtil.notEmpty(subCustomerId)) { paramMap.put("subId", subCustomerId); } else { paramMap.put("subId", customerId); } selectSql += " ORDER BY A.PLAN_EXECUTION_DATE "; List plans = baseDao.queryForList(selectSql,paramMap); Map cacheMap = new HashMap(); if(null!=plans && plans.size()>0) { for(Map plan : plans) { String day = ConvertUtil.obj2StrBlank(plan.get("PLAN_EXECUTION_DATE")); cacheMap.put(day, plan); } } //求出所有月份的集合 List months = DateUtil.getBetweenTwoDateCycleList(ConvertUtil.obj2StrBlank(beginTime), ConvertUtil.obj2StrBlank(endTime), 1,1, "yyyyMMdd","yyyyMM"); if(null!=months && months.size()>0) { for(int i=0; i days = DateUtil.getBetweenTwoDateCycleList(beginDay, lastDay, 2,1, "yyyyMMdd","yyyyMMdd"); List newList = new ArrayList(); for(String str : days) { Map map = new HashMap(); if(cacheMap.containsKey(str)) { map = cacheMap.get(str); map.put("day", str); map.put("check", 1); } else { map.put("day",str); map.put("check", 2); } //是否显示复选框 long date = ConvertUtil.obj2Long(str); if(date>=beginTime && date<=endTime) { map.put("showbox", 1); } else { map.put("showbox", 2); } //今天之前的复选框不可用 long today = DateUtil.getCurrentDate8(); if(date>today) { map.put("isUse", 1); } else { map.put("isUse", 2); } newList.add(map); } Map map = new HashMap(); map.put("month", month); map.put("days", newList); result.add(map); } } } System.out.println(JsonUtil.list2Json(result)); return result; } @Override public PageInfo getRemindOrderList(PageInfo pageInfo,Map param) { String customerId=param.get("customerId"); String subId=param.get("subId"); String beginDate=param.get("beginDay"); String endDate=param.get("endDay"); StringBuilder sql = new StringBuilder(); sql.append(" SELECT A.SUB_CUSTOMER_ID SUB_CUS_ID,A.FLOW_ID,B.*,D.ITEM_NAME,A.PLAN_EXECUTION_DATE,A.STATE AS TIMESTATE,A.CUSTOMER_ITEM_ID FROM CI_REMIND_TIMERTASK A LEFT JOIN SC_WORKFLOW_CI_REMIND B ON A.FLOW_ID=B.FLOW_ID "); sql.append(" LEFT JOIN CI_REMIND_CUSTOMER_ITEM C ON A.CUSTOMER_ITEM_ID=C.ID LEFT JOIN CI_REMIND_ITEM D ON C.ITEM_ID=D.ID"); sql.append(" WHERE A.STATE != 3 "); //SqlParameter paramMap = new SqlParameter(); if(StringUtil.notEmpty(customerId)) { sql.append("AND A.CUSTOMER_ID=:customerId "); param.put("customerId", customerId); } if(StringUtil.notEmpty(subId)) { sql.append("AND A.SUB_CUSTOMER_ID=:subId "); param.put("subId", subId); } if(StringUtil.notEmpty(beginDate) && StringUtil.notEmpty(endDate)){ sql.append(" AND A.PLAN_EXECUTION_DATE>=:beginDate AND A.PLAN_EXECUTION_DATE<=:endDate"); param.put("beginDate", beginDate); param.put("endDate", endDate); } sql.append(" ORDER BY A.PLAN_EXECUTION_DATE DESC"); param.put("customerId", customerId); PageInfo list=baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), param); if(list!=null && list.getDatas().size()>0){ for(Map map :list.getDatas()){ map.put("TIMESTATE_LABEL", Constants.getmapCI_REMIND_TIMERTASK_STATE_Label(Integer.parseInt(map.get("TIMESTATE").toString()))); } } return list; } @Override public Integer getRemindOrderCount(Map param){ String customerId=param.get("customerId"); String subId=param.get("subId"); String beginDate=param.get("beginDay"); String endDate=param.get("endDay"); StringBuilder sql = new StringBuilder(); sql.append(" SELECT COUNT(A.ID) FROM CI_REMIND_TIMERTASK A LEFT JOIN SC_WORKFLOW_CI_REMIND B ON A.FLOW_ID=B.FLOW_ID "); sql.append(" LEFT JOIN CI_REMIND_CUSTOMER_ITEM C ON A.CUSTOMER_ITEM_ID=C.ID LEFT JOIN CI_REMIND_ITEM D ON C.ITEM_ID=D.ID"); sql.append(" WHERE A.STATE != 3 "); //SqlParameter paramMap = new SqlParameter(); if(StringUtil.notEmpty(customerId)) { sql.append("AND A.CUSTOMER_ID=:customerId "); param.put("customerId", customerId); } if(StringUtil.notEmpty(subId)) { sql.append("AND A.SUB_CUSTOMER_ID=:subId "); param.put("subId", subId); } if(StringUtil.notEmpty(beginDate) && StringUtil.notEmpty(endDate)){ sql.append(" AND A.PLAN_EXECUTION_DATE>=:beginDate AND A.PLAN_EXECUTION_DATE<=:endDate"); param.put("beginDate", beginDate); param.put("endDate", endDate); } param.put("customerId", customerId); param.put("subId", subId); param.put("beginDate", beginDate); param.put("endDate", endDate); return baseDao.queryForInteger(sql.toString(),param); } @Override public List getSubRemindCiList(Map param) { StringBuilder sql =new StringBuilder(); if(StringUtil.isBlank(param.get("flowId"))){ sql.append("SELECT A.*,B.STATE,B.PROJECT_ITEM_ID FROM cmdb_ci_base A ,CI_REMIND_CILIST B ,CI_REMIND_CUSTOMER_ITEM C"); sql.append(" WHERE A.ID=B.CI_ID AND B.PROJECT_ITEM_ID=C.ID AND B.PROJECT_ITEM_ID=:itemId"); if(StringUtil.isNotBlank(param.get("subCusId"))){ sql.append(" AND A.SUB_CUS_ID=:subCusId"); } }else{ sql.append(" select a.* from cmdb_ci_base a, sc_workflow_ci_remind_detail b,sc_workflow_ci_remind c "); sql.append(" where a.id = b.ci_id and b.order_id = c.id and c.flow_id = :flowId "); } return baseDao.queryForList(sql.toString(), param); } @Override public int queryProItemCount(Map param) { String customerId = param.get("customerId"); param.put("customerId", customerId); String sql = "SELECT COUNT(A.ID) FROM CI_REMIND_CUSTOMER_ITEM A,CI_REMIND_ITEM B WHERE A.ITEM_ID = B.ID AND A.USING_STATE = 1 AND A.CUSTOMER_ID = :customerId ORDER BY B.ORDER_NUM "; int count = baseDao.queryForInteger(sql, param); return count; } @Override public PageInfo queryProItemsData(PageInfo pageInfo,Map param) { String customerId = param.get("customerId"); String sql = "SELECT A.*,B.ITEM_NAME,B.ITEM_NOTE,B.PRIORITY_LEVEL_NAME,B.BUSINESS_NAME " + " FROM CI_REMIND_CUSTOMER_ITEM A,CI_REMIND_ITEM B WHERE A.ITEM_ID = B.ID " + " AND A.USING_STATE = 1 AND A.CUSTOMER_ID = :customerId ORDER BY B.ORDER_NUM "; param.put("customerId", customerId); PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql, param); return info; } @Override public Map queryItemSubCustomerPlan(String customerId,String itemId,String mon) { //查询该客户下的所有下属单位 String sql="SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID=:customerId AND DEL_FLAG=1"; List subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId)); Map currentCustomer = new HashMap(); currentCustomer.put("ID", customerId); currentCustomer.put("CUSTOMER_NAME", new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById().getCustomer_name()); subList.add(0, currentCustomer); String year = DateUtil.format("yyyy", mon); String mm = DateUtil.format("MM", mon); String[] time = DateParepareUtil.queryFirstLastDate(year,mm); String beginDay = time[0].replaceAll("-", ""); //得到当月的最后一天 String lastDay = time[1].replaceAll("-", ""); List days = DateUtil.getBetweenTwoDateCycleList(beginDay, lastDay, 2,1, "yyyyMMdd","yyyyMMdd"); Map resultMap = new HashMap(); resultMap.put("month", mon); resultMap.put("days", days); List result = new ArrayList(); if(StringUtil.notEmpty(customerId)) { SC_PARTNER_CUSTOMER_INFO customer = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById(); long beginTime = customer.getValid_begin_date(); long endTime = customer.getValid_end_date(); Map paramMap = new HashMap(); //查询该客户下所有已经生成的计划 String selectSql = "SELECT A.*,W.ID ORDER_ID FROM CI_REMIND_TIMERTASK A,CI_REMIND_CUSTOMER_ITEM B ,SC_WORKFLOW_CI_REMIND W " + " WHERE A.CUSTOMER_ITEM_ID = B.ID AND A.FLOW_ID=W.FLOW_ID " + " AND A.CUSTOMER_ITEM_ID = :projectItemId " + " AND B.CUSTOMER_ID = :customerId AND B.USING_STATE = 1 "; paramMap.put("projectItemId", itemId); paramMap.put("customerId", customerId); selectSql += "AND A.PLAN_EXECUTION_DATE >= :beginTime AND A.PLAN_EXECUTION_DATE <= :endTime "; paramMap.put("beginTime", beginDay); paramMap.put("endTime", lastDay); selectSql += " ORDER BY A.PLAN_EXECUTION_DATE "; List plans = baseDao.queryForList(selectSql,paramMap); Map cacheMap = new HashMap(); if(null!=plans && plans.size()>0) { for(Map plan : plans) { String subCustomerId = ConvertUtil.obj2StrBlank(plan.get("SUB_CUSTOMER_ID")); String plan_execution_date = ConvertUtil.obj2StrBlank(plan.get("PLAN_EXECUTION_DATE")); cacheMap.put(subCustomerId+"-"+plan_execution_date, plan); } } if(null!=subList && subList.size()>0) { for(Map cus : subList) { String cusId = ConvertUtil.obj2StrBlank(cus.get("ID")); String cusName = ConvertUtil.obj2StrBlank(cus.get("CUSTOMER_NAME")); List newList = new ArrayList(); for(String str : days) { Map map = new HashMap(); String unitKey = cusId+"-"+str; if(cacheMap.containsKey(unitKey)) { map = cacheMap.get(unitKey); } newList.add(map); } Map map = new HashMap(); map.put("cusName", cusName); map.put("msgs", newList); result.add(map); } } } resultMap.put("rs", result); return resultMap; } @Override public String queryZbName(String itemId) { String selectSql = "SELECT B.ITEM_NAME FROM CI_REMIND_CUSTOMER_ITEM A,CI_REMIND_ITEM B WHERE A.ITEM_ID = B.ID AND A.ID = :itemId "; return baseDao.queryForString(selectSql,new SqlParameter("itemId",itemId)); } @Override public List queryCustomers(Map param) { String customerId = param.get("customerId"); //查询该客户下的所有下属单位 String sql="SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID=:customerId AND DEL_FLAG=1"; List subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId)); Map currentCustomer = new HashMap(); currentCustomer.put("ID", customerId); SC_PARTNER_CUSTOMER_INFO mainCus = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById(); currentCustomer.put("CUSTOMER_NAME", mainCus.getCustomer_name()); currentCustomer.put("CONTACT", mainCus.getContact()); currentCustomer.put("PHONE", mainCus.getPhone()); subList.add(0, currentCustomer); return subList; } @Override public Map queryCusItemPlanReport(String customerId,String subCustomerId, String mon) { //查询该客户下的所有指标 String sql="SELECT A.*,B.ITEM_NAME,B.ITEM_NOTE,B.PRIORITY_LEVEL_NAME,B.BUSINESS_NAME " + " FROM CI_REMIND_CUSTOMER_ITEM A,CI_REMIND_ITEM B " + " WHERE A.ITEM_ID = B.ID AND A.USING_STATE = 1 AND A.CUSTOMER_ID = :customerId ORDER BY B.ORDER_NUM "; List subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId)); String year = DateUtil.format("yyyy", mon); String mm = DateUtil.format("MM", mon); String[] time = DateParepareUtil.queryFirstLastDate(year,mm); String beginDay = time[0].replaceAll("-", ""); //得到当月的最后一天 String lastDay = time[1].replaceAll("-", ""); List days = DateUtil.getBetweenTwoDateCycleList(beginDay, lastDay, 2,1, "yyyyMMdd","yyyyMMdd"); Map resultMap = new HashMap(); resultMap.put("month", mon); resultMap.put("days", days); List result = new ArrayList(); if(StringUtil.notEmpty(customerId)) { SC_PARTNER_CUSTOMER_INFO project = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById(); long beginTime = project.getValid_begin_date(); long endTime = project.getValid_end_date(); Map paramMap = new HashMap(); //查询该客户下所有已经生成的计划 String selectSql = "SELECT A.*,W.ID ORDER_ID FROM CI_REMIND_TIMERTASK A,CI_REMIND_CUSTOMER_ITEM B,SC_WORKFLOW_CI_REMIND W " + " WHERE A.CUSTOMER_ITEM_ID = B.ID AND A.FLOW_ID=W.FLOW_ID AND B.CUSTOMER_ID = :customerId " + " AND A.SUB_CUSTOMER_ID = :subCustomerId AND B.USING_STATE = 1 "; paramMap.put("customerId", customerId); selectSql += "AND A.PLAN_EXECUTION_DATE >= :beginTime AND A.PLAN_EXECUTION_DATE <= :endTime "; paramMap.put("beginTime", beginDay); paramMap.put("endTime", lastDay); paramMap.put("subCustomerId", subCustomerId); selectSql += " ORDER BY A.PLAN_EXECUTION_DATE "; List plans = baseDao.queryForList(selectSql,paramMap); Map cacheMap = new HashMap(); if(null!=plans && plans.size()>0) { for(Map plan : plans) { String project_item_id = ConvertUtil.obj2StrBlank(plan.get("CUSTOMER_ITEM_ID")); String plan_execution_date = ConvertUtil.obj2StrBlank(plan.get("PLAN_EXECUTION_DATE")); cacheMap.put(project_item_id+"-"+plan_execution_date, plan); } } if(null!=subList && subList.size()>0) { for(Map zb : subList) { String zbId = ConvertUtil.obj2StrBlank(zb.get("ID")); String zbName = ConvertUtil.obj2StrBlank(zb.get("ITEM_NAME")); List newList = new ArrayList(); for(String str : days) { Map map = new HashMap(); String unitKey = zbId+"-"+str; if(cacheMap.containsKey(unitKey)) { map = cacheMap.get(unitKey); } newList.add(map); } Map map = new HashMap(); map.put("zbName", zbName); map.put("msgs", newList); result.add(map); } } } resultMap.put("rs", result); return resultMap; } @Override public String queryNodeId(String flowId,String userId) { String selectSql = "SELECT ID FROM WORKFLOW_NODE WHERE FLOWID=:flowId AND CURRENT_DEALER_ID=:userId AND (FLOWSTATE=1 OR FLOWSTATE =2) "; return baseDao.queryForString(selectSql,new SqlParameter("flowId",flowId).addValue("userId", userId)); } @Override public PageInfo remindPlanData(PageInfo pageInfo,Map param) { String ciId=param.get("ciId"); String selectSql = "SELECT C.* FROM CI_REMIND_CILIST A,CI_REMIND_CUSTOMER_ITEM B,CI_REMIND_TIMERTASK C WHERE A.PROJECT_ITEM_ID = B.ID AND B.ID = C.CUSTOMER_ITEM_ID AND A.CI_ID = :ciId AND A.STATE = 1 AND C.STATE = 2 ORDER BY C.PLAN_EXECUTION_DATE DESC "; param.put("ciId", ciId); PageInfo plans=baseDao.queryforSplitPageInfo(pageInfo, selectSql, param); return plans; } @Override public int remindPlanCount(Map param) { String ciId=param.get("ciId"); String selectSql = "SELECT COUNT(C.ID) FROM CI_REMIND_CILIST A,CI_REMIND_CUSTOMER_ITEM B,CI_REMIND_TIMERTASK C WHERE A.PROJECT_ITEM_ID = B.ID AND B.ID = C.CUSTOMER_ITEM_ID AND A.CI_ID = :ciId AND A.STATE = 1 AND C.STATE = 2 ORDER BY C.PLAN_EXECUTION_DATE DESC "; int count = baseDao.queryForInteger(selectSql, new SqlParameter("ciId",ciId)); return count; } }