123
This commit is contained in:
		
							parent
							
								
									c1694bd76c
								
							
						
					
					
						commit
						1cc6ae357d
					
				|  | @ -0,0 +1,7 @@ | ||||||
|  | <?xml version="1.0" encoding="gb2312"?> | ||||||
|  | <module name="pu"> | ||||||
|  |     <public> | ||||||
|  |     </public> | ||||||
|  |     <private> | ||||||
|  |     </private> | ||||||
|  | </module> | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | <component name="ssctp" displayname="ssctp"> | ||||||
|  |   <dependencies/> | ||||||
|  | </component> | ||||||
|  | @ -0,0 +1,281 @@ | ||||||
|  | package nccloud.web.ssctp.sscbd.ssctask.action; | ||||||
|  | import com.alibaba.fastjson.JSONArray; | ||||||
|  | import com.alibaba.fastjson.JSONObject; | ||||||
|  | import com.yonyou.cloud.utils.StringUtils; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import nc.bs.framework.common.ITimeService; | ||||||
|  | import nc.bs.sscrp.pub.query.PageInfo; | ||||||
|  | import nc.vo.pub.lang.UFBoolean; | ||||||
|  | import nc.vo.pub.lang.UFDate; | ||||||
|  | import nc.vo.pub.lang.UFDateTime; | ||||||
|  | import nc.vo.pub.lang.UFDouble; | ||||||
|  | import nc.vo.ssctp.sscbd.SSCTaskVO; | ||||||
|  | import nc.vo.ssctp.sscbd.enumeration.DealStatus; | ||||||
|  | import nc.vo.ssctp.sscbd.enumeration.TaskStatus; | ||||||
|  | import nccloud.framework.core.exception.ExceptionUtils; | ||||||
|  | import nccloud.framework.core.json.IJson; | ||||||
|  | import nccloud.framework.service.ServiceLocator; | ||||||
|  | import nccloud.framework.web.action.itf.ICommonAction; | ||||||
|  | import nccloud.framework.web.container.IRequest; | ||||||
|  | import nccloud.framework.web.container.SessionContext; | ||||||
|  | import nccloud.framework.web.json.JsonFactory; | ||||||
|  | import nccloud.pubitf.ssctp.sscbd.ssctask.ISSCTaskQueryService; | ||||||
|  | import nccloud.web.sscrp.rpbill.query.RPBillQryCondition; | ||||||
|  | import nccloud.web.sscrp.rpbill.query.util.RPBillQryUtil; | ||||||
|  | import nccloud.web.ssctp.sscbd.ssctask.query.util.TaskConvertUtil; | ||||||
|  | import nccloud.web.ssctp.sscbd.ssctask.query.util.TaskQryUtil; | ||||||
|  | public class SSCTaskHandleQueryAction | ||||||
|  |   implements ICommonAction | ||||||
|  | { | ||||||
|  |   public Object doAction(IRequest request) { | ||||||
|  |     IJson json = JsonFactory.create(); | ||||||
|  |     String read = request.read(); | ||||||
|  |     Map<String, Object> map = (Map)json.fromJson(read, Map.class); | ||||||
|  |     JSONObject result = new JSONObject(); | ||||||
|  |     String appcode = request.readSysParam().getAppcode(); | ||||||
|  |     try { | ||||||
|  |       UFDateTime curTime = ((ITimeService)ServiceLocator.find(ITimeService.class)).getUFDateTime(); | ||||||
|  |        | ||||||
|  |       PageInfo pageInfo = contructPageInfo(map); | ||||||
|  |        | ||||||
|  |       String taskstatus = (String)map.get("taskstatus"); | ||||||
|  |       String userid = SessionContext.getInstance().getClientInfo().getUserid(); | ||||||
|  |        | ||||||
|  |       String condition = buildCondition4BillNum(map, taskstatus, userid); | ||||||
|  |        | ||||||
|  |       String taskCondition = buildCondition4Task(map, condition); | ||||||
|  |        | ||||||
|  |       SSCTaskVO[] task_vos = new SSCTaskVO[0]; | ||||||
|  |       List<Map<String, String>> orderByInfo = (List)map.get(RPBillQryCondition.ORDERBYINFO); | ||||||
|  |       ISSCTaskQueryService taskQueryService = (ISSCTaskQueryService)ServiceLocator.find(ISSCTaskQueryService.class); | ||||||
|  |       if (orderByInfo != null && orderByInfo.size() > 0) { | ||||||
|  |         task_vos = taskQueryService.queryByCondition(taskCondition, RPBillQryUtil.getOrderInfo(orderByInfo, "rpbill"), pageInfo); | ||||||
|  |       } else { | ||||||
|  |         task_vos = taskQueryService.queryByCondition(taskCondition, pageInfo); | ||||||
|  |       }  | ||||||
|  |        | ||||||
|  |       List<String> taskPkList = new ArrayList<String>(); | ||||||
|  |       if (DealStatus.pending.getValue().equals(taskstatus)) { | ||||||
|  |         SSCTaskVO[] taskPkListVOs = taskQueryService.queryByCondition(taskCondition); | ||||||
|  |         for (SSCTaskVO sscTaskVO : taskPkListVOs) { | ||||||
|  |           taskPkList.add(sscTaskVO.getPk_task()); | ||||||
|  |         } | ||||||
|  |       }  | ||||||
|  |       result.put("taskPkList", taskPkList); | ||||||
|  |        | ||||||
|  |       SSCTaskVO[] task_countvos = taskQueryService.queryByCondition(condition); | ||||||
|  |       JSONArray billTypeCounts = taskQueryService.getBillTypeCounts(task_countvos); | ||||||
|  |       JSONObject totalNum = taskQueryService.getTaskHandleNum(userid); | ||||||
|  |        | ||||||
|  |       String iscmpreject = (String)map.get("iscmpreject"); | ||||||
|  |        | ||||||
|  |       int cmprjectNum = 0; | ||||||
|  |       if (iscmpreject != null && UFBoolean.FALSE.toString().equals(iscmpreject)) { | ||||||
|  |         SSCTaskVO[] cmpRejectTask = taskQueryService.queryByCondition(" task.pk_sscuser = '" + userid + "' and task.iscmpreject = 'Y' and task.taskstatus='sscapprove' and task.pk_sscnode in ('0001ZG10000000NODE01','0001ZG10000000NODE02') "); | ||||||
|  |         cmprjectNum = cmpRejectTask.length; | ||||||
|  |       }  | ||||||
|  |       result.put("pending", Integer.valueOf((cmprjectNum == 0) ? Integer.parseInt(totalNum.getString("pending")) : (Integer.parseInt(totalNum.getString("pending")) + cmprjectNum))); | ||||||
|  |       result.put("handon", totalNum.getString("handon")); | ||||||
|  |       result.put("adjust", totalNum.getString("adjust")); | ||||||
|  |       result.put("sscreject", totalNum.getString("sscreject")); | ||||||
|  |       result.put("searchArea", TaskQryUtil.getQryTempJsonOfBilltype(billTypeCounts)); | ||||||
|  |       boolean isCreditInstall = taskQueryService.isCreditInstall(); | ||||||
|  |       result.put("isCreditInstall", Boolean.valueOf(isCreditInstall)); | ||||||
|  |        | ||||||
|  |       double totalPage = Integer.parseInt(StringUtils.isEmpty(totalNum.getString(taskstatus)) ? "0" : totalNum.getString(taskstatus)) / pageInfo.getPageSize(); | ||||||
|  |       int TotalPage = (int)Math.ceil(totalPage); | ||||||
|  |       pageInfo.setTotalPage(TotalPage); | ||||||
|  |        | ||||||
|  |       JSONObject pageInfoJson = new JSONObject(); | ||||||
|  |       pageInfoJson.put("number", Integer.valueOf(pageInfo.getPageIndex())); | ||||||
|  |       pageInfoJson.put("size", Integer.valueOf(pageInfo.getPageSize())); | ||||||
|  |       pageInfoJson.put("totalElements", Integer.valueOf(pageInfo.getTotal())); | ||||||
|  |       pageInfoJson.put("totalPages", Integer.valueOf(pageInfo.getTotalPage())); | ||||||
|  |        | ||||||
|  |       JSONObject listTableJson = new JSONObject(); | ||||||
|  |       JSONObject cardTableJson = new JSONObject(); | ||||||
|  |        | ||||||
|  |       listTableJson.put("areacode", "ssctaskhandle"); | ||||||
|  |       listTableJson.put("pageinfo", pageInfoJson); | ||||||
|  |        | ||||||
|  |       TaskConvertUtil.translate(task_vos, taskstatus, listTableJson, cardTableJson, appcode); | ||||||
|  |        | ||||||
|  |       result.put("tasklist", listTableJson); | ||||||
|  |       result.put("taskcard", cardTableJson); | ||||||
|  |       result.put("lastQueryTime", curTime); | ||||||
|  |     } | ||||||
|  |     catch (Exception e) { | ||||||
|  |       ExceptionUtils.wrapException(e); | ||||||
|  |     }  | ||||||
|  |     return result; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   private String buildCondition4Task(Map<String, Object> map, String condition) { | ||||||
|  |     String pk_tradetype = (String)map.get("pk_tradetype"); | ||||||
|  |     if (pk_tradetype != null && !"ALL".equals(pk_tradetype.toUpperCase())) { | ||||||
|  |       condition = condition + " and task.pk_tradetype='" + pk_tradetype + "' "; | ||||||
|  |     } | ||||||
|  |     return condition; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   private String buildCondition4BillNum(Map<String, Object> map, String taskstatus, String userid) { | ||||||
|  |     String condition = " (task.pk_sscuser = '" + userid + "'"; | ||||||
|  |     String pk_task = (String)map.get("pk_task"); | ||||||
|  |     if (pk_task != null && !"".equals(pk_task)) { | ||||||
|  |       condition = condition + " and task.pk_task ='" + pk_task + "' "; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     if (DealStatus.pending.getValue().equals(taskstatus)) { | ||||||
|  |       condition = condition + " and task.taskstatus = '" + TaskStatus.taken.getValue() + "'"; | ||||||
|  |     } else if (DealStatus.handon.getValue().equals(taskstatus)) { | ||||||
|  |       condition = condition + " and (task.taskstatus = '" + TaskStatus.handon.getValue() + "' or task." + "taskstatus" + " = '" + TaskStatus.outerhandon.getValue() + "')"; | ||||||
|  |     } else if (DealStatus.adjust.getValue().equals(taskstatus)) { | ||||||
|  |       condition = condition + " and task.taskstatus = '" + TaskStatus.adjust.getValue() + "'"; | ||||||
|  |     } else if (DealStatus.sscreject.getValue().equals(taskstatus)) { | ||||||
|  |       condition = condition + " and task.taskstatus = '" + TaskStatus.reject.getValue() + "'"; | ||||||
|  |     } else if (DealStatus.handled.getValue().equals(taskstatus)) { | ||||||
|  |       condition = condition + " and task.taskstatus = '" + TaskStatus.sscapprove.getValue() + "'"; | ||||||
|  |     }  | ||||||
|  |      | ||||||
|  |     String sscnode = (String)map.get("pk_sscnode"); | ||||||
|  |     if (sscnode != null && !"ALL".equals(sscnode.toUpperCase())) { | ||||||
|  |       condition = condition + " and task.pk_sscnode='" + sscnode + "' "; | ||||||
|  |     } else { | ||||||
|  |       condition = condition + " and task.pk_sscnode in ('0001ZG10000000NODE01','0001ZG10000000NODE02') "; | ||||||
|  |     }  | ||||||
|  |      | ||||||
|  |     String barcode = (String)map.get("barcode"); | ||||||
|  |     if (barcode != null && !"".equals(barcode)) { | ||||||
|  |       condition = condition + " and task.barcode = '" + barcode + "'"; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     String urgent = (String)map.get("urgent"); | ||||||
|  |     if (urgent != null && !"ALL".equals(urgent.toUpperCase())) { | ||||||
|  |       condition = condition + " and task.urgent ='" + urgent + "' "; | ||||||
|  |     } | ||||||
|  |     String information = (String)map.get("information"); | ||||||
|  |     if (information != null && !!"".equals(information)) { | ||||||
|  |       condition = condition + " and exists (select 1 from sscrp_bill bill where task.busiid = bill.busiid and bill.defitem1 = '" + information + "' )"; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     String alarm = (String)map.get("alarm"); | ||||||
|  |     if (alarm != null && !"ALL".equals(alarm.toUpperCase())) { | ||||||
|  |       UFDate curDate = new UFDate(); | ||||||
|  |       switch (alarm) { | ||||||
|  |         case "isExceed": | ||||||
|  |           condition = condition + " and task.endtime <='" + curDate.toString() + "' "; | ||||||
|  |           break; | ||||||
|  |         case "isPreExceed": | ||||||
|  |           condition = condition + " and task.warningtime <='" + curDate.toString() + "' and task." + "endtime" + " >'" + curDate.toString() + "' "; | ||||||
|  |           break; | ||||||
|  |         case "noExceed": | ||||||
|  |           condition = condition + " and (task.warningtime >='" + curDate.toString() + "' or " + "endtime" + " is null or (" + "endtime" + " >'" + curDate.toString() + "' and " + "warningtime" + " is null ))"; | ||||||
|  |           break; | ||||||
|  |       }  | ||||||
|  |      | ||||||
|  |     }  | ||||||
|  |     String timerange = (String)map.get("timerange"); | ||||||
|  |     if (timerange != null && !"ALL".equals(timerange.toUpperCase())) { | ||||||
|  |       UFDateTime ut = new UFDateTime(); | ||||||
|  |       UFDate endDate = new UFDate(ut.getMillis()); | ||||||
|  |       UFDate startDate = new UFDate(); | ||||||
|  |       if ("ONEDAY".equals(timerange.toUpperCase())) { | ||||||
|  |         startDate = endDate.getDateBefore(1); | ||||||
|  |       } | ||||||
|  |       if ("ONEWEEK".equals(timerange.toUpperCase())) { | ||||||
|  |         startDate = endDate.getDateBefore(7); | ||||||
|  |       } | ||||||
|  |       if ("ONEMONTH".equals(timerange.toUpperCase())) { | ||||||
|  |         startDate = endDate.getDateBefore(30); | ||||||
|  |       } | ||||||
|  |       condition = condition + " and task.operatetime>= '" + startDate.toLocalString().substring(0, 10) + "' "; | ||||||
|  |     }  | ||||||
|  |      | ||||||
|  |     String timerange2 = (String)map.get("timerange2"); | ||||||
|  |     if (timerange2 != null && !"ALL".equals(timerange2.toUpperCase())) { | ||||||
|  |       UFDateTime ut = new UFDateTime(); | ||||||
|  |       UFDate endDate = new UFDate(ut.getMillis()); | ||||||
|  |       UFDate startDate = new UFDate(); | ||||||
|  |       if ("ONEDAY".equals(timerange2.toUpperCase())) { | ||||||
|  |         startDate = endDate.getDateBefore(1); | ||||||
|  |       } | ||||||
|  |       if ("ONEWEEK".equals(timerange2.toUpperCase())) { | ||||||
|  |         startDate = endDate.getDateBefore(7); | ||||||
|  |       } | ||||||
|  |       if ("ONEMONTH".equals(timerange2.toUpperCase())) { | ||||||
|  |         startDate = endDate.getDateBefore(30); | ||||||
|  |       } | ||||||
|  |       condition = condition + " and task.creationtime >= '" + startDate.toLocalString().substring(0, 10) + "' "; | ||||||
|  |     }  | ||||||
|  |      | ||||||
|  |     Object fuzzyQueryKey = map.get("fuzzyQueryKey"); | ||||||
|  |     List<String> vas = new ArrayList<String>(); | ||||||
|  |     if (fuzzyQueryKey != null && !fuzzyQueryKey.toString().equals("")) { | ||||||
|  |       for (Object c : (List)fuzzyQueryKey) { | ||||||
|  |         vas.add((String)c); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     StringBuilder whereSql = new StringBuilder(); | ||||||
|  |     if (vas != null && vas.size() > 0) { | ||||||
|  |       String taskcondition = condition; | ||||||
|  |       taskcondition = buildCondition4Task(map, taskcondition); | ||||||
|  |       taskcondition = taskcondition + " )"; | ||||||
|  |       String taskFilterSQL = "select busiid from ssctp_task where " + taskcondition; | ||||||
|  |       for (String s : vas) { | ||||||
|  |         whereSql.append(" and task.busiid in ( "); | ||||||
|  |         if (s.contains("=")) { | ||||||
|  |           String[] strs = s.split("="); | ||||||
|  |           whereSql.append(" SELECT a.busiid FROM sscrp_bill a,sscrp_detail b WHERE a.pk_bill = b.pk_bill AND CODE = '" + strs[0] + "' AND VALUE like '%" + strs[1].replaceAll("'", "") + "%' AND a.busiid IN (" + taskFilterSQL + ") "); | ||||||
|  |           whereSql.append(" UNION ALL "); | ||||||
|  |           whereSql.append(" SELECT a.busiid FROM sscrp_bill_done a,sscrp_detail_done b WHERE a.pk_bill = b.pk_bill AND CODE = '" + strs[0] + "' AND VALUE like '%" + strs[1].replaceAll("'", "") + "%' AND a.busiid IN (" + taskFilterSQL + ") "); | ||||||
|  |         } else { | ||||||
|  |           whereSql.append(" SELECT a.busiid FROM sscrp_bill a,sscrp_detail b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + s.replaceAll("'", "") + "%' AND a.busiid IN (" + taskFilterSQL + ") "); | ||||||
|  |           whereSql.append(" UNION ALL "); | ||||||
|  |           whereSql.append(" SELECT a.busiid FROM sscrp_bill_done a,sscrp_detail_done b WHERE a.pk_bill = b.pk_bill AND VALUE like '%" + s.replaceAll("'", "") + "%' AND a.busiid IN (" + taskFilterSQL + ") "); | ||||||
|  |         }  | ||||||
|  |         whereSql.append(" ) "); | ||||||
|  |       }  | ||||||
|  |     }  | ||||||
|  |     if (whereSql.length() > 0) { | ||||||
|  |       condition = condition + whereSql.toString(); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     if (DealStatus.pending.getValue().equals(taskstatus)) { | ||||||
|  |        | ||||||
|  |       String iscmpreject = (String)map.get("iscmpreject"); | ||||||
|  |       if (iscmpreject != null && UFBoolean.TRUE.toString().equals(iscmpreject)) { | ||||||
|  |         condition = "  task.pk_sscuser = '" + userid + "' and  task." + "taskstatus" + " in( '" + TaskStatus.sscapprove.getValue() + "','" + TaskStatus.taken.getValue() + "') and  task." + "iscmpreject" + " ='Y' "; | ||||||
|  |       } else { | ||||||
|  |         condition = condition + " or  ( task.taskstatus = '" + TaskStatus.sscapprove.getValue() + "' and  task." + "iscmpreject" + " ='Y' and  task." + "pk_sscuser" + " = '" + userid + "'))"; | ||||||
|  |       }  | ||||||
|  |     } else { | ||||||
|  |       condition = condition + " )"; | ||||||
|  |     }  | ||||||
|  |      | ||||||
|  |     return condition; | ||||||
|  |   } | ||||||
|  |    | ||||||
|  | 	private PageInfo contructPageInfo(Map<String, Object> map) { | ||||||
|  | 		PageInfo pageInfo = null; | ||||||
|  | 		if (map.containsKey("pageinfo")) { | ||||||
|  | 			pageInfo = new PageInfo(); | ||||||
|  | 
 | ||||||
|  | 			Map<String, Object> pageinfo = (Map) map.get("pageinfo"); | ||||||
|  | 			Object size = pageinfo.get("size"); | ||||||
|  | 			Object number = pageinfo.get("number"); | ||||||
|  | 			if (size instanceof Double) { | ||||||
|  | 				pageInfo.setPageSize((new UFDouble((Double) size)).intValue()); | ||||||
|  | 			} else if (size instanceof String) { | ||||||
|  | 				pageInfo.setPageSize((new UFDouble((String) size)).intValue()); | ||||||
|  | 			} | ||||||
|  | 			if (number instanceof Double) { | ||||||
|  | 				pageInfo.setPageIndex((new UFDouble((Double) number)).intValue()); | ||||||
|  | 			} else if (number instanceof String) { | ||||||
|  | 				pageInfo.setPageIndex((new UFDouble((String) number)).intValue()); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		return pageInfo; | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue