From b3c9d11e8376046b1362b5d9012250a5f71a7783 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 27 Jun 2024 09:37:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=88=E5=B9=B6=E6=A0=B8=E9=94=80?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=BE=85=E5=8A=A9=E5=92=8C=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tbs/entity/bo/TbsAffairCommitBo.java | 5 +- .../VtbVerificationBatchController.java | 101 ++++++- .../controller/VtbVerificationController.java | 31 +-- .../vtb/entity/VtbVerificationBatch.java | 4 + .../vtb/entity/VtbVerificationYard.java | 3 + .../service/VtbVerificationApplication2.java | 6 + .../impl/VtbVerificationApplication2Impl.java | 40 +++ ...VerificationBatchOperationServiceImpl.java | 262 ++++++++++++++++-- .../impl/VtbVerificationBatchServiceImpl.java | 11 +- .../mapper/tbs/TbsBudgetMatchMapper.xml | 9 +- 10 files changed, 410 insertions(+), 62 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java index 76d76b11..271dd436 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java @@ -71,7 +71,10 @@ public class TbsAffairCommitBo { */ private List affairSubjectCenterLines; - + /** + * 用于明细单参数 + */ + private List childList; @Data public static class AffairSubjectLine{ diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java index d1200339..f5e7a954 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java +++ b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java @@ -1,29 +1,38 @@ package com.qs.serve.modules.vtb.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.LimitSubmit; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; -import com.qs.serve.common.util.PageUtil; -import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.common.util.StringUtils; +import com.qs.serve.common.util.*; +import com.qs.serve.modules.seeyon.entity.CtpAffair; +import com.qs.serve.modules.seeyon.entity.CtpAffairQo; +import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; +import com.qs.serve.modules.seeyon.entity.dto.CtpAffairPageSo; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; +import com.qs.serve.modules.tbs.entity.TbsActivitySubjectYarn; +import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.entity.VtbVerificationYard; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo; -import com.qs.serve.modules.vtb.service.VtbVerificationApplication2; -import com.qs.serve.modules.vtb.service.VtbVerificationService; +import com.qs.serve.modules.vtb.service.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.vtb.entity.VtbVerificationBatch; -import com.qs.serve.modules.vtb.service.VtbVerificationBatchService; import javax.validation.Valid; import java.util.List; +import java.util.Map; /** * 批量核销 @@ -40,6 +49,8 @@ public class VtbVerificationBatchController { private VtbVerificationBatchService vtbVerificationBatchService; private VtbVerificationService vtbVerificationService; private VtbVerificationApplication2 vtbVerificationApplication2; + private VtbVerificationBatchOperationService vtbVerificationBatchOperationService; + private VtbVerificationYardService verificationYardService; /** * 翻页 @@ -72,6 +83,7 @@ public class VtbVerificationBatchController { vtbVerificationApplication2.buildRelateInfo(verification); } batch.setVerificationList(verificationList); + // return R.ok(batch); } @@ -89,6 +101,83 @@ public class VtbVerificationBatchController { return R.ok(); } + /** + * 加签 + * @param param + * @return + */ + @LimitSubmit + @PostMapping("/addNode") + @SysLog(module = SystemModule.Verification, title = "核销加签", biz = BizType.OTHER) + public R addNode(@RequestBody CtpAddNodeParam param){ + return vtbVerificationBatchOperationService.addNode(param); + } + + /** + * 补偿按钮 + * @param id + * @return + */ + @LimitSubmit + @PostMapping("/compensate/{id}") + public R compensate(@PathVariable("id") String id){ + vtbVerificationBatchOperationService.runCompensate(id); + return R.ok(); + } + + /** + * 提交审批节点 + * @return + */ + @LimitSubmit + @PostMapping("/commitAffair") + @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) + public R commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ + seeYonService.testConnection(); + R r = vtbVerificationBatchOperationService.commitAffair(affairCommit); + if(affairCommit.getState().equals(2)){ + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + vtbVerificationBatchOperationService.runCompensate(affairCommit.getCostApplyId()+""); + } + return r; + } + + + /** + * 审批结果(用于详情页) + * @param targetId + * @return + */ + @GetMapping("/ListAffairs") + public R> pageMemberAffair(String targetId){ + VtbVerificationBatch batch = vtbVerificationBatchService.getById(targetId); + return vtbVerificationBatchOperationService.pageAffairV2(targetId,batch.getVtbBatchCode()); + } + + /** + * 审批调整记录 + * @param batchId + * @return + */ + @GetMapping("/listCommitChanges") + public R getList(Long batchId){ + List verifications = vtbVerificationService.list(new LambdaQueryWrapper() + .eq(VtbVerification::getBatchId,batchId)); + if(CollectionUtil.isEmpty(verifications)){ + return R.error("批次参数异常"); + } + VtbVerification verification = verifications.get(0); + LambdaQueryWrapper yardLqw = new LambdaQueryWrapper<>(); + yardLqw.eq(VtbVerificationYard::getVerificationId,verification.getId()); + yardLqw.orderByDesc(VtbVerificationYard::getId); + List yardList = verificationYardService.list(yardLqw); + Map result = vtbVerificationApplication2.buildCommentChangeList(verification, yardList); + return R.ok(result); + } } diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java index 0a4c7b02..0ec6a1fa 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java +++ b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java @@ -39,6 +39,7 @@ import com.qs.serve.modules.vtb.service.*; import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -211,37 +212,11 @@ public class VtbVerificationController { yardLqw.eq(VtbVerificationYard::getVerificationId,id); yardLqw.orderByDesc(VtbVerificationYard::getId); List yardList = verificationYardService.list(yardLqw); - for (VtbVerificationYard yard : yardList) { - LambdaQueryWrapper itemLqw = new LambdaQueryWrapper<>(); - itemLqw.eq(VtbVerificationYardItem::getYardId,yard.getId()); - itemLqw.apply("(last_amount!=curr_amount or last_session!=curr_session or last_person!=curr_person)"); - List yardItemList = vtbVerificationYardItemService.list(itemLqw); - - //拓展成本中心维度调整 - LambdaQueryWrapper centerItemLqw = new LambdaQueryWrapper<>(); - centerItemLqw.eq(VtbVerificationYardCenterItem::getYardId,yard.getId()); - centerItemLqw.apply("last_amount != curr_amount"); - List centerItems = vtbVerificationYardCenterItemService.list(centerItemLqw); - Map> subjectGetCenterYardMap = centerItems.stream() - .collect(Collectors.groupingBy(VtbVerificationYardCenterItem::getSubjectId)); - - for (VtbVerificationYardItem yardItem : yardItemList) { - List centerItemList = subjectGetCenterYardMap.get(yardItem.getSubjectId()); - yardItem.setCenterItemList(centerItemList); - } - - yard.setYardItemList(yardItemList); - SysUser sysUser = sysUserService.getById(yard.getCreateBy()); - if(sysUser!=null){ - yard.setUserInfo(sysUser.toSysUserVo()); - } - } - Map result = new HashMap<>(2); - result.put("verification",verification); - result.put("commentLines",yardList); + Map result = vtbVerificationApplication2.buildCommentChangeList(verification, yardList); return R.ok(result); } + /** * 提交核销 * @param commitBo diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java index 2a81dc04..d3458d26 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java @@ -145,6 +145,10 @@ public class VtbVerificationBatch implements Serializable { @Length(max = 255,message = "业务继承人长度不能超过255字") private String extUserName; + private String wayId; + + private String wayTitle; + /** 核销明细列表 */ @TableField(exist = false) diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java index 647a6256..cc0d08ff 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYard.java @@ -32,6 +32,9 @@ public class VtbVerificationYard implements Serializable { @TableId(type = IdType.AUTO) private Long id; + /** 批量核销ID */ + private Long batchId; + /** 核算id */ @NotNull(message = "核算id不能为空") private Long verificationId; diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java index fb950581..6d45053f 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java @@ -1,6 +1,10 @@ package com.qs.serve.modules.vtb.service; import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.entity.VtbVerificationYard; + +import java.util.List; +import java.util.Map; /** * @author YenHex @@ -14,4 +18,6 @@ public interface VtbVerificationApplication2 { */ void buildRelateInfo(VtbVerification verification); + Map buildCommentChangeList(VtbVerification verification, List yardList); + } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java index ff96bceb..f0bc807e 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java @@ -5,6 +5,7 @@ import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.sys.entity.SysAttach; +import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysUserService; @@ -16,12 +17,16 @@ import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; import com.qs.serve.modules.vtb.service.*; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author YenHex @@ -55,6 +60,41 @@ public class VtbVerificationApplication2Impl implements VtbVerificationApplicati private VtbVerificationOperationServiceImpl vtbVerificationOperationService; private VtbVerificationExtService vtbVerificationExtService; + + @Override + @NotNull + public Map buildCommentChangeList(VtbVerification verification, List yardList) { + for (VtbVerificationYard yard : yardList) { + LambdaQueryWrapper itemLqw = new LambdaQueryWrapper<>(); + itemLqw.eq(VtbVerificationYardItem::getYardId,yard.getId()); + itemLqw.apply("(last_amount!=curr_amount or last_session!=curr_session or last_person!=curr_person)"); + List yardItemList = vtbVerificationYardItemService.list(itemLqw); + + //拓展成本中心维度调整 + LambdaQueryWrapper centerItemLqw = new LambdaQueryWrapper<>(); + centerItemLqw.eq(VtbVerificationYardCenterItem::getYardId,yard.getId()); + centerItemLqw.apply("last_amount != curr_amount"); + List centerItems = vtbVerificationYardCenterItemService.list(centerItemLqw); + Map> subjectGetCenterYardMap = centerItems.stream() + .collect(Collectors.groupingBy(VtbVerificationYardCenterItem::getSubjectId)); + + for (VtbVerificationYardItem yardItem : yardItemList) { + List centerItemList = subjectGetCenterYardMap.get(yardItem.getSubjectId()); + yardItem.setCenterItemList(centerItemList); + } + + yard.setYardItemList(yardItemList); + SysUser sysUser = sysUserService.getById(yard.getCreateBy()); + if(sysUser!=null){ + yard.setUserInfo(sysUser.toSysUserVo()); + } + } + Map result = new HashMap<>(2); + result.put("verification", verification); + result.put("commentLines", yardList); + return result; + } + @Override public void buildRelateInfo(VtbVerification vtbVerification) { Long id = vtbVerification.getId(); diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java index e3561c79..194a0768 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchOperationServiceImpl.java @@ -2,39 +2,45 @@ package com.qs.serve.modules.vtb.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.model.dto.R; -import com.qs.serve.common.util.Assert; -import com.qs.serve.common.util.AuthContextUtils; -import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.common.util.SpringUtils; +import com.qs.serve.common.util.*; import com.qs.serve.modules.data.entity.DataAffairCommit; import com.qs.serve.modules.data.mapper.DataAffairCommitMapper; import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; import com.qs.serve.modules.seeyon.service.SeeYonOperationService; import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; import com.qs.serve.modules.vtb.common.VtbVerificationState; -import com.qs.serve.modules.vtb.entity.VtbVerification; -import com.qs.serve.modules.vtb.entity.VtbVerificationBatch; -import com.qs.serve.modules.vtb.service.VtbVerificationBatchOperationService; -import com.qs.serve.modules.vtb.service.VtbVerificationBatchService; -import com.qs.serve.modules.vtb.service.VtbVerificationService; +import com.qs.serve.modules.vtb.entity.*; +import com.qs.serve.modules.vtb.service.*; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; /** * @author YenHex * @since 2024/6/14 */ +@Slf4j @Service @AllArgsConstructor public class VtbVerificationBatchOperationServiceImpl implements VtbVerificationBatchOperationService { private final VtbVerificationBatchService vtbVerificationBatchService; private final VtbVerificationService vtbVerificationService; + private final SysUserService sysUserService; + private final VtbVerificationApplication verificationApplication; + private final VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService; + private final VtbVerificationYardService yardService; + private final VtbVerificationYardItemService yardItemService; + private final VtbVerificationYardCenterItemService yardCenterItemService; + private final VtbVerificationSubjectService vtbVerificationSubjectService; @Override public String getTemplateCode() { @@ -64,7 +70,16 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification @Override public Object doFinished(TbsAffairCommitBo param) { - + //退回 + VtbVerificationBatch batch = vtbVerificationBatchService.getById(param.getTargetId()); + List verificationList = vtbVerificationBatchService.listVerifications(batch.getId()); + batch.setVtbBatchStatus(VtbVerificationBatch.BatchState.CHECK_BACK); + batch.setBackedTime(LocalDateTime.now()); + vtbVerificationBatchService.updateById(batch); + for (VtbVerification verification : verificationList) { + //循环调用每个核销 + vtbVerificationService.successCommit(verification.getId()); + } return null; } @@ -115,31 +130,30 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification } @Override - public void buildAffairCommitData(TbsAffairCommitBo affairCommit, String flag) { + public void buildAffairCommitData(TbsAffairCommitBo commitParam, String flag) { //常规的提交审批日志 + String userId = AuthContextUtils.getSysUserId(); + SysUser sysUser = sysUserService.getById(userId); + VtbVerificationBatch batch = vtbVerificationBatchService.getById(commitParam.getTargetId()); + List verificationList = vtbVerificationBatchService.listVerifications(batch.getId()); //保存记录 try { // 判断是否含有下个节点 DataAffairCommitMapper dataAffairCommitMapper = SpringUtils.getBean(DataAffairCommitMapper.class); - String userId = AuthContextUtils.getSysUserId(); - SysUser sysUser = getUserMapper().selectById(userId); DataAffairCommit dataAffairCommit = new DataAffairCommit(); dataAffairCommit.setTargetCode(getTemplateCode()); - dataAffairCommit.setTargetId(getTargetId(affairCommit)); - dataAffairCommit.setId(affairCommit.getAffairId()); - dataAffairCommit.setCommentVal(affairCommit.getComment()); - dataAffairCommit.setReleaseFlag(affairCommit.getReleaseFlag()); - dataAffairCommit.setState(affairCommit.getState()); + dataAffairCommit.setTargetId(getTargetId(commitParam)); + dataAffairCommit.setId(commitParam.getAffairId()); + dataAffairCommit.setCommentVal(commitParam.getComment()); + dataAffairCommit.setReleaseFlag(commitParam.getReleaseFlag()); + dataAffairCommit.setState(commitParam.getState()); dataAffairCommit.setUserId(sysUser.getId()); dataAffairCommit.setUserCode(sysUser.getCode()); dataAffairCommit.setUserName(sysUser.getName()); dataAffairCommit.setResultData(flag); - dataAffairCommit.setAttachIds(affairCommit.getAttachIds()); + dataAffairCommit.setAttachIds(commitParam.getAttachIds()); dataAffairCommitMapper.insert(dataAffairCommit); - VtbVerificationBatch batch = vtbVerificationBatchService.getById(affairCommit.getTargetId()); - List verificationList = vtbVerificationBatchService.listVerifications(batch.getId()); - //保存到每个核销 for (VtbVerification verification : verificationList) { DataAffairCommit obj = CopierUtil.copy(dataAffairCommit,new DataAffairCommit()); @@ -152,6 +166,205 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification } catch (Exception e) { e.printStackTrace(); } + + for (TbsAffairCommitBo itemCommit : commitParam.getChildList()) { + VtbVerification verification = null; + for (VtbVerification item : verificationList) { + if(item.getId().toString().equals(itemCommit.getTargetId())){ + verification = item; + break; + } + } + if(verification==null){ + log.error("对接参数异常:{}",JsonUtil.objectToJson(commitParam)); + continue; + } + //更新释放标识 + if(itemCommit.getReleaseFlag()!=null){ + VtbVerification vtbVer = new VtbVerification(); + vtbVer.setId(verification.getId()); + vtbVer.setRegReleaseFlag(itemCommit.getReleaseFlag()); + vtbVerificationService.updateById(vtbVer); + } + + //保存审批线结果 + VtbVerificationYard yard = new VtbVerificationYard(); + yard.setBatchId(Long.parseLong(commitParam.getTargetId())); + yard.setVerificationId(verification.getId()); + yard.setVerificationSubCode(verification.getVerificationCode()); + yard.setState(itemCommit.getState()); + yard.setAffairId(itemCommit.getAffairId()); + yard.setComment(itemCommit.getComment()); + yard.setCaseRemark(itemCommit.getCaseRemark()); + //审批中(next)、完成(finish)、拒绝(refused) + boolean isFinish = "finished".equals(flag); + boolean isNext = "next".equals(flag); + boolean isStop = "backed".equals(flag)||"refuse".equals(flag); + //释放费用 + boolean isRelease = itemCommit.getReleaseFlag()!=null&&itemCommit.getReleaseFlag().equals(1); + if (isStop){ + log.warn("单据[{}]状态:{},中止审批",verification.getVerificationCode(),flag); + verificationApplication.backCommitAndStop(verification, "backed".equals(flag)); + if(isRelease){ + log.warn("单据[{}]状态:{},中止审批并释放费用",verification.getVerificationCode(),flag); + vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false); + } + }else if (!isFinish && !isNext){ + log.error("远程调用返回,非指定状态:{}",JsonUtil.objectToJson(commitParam)); + continue; + } + yardService.save(yard); + //非终止或者驳回,保存审批线金额明细 + BigDecimal totalAmount = BigDecimal.ZERO; + if(!isStop){ + List subjectCenters = vtbVerificationSubjectCenterService.listByVerificationId(verification.getId()); + //isCenterCommit 代表自定义成本中心维度递交 + boolean isCenterCommit = subjectCenters.size()>0; + List verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); + List yardItemList = new ArrayList<>(); + List verSubject4Update = new ArrayList<>(); + List yarnCenterList = new ArrayList<>(); + //拓展成本中心维度调整记录 + List subjectCenterUpdateList = new ArrayList<>(); + for (VtbVerificationSubject currVs : verificationSubjects) { + BigDecimal changeAmount = null; + Integer countSession = null; + Integer countPerson = null; + List centerItemLineList = null; +// if(isCenterCommit){ + if(CollectionUtil.isNotEmpty(itemCommit.getAffairSubjectCenterLines())){ + for (TbsAffairCommitBo.AffairSubjectCenterLine centerLine : itemCommit.getAffairSubjectCenterLines()) { + if(currVs.getSubjectId().equals(centerLine.getSubjectId())){ + changeAmount = BigDecimal.ZERO; + if(centerLine.getCenterItemLines()!=null){ + for (TbsAffairCommitBo.AffairSubjectCenterItemLine itemLine : centerLine.getCenterItemLines()) { + changeAmount = changeAmount.add(itemLine.getAmount()); + } + } + centerItemLineList = centerLine.getCenterItemLines(); + countSession = centerLine.getCountSession(); + countPerson = centerLine.getCountPerson(); + break; + } + } + } + //保存明细判断是否更变金额 + VtbVerificationYardItem yardItem = CopierUtil.copy(currVs,new VtbVerificationYardItem()); + yardItem.setYardId(yard.getId()); + yardItem.initSetNull(); + BigDecimal lastAmount = currVs.getUsedAmount(); + yardItem.setLastAmount(lastAmount); + + Integer lastSession = currVs.getCountSession(); + yardItem.setLastSession(lastSession); + yardItem.setCurrSession(lastSession); + if(countSession != null){ + yardItem.setCurrSession(countSession); + if(!countSession.equals(lastSession)){ + VtbVerificationSubject verSub4Upd = new VtbVerificationSubject(); + verSub4Upd.setId(currVs.getId()); + verSub4Upd.setCountSession(countSession); + verSubject4Update.add(verSub4Upd); + if(lastSession!=null){ + if(lastSession > countSession){ + yardItem.setRemark2("减少场次:"+ (lastSession - countSession)); + }else { + yardItem.setRemark2("增加场次:"+ (countSession - lastSession)); + } + } + } + } + + Integer lastPerson = currVs.getCountPerson(); + yardItem.setLastPerson(lastPerson); + yardItem.setCurrPerson(lastPerson); + if( countPerson != null ){ + yardItem.setCurrPerson(countPerson); + if(!countPerson.equals(lastPerson)){ + VtbVerificationSubject verSub4Upd = new VtbVerificationSubject(); + verSub4Upd.setId(currVs.getId()); + verSub4Upd.setCountPerson(countPerson); + verSubject4Update.add(verSub4Upd); + if(lastPerson!=null){ + if(lastPerson>countPerson){ + yardItem.setRemark3("减少人数:"+ (lastPerson - countPerson)); + }else { + yardItem.setRemark3("增加人数:"+ (countPerson - lastPerson)); + } + } + } + } + //金额有更变 + if(changeAmount!=null&&changeAmount.compareTo(lastAmount)!=0){ + yardItem.setCurrAmount(changeAmount); + BigDecimal diff = changeAmount.subtract(lastAmount); + if(diff.compareTo(BigDecimal.ZERO)>0){ + yardItem.setRemark("增加费用:"+diff); + }else { + yardItem.setRemark("减少费用:"+diff.negate()); + } + VtbVerificationSubject verSub4Upd = new VtbVerificationSubject(); + verSub4Upd.setId(currVs.getId()); + verSub4Upd.setUsedAmount(changeAmount); + verSubject4Update.add(verSub4Upd); + }else { + yardItem.setCurrAmount(lastAmount); + } + totalAmount = totalAmount.add(yardItem.getCurrAmount()); + if(centerItemLineList!=null&&subjectCenters.size()>0){ + for (TbsAffairCommitBo.AffairSubjectCenterItemLine centerItemLine : centerItemLineList) { + VtbVerificationYardCenterItem centerItem = VtbVerificationYardCenterItem.toNewObject(yardItem); + for (VtbVerificationSubjectCenter subjectCenter : subjectCenters) { + if(centerItemLine.getActivityCenterId().equals(subjectCenter.getActivityCenterId())){ + centerItem.setCenterId(subjectCenter.getCenterId()); + centerItem.setCenterCode(subjectCenter.getCenterCode()); + centerItem.setCenterName(subjectCenter.getCenterName()); + centerItem.setCenterType(subjectCenter.getCenterType()); + centerItem.setActivityCenterId(subjectCenter.getActivityCenterId()); + centerItem.setLastAmount(subjectCenter.getUsedAmount()==null?BigDecimal.ZERO:subjectCenter.getUsedAmount()); + centerItem.setCurrAmount(centerItemLine.getAmount()); + BigDecimal diff = centerItem.getCurrAmount().subtract(centerItem.getLastAmount()); + //修改center的记录金额 + VtbVerificationSubjectCenter scParam = new VtbVerificationSubjectCenter(); + scParam.setId(subjectCenter.getId()); + scParam.setUsedAmount(centerItemLine.getAmount()); + subjectCenterUpdateList.add(scParam); + if(diff.compareTo(BigDecimal.ZERO)>0){ + centerItem.setRemark("增加费用:"+diff); + }else { + centerItem.setRemark("减少费用:"+diff.negate()); + } + } + } + yarnCenterList.add(centerItem); + } + } + + yardItemList.add(yardItem); + } + yardItemService.saveBatch(yardItemList); + if(yarnCenterList.size()>0){ + yardCenterItemService.saveBatch(yarnCenterList); + } + vtbVerificationSubjectService.updateBatchById(verSubject4Update); + if(subjectCenterUpdateList.size()>0){ + vtbVerificationSubjectCenterService.updateBatchById(subjectCenterUpdateList); + } + //重新计算合计 + if(isFinish){ + verificationApplication.finishCallBack(verification, totalAmount); + if(isRelease){ + vtbVerificationService.release(verification.getActivityId(),sysUser.getCode(),false); + } + }else { + //更新金额 + VtbVerification vtbVer = new VtbVerification(); + vtbVer.setId(verification.getId()); + vtbVer.setAmount(totalAmount); + vtbVerificationService.updateById(vtbVer); + } + } + } } @Override @@ -165,4 +378,9 @@ public class VtbVerificationBatchOperationServiceImpl implements VtbVerification //审批完成后调用 } + @Override + public R commitAffair(TbsAffairCommitBo affairCommit) { + return VtbVerificationBatchOperationService.super.commitAffair(affairCommit); + } + } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java index c33077af..2369b7f9 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java @@ -161,6 +161,8 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl activityList, SysUser sysUser, PayWay payWay, List orgVerificationIds, List newVerificationList, List allVerificationChannelList, List allVerificationChannelPointList, List allVerificationSubjects, List allVerificationCenters) { + private void mainCheckAndCreateBatchItemData(VtbVerificationBatchBo submitBo, TbsCostApply costApply, BmsSupplier supplier, + List activityList, SysUser sysUser, PayWay payWay, + List orgVerificationIds, List newVerificationList, + List allVerificationChannelList, + List allVerificationChannelPointList, + List allVerificationSubjects, + List allVerificationCenters) { for (VtbVerificationBo verificationBo : submitBo.getVerificationList()) { for (TbsActivity activity : activityList) { if(verificationBo.getActivityId().equals(activity.getId())){ @@ -450,7 +458,6 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl - ( tbc.target_type=#{item.targetType} and tbc.target_id = #{item.targetId} ) + AND ( tb.condition_flag =0 or ( + tbc.del_flag = 0 AND + ( + tbc.target_type=#{item.targetType} and tbc.target_id = #{item.targetId} ) + ) )