diff --git a/mmpac/src/private/nc/META-INF/module.xml b/mmpac/src/private/nc/META-INF/module.xml new file mode 100644 index 0000000..11b94bc --- /dev/null +++ b/mmpac/src/private/nc/META-INF/module.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ssctp/component.xml b/ssctp/component.xml new file mode 100644 index 0000000..20fe749 --- /dev/null +++ b/ssctp/component.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ssctp/src/client/nccloud/web/ssctp/sscbd/ssctask/action/SSCTaskHandleQueryAction.java b/ssctp/src/client/nccloud/web/ssctp/sscbd/ssctask/action/SSCTaskHandleQueryAction.java new file mode 100644 index 0000000..ac9cdc8 --- /dev/null +++ b/ssctp/src/client/nccloud/web/ssctp/sscbd/ssctask/action/SSCTaskHandleQueryAction.java @@ -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 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> 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 taskPkList = new ArrayList(); + 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 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 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 vas = new ArrayList(); + 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 map) { + PageInfo pageInfo = null; + if (map.containsKey("pageinfo")) { + pageInfo = new PageInfo(); + + Map 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; + } +} \ No newline at end of file