Browse Source

预算周期底表分割

contract
Yen 2 years ago
parent
commit
ff5adcb6f3
  1. 17
      src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java
  2. 58
      src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java
  3. 126
      src/main/java/com/qs/serve/modules/bir/entity/BirScheduleItemBudget.java
  4. 14
      src/main/java/com/qs/serve/modules/bir/mapper/BirScheduleItemBudgetMapper.java
  5. 2
      src/main/java/com/qs/serve/modules/bir/service/BirActivityCenterGoodsService.java
  6. 19
      src/main/java/com/qs/serve/modules/bir/service/BirScheduleItemBudgetService.java
  7. 29
      src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java
  8. 172
      src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java
  9. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  10. 2
      src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java
  11. 2
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java
  12. 12
      src/main/resources/mapper/bir/BirActivityCenterGoodsMapper.xml

17
src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java

@ -15,6 +15,7 @@ import com.qs.serve.modules.bir.entity.vo.BirCenterCostRateItem;
import com.qs.serve.modules.bir.entity.vo.BirCenterCostRateMain; import com.qs.serve.modules.bir.entity.vo.BirCenterCostRateMain;
import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo; import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo;
import com.qs.serve.modules.bir.entity.vo.BirRoiVo; import com.qs.serve.modules.bir.entity.vo.BirRoiVo;
import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService;
import com.qs.serve.modules.bir.service.BirBaseActivityService; import com.qs.serve.modules.bir.service.BirBaseActivityService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -40,13 +41,15 @@ public class BirRoiRateController {
private BirRoiRateService birRoiRateService; private BirRoiRateService birRoiRateService;
private BirBaseActivityService activityService; private BirBaseActivityService activityService;
private BirActivityCenterGoodsService activityCenterGoodsService;
/** /**
* 台账数据集 * 台账数据集
* @return * @return
*/ */
@GetMapping("/standingBook") @GetMapping("/standingBook")
public R<List<BirCenterCostRateMain>> getStandingBook(){ public R<List<BirCenterCostRateMain>> getStandingBook(String type){
List<BirCenterCostRateItem> list = new ArrayList<>(); List<BirCenterCostRateItem> list = new ArrayList<>();
BirCenterCostRateItem rateItem = new BirCenterCostRateItem(); BirCenterCostRateItem rateItem = new BirCenterCostRateItem();
rateItem.setTargetDispatchAmt(BigDecimal.ZERO); rateItem.setTargetDispatchAmt(BigDecimal.ZERO);
@ -71,7 +74,7 @@ public class BirRoiRateController {
* @return * @return
*/ */
@GetMapping("/test22") @GetMapping("/test22")
public R<?> getPage(){ public R<?> test22(){
//移除当年所有 //移除当年所有
int year = 2023; int year = 2023;
// LambdaQueryWrapper<BirBaseActivity> rmLqw = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<BirBaseActivity> rmLqw = new LambdaQueryWrapper<>();
@ -84,6 +87,16 @@ public class BirRoiRateController {
return R.ok(); return R.ok();
} }
/**
* 台账
* @return
*/
@GetMapping("/test33")
public R<?> test33(){
activityCenterGoodsService.buildReport(2023,1);
return R.ok();
}
/** /**
* 获取费率 * 获取费率

58
src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java

@ -37,7 +37,7 @@ public class BirActivityCenterGoods implements Serializable {
/** 年月 */ /** 年月 */
@NotNull(message = "年月不能为空") @NotNull(message = "年月不能为空")
private Integer yearMonth; private Integer keyNum;
/** 天数 */ /** 天数 */
@NotNull(message = "天数不能为空") @NotNull(message = "天数不能为空")
@ -259,61 +259,5 @@ public class BirActivityCenterGoods implements Serializable {
private String supplierName; private String supplierName;
public static BirActivityCenterGoods toNewObject(BirActivityCenterGoods source){
BirActivityCenterGoods activityCenterGoods = new BirActivityCenterGoods();
activityCenterGoods.setId(source.getId());
activityCenterGoods.setActivityCenterGoodsId(source.getActivityCenterGoodsId());
activityCenterGoods.setYearMonth(source.getYearMonth());
activityCenterGoods.setDays(source.getDays());
activityCenterGoods.setStarDate(source.getStarDate());
activityCenterGoods.setEndDate(source.getEndDate());
activityCenterGoods.setSplitAmount(source.getSplitAmount());
activityCenterGoods.setSplitUsedAmount(source.getSplitUsedAmount());
activityCenterGoods.setCenterGoodsCode(source.getCenterGoodsCode());
activityCenterGoods.setCostApplyId(source.getCostApplyId());
activityCenterGoods.setActivityId(source.getActivityId());
activityCenterGoods.setActivityCode(source.getActivityCode());
activityCenterGoods.setActivityTotalAmount(source.getActivityTotalAmount());
activityCenterGoods.setActivityTotalCheckAmount(source.getActivityTotalCheckAmount());
activityCenterGoods.setActivityFinishedFlag(source.getActivityFinishedFlag());
activityCenterGoods.setSubjectId(source.getSubjectId());
activityCenterGoods.setSubjectCode(source.getSubjectCode());
activityCenterGoods.setSubjectName(source.getSubjectName());
activityCenterGoods.setCenterType(source.getCenterType());
activityCenterGoods.setCenterId(source.getCenterId());
activityCenterGoods.setCenterCode(source.getCenterCode());
activityCenterGoods.setCenterName(source.getCenterName());
activityCenterGoods.setCenterAmount(source.getCenterAmount());
activityCenterGoods.setCenterRate(source.getCenterRate());
activityCenterGoods.setCenterGoodsAmount(source.getCenterGoodsAmount());
activityCenterGoods.setCenterGoodsRate(source.getCenterGoodsRate());
activityCenterGoods.setUsedAmount(source.getUsedAmount());
activityCenterGoods.setTargetType(source.getTargetType());
activityCenterGoods.setTargetId(source.getTargetId());
activityCenterGoods.setTargetCode(source.getTargetCode());
activityCenterGoods.setTargetName(source.getTargetName());
activityCenterGoods.setTargetLevelPathIds(source.getTargetLevelPathIds());
activityCenterGoods.setTargetLevelPathNames(source.getTargetLevelPathNames());
activityCenterGoods.setCenterLv1Id(source.getCenterLv1Id());
activityCenterGoods.setCenterLv1Code(source.getCenterLv1Code());
activityCenterGoods.setCenterLv1Name(source.getCenterLv1Name());
activityCenterGoods.setCenterLv2Id(source.getCenterLv2Id());
activityCenterGoods.setCenterLv2Code(source.getCenterLv2Code());
activityCenterGoods.setCenterLv2Name(source.getCenterLv2Name());
activityCenterGoods.setRemark(source.getRemark());
activityCenterGoods.setCreateTime(source.getCreateTime());
activityCenterGoods.setUpdateTime(source.getUpdateTime());
activityCenterGoods.setTenantId(source.getTenantId());
activityCenterGoods.setActStartDate(source.getActStartDate());
activityCenterGoods.setActEndDate(source.getActEndDate());
activityCenterGoods.setPreStartDate(source.getPreStartDate());
activityCenterGoods.setPreEndDate(source.getPreEndDate());
activityCenterGoods.setPreCheckDate(source.getPreCheckDate());
activityCenterGoods.setSupplierId(source.getSupplierId());
activityCenterGoods.setSupplierCode(source.getSupplierCode());
activityCenterGoods.setSupplierName(source.getSupplierName());
return activityCenterGoods;
}
} }

126
src/main/java/com/qs/serve/modules/bir/entity/BirScheduleItemBudget.java

@ -0,0 +1,126 @@
package com.qs.serve.modules.bir.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-07-07
*/
@Data
@TableName("bir_schedule_item_budget")
public class BirScheduleItemBudget implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 考核id */
@NotNull(message = "考核id不能为空")
private Long scheduleId;
/** 考核期项id */
@NotNull(message = "考核期项id不能为空")
private Long scheduleItemId;
/** 考核编码 */
@NotBlank(message = "考核编码不能为空")
@Length(max = 30,message = "考核编码长度不能超过30字")
private String itemName;
/** 开始时间 */
@NotNull(message = "开始时间不能为空")
@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 budgetStartDate;
/** 结束时间 */
@NotNull(message = "结束时间不能为空")
@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 budgetEndDate;
/** 预算id */
@NotNull(message = "预算id不能为空")
private Long budgetId;
/** 预算金额 */
@NotNull(message = "预算金额不能为空")
private BigDecimal budgetAmount;
/** */
private BigDecimal preDispatchAmount;
private BigDecimal splitBudgetAmount;
private BigDecimal splitPreDispatchAmount;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过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;
/** 键值(日期数) */
@NotNull(message = "键值(日期数)不能为空")
private Integer keyNum;
/** 当月有多少天 */
private Integer monthDays;
/** 活动总天数 */
private Integer totalDays;
/** 当月分割开始 */
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate startDate;
/** 当月分割结束 */
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate endDate;
}

14
src/main/java/com/qs/serve/modules/bir/mapper/BirScheduleItemBudgetMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bir.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bir.entity.BirScheduleItemBudget;
/**
* 预算考核期项 Mapper
* @author YenHex
* @date 2023-07-07
*/
public interface BirScheduleItemBudgetMapper extends BaseMapper<BirScheduleItemBudget> {
}

2
src/main/java/com/qs/serve/modules/bir/service/BirActivityCenterGoodsService.java

@ -17,5 +17,7 @@ public interface BirActivityCenterGoodsService extends IService<BirActivityCente
*/ */
void buildReport(int year, int month); void buildReport(int year, int month);
} }

19
src/main/java/com/qs/serve/modules/bir/service/BirScheduleItemBudgetService.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.bir.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bir.entity.BirScheduleItemBudget;
/**
* 预算考核期项 服务接口
* @author YenHex
* @date 2023-07-07
*/
public interface BirScheduleItemBudgetService extends IService<BirScheduleItemBudget> {
/**
* 创建数据
*/
void buildScheduleItemBudget();
}

29
src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java

@ -94,9 +94,20 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO); activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO);
bacgList.add(entity); bacgList.add(entity);
} }
}else if (dateSplitList.size()==1){
DateSplitDTO currDateSplit = dateSplitList.get(0);
//获取该项分割金额对象
BirCenterGoodSplitDTO goodSplitDTO = this.buildSplitAmount(activityCenterGoods,
dateSplitList, currDateSplit,currentActDays);
//创建底表对象
BirActivityCenterGoods entity = createBirActivityCenterGoodsEntity(costCenterList,
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO);
bacgList.add(entity);
} }
} }
this.saveBatch(bacgList); if(bacgList.size()>0){
this.saveBatch(bacgList);
}
} }
//TODO 更新区域类型的名称和编码 //TODO 更新区域类型的名称和编码
@ -119,7 +130,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
BirCenterGoodSplitDTO goodSplitDTO) { BirCenterGoodSplitDTO goodSplitDTO) {
BirActivityCenterGoods entity = new BirActivityCenterGoods(); BirActivityCenterGoods entity = new BirActivityCenterGoods();
entity.setActivityCenterGoodsId(activityCenterGoods.getId()); entity.setActivityCenterGoodsId(activityCenterGoods.getId());
entity.setYearMonth(currDateSplit.getYearMonth()); entity.setKeyNum(currDateSplit.getYearMonth());
entity.setDays(currentActDays); entity.setDays(currentActDays);
entity.setStarDate(currDateSplit.getStartDate()); entity.setStarDate(currDateSplit.getStartDate());
entity.setEndDate(currDateSplit.getEndDate()); entity.setEndDate(currDateSplit.getEndDate());
@ -187,15 +198,25 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
} }
} }
} }
}else if ("bizRegion".equals(centerType)){ }else if ("saleRegion".equals(centerType)){
BmsRegion region = regionMapper.selectById(centerId); BmsRegion region = regionMapper.selectById(centerId);
if(region==null){
QueryWrapper lqw = new QueryWrapper();
lqw.eq("code",centerId);
region = regionMapper.selectOne(lqw);
}
String[] regionIds = region.getPathIds().split("_"); String[] regionIds = region.getPathIds().split("_");
entity.setCenterLv1Id(regionIds[0]); entity.setCenterLv1Id(regionIds[0]);
if(regionIds.length>1){ if(regionIds.length>1){
entity.setCenterLv2Id(regionIds[1]); entity.setCenterLv2Id(regionIds[1]);
} }
}else if ("saleRegion".equals(centerType)){ }else if ("bizRegion".equals(centerType)){
BmsRegion2 region = region2Mapper.selectById(centerId); BmsRegion2 region = region2Mapper.selectById(centerId);
if(region==null){
QueryWrapper lqw = new QueryWrapper();
lqw.eq("code",centerId);
region = region2Mapper.selectOne(lqw);
}
String[] regionIds = region.getPathIds().split("_"); String[] regionIds = region.getPathIds().split("_");
entity.setCenterLv1Id(regionIds[0]); entity.setCenterLv1Id(regionIds[0]);
if(regionIds.length>1){ if(regionIds.length>1){

172
src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java

@ -0,0 +1,172 @@
package com.qs.serve.modules.bir.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.DateSplitDTO;
import com.qs.serve.common.model.enums.BudgetLogOptFlag;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.DateSplitUtil;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsBudgetLog;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bir.entity.BirScheduleItemBudget;
import com.qs.serve.modules.bir.service.BirScheduleItemBudgetService;
import com.qs.serve.modules.bir.mapper.BirScheduleItemBudgetMapper;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 预算考核期项 服务实现类
* @author YenHex
* @since 2023-07-07
*/
@Slf4j
@Service
@AllArgsConstructor
public class BirScheduleItemBudgetServiceImpl extends ServiceImpl<BirScheduleItemBudgetMapper,BirScheduleItemBudget> implements BirScheduleItemBudgetService {
private final TbsBudgetMapper budgetMapper;
private final TbsBudgetLogMapper budgetLogMapper;
private final TbsScheduleItemBudgetMapper scheduleItemBudgetMapper;
@Override
public void buildScheduleItemBudget() {
//加载所有启用的预算
LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>();
lqw.select(TbsBudget::getId);
lqw.eq(TbsBudget::getBudgetState,1);
lqw.eq(TbsBudget::getBirFlag,0);
List<TbsBudget> budgetList = budgetMapper.selectList(lqw);
List<Long> budgetIds = budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList());
//清空异动数据
LambdaQueryWrapper<BirScheduleItemBudget> rmLqw = new LambdaQueryWrapper<>();
rmLqw.in(BirScheduleItemBudget::getBudgetId,budgetIds);
this.remove(rmLqw);
//加载所有的调增调减预算
Map<Long, BigDecimal> budgetLogAmtMap = buildAdjustBudgetAmount(budgetIds);
//加载预算的周期金额
LambdaQueryWrapper<TbsScheduleItemBudget> sibLqw = new LambdaQueryWrapper<>();
sibLqw.in(TbsScheduleItemBudget::getBudgetId,budgetIds);
List<TbsScheduleItemBudget> scheduleItemBudgetList = scheduleItemBudgetMapper.selectList(sibLqw);
List<BirScheduleItemBudget> maintenanceList = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgetList) {
LocalDate actStartDate = scheduleItemBudget.getStartDate().toLocalDate();
LocalDate actEndDate = scheduleItemBudget.getEndDate().toLocalDate();
int currentActDays = (int) (actEndDate.toEpochDay()-actStartDate.toEpochDay()+1);
List<DateSplitDTO> dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate);
if(dateSplitList.size()>1){
for (DateSplitDTO splitDTO : dateSplitList) {
//日期占比
/*BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "")
.divide(new BigDecimal(currentActDays + ""), 2, BigDecimal.ROUND_HALF_DOWN);
maintenanceList.add(
this.buildMainEntity(
scheduleItemBudget,
dateSplitList.get(0),
currentActDays,
scheduleItemBudget.getBudgetAmount(),
scheduleItemBudget.getPreDispatchAmount())
);*/
}
}else if (dateSplitList.size()==1){
maintenanceList.add(
this.buildMainEntity(
scheduleItemBudget,
dateSplitList.get(0),
currentActDays,
scheduleItemBudget.getBudgetAmount(),
scheduleItemBudget.getPreDispatchAmount())
);
}else {
Assert.throwEx("Invalid date");
}
}
}
/**
* Builds the main entity
* @param source
* @param dateSplit
* @param totalDays
* @param splitBudgetAmount
* @param splitPreDispatchAmount
* @return
*/
public BirScheduleItemBudget buildMainEntity(TbsScheduleItemBudget source,DateSplitDTO dateSplit,
Integer totalDays,
BigDecimal splitBudgetAmount,
BigDecimal splitPreDispatchAmount){
BirScheduleItemBudget scheduleItemBudget = new BirScheduleItemBudget();
scheduleItemBudget.setId(source.getId());
scheduleItemBudget.setScheduleId(source.getScheduleId());
scheduleItemBudget.setScheduleItemId(source.getScheduleItemId());
scheduleItemBudget.setItemName(source.getItemName());
scheduleItemBudget.setBudgetStartDate(source.getStartDate());
scheduleItemBudget.setBudgetEndDate(source.getEndDate());
scheduleItemBudget.setBudgetId(source.getBudgetId());
scheduleItemBudget.setBudgetAmount(source.getBudgetAmount());
scheduleItemBudget.setPreDispatchAmount(source.getPreDispatchAmount());
scheduleItemBudget.setSplitBudgetAmount(splitBudgetAmount);
scheduleItemBudget.setSplitPreDispatchAmount(splitPreDispatchAmount);
scheduleItemBudget.setRemark(source.getRemark());
scheduleItemBudget.setCreateTime(source.getCreateTime());
scheduleItemBudget.setUpdateTime(source.getUpdateTime());
scheduleItemBudget.setTenantId(source.getTenantId());
scheduleItemBudget.setCreateBy(source.getCreateBy());
scheduleItemBudget.setUpdateBy(source.getUpdateBy());
scheduleItemBudget.setKeyNum(dateSplit.getYearMonth());
scheduleItemBudget.setMonthDays(dateSplit.getDays());
scheduleItemBudget.setTotalDays(totalDays);
scheduleItemBudget.setStartDate(dateSplit.getStartDate());
scheduleItemBudget.setEndDate(dateSplit.getEndDate());
return scheduleItemBudget;
}
/**
* 加载所有的调增调减预算
* @param budgetIds
* @return key -> scheduleItemBudgetId ; value -> 调整金额
*/
@NotNull
private Map<Long, BigDecimal> buildAdjustBudgetAmount(List<Long> budgetIds) {
LambdaQueryWrapper<TbsBudgetLog> budgetLogLqw = new LambdaQueryWrapper<>();
budgetLogLqw.select(TbsBudgetLog::getBudgetId,TbsBudgetLog::getAmount);
budgetLogLqw.in(TbsBudgetLog::getBudgetId,budgetIds);
budgetLogLqw.in(TbsBudgetLog::getOptType,
BudgetLogOptFlag.State_2.getCode(),
BudgetLogOptFlag.State_3.getCode());
List<TbsBudgetLog> budgetLogs = budgetLogMapper.selectList(budgetLogLqw);
Map<Long, BigDecimal> budgetLogAmtMap = new HashMap<>();
Map<Long,List<TbsBudgetLog>> budgetLogsGroup = budgetLogs.stream().collect(Collectors.groupingBy(TbsBudgetLog::getScheduleItemBudgetId));
for (Long budgetId : budgetLogsGroup.keySet()) {
BigDecimal adjustedAmount = BigDecimal.ZERO;
for (TbsBudgetLog budgetLog : budgetLogsGroup.get(budgetId)) {
if(budgetLog.getAmount() != null) {
adjustedAmount = adjustedAmount.add(budgetLog.getAmount());
}
}
budgetLogAmtMap.put(budgetId, adjustedAmount);
}
return budgetLogAmtMap;
}
}

3
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java

@ -90,6 +90,9 @@ public class TbsBudget implements Serializable {
/** 条件标识 */ /** 条件标识 */
private Integer conditionFlag; private Integer conditionFlag;
/** 生成底表标识:默认0;同步成功为1 */
private Integer birFlag;
/** 创建时间 */ /** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

2
src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java

@ -65,9 +65,11 @@ public class TbsScheduleItemBudget implements Serializable {
@NotNull(message = "预算金额不能为空") @NotNull(message = "预算金额不能为空")
private BigDecimal budgetAmount; private BigDecimal budgetAmount;
@NotNull(message = "预估发货金额") @NotNull(message = "预估发货金额")
private BigDecimal preDispatchAmount; private BigDecimal preDispatchAmount;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;

2
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java

@ -42,7 +42,6 @@ public class TbsActivityTemplateBo implements Serializable {
/** 模板值 */ /** 模板值 */
@NotBlank(message = "模板值不能为空") @NotBlank(message = "模板值不能为空")
@Length(max = 6000,message = "模板值长度不能超过6000字")
private String templateValue; private String templateValue;
/** 备注 */ /** 备注 */
@ -77,7 +76,6 @@ public class TbsActivityTemplateBo implements Serializable {
private LocalDateTime endTime; private LocalDateTime endTime;
/** 费用申请主题 */ /** 费用申请主题 */
@Length(max = 255,message = "费用申请主题长度不能超过255字")
private String costTheme; private String costTheme;
/** 费用申请主题能否编辑 */ /** 费用申请主题能否编辑 */

12
src/main/resources/mapper/bir/BirActivityCenterGoodsMapper.xml

@ -42,6 +42,10 @@
<result property="supplierId" column="supplier_id"/> <result property="supplierId" column="supplier_id"/>
<result property="supplierCode" column="supplier_code"/> <result property="supplierCode" column="supplier_code"/>
<result property="supplierName" column="supplier_name"/> <result property="supplierName" column="supplier_name"/>
<result property="activityAmt" column="activity_amt"/>
<result property="activityFinishedFlag" column="activity_finished_flag"/>
<result property="activityCheckAmt" column="activity_check_amt"/>
</resultMap> </resultMap>
<sql id="tbsActivityCenterGoodsSql"> <sql id="tbsActivityCenterGoodsSql">
@ -85,9 +89,13 @@
tbs_activity_center_goods.`supplier_code`, tbs_activity_center_goods.`supplier_code`,
tbs_activity_center_goods.`supplier_name` </sql> tbs_activity_center_goods.`supplier_name` </sql>
<select id="selectChangeCenterGoods" resultType="com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods"> <select id="selectChangeCenterGoods" resultType="com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods">
select tbs_activity_center_goods.* from tbs_activity_center_goods select
tbs_activity.total_amount as activity_amt,
tbs_activity.used_amount as activity_check_amt,
tbs_activity.finished_flag as activity_finished_flag,
tbs_activity_center_goods.*
from tbs_activity_center_goods
left join tbs_activity left join tbs_activity
on tbs_activity.id = tbs_activity_center_goods.activity_id on tbs_activity.id = tbs_activity_center_goods.activity_id
left join bir_activity_center_goods left join bir_activity_center_goods

Loading…
Cancel
Save