diff --git a/src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java b/src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java index 845702a7..7902459d 100644 --- a/src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java +++ b/src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java @@ -33,4 +33,10 @@ public class OaFormMainProcess { */ private String templateCode; + private String userId; + + /** + * 模板编码 + */ + private String tableName; } diff --git a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java index 40643597..a3214536 100644 --- a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java +++ b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java @@ -26,6 +26,7 @@ public class CodeGenUtil { Activity("activity"), OmsOrder("OmsOrder"), Verification("verification"), + VerificationBatch("verificationBatch"), Policy("policy"), Budget("Budget"), BudgetChange("BudgetChange"), diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 11cb9f9d..42368931 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java @@ -135,26 +135,36 @@ public interface SeeYonOperationService extends SeeYonBaseService{ addNodeDTO.setComment(param.getComment()); R result = getRequestService().addNode(addNodeDTO); if(result.getData()!=null&&result.getData().toLowerCase(Locale.ROOT).contains("ok")){ - DataAffairCommitMapper dataAffairCommitMapper = SpringUtils.getBean(DataAffairCommitMapper.class); - DataAffairCommit dataAffairCommit = new DataAffairCommit(); - dataAffairCommit.setTargetCode(getTemplateCode()); - dataAffairCommit.setTargetId(param.getTargetId()); - - dataAffairCommit.setId(affairId); - dataAffairCommit.setCommentVal("加签:"+param.getComment()); - dataAffairCommit.setReleaseFlag(0); - dataAffairCommit.setState(3); - dataAffairCommit.setUserId(sysUser.getId()); - dataAffairCommit.setUserCode(sysUser.getCode()); - dataAffairCommit.setUserName(sysUser.getName()); - dataAffairCommit.setResultData("addNode"); - dataAffairCommit.setAttachIds(param.getAttachIds()); - dataAffairCommitMapper.insert(dataAffairCommit); + this.insertAddNodeLog(param, affairId, sysUser); return R.ok(); } return R.error(result.getMsg()); } + /** + * 给加签添加审批日志 + * @param param + * @param affairId + * @param sysUser + */ + default void insertAddNodeLog(CtpAddNodeParam param, String affairId, SysUser sysUser) { + DataAffairCommitMapper dataAffairCommitMapper = SpringUtils.getBean(DataAffairCommitMapper.class); + DataAffairCommit dataAffairCommit = new DataAffairCommit(); + dataAffairCommit.setTargetCode(getTemplateCode()); + dataAffairCommit.setTargetId(param.getTargetId()); + + dataAffairCommit.setId(affairId); + dataAffairCommit.setCommentVal("加签:"+ param.getComment()); + dataAffairCommit.setReleaseFlag(0); + dataAffairCommit.setState(3); + dataAffairCommit.setUserId(sysUser.getId()); + dataAffairCommit.setUserCode(sysUser.getCode()); + dataAffairCommit.setUserName(sysUser.getName()); + dataAffairCommit.setResultData("addNode"); + dataAffairCommit.setAttachIds(param.getAttachIds()); + dataAffairCommitMapper.insert(dataAffairCommit); + } + /** * 查看详情也审批前置校验 * 检查formId是否存在 @@ -349,28 +359,8 @@ public interface SeeYonOperationService extends SeeYonBaseService{ e.printStackTrace(); } String flag = checkAffairSummery(affairCommit.getTargetId()); - //保存记录 - 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.setUserId(sysUser.getId()); - dataAffairCommit.setUserCode(sysUser.getCode()); - dataAffairCommit.setUserName(sysUser.getName()); - dataAffairCommit.setResultData(flag); - dataAffairCommit.setAttachIds(affairCommit.getAttachIds()); - dataAffairCommitMapper.insert(dataAffairCommit); - } catch (Exception e) { - e.printStackTrace(); - } + //封装提交审批的记录 + this.buildAffairCommitData(affairCommit, flag); if(flag!=null && isBackCommit){ this.doBacked(affairCommit); @@ -395,6 +385,31 @@ public interface SeeYonOperationService extends SeeYonBaseService{ return R.error("远程调用失败"); } + default void buildAffairCommitData(TbsAffairCommitBo affairCommit, String flag) { + //保存记录 + 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.setUserId(sysUser.getId()); + dataAffairCommit.setUserCode(sysUser.getCode()); + dataAffairCommit.setUserName(sysUser.getName()); + dataAffairCommit.setResultData(flag); + dataAffairCommit.setAttachIds(affairCommit.getAttachIds()); + dataAffairCommitMapper.insert(dataAffairCommit); + } catch (Exception e) { + e.printStackTrace(); + } + } + /** * 用于回调OA的状态 * @param targetId diff --git a/src/main/java/com/qs/serve/modules/tag/entity/TagData.java b/src/main/java/com/qs/serve/modules/tag/entity/TagData.java index e507c7c1..0cf6aca0 100644 --- a/src/main/java/com/qs/serve/modules/tag/entity/TagData.java +++ b/src/main/java/com/qs/serve/modules/tag/entity/TagData.java @@ -97,6 +97,10 @@ public class TagData implements Serializable { @TableField(exist = false) private String bgColorVal; + /** 背景颜色 */ + @TableField(exist = false) + private String tagRemark; + @TableField(exist = false) private List queryTagIds; diff --git a/src/main/java/com/qs/serve/modules/tag/entity/vo/TagDataVo.java b/src/main/java/com/qs/serve/modules/tag/entity/vo/TagDataVo.java index 468558f2..16285f93 100644 --- a/src/main/java/com/qs/serve/modules/tag/entity/vo/TagDataVo.java +++ b/src/main/java/com/qs/serve/modules/tag/entity/vo/TagDataVo.java @@ -14,6 +14,8 @@ public class TagDataVo { private String type; + private String remark; + private List infoList; } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index dc44797a..f786feba 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java @@ -38,6 +38,13 @@ public interface TbsSeeYonConst { } } + /** 核销 */ + class BatchCostCheckConf{ + public static String Code(){ + return DevEnvironmentConfig.isDev()?"BatchCheckCost_Test":"BatchCheckCost"; + } + } + /** 预算申请 */ class BudgetApplyConf{ public static String Code(){ diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java index 4481756f..4ad3eba4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java @@ -105,6 +105,16 @@ public class TbsBudgetController { } } } + //已用的预算 + List budgetLogWithUsedAmountList = tbsScheduleItemBudgetMapper.getSumAmtNotInList(scheduleItemBudgetIds, Arrays.asList(0,2,3)); + for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) { + for (TbsBudgetLogWithAmount withAmount : budgetLogWithUsedAmountList) { + if (itemBudget.getId().equals(withAmount.getId())){ + itemBudget.setUsedBudgetAmount(withAmount.getAmt()); + break; + } + } + } budget.setBudgetConditionList(conditionList); Map> map = conditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType)); budget.setBrandConditions(map.get(TbsGoodsType.brand.name())); 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 aff31aef..d1200339 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 @@ -10,7 +10,10 @@ 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.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.vtb.entity.VtbVerification; 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 lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -35,7 +38,8 @@ public class VtbVerificationBatchController { private SeeYonRequestService seeYonService; private VtbVerificationBatchService vtbVerificationBatchService; - + private VtbVerificationService vtbVerificationService; + private VtbVerificationApplication2 vtbVerificationApplication2; /** * 翻页 @@ -56,10 +60,19 @@ public class VtbVerificationBatchController { * @return */ @GetMapping("/getById/{id}") - @SysLog(module = SystemModule.Verification, title = "", biz = BizType.QUERY) public R getById(@PathVariable("id") String id){ - VtbVerificationBatch vtbVerificationBatch = vtbVerificationBatchService.getById(id); - return R.ok(vtbVerificationBatch); + VtbVerificationBatch batch = vtbVerificationBatchService.getById(id); + if(batch.getVtbBatchStatus().equals(VtbVerificationBatch.BatchState.CHECKING)){ + //TODO 补偿回调 + } + List verificationList = vtbVerificationService + .list(new LambdaQueryWrapper() + .eq(VtbVerification::getBatchId,batch.getId())); + for (VtbVerification verification : verificationList) { + vtbVerificationApplication2.buildRelateInfo(verification); + } + batch.setVerificationList(verificationList); + return R.ok(batch); } 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 977e8d38..0a4c7b02 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 @@ -65,18 +65,9 @@ public class VtbVerificationController { private ProjectApisProperties projectApisProperties; private VtbVerificationService vtbVerificationService; private VtbVerificationMapper vtbVerificationMapper; - private VtbVerificationChannelService vtbVerificationChannelService; - private VtbVerificationChannelPointService vtbVerificationChannelPointService; private VtbVerificationYardCenterItemService vtbVerificationYardCenterItemService; - private VtbVerificationSubjectService vtbVerificationSubjectService; - private VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService; - private TbsActivitySubjectService activitySubjectService; - private TbsActivityCenterService activityCenterService; - private TbsActivityCenterGoodsService activityCenterGoodsService; private TbsCostApplyService tbsCostApplyService; private TbsActivityService tbsActivityService; - private TbsActivityPayConditionService tbsActivityPayConditionService; - private SysAttachService attachService; private SysUserService sysUserService; private SysPostUserService sysPostUserService; private SeeYonRequestService seeYonService; @@ -84,7 +75,7 @@ public class VtbVerificationController { private VtbVerificationYardService verificationYardService; private VtbVerificationYardItemService vtbVerificationYardItemService; private VtbVerificationOperationServiceImpl vtbVerificationOperationService; - private VtbVerificationExtService vtbVerificationExtService; + private VtbVerificationApplication2 vtbVerificationApplication2; /** @@ -204,86 +195,7 @@ public class VtbVerificationController { vtbVerificationOperationService.runCompensate(id); vtbVerification = vtbVerificationService.getById(id); } - if(CollectionUtil.isNotEmpty(vtbVerification.getAttachIds())){ - List attachIds = Arrays.asList(vtbVerification.getAttachIds()); - List attachList = attachService.listByIds(attachIds); - vtbVerification.setAttachList(attachList); - } - LambdaQueryWrapper channelLqw = new LambdaQueryWrapper<>(); - channelLqw.eq(VtbVerificationChannel::getVerificationId,id); - List verificationChannelList = vtbVerificationChannelService.list(channelLqw); - vtbVerification.setChannelList(verificationChannelList); - LambdaQueryWrapper channelPointLqw = new LambdaQueryWrapper<>(); - channelPointLqw.eq(VtbVerificationChannelPoint::getVerificationId,id); - List verificationChannelPointList = vtbVerificationChannelPointService.list(channelPointLqw); - vtbVerification.setPointList(verificationChannelPointList); - LambdaQueryWrapper subjectLqw = new LambdaQueryWrapper<>(); - subjectLqw.eq(VtbVerificationSubject::getVerificationId,id); - List subjectList = vtbVerificationSubjectService.list(subjectLqw); - List subjectCenterList = vtbVerificationSubjectCenterService.listByVerificationId(Long.parseLong(id)); - List activitySubjects = activitySubjectService.listByActivityId(vtbVerification.getActivityId()); - List activityCenters = activityCenterService.listByActivity(vtbVerification.getActivityId()); - for (VtbVerificationSubject verificationSubject : subjectList) { - for (TbsActivitySubject activitySubject : activitySubjects) { - if(verificationSubject.getSubjectId().equals(activitySubject.getSubjectId())){ - BigDecimal used = activitySubject.getUsedAmount()==null?BigDecimal.ZERO:activitySubject.getUsedAmount(); - BigDecimal diff = activitySubject.getAmount().subtract(used); - verificationSubject.setMaxChangeAmount(diff); - } - } - } - - if(subjectCenterList.size()<1){ - //subjectCenterList为空,代表是旧的审批,需要兼容 - for (VtbVerificationSubject verificationSubject : subjectList) { - for (TbsActivityCenter activityCenter : activityCenters) { - BigDecimal userAmountRecord = verificationSubject.getUsedAmountRecord(); - BigDecimal useAmount = verificationSubject.getUsedAmount(); - VtbVerificationSubjectCenter verCenter = new VtbVerificationSubjectCenter(); - verCenter.setCostApplyId(verificationSubject.getCostApplyId()); - verCenter.setActivityId(verificationSubject.getActivityId()); - verCenter.setSubjectId(verificationSubject.getSubjectId()); - verCenter.setSubjectCode(verificationSubject.getSubjectCode()); - verCenter.setSubjectName(verificationSubject.getSubjectName()); - verCenter.setSupplierId(verificationSubject.getSupplierId()); - verCenter.setSupplierCode(verificationSubject.getSupplierCode()); - verCenter.setSupplierName(verificationSubject.getSupplierName()); - BigDecimal usedItemRecord = userAmountRecord - .multiply(activityCenter.getCenterRate()) - .divide(new BigDecimal("100"),2, RoundingMode.DOWN); - BigDecimal usedItem = useAmount - .multiply(activityCenter.getCenterRate()) - .divide(new BigDecimal("100"),2, RoundingMode.DOWN); - verCenter.setUsedAmount(usedItem); - verCenter.setUsedAmountRecord(usedItemRecord); - verCenter.setCenterType(activityCenter.getCenterType()); - verCenter.setCenterId(activityCenter.getCenterId()); - verCenter.setCenterCode(activityCenter.getCenterCode()); - verCenter.setCenterName(activityCenter.getCenterName()); - verCenter.setActivityCenterId(activityCenter.getId()); - subjectCenterList.add(verCenter); - } - } - } - - for (VtbVerificationSubjectCenter verCenter : subjectCenterList) { - for (TbsActivityCenter actCenter : activityCenters) { - if(verCenter.getActivityCenterId().equals(actCenter.getId())){ - BigDecimal used = actCenter.getUsedAmount()==null?BigDecimal.ZERO:actCenter.getUsedAmount(); - BigDecimal diff = actCenter.getCenterAmount().subtract(used); - verCenter.setMaxChangeAmount(diff); - } - } - for (VtbVerificationSubject subject : subjectList) { - if(verCenter.getSubjectId().equals(subject.getSubjectId())){ - subject.getSubjectCenterList().add(verCenter); - break; - } - } - } - - vtbVerification.setActivityInfo(tbsActivityService.getById(vtbVerification.getActivityId())); - vtbVerification.setSubjectList(subjectList); + vtbVerificationApplication2.buildRelateInfo(vtbVerification); return R.ok(vtbVerification); } @@ -370,6 +282,15 @@ public class VtbVerificationController { public R> pageMemberAffair(Long verificationId){ VtbVerification verificationDB = vtbVerificationService.getById(verificationId); String syFormId = verificationDB.getSyFormId(); + //批量核销 + if(verificationDB.getBatchId()!=null){ + String templateCode = TbsSeeYonConst.BatchCostCheckConf.Code(); + R> result = seeYonService.commonListAffairs(verificationDB.getBatchId()+"",null,templateCode); + //TODO + List result2 = verificationApplication.buildCtpAffairVoList(result.getData()); + return R.ok(result2); + } + //单个核销 if(syFormId==null){ return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java index 25965e5b..f45ea963 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java @@ -35,6 +35,8 @@ public class VtbVerification implements Serializable { @TableId(type = IdType.AUTO) private Long id; + private String batchId; + @TableField(condition = SqlCondition.LIKE) private String verificationMainCode; 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 48e1d369..2a81dc04 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 @@ -4,6 +4,7 @@ import java.time.LocalDate; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; @@ -36,7 +37,7 @@ public class VtbVerificationBatch implements Serializable { @Length(max = 255,message = "批次编码长度不能超过255字") private String vtbBatchCode; - /** 状态 */ + /** 状态:0-审批中;1-通过;2-拒绝;3-回退 */ @NotNull(message = "状态不能为空") private Integer vtbBatchStatus; @@ -46,6 +47,18 @@ public class VtbVerificationBatch implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime finishedTime; + /** 回退时间 */ + @Length(max = 0,message = "核销通过时间长度不能超过0字") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime backedTime; + + /** 拒绝时间 */ + @Length(max = 0,message = "核销通过时间长度不能超过0字") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime refuseTime; + /** 费用id */ private Long costApplyId; @@ -93,7 +106,7 @@ public class VtbVerificationBatch implements Serializable { /** 客户id */ @NotNull(message = "客户id不能为空") - private Long supplierId; + private String supplierId; /** 客户编码 */ @NotBlank(message = "客户编码不能为空") @@ -132,5 +145,21 @@ public class VtbVerificationBatch implements Serializable { @Length(max = 255,message = "业务继承人长度不能超过255字") private String extUserName; + + /** 核销明细列表 */ + @TableField(exist = false) + private List verificationList; + + /** + * 审批状态 + */ + public interface BatchState{ + //0-审批中;1-通过;2-拒绝;3-回退 + int CHECKING = 0; + int CHECK_OK = 1; + int CHECK_REFUSE = 2; + int CHECK_BACK = 2; + } + } diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java b/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java index 6178f5b1..d63acd94 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java @@ -11,6 +11,9 @@ import java.util.List; @Data public class VtbVerificationBatchBo { + /** 退回重新核销时传 */ + private Long batchId; + /** 核销列表 */ List verificationList; 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 new file mode 100644 index 00000000..fb950581 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java @@ -0,0 +1,17 @@ +package com.qs.serve.modules.vtb.service; + +import com.qs.serve.modules.vtb.entity.VtbVerification; + +/** + * @author YenHex + * @since 2024/6/25 + */ +public interface VtbVerificationApplication2 { + + /** + * 构建核销详情 + * @param verification + */ + void buildRelateInfo(VtbVerification verification); + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchOperationService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchOperationService.java new file mode 100644 index 00000000..5406cefd --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchOperationService.java @@ -0,0 +1,13 @@ +package com.qs.serve.modules.vtb.service; + +import com.qs.serve.modules.seeyon.service.SeeYonOperationService; + +/** + * @author YenHex + * @since 2024/6/25 + */ +public interface VtbVerificationBatchOperationService extends SeeYonOperationService { + + + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java index eb72f0ac..b7ece5b1 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationBatchService.java @@ -1,9 +1,12 @@ package com.qs.serve.modules.vtb.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.VtbVerificationBatch; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo; +import java.util.List; + /** * 服务接口 * @author YenHex @@ -17,6 +20,7 @@ public interface VtbVerificationBatchService extends IService listVerifications(Long batchId); } 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 new file mode 100644 index 00000000..ff96bceb --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java @@ -0,0 +1,143 @@ +package com.qs.serve.modules.vtb.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.service.SysAttachService; +import com.qs.serve.modules.sys.service.SysPostUserService; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.entity.TbsActivityCenter; +import com.qs.serve.modules.tbs.entity.TbsActivitySubject; +import com.qs.serve.modules.tbs.service.*; +import com.qs.serve.modules.vtb.entity.*; +import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; +import com.qs.serve.modules.vtb.service.*; +import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Arrays; +import java.util.List; + +/** + * @author YenHex + * @since 2024/6/25 + */ +@Service +@AllArgsConstructor +public class VtbVerificationApplication2Impl implements VtbVerificationApplication2 { + + private ProjectApisProperties projectApisProperties; + private VtbVerificationService vtbVerificationService; + private VtbVerificationMapper vtbVerificationMapper; + private VtbVerificationChannelService vtbVerificationChannelService; + private VtbVerificationChannelPointService vtbVerificationChannelPointService; + private VtbVerificationYardCenterItemService vtbVerificationYardCenterItemService; + private VtbVerificationSubjectService vtbVerificationSubjectService; + private VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService; + private TbsActivitySubjectService activitySubjectService; + private TbsActivityCenterService activityCenterService; + private TbsActivityCenterGoodsService activityCenterGoodsService; + private TbsCostApplyService tbsCostApplyService; + private TbsActivityService tbsActivityService; + private TbsActivityPayConditionService tbsActivityPayConditionService; + private SysAttachService attachService; + private SysUserService sysUserService; + private SysPostUserService sysPostUserService; + private SeeYonRequestService seeYonService; + private VtbVerificationApplication verificationApplication; + private VtbVerificationYardService verificationYardService; + private VtbVerificationYardItemService vtbVerificationYardItemService; + private VtbVerificationOperationServiceImpl vtbVerificationOperationService; + private VtbVerificationExtService vtbVerificationExtService; + + @Override + public void buildRelateInfo(VtbVerification vtbVerification) { + Long id = vtbVerification.getId(); + if(CollectionUtil.isNotEmpty(vtbVerification.getAttachIds())){ + List attachIds = Arrays.asList(vtbVerification.getAttachIds()); + List attachList = attachService.listByIds(attachIds); + vtbVerification.setAttachList(attachList); + } + LambdaQueryWrapper channelLqw = new LambdaQueryWrapper<>(); + channelLqw.eq(VtbVerificationChannel::getVerificationId,id); + List verificationChannelList = vtbVerificationChannelService.list(channelLqw); + vtbVerification.setChannelList(verificationChannelList); + LambdaQueryWrapper channelPointLqw = new LambdaQueryWrapper<>(); + channelPointLqw.eq(VtbVerificationChannelPoint::getVerificationId,id); + List verificationChannelPointList = vtbVerificationChannelPointService.list(channelPointLqw); + vtbVerification.setPointList(verificationChannelPointList); + LambdaQueryWrapper subjectLqw = new LambdaQueryWrapper<>(); + subjectLqw.eq(VtbVerificationSubject::getVerificationId,id); + List subjectList = vtbVerificationSubjectService.list(subjectLqw); + List subjectCenterList = vtbVerificationSubjectCenterService.listByVerificationId(id); + List activitySubjects = activitySubjectService.listByActivityId(vtbVerification.getActivityId()); + List activityCenters = activityCenterService.listByActivity(vtbVerification.getActivityId()); + for (VtbVerificationSubject verificationSubject : subjectList) { + for (TbsActivitySubject activitySubject : activitySubjects) { + if(verificationSubject.getSubjectId().equals(activitySubject.getSubjectId())){ + BigDecimal used = activitySubject.getUsedAmount()==null?BigDecimal.ZERO:activitySubject.getUsedAmount(); + BigDecimal diff = activitySubject.getAmount().subtract(used); + verificationSubject.setMaxChangeAmount(diff); + } + } + } + + if(subjectCenterList.size()<1){ + //subjectCenterList为空,代表是旧的审批,需要兼容 + for (VtbVerificationSubject verificationSubject : subjectList) { + for (TbsActivityCenter activityCenter : activityCenters) { + BigDecimal userAmountRecord = verificationSubject.getUsedAmountRecord(); + BigDecimal useAmount = verificationSubject.getUsedAmount(); + VtbVerificationSubjectCenter verCenter = new VtbVerificationSubjectCenter(); + verCenter.setCostApplyId(verificationSubject.getCostApplyId()); + verCenter.setActivityId(verificationSubject.getActivityId()); + verCenter.setSubjectId(verificationSubject.getSubjectId()); + verCenter.setSubjectCode(verificationSubject.getSubjectCode()); + verCenter.setSubjectName(verificationSubject.getSubjectName()); + verCenter.setSupplierId(verificationSubject.getSupplierId()); + verCenter.setSupplierCode(verificationSubject.getSupplierCode()); + verCenter.setSupplierName(verificationSubject.getSupplierName()); + BigDecimal usedItemRecord = userAmountRecord + .multiply(activityCenter.getCenterRate()) + .divide(new BigDecimal("100"),2, RoundingMode.DOWN); + BigDecimal usedItem = useAmount + .multiply(activityCenter.getCenterRate()) + .divide(new BigDecimal("100"),2, RoundingMode.DOWN); + verCenter.setUsedAmount(usedItem); + verCenter.setUsedAmountRecord(usedItemRecord); + verCenter.setCenterType(activityCenter.getCenterType()); + verCenter.setCenterId(activityCenter.getCenterId()); + verCenter.setCenterCode(activityCenter.getCenterCode()); + verCenter.setCenterName(activityCenter.getCenterName()); + verCenter.setActivityCenterId(activityCenter.getId()); + subjectCenterList.add(verCenter); + } + } + } + + for (VtbVerificationSubjectCenter verCenter : subjectCenterList) { + for (TbsActivityCenter actCenter : activityCenters) { + if(verCenter.getActivityCenterId().equals(actCenter.getId())){ + BigDecimal used = actCenter.getUsedAmount()==null?BigDecimal.ZERO:actCenter.getUsedAmount(); + BigDecimal diff = actCenter.getCenterAmount().subtract(used); + verCenter.setMaxChangeAmount(diff); + } + } + for (VtbVerificationSubject subject : subjectList) { + if(verCenter.getSubjectId().equals(subject.getSubjectId())){ + subject.getSubjectCenterList().add(verCenter); + break; + } + } + } + + vtbVerification.setActivityInfo(tbsActivityService.getById(vtbVerification.getActivityId())); + vtbVerification.setSubjectList(subjectList); + } + +} 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 1838c05d..e3561c79 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 @@ -1,49 +1,168 @@ 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.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.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 lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.util.List; + /** * @author YenHex * @since 2024/6/14 */ @Service -public class VtbVerificationBatchOperationServiceImpl implements SeeYonOperationService { +@AllArgsConstructor +public class VtbVerificationBatchOperationServiceImpl implements VtbVerificationBatchOperationService { + + private final VtbVerificationBatchService vtbVerificationBatchService; + private final VtbVerificationService vtbVerificationService; @Override public String getTemplateCode() { - return null; + return TbsSeeYonConst.BatchCostCheckConf.Code(); } @Override public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) { + Assert.throwEx("方法未定义getSyFormIdByTargetInfo"); return null; } @Override public Object doBacked(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) { + verification.setVerificationState(VtbVerificationState.Rollback.getCode()); + vtbVerificationService.updateById(verification); + } return null; } @Override public Object doFinished(TbsAffairCommitBo param) { + return null; } @Override public Object doRefuse(TbsAffairCommitBo param) { + VtbVerificationBatch batch = vtbVerificationBatchService.getById(param.getTargetId()); + List verificationList = vtbVerificationBatchService.listVerifications(batch.getId()); + batch.setVtbBatchStatus(VtbVerificationBatch.BatchState.CHECK_REFUSE); + batch.setRefuseTime(LocalDateTime.now()); + vtbVerificationBatchService.updateById(batch); + for (VtbVerification verification : verificationList) { + verification.setVerificationState(VtbVerificationState.Stop.getCode()); + vtbVerificationService.updateById(verification); + } return null; } + @Override + public void insertAddNodeLog(CtpAddNodeParam param, String affairId, SysUser sysUser) { + //给加签添加审批日志 + DataAffairCommitMapper dataAffairCommitMapper = SpringUtils.getBean(DataAffairCommitMapper.class); + DataAffairCommit dataAffairCommit = new DataAffairCommit(); + dataAffairCommit.setTargetCode(getTemplateCode()); + dataAffairCommit.setTargetId(param.getTargetId()); + dataAffairCommit.setId(affairId); + dataAffairCommit.setCommentVal("加签:"+ param.getComment()); + dataAffairCommit.setReleaseFlag(0); + dataAffairCommit.setState(3); + dataAffairCommit.setUserId(sysUser.getId()); + dataAffairCommit.setUserCode(sysUser.getCode()); + dataAffairCommit.setUserName(sysUser.getName()); + dataAffairCommit.setResultData("addNode"); + dataAffairCommit.setAttachIds(param.getAttachIds()); + dataAffairCommitMapper.insert(dataAffairCommit); + + VtbVerificationBatch batch = vtbVerificationBatchService.getById(param.getTargetId()); + List verificationList = vtbVerificationBatchService.listVerifications(batch.getId()); + + //保存到每个核销 + for (VtbVerification verification : verificationList) { + DataAffairCommit affairCommit = CopierUtil.copy(dataAffairCommit,new DataAffairCommit()); + affairCommit.setId(null); + affairCommit.setTargetId(verification.getId()+""); + affairCommit.setTargetCode(verification.getVerificationCode()); + dataAffairCommitMapper.insert(affairCommit); + } + + } + + @Override + public void buildAffairCommitData(TbsAffairCommitBo affairCommit, String flag) { + //常规的提交审批日志 + //保存记录 + 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.setUserId(sysUser.getId()); + dataAffairCommit.setUserCode(sysUser.getCode()); + dataAffairCommit.setUserName(sysUser.getName()); + dataAffairCommit.setResultData(flag); + dataAffairCommit.setAttachIds(affairCommit.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()); + obj.setId(null); + obj.setTargetId(verification.getId()+""); + obj.setTargetCode(verification.getVerificationCode()); + dataAffairCommitMapper.insert(obj); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + @Override public boolean checkSyFormIdIsNotNull(String targetId) { - return false; + VtbVerificationBatch batch = vtbVerificationBatchService.getById(targetId); + return batch.getSyFormId()!=null; } @Override public void doCommitBacked(String targetId) { - + //审批完成后调用 } } 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 f46cd6cf..c33077af 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 @@ -1,9 +1,17 @@ package com.qs.serve.modules.vtb.service.impl; +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.redis.RedisService; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.oa.OaFormMainProcess; +import com.qs.serve.common.model.oa.OaUploadFile; import com.qs.serve.common.util.*; +import com.qs.serve.common.util.model.DateFormatString; import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper; @@ -13,28 +21,39 @@ import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.pay.entity.PayWay; import com.qs.serve.modules.pay.mapper.PayWayMapper; +import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo; +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.SysUserService; +import com.qs.serve.modules.tag.mapper.TagInfoMapper; import com.qs.serve.modules.tbs.common.TbsActivityState; +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.TbsActivity; +import com.qs.serve.modules.tbs.entity.TbsActivityCenter; +import com.qs.serve.modules.tbs.entity.TbsActivitySubject; import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; +import com.qs.serve.modules.tbs.service.TbsActivityCenterService; import com.qs.serve.modules.tbs.service.TbsActivityService; +import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import com.qs.serve.modules.tbs.service.TbsCostApplyService; import com.qs.serve.modules.vtb.common.VerificationUtil; import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.entity.*; import com.qs.serve.modules.vtb.entity.bo.*; +import com.qs.serve.modules.vtb.entity.dto.VtbSubjectDTO; import com.qs.serve.modules.vtb.service.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.qs.serve.modules.vtb.mapper.VtbVerificationBatchMapper; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.time.LocalDateTime; +import java.util.*; import java.util.stream.Collectors; /** @@ -53,6 +72,8 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl activityList = tbsActivityService.listByCostApplyId(costApply.getId()); @@ -117,7 +143,210 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl allVerificationSubjects = new ArrayList<>(); List allVerificationCenters = new ArrayList<>(); - //校验BO参数 + //主创建方法,校验BO参数和创建数据 + this.mainCheckAndCreateBatchItemData(submitBo, costApply, supplier, activityList, sysUser, payWay, + orgVerificationIds, newVerificationList, allVerificationChannelList, allVerificationChannelPointList, + allVerificationSubjects, allVerificationCenters); + + VtbVerificationBatch verificationBatch = new VtbVerificationBatch(); + verificationBatch.setVtbBatchCode("BHX"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.VerificationBatch)); + verificationBatch.setVtbBatchStatus(0); + verificationBatch.setCostApplyId(costApply.getId()); + //verificationBatch.setRemark(); + //verificationBatch.setSyFormId(); + //verificationBatch.setSyFlowId(); + verificationBatch.setSupplierId(supplier.getId()); + verificationBatch.setSupplierCode(supplier.getCode()); + verificationBatch.setSupplierName(supplier.getName()); + verificationBatch.setUserId(sysUser.getId()); + verificationBatch.setUserCode(sysUser.getCode()); + verificationBatch.setUserName(sysUser.getName()); + this.save(verificationBatch); + + String batchId = verificationBatch.getId()+""; + Map newWayData = new HashMap<>(); + Map data = new HashMap<>(); + List uploadFileList = new ArrayList<>(); + + //创建OA参数data + this.buildBatchOAData(submitBo, templateCode, costApply, supplier, sysUser, saleBizNames, bizBizNames, + verificationBatch, batchId, newWayData, data, uploadFileList); + + OaFormMainProcess mainProcess = new OaFormMainProcess(); + mainProcess.setTargetId(batchId); + mainProcess.setUploadFiles(uploadFileList); + newWayData.put("formmain_2178",data); + mainProcess.setTableName("formmain_2178"); + mainProcess.setData(newWayData); + mainProcess.setTemplateCode(templateCode); + mainProcess.setUserId(sysUser.getId()); + mainProcess.setSenderLoginName(sysUser.getAccount()); + R flowIdResult = seeYonService.newCreateProcess(mainProcess); + + if(flowIdResult==null||flowIdResult.getStatus()!=200){ + assert flowIdResult != null; + Assert.throwEx("远程服务调用失败:"+flowIdResult.getMsg()); + } + if(flowIdResult.getMsg()!=null && flowIdResult.getMsg().length()>45){ + log.error(flowIdResult.getMsg()); + JSONObject object = JSON.parseObject(flowIdResult.getMsg()); + if(!object.get("code").toString().equals("0")){ + Assert.throwEx("流程发起被拦截了"); + } + } + + //移除历史提交记录 + for (Long orgVerificationId : orgVerificationIds) { + verificationChannelService.removeByVerificationId(orgVerificationId); + verificationChannelPointService.removeByVerificationId(orgVerificationId); + verificationSubjectService.removeByVerificationId(orgVerificationId); + vtbVerificationSubjectCenterService.removeByVerificationId(orgVerificationId); + vtbFundFlowService.removeByVerificationId(orgVerificationId); + } + + Map> allVerificationChannelListMap = allVerificationChannelList.stream() + .collect(Collectors.groupingBy(VtbVerificationChannel::getVerificationId)); + Map> allVerificationChannelPointListMap = allVerificationChannelPointList.stream() + .collect(Collectors.groupingBy(VtbVerificationChannelPoint::getVerificationId)); + + Map> allVerificationSubjectsMap = allVerificationSubjects.stream() + .collect(Collectors.groupingBy(VtbVerificationSubject::getVerificationId)); + Map> allVerificationCentersMap = allVerificationCenters.stream() + .collect(Collectors.groupingBy(VtbVerificationSubjectCenter::getVerificationId)); + + + for (VtbVerification verification : newVerificationList) { + //临时ID,实际是活动ID + Long tmpId = verification.getId(); + + verification.setId(null); + //关联批量ID + verification.setBatchId(batchId); + vtbVerificationService.save(verification); + Long verificationId = verification.getId(); + + this.saveVerificationRelateData(allVerificationChannelListMap, allVerificationChannelPointListMap, allVerificationSubjectsMap, allVerificationCentersMap, tmpId, verificationId); + + //更新活动状态 + TbsActivity activityParam = new TbsActivity(); + activityParam.setId(verification.getActivityId()); + activityParam.setActivityState(TbsActivityState.STATE_1_Checking); + activityParam.setCurrVerificationId(verification.getId()+""); + tbsActivityService.updateById(activityParam); + + } + + //更变费用申请的活动状态 + TbsCostApply costApplyParam = new TbsCostApply(); + costApplyParam.setId(costApply.getId()); + costApplyParam.setCheckState(1); + tbsCostApplyService.updateById(costApplyParam); + + BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,batchId); + seeYonService.createCallbackStatus(callbackBo); + + } + + /** + * 创建OA参数data + * @param submitBo + * @param templateCode + * @param costApply + * @param supplier + * @param sysUser + * @param saleBizNames + * @param bizBizNames + * @param verificationBatch + * @param batchId + * @param newWayData + * @param data + * @param uploadFileList + */ + private void buildBatchOAData(VtbVerificationBatchBo submitBo, String templateCode, TbsCostApply costApply, + BmsSupplier supplier, SysUser sysUser, String saleBizNames, String bizBizNames, + VtbVerificationBatch verificationBatch, String batchId, Map newWayData, + Map data, List uploadFileList) { + data.put("title", verificationBatch.getVtbBatchCode()); + data.put("orgId", batchId); + data.put("targetId", batchId); + data.put("targetCode", verificationBatch.getVtbBatchCode()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("supplierName", supplier.getName()); + data.put("supplierCode", supplier.getCode()); + data.put("exsp1", templateCode); + data.put("exsp2", saleBizNames); + data.put("biz_region", bizBizNames); + //添加跳转地址业务 + String urlKey = "exsp5"; + String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),TbsSeeYonConst.BatchCostCheckConf.Code(), batchId); + data.put("exsp5",urlKey); + data.put("cmsLink",baseJumpUrl); + data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); + data.put("rowState","00"); + //添加客户标签 + List tags = tagInfoMapper.lisTagsBySupplierCode(supplier.getCode()); + data.put("tags",tags); + + List oaAttachmentsIdList = new ArrayList<>(); + submitBo.getVerificationList().forEach(obj->{ + if(obj.getAttachIds()!=null && obj.getAttachIds().length>0){ + oaAttachmentsIdList.addAll(Arrays.asList(obj.getAttachIds())); + } + }); + + //科目 + List subjectList = tbsActivitySubjectService.listByCostApplyId(costApply.getId()); + List subjectDTOList = new ArrayList<>(); + for (TbsActivitySubject activitySubject : subjectList) { + VtbSubjectDTO subjectDTO = new VtbSubjectDTO(); + subjectDTO.setKeMuName(activitySubject.getSubjectName()); + subjectDTOList.add(subjectDTO); + } + newWayData.put("formson_2180",subjectDTOList); + + //成本中心 + List centerDataList = new ArrayList<>(); + List activityCenter = tbsActivityCenterService.listByCostApplyId(costApply.getId()); + for(TbsActivityCenter center : activityCenter){ + TbsCostSubItem.CostCenterTranStr costCenter = new TbsCostSubItem.CostCenterTranStr(); + if(costCenter.getChengBenZhongXin()==null){ + costCenter.setChengBenZhongXin(center.getCenterName()); + costCenter.setChengBenZhongXinId(center.getCenterType()+"-"+center.getId()); + } + centerDataList.add(costCenter); + } + newWayData.put("formson_2179",centerDataList); + + //加载附件 + if(CollectionUtil.isNotEmpty(oaAttachmentsIdList)){ + List attachList = sysAttachService.listByIds(oaAttachmentsIdList); + for (SysAttach sysAttach : attachList) { + OaUploadFile uploadFile = new OaUploadFile(); + uploadFile.setField("file"); + uploadFile.setName("核销附件"+sysAttach.getName()); + uploadFile.setUrl("https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/"+sysAttach.getRelativePath()); + uploadFileList.add(uploadFile); + } + } + } + + /** + * 主创建方法,校验BO参数和创建数据 + * @param submitBo + * @param costApply + * @param supplier + * @param activityList + * @param sysUser + * @param payWay + * @param orgVerificationIds + * @param newVerificationList + * @param allVerificationChannelList + * @param allVerificationChannelPointList + * @param allVerificationSubjects + * @param 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())){ @@ -141,70 +370,13 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl channelBoList = verificationBo.getChannelList(); - List pointBoList = verificationBo.getPointList(); - if(CollectionUtil.isNotEmpty(channelBoList)){ - for (VtbVerificationChannelBo channelBo : channelBoList) { - BmsChannel channel = channelService.getById(channelBo.getChannelId()); - VtbVerificationChannel verificationChannel = new VtbVerificationChannel(); - verificationChannel.setActivityId(activity.getId()); - verificationChannel.setCostApplyId(costApply.getId()); - verificationChannel.setVerificationId(verification.getId()); - verificationChannel.setChannelId(channel.getId()); - verificationChannel.setChannelCode(channel.getChannelCode()); - verificationChannel.setChannelName(channel.getChannelName()); - verificationChannel.setChannelRate(channelBo.getChannelRate()); - verificationChannel.setPreCountPoint(channelBo.getPreCountPoint()); - verificationChannel.setRemark(channelBo.getRemark()); - allVerificationChannelList.add(verificationChannel); - } - }else if (CollectionUtil.isNotEmpty(pointBoList)){ - for (VtbVerificationChannelPointBo channelPointBo : pointBoList) { - BmsChannelPoint channelPoint = channelPointService.getById(channelPointBo.getPointId()); - BmsChannel channel = channelService.getById(channelPoint.getChannelId()); - VtbVerificationChannelPoint channelPoint1 = new VtbVerificationChannelPoint(); - channelPoint1.setCostApplyId(costApply.getId()); - channelPoint1.setActivityId(activity.getId()); - channelPoint1.setChannelId(channel.getId()); - channelPoint1.setVerificationId(verification.getId()); - channelPoint1.setChannelCode(channel.getChannelCode()); - channelPoint1.setChannelName(channel.getChannelName()); - channelPoint1.setPointId(channelPoint.getId()); - channelPoint1.setPointCode(channelPoint.getPointCode()); - channelPoint1.setPointName(channelPoint.getPointName()); - channelPoint1.setPointRate(channelPointBo.getPointRate()); - channelPoint1.setRemark(channelPointBo.getRemark()); - allVerificationChannelPointList.add(channelPoint1); - } - } + // 给核销赋值 + this.verificationSetAssign(costApply, sysUser, payWay, verificationBo, activity, verification); + //创建核销相关数据(未存入数据库) + this.buildVerificationRelateData(costApply, allVerificationChannelList, allVerificationChannelPointList, + verificationBo, activity, verification); List verificationSubjects = new ArrayList<>(); List verificationCenters = new ArrayList<>(); @@ -237,80 +409,138 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl activityIds = newVerificationList.stream().map(VtbVerification::getId).collect(Collectors.toList()); - - Map> allVerificationChannelListMap = allVerificationChannelList.stream() - .collect(Collectors.groupingBy(VtbVerificationChannel::getVerificationId)); - Map> allVerificationChannelPointListMap = allVerificationChannelPointList.stream() - .collect(Collectors.groupingBy(VtbVerificationChannelPoint::getVerificationId)); - - Map> allVerificationSubjectsMap = allVerificationSubjects.stream() - .collect(Collectors.groupingBy(VtbVerificationSubject::getVerificationId)); - Map> allVerificationCentersMap = allVerificationCenters.stream() - .collect(Collectors.groupingBy(VtbVerificationSubjectCenter::getVerificationId)); - - - for (VtbVerification verification : newVerificationList) { - //临时ID,实际是活动ID - Long tmpId = verification.getId(); - - verification.setId(null); - vtbVerificationService.save(verification); - Long verificationId = verification.getId(); - - List vtbVerificationChannels = allVerificationChannelListMap.get(tmpId); - if(vtbVerificationChannels!=null){ - vtbVerificationChannels.forEach(a->a.setVerificationId(verificationId)); - verificationChannelService.saveBatch(vtbVerificationChannels); - } - - List verificationChannelPointList = allVerificationChannelPointListMap.get(tmpId); - if(verificationChannelPointList!=null){ - verificationChannelPointList.forEach(a->a.setVerificationId(verificationId)); - verificationChannelPointService.saveBatch(verificationChannelPointList); - } - - List verificationSubjects = allVerificationSubjectsMap.get(tmpId); - if(verificationSubjects!=null){ - verificationSubjects.forEach(a->a.setVerificationId(verificationId)); - verificationSubjectService.saveBatch(verificationSubjects); + /** + * 创建核销相关数据(未存入数据库) + * @param costApply + * @param allVerificationChannelList + * @param allVerificationChannelPointList + * @param verificationBo + * @param activity + * @param verification + */ + private void buildVerificationRelateData(TbsCostApply costApply, List allVerificationChannelList, List allVerificationChannelPointList, VtbVerificationBo verificationBo, TbsActivity activity, VtbVerification verification) { + List channelBoList = verificationBo.getChannelList(); + List pointBoList = verificationBo.getPointList(); + if(CollectionUtil.isNotEmpty(channelBoList)){ + for (VtbVerificationChannelBo channelBo : channelBoList) { + BmsChannel channel = channelService.getById(channelBo.getChannelId()); + VtbVerificationChannel verificationChannel = new VtbVerificationChannel(); + verificationChannel.setActivityId(activity.getId()); + verificationChannel.setCostApplyId(costApply.getId()); + verificationChannel.setVerificationId(verification.getId()); + verificationChannel.setChannelId(channel.getId()); + verificationChannel.setChannelCode(channel.getChannelCode()); + verificationChannel.setChannelName(channel.getChannelName()); + verificationChannel.setChannelRate(channelBo.getChannelRate()); + verificationChannel.setPreCountPoint(channelBo.getPreCountPoint()); + verificationChannel.setRemark(channelBo.getRemark()); + allVerificationChannelList.add(verificationChannel); } - - List vtbVerificationSubjectCenterList = allVerificationCentersMap.get(tmpId); - if(vtbVerificationSubjectCenterList!=null){ - vtbVerificationSubjectCenterList.forEach(a->a.setVerificationId(verificationId)); - vtbVerificationSubjectCenterService.saveBatch(vtbVerificationSubjectCenterList); + }else if (CollectionUtil.isNotEmpty(pointBoList)){ + for (VtbVerificationChannelPointBo channelPointBo : pointBoList) { + BmsChannelPoint channelPoint = channelPointService.getById(channelPointBo.getPointId()); + BmsChannel channel = channelService.getById(channelPoint.getChannelId()); + VtbVerificationChannelPoint channelPoint1 = new VtbVerificationChannelPoint(); + channelPoint1.setCostApplyId(costApply.getId()); + channelPoint1.setActivityId(activity.getId()); + channelPoint1.setChannelId(channel.getId()); + channelPoint1.setVerificationId(verification.getId()); + channelPoint1.setChannelCode(channel.getChannelCode()); + channelPoint1.setChannelName(channel.getChannelName()); + channelPoint1.setPointId(channelPoint.getId()); + channelPoint1.setPointCode(channelPoint.getPointCode()); + channelPoint1.setPointName(channelPoint.getPointName()); + channelPoint1.setPointRate(channelPointBo.getPointRate()); + channelPoint1.setRemark(channelPointBo.getRemark()); + allVerificationChannelPointList.add(channelPoint1); } + } + } - //更新活动状态 - TbsActivity activityParam = new TbsActivity(); - activityParam.setId(verification.getActivityId()); - activityParam.setActivityState(TbsActivityState.STATE_1_Checking); - activityParam.setCurrVerificationId(verification.getId()+""); - tbsActivityService.updateById(activityParam); + /** + * 保存核销相关数据 + * @param allVerificationChannelListMap + * @param allVerificationChannelPointListMap + * @param allVerificationSubjectsMap + * @param allVerificationCentersMap + * @param tmpId + * @param verificationId + */ + private void saveVerificationRelateData(Map> allVerificationChannelListMap, Map> allVerificationChannelPointListMap, Map> allVerificationSubjectsMap, Map> allVerificationCentersMap, Long tmpId, Long verificationId) { + List vtbVerificationChannels = allVerificationChannelListMap.get(tmpId); + if(vtbVerificationChannels!=null){ + vtbVerificationChannels.forEach(a->a.setVerificationId(verificationId)); + verificationChannelService.saveBatch(vtbVerificationChannels); + } + List verificationChannelPointList = allVerificationChannelPointListMap.get(tmpId); + if(verificationChannelPointList!=null){ + verificationChannelPointList.forEach(a->a.setVerificationId(verificationId)); + verificationChannelPointService.saveBatch(verificationChannelPointList); } - //更变费用申请的活动状态 - TbsCostApply costApplyParam = new TbsCostApply(); - costApplyParam.setId(costApply.getId()); - costApplyParam.setCheckState(1); - tbsCostApplyService.updateById(costApplyParam); + List verificationSubjects = allVerificationSubjectsMap.get(tmpId); + if(verificationSubjects!=null){ + verificationSubjects.forEach(a->a.setVerificationId(verificationId)); + verificationSubjectService.saveBatch(verificationSubjects); + } + List vtbVerificationSubjectCenterList = allVerificationCentersMap.get(tmpId); + if(vtbVerificationSubjectCenterList!=null){ + vtbVerificationSubjectCenterList.forEach(a->a.setVerificationId(verificationId)); + vtbVerificationSubjectCenterService.saveBatch(vtbVerificationSubjectCenterList); + } } + @Override + public List listVerifications(Long batchId) { + return vtbVerificationService + .list(new LambdaQueryWrapper() + .eq(VtbVerification::getBatchId,batchId)); + } } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index ac18d258..c4f9d140 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -1545,6 +1545,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl sysSyncLogs = sysSyncLogService.list(lqw); diff --git a/src/main/resources/mapper/tag/TagDataMapper.xml b/src/main/resources/mapper/tag/TagDataMapper.xml index c32a7bcb..bee63599 100644 --- a/src/main/resources/mapper/tag/TagDataMapper.xml +++ b/src/main/resources/mapper/tag/TagDataMapper.xml @@ -41,6 +41,7 @@ SELECT tag_info.color_val, tag_info.bg_color_val, + tag_info.remark as tagRemark, FROM `tag_data` `tag_data` left join tag_info on tag_data.tag_id = tag_info.id