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