diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java index 411698f5..9d1752e5 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java @@ -474,13 +474,30 @@ public class XmTaskWorkloadController { sstatus="1"; xmTaskWorkloadMap.put("sstatus",sstatus); } + List taskIds=xmTaskWorkloadsDb.stream().map(i->i.getTaskId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()); + + Map taskMap=new HashMap<>(); + if(xmTaskWorkloadMap.containsKey("wstatus") && "1".equals(wstatus)){ + List tasks=this.xmTaskService.selectListByIds(taskIds); + for (XmTask task : tasks) { + taskMap.put(task.getId(),task); + } + } List canChanges=new ArrayList<>(); List sstatusNot01=new ArrayList<>(); + List taskStateNot34=new ArrayList<>(); for (XmTaskWorkload xmTaskWorkload : xmTaskWorkloadsDb) { if(!"1".equals(xmTaskWorkload.getSstatus()) && !"0".equals(xmTaskWorkload.getSstatus()) &&StringUtils.hasText(xmTaskWorkload.getSstatus())){ sstatusNot01.add(xmTaskWorkload); }else{ + if(xmTaskWorkloadMap.containsKey("wstatus") && "1".equals(wstatus)){ + XmTask task=taskMap.get(xmTaskWorkload.getTaskId()); + if(task==null || (!"2".equals(task.getTaskState()) && !"3".equals(task.getTaskState()))){ + taskStateNot34.add(xmTaskWorkload); + continue; + } + } canChanges.add(xmTaskWorkload); } } @@ -502,6 +519,9 @@ public class XmTaskWorkloadController { if(sstatusNot01.size()>0){ msgs.add("有"+sstatusNot01.size()+"条工时不是待结算状态,不允许更改"); } + if(taskStateNot34.size()>0){ + msgs.add("有"+taskStateNot34.size()+"条工时对应的任务不是已完工状态,不允许确认工时"); + } if(canChanges.size()>0){ tips.setOkMsg(msgs.stream().collect(Collectors.joining())); }else{ diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java index 92b45d5a..1ea467da 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskSbillService.java @@ -2,10 +2,13 @@ package com.xm.core.service; import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.DateUtils; +import com.mdp.core.utils.NumberUtil; import com.xm.core.entity.XmTaskWorkload; +import com.xm.core.service.client.MkClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -35,6 +38,9 @@ public class XmTaskSbillService extends BaseService { @Autowired XmTaskWorkloadService xmTaskWorkloadService; + @Autowired + MkClient mkClient; + @Transactional(rollbackFor = Exception.class) public void deleteByPkAndReturnWorkload(XmTaskSbill xmTaskSbill){ this.deleteByPk(xmTaskSbill); @@ -87,6 +93,7 @@ public class XmTaskSbillService extends BaseService { }else if("PROCESS_COMPLETED".equals(eventName)) { if("1".equals(agree)) { this.updateFlowStateByProcInst("2",xmTaskSbill, flowVars); + this.pushWorkloadToMk(xmTaskSbill); }else { this.updateFlowStateByProcInst("3",xmTaskSbill, flowVars); } @@ -100,6 +107,24 @@ public class XmTaskSbillService extends BaseService { } + private void pushWorkloadToMk(XmTaskSbill xmTaskSbill) { + List> taskWorkloads=this.xmTaskWorkloadService.listTaskWorkloadBySbillIdGroupByUseridAndTaskId(xmTaskSbill.getId()); + if(taskWorkloads==null || taskWorkloads.size()==0){ + return; + } + for (Map t : taskWorkloads) { + String taskId= (String) t.get("taskId"); + String taskName= (String) t.get("taskName"); + String userid= (String) t.get("userid"); + String username= (String) t.get("username"); + String custBranchId=""; + BigDecimal actNum=BigDecimal.valueOf(1); + BigDecimal sigPrice= NumberUtil.getBigDecimal(t.get("samt")); + BigDecimal workload=NumberUtil.getBigDecimal(t.get("sworkload")); + mkClient.pushActiExecOrder(taskId,userid,username,custBranchId,taskId, actNum,sigPrice,actNum.multiply(sigPrice),workload,taskName); + } + } + /** * update流程表信息 * 工时表:结算状态0-无需结算,1-待结算2-已提交3-已通过4-已结算 diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java index 830ee50c..8161abd3 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskWorkloadService.java @@ -59,5 +59,8 @@ public class XmTaskWorkloadService extends BaseService { } + public List> listTaskWorkloadBySbillIdGroupByUseridAndTaskId(String sbillId) { + return this.selectList("listTaskWorkloadBySbillIdGroupByUseridAndTaskId",sbillId); + } } diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml index 32c677ad..483f6166 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml @@ -106,6 +106,13 @@ group by biz_month order by biz_month asc + +