From 0c145ff1d3c830ae46eae968e3b65f40a77f0126 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 3 Feb 2023 18:11:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E8=B0=83=E6=95=B4=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=A2=84=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/controller/JslApiController.java | 4 +- .../controller/BmsSubjectFormController.java | 6 +- .../modules/bms/entity/BmsSubjectForm.java | 1 - .../service/impl/BmsSupplierServiceImpl.java | 131 ++++++++++++++++++ .../modules/tbs/entity/TbsBudgetLog.java | 5 + .../service/impl/TbsCostApplyServiceImpl.java | 5 + src/main/resources/application-dev.yml | 2 +- src/main/resources/application.yml | 4 +- 8 files changed, 149 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java b/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java index ef0dad79..80ab81ce 100644 --- a/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java +++ b/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java @@ -54,8 +54,8 @@ public class JslApiController { * @param param * @return */ - @PostMapping("/supplier/editBatch") - @SysLog(module = SystemModule.BASE, title = "供应商", biz = BizType.INSERT) + //@PostMapping("/supplier/editBatch") + //@SysLog(module = SystemModule.BASE, title = "供应商", biz = BizType.INSERT) @PreAuthorize("hasRole('bms:supplier:insert')") public R editBatch(@RequestBody @Valid BmsSupplierBatchBo param){ bmsSupplierService.editBatch(param); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectFormController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectFormController.java index 22f49667..33206958 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectFormController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectFormController.java @@ -40,7 +40,7 @@ public class BmsSubjectFormController { * @return */ @GetMapping("/page") - @PreAuthorize("hasRole('bms:subjectForm:query')") + @PreAuthorize("hasRole('bms:subject:query')") public R> getPage(BmsSubjectForm param){ BmsSubjectForm entity = CopierUtil.copy(param,new BmsSubjectForm()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); @@ -88,8 +88,8 @@ public class BmsSubjectFormController { @PreAuthorize("hasRole('bms:subject:insert')") public R save(@RequestBody @Valid BmsSubjectForm param){ BmsSubjectForm entity = CopierUtil.copy(param,new BmsSubjectForm()); - boolean result = bmsSubjectFormService.save(entity); - return R.isTrue(result); + bmsSubjectFormService.save(entity); + return R.ok(entity); } /** diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectForm.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectForm.java index 4a27f827..ae66734b 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectForm.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectForm.java @@ -46,7 +46,6 @@ public class BmsSubjectForm implements Serializable { /** 表单json */ @NotBlank(message = "表单json不能为空") - @Length(max = 0,message = "表单json长度不能超过0字") private String formContext; /** 表单版本 */ diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index fbf66549..998d6a19 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -14,14 +14,27 @@ import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsCenterType; +import com.qs.serve.modules.tbs.common.TbsGoodsType; +import com.qs.serve.modules.tbs.entity.TbsBudget; +import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; +import com.qs.serve.modules.tbs.entity.TbsBudgetLog; +import com.qs.serve.modules.tbs.mapper.TbsBudgetConditionMapper; +import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper; +import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 供应商 服务实现类 @@ -36,6 +49,9 @@ public class BmsSupplierServiceImpl extends ServiceImpl selectSupplierList(BmsSupplier bmsSupplier) { @@ -43,8 +59,17 @@ public class BmsSupplierServiceImpl extends ServiceImpl lqw4log = new LambdaQueryWrapper<>(); + lqw4log.eq(TbsBudgetLog::getMigrateFlag,0); + lqw4log.eq(TbsBudgetLog::getRollbackFlag,0); + lqw4log.eq(TbsBudgetLog::getSupplierId, supplierId); + lqw4log.eq(TbsBudgetLog::getCenterType, regionType); + lqw4log.eq(TbsBudgetLog::getCenterId, orgRegionId); + List budgetLogList = budgetLogMapper.selectList(lqw4log); + if(CollectionUtil.isNotEmpty(budgetLogList)){ + //查询符合条件的预算 + final List subjectIds = budgetLogList.stream().map(TbsBudgetLog::getSubjectId).distinct().collect(Collectors.toList()); + LambdaQueryWrapper lqwBudget = new LambdaQueryWrapper<>(); + lqwBudget.eq(TbsBudget::getCenterType,regionType); + lqwBudget.eq(TbsBudget::getCenterId, newRegionId); + lqwBudget.and(wq->{ + wq.eq(TbsBudget::getSubjectId,0).or().in(TbsBudget::getSubjectId,subjectIds); + }); + lqwBudget.orderByDesc(TbsBudget::getSubjectId); //将有科目条件的前置 + List budgetList = budgetMapper.selectList(lqwBudget); + //查询预算条件 + List conditionBudgetIds = budgetList.stream() + .filter(a->a.getConditionFlag().equals(1)) + .map(TbsBudget::getId).distinct().collect(Collectors.toList()); + Map> budgetConditionsMap = null; + if(conditionBudgetIds.size()>0){ + LambdaQueryWrapper conditionLqw = new LambdaQueryWrapper<>(); + conditionLqw.in(TbsBudgetCondition::getBudgetId,conditionBudgetIds); + List budgetConditions = budgetConditionMapper.selectList(conditionLqw); + budgetConditionsMap = budgetConditions.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId)); + } + //用于循环筛选条件 + TbsGoodsType[] goodsTypes = new TbsGoodsType[]{ + TbsGoodsType.sku, + TbsGoodsType.spu, + TbsGoodsType.series, + TbsGoodsType.category, + TbsGoodsType.brand + }; + //规则:品类条件比科目条件优先级更高 + for (TbsBudgetLog budgetLog : budgetLogList) { + //(数据结构:value=预算id列表,key=商品类型) + Map> matchConditionBudgetIdsMap = new HashMap<>(); + if(budgetConditionsMap!=null){ + for (Long budgetId : budgetConditionsMap.keySet()) { + List budgetConditions = budgetConditionsMap.get(budgetId); + String pathName = budgetLog.getTargetLevelPathNames(); + for (TbsBudgetCondition condition : budgetConditions) { + if(pathName.contains(condition.getTargetLevelPathNames())){ + List tempList = matchConditionBudgetIdsMap.get(condition.getTargetType()); + if(tempList==null){ + tempList = new ArrayList<>(); + } + tempList.add(budgetId); + matchConditionBudgetIdsMap.put(condition.getTargetType(),tempList); + break; + } + } + } + } + //记录匹配到的预算 + TbsBudget matchBudget = null; + for (TbsBudget budget : budgetList) { + if(matchBudget!=null){break;} + if(budget.getConditionFlag().equals(1)){ + for (TbsGoodsType goodsType : goodsTypes) { + if(matchBudget!=null){break;} + List tempList = matchConditionBudgetIdsMap.get(goodsType.name()); + if(CollectionUtil.isNotEmpty(tempList)){ + for (Long budgetId01 : tempList) { + if(budgetId01.equals(budget.getId())){ + matchBudget = budget; + break; + } + } + } + } + }else { + matchBudget = budget; + } + } + //todo 设置已迁移记录 + //todo 匹配条件 + } + //设置已迁移状态 + List budgetLogIds = budgetLogList.stream().map(TbsBudgetLog::getId).collect(Collectors.toList()); + TbsBudgetLog updLogParam = new TbsBudgetLog(); + updLogParam.setMigrateFlag(1); + LambdaQueryWrapper updLogLqw = new LambdaQueryWrapper<>(); + updLogLqw.in(TbsBudgetLog::getId,budgetLogIds); + budgetLogMapper.update(updLogParam,updLogLqw); + + } + } + @Override public BmsSupplier getByCode(String code,String belong) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java index 267f64eb..514f7a6f 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java @@ -182,6 +182,11 @@ public class TbsBudgetLog implements Serializable { * */ private Integer rollbackFlag; + /** + * 迁移标识:0-未迁移;1-已迁移 + * */ + private Integer migrateFlag; + /** 所属租户 */ @JsonIgnore @JsonProperty diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 075c42ed..6903d6ee 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -51,6 +51,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl