From 8f5b56a0730fd2e58c3ca4511cca0ab92e78b5ad Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 28 Nov 2023 18:01:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=90=E6=9C=AC=E4=B8=AD=E5=BF=83=E7=BB=B4?= =?UTF-8?q?=E5=BA=A6=E6=A0=B8=E9=94=80=EF=BC=88=E6=88=90=E6=9C=AC=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E7=BB=B4=E5=BA=A6=E6=A0=B8=E9=94=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VtbVerificationController.java | 15 ++ .../entity/VtbVerificationYardCenterItem.java | 186 ++++++++++++++++++ .../vtb/entity/VtbVerificationYardItem.java | 4 + .../VtbVerificationYardCenterItemMapper.java | 14 ++ .../service/VtbVerificationApplication.java | 31 ++- .../VtbVerificationYardCenterItemService.java | 14 ++ ...VerificationYardCenterItemServiceImpl.java | 22 +++ 7 files changed, 284 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardCenterItem.java create mode 100644 src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardCenterItemMapper.java create mode 100644 src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardCenterItemService.java create mode 100644 src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardCenterItemServiceImpl.java 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 24d9018c..0947d253 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 @@ -60,6 +60,7 @@ public class VtbVerificationController { private VtbVerificationService vtbVerificationService; private VtbVerificationChannelService vtbVerificationChannelService; private VtbVerificationChannelPointService vtbVerificationChannelPointService; + private VtbVerificationYardCenterItemService vtbVerificationYardCenterItemService; private VtbVerificationSubjectService vtbVerificationSubjectService; private VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService; private TbsActivitySubjectService activitySubjectService; @@ -260,6 +261,20 @@ public class VtbVerificationController { itemLqw.eq(VtbVerificationYardItem::getYardId,yard.getId()); itemLqw.apply("(last_amount!=curr_amount or last_session!=curr_session or last_person!=curr_person)"); List yardItemList = vtbVerificationYardItemService.list(itemLqw); + + //拓展成本中心维度调整 + LambdaQueryWrapper centerItemLqw = new LambdaQueryWrapper<>(); + centerItemLqw.eq(VtbVerificationYardCenterItem::getYardId,yard.getId()); + centerItemLqw.apply("last_amount != curr_amount"); + List centerItems = vtbVerificationYardCenterItemService.list(centerItemLqw); + Map> subjectGetCenterYardMap = centerItems.stream() + .collect(Collectors.groupingBy(VtbVerificationYardCenterItem::getSubjectId)); + + for (VtbVerificationYardItem yardItem : yardItemList) { + List centerItemList = subjectGetCenterYardMap.get(yardItem.getSubjectId()); + yardItem.setCenterItemList(centerItemList); + } + yard.setYardItemList(yardItemList); SysUser sysUser = sysUserService.getById(yard.getCreateBy()); yard.setUserInfo(sysUser.toSysUserVo()); diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardCenterItem.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardCenterItem.java new file mode 100644 index 00000000..42667fb9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardCenterItem.java @@ -0,0 +1,186 @@ +package com.qs.serve.modules.vtb.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 核销审批线明细 实体类 + * @author YenHex + * @since 2023-11-28 + */ +@Data +@TableName("vtb_verification_yard_center_item") +public class VtbVerificationYardCenterItem implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 核销线id */ + @NotNull(message = "核销线id不能为空") + private Long yardId; + + /** 核算id */ + @NotNull(message = "核算id不能为空") + private Long verificationId; + + /** 科目核销编码 */ + @NotBlank(message = "科目核销编码不能为空") + @Length(max = 32,message = "科目核销编码长度不能超过32字") + private String verificationSubCode; + + /** 费用申请id */ + @NotNull(message = "费用申请id不能为空") + private Long costApplyId; + + /** 活动id */ + @NotNull(message = "活动id不能为空") + private Long activityId; + + /** 科目id */ + @NotNull(message = "科目id不能为空") + private Long subjectId; + + /** 科目编码 */ + @NotBlank(message = "科目编码不能为空") + @Length(max = 50,message = "科目编码长度不能超过50字") + private String subjectCode; + + /** 科目名称 */ + @NotBlank(message = "科目名称不能为空") + @Length(max = 50,message = "科目名称长度不能超过50字") + private String subjectName; + + /** 客户id */ + @NotNull(message = "客户id不能为空") + private Long supplierId; + + /** 客户编码 */ + @NotBlank(message = "客户编码不能为空") + @Length(max = 30,message = "客户编码长度不能超过30字") + private String supplierCode; + + /** 客户名称 */ + @NotBlank(message = "客户名称不能为空") + @Length(max = 30,message = "客户名称长度不能超过30字") + private String supplierName; + + /** 上次审批金额 */ + @NotNull(message = "上次审批金额不能为空") + private BigDecimal lastAmount; + + /** 本次审批金额 */ + @NotNull(message = "本次审批金额不能为空") + private BigDecimal currAmount; + + /** 备注1 */ + @Length(max = 255,message = "备注1长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 是否无效 */ + @NotNull(message = "是否无效不能为空") + private Integer effectiveFlag; + + /** 成本中心类型 */ + @NotBlank(message = "成本中心类型不能为空") + @Length(max = 255,message = "成本中心类型长度不能超过255字") + private String centerType; + + /** 成本中心id */ + @NotBlank(message = "成本中心id不能为空") + @Length(max = 32,message = "成本中心id长度不能超过32字") + private String centerId; + + /** 成本中心编码 */ + @NotBlank(message = "成本中心编码不能为空") + @Length(max = 50,message = "成本中心编码长度不能超过50字") + private String centerCode; + + /** 成本中心名称 */ + @NotBlank(message = "成本中心名称不能为空") + @Length(max = 200,message = "成本中心名称长度不能超过200字") + private String centerName; + + /** 活动成本中心ID */ + private Long activityCenterId; + + + public static VtbVerificationYardCenterItem toNewObject(VtbVerificationYardItem source){ + VtbVerificationYardCenterItem verificationYardCenterItem = new VtbVerificationYardCenterItem(); + //verificationYardCenterItem.setId(source.getId()); + verificationYardCenterItem.setYardId(source.getYardId()); + verificationYardCenterItem.setVerificationId(source.getVerificationId()); + verificationYardCenterItem.setVerificationSubCode(source.getVerificationSubCode()); + verificationYardCenterItem.setCostApplyId(source.getCostApplyId()); + verificationYardCenterItem.setActivityId(source.getActivityId()); + verificationYardCenterItem.setSubjectId(source.getSubjectId()); + verificationYardCenterItem.setSubjectCode(source.getSubjectCode()); + verificationYardCenterItem.setSubjectName(source.getSubjectName()); + verificationYardCenterItem.setSupplierId(source.getSupplierId()); + verificationYardCenterItem.setSupplierCode(source.getSupplierCode()); + verificationYardCenterItem.setSupplierName(source.getSupplierName()); +// verificationYardCenterItem.setLastAmount(source.getLastAmount()); +// verificationYardCenterItem.setCurrAmount(source.getCurrAmount()); + verificationYardCenterItem.setRemark(source.getRemark()); + verificationYardCenterItem.setCreateTime(source.getCreateTime()); + verificationYardCenterItem.setUpdateTime(source.getUpdateTime()); + verificationYardCenterItem.setTenantId(source.getTenantId()); + verificationYardCenterItem.setCreateBy(source.getCreateBy()); + verificationYardCenterItem.setUpdateBy(source.getUpdateBy()); + verificationYardCenterItem.setDelFlag(source.getDelFlag()); + verificationYardCenterItem.setEffectiveFlag(source.getEffectiveFlag()); +// verificationYardCenterItem.setCenterType(source.getCenterType()); +// verificationYardCenterItem.setCenterId(source.getCenterId()); +// verificationYardCenterItem.setCenterCode(source.getCenterCode()); +// verificationYardCenterItem.setCenterName(source.getCenterName()); +// verificationYardCenterItem.setActivityCenterId(source.getActivityCenterId()); + return verificationYardCenterItem; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.java index eb10477a..459b17ee 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.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; @@ -144,6 +145,9 @@ public class VtbVerificationYardItem implements Serializable { @NotNull(message = "是否无效不能为空") private Integer effectiveFlag; + @TableField(exist = false) + private List centerItemList; + public void initSetNull(){ this.setId(null); this.setCreateBy(null); diff --git a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardCenterItemMapper.java b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardCenterItemMapper.java new file mode 100644 index 00000000..70830d13 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardCenterItemMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.vtb.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.vtb.entity.VtbVerificationYardCenterItem; + +/** + * 核销审批线明细 Mapper + * @author YenHex + * @date 2023-11-28 + */ +public interface VtbVerificationYardCenterItemMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java index 39226a44..6b1fe3ae 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java @@ -60,6 +60,7 @@ public class VtbVerificationApplication { private VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService; private VtbVerificationYardService yardService; private VtbVerificationYardItemService yardItemService; + private final VtbVerificationYardCenterItemService yardCenterItemService; private final TbsActivityPayConditionService activityPayConditionService; private SysPostUserService sysPostUserService; private DataAffairCommitMapper dataAffairCommitMapper; @@ -226,18 +227,23 @@ public class VtbVerificationApplication { List verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); List yardItemList = new ArrayList<>(); List verSubject4Update = new ArrayList<>(); + List yarnCenterList = new ArrayList<>(); for (VtbVerificationSubject currVs : verificationSubjects) { BigDecimal changeAmount = null; Integer countSession = null; Integer countPerson = null; + List centerItemLineList = null; if(isCenterCommit){ if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectCenterLines())){ for (TbsAffairCommitBo.AffairSubjectCenterLine centerLine : affairCommit.getAffairSubjectCenterLines()) { if(currVs.getSubjectId().equals(centerLine.getSubjectId())){ changeAmount = BigDecimal.ZERO; - for (TbsAffairCommitBo.AffairSubjectCenterItemLine itemLine : centerLine.getCenterItemLines()) { - changeAmount = changeAmount.add(itemLine.getCenterAmount()); + if(centerLine.getCenterItemLines()!=null){ + for (TbsAffairCommitBo.AffairSubjectCenterItemLine itemLine : centerLine.getCenterItemLines()) { + changeAmount = changeAmount.add(itemLine.getCenterAmount()); + } } + centerItemLineList = centerLine.getCenterItemLines(); countSession = centerLine.getCountSession(); countPerson = centerLine.getCountPerson(); break; @@ -319,9 +325,30 @@ public class VtbVerificationApplication { yardItem.setCurrAmount(lastAmount); } totalAmount = totalAmount.add(yardItem.getCurrAmount()); + //拓展成本中心维度调整记录 + if(centerItemLineList!=null){ + for (TbsAffairCommitBo.AffairSubjectCenterItemLine centerItemLine : centerItemLineList) { + VtbVerificationYardCenterItem centerItem = VtbVerificationYardCenterItem.toNewObject(yardItem); + for (VtbVerificationSubjectCenter subjectCenter : subjectCenters) { + if(centerItemLine.getActivityCenterId().equals(subjectCenter.getActivityCenterId())){ + centerItem.setCenterId(subjectCenter.getCenterId()); + centerItem.setCenterCode(subjectCenter.getCenterCode()); + centerItem.setCenterName(subjectCenter.getCenterName()); + centerItem.setCenterType(subjectCenter.getCenterType()); + centerItem.setActivityCenterId(subjectCenter.getActivityCenterId()); + centerItem.setLastAmount(subjectCenter.getUsedAmount()); + centerItem.setCurrAmount(centerItemLine.getCenterAmount()); + + } + } + yarnCenterList.add(centerItem); + } + } + yardItemList.add(yardItem); } yardItemService.saveBatch(yardItemList); + yardCenterItemService.saveBatch(yarnCenterList); vtbVerificationSubjectService.updateBatchById(verSubject4Update); //重新计算合计 if(isFinish){ diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardCenterItemService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardCenterItemService.java new file mode 100644 index 00000000..edf90039 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardCenterItemService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.vtb.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.vtb.entity.VtbVerificationYardCenterItem; + +/** + * 核销审批线明细 服务接口 + * @author YenHex + * @date 2023-11-28 + */ +public interface VtbVerificationYardCenterItemService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardCenterItemServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardCenterItemServiceImpl.java new file mode 100644 index 00000000..ecf86563 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardCenterItemServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.vtb.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.vtb.entity.VtbVerificationYardCenterItem; +import com.qs.serve.modules.vtb.service.VtbVerificationYardCenterItemService; +import com.qs.serve.modules.vtb.mapper.VtbVerificationYardCenterItemMapper; + +/** + * 核销审批线明细 服务实现类 + * @author YenHex + * @since 2023-11-28 + */ +@Slf4j +@Service +@AllArgsConstructor +public class VtbVerificationYardCenterItemServiceImpl extends ServiceImpl implements VtbVerificationYardCenterItemService { + +} +