diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillController.java index 15442511..582a0858 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillController.java @@ -240,6 +240,7 @@ public class XmTaskSbillController { detail.setSbillId(batchJoinToSbill.getSbillId()); detail.setProjectId(projectId); detail.setCtime(new Date()); + this.xmTaskSbillDetailService.calcSamt(detail); canAdd.add(detail); } this.xmTaskSbillService.batchJoinToSbill(canAdd,details); diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillDetailController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillDetailController.java index f8b7f5b8..f4b8bfe9 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillDetailController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskSbillDetailController.java @@ -120,26 +120,7 @@ public class XmTaskSbillDetailController { }) @RequestMapping(value="/del",method=RequestMethod.POST) public Map delXmTaskSbillDetail(@RequestBody XmTaskSbillDetail xmTaskSbillDetail){ - Map m = new HashMap<>(); - Tips tips=new Tips("成功删除一条数据"); - try{ - if(!StringUtils.hasText(xmTaskSbillDetail.getId())) { - return failed("pk-not-exists","请上送主键参数id"); - } - XmTaskSbillDetail xmTaskSbillDetailDb = xmTaskSbillDetailService.selectOneObject(xmTaskSbillDetail); - if( xmTaskSbillDetailDb == null ){ - return failed("data-not-exists","数据不存在,无法删除"); - } - xmTaskSbillDetailService.deleteByPk(xmTaskSbillDetail); - }catch (BizException e) { - tips=e.getTips(); - logger.error("",e); - }catch (Exception e) { - tips.setFailureMsg(e.getMessage()); - logger.error("",e); - } - m.put("tips", tips); - return m; + return batchDelXmTaskSbillDetail(Arrays.asList(xmTaskSbillDetail)); } /** @@ -220,7 +201,7 @@ public class XmTaskSbillDetailController { } if(can.size()>0){ xmTaskSbillDetailMap.put("ids",can.stream().map(i->i.getId()).collect(Collectors.toList())); - xmTaskSbillDetailService.editSomeFields(xmTaskSbillDetailMap); + xmTaskSbillDetailService.doEditSomeFields(xmTaskSbillDetailMap,can.stream().map(i->i.getSbillId()).collect(Collectors.toSet()).stream().collect(Collectors.toList())); } List msgs=new ArrayList<>(); if(can.size()>0){ diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskSbillDetailService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskSbillDetailService.java index fd59c73e..345a5862 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskSbillDetailService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskSbillDetailService.java @@ -6,6 +6,7 @@ import com.xm.core.vo.UserTaskVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -50,5 +51,33 @@ public class XmTaskSbillDetailService extends BaseService { //更新结算单数据 xmTaskSbillService.updateBySbillDetailList(Arrays.asList(sbillId)); } + + @Transactional + public void doEditSomeFields(Map xmTaskSbillDetailMap,List sbillIds) { + super.editSomeFields(xmTaskSbillDetailMap); + if(xmTaskSbillDetailMap.containsKey("samt")){ + xmTaskSbillService.updateBySbillDetailList(sbillIds); + } + } + + /** + * 提前计算结算金额 + * @param detail + */ + public void preCalcSamt(XmTaskSbillDetail detail) { + if(detail.getQuoteAt()!=null){ + detail.setSamt(detail.getQuoteAt()); + return; + } + if(detail.getBudgetAt()==null && detail.getQuoteAt()==null){ + detail.setSamt(BigDecimal.ZERO); + return; + } + if(detail.getBudgetAt()!=null){ + detail.setSamt(detail.getBudgetAt()); + return; + } + + } } 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 03a80fe5..0d655fe5 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 @@ -175,6 +175,8 @@ public class XmTaskSbillService extends BaseService { detailsAll.addAll(canAdd); detailsAll.addAll(details); this.xmTaskWorkloadService.updateStatusAfterJoinSbill(detailsAll); + + this.updateBySbillDetailList(detailsAll.stream().map(i->i.getSbillId()).collect(Collectors.toSet()).stream().collect(Collectors.toList())); } } 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 a98c9f4b..54ad087a 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 @@ -25,13 +25,13 @@ select w.sbill_id,sum(ifnull(w.amt,0)) as amt,sum(ifnull(w.samt,0)) as samt,sum(ifnull(w.sworkload,0)) as workload from xm_task_sbill_detail w where w.sbill_id in - ( #{item}) + #{item} group by w.sbill_id ) as w on res.id=w.sbill_id set - res.amt=w.samt, - res.workload=w.workload + res.amt=ifnull(w.samt,0), + res.workload=ifnull(w.workload,0) where (res.id) in ( #{item})