diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java index 3dc2e049..5d91f922 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java @@ -155,6 +155,18 @@ public class BirRoiRateController { return R.ok(birCenterRateService.findCostCenterDataByCostApplyId(costApplyId,policyId)); } + /** + * 获取成本中心费率(版本v2) + * @param costApplyId + * @param policyId + * @return + */ + @RepeatSubmit + @GetMapping("/centerRateByCostApplyIdv2") + public R> centerRateByCostApplyIdv2(Long costApplyId,Long policyId){ + return R.ok(birCenterRateService.selectCostApplyRateVoList(costApplyId,policyId)); + } + /** * 发货单时间 * @return diff --git a/src/main/java/com/qs/serve/modules/bir/entity/vo/BirCostApplyRateVo.java b/src/main/java/com/qs/serve/modules/bir/entity/vo/BirCostApplyRateVo.java new file mode 100644 index 00000000..27d01e62 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/entity/vo/BirCostApplyRateVo.java @@ -0,0 +1,64 @@ +package com.qs.serve.modules.bir.entity.vo; + +import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; +import com.qs.serve.modules.tbs.entity.TbsActivityCenter; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/12/29 + */ +@Data +public class BirCostApplyRateVo { + + public BirCostApplyRateVo(String scheduleType, TbsCenterDto centerDto){ + this.scheduleType = scheduleType; + this.centerId = centerDto.getId(); + this.centerCode = centerDto.getCenterCode(); + this.centerName = centerDto.getCenterName(); + this.centerType = centerDto.getCenterType(); + } + + private String centerId; + + private String centerType; + + private String centerCode; + + private String centerName; + + /** + * 年季月,year,quarter,month + */ + private String scheduleType; + + /** 目标金额(待定) */ + private BigDecimal targetAmount; + + /** 预算金额(待定) */ + private BigDecimal budgetAmt; + + /** 预算费用率(待定) */ + private BigDecimal budgetRate; + + /** 客户发货 */ + private BigDecimal cusDisAmt; + + /** 客户费用(客户占用该成本中心的费用金额) */ + private BigDecimal cusCostAmt; + + /** 客户费用率(客户费用/客户发货) */ + private BigDecimal cusRate; + + /** 整体发货(该成本中心所有客户的发货金额) */ + private BigDecimal centerDisAmt; + + /** 整体费用(所有客户占用该成本中心的费用金额) */ + private BigDecimal centerCostAmt; + + /** 整体费用率(整体费用/整体发货) */ + private BigDecimal centerRate; + +} diff --git a/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java index bba8ce36..cb7e6c31 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java +++ b/src/main/java/com/qs/serve/modules/bir/service/BirCenterRateService.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.bir.service; +import com.qs.serve.modules.bir.entity.vo.BirCostApplyRateVo; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import java.util.List; @@ -19,4 +20,13 @@ public interface BirCenterRateService { TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName,String supplierCode); List findCostCenterDataByCostApplyId(Long costApplyId,Long policyId); + + /** + * 新的费用率统计 + * @param costApplyId + * @param policyId + * @return + */ + List selectCostApplyRateVoList(Long costApplyId,Long policyId); + } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java index 7b835cf0..4b80b49d 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirCenterRateServiceImpl.java @@ -14,6 +14,7 @@ import com.qs.serve.modules.bir.entity.dto.BirRoiCostDTO; import com.qs.serve.modules.bir.entity.so.BirCostRoiSo; import com.qs.serve.modules.bir.entity.so.BirMonthCusCenterSo; import com.qs.serve.modules.bir.entity.vo.BirActivityCenterGoodsMonthVo; +import com.qs.serve.modules.bir.entity.vo.BirCostApplyRateVo; import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo; import com.qs.serve.modules.bir.entity.vo.YtdQtdToOAVo; import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper; @@ -29,6 +30,7 @@ import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierTargetMapper; import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo; import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; +import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; import com.qs.serve.modules.tbs.common.util.QuarterUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.dto.CusTargetRateDTO; @@ -38,6 +40,7 @@ import com.qs.serve.modules.tzc.entity.TzcPolicy; import com.qs.serve.modules.tzc.entity.TzcPolicyItem; import com.qs.serve.modules.tzc.mapper.TzcPolicyItemMapper; import com.qs.serve.modules.tzc.mapper.TzcPolicyMapper; +import com.qs.serve.modules.tzc.service.TzcPolicyService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -113,6 +116,132 @@ public class BirCenterRateServiceImpl implements BirCenterRateService { return centerDataList; } + @Override + public List selectCostApplyRateVoList(Long costApplyId, Long policyId) { + List centerDtoList = null; + String supplierId = null; + if(costApplyId!=null){ + TbsCostApply costApply = tbsCostApplyMapper.selectById(costApplyId); + LambdaQueryWrapper acLqw = new LambdaQueryWrapper<>(); + acLqw.eq(TbsActivityCenter::getCostApplyId,costApplyId); + List activityCenterList = tbsActivityCenterMapper.selectList(acLqw); + supplierId = costApply.getSupplierId()+""; + centerDtoList = activityCenterList.stream().map(a->{ + TbsCenterDto centerDto = new TbsCenterDto(); + centerDto.setId(a.getCenterId()); + centerDto.setCenterCode(a.getCenterCode()); + centerDto.setCenterName(a.getCenterName()); + centerDto.setCenterType(a.getCenterType()); + return centerDto; + }).collect(Collectors.toList()); + }else { + //加载政策 + TzcPolicy policy = tzcPolicyMapper.selectById(policyId); + supplierId = policy.getSupplierId()+""; + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TzcPolicyItem::getPolicyId,policyId); + List policyItemList = tzcPolicyItemMapper.selectList(lqw); + centerDtoList = policyItemList.stream().map(a->{ + TbsCenterDto centerDto = new TbsCenterDto(); + centerDto.setId(a.getCenterId()); + centerDto.setCenterCode(a.getCenterCode()); + centerDto.setCenterName(a.getCenterName()); + centerDto.setCenterType(a.getCenterType()); + return centerDto; + }).collect(Collectors.toList()); + } + + LocalDate nowDate = LocalDate.now(); + int year = nowDate.getYear(); + int month = nowDate.getMonthValue(); + month = month>1?month:1; + //年 + int yearStartNum = year*100 + 1; + int yearEndNum = year*100 + month; + //当月 + int currMonthNum = yearEndNum; + //当季度 + List numbers = QuarterUtil.getQuarterNumbers(year,month); + int quarterStartNum = numbers.get(0); + int quarterEndNum = numbers.get(2); + + List resultList = new ArrayList<>(); + + List yearList = this.buildCostApplyRateList( + "year",yearStartNum, yearEndNum, + supplierId, centerDtoList); + + List seasonList = this.buildCostApplyRateList( + "quarter",quarterStartNum, quarterEndNum, + supplierId, centerDtoList); + + List monthList = this.buildCostApplyRateList( + "month",currMonthNum, currMonthNum, + supplierId, centerDtoList); + + + + resultList.addAll(yearList); + resultList.addAll(seasonList); + resultList.addAll(monthList); + return resultList; + } + + /** + * 获取费率详情 + * @param scheduleType 年季月,year,quarter,month + * @param startMonthNum 格式如 20231 + * @param endMonthNum 格式如 202312 + * @param supplierId + * @param centerDtoList + * @return + */ + private List buildCostApplyRateList(String scheduleType,int startMonthNum, int endMonthNum, String supplierId, + List centerDtoList) { + List costApplyRateVoList = new ArrayList<>(); + for (TbsCenterDto center : centerDtoList) { + BirCostApplyRateVo costApplyRateVo = new BirCostApplyRateVo(scheduleType,center); + //周期内使用金额合计,成本中心 + LambdaQueryWrapper birCenterLwq = new LambdaQueryWrapper<>(); + birCenterLwq.eq(BirActivityCenterGoods::getCenterId,center.getId()); + birCenterLwq.eq(BirActivityCenterGoods::getCenterType,center.getCenterType()); + birCenterLwq.ge(BirActivityCenterGoods::getKeyNum, startMonthNum); + birCenterLwq.le(BirActivityCenterGoods::getKeyNum, endMonthNum); + List birCenterCost = birActivityCenterGoodsMapper.selectList(birCenterLwq); + BigDecimal centerUsedCost = birCenterCost.stream().map(BirActivityCenterGoods::getSplitUsedAmount).reduce(BigDecimal.ZERO,BigDecimal::add); + //周期内使用金额合计,客户 + LambdaQueryWrapper birSupplierLwq = new LambdaQueryWrapper<>(); + birSupplierLwq.eq(BirActivityCenterGoods::getSupplierId, supplierId); + birSupplierLwq.ge(BirActivityCenterGoods::getKeyNum, startMonthNum); + birSupplierLwq.le(BirActivityCenterGoods::getKeyNum, endMonthNum); + List birSupplierCost = birActivityCenterGoodsMapper.selectList(birSupplierLwq); + BigDecimal supplierUsedCost = birSupplierCost.stream().map(BirActivityCenterGoods::getSplitUsedAmount).reduce(BigDecimal.ZERO,BigDecimal::add); + + //客户维度发货金额 + List dispatchSumSupplierVos = dispatchDataMapper.querySumCost(startMonthNum, endMonthNum,Arrays.asList(supplierId)); + BigDecimal dispatchSumSupplierAmt = dispatchSumSupplierVos.stream().map(ErpDispatchSumVo::getDispatchSumCost).reduce(BigDecimal.ZERO,BigDecimal::add); + + //成本中心维度发货金额 + List supplierCodeList = birRoiRateService.getSupplierCodesByCenter( + new BirRoiCostDTO(),center.getCenterType(), Arrays.asList(center.getId())); + List dispatchSumCenterVos = dispatchDataMapper.querySumCost(startMonthNum, endMonthNum,supplierCodeList); + BigDecimal dispatchSumCenterAmt = dispatchSumCenterVos.stream().map(ErpDispatchSumVo::getDispatchSumCost).reduce(BigDecimal.ZERO,BigDecimal::add); + + costApplyRateVo.setCusCostAmt(supplierUsedCost); + costApplyRateVo.setCusDisAmt(dispatchSumSupplierAmt); + costApplyRateVo.setCenterCostAmt(centerUsedCost); + costApplyRateVo.setCenterDisAmt(dispatchSumCenterAmt); + if(dispatchSumSupplierAmt.compareTo(BigDecimal.ZERO)!=0){ + costApplyRateVo.setCusRate(supplierUsedCost.divide(dispatchSumSupplierAmt,2,RoundingMode.DOWN)); + } + if(dispatchSumCenterAmt.compareTo(BigDecimal.ZERO)!=0){ + costApplyRateVo.setCenterRate(centerUsedCost.divide(dispatchSumCenterAmt,2,RoundingMode.DOWN)); + } + costApplyRateVoList.add(costApplyRateVo); + } + return costApplyRateVoList; + } + @Override public TbsCostSubItem.CostCenterTranStr buildCostCenter(String centerType, String centerId, String centerName, String supplierCode) { diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index ea4b8a57..e21a59a7 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java @@ -138,71 +138,6 @@ public class BmsRegionController { .collect(Collectors.toList()); regionList = bmsRegionService.listByIds(idList); return toTreeNodeList2(regionList,stopFlag); -// -// Map> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion::getLevel)); -// List list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1); -// List list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2); -// List list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3); -// List list4 = listMap.get(4)==null?new ArrayList<>():listMap.get(4); -// -// //return allList替换allSelectList代表 返回含该节点下级的数据,当前使用allSelectList -// List allList = new ArrayList<>(); -// if(CollectionUtil.isNotEmpty(list1)){ -// allList.addAll(list1); -// List lv01Pids = list1.stream().map(BmsRegion::getId).collect(Collectors.toList()); -// List level02List = bmsRegionService.listChild(lv01Pids); -// if(CollectionUtil.isNotEmpty(level02List)){ -// allList.addAll(level02List); -// //list2 去重 -// list2 = removeExistList(list2, level02List); -// List lv02Pids = level02List.stream().map(BmsRegion::getId).collect(Collectors.toList()); -// List level03List = bmsRegionService.listChild(lv02Pids); -// if(CollectionUtil.isNotEmpty(level03List)){ -// allList.addAll(level03List); -// //list3 去重 -// list3 = removeExistList(list3,level03List); -// List lv03Pids = level03List.stream().map(BmsRegion::getId).collect(Collectors.toList()); -// List level04List = bmsRegionService.listChild(lv03Pids); -// //list4 去重 -// list4 = removeExistList(list4,level04List); -// allList.addAll(level04List); -// } -// } -// } -// -// if(CollectionUtil.isNotEmpty(list2)){ -// List lv02Pids = list2.stream().map(BmsRegion::getId).collect(Collectors.toList()); -// List level03List = bmsRegionService.listChild(lv02Pids); -// if(CollectionUtil.isNotEmpty(level03List)){ -// allSelectList.addAll(level03List); -// //list3 去重 -// list3 = removeExistList(list3,level03List); -// List lv03Pids = level03List.stream().map(BmsRegion::getId).collect(Collectors.toList()); -// List level04List = bmsRegionService.listChild(lv03Pids); -// //list4 去重 -// list4 = removeExistList(list4,level04List); -// allSelectList.addAll(level04List); -// } -// list2.forEach(a->a.setPid("0")); -// allSelectList.addAll(list2); -// } -// -// if(CollectionUtil.isNotEmpty(list3)){ -// List lv03Pids = list3.stream().map(BmsRegion::getId).collect(Collectors.toList()); -// List level04List = bmsRegionService.listChild(lv03Pids); -// //list4 去重 -// list4 = removeExistList(list4,level04List); -// allSelectList.addAll(level04List); -// list3.forEach(a->a.setPid("0")); -// allSelectList.addAll(list3); -// } -// -// if(CollectionUtil.isNotEmpty(list4)){ -// //list4 去重 -// list4.forEach(a->a.setPid("0")); -// allSelectList.addAll(list4); -// } -// return toTreeNodeList2(allSelectList); } return null; diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index a1b90ca2..a908fe6b 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -18,6 +18,7 @@ import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo; import com.qs.serve.modules.bms.entity.bo.BmsSupplierExcelBo; import com.qs.serve.modules.bms.entity.bo.BmsSupplierParentBo; import com.qs.serve.modules.bms.entity.vo.BmsSupplierTreeVo; +import com.qs.serve.modules.bms.mapper.BmsSupplierComRegionMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.his.entity.HisUserSupplier; @@ -57,6 +58,7 @@ import java.util.stream.Collectors; public class BmsSupplierController { private BmsSupplierService bmsSupplierService; + private BmsSupplierComRegionMapper supplierComRegionMapper; private BmsSupplierAddressService bmsSupplierAddressService; private BmsSupplierVisitAddressService bmsSupplierVisitAddressService; private BmsSupplierContactsService bmsSupplierContactsService; @@ -847,6 +849,15 @@ public class BmsSupplierController { } } + /** + * 获取大区下来列表 + * @return + */ + @GetMapping("/getComRegion") + public R> getComRegion(){ + List supplierComRegions = supplierComRegionMapper.selectList(new QueryWrapper<>()); + return R.ok(supplierComRegions); + } /** * 新增 @@ -1284,5 +1295,8 @@ public class BmsSupplierController { } } + + + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierComRegion.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierComRegion.java new file mode 100644 index 00000000..8f9151e8 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierComRegion.java @@ -0,0 +1,93 @@ +package com.qs.serve.modules.bms.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-12-30 + */ +@Data +@TableName("bms_supplier_com_region") +public class BmsSupplierComRegion implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 大区编码 */ + @Length(max = 255,message = "大区编码长度不能超过255字") + private String regionCode; + + /** 大区名称 */ + @Length(max = 255,message = "大区名称长度不能超过255字") + private String regionName; + + /** 备注 */ + @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; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + + public static BmsSupplierComRegion toNewObject(BmsSupplierComRegion source){ + BmsSupplierComRegion supplierComRegion = new BmsSupplierComRegion(); + supplierComRegion.setId(source.getId()); + supplierComRegion.setRegionCode(source.getRegionCode()); + supplierComRegion.setRegionName(source.getRegionName()); + supplierComRegion.setRemark(source.getRemark()); + supplierComRegion.setCreateTime(source.getCreateTime()); + supplierComRegion.setUpdateTime(source.getUpdateTime()); + supplierComRegion.setTenantId(source.getTenantId()); + supplierComRegion.setDelFlag(source.getDelFlag()); + supplierComRegion.setCreateBy(source.getCreateBy()); + supplierComRegion.setUpdateBy(source.getUpdateBy()); + return supplierComRegion; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsRegionTreeVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsRegionTreeVo.java index ed724d6d..6b7a0888 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsRegionTreeVo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsRegionTreeVo.java @@ -31,6 +31,9 @@ public class BmsRegionTreeVo extends TreeNode { private String aliasRegion; + /** 是否停用 */ + private Integer stopFlag; + /** 层级 */ private Integer level; diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierComRegionMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierComRegionMapper.java new file mode 100644 index 00000000..355a11d7 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierComRegionMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.bms.entity.BmsSupplierComRegion; + +/** + * 客户大区 Mapper + * @author YenHex + * @date 2023-12-30 + */ +public interface BmsSupplierComRegionMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java index 46530282..33c0d499 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityTemplate.java @@ -82,6 +82,12 @@ public class TbsActivityTemplate implements Serializable { @Length(max = 255,message = "备注长度不能超过255字") private String remark; + /** + * 选择类型 + * 1、只能选择客户,2、只能选择供应商,3、可以选择客户和供应商 + */ + private Integer selectType; + /** 开始时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 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 5d1f6e4b..bf638c40 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 @@ -212,6 +212,8 @@ public class TbsCostApply implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime changeActionTime; + private Integer selectType; + /** * 编辑金额标识 * 审批通过时恢复0 diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java index 24bb9b63..8309c9ae 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityTemplateBo.java @@ -85,5 +85,10 @@ public class TbsActivityTemplateBo implements Serializable { private String preRemark; + /** + * 选择类型 + * 1、只能选择客户,2、只能选择供应商,3、可以选择客户和供应商 + */ + private Integer selectType; } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyBo.java index edf75e69..96f0d1f9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyBo.java @@ -48,5 +48,7 @@ public class TbsCostApplyBo implements Serializable { private Integer costThemeEditFlag; + private Integer selectType; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index e2638213..5741dcfa 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -185,6 +185,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl } budget.setBudgetCode(budgetBo.getBudgetCode()); budget.setSubjectId(budgetBo.getSubjectId()); + budget.setAttachIds(budgetBo.getAttachIds()); //设置指定模板 budget.setTemplateIds(new String[]{}); if(budget.getTemplateFlag()!=null&&budget.getTemplateFlag().equals(1)){ @@ -227,6 +228,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl } scheduleItemBudgetService.saveBatch(scheduleItemBudgets); //设置条件 + this.updateById(budget); buildCondition(budget.getId(),brandIds,categoryIds,seriesIds,spuIds,skuIds); } 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 dc7fc983..e27dda84 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 @@ -28,6 +28,7 @@ import com.qs.serve.modules.vtb.entity.*; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationCenterCommitBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectCommitBo; +import com.qs.serve.modules.vtb.entity.vo.VtbCostInfo; import com.qs.serve.modules.vtb.service.*; import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl; import lombok.AllArgsConstructor; @@ -447,23 +448,53 @@ public class VtbVerificationController { return vtbVerificationOperationService.runCompensate(id); } + + /** + * 获取费用相关信息 + * @param verificationId + * @return + */ + @GetMapping("/getCostInfo") + public R getCostInfo(Long verificationId){ + //申请费用金额:600,已使用金额:0,可使用金额:600,本次核销金额:600,释放金额:0 + VtbVerification verification = vtbVerificationService.getById(verificationId); + TbsCostApply costApply = tbsCostApplyService.getById(verification.getCostApplyId()); + TbsActivity activity = tbsActivityService.getById(verification.getActivityId()); + + BigDecimal costAmt = costApply.getTotalActivityAmount(); + BigDecimal costUsedAmt = costApply.getTotalActivityUsedAmount(); + BigDecimal activityAmt = activity.getTotalAmount(); + BigDecimal activityUsedAmt = activity.getUsedAmount(); + BigDecimal activityReleaseAmt = activity.getReleaseAmount(); + BigDecimal verificationAmt = verification.getAmount(); + + VtbCostInfo costInfo = new VtbCostInfo(); + costInfo.setCostAmt(costAmt); + costInfo.setCostUsedAmt(costUsedAmt); + costInfo.setActivityAmt(activityAmt); + costInfo.setActivityUsedAmt(activityUsedAmt); + costInfo.setActivityReleaseAmt(activityReleaseAmt); + costInfo.setVerificationAmt(verificationAmt); + costInfo.setActivityNotUsedAmt(activityAmt.subtract(activityUsedAmt)); + return R.ok(costInfo); + } + /** * 成功提交回调 * @param verificationId * @return */ - @GetMapping("successCommit") + //@GetMapping("successCommit") public R successCommit(Long verificationId){ vtbVerificationService.successCommit(verificationId,false); return R.ok(); } - /** * 成功提交回调 * @return */ - @GetMapping("successCommit2") + //@GetMapping("successCommit2") public R successCommit2(){ //错误的 Long[] costIds = new Long[]{ diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/vo/VtbCostInfo.java b/src/main/java/com/qs/serve/modules/vtb/entity/vo/VtbCostInfo.java new file mode 100644 index 00000000..a4e20fbc --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/entity/vo/VtbCostInfo.java @@ -0,0 +1,35 @@ +package com.qs.serve.modules.vtb.entity.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/12/30 + */ +@Data +public class VtbCostInfo { + + /** 费用申请金额 */ + BigDecimal costAmt; + + /** 费用已核销金额 */ + BigDecimal costUsedAmt; + + /** 活动申请金额 */ + BigDecimal activityAmt; + + /** 活动已核销金额 */ + BigDecimal activityUsedAmt; + + /** 活动释放金额 */ + BigDecimal activityReleaseAmt; + + /** 本次核销金额 */ + BigDecimal verificationAmt; + + /** 拓展:活动未核销金额(activityAmt-activityUsedAmt) */ + BigDecimal activityNotUsedAmt; + +} diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index 70d4efa0..a916c125 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -71,6 +71,8 @@ bms_supplier.`tenant_id`, bms_supplier.`cost_flag`, bms_supplier.`supplier_flag`, + bms_supplier.`com_region`, + bms_supplier.`com_region_code`, bms_supplier.`stop_flag`, bms_supplier.`cooperate_pause_flag`, bms_supplier.`stop_flag_date`, @@ -89,6 +91,8 @@ and `bms_supplier`.`address` = #{query.address} and `bms_supplier`.`name` like concat('%',#{query.name},'%') and `bms_supplier`.`code` like concat('%',#{query.code},'%') + and `bms_supplier`.`com_region` like concat('%',#{query.comRegion},'%') + and `bms_supplier`.`com_region_code` like concat('%',#{query.comRegionCode},'%') and `bms_supplier`.`pid` = #{query.pid} and `bms_supplier`.`parent_code` = #{query.parentCode} and `bms_supplier`.`stop_flag` = #{query.stopFlag}