From 7f7043d23b619cabb373a251e97982be7a8f3a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Wed, 6 Apr 2022 22:50:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E3=80=81=E6=A0=87=E7=AD=BE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/ctrl/XmTaskWorkloadController.java | 59 ++++++++++++++++--- .../xm/core/service/XmTaskSbillService.java | 3 + .../core/service/XmTaskWorkloadService.java | 34 ++++------- .../mapper/xm/core/dao/XmTaskSbillMapper.xml | 8 ++- .../xm/core/dao/XmTaskWorkloadMapper.xml | 13 ++++ 5 files changed, 83 insertions(+), 34 deletions(-) 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 dd03d314..dcff1f2b 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 @@ -2,18 +2,15 @@ package com.xm.core.ctrl; import java.math.BigDecimal; import java.util.*; +import java.util.function.LongUnaryOperator; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import com.mdp.core.utils.ResponseHelper; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; -import com.xm.core.entity.XmGroup; -import com.xm.core.entity.XmMenu; -import com.xm.core.entity.XmTask; -import com.xm.core.service.XmGroupService; -import com.xm.core.service.XmMenuService; -import com.xm.core.service.XmTaskService; +import com.xm.core.entity.*; +import com.xm.core.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -41,8 +38,7 @@ import com.mdp.core.err.BizException; import com.mdp.mybatis.PageUtils; import com.mdp.core.utils.RequestUtils; import com.mdp.core.utils.NumberUtil; -import com.xm.core.service.XmTaskWorkloadService; -import com.xm.core.entity.XmTaskWorkload; + /** * url编制采用rest风格,如对xm_task_workload 工时登记表的操作有增删改查,对应的url分别为:
* 新增: core/xmTaskWorkload/add
@@ -71,6 +67,8 @@ public class XmTaskWorkloadController { XmGroupService xmGroupService; @Autowired XmMenuService xmMenuService; + @Autowired + XmTaskSbillService xmTaskSbillService; @ApiOperation( value = "查询工时登记表信息列表",notes=" ") @@ -346,7 +344,50 @@ public class XmTaskWorkloadController { Map m = new HashMap<>(); Tips tips=new Tips("成功添加到结算单"); try{ - xmTaskWorkloadService.editWorkloadToSbill(params); + + List ids= (List) params.get("ids"); + if(ids==null || ids.size()==0){ + return ResponseHelper.failed("ids-0","工时变化ids不能为空"); + } + String sbillId= (String) params.get("sbillId"); + if(!StringUtils.hasText(sbillId)){ + return ResponseHelper.failed("sbillId-0","结算单变编号不能为空"); + } + XmTaskSbill xmTaskSbillDb=this.xmTaskSbillService.selectOneObject(new XmTaskSbill(sbillId)); + if(xmTaskSbillDb==null){ + return ResponseHelper.failed("sbillId-0","结算单不存在"); + } + if(!"0".equals(xmTaskSbillDb.getStatus())){ + return ResponseHelper.failed("status-not-0","结算单已提交,不允许再更改"); + } + User user= LoginUtils.getCurrentUserInfo(); + if(!user.getUserid().equals(xmTaskSbillDb.getCuserid())){ + return ResponseHelper.failed("cuserid-0","结算单不属于您的,无权修改"); + } + List list=this.xmTaskWorkloadService.selectListByIds(ids); + if(list.size()==0){ + return ResponseHelper.failed("data-0","工时明细不存在"); + } + List canChanges=list.stream().filter(i->"1".equals(i.getSstatus()) && "1".equals(i.getWstatus())).collect(Collectors.toList()); + List sstatusNot1=list.stream().filter(i->!"1".equals(i.getSstatus()) || !"1".equals(i.getWstatus())).collect(Collectors.toList()); + + if(canChanges.size()>0){ + xmTaskWorkloadService.editWorkloadToSbill(sbillId,canChanges); + } + List msgs=new ArrayList<>(); + if(canChanges.size()>0){ + msgs.add("成功将"+canChanges.size()+"条工时加入结算单"); + } + + if(sstatusNot1.size()>0){ + msgs.add("有"+sstatusNot1.size()+"条工时不是待结算状态,不允许更改"); + } + if(canChanges.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else{ + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + }catch (BizException e) { tips=e.getTips(); logger.error("",e); 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 cb918159..92b45d5a 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 @@ -141,5 +141,8 @@ public class XmTaskSbillService extends BaseService { this.updateSomeFieldByPk(xmTaskSbill); } + public void updateByWorkloadList(String sbillId) { + super.update("updateByWorkloadList",sbillId); + } } 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 323b8e39..6d6005b0 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 @@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -36,31 +37,16 @@ public class XmTaskWorkloadService extends BaseService { XmTaskSbillService xmTaskSbillService; - @Transactional(rollbackFor = Exception.class) - public void editWorkloadToSbill(Map params){ - //查询出相关工时单、结算单 - Map query = new HashMap<>(); - query.put("ids",params.get("ids")); - List> workloads = this.selectListMapByWhere(query); - XmTaskSbill xmTaskSbill = new XmTaskSbill(); - xmTaskSbill.setId((String) params.get("sbillId")); - xmTaskSbill = xmTaskSbillService.selectOneObject(xmTaskSbill); - //累加工时、结算金额 - BigDecimal totalWork = BigDecimal.ZERO; - BigDecimal totalSamt = BigDecimal.ZERO; - for (Map workload : workloads) { - totalWork = totalWork.add((BigDecimal) workload.get("workload")); - totalSamt = totalSamt.add((BigDecimal) workload.get("samt")); - workload.put("sbillId",xmTaskSbill.getId()); - workload.put("sstatus","2"); - workload.put("stime", DateUtils.getDatetime()); - } - xmTaskSbill.setWorkload(xmTaskSbill.getWorkload().add(totalWork)); - xmTaskSbill.setAmt(xmTaskSbill.getAmt().add(totalSamt)); - xmTaskSbill.setLtime(new Date()); - xmTaskSbillService.updateByPk(xmTaskSbill); - this.batchUpdate(workloads); + + @Transactional + public void editWorkloadToSbill(String sbillId, List canChanges) { + xmTaskSbillService.updateByWorkloadList(sbillId); + this.batchEditSbillId(sbillId,canChanges.stream().map(i->i.getId()).collect(Collectors.toList())); } + private void batchEditSbillId(String sbillId, List ids) { + Map map=map("sbillId",sbillId,"ids",ids); + super.update("batchEditSbillId",map); + } } diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml index d012dd46..fcb27b9b 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskSbillMapper.xml @@ -19,7 +19,13 @@ - + + upate xm_task_sbill res left join (select w.sbill_id,sum(ifnull(w.amt,0)) as amt,sum(ifnull(w.samt,0)) as samt,sum(ifnull(w.workload,0)) as workload from xm_task_workload w group by w.sbill_id where w.sbill_id=#{id} and w.wstatus='1') as w on res.id=w.sbill_id + set + res.amt=w.samt, + res.workload=w.workload + where res.id=#{id} + 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 7b598b62..c861e2fb 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 @@ -82,6 +82,19 @@ + + + + update xm_task_workload res + + res.sbill_id = #{sbillId} + + + + #{item} + + +