Browse Source

成本中心维度核销(成本中心维度核销金额调整)

v1.0
Yen 2 years ago
parent
commit
8f5b56a073
  1. 15
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  2. 186
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardCenterItem.java
  3. 4
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationYardItem.java
  4. 14
      src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationYardCenterItemMapper.java
  5. 31
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java
  6. 14
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationYardCenterItemService.java
  7. 22
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationYardCenterItemServiceImpl.java

15
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<VtbVerificationYardItem> yardItemList = vtbVerificationYardItemService.list(itemLqw);
//拓展成本中心维度调整
LambdaQueryWrapper<VtbVerificationYardCenterItem> centerItemLqw = new LambdaQueryWrapper<>();
centerItemLqw.eq(VtbVerificationYardCenterItem::getYardId,yard.getId());
centerItemLqw.apply("last_amount != curr_amount");
List<VtbVerificationYardCenterItem> centerItems = vtbVerificationYardCenterItemService.list(centerItemLqw);
Map<Long,List<VtbVerificationYardCenterItem>> subjectGetCenterYardMap = centerItems.stream()
.collect(Collectors.groupingBy(VtbVerificationYardCenterItem::getSubjectId));
for (VtbVerificationYardItem yardItem : yardItemList) {
List<VtbVerificationYardCenterItem> centerItemList = subjectGetCenterYardMap.get(yardItem.getSubjectId());
yardItem.setCenterItemList(centerItemList);
}
yard.setYardItemList(yardItemList);
SysUser sysUser = sysUserService.getById(yard.getCreateBy());
yard.setUserInfo(sysUser.toSysUserVo());

186
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;
}
}

4
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<VtbVerificationYardCenterItem> centerItemList;
public void initSetNull(){
this.setId(null);
this.setCreateBy(null);

14
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<VtbVerificationYardCenterItem> {
}

31
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<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId());
List<VtbVerificationYardItem> yardItemList = new ArrayList<>();
List<VtbVerificationSubject> verSubject4Update = new ArrayList<>();
List<VtbVerificationYardCenterItem> yarnCenterList = new ArrayList<>();
for (VtbVerificationSubject currVs : verificationSubjects) {
BigDecimal changeAmount = null;
Integer countSession = null;
Integer countPerson = null;
List<TbsAffairCommitBo.AffairSubjectCenterItemLine> 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){

14
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<VtbVerificationYardCenterItem> {
}

22
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<VtbVerificationYardCenterItemMapper,VtbVerificationYardCenterItem> implements VtbVerificationYardCenterItemService {
}
Loading…
Cancel
Save