diff --git a/src/main/java/com/qs/serve/common/model/dto/TreeNode.java b/src/main/java/com/qs/serve/common/model/dto/TreeNode.java index 84174cb5..817b8b58 100644 --- a/src/main/java/com/qs/serve/common/model/dto/TreeNode.java +++ b/src/main/java/com/qs/serve/common/model/dto/TreeNode.java @@ -22,7 +22,7 @@ public class TreeNode { } public List getChildren() { - if(children.size()<=0){ + if(children==null||children.size()<=0){ return null; } return children; diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java index 61913635..edd03d77 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java @@ -19,7 +19,7 @@ public interface BmsSubjectService extends IService { * @param throwInvalidCode 含无效编码抛出异常 * @return */ - Map loadByCodes(List subjectCodes,Boolean throwInvalidCode); + Map loadByNameOrCode(List subjectCodes,Boolean throwInvalidCode); /** * id加载列表 diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java index 6189e3c7..f5f18e0a 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java @@ -29,10 +29,12 @@ import java.util.stream.Collectors; public class BmsSubjectServiceImpl extends ServiceImpl implements BmsSubjectService { @Override - public Map loadByCodes(List subjectCodes, Boolean throwInvalidCode) { + public Map loadByNameOrCode(List subjectCodes, Boolean throwInvalidCode) { List subjectList = this.list( new LambdaQueryWrapper() .in(BmsSubject::getSubjectCode,subjectCodes) + .or() + .in(BmsSubject::getSubjectName,subjectCodes) ); if(throwInvalidCode && subjectCodes.size()>subjectList.size()){ for (String subjectCode : subjectCodes) { diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java index dbc0dcb4..7d12af4d 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java @@ -39,12 +39,12 @@ public class GoodsCategoryApi { /** * 树查询 - * @param param * @return */ @GetMapping("/tree") - public R> getTree(GoodsCategory param){ - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + public R> getTree(){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsCategory::getEnable,1); List list = goodsCategoryService.list(lqw); List treeVoList = list.stream().map(cate->{ GoodsCategoryTreeVo treeNode = CopierUtil.copy(cate,new GoodsCategoryTreeVo()); @@ -59,14 +59,21 @@ public class GoodsCategoryApi { //第二级为空,补充第二,三级 if(CollUtil.isEmpty(treeVo.getChildren())){ GoodsCategoryTreeVo treeVoLv2 = CopierUtil.copy(treeVo,new GoodsCategoryTreeVo()); - treeVoLv2.getChildren().add(CopierUtil.copy(treeVo,new GoodsCategoryTreeVo())); - treeVo.getChildren().add(treeVoLv2); + List vo2List = new ArrayList<>(); + vo2List.add(CopierUtil.copy(treeVo,new GoodsCategoryTreeVo())); + treeVoLv2.setChildren(vo2List); + + List voList = new ArrayList<>(); + voList.add(CopierUtil.copy(treeVoLv2,new GoodsCategoryTreeVo())); + treeVo.setChildren(voList); }else { for (TreeNode object : treeVo.getChildren()) { //第三级为空,补充第三级 if(CollUtil.isEmpty(object.getChildren())){ GoodsCategoryTreeVo child2 = (GoodsCategoryTreeVo)object; - treeVo.getChildren().add(CopierUtil.copy(child2,new GoodsCategoryTreeVo())); + List voList = new ArrayList<>(); + voList.add(CopierUtil.copy(child2,new GoodsCategoryTreeVo())); + treeVo.setChildren(voList); } } } 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 2d10d90d..7624ebd8 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 @@ -12,6 +12,7 @@ import com.qs.serve.common.util.*; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; +import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.bo.*; @@ -32,6 +33,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -53,6 +55,7 @@ public class TbsBudgetController { private final TbsBudgetChangeService tbsBudgetChangeService; private final TbsBudgetConditionService tbsBudgetConditionService; private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; + private final TbsScheduleItemService tbsScheduleItemService; private final SysUserService sysUserService; @@ -77,9 +80,9 @@ public class TbsBudgetController { * @param param * @return */ - @GetMapping("/list4Export") + @PostMapping("/list4Export") @PreAuthorize("hasRole('tbs:budget:query')") - public R> list4Export(TbsBudgetSo param){ + public R> list4Export(@RequestBody TbsBudgetSo param){ List budgetIds = tbsBudgetMapper.selectBudgetId(param); if(budgetIds.size()>0){ List list = tbsBudgetService.listByIds(budgetIds); @@ -103,7 +106,15 @@ public class TbsBudgetController { } } budget.setBudgetConditionList(conditionList); - budget.setBudgetScheduleItemList(scheduleItemBudgetList); + Map> map = conditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType)); + budget.setBrandConditions(map.get(TbsGoodsType.brand.name())); + budget.setCategoryConditions(map.get(TbsGoodsType.category.name())); + budget.setSeriesConditions(map.get(TbsGoodsType.series.name())); + budget.setSkuConditions(map.get(TbsGoodsType.sku.name())); + budget.setSpuConditions(map.get(TbsGoodsType.spu.name())); + List scheduleItems = tbsScheduleItemService.listByScheduleId(budget.getScheduleId()); + budget.setScheduleItem(scheduleItems); + budget.setScheduleItemBudgets(scheduleItemBudgetList); } return R.ok(list); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index 6db07405..f3f07b03 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -159,9 +159,20 @@ public class TbsBudget implements Serializable { @TableField(exist = false) private List budgetConditionList; - /** 预算金额 */ @TableField(exist = false) - private List budgetScheduleItemList; + private List brandConditions; + @TableField(exist = false) + private List categoryConditions; + @TableField(exist = false) + private List seriesConditions; + @TableField(exist = false) + private List skuConditions; + @TableField(exist = false) + private List spuConditions; + @TableField(exist = false) + private List scheduleItem; + @TableField(exist = false) + private List scheduleItemBudgets; @TableField(exist = false) private List attachList; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java index 46895427..22713aa8 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java @@ -45,6 +45,10 @@ public class TbsBudgetBatch implements Serializable { @NotNull(message = "状态不能为空") private Integer batchState; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime finishedTime; + /** 预算类型 0->修改;1->新增 */ private Integer batchType; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java index 4a313c5d..a1743710 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java @@ -29,7 +29,7 @@ public class TbsBudgetBatchBo { private String scheduleName; /** 科目编码 */ - private String subjectCode; + private String subjectName; /** 成本中心类型: * center, diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java index 2f616f00..7114bf22 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java @@ -1,17 +1,25 @@ package com.qs.serve.modules.tbs.service.impl; +import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.util.Assert; +import com.qs.serve.modules.bms.service.BmsSubjectService; +import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.seeyon.service.SeeYonOperationService; +import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; +import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsBudgetBatch; import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; -import com.qs.serve.modules.tbs.service.TbsBudgetBatchItemService; -import com.qs.serve.modules.tbs.service.TbsBudgetBatchService; +import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; +import com.qs.serve.modules.tbs.service.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; import java.util.List; /** @@ -26,6 +34,22 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic private final TbsBudgetBatchService budgetBatchService; private final TbsBudgetBatchItemService budgetBatchItemService; + private final SysUserService sysUserService; + private final SeeYonRequestService seeYonService; + private final ProjectProperties projectProperties; + private final TbsBudgetService tbsBudgetService; + private final TbsBudgetConditionService tbsBudgetConditionService; + private final BmsSubjectService bmsSubjectService; + private final TbsCenterDtoService tbsCenterDtoService; + private final TbsScheduleService tbsScheduleService; + private final TbsScheduleItemService tbsScheduleItemService; + private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService; + private final GoodsCategoryService goodsCategoryService; + private final TbsBudgetChangeService tbsBudgetChangeService; + private final TbsBudgetChangeConditionService tbsBudgetChangeConditionService; + private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; + private final TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService; + private final TbsBudgetChangeOperationServiceImpl changeOperationService; @Override public String getTemplateCode() { @@ -43,8 +67,8 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic @Override public Object doBacked(TbsAffairCommitBo param) { - //业务待定 - return null; + //业务待定,暂当拒绝 + return doRefuse(param); } @Override @@ -52,17 +76,45 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); List budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); for (TbsBudgetBatchItem batchItem : budgetBatchItemList) { - + if(batchItem.getChangeId()==null){ + //预算申请 + tbsBudgetService.startBudget(batchItem.getBudgetId()); + }else { + //预算修改 + changeOperationService.dofinishedAction(batchItem.getChangeId().toString()); + } + batchItem.setBatchState(TbsBudgetCheckState.State_2_finished); + budgetBatchItemService.updateById(batchItem); } + budgetBatch.setBatchState(TbsBudgetCheckState.State_2_finished); + budgetBatch.setFinishedTime(LocalDateTime.now()); + budgetBatchService.updateById(budgetBatch); return null; } @Override public Object doRefuse(TbsAffairCommitBo param) { TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); + List budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); + for (TbsBudgetBatchItem batchItem : budgetBatchItemList) { + if(batchItem.getChangeId()==null){ + //预算申请 + TbsBudget budget = new TbsBudget(); + budget.setId(batchItem.getBudgetId()); + budget.setBudgetCheckState(TbsBudgetCheckState.State_0_unPublish); + tbsBudgetService.updateById(budget); + }else { + //预算修改 + TbsAffairCommitBo commitBo = new TbsAffairCommitBo(); + commitBo.setTargetId(batchItem.getChangeId()+""); + changeOperationService.doBacked(commitBo); + } + batchItem.setBatchState(TbsBudgetCheckState.State_4_stop); + budgetBatchItemService.updateById(batchItem); + } budgetBatch.setBatchState(TbsBudgetCheckState.State_4_stop); - //退回草稿 - + budgetBatch.setFinishedTime(LocalDateTime.now()); + budgetBatchService.updateById(budgetBatch); return null; } 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 52fe5c3c..773b52cb 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 @@ -421,8 +421,8 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl loadSubjectMapWithFilterInvalid(TbsBudgetBatchBo param){ - List subjectCodes = param.getBudgetList().stream().filter(a->a.getSubjectCode()!=null) - .map(TbsBudgetBatchBo.BudgetMain::getSubjectCode) + List subjectCodes = param.getBudgetList().stream().filter(a->a.getSubjectName()!=null) + .map(TbsBudgetBatchBo.BudgetMain::getSubjectName) .collect(Collectors.toList()); - return bmsSubjectService.loadByCodes(subjectCodes,true); + return bmsSubjectService.loadByNameOrCode(subjectCodes,true); } } 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 ace0ca98..f7083721 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 @@ -79,13 +79,22 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi @Override public Object doFinished(TbsAffairCommitBo param) { - TbsBudgetChange budgetChange = budgetChangeMapper.selectById(param.getTargetId()); + dofinishedAction(param.getTargetId()); + return null; + } + + /** + * 执行完成回调 + * @param changeId + */ + public void dofinishedAction(String changeId) { + TbsBudgetChange budgetChange = budgetChangeMapper.selectById(changeId); if(budgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_2_finished); budgetChangeMapper.updateById(budgetChange); } TbsBudget tbsBudget = budgetMapper.selectById(budgetChange.getBudgetId()); - if(budgetChange.getNewAttachIds()!=null&&budgetChange.getNewAttachIds().length>0){ + if(budgetChange.getNewAttachIds()!=null&& budgetChange.getNewAttachIds().length>0){ tbsBudget.setAttachIds(budgetChange.getNewAttachIds()); budgetMapper.updateById(tbsBudget); } @@ -119,7 +128,6 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi } } } - return null; } /** diff --git a/src/main/resources/mapper/tbs/TbsBudgetMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetMapper.xml index dc9545e4..84137fc6 100644 --- a/src/main/resources/mapper/tbs/TbsBudgetMapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudgetMapper.xml @@ -73,6 +73,12 @@ FROM `tbs_budget` `tbs_budget` LEFT JOIN `tbs_budget_condition` `tbs_budget_condition` ON `tbs_budget`.`id` = `tbs_budget_condition`.`budget_id` + + and `tbs_budget`.`id` in + + #{selectId} + + and `tbs_budget`.`budget_number` like concat('%',#{query.budgetNumber},'%') and `tbs_budget`.`budget_state` = #{query.budgetState} and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%')