diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index 7d0ea939..ea382f1d 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -416,6 +416,10 @@ public class OmsOrderServiceImpl extends ServiceImpl im orderItem.setSpecValues(shoppingCart.getSpecInfo()); orderItem.setSpuCode(shoppingCart.getSpuCode()); if(goodsSku!=null){ + GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); + orderItem.setSpuTitle(goodsSpu.getName()); + orderItem.setSkuTitle(goodsSpu.getSkuName()); + log.warn("shoppingCart json =>"+JsonUtil.objectToJson(shoppingCart)); orderItem.setSkuTitle(goodsSku.getSkuName()); orderItem.setMarketPrice(goodsSku.getMarketPrice()); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index fe05aa3a..25d01430 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java @@ -29,10 +29,7 @@ import com.qs.serve.modules.tbs.common.dto.CompensateDTO; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.bo.*; -import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; -import com.qs.serve.modules.tbs.entity.dto.TbsBudgetScheduleWithAmount; -import com.qs.serve.modules.tbs.entity.dto.TbsCostBudgetRelateInfo; -import com.qs.serve.modules.tbs.entity.dto.TbsCostErrorBudgetDTO; +import com.qs.serve.modules.tbs.entity.dto.*; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo; @@ -532,10 +529,97 @@ public class TbsCostApplyController { @GetMapping("rebuildBudgetLog") - public void dealCostBudget(Long costApplyId){ + public R dealCostBudget(Long costApplyId){ + if(costApplyId!=null){ + rebuildBudgetLog(costApplyId); + return R.ok(); + } + List costErrorBudgetDTOList = tbsCostApplyMapper.selectCostErrorBudgetDTO(); + for (TbsCostErrorBudgetDTO budgetDTO : costErrorBudgetDTOList) { + Long costApplyId2 = budgetDTO.getId(); + rebuildBudgetLog(costApplyId2); + } + return R.ok(); + } + + @GetMapping("rebuildBudgetLog3") + public void dealCostBudget3(){ List costErrorBudgetDTOList = tbsCostApplyMapper.selectCostErrorBudgetDTO(); for (TbsCostErrorBudgetDTO budgetDTO : costErrorBudgetDTOList) { - rebuildBudgetLog(budgetDTO.getId()); + Long costApplyId = budgetDTO.getId(); + centerGoodsAmtToBudgetLog(costApplyId); + } + } + + @GetMapping("flushActivityCenterGoodsAmount") + public void flushActivityCenterGoodsAmount(){ + //List costErrorBudgetDTOList = tbsCostApplyMapper.selectCostErrorBudgetDTO(); + //过滤大额错误订单 +// costErrorBudgetDTOList = costErrorBudgetDTOList.stream().filter(a->a.getTotalActivityAmount() +// .subtract(a.getSumBudget()) +// .abs() +// .compareTo(BigDecimal.ONE)<1).collect(Collectors.toList()); + //List costApplyIds = costErrorBudgetDTOList.stream().map(TbsCostErrorBudgetDTO::getId).distinct().collect(Collectors.toList()); + List costApplyIds = new ArrayList<>(); + costApplyIds.add(263925L); + costApplyIds.add(263930L); + costApplyIds.add(270102L); + List notMatchAmtCenterGoodsList = activityCenterGoodsService.listNotMatchAmtCenterGoods(costApplyIds); + List activityIds = notMatchAmtCenterGoodsList.stream().map(a->a.getActivityId()).collect(Collectors.toList()); + for (Long activityId : activityIds) { + List activityCenterGoodsList = activityCenterGoodsService.listByActivityId(activityId); + Map> stringListMap = activityCenterGoodsList.stream() + .collect(Collectors.groupingBy(a->a.getSubjectId()+"_"+a.getCenterType()+"_"+a.getCenterId())); + for (String key : stringListMap.keySet()) { + List list = stringListMap.get(key); + BigDecimal totalAmountOfCenter = list.get(0).getCenterAmount(); + BigDecimal totalCenterGoods = BigDecimal.ZERO; + for (TbsActivityCenterGoods centerGoods : list) { + totalCenterGoods = totalCenterGoods.add(centerGoods.getCenterGoodsAmount()); + } + BigDecimal diff = totalAmountOfCenter.subtract(totalCenterGoods); + if(diff.compareTo(BigDecimal.ZERO)!=0&&diff.compareTo(BigDecimal.ONE)<0){ + TbsActivityCenterGoods centerGoods = list.get(0); + centerGoods.setCenterGoodsAmount(centerGoods.getCenterGoodsAmount().add(diff)); + activityCenterGoodsService.updateById(centerGoods); + } + } + } + } + + private void centerGoodsAmtToBudgetLog(Long costApplyId) { + LambdaQueryWrapper logLqw = new LambdaQueryWrapper<>(); + logLqw.eq(TbsBudgetLog::getCostApplyId, costApplyId); + logLqw.lt(TbsBudgetLog::getOptType,7); + List budgetLogList = tbsBudgetLogMapper.selectList(logLqw); + List activityCenterGoodsList = activityCenterGoodsService.listByCostApplyId(costApplyId); + if(budgetLogList.size()==activityCenterGoodsList.size()){ + List updBudgetLogList = new ArrayList<>(); + for (TbsBudgetLog budgetLog : budgetLogList) { + TbsBudgetLog tmpObject = null; + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + if(budgetLog.getActivityId().equals(centerGoods.getActivityId()) + &&budgetLog.getSubjectId().equals(centerGoods.getSubjectId()) + &&budgetLog.getCenterType().equals(centerGoods.getCenterType()) + &&budgetLog.getCenterId().equals(centerGoods.getCenterId()) + &&budgetLog.getTargetId().equals(centerGoods.getTargetId()) + //&&budgetLog.getScheduleItemBudgetId().equals(centerGoods.getScheduleItemBudgetId()) + ){ + budgetLog.setAmount(centerGoods.getCenterGoodsAmount().negate()); + tmpObject = budgetLog; + //tbsBudgetLogMapper.updateById(budgetLog); + } + } + if(tmpObject==null){ + break; + } + updBudgetLogList.add(tmpObject); + } + if(updBudgetLogList.size()== budgetLogList.size()){ + for (TbsBudgetLog budgetLog : updBudgetLogList) { + tbsBudgetLogMapper.updateById(budgetLog); + } + } } } @@ -594,28 +678,21 @@ public class TbsCostApplyController { log.error("{}金额错误",costApply.getId()); return; } - BigDecimal costAmountBudget = tbsCostApplyMapper.sumCostAmountBudget(costApplyId); - - //判断合计金额与预算是否有差距过大 - boolean diffCostBudget = costAmt.subtract(costAmountBudget).intValue()!=0; - if(diffCostBudget){ - //判断是否有释放,没有直接清理(后续可修改为全部清理) + //BigDecimal costAmountBudget = tbsCostApplyMapper.sumCostAmountBudget(costApplyId); - LambdaQueryWrapper budgetLogRmLqw = new LambdaQueryWrapper<>(); - budgetLogRmLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); - budgetLogRmLqw.ne(TbsBudgetLog::getOptType,1); - tbsBudgetLogMapper.delete(budgetLogRmLqw); + //判断是否有释放,没有直接清理(后续可修改为全部清理) - LambdaQueryWrapper budgetLogLqw = new LambdaQueryWrapper<>(); - budgetLogLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); - budgetLogLqw.eq(TbsBudgetLog::getOptType,1); - List budgetLogList = tbsBudgetLogMapper.selectList(budgetLogLqw); + LambdaQueryWrapper budgetLogLqw = new LambdaQueryWrapper<>(); + budgetLogLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); + budgetLogLqw.eq(TbsBudgetLog::getOptType,1); + List budgetLogList = tbsBudgetLogMapper.selectList(budgetLogLqw); - List activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId); + List activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId); - List updateLogIdsList = new ArrayList<>(); - updateLogIdsList.add(0L); + List updateLogIdsList = new ArrayList<>(); + updateLogIdsList.add(0L); + if(activityCenterGoodsList.size()==budgetLogList.size()){ for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { for (TbsBudgetLog budgetLog : budgetLogList) { if( budgetLog.getActivityId().equals(centerGoods.getActivityId()) @@ -631,9 +708,14 @@ public class TbsCostApplyController { } } } - budgetLogLqw.notIn(TbsBudgetLog::getId,updateLogIdsList); - tbsBudgetLogMapper.delete(budgetLogLqw); + + LambdaQueryWrapper delBudgetLogLqw = new LambdaQueryWrapper<>(); + delBudgetLogLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); + delBudgetLogLqw.notIn(TbsBudgetLog::getId,updateLogIdsList); + tbsBudgetLogMapper.delete(delBudgetLogLqw); } + + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsActNotMatchAmtCenterGoods.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsActNotMatchAmtCenterGoods.java new file mode 100644 index 00000000..bea5f6da --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsActNotMatchAmtCenterGoods.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.tbs.entity.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/12/12 + */ +@Data +public class TbsActNotMatchAmtCenterGoods { + + private Long activityId; + private BigDecimal totalAmount; + private BigDecimal sumGoodsAmt; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityCenterGoodsMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityCenterGoodsMapper.java index c67934b2..59764b02 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityCenterGoodsMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityCenterGoodsMapper.java @@ -1,7 +1,13 @@ package com.qs.serve.modules.tbs.mapper; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; +import com.qs.serve.modules.tbs.entity.dto.TbsActNotMatchAmtCenterGoods; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 活动成本中心配比项 Mapper @@ -10,5 +16,25 @@ import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; */ public interface TbsActivityCenterGoodsMapper extends BaseMapper { + @Select("" + ) + @InterceptorIgnore(tenantLine = "1") + List listNotMatchAmtCenterGoods(@Param("costApplyIds") List costIds); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterGoodsService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterGoodsService.java index 045e8e6a..460cc630 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterGoodsService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityCenterGoodsService.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.tbs.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; import com.qs.serve.modules.tbs.entity.TbsActivitySubject; +import com.qs.serve.modules.tbs.entity.dto.TbsActNotMatchAmtCenterGoods; import java.util.List; import java.util.Map; @@ -21,5 +22,12 @@ public interface TbsActivityCenterGoodsService extends IService> listByActivityMap(List activityIds); + /** + * 加载center_goods与activity不匹配的 + * @param costIds + * @return + */ + List listNotMatchAmtCenterGoods(List costIds); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterGoodsServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterGoodsServiceImpl.java index b588b2fc..7c5277b4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterGoodsServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityCenterGoodsServiceImpl.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.tbs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.modules.tbs.entity.TbsActivitySubject; +import com.qs.serve.modules.tbs.entity.dto.TbsActNotMatchAmtCenterGoods; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -46,5 +47,9 @@ public class TbsActivityCenterGoodsServiceImpl extends ServiceImpl listNotMatchAmtCenterGoods(List costIds) { + return baseMapper.listNotMatchAmtCenterGoods(costIds); + } } diff --git a/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml b/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml index a2987d87..9195d1fe 100644 --- a/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml +++ b/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml @@ -183,11 +183,13 @@ and tbs_cost_apply.cancel_flag = 0 AND tbs_cost_apply.charge_state in (1,2,3,7) - and ( - ( release_budget is not null and total_activity_amount - release_budget - sum_budget !=0 ) - or - ( release_budget is null and sum_budget - total_activity_amount!=0 ) - ) + and + ( + (tbs_cost_apply.total_activity_amount - sum_budget != 0 and release_budget is null ) + or (tbs_cost_apply.total_activity_amount-release_budget-sum_budget!=0 and release_budget is not null) + ) + and tbs_cost_apply.total_activity_amount - sum_budget !=0 +