Browse Source

支付调整;添加大区费率;添加客户公司维度费率;

v1.0
Yen 2 years ago
parent
commit
b74b36cab2
  1. 2
      src/main/java/com/qs/serve/modules/bir/entity/so/BirCostRoiSo.java
  2. 4
      src/main/java/com/qs/serve/modules/bir/entity/vo/BirRoiCostItemVo.java
  3. 66
      src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java
  4. 4
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  5. 2
      src/main/java/com/qs/serve/modules/pay/mapper/PayPaymentItemMapper.java
  6. 11
      src/main/java/com/qs/serve/modules/pay/mapper/PayPaymentMapper.java
  7. 3
      src/main/java/com/qs/serve/modules/sys/service/SysAttachService.java
  8. 1
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  9. 8
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java
  10. 3
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java
  11. 17
      src/main/java/com/qs/serve/task/PayTask.java
  12. 8
      src/main/resources/mapper/pay/PayPaymentItemMapper.xml

2
src/main/java/com/qs/serve/modules/bir/entity/so/BirCostRoiSo.java

@ -20,6 +20,8 @@ public class BirCostRoiSo {
* 1->申请人的客户(不含当前客户)
* 2->客户的行政区域(不含当前客户)
* 3->客户的销售区域(不含当前客户)
* 4->客户的公司维度(替换原来的0)
*
*/
private Integer loadType;

4
src/main/java/com/qs/serve/modules/bir/entity/vo/BirRoiCostItemVo.java

@ -56,6 +56,10 @@ public class BirRoiCostItemVo {
*/
private BigDecimal dispatchAmt;
private BigDecimal regionTotalCostAmt;
private BigDecimal regionTotalDispatchAmt;
private Float ytdPercent;
private Float qtdPercent;

66
src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java

@ -65,6 +65,9 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
itemVo.setCheckRealAmt(itemVo.getCheckAmt());
//实际金额使用核销金额
itemVo.setCostAmt(itemVo.getCheckAmt());
if(itemVo.getPreAmt()==null){
itemVo.setPreAmt(BigDecimal.ZERO);
}
}
//预估金额
List<BirRoiCostItemVo> forecastDataList = baseMapper.queryForecastRoiCostItems(param);
@ -103,6 +106,7 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
public List<BirRoiCostItemVo> getCostRoiOfYearMonth(BirCostRoiSo param) {
Integer loadType = param.getLoadType();
String supplierId = param.getSupplierId();
BmsSupplier supplier = bmsSupplierMapper.selectById(supplierId);
//最近12个月
LocalDate currMonth = LocalDate.now();
int currMonthNum = currMonth.getYear()*100 + currMonth.getMonthValue();
@ -117,6 +121,9 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
List<BirRoiCostItemVo> costItemVoList = this.queryRoiCostItems(costDTO);
//构建大区费率
this.buildRegionCostAndRate(supplier, currMonthNum, startMonthNum, supplierCodeList, costItemVoList);
//发货单
List<ErpDispatchSumVo> dispatchSumVos = null;
if(supplierCodeList!=null&&supplierCodeList.size()>0){
@ -162,10 +169,13 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
itemVo.setYearMonth(i);
itemVo.setYearMonthDate(LocalDate.of(i/100,month,1));
itemVo.setCostAmt(BigDecimal.ZERO);
itemVo.setPreAmt(BigDecimal.ZERO);
itemVo.setCheckAmt(BigDecimal.ZERO);
itemVo.setCostRealAmt(BigDecimal.ZERO);
itemVo.setCheckRealAmt(BigDecimal.ZERO);
itemVo.setReturnAmt(BigDecimal.ZERO);
itemVo.setRegionTotalCostAmt(BigDecimal.ZERO);
itemVo.setRegionTotalDispatchAmt(BigDecimal.ZERO);
itemVo.setDispatchAmt(dispatchAmt);
costItemVos.add(itemVo);
}
@ -175,6 +185,57 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
return costItemVoList;
}
/**
* 构建大区费率
* @param supplier
* @param currMonthNum
* @param startMonthNum
* @param supplierCodeList
* @param costItemVoList
*/
private void buildRegionCostAndRate(BmsSupplier supplier, int currMonthNum, int startMonthNum, List<String> supplierCodeList, List<BirRoiCostItemVo> costItemVoList) {
//加载公司内所有客户的编码
LambdaQueryWrapper<BmsSupplier> regionSupplierLqw = new LambdaQueryWrapper<>();
regionSupplierLqw.eq(BmsSupplier::getComRegionCode, supplier.getComRegion());
regionSupplierLqw.select(BmsSupplier::getId,BmsSupplier::getCode);
List<BmsSupplier> regionSupplierList = bmsSupplierMapper.selectList(regionSupplierLqw);
List<String> regionSupplierIds = regionSupplierList.stream().map(BmsSupplier::getId).collect(Collectors.toList());
regionSupplierIds.add("0");
//加载公司内费用
BirRoiCostDTO costDTO4Com = new BirRoiCostDTO();
costDTO4Com.setStartMonthNum(startMonthNum);
costDTO4Com.setEndMonthNum(currMonthNum);
costDTO4Com.setSupplierIds(regionSupplierIds);
List<BirRoiCostItemVo> costItemVoCom = this.queryRoiCostItems(costDTO4Com);
//合并项
for (BirRoiCostItemVo itemVo : costItemVoList) {
itemVo.setRegionTotalCostAmt(BigDecimal.ZERO);
for (BirRoiCostItemVo costItemVo : costItemVoCom) {
if(itemVo.getYearMonth().equals(costItemVo.getYearMonth())){
itemVo.setRegionTotalCostAmt(costItemVo.getCostRealAmt());
break;
}
}
}
//加载公司发货单
List<ErpDispatchSumVo> dispatchSumComVos = null;
if(supplierCodeList !=null&& supplierCodeList.size()>0){
dispatchSumComVos = dispatchDataMapper.querySumCost(startMonthNum, currMonthNum, supplierCodeList);
}
for (BirRoiCostItemVo costItemVo : costItemVoList) {
costItemVo.setRegionTotalDispatchAmt(BigDecimal.ZERO);
if(dispatchSumComVos!=null){
for (ErpDispatchSumVo dispatchSumVo : dispatchSumComVos) {
if(dispatchSumVo.getYearMonth().equals(costItemVo.getYearMonth())){
// 发货金额=原发货金额)
costItemVo.setRegionTotalDispatchAmt(dispatchSumVo.getDispatchSumCost());
break;
}
}
}
}
}
private boolean checkNotNullVale(String val){
return val!=null&&!val.equals("0");
}
@ -381,8 +442,11 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
}else {
lqw.eq(BmsSupplier::getId,"0");
}
}else if(loadType.equals(4)){
//4->公司维度统计
lqw.eq(BmsSupplier::getComRegionCode,bmsSupplier.getComRegionCode());
}
if (loadType.equals(2)||loadType.equals(3)){
if (loadType.equals(2)||loadType.equals(3)||loadType.equals(4)){
List<BmsSupplier> supplierList = bmsSupplierMapper.selectList(lqw);
List<String> supplierIds = supplierList.stream().map(BmsSupplier::getId)
.distinct().collect(Collectors.toList());

4
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -179,6 +179,10 @@ public class BmsSupplier implements Serializable {
@JsonProperty
private Boolean delFlag;
private String comRegion;
private String comRegionCode;
/** 初始化当前欠费 */
@NotNull(message = "初始化当前欠费不能为空")
private BigDecimal initCurAmount;

2
src/main/java/com/qs/serve/modules/pay/mapper/PayPaymentItemMapper.java

@ -34,5 +34,7 @@ public interface PayPaymentItemMapper extends BaseMapper<PayPaymentItem> {
List<AmountDTO> selectCostTotal(@Param("costIds") List<String> costIds);
int updateSyncCostState(@Param("costIds") List<Long> costIds);
}

11
src/main/java/com/qs/serve/modules/pay/mapper/PayPaymentMapper.java

@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.pay.entity.PayPayment;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 支付 Mapper
* @author YenHex
@ -17,7 +17,14 @@ public interface PayPaymentMapper extends BaseMapper<PayPayment> {
@Select("select * from pay_payment where erp_id = #{erpId} and del_flag = 0")
PayPayment getByErpId(@Param("erpId")String erpId);
@InterceptorIgnore(tenantLine = "1")
@Select("select cost_apply_id from pay_payment " +
" left join tbs_cost_apply on pay_payment.cost_apply_id = tbs_cost_apply.id " +
" where " +
" sync_cost_state = 0 " +
" and sy_form_id is not null " +
" GROUP BY cost_apply_id limit 1000 ")
List<Long> selectCostApplyIds4State();
}

3
src/main/java/com/qs/serve/modules/sys/service/SysAttachService.java

@ -22,6 +22,9 @@ public interface SysAttachService extends IService<SysAttach> {
}
default List<SysAttach> listByIdArrs(String[] ids) {
if(ids==null||ids.length==0){
return null;
}
List<SysAttach> attaches = IService.super.listByIds(Arrays.asList(ids));
return attaches;
}

1
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java

@ -50,7 +50,6 @@ public class TbsBudgetController {
private final TbsBudgetCostItemService tbsBudgetCostItemService;
private final TbsBudgetLogService tbsBudgetLogService;
private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
private final TbsBudgetChangeService tbsBudgetChangeService;
private final TbsBudgetConditionService tbsBudgetConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsScheduleItemService tbsScheduleItemService;

8
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java

@ -20,7 +20,7 @@ public class TbsBudgetBatchBo {
private String remark;
/** 附件ID */
private List<String> attachIds;
private String[] attachIds;
List<BudgetMain> budgetList;
@ -60,14 +60,16 @@ public class TbsBudgetBatchBo {
/** 系列名称 */
private String seriesNames;
private String remark;
/**
* 周期金额
*/
List<BudgetAmount> scheduleAmount;
private List<Object> errorInfos;
private List<String> errorInfos;
public List<Object> getErrorInfos() {
public List<String> getErrorInfos() {
if(errorInfos==null){
errorInfos = new ArrayList<>();
}

3
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java

@ -165,6 +165,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
budgetBatch.setUserName(sysUser.getName());
budgetBatch.setSubmitTime(LocalDateTime.now());
budgetBatch.setRemark(param.getRemark());
budgetBatch.setAttachIds(param.getAttachIds());
//构建BatchItems
List<TbsBudgetBatchItem> batchItems = new ArrayList<>();
//加载 周期信息
@ -276,6 +277,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
batchItem.setUserId(sysUser.getId());
batchItem.setUserCode(sysUser.getCode());
batchItem.setUserName(sysUser.getName());
batchItem.setRemark(paramItem.getRemark());
batchItems.add(batchItem);
}else {
@ -287,6 +289,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
batchItem.setUserId(sysUser.getId());
batchItem.setUserCode(sysUser.getCode());
batchItem.setUserName(sysUser.getName());
batchItem.setRemark(paramItem.getRemark());
batchItems.add(batchItem);
}
}

17
src/main/java/com/qs/serve/task/PayTask.java

@ -2,8 +2,10 @@ package com.qs.serve.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.AmountDTO;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.pay.entity.PayPayment;
import com.qs.serve.modules.pay.mapper.PayPaymentItemMapper;
import com.qs.serve.modules.pay.mapper.PayPaymentMapper;
import com.qs.serve.modules.pay.service.PayPaymentService;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
@ -28,24 +30,23 @@ public class PayTask {
private final TbsCostApplyService costApplyService;
private final PayPaymentItemMapper payPaymentItemMapper;
private final PayPaymentMapper payPaymentMapper;
/**
* 同步支付
*/
@Scheduled(cron="0 0 2 * * ?")
public void syncCostPayStatus(){
AuthContextUtils.setTenant("001");
List<Long> costIds4State = payPaymentMapper.selectCostApplyIds4State();
LambdaQueryWrapper<TbsCostApply> costLqw = new LambdaQueryWrapper<>();
costLqw.select(
TbsCostApply::getId,
TbsCostApply::getTotalActivityAmount
);
costLqw.ne(TbsCostApply::getPayStatus,2);
costLqw.eq(TbsCostApply::getCheckState,3);
//SyFormId 代表非销路通数据
costLqw.isNotNull(TbsCostApply::getSyFormId);
costLqw.apply(" limit 2000");
costLqw.in(TbsCostApply::getId,costIds4State);
List<TbsCostApply> costApplyList = costApplyService.list(costLqw);
List<String> costIds = costApplyList.stream().map(a->a.toString()).collect(Collectors.toList());
List<String> costIds = costApplyList.stream().map(TbsCostApply::toString).collect(Collectors.toList());
List<AmountDTO> amountDTOList = payPaymentItemMapper.selectCostTotal(costIds);
List<TbsCostApply> updatePayStateList = new ArrayList<>();
@ -71,7 +72,9 @@ public class PayTask {
}
}
costApplyService.updateBatchById(updatePayStateList);
//更新支付表记录,用于实现增量更新
List<Long> costIds4Update = updatePayStateList.stream().map(TbsCostApply::getId).collect(Collectors.toList());
payPaymentItemMapper.updateSyncCostState(costIds4Update);
}
}

8
src/main/resources/mapper/pay/PayPaymentItemMapper.xml

@ -120,4 +120,12 @@
</foreach>
</update>
<update id="updateSyncCostState">
update pay_payment set sync_cost_state = 1
where cost_apply_id in
<foreach collection="costIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</update>
</mapper>

Loading…
Cancel
Save