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 962cb0d9..1dde486b 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 @@ -553,6 +553,7 @@ public class OmsOrderServiceImpl extends ServiceImpl i order.setBrandRuleName(categoryRule.getLabel()); } + order.setOrderSource(confirmOrder.getOrderSource()); order.setCdOrderRemark(createOrderParam.getCdOrderRemark()); order.setOrderType(confirmOrder.getOrderType()); order.setSupplierId(Long.parseLong(supplier.getId())); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java index 4ad3eba4..7fcd61e4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java @@ -436,6 +436,15 @@ public class TbsBudgetController { if(tbsBudgetCostItemService.count(lqw)>0){ return R.error("预算已被使用"); } + long countUnPub = tbsBudgetService.count( + new LambdaQueryWrapper() + .in(TbsBudget::getId,idsLong) + .eq(TbsBudget::getBudgetState,0) + .eq(TbsBudget::getBudgetCheckState,TbsCommonCheckState.State_0_unPublish) + ); + if(countUnPub>0){ + return R.error("预算状态不支持删除"); + } boolean result = tbsBudgetService.removeByIds(idsLong); //移除考核期预算 LambdaQueryWrapper rmItemBudget = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java index 1174dd4d..344c5b88 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeScheduleItem.java @@ -34,6 +34,9 @@ public class TbsBudgetChangeScheduleItem implements Serializable { /** 更变记录id */ private Long changeId; + /** 和原来记录做对比,判断是否更变 */ + private Integer changeFlag; + /** TbsScheduleItemBudget.id */ private Long sourceId; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java index 9f8d60b4..b1fa5323 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetAmtBo.java @@ -11,7 +11,10 @@ import java.math.BigDecimal; @Data public class TbsBudgetAmtBo { - private Long budgetScheduleItemId; + /** + * scheduleItemBudgetId + */ + private Long scheduleItemId; private BigDecimal preDispatchAmount; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java index 7417cf93..5983b5f3 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java @@ -279,7 +279,6 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl scheduleMap, Map subjectMap, Map centerDtoMap, Map categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) { + private void toUpdateBudgetInfo(Long batchId,SysUser sysUser, Map scheduleMap, + Map subjectMap, Map centerDtoMap, + Map categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) { //tbsBudgetService.removeById(budgetId); tbsBudgetConditionService.remove( new LambdaQueryWrapper() @@ -363,19 +364,19 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl categoryMap, TbsBudget budget, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId) { if(budget.getConditionFlag().equals(1)){ - List existingConditionList = tbsBudgetConditionService - .list(new LambdaQueryWrapper() - .eq(TbsBudgetCondition::getBudgetId, budgetId)); +// List existingConditionList = tbsBudgetConditionService +// .list(new LambdaQueryWrapper() +// .eq(TbsBudgetCondition::getBudgetId, budgetId)); String bandNames = paramItem.getBrandNames(); String categoryNames = paramItem.getCategoryNames(); String seriesNames = paramItem.getSeriesNames(); //设置changeConditionList参数 List changeConditionList = new ArrayList<>(); - this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, + this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, null, bandNames, TbsGoodsType.brand.name()); - this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, + this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, null, categoryNames, TbsGoodsType.category.name()); - this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, + this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, null, seriesNames, TbsGoodsType.series.name()); if(CollUtil.isNotEmpty(changeConditionList)){ tbsBudgetChangeConditionService.saveBatch(changeConditionList); @@ -407,18 +408,17 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpla.getTargetName().equals(val)||a.getTargetCode().equals(val) - ); - if(!exist){ - GoodsCategory goodsCategory = categoryMap.get(val); - if(goodsCategory!=null){ - TbsBudgetChangeCondition budgetChangeCondition = new TbsBudgetChangeCondition(); - budgetChangeCondition.setChangeId(changeId); - budgetChangeCondition.setBudgetId(budgetId); - budgetChangeCondition.setTargetType(targetType); - budgetChangeCondition.setTargetId(goodsCategory.getId()); - budgetChangeCondition.setTargetCode(goodsCategory.getCode()); - budgetChangeCondition.setTargetName(goodsCategory.getName()); - budgetChangeCondition.setTargetLevelPathIds(goodsCategory.getLevelPath()); - budgetChangeCondition.setTargetLevelPathNames(goodsCategory.getLevelPathNames()); - changeConditionList.add(budgetChangeCondition); - } + GoodsCategory goodsCategory = categoryMap.get(targetType+"_"+val); + if(goodsCategory!=null){ + TbsBudgetChangeCondition budgetChangeCondition = new TbsBudgetChangeCondition(); + budgetChangeCondition.setChangeId(changeId); + budgetChangeCondition.setBudgetId(budgetId); + budgetChangeCondition.setTargetType(targetType); + budgetChangeCondition.setTargetId(goodsCategory.getId()); + budgetChangeCondition.setTargetCode(goodsCategory.getCode()); + budgetChangeCondition.setTargetName(goodsCategory.getName()); + budgetChangeCondition.setTargetLevelPathIds(goodsCategory.getLevelPath()); + budgetChangeCondition.setTargetLevelPathNames(goodsCategory.getLevelPathNames()); + changeConditionList.add(budgetChangeCondition); } } } @@ -456,7 +451,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl loadGoodsCategoryMap(TbsBudgetBatchBo param) { List paramBudgetList = param.getBudgetList(); - Set goodsCategoryNames = new HashSet<>(); + //初始化三个维度的品类 + List allBandNameList = new ArrayList<>(), + allCategoryNameList = new ArrayList<>(), + allSeriesNameList = new ArrayList<>(); for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) { String bandNames = budgetMain.getBrandNames(); String categoryNames = budgetMain.getCategoryNames(); String seriesNames = budgetMain.getSeriesNames(); - initCategorySet(goodsCategoryNames, bandNames); - initCategorySet(goodsCategoryNames, categoryNames); - initCategorySet(goodsCategoryNames, seriesNames); + allBandNameList.addAll(initCategorySet(bandNames)); + allCategoryNameList.addAll(initCategorySet(categoryNames)); + allSeriesNameList.addAll(initCategorySet(seriesNames)); } - if(goodsCategoryNames.size()<1){ + if(CollUtil.isEmpty(allBandNameList) + && CollUtil.isEmpty(allCategoryNameList) + && CollUtil.isEmpty(allSeriesNameList)){ return new HashMap<>(); } - List goodsCategories = goodsCategoryService.list( - new LambdaQueryWrapper() - .in(GoodsCategory::getName,goodsCategoryNames) - .or() - .in(GoodsCategory::getCode,goodsCategoryNames) - ); - if(goodsCategories.size()!= goodsCategoryNames.size()){ - for (String categoryName : goodsCategoryNames) { - List tempList = goodsCategories.stream() - .filter(a->a.getName().equals(categoryName)).collect(Collectors.toList()); - if(tempList.size()<1){ - for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) { - boolean bandNamesFlag = budgetMain.getBrandNames() != null && budgetMain.getBrandNames().contains(categoryName); - boolean categoryNamesFlag = budgetMain.getCategoryNames() != null && budgetMain.getCategoryNames().contains(categoryName); - boolean seriesNamesFlag = budgetMain.getSeriesNames() != null && budgetMain.getSeriesNames().contains(categoryName); - if(bandNamesFlag){ - budgetMain.getErrorInfos().add("无效的品牌:"+categoryName); - param.setErrorFlag(true); - break; - } - if(categoryNamesFlag){ - budgetMain.getErrorInfos().add("无效的品类:"+categoryName); - param.setErrorFlag(true); - break; - } - if(seriesNamesFlag){ - budgetMain.getErrorInfos().add("无效的系列:"+categoryName); - param.setErrorFlag(true); - break; - } - } + //查询类目 + List bandList = this.queryCategory(1,allBandNameList); + List categoryList = this.queryCategory(2,allCategoryNameList); + List seriesList = this.queryCategory(3,allSeriesNameList); + + for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) { + String bandNames = budgetMain.getBrandNames(); + String categoryNames = budgetMain.getCategoryNames(); + String seriesNames = budgetMain.getSeriesNames(); + + List bandNameItemList = initCategorySet(bandNames); + List categoryNameItemList = initCategorySet(categoryNames); + List seriesNameItemList = initCategorySet(seriesNames); + checkMchError(1,param, budgetMain,bandList, bandNameItemList); + checkMchError(2,param, budgetMain,categoryList, categoryNameItemList); + checkMchError(3,param, budgetMain,seriesList, seriesNameItemList); + } + + Map categoryMap = new HashMap<>(); + for (GoodsCategory category : bandList) { + categoryMap.put(TbsGoodsType.brand.name()+"_"+category.getName(),category); + } + for (GoodsCategory category : categoryList) { + categoryMap.put(TbsGoodsType.category.name()+"_"+category.getName(),category); + } + for (GoodsCategory category : seriesList) { + categoryMap.put(TbsGoodsType.series.name()+"_"+category.getName(),category); + } + return categoryMap; + } + + /** + * 校验查询结果 + * @param level + * @param param + * @param budgetMain + * @param bandList + * @param cateNames + */ + private void checkMchError(int level,TbsBudgetBatchBo param, + TbsBudgetBatchBo.BudgetMain budgetMain, + List bandList, + List cateNames) { + for (String name : cateNames) { + boolean mch = false; + for (GoodsCategory category : bandList) { + if(name.equals(category.getName())){ + mch = true; + break; } } - }else{ - for (String categoryName : goodsCategoryNames) { - List tempList = goodsCategories.stream() - .filter(a->a.getName().equals(categoryName)).collect(Collectors.toList()); - for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) { - boolean bandNamesFlag = budgetMain.getBrandNames() != null && budgetMain.getBrandNames().contains(categoryName); - boolean categoryNamesFlag = budgetMain.getCategoryNames() != null && budgetMain.getCategoryNames().contains(categoryName); - boolean seriesNamesFlag = budgetMain.getSeriesNames() != null && budgetMain.getSeriesNames().contains(categoryName); - if(bandNamesFlag){ - boolean isTrue = false; - for (GoodsCategory category : tempList) { - if(category.getLevel().equals(1)){ - isTrue = true; - break; - } - } - if(!isTrue){ - budgetMain.getErrorInfos().add("无效的品牌:"+categoryName); - param.setErrorFlag(true); - } - } - if(categoryNamesFlag){ - boolean isTrue = false; - for (GoodsCategory category : tempList) { - if(category.getLevel().equals(2)){ - isTrue = true; - break; - } - } - if(!isTrue){ - budgetMain.getErrorInfos().add("无效的品类:"+categoryName); - param.setErrorFlag(true); - } - } - if(seriesNamesFlag){ - boolean isTrue = false; - for (GoodsCategory category : tempList) { - if(category.getLevel().equals(3)){ - isTrue = true; - break; - } - } - if(!isTrue){ - budgetMain.getErrorInfos().add("无效的系列:"+categoryName); - param.setErrorFlag(true); - } - } + if(!mch){ + if(level==1){ + budgetMain.getErrorInfos().add("无效的品牌:"+name); + }else if (level==2){ + budgetMain.getErrorInfos().add("无效的品类:"+name); + }else { + budgetMain.getErrorInfos().add("无效的系列:"+name); } + param.setErrorFlag(true); } } - Map categoryMap = new HashMap<>(goodsCategories.size()); - for (GoodsCategory category : goodsCategories) { - categoryMap.put(category.getName(),category); + } + + /** + * 查询品类 + * @param level 等级1-品牌 2-类目 3-系列 + * @param nameOrCodes + * @return + */ + private List queryCategory(int level,List nameOrCodes) { + if(CollUtil.isEmpty(nameOrCodes)){ + return new ArrayList<>(); } - return categoryMap; + List list = goodsCategoryService.list( + new LambdaQueryWrapper() + .eq(GoodsCategory::getLevel,level) + .and(cn->{ + cn.in(GoodsCategory::getName,nameOrCodes) + .or() + .in(GoodsCategory::getCode,nameOrCodes); + }) + ); + return list; } /** * 初始化set - * @param goodsCategories * @param categoryString */ - private void initCategorySet(Set goodsCategories, String categoryString) { + private List initCategorySet(String categoryString) { if(StringUtils.hasText(categoryString)){ String[] values = categoryString .replace(",",",") .split(","); - goodsCategories.addAll(Arrays.asList(values)); + return Arrays.asList(values); } + return new ArrayList<>(); } private Map loadScheduleMap(List scheduleNames,TbsBudgetBatchBo param) { diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index 3fcfde25..05928335 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java @@ -130,6 +130,8 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi } //更新金额 List changeScheduleItemList = tbsBudgetChangeScheduleItemService.listByChangeId(budgetChange.getId()); + //过滤更变金额 + changeScheduleItemList = changeScheduleItemList.stream().filter(a->a.getChangeFlag().equals(1)).collect(Collectors.toList()); if(CollectionUtil.isNotEmpty(changeScheduleItemList)){ List scheduleItemBudgetIds = changeScheduleItemList.stream().map(TbsBudgetChangeScheduleItem::getSourceId).collect(Collectors.toList()); List scheduleItemBudgetList = tbsScheduleItemBudgetService.listByIds(scheduleItemBudgetIds); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index 6e3a448b..c1207454 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java @@ -270,16 +270,21 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl budgetAmtUpdateList = param.getBudgetAmtUpdateList(); if(CollectionUtil.isNotEmpty(budgetAmtUpdateList)){ - List budgetScheduleIds = budgetAmtUpdateList.stream().map(TbsBudgetAmtBo::getBudgetScheduleItemId).collect(Collectors.toList()); + //更变的周期项 + List budgetScheduleIds = budgetAmtUpdateList.stream().map(TbsBudgetAmtBo::getScheduleItemId).collect(Collectors.toList()); List budgetLogWithAmountList = tbsScheduleItemBudgetMapper.getSumAmtInList(budgetScheduleIds,Arrays.asList(0,2,3)); - List scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectBatchIds(budgetScheduleIds); + //所有的周期项 + List allScheduleItemBudgetList = tbsScheduleItemBudgetMapper + .selectList(new LambdaQueryWrapper().eq(TbsScheduleItemBudget::getBudgetId,budget.getId())); List changeScheduleItemList = new ArrayList<>(); - for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgetList) { + for (TbsScheduleItemBudget scheduleItemBudget : allScheduleItemBudgetList) { if(!scheduleItemBudget.getBudgetId().equals(budget.getId())){ Assert.throwEx("参数异常!!"); } + boolean isChange = budgetScheduleIds.stream().anyMatch(a->a.equals(scheduleItemBudget.getId())); TbsBudgetChangeScheduleItem resultItem = TbsBudgetChangeScheduleItem.toNewObject(scheduleItemBudget); resultItem.setChangeId(changeId); + resultItem.setChangeFlag(isChange?1:0); //设置当前项调整的最终金额 for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) { if(withAmount.getId().equals(scheduleItemBudget.getId())){ @@ -289,7 +294,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl and ( `sku`.`sku_code` like concat('%', #{query.keyword},'%') or @@ -295,7 +295,7 @@ UNION ALL SELECT sku.*,1 as rn FROM goods_sku sku left join goods_spu spu on sku.spu_id = spu.id - WHERE sku.special_flag = 1 and sku.del_flag = 0 + WHERE sku.special_flag = 1 and sku.del_flag = 0 and sku.enable = 1 and ( `sku`.`sku_code` like concat('%', #{query.keyword},'%') or @@ -337,7 +337,7 @@ SELECT sku.*,ROW_NUMBER() OVER(PARTITION BY sku.spu_id ORDER BY sku.belong_sort) AS rn FROM goods_sku sku left join goods_spu spu on sku.spu_id = spu.id - WHERE sku.order_flag = 1 AND sku.special_flag = 0 + WHERE sku.order_flag = 1 AND sku.special_flag = 0 and sku.enable = 1 and ( `sku`.`sku_code` like concat('%', #{query.keyword},'%') or @@ -365,7 +365,7 @@ UNION ALL SELECT sku.*,1 as rn FROM goods_sku sku left join goods_spu spu on sku.spu_id = spu.id - WHERE sku.special_flag = 1 + WHERE sku.special_flag = 1 and sku.enable = 1 and ( `sku`.`sku_code` like concat('%', #{query.keyword},'%') or