Browse Source

暂存批量导入预算审批(导出,联合测试);修复商品类目异常

v1.0
Yen 2 years ago
parent
commit
dabbaf9d80
  1. 2
      src/main/java/com/qs/serve/common/model/dto/TreeNode.java
  2. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java
  3. 4
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java
  4. 19
      src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java
  5. 17
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  6. 15
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  7. 4
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java
  8. 2
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java
  9. 66
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java
  10. 10
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java
  11. 12
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java
  12. 6
      src/main/resources/mapper/tbs/TbsBudgetMapper.xml

2
src/main/java/com/qs/serve/common/model/dto/TreeNode.java

@ -22,7 +22,7 @@ public class TreeNode {
} }
public List<TreeNode> getChildren() { public List<TreeNode> getChildren() {
if(children.size()<=0){ if(children==null||children.size()<=0){
return null; return null;
} }
return children; return children;

2
src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java

@ -19,7 +19,7 @@ public interface BmsSubjectService extends IService<BmsSubject> {
* @param throwInvalidCode 含无效编码抛出异常 * @param throwInvalidCode 含无效编码抛出异常
* @return * @return
*/ */
Map<String,BmsSubject> loadByCodes(List<String> subjectCodes,Boolean throwInvalidCode); Map<String,BmsSubject> loadByNameOrCode(List<String> subjectCodes,Boolean throwInvalidCode);
/** /**
* id加载列表 * id加载列表

4
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<BmsSubjectMapper,BmsSubject> implements BmsSubjectService { public class BmsSubjectServiceImpl extends ServiceImpl<BmsSubjectMapper,BmsSubject> implements BmsSubjectService {
@Override @Override
public Map<String, BmsSubject> loadByCodes(List<String> subjectCodes, Boolean throwInvalidCode) { public Map<String, BmsSubject> loadByNameOrCode(List<String> subjectCodes, Boolean throwInvalidCode) {
List<BmsSubject> subjectList = this.list( List<BmsSubject> subjectList = this.list(
new LambdaQueryWrapper<BmsSubject>() new LambdaQueryWrapper<BmsSubject>()
.in(BmsSubject::getSubjectCode,subjectCodes) .in(BmsSubject::getSubjectCode,subjectCodes)
.or()
.in(BmsSubject::getSubjectName,subjectCodes)
); );
if(throwInvalidCode && subjectCodes.size()>subjectList.size()){ if(throwInvalidCode && subjectCodes.size()>subjectList.size()){
for (String subjectCode : subjectCodes) { for (String subjectCode : subjectCodes) {

19
src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java

@ -39,12 +39,12 @@ public class GoodsCategoryApi {
/** /**
* 树查询 * 树查询
* @param param
* @return * @return
*/ */
@GetMapping("/tree") @GetMapping("/tree")
public R<List<GoodsCategoryTreeVo>> getTree(GoodsCategory param){ public R<List<GoodsCategoryTreeVo>> getTree(){
LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsCategory::getEnable,1);
List<GoodsCategory> list = goodsCategoryService.list(lqw); List<GoodsCategory> list = goodsCategoryService.list(lqw);
List<GoodsCategoryTreeVo> treeVoList = list.stream().map(cate->{ List<GoodsCategoryTreeVo> treeVoList = list.stream().map(cate->{
GoodsCategoryTreeVo treeNode = CopierUtil.copy(cate,new GoodsCategoryTreeVo()); GoodsCategoryTreeVo treeNode = CopierUtil.copy(cate,new GoodsCategoryTreeVo());
@ -59,14 +59,21 @@ public class GoodsCategoryApi {
//第二级为空,补充第二,三级 //第二级为空,补充第二,三级
if(CollUtil.isEmpty(treeVo.getChildren())){ if(CollUtil.isEmpty(treeVo.getChildren())){
GoodsCategoryTreeVo treeVoLv2 = CopierUtil.copy(treeVo,new GoodsCategoryTreeVo()); GoodsCategoryTreeVo treeVoLv2 = CopierUtil.copy(treeVo,new GoodsCategoryTreeVo());
treeVoLv2.getChildren().add(CopierUtil.copy(treeVo,new GoodsCategoryTreeVo())); List vo2List = new ArrayList<>();
treeVo.getChildren().add(treeVoLv2); 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 { }else {
for (TreeNode object : treeVo.getChildren()) { for (TreeNode object : treeVo.getChildren()) {
//第三级为空,补充第三级 //第三级为空,补充第三级
if(CollUtil.isEmpty(object.getChildren())){ if(CollUtil.isEmpty(object.getChildren())){
GoodsCategoryTreeVo child2 = (GoodsCategoryTreeVo)object; 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);
} }
} }
} }

17
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.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; 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.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.*; import com.qs.serve.modules.tbs.entity.bo.*;
@ -32,6 +33,7 @@ import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -53,6 +55,7 @@ public class TbsBudgetController {
private final TbsBudgetChangeService tbsBudgetChangeService; private final TbsBudgetChangeService tbsBudgetChangeService;
private final TbsBudgetConditionService tbsBudgetConditionService; private final TbsBudgetConditionService tbsBudgetConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsScheduleItemService tbsScheduleItemService;
private final SysUserService sysUserService; private final SysUserService sysUserService;
@ -77,9 +80,9 @@ public class TbsBudgetController {
* @param param * @param param
* @return * @return
*/ */
@GetMapping("/list4Export") @PostMapping("/list4Export")
@PreAuthorize("hasRole('tbs:budget:query')") @PreAuthorize("hasRole('tbs:budget:query')")
public R<List<TbsBudget>> list4Export(TbsBudgetSo param){ public R<List<TbsBudget>> list4Export(@RequestBody TbsBudgetSo param){
List<Long> budgetIds = tbsBudgetMapper.selectBudgetId(param); List<Long> budgetIds = tbsBudgetMapper.selectBudgetId(param);
if(budgetIds.size()>0){ if(budgetIds.size()>0){
List<TbsBudget> list = tbsBudgetService.listByIds(budgetIds); List<TbsBudget> list = tbsBudgetService.listByIds(budgetIds);
@ -103,7 +106,15 @@ public class TbsBudgetController {
} }
} }
budget.setBudgetConditionList(conditionList); budget.setBudgetConditionList(conditionList);
budget.setBudgetScheduleItemList(scheduleItemBudgetList); Map<String,List<TbsBudgetCondition>> 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<TbsScheduleItem> scheduleItems = tbsScheduleItemService.listByScheduleId(budget.getScheduleId());
budget.setScheduleItem(scheduleItems);
budget.setScheduleItemBudgets(scheduleItemBudgetList);
} }
return R.ok(list); return R.ok(list);
} }

15
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java

@ -159,9 +159,20 @@ public class TbsBudget implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<TbsBudgetCondition> budgetConditionList; private List<TbsBudgetCondition> budgetConditionList;
/** 预算金额 */
@TableField(exist = false) @TableField(exist = false)
private List<TbsScheduleItemBudget> 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<TbsScheduleItemBudget> scheduleItemBudgets;
@TableField(exist = false) @TableField(exist = false)
private List<?> attachList; private List<?> attachList;

4
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java

@ -45,6 +45,10 @@ public class TbsBudgetBatch implements Serializable {
@NotNull(message = "状态不能为空") @NotNull(message = "状态不能为空")
private Integer batchState; 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->新增 */ /** 预算类型 0->修改;1->新增 */
private Integer batchType; private Integer batchType;

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

@ -29,7 +29,7 @@ public class TbsBudgetBatchBo {
private String scheduleName; private String scheduleName;
/** 科目编码 */ /** 科目编码 */
private String subjectCode; private String subjectName;
/** 成本中心类型: /** 成本中心类型:
* center, * center,

66
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java

@ -1,17 +1,25 @@
package com.qs.serve.modules.tbs.service.impl; 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.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.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.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst; 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.TbsBudgetBatch;
import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem; import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchItemService; import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchService; import com.qs.serve.modules.tbs.service.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
@ -26,6 +34,22 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
private final TbsBudgetBatchService budgetBatchService; private final TbsBudgetBatchService budgetBatchService;
private final TbsBudgetBatchItemService budgetBatchItemService; 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 @Override
public String getTemplateCode() { public String getTemplateCode() {
@ -43,8 +67,8 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
@Override @Override
public Object doBacked(TbsAffairCommitBo param) { public Object doBacked(TbsAffairCommitBo param) {
//业务待定 //业务待定,暂当拒绝
return null; return doRefuse(param);
} }
@Override @Override
@ -52,17 +76,45 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId());
List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId());
for (TbsBudgetBatchItem batchItem : budgetBatchItemList) { 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; return null;
} }
@Override @Override
public Object doRefuse(TbsAffairCommitBo param) { public Object doRefuse(TbsAffairCommitBo param) {
TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId());
List<TbsBudgetBatchItem> 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.setBatchState(TbsBudgetCheckState.State_4_stop);
//退回草稿 budgetBatch.setFinishedTime(LocalDateTime.now());
budgetBatchService.updateById(budgetBatch);
return null; return null;
} }

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

@ -421,8 +421,8 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
newBudget.setBudgetNumber(paramItem.getBudgetNumber()); newBudget.setBudgetNumber(paramItem.getBudgetNumber());
newBudget.setBudgetState(0); newBudget.setBudgetState(0);
newBudget.setBudgetCheckState(TbsBudgetCheckState.State_1_apply); newBudget.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
if(StringUtils.hasText(paramItem.getSubjectCode())){ if(StringUtils.hasText(paramItem.getSubjectName())){
BmsSubject bmsSubject = subjectMap.get(paramItem.getSubjectCode()); BmsSubject bmsSubject = subjectMap.get(paramItem.getSubjectName());
if(bmsSubject==null){ if(bmsSubject==null){
} }
@ -526,10 +526,10 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
* @return * @return
*/ */
private Map<String,BmsSubject> loadSubjectMapWithFilterInvalid(TbsBudgetBatchBo param){ private Map<String,BmsSubject> loadSubjectMapWithFilterInvalid(TbsBudgetBatchBo param){
List<String> subjectCodes = param.getBudgetList().stream().filter(a->a.getSubjectCode()!=null) List<String> subjectCodes = param.getBudgetList().stream().filter(a->a.getSubjectName()!=null)
.map(TbsBudgetBatchBo.BudgetMain::getSubjectCode) .map(TbsBudgetBatchBo.BudgetMain::getSubjectName)
.collect(Collectors.toList()); .collect(Collectors.toList());
return bmsSubjectService.loadByCodes(subjectCodes,true); return bmsSubjectService.loadByNameOrCode(subjectCodes,true);
} }
} }

12
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java

@ -79,7 +79,16 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
@Override @Override
public Object doFinished(TbsAffairCommitBo param) { 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)){ if(budgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){
budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_2_finished); budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_2_finished);
budgetChangeMapper.updateById(budgetChange); budgetChangeMapper.updateById(budgetChange);
@ -119,7 +128,6 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
} }
} }
} }
return null;
} }
/** /**

6
src/main/resources/mapper/tbs/TbsBudgetMapper.xml

@ -73,6 +73,12 @@
FROM `tbs_budget` `tbs_budget` FROM `tbs_budget` `tbs_budget`
LEFT JOIN `tbs_budget_condition` `tbs_budget_condition` ON `tbs_budget`.`id` = `tbs_budget_condition`.`budget_id` LEFT JOIN `tbs_budget_condition` `tbs_budget_condition` ON `tbs_budget`.`id` = `tbs_budget_condition`.`budget_id`
<where> <where>
<if test="query.selectIdList!=null and query.selectIdList.size > 0">
and `tbs_budget`.`id` in
<foreach collection="query.selectIdList" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="query.budgetNumber !=null "> and `tbs_budget`.`budget_number` like concat('%',#{query.budgetNumber},'%')</if> <if test="query.budgetNumber !=null "> and `tbs_budget`.`budget_number` like concat('%',#{query.budgetNumber},'%')</if>
<if test="query.budgetState !=null "> and `tbs_budget`.`budget_state` = #{query.budgetState}</if> <if test="query.budgetState !=null "> and `tbs_budget`.`budget_state` = #{query.budgetState}</if>
<if test="query.budgetCode != null and query.budgetCode != ''"> and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%')</if> <if test="query.budgetCode != null and query.budgetCode != ''"> and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%')</if>

Loading…
Cancel
Save