From ea21ced20c11076d03963ee0f855960de3a6bf27 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 27 Jul 2023 16:36:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BC=82=E5=8A=A8=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E8=B4=B9=E7=94=A8=E5=A4=8D=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/common/util/CodeGenUtil.java | 3 +- .../modules/tbs/common/TbsCostApplyState.java | 6 +- .../TbsActivityPayConditionController.java | 6 +- .../controller/TbsCostApplyController.java | 18 +- .../tbs/entity/TbsActivityPayCondition.java | 2 + .../modules/tbs/entity/TbsCostApply.java | 7 +- .../tbs/entity/bo/TbsCostApplyChangeBo.java | 19 ++ .../entity/dto/TbsContractCostSubItem.java | 21 +- .../tbs/service/TbsCostApplyPart1Service.java | 19 ++ .../tbs/service/TbsCostApplyService.java | 1 + .../impl/TbsCostApplyPart1ServiceImpl.java | 189 ++++++++++++++++++ .../service/impl/TbsCostApplyServiceImpl.java | 37 +++- .../modules/vtb/entity/VtbVerification.java | 2 + .../impl/VtbVerificationServiceImpl.java | 8 +- 14 files changed, 308 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyChangeBo.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java 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 1e1a7f75..b9eb5302 100644 --- a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java +++ b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java @@ -33,7 +33,8 @@ public class CodeGenUtil { public enum SourceDataKey{ SaleRegion("S","SaleRegion"), Budget("","Budget"), - BizRegion("B","BizRegion"); + BizRegion("B","BizRegion"), + ActivityPayCondition("K","ActivityPayCondition"); private String prefix; private String code; } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java index 4daeaf93..60e39675 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java @@ -15,14 +15,16 @@ import java.util.List; @AllArgsConstructor public enum TbsCostApplyState { - //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废 + //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废;7-异动 State_0_unPublish(0), State_1_apply(1), State_2_actioning(2), State_3_finished(3), State_4_refused(4), State_5_stop(5), - State_6_remove(6); + State_6_remove(6), + State_7_changed(6) + ; private Integer code; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java index be5f73ae..ea2848de 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java @@ -6,10 +6,7 @@ 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.Assert; -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.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsCostApply; @@ -127,6 +124,7 @@ public class TbsActivityPayConditionController { Long actId = activityList.get(0).getId(); entity.setActivityId(actId); entity.setPreNotifyStatus(param.getPreNotifyTime()==null?0:1); + entity.setCode(CodeGenUtil.getDataCode(CodeGenUtil.SourceDataKey.ActivityPayCondition)); boolean result = tbsActivityPayConditionService.save(entity); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 6c20512a..776469c9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java @@ -25,10 +25,7 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.common.dto.CompensateDTO; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; -import com.qs.serve.modules.tbs.entity.bo.TbsActivityBo; -import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; -import com.qs.serve.modules.tbs.entity.bo.TbsCostApplyActivityBo; -import com.qs.serve.modules.tbs.entity.bo.TbsCostApplyBo; +import com.qs.serve.modules.tbs.entity.bo.*; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; @@ -57,6 +54,7 @@ import java.util.stream.Collectors; @RequestMapping("tbs/costApply") public class TbsCostApplyController { + private TbsCostApplyPart1Service costApplyPart1Service; private TbsCostContractService costContractService; private TbsCostApplyService tbsCostApplyService; private TbsActivityService tbsActivityService; @@ -262,6 +260,18 @@ public class TbsCostApplyController { return R.ok(entity); } + /** + * 异动申请 + * @param id + * @return + */ + @PostMapping("/settingWithChange/{id}") + @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.INSERT) + @Transactional(rollbackFor = Exception.class) + public R save(@PathVariable("id") Long id){ + return R.ok(costApplyPart1Service.toSetChanged(id)); + } + /** * 根据模板,新增费用及活动 * @param param diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java index 73da3ced..5e5dca7b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java @@ -31,6 +31,8 @@ public class TbsActivityPayCondition implements Serializable { @TableId(type = IdType.AUTO) private Long id; + private String code; + /** 标题 */ @TableField(condition = SqlCondition.LIKE) private String title; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java index 33ab08b7..41179e4c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java @@ -55,7 +55,7 @@ public class TbsCostApply implements Serializable { @TableField(condition = SqlCondition.LIKE) private String supplierName; - /** 状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回 */ + /** 状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废;7-异动 @{link TbsCostApplyState} */ @NotNull(message = "状态不能为空") private Integer chargeState; @@ -150,6 +150,11 @@ public class TbsCostApply implements Serializable { private Integer costThemeEditFlag; + private Integer cancelFlag; + + private Long changeSourceId; + + @TableField(exist = false) private String affairId; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyChangeBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyChangeBo.java new file mode 100644 index 00000000..f750cdb0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyChangeBo.java @@ -0,0 +1,19 @@ +package com.qs.serve.modules.tbs.entity.bo; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author YenHex + * @since 2022/12/19 + */ +@Data +public class TbsCostApplyChangeBo { + + @NotNull + TbsCostApplyBo costApplyBo; + + + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java index 34cf01ed..4efe8298 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java @@ -22,11 +22,11 @@ public class TbsContractCostSubItem { private String writeOffDate; private String productType; private String product; - private String accountCode; - private String accountName; - private String costCenterNo; - private String costCenterName; - private BigDecimal applyMoney; + private String activityAccountCode; + private String activityAccountName; + private String activityCostCenterNo; + private String activityCostCenterName; + private BigDecimal money; } @@ -34,11 +34,17 @@ public class TbsContractCostSubItem { public static class Payment{ private String payItem; private String payCondition; - private BigDecimal money; + private BigDecimal applyMoney; private String payDate; private String actualPayDate; - private Integer payCompleteState; + private String payCompleteState; private String payRemark; + private String payCode;// 唯一 + private String accountCode;// 拼科目编号 + private String accountName;// 拼科目名称 + private String costCenterNo;// 拼成本中心编号 + private String costCenterName;// 拼成本中心名称 + } @Data @@ -47,6 +53,7 @@ public class TbsContractCostSubItem { private String deliveryStandard; private String deliveryDate; private String agreeRemark; + private String agreeCompleteState; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java new file mode 100644 index 00000000..7a32ed00 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java @@ -0,0 +1,19 @@ +package com.qs.serve.modules.tbs.service; + +import com.qs.serve.common.model.dto.R; +import com.qs.serve.modules.tbs.entity.TbsCostApply; + +/** + * @author YenHex + * @since 2023/7/27 + */ +public interface TbsCostApplyPart1Service { + + /** + * 执行异动 + * @param costId + * @return 返回新的活动申请ID + */ + TbsCostApply toSetChanged(Long costId); + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java index 044d85ce..eb7fc524 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java @@ -16,6 +16,7 @@ import java.util.List; */ public interface TbsCostApplyService extends IService { + /** * 作废 * @param id diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java new file mode 100644 index 00000000..1e722b9e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java @@ -0,0 +1,189 @@ +package com.qs.serve.modules.tbs.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.qs.serve.common.config.properties.ProjectProperties; +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.modules.bir.service.BirCenterRateService; +import com.qs.serve.modules.bir.service.BirRoiRateService; +import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; +import com.qs.serve.modules.bms.mapper.BmsRegionMapper; +import com.qs.serve.modules.bms.service.BmsSubjectService; +import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; +import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.service.SysAttachService; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsCostApplyState; +import com.qs.serve.modules.tbs.entity.*; +import com.qs.serve.modules.tbs.mapper.*; +import com.qs.serve.modules.tbs.service.*; +import com.qs.serve.modules.vtb.common.VtbVerificationState; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author YenHex + * @since 2023/7/27 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { + + private TbsCostApplyService tbsCostApplyService; + + private TbsActivityCenterService tbsActivityCenterService; + private TbsActivitySubjectService tbsActivitySubjectService; + private TbsActivityGoodsService tbsActivityGoodsService; + private TbsActivitySlottingFeeService tbsActivitySlottingFeeService; + private TbsActivityPayConditionService activitySlottingConditionService; + private TbsActivityMapper tbsActivityMapper; + private TbsActivityCenterGoodsService tbsActivityCenterGoodsService; + private TbsActivityChannelService tbsActivityChannelService; + private TbsActivityChannelPointService tbsActivityChannelPointService; + private TbsCostContractMapper costContractMapper; + private VtbVerificationMapper verificationMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public TbsCostApply toSetChanged(Long costId) { + String userId = AuthContextUtils.getSysUserId(); + TbsCostApply orgCost = tbsCostApplyService.getById(costId); + if(!userId.equals(orgCost.getUserId())){ + Assert.throwEx("拒绝访问"); + } + if(!orgCost.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){ + Assert.throwEx("费用申请的状态不支持"); + } + //判断是否有核销记录 + LambdaQueryWrapper vtbLqwCount = new LambdaQueryWrapper<>(); + vtbLqwCount.eq(VtbVerification::getCostApplyId,costId); + vtbLqwCount.and(qw->{ + qw.eq(VtbVerification::getVerificationState, VtbVerificationState.Commiting.getCode()) + .or().eq(VtbVerification::getVerificationState,VtbVerificationState.Finished.getCode()); + }); + Long count = verificationMapper.selectCount(vtbLqwCount); + if(count>0){ + Assert.throwEx("含有核销记录不支持异动"); + } + //复制新记录 + TbsCostApply costApply = CopierUtil.copy(orgCost,new TbsCostApply()); + costApply.setId(null); + costApply.setChargeState(TbsCostApplyState.State_0_unPublish.getCode()); + tbsCostApplyService.save(costApply); + final Long newCostApplyId = costApply.getId(); + //费用相关复制 + QueryWrapper qw_cost_apply = new QueryWrapper(); + qw_cost_apply.eq("cost_apply_id",costId); + List contracts = costContractMapper.selectList(qw_cost_apply); + contracts.forEach(con->{ + con.setId(null); + con.setCostApplyId(newCostApplyId); + }); + //活动相关复制 + List activityList = tbsActivityMapper.selectList(qw_cost_apply); + this.copyAboutActivityData(newCostApplyId, activityList); + + //更变旧记录 + orgCost.setChargeState(TbsCostApplyState.State_7_changed.getCode()); + orgCost.setCancelFlag(1); + tbsCostApplyService.updateById(orgCost); + return costApply; + } + + /** + * 活动相关复制 + * @param newCostApplyId + * @param activityList + */ + private void copyAboutActivityData(Long newCostApplyId, List activityList) { + for (TbsActivity orgActivity : activityList) { + //原ActivityID + Long orgActivityId = orgActivity.getId(); + //重新保存 + orgActivity.setId(null); + tbsActivityMapper.insert(orgActivity); + final Long newActivityId = orgActivity.getId(); + + QueryWrapper qw_activity = new QueryWrapper(); + qw_activity.eq("activity_id",orgActivityId); + + List goodsList = tbsActivityGoodsService.list(qw_activity); + goodsList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + tbsActivityGoodsService.saveBatch(goodsList); + + List centerList = tbsActivityCenterService.list(qw_activity); + centerList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + tbsActivityCenterService.saveBatch(centerList); + + List subjectList = tbsActivitySubjectService.list(qw_activity); + subjectList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + tbsActivitySubjectService.saveBatch(subjectList); + + List centerGoodsList = tbsActivityCenterGoodsService.list(qw_activity); + centerGoodsList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + tbsActivityCenterGoodsService.saveBatch(centerGoodsList); + + List channelList = tbsActivityChannelService.list(qw_activity); + channelList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + tbsActivityChannelService.saveBatch(channelList); + + List channelPointList = tbsActivityChannelPointService.list(qw_activity); + channelPointList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + tbsActivityChannelPointService.saveBatch(channelPointList); + + + List payConditionList = activitySlottingConditionService.list(qw_activity); + payConditionList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + activitySlottingConditionService.saveBatch(payConditionList); + + List slottingFeeList = tbsActivitySlottingFeeService.list(qw_activity); + slottingFeeList.forEach(obj->{ + obj.setId(null); + obj.setCostApplyId(newCostApplyId); + obj.setActivityId(newActivityId); + }); + tbsActivitySlottingFeeService.saveBatch(slottingFeeList); + + } + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index ff2dafe6..e6f9faf7 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -1,6 +1,7 @@ package com.qs.serve.modules.tbs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.config.properties.ProjectProperties; @@ -93,6 +94,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); @@ -350,14 +354,20 @@ public class TbsCostApplyServiceImpl extends ServiceImpl tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); + String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(",")); + String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(",")); + List tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); + String concatSubjectCodes = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectCode).collect(Collectors.joining(",")); + String concatSubjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).collect(Collectors.joining(",")); // 付款条件 for (TbsActivityPayCondition payCondition : payConditions) { TbsActivity currActivity = null; @@ -370,11 +380,17 @@ public class TbsCostApplyServiceImpl extends ServiceImpl attachList; @@ -172,5 +173,6 @@ public class VtbVerification implements Serializable { @TableField(exist = false) private Object costApplyInfo; + } 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 892c8ef2..76e879f8 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 @@ -111,6 +111,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl Date: Thu, 27 Jul 2023 17:10:50 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E7=B1=BB=E7=94=B3?= =?UTF-8?q?=E8=AF=B7DATA=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/dto/TbsContractCostSubItem.java | 5 - .../service/impl/TbsCostApplyServiceImpl.java | 319 +++++++++--------- 2 files changed, 168 insertions(+), 156 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java index 4efe8298..7646821d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java @@ -40,11 +40,6 @@ public class TbsContractCostSubItem { private String payCompleteState; private String payRemark; private String payCode;// 唯一 - private String accountCode;// 拼科目编号 - private String accountName;// 拼科目名称 - private String costCenterNo;// 拼成本中心编号 - private String costCenterName;// 拼成本中心名称 - } @Data diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index e6f9faf7..07ec2dec 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -259,157 +259,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl data = new HashMap<>(10); if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ - - data.put("title",tbsCostApply.getChargeTheme()); - data.put("orgId",tbsCostApply.getId().toString()); - data.put("costApplyCode", tbsCostApply.getCode()); - data.put("applyUserCode", sysUser.getCode()); - data.put("applyUserName", sysUser.getName()); - data.put("supplierName", tbsCostApply.getSupplierName()); - data.put("supplierCode", tbsCostApply.getSupplierCode()); - data.put("targetId", tbsCostApply.getId()+""); - data.put("targetCode", tbsCostApply.getCode()); - data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code()); - //添加跳转地址业务 - String urlKey = "exsp5"+IdUtil.simpleUUID(); - String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); - data.put("exsp5",urlKey); - data.put("cmsLink",baseJumpUrl); - - data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); - data.put("rowState","03"); - - //拓展添加审批关联区域 - String saleRegionId = supplier.handleSaleRegionId(); - String bizRegionId = supplier.handleBizRegionId(); - BmsRegion saleRegion = regionMapper.selectById(saleRegionId); - BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); - String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; - String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; - - //拓展添加审批关联 - data.put("biz_region",bizRegionNames); - data.put("exsp2",saleRegionNames); - data.put("dataState",TbsCostApplyState.State_1_apply.getCode()+""); - - //创建协议类data数据 - data.put("serialNumber",tbsCostApply.getCode()); - data.put("applySubject",tbsCostApply.getChargeTheme()); - data.put("supplierCode",tbsCostApply.getSupplierCode()); - data.put("supplierName",tbsCostApply.getSupplierName()); - data.put("totalSalesMoney",tbsCostApply.getTotalActivityPreAmount()); - data.put("totalExpenseRate",tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN)); - data.put("remark",tbsCostApply.getRemark()); - - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId()); - List contracts = costContractMapper.selectList(lqw); - if(contracts.size()>0){ - TbsCostContract contract = contracts.get(0); - data.put("payee",contract.getPayee()); - data.put("bankName",contract.getBankName()); - data.put("bankAccount",contract.getBankAccount()); - data.put("sealID",contract.getSealId()); - data.put("sealName",contract.getSealName()); - data.put("sealNum",contract.getSealNum()); - data.put("fileNum",contract.getFileNum()); - - data.put("contractName",contract.getContractName()); - data.put("contractTotalMoney",contract.getContractAmount()); - data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString()); - data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString()); - data.put("contractContent",contract.getContractCondition()); - String urls = ""; - if (CollectionUtil.isNotEmpty(contract.getAttachIds())){ - List attachIds = Arrays.asList(contract.getAttachIds()); - List attachList = sysAttachService.listByIds(attachIds); - urls = attachList.stream().map(SysAttach::getPath).collect(Collectors.joining(" , ")); - } - data.put("contractFile",urls); - }else { - Assert.throwEx("请补充合同信息"); - } - - //创建子表数据 - List subList = new ArrayList<>(); - - //活动明细 - LambdaQueryWrapper actCgLqw = new LambdaQueryWrapper<>(); - actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId,id); - List activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); - for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { - TbsActivity currActivity = null; - for (TbsActivity activity : activityList) { - if(centerGoods.getActivityId().equals(activity.getId())){ - currActivity = activity; - break; - } - } - TbsContractCostSubItem.Activity dataActivity = new TbsContractCostSubItem.Activity(); - dataActivity.setActivityCode(currActivity.getActivityCode()); - dataActivity.setActivityPurpose(currActivity.getActTitle()); - dataActivity.setCostCode(tbsCostApply.getCode()); - dataActivity.setStartDate(currActivity.getActStartDate()==null?null:currActivity.getActStartDate().toString()); - dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString()); - dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString()); - dataActivity.setProductType(centerGoods.getTargetType()); - dataActivity.setProduct(centerGoods.getTargetName()); - dataActivity.setActivityAccountCode(centerGoods.getSubjectCode()); - dataActivity.setActivityAccountName(centerGoods.getSubjectName()); - dataActivity.setActivityCostCenterNo(centerGoods.getCenterCode()); - dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")"); - dataActivity.setMoney(centerGoods.getCenterGoodsAmount()); - subList.add(dataActivity); - } - //活动的科目和成本中心 - List tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); - String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(",")); - String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(",")); - List tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); - String concatSubjectCodes = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectCode).collect(Collectors.joining(",")); - String concatSubjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).collect(Collectors.joining(",")); - // 付款条件 - for (TbsActivityPayCondition payCondition : payConditions) { - TbsActivity currActivity = null; - for (TbsActivity activity : activityList) { - if(payCondition.getActivityId().equals(activity.getId())){ - currActivity = activity; - break; - } - } - TbsContractCostSubItem.Payment subPayment = new TbsContractCostSubItem.Payment(); - subPayment.setPayItem(payCondition.getTitle()); - subPayment.setPayCondition(payCondition.getConditionMsg()); - subPayment.setApplyMoney(currActivity.getTotalAmount()); - subPayment.setPayDate(payCondition.getPaymentDate()!=null?payCondition.getPaymentDate().toString():null); - subPayment.setActualPayDate(null); - String stateMsg = payCondition.getFinishedFlag().equals(1)?"已完成":"未处理"; - subPayment.setPayCompleteState(stateMsg); - subPayment.setPayRemark(payCondition.getRemark()); - subPayment.setPayCode(payCondition.getCode()); - subPayment.setAccountCode(concatSubjectCodes); - subPayment.setAccountName(concatSubjectNames); - subPayment.setCostCenterNo(concatCenterCodes); - subPayment.setCostCenterName(concatCenterNames); - subList.add(subPayment); - } - - // 协议条款 - LambdaQueryWrapper todoLqw = new LambdaQueryWrapper<>(); - todoLqw.eq(TbsCostTodo::getCostApplyId,tbsCostApply.getId()); - List costTodoList = tbsCostTodoMapper.selectList(todoLqw); - for (TbsCostTodo costTodo : costTodoList) { - TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); - toDoItem.setServiceDescription(costTodo.getDescr()); - toDoItem.setDeliveryStandard(costTodo.getPayMsg()); - toDoItem.setDeliveryDate(costTodo.getPrePayDate()==null?null : costTodo.getPrePayDate().toString()); - toDoItem.setAgreeRemark(costTodo.getRemark()); - toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成"); - subList.add(toDoItem); - } - //关联 - data.put("sub", subList); - + //创建协议的费用申请Data + this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data); }else { //创建通用的费用申请Data this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data); @@ -504,6 +355,172 @@ public class TbsCostApplyServiceImpl extends ServiceImpl activityList, List payConditions, BmsSupplier supplier, SysUser sysUser, Map data) { + data.put("title", tbsCostApply.getChargeTheme()); + data.put("orgId", tbsCostApply.getId().toString()); + data.put("costApplyCode", tbsCostApply.getCode()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("supplierName", tbsCostApply.getSupplierName()); + data.put("supplierCode", tbsCostApply.getSupplierCode()); + data.put("targetId", tbsCostApply.getId()+""); + data.put("targetCode", tbsCostApply.getCode()); + data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code()); + //添加跳转地址业务 + String urlKey = "exsp5"+IdUtil.simpleUUID(); + String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey); + data.put("exsp5",urlKey); + data.put("cmsLink",baseJumpUrl); + + data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); + data.put("rowState","03"); + + //拓展添加审批关联区域 + String saleRegionId = supplier.handleSaleRegionId(); + String bizRegionId = supplier.handleBizRegionId(); + BmsRegion saleRegion = regionMapper.selectById(saleRegionId); + BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); + String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; + String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + + //拓展添加审批关联 + data.put("biz_region",bizRegionNames); + data.put("exsp2",saleRegionNames); + data.put("dataState",TbsCostApplyState.State_1_apply.getCode()+""); + + //创建协议类data数据 + data.put("serialNumber", tbsCostApply.getCode()); + data.put("applySubject", tbsCostApply.getChargeTheme()); + data.put("supplierCode", tbsCostApply.getSupplierCode()); + data.put("supplierName", tbsCostApply.getSupplierName()); + data.put("totalSalesMoney", tbsCostApply.getTotalActivityPreAmount()); + data.put("totalExpenseRate", tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN)); + data.put("remark", tbsCostApply.getRemark()); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId()); + List contracts = costContractMapper.selectList(lqw); + + if(contracts.size()>0){ + //活动的科目和成本中心 + List tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id)); + String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(",")); + String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(",")); + List tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); + String concatSubjectCodes = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectCode).collect(Collectors.joining(",")); + String concatSubjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).collect(Collectors.joining(",")); + + TbsCostContract contract = contracts.get(0); + data.put("payee",contract.getPayee()); + data.put("bankName",contract.getBankName()); + data.put("bankAccount",contract.getBankAccount()); + data.put("sealID",contract.getSealId()); + data.put("sealName",contract.getSealName()); + data.put("sealNum",contract.getSealNum()); + data.put("fileNum",contract.getFileNum()); + + data.put("accountCode",concatSubjectCodes); + data.put("accountName",concatSubjectNames); + data.put("costCenterNo",concatCenterCodes); + data.put("costCenterName",concatCenterNames); + + + data.put("contractName",contract.getContractName()); + data.put("contractTotalMoney",contract.getContractAmount()); + data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString()); + data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString()); + data.put("contractContent",contract.getContractCondition()); + String urls = ""; + if (CollectionUtil.isNotEmpty(contract.getAttachIds())){ + List attachIds = Arrays.asList(contract.getAttachIds()); + List attachList = sysAttachService.listByIds(attachIds); + urls = attachList.stream().map(SysAttach::getPath).collect(Collectors.joining(" , ")); + } + data.put("contractFile",urls); + }else { + Assert.throwEx("请补充合同信息"); + } + + //创建子表数据 + List subList = new ArrayList<>(); + + //活动明细 + LambdaQueryWrapper actCgLqw = new LambdaQueryWrapper<>(); + actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId, id); + List activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + TbsActivity currActivity = null; + for (TbsActivity activity : activityList) { + if(centerGoods.getActivityId().equals(activity.getId())){ + currActivity = activity; + break; + } + } + TbsContractCostSubItem.Activity dataActivity = new TbsContractCostSubItem.Activity(); + dataActivity.setActivityCode(currActivity.getActivityCode()); + dataActivity.setActivityPurpose(currActivity.getActTitle()); + dataActivity.setCostCode(tbsCostApply.getCode()); + dataActivity.setStartDate(currActivity.getActStartDate()==null?null:currActivity.getActStartDate().toString()); + dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString()); + dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString()); + dataActivity.setProductType(centerGoods.getTargetType()); + dataActivity.setProduct(centerGoods.getTargetName()); + dataActivity.setActivityAccountCode(centerGoods.getSubjectCode()); + dataActivity.setActivityAccountName(centerGoods.getSubjectName()); + dataActivity.setActivityCostCenterNo(centerGoods.getCenterCode()); + dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")"); + dataActivity.setMoney(centerGoods.getCenterGoodsAmount()); + subList.add(dataActivity); + } + // 付款条件 + for (TbsActivityPayCondition payCondition : payConditions) { + TbsActivity currActivity = null; + for (TbsActivity activity : activityList) { + if(payCondition.getActivityId().equals(activity.getId())){ + currActivity = activity; + break; + } + } + TbsContractCostSubItem.Payment subPayment = new TbsContractCostSubItem.Payment(); + subPayment.setPayItem(payCondition.getTitle()); + subPayment.setPayCondition(payCondition.getConditionMsg()); + subPayment.setApplyMoney(currActivity.getTotalAmount()); + subPayment.setPayDate(payCondition.getPaymentDate()!=null?payCondition.getPaymentDate().toString():null); + subPayment.setActualPayDate(null); + String stateMsg = payCondition.getFinishedFlag().equals(1)?"已完成":"未处理"; + subPayment.setPayCompleteState(stateMsg); + subPayment.setPayRemark(payCondition.getRemark()); + subPayment.setPayCode(payCondition.getCode()); + subList.add(subPayment); + } + + // 协议条款 + LambdaQueryWrapper todoLqw = new LambdaQueryWrapper<>(); + todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId()); + List costTodoList = tbsCostTodoMapper.selectList(todoLqw); + for (TbsCostTodo costTodo : costTodoList) { + TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); + toDoItem.setServiceDescription(costTodo.getDescr()); + toDoItem.setDeliveryStandard(costTodo.getPayMsg()); + toDoItem.setDeliveryDate(costTodo.getPrePayDate()==null?null : costTodo.getPrePayDate().toString()); + toDoItem.setAgreeRemark(costTodo.getRemark()); + toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成"); + subList.add(toDoItem); + } + //关联 + data.put("sub", subList); + } + private void buildCommonApplyData(String id, TbsCostApply tbsCostApply, List activityList, BmsSupplier supplier, TbsBudgetCostResult result, SysUser sysUser, Map data) { String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; ")); data.put("costApplyCode", tbsCostApply.getCode());