Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
8af93bc246
  1. 2
      src/main/java/com/qs/serve/common/model/dto/TreeNode.java
  2. 1
      src/main/java/com/qs/serve/modules/bms/service/BmsCostCenterService.java
  3. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsRegion2Service.java
  4. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java
  5. 9
      src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java
  6. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java
  7. 10
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsCostCenterServiceImpl.java
  8. 9
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java
  9. 7
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java
  10. 25
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java
  11. 7
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java
  12. 19
      src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java
  13. 54
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  14. 17
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  15. 4
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetBatch.java
  16. 23
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java
  17. 59
      src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java
  18. 68
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java
  19. 466
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java
  20. 14
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java
  21. 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() {
if(children.size()<=0){
if(children==null||children.size()<=0){
return null;
}
return children;

1
src/main/java/com/qs/serve/modules/bms/service/BmsCostCenterService.java

@ -19,6 +19,7 @@ public interface BmsCostCenterService extends IService<BmsCostCenter> {
BmsCostCenter getByCode(String code);
BmsCostCenter getByName(String name);
BmsCostCenter getByNameOrCode(String value);
List<BmsCostCenter> listChild(Long pid);
}

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

@ -22,6 +22,8 @@ public interface BmsRegion2Service extends IService<BmsRegion2> {
BmsRegion2 getByCode(String code);
BmsRegion2 getByName(String name,Integer level);
BmsRegion2 getByNameOrCode(String value);
// void flushLevel(BmsRegion2 param);
void flushAllLevel(boolean batchUpdate);

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

@ -26,6 +26,8 @@ public interface BmsRegionService extends IService<BmsRegion> {
BmsRegion getByName(String name,Integer level);
BmsRegion getByNameOrCode(String value);
void flushAllLevel(boolean batchUpdate);
boolean saveBmsRegion(BmsRegion param);

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

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsSubject;
import java.util.List;
import java.util.Map;
/**
* 科目 服务接口
@ -12,6 +13,14 @@ import java.util.List;
*/
public interface BmsSubjectService extends IService<BmsSubject> {
/**
* 加载编码
* @param subjectCodes
* @param throwInvalidCode 含无效编码抛出异常
* @return
*/
Map<String,BmsSubject> loadByNameOrCode(List<String> subjectCodes,Boolean throwInvalidCode);
/**
* id加载列表
* @param ids

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

@ -22,6 +22,8 @@ public interface BmsSupplierService extends IService<BmsSupplier> {
BmsSupplier getByName(String String);
BmsSupplier getByNameOrCode(String value);
List<BmsSupplier> listChild(String pid);
List<BmsSupplier> listChildByPathIds(String pathIds);

10
src/main/java/com/qs/serve/modules/bms/service/impl/BmsCostCenterServiceImpl.java

@ -40,6 +40,16 @@ public class BmsCostCenterServiceImpl extends ServiceImpl<BmsCostCenterMapper,Bm
lqw.eq(BmsCostCenter::getName,name);
return this.getOne(lqw,true);
}
@Override
public BmsCostCenter getByNameOrCode(String value) {
return this.getOne(new LambdaQueryWrapper<BmsCostCenter>()
.eq(BmsCostCenter::getName,value)
.or()
.eq(BmsCostCenter::getCode,value)
,true);
}
@Override
public List<BmsCostCenter> listChild(Long pid) {
LambdaQueryWrapper<BmsCostCenter> lqw = new LambdaQueryWrapper<>();

9
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java

@ -180,6 +180,15 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
return this.getOne(lqw,true);
}
@Override
public BmsRegion2 getByNameOrCode(String value) {
LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegion2::getName,value)
.or()
.eq(BmsRegion2::getCode,value);
return this.getOne(lqw,true);
}
public BmsRegion2 toSetLevel(BmsRegion2 param) {
if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0")){
BmsRegion2 parent = this.getById(param.getPid());

7
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java

@ -197,6 +197,13 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
return this.getOne(lqw,true);
}
@Override
public BmsRegion getByNameOrCode(String value) {
LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegion::getName,value).or().eq(BmsRegion::getCode,value);
return this.getOne(lqw,true);
}
public BmsRegion flushSetLevel(BmsRegion param) {
if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0") ){
BmsRegion parent = this.getById(param.getPid());

25
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java

@ -12,7 +12,9 @@ import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.mapper.BmsSubjectMapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collector;
import java.util.stream.Collectors;
@ -26,6 +28,29 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class BmsSubjectServiceImpl extends ServiceImpl<BmsSubjectMapper,BmsSubject> implements BmsSubjectService {
@Override
public Map<String, BmsSubject> loadByNameOrCode(List<String> subjectCodes, Boolean throwInvalidCode) {
List<BmsSubject> subjectList = this.list(
new LambdaQueryWrapper<BmsSubject>()
.in(BmsSubject::getSubjectCode,subjectCodes)
.or()
.in(BmsSubject::getSubjectName,subjectCodes)
);
if(throwInvalidCode && subjectCodes.size()>subjectList.size()){
for (String subjectCode : subjectCodes) {
boolean exist = subjectList.stream().anyMatch(a->a.getSubjectCode().equals(subjectCode));
if(!exist){
Assert.throwEx("无效的科目编码:"+subjectCode);
}
}
}
Map<String,BmsSubject> subjectMap = new HashMap<>();
for (BmsSubject subject : subjectList) {
subjectMap.put(subject.getSubjectCode(),subject);
}
return subjectMap;
}
@Override
public List<BmsSubject> listByIds(List<Long> ids, List<Long> noInIds) {
LambdaQueryWrapper<BmsSubject> lqw = new LambdaQueryWrapper<>();

7
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java

@ -120,6 +120,13 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
return this.getOne(lqw,true);
}
@Override
public BmsSupplier getByNameOrCode(String value) {
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplier::getName,value).or().eq(BmsSupplier::getCode,value);
return this.getOne(lqw,true);
}
@Override
public List<BmsSupplier> listChild(String pid) {
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>();

19
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<List<GoodsCategoryTreeVo>> getTree(GoodsCategory param){
LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>(param);
public R<List<GoodsCategoryTreeVo>> getTree(){
LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsCategory::getEnable,1);
List<GoodsCategory> list = goodsCategoryService.list(lqw);
List<GoodsCategoryTreeVo> 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);
}
}
}

54
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java

@ -12,11 +12,14 @@ 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.*;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper;
import com.qs.serve.modules.tbs.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -30,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;
/**
@ -49,8 +53,12 @@ public class TbsBudgetController {
private final TbsBudgetLogService tbsBudgetLogService;
private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
private final TbsBudgetChangeService tbsBudgetChangeService;
private final TbsBudgetConditionService tbsBudgetConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsScheduleItemService tbsScheduleItemService;
private final SysUserService sysUserService;
/**
* 列表
* @param param
@ -67,6 +75,52 @@ public class TbsBudgetController {
return R.ok();
}
/**
* 导出
* @param param
* @return
*/
@PostMapping("/list4Export")
@PreAuthorize("hasRole('tbs:budget:query')")
public R<List<TbsBudget>> list4Export(@RequestBody TbsBudgetSo param){
List<Long> budgetIds = tbsBudgetMapper.selectBudgetId(param);
if(budgetIds.size()>0){
List<TbsBudget> list = tbsBudgetService.listByIds(budgetIds);
for (TbsBudget budget : list) {
List<TbsBudgetCondition> conditionList = tbsBudgetConditionService
.list(new LambdaQueryWrapper<TbsBudgetCondition>()
.eq(TbsBudgetCondition::getBudgetId, budget.getId()));
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetService
.list(new LambdaQueryWrapper<TbsScheduleItemBudget>()
.eq(TbsScheduleItemBudget::getBudgetId, budget.getId()));
List<Long> scheduleItemBudgetIds = scheduleItemBudgetList.stream()
.map(TbsScheduleItemBudget::getId).collect(Collectors.toList());
//实际发布预算
List<TbsBudgetLogWithAmount> budgetLogWithAmountList = tbsScheduleItemBudgetMapper.getAllByScheduleItemIdList(scheduleItemBudgetIds);
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) {
for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) {
if (itemBudget.getId().equals(withAmount.getId())){
itemBudget.setBudgetAmount(withAmount.getAmt());
break;
}
}
}
budget.setBudgetConditionList(conditionList);
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();
}
/**
* 列表通过IDS查询
* @apiNote 用于加载模板选中的预算

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

@ -155,10 +155,25 @@ public class TbsBudget implements Serializable {
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] attachIds;
/** 后端传输dto */
/** 预算条件 */
@TableField(exist = false)
private List<TbsBudgetCondition> budgetConditionList;
@TableField(exist = false)
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)
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 = "状态不能为空")
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;

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

@ -3,6 +3,7 @@ package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
/**
* @author YenHex
@ -19,15 +20,23 @@ public class TbsBudgetBatchBo {
@Data
public static class BudgetMain{
/** 更新时必填 */
private String budgetCode;
/** 预算编码,更新时必填 */
private String budgetNumber;
/** 预算名称 */
private String budgetName;
private String scheduleName;
/** 科目编码 */
private String subjectCode;
/** 成本中心类型 */
private String subjectName;
/** 成本中心类型:
* center,
* customer,
* bizRegion,
* saleRegion,
**/
@NotNull
private String centerType;
@ -54,7 +63,11 @@ public class TbsBudgetBatchBo {
@Data
public static class BudgetAmount{
private String scheduleItemName;
private BigDecimal budgetAmount;
private BigDecimal preDispatchAmount;
}

59
src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java

@ -52,6 +52,65 @@ public class TbsCenterDtoService {
return null;
}
public TbsCenterDto getCenterDtoByName(String centerType,String centerNameOrCode,Boolean throwNull){
if(!StringUtils.hasText(centerNameOrCode)){
return null;
}
if(centerType.equals(TbsCenterType.center.name())){
BmsCostCenter costCenter = costCenterService.getByNameOrCode(centerNameOrCode);
if(costCenter==null){
if(throwNull) {
Assert.throwEx("无效的成本中心信息:"+centerNameOrCode);
}
return null;
}
return new TbsCenterDto(costCenter.getId()+"" ,costCenter.getCode(),costCenter.getName(),centerType);
}else if (centerType.equals(TbsCenterType.customer.name())){
BmsSupplier supplier4Center = null;
if(StringUtils.hasText(centerNameOrCode)){
String belong = null;
if(centerNameOrCode.contains("JSB")){
centerNameOrCode = centerNameOrCode.replace("JSB","");
belong = "JSB";
}else if(centerNameOrCode.contains("JSL")){
centerNameOrCode = centerNameOrCode.replace("JSL","");
belong = "JSL";
}
supplier4Center = supplierService.getByNameOrCode(centerNameOrCode);
}else {
supplier4Center = supplierService.getByNameOrCode(centerNameOrCode);
}
if(supplier4Center==null){
if(throwNull) {
Assert.throwEx("无效的成本中心信息:"+centerNameOrCode);
}
return null;
}
return new TbsCenterDto(supplier4Center.getId(),supplier4Center.getCode(),supplier4Center.getName(),centerType);
}else if(centerType.equals(TbsCenterType.saleRegion.name())){
BmsRegion saleRegion = saleRegionService.getByNameOrCode(centerNameOrCode);
if(saleRegion==null){
if(throwNull) {
Assert.throwEx("无效的成本中心信息:"+centerNameOrCode);
}
return null;
}
return new TbsCenterDto(saleRegion.getId(),saleRegion.getCode(),saleRegion.getName(),centerType);
}else if (centerType.equals(TbsCenterType.bizRegion.name())){
BmsRegion2 bizRegion = bizRegionService.getByNameOrCode(centerNameOrCode);
if(bizRegion==null){
if(throwNull) {
Assert.throwEx("无效的成本中心信息:"+centerNameOrCode);
}
return null;
}
return new TbsCenterDto(bizRegion.getId(),bizRegion.getCode(),bizRegion.getName(),centerType);
}
Assert.throwEx("无法匹配成本中心类型:"+centerType);
return null;
}
/**
* 获取成本中心
* @param centerType

68
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,24 +67,54 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
@Override
public Object doBacked(TbsAffairCommitBo param) {
//业务待定
return null;
//业务待定,暂当拒绝
return doRefuse(param);
}
@Override
public Object doFinished(TbsAffairCommitBo param) {
TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId());
List<TbsBudgetBatchItem> 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<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.setFinishedTime(LocalDateTime.now());
budgetBatchService.updateById(budgetBatch);
return null;
}

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

@ -1,5 +1,7 @@
package com.qs.serve.modules.tbs.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectProperties;
import com.qs.serve.common.framework.manager.AsyncFactory;
@ -7,27 +9,37 @@ import com.qs.serve.common.framework.manager.AsyncManager;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.*;
import com.qs.serve.common.util.model.DateFormatString;
import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.goods.common.GoodsType;
import com.qs.serve.modules.goods.entity.GoodsCategory;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.dto.TbsCenterDto;
import com.qs.serve.modules.goods.service.GoodsCategoryService;
import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo;
import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
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.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBatchBo;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount;
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.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.tbs.entity.TbsBudgetBatch;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchService;
import com.qs.serve.modules.tbs.mapper.TbsBudgetBatchMapper;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* 批量申请 服务实现类
@ -42,32 +54,31 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
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 TbsBudgetBatchItemService tbsBudgetBatchItemService;
@Override
@Transactional(rollbackFor = Exception.class)
public Object commit(TbsBudgetBatchBo param) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
String batchCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetBatch);
String templateCode = TbsSeeYonConst.BudgetBatchApplyConf.Code();
//构建Batch
TbsBudgetBatch budgetBatch = new TbsBudgetBatch();
budgetBatch.setBatchTitle(sysUser.getName()+"发起了批量导入预算");
budgetBatch.setBatchCode(batchCode);
budgetBatch.setBatchState(TbsBudgetCheckState.State_0_unPublish);
//budgetBatch.setSyFormId();
budgetBatch.setUserId(sysUser.getId());
budgetBatch.setUserCode(sysUser.getCode());
budgetBatch.setUserName(sysUser.getName());
budgetBatch.setSubmitTime(LocalDateTime.now());
budgetBatch.setRemark(param.getRemark());
TbsBudgetBatch budgetBatch = buildBatchData(param, batchCode, sysUser);
//保存后赋值
Long budgetBatchId = budgetBatch.getId();
//新增的生成为草稿
//修改的生成为更变记录
//构建BatchItems
List<TbsBudgetBatchItem> batchItems = new ArrayList<>();
Map<String,Object> data = new HashMap<>();
data.put("exsp5", batchCode);
@ -112,5 +123,414 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
AsyncManager.me().execute(AsyncFactory.submitBudgetBatch(budgetBatchId+""));
return budgetBatch;
}
public TbsBudgetBatch buildBatchData(TbsBudgetBatchBo param,String batchCode,SysUser sysUser){
List<TbsBudgetBatchBo.BudgetMain> paramBudgetList = param.getBudgetList();
TbsBudgetBatch budgetBatch = new TbsBudgetBatch();
budgetBatch.setBatchTitle(sysUser.getName()+"发起了批量导入预算");
budgetBatch.setBatchCode(batchCode);
budgetBatch.setBatchState(TbsBudgetCheckState.State_0_unPublish);
//budgetBatch.setSyFormId();
budgetBatch.setUserId(sysUser.getId());
budgetBatch.setUserCode(sysUser.getCode());
budgetBatch.setUserName(sysUser.getName());
budgetBatch.setSubmitTime(LocalDateTime.now());
budgetBatch.setRemark(param.getRemark());
//构建BatchItems
List<TbsBudgetBatchItem> batchItems = new ArrayList<>();
//加载 周期信息
List<String> scheduleNames = paramBudgetList.stream()
.map(TbsBudgetBatchBo.BudgetMain::getScheduleName).distinct().collect(Collectors.toList());
Map<String,TbsSchedule> scheduleMap = loadScheduleMap(scheduleNames);
//加载 科目
Map<String,BmsSubject> subjectMap = loadSubjectMapWithFilterInvalid(param);
//加载 成本中心
Map<String,TbsCenterDto> centerDtoMap = new HashMap<>();
for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) {
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDtoByName(budgetMain.getCenterType(),budgetMain.getCenterName(),true);
//key=> budgetMain.getCenterType()+"_&_"+budgetMain.getCenterName()
centerDtoMap.put(budgetMain.getCenterType()+"_&_"+budgetMain.getCenterName(),centerDto);
}
//加载 品类
Map<String,GoodsCategory> categoryMap = loadGoodsCategoryMap(paramBudgetList);
//修改的生成为更变记录
List<TbsBudgetBatchBo.BudgetMain> updBudgetList = paramBudgetList.stream()
.filter(a->StringUtils.hasText(a.getBudgetNumber())).collect(Collectors.toList());
if(updBudgetList.size()>0){
List<String> budgetNumbers = updBudgetList.stream()
.map(TbsBudgetBatchBo.BudgetMain::getBudgetNumber).collect(Collectors.toList());
List<TbsBudget> budgetList = tbsBudgetService.list(
new LambdaQueryWrapper<TbsBudget>().in(
TbsBudget::getBudgetNumber,budgetNumbers
)
);
for (TbsBudget budget : budgetList) {
if(budget.getBudgetCheckState()==TbsBudgetCheckState.State_1_apply){
Assert.throwEx("预算["+budget.getBudgetCode()+"]审批中,无法导入修改");
}
}
for (TbsBudget budget : budgetList) {
TbsBudgetBatchBo.BudgetMain paramItem = null;
for (TbsBudgetBatchBo.BudgetMain budgetMain : updBudgetList) {
if(budgetMain.getBudgetNumber().equals(budget.getBudgetNumber())){
paramItem = budgetMain;
break;
}
}
final Long budgetId = budget.getId();
if(budget.getBudgetState().equals(1)){
//适配更变记录
TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget);
budgetChange.setChangeCode("BU"+CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetChange));
budgetChange.setUserId(sysUser.getId());
budgetChange.setUserCode(sysUser.getCode());
budgetChange.setUserName(sysUser.getName());
budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
boolean notChangeTitle = paramItem.getBudgetName()!=null&& paramItem.getBudgetName().equals(budget.getBudgetCode());
if(!notChangeTitle){
budgetChange.setNewBudgetTitle(paramItem.getBudgetName());
}
tbsBudgetChangeService.save(budgetChange);
Long changeId = budgetChange.getId();
//添加品类条件
this.toSaveChangeCondition(categoryMap, budget, paramItem, budgetId, changeId);
List<TbsBudgetChangeScheduleItem> changeScheduleItemList = new ArrayList<>();
this.buildChangeSchduleBudgetList(paramItem, budgetId, changeId, changeScheduleItemList);
if(CollUtil.isNotEmpty(changeScheduleItemList)){
tbsBudgetChangeScheduleItemService.saveBatch(changeScheduleItemList);
}
TbsBudgetBatchItem batchItem = new TbsBudgetBatchItem();
batchItem.setBudgetId(budgetId);
batchItem.setChangeId(changeId);
batchItem.setBatchState(TbsBudgetCheckState.State_1_apply);
batchItem.setUserId(sysUser.getId());
batchItem.setUserCode(sysUser.getCode());
batchItem.setUserName(sysUser.getName());
batchItems.add(batchItem);
}else {
//修改后为新增类型提交
this.toUpdateBudgetInfo(sysUser, scheduleMap, subjectMap, centerDtoMap, categoryMap, paramItem, budgetId);
TbsBudgetBatchItem batchItem = new TbsBudgetBatchItem();
batchItem.setBudgetId(budgetId);
batchItem.setBatchState(TbsBudgetCheckState.State_1_apply);
batchItem.setUserId(sysUser.getId());
batchItem.setUserCode(sysUser.getCode());
batchItem.setUserName(sysUser.getName());
batchItems.add(batchItem);
}
}
}
//新增的生成为草稿
List<TbsBudgetBatchBo.BudgetMain> addBudgetList = paramBudgetList.stream()
.filter(a->!StringUtils.hasText(a.getBudgetNumber())).collect(Collectors.toList());
for (TbsBudgetBatchBo.BudgetMain budgetMain : addBudgetList) {
TbsBudget newBudget = new TbsBudget();
tbsBudgetService.save(newBudget);
Long budgetId = newBudget.getId();
TbsSchedule schedule = scheduleMap.get(budgetMain.getScheduleName());
this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, budgetMain, newBudget);
//创建新条件
List<TbsBudgetCondition> conditionList = this.createTbsBudgetConditions(categoryMap, budgetMain, budgetId);
//创建新预算周期
List<TbsScheduleItemBudget> scheduleItemBudgetList = this.createTbsScheduleItemBudgetList(budgetMain, budgetId, schedule);
//数据持久化
if(CollectionUtil.isNotEmpty(conditionList)){
tbsBudgetConditionService.saveBatch(conditionList);
}
tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList);
TbsBudgetBatchItem batchItem = new TbsBudgetBatchItem();
batchItem.setBudgetId(budgetId);
batchItem.setBatchState(TbsBudgetCheckState.State_1_apply);
batchItem.setUserId(sysUser.getId());
batchItem.setUserCode(sysUser.getCode());
batchItem.setUserName(sysUser.getName());
batchItems.add(batchItem);
}
this.save(budgetBatch);
//保存后赋值
Long batchId = budgetBatch.getId();
batchItems.forEach(batchItem->batchItem.setBatchId(batchId));
tbsBudgetBatchItemService.saveBatch(batchItems);
return budgetBatch;
}
private void toUpdateBudgetInfo(SysUser sysUser, Map<String, TbsSchedule> scheduleMap, Map<String, BmsSubject> subjectMap, Map<String, TbsCenterDto> centerDtoMap, Map<String, GoodsCategory> categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) {
tbsBudgetService.removeById(budgetId);
tbsBudgetConditionService.remove(
new LambdaQueryWrapper<TbsBudgetCondition>()
.eq(TbsBudgetCondition::getBudgetId, budgetId)
);
tbsScheduleItemBudgetService.remove(
new LambdaQueryWrapper<TbsScheduleItemBudget>()
.eq(TbsScheduleItemBudget::getBudgetId, budgetId)
);
//设置新的值
TbsBudget newBudget = new TbsBudget();
newBudget.setId(budgetId);
TbsSchedule schedule = scheduleMap.get(paramItem.getScheduleName());
this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, paramItem, newBudget);
//创建新条件
List<TbsBudgetCondition> conditionList = this.createTbsBudgetConditions(categoryMap, paramItem, budgetId);
//创建新预算周期
List<TbsScheduleItemBudget> scheduleItemBudgetList = this.createTbsScheduleItemBudgetList(paramItem, budgetId, schedule);
//数据持久化
tbsBudgetService.updateById(newBudget);
if(CollectionUtil.isNotEmpty(conditionList)){
tbsBudgetConditionService.saveBatch(conditionList);
}
tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList);
}
private void toSaveChangeCondition(Map<String, GoodsCategory> categoryMap, TbsBudget budget, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId) {
if(budget.getConditionFlag().equals(1)){
List<TbsBudgetCondition> existingConditionList = tbsBudgetConditionService
.list(new LambdaQueryWrapper<TbsBudgetCondition>()
.eq(TbsBudgetCondition::getBudgetId, budgetId));
String bandNames = paramItem.getBandNames();
String categoryNames = paramItem.getCategoryNames();
String seriesNames = paramItem.getSeriesNames();
//设置changeConditionList参数
List<TbsBudgetChangeCondition> changeConditionList = new ArrayList<>();
this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList,
bandNames, TbsGoodsType.brand.name());
this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList,
categoryNames, TbsGoodsType.category.name());
this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList,
seriesNames, TbsGoodsType.series.name());
if(CollUtil.isNotEmpty(changeConditionList)){
tbsBudgetChangeConditionService.saveBatch(changeConditionList);
}
}
}
private void buildChangeSchduleBudgetList(TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId, List<TbsBudgetChangeScheduleItem> changeScheduleItemList) {
//预算参数
List<TbsBudgetBatchBo.BudgetAmount> scheduleAmountList = paramItem.getScheduleAmount();
//预算项
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetService
.list(new LambdaQueryWrapper<TbsScheduleItemBudget>()
.eq(TbsScheduleItemBudget::getBudgetId, budgetId));
List<Long> scheduleItemBudgetIds = scheduleItemBudgetList.stream()
.map(TbsScheduleItemBudget::getId).collect(Collectors.toList());
//实际发布预算
List<TbsBudgetLogWithAmount> budgetLogWithAmountList = tbsScheduleItemBudgetMapper.getAllByScheduleItemIdList(scheduleItemBudgetIds);
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) {
BigDecimal realAmt = BigDecimal.ZERO;
for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) {
if(withAmount.getId().equals(itemBudget.getId())){
realAmt = withAmount.getAmt();
break;
}
}
for (TbsBudgetBatchBo.BudgetAmount budgetAmount : scheduleAmountList) {
if(budgetAmount.getScheduleItemName().equals(itemBudget.getItemName())){
boolean ne1 = ! itemBudget.getPreDispatchAmount().equals(budgetAmount.getPreDispatchAmount());
boolean ne2 = ! realAmt.equals(budgetAmount.getBudgetAmount());
if(ne1 || ne2){
TbsBudgetChangeScheduleItem resultItem = TbsBudgetChangeScheduleItem.toNewObject(itemBudget);
resultItem.setChangeId(changeId);
resultItem.setNewBudgetAmount(realAmt);
resultItem.setNewPreDispatchAmount(budgetAmount.getPreDispatchAmount());
changeScheduleItemList.add(resultItem);
}
}
}
}
}
private void buildChangeConditionList(Map<String, GoodsCategory> categoryMap, Long budgetId, Long changeId, List<TbsBudgetChangeCondition> changeConditionList, List<TbsBudgetCondition> existingConditionList, String values, String targetType) {
if(StringUtils.hasText(values)){
String[] valueArr = values.replace(",",",").split(",");
for (String val : valueArr) {
boolean exist = existingConditionList.stream().anyMatch(
a->a.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);
}
}
}
}
}
@NotNull
private List<TbsBudgetCondition> createTbsBudgetConditions(Map<String, GoodsCategory> categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) {
List<TbsBudgetCondition> conditionList = new ArrayList<>();
if(StringUtils.hasText(paramItem.getBandNames())){
String[] values = paramItem.getBandNames().split(",");
for (String value : values) {
GoodsCategory category = categoryMap.get(value);
TbsBudgetCondition budgetCondition = new TbsBudgetCondition();
budgetCondition.setBudgetId(budgetId);
budgetCondition.setTargetType(GoodsType.Brand.name());
budgetCondition.setTargetId(category.getId());
budgetCondition.setTargetCode(category.getCode());
budgetCondition.setTargetName(category.getName());
budgetCondition.setTargetLevelPathIds(category.getLevelPath());
budgetCondition.setTargetLevelPathNames(category.getLevelPathNames());
conditionList.add(budgetCondition);
}
}
return conditionList;
}
@NotNull
private List<TbsScheduleItemBudget> createTbsScheduleItemBudgetList(TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, TbsSchedule schedule) {
List<TbsScheduleItemBudget> scheduleItemBudgetList = new ArrayList<>();
for (TbsScheduleItem scheduleItem : schedule.getScheduleItemlist()) {
for (TbsBudgetBatchBo.BudgetAmount amountItem : paramItem.getScheduleAmount()) {
if(scheduleItem.getItemName().equals(amountItem.getScheduleItemName())){
TbsScheduleItemBudget scheduleItemBudget = new TbsScheduleItemBudget();
scheduleItemBudget.setScheduleId(schedule.getId());
scheduleItemBudget.setScheduleItemId(scheduleItem.getId());
scheduleItemBudget.setItemName(scheduleItem.getItemName());
scheduleItemBudget.setStartDate(scheduleItem.getStartDate());
scheduleItemBudget.setEndDate(scheduleItem.getEndDate());
scheduleItemBudget.setBudgetId(budgetId);
scheduleItemBudget.setBudgetAmount(amountItem.getBudgetAmount());
scheduleItemBudget.setPreDispatchAmount(amountItem.getPreDispatchAmount());
scheduleItemBudget.setPreDispatchAmountFirst(amountItem.getPreDispatchAmount());
scheduleItemBudgetList.add(scheduleItemBudget);
break;
}
}
}
return scheduleItemBudgetList;
}
private void initBudget4Update(SysUser sysUser, TbsSchedule schedule, Map<String, BmsSubject> subjectMap, Map<String, TbsCenterDto> centerDtoMap, TbsBudgetBatchBo.BudgetMain paramItem, TbsBudget newBudget) {
if(StringUtils.hasText(paramItem.getBudgetName())){
newBudget.setBudgetCode(paramItem.getBudgetName());
}
newBudget.setBudgetNumber(paramItem.getBudgetNumber());
newBudget.setBudgetState(0);
newBudget.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
if(StringUtils.hasText(paramItem.getSubjectName())){
BmsSubject bmsSubject = subjectMap.get(paramItem.getSubjectName());
if(bmsSubject==null){
}
newBudget.setSubjectId(bmsSubject.getId());
newBudget.setSubjectCode(bmsSubject.getSubjectCode());
newBudget.setSubjectName(bmsSubject.getSubjectName());
}
String centerKey = paramItem.getCenterType()+"_&_"+ paramItem.getCenterName();
TbsCenterDto centerDto = centerDtoMap.get(centerKey);
newBudget.setCenterId(centerDto.getId());
newBudget.setCenterType(centerDto.getCenterType());
newBudget.setCenterCode(centerDto.getCenterCode());
newBudget.setCenterName(centerDto.getCenterName());
newBudget.setScheduleId(schedule.getId());
newBudget.setScheduleCode(schedule.getCode());
newBudget.setScheduleName(schedule.getName());
boolean conditionFlag = StringUtils.hasText(paramItem.getCategoryNames())
||StringUtils.hasText(paramItem.getSeriesNames())
||StringUtils.hasText(paramItem.getBandNames());
newBudget.setConditionFlag(conditionFlag?0:1);
newBudget.setUserId(sysUser.getId());
newBudget.setUserCode(sysUser.getCode());
newBudget.setUserName(sysUser.getName());
newBudget.setSubmitTime(LocalDateTime.now());
}
/**
* 加载类目
* @param paramBudgetList
* @return
*/
private Map<String,GoodsCategory> loadGoodsCategoryMap(List<TbsBudgetBatchBo.BudgetMain> paramBudgetList) {
Set<String> goodsCategoryNames = new HashSet<>();
for (TbsBudgetBatchBo.BudgetMain budgetMain : paramBudgetList) {
String bandNames = budgetMain.getBandNames();
String categoryNames = budgetMain.getCategoryNames();
String seriesNames = budgetMain.getSeriesNames();
initCategorySet(goodsCategoryNames, bandNames);
initCategorySet(goodsCategoryNames, categoryNames);
initCategorySet(goodsCategoryNames, seriesNames);
}
List<GoodsCategory> goodsCategories = goodsCategoryService.list(
new LambdaQueryWrapper<GoodsCategory>()
.in(GoodsCategory::getName,goodsCategoryNames)
.or()
.in(GoodsCategory::getCode,goodsCategoryNames)
);
if(goodsCategories.size()!= goodsCategoryNames.size()){
for (String categoryName : goodsCategoryNames) {
boolean exist = goodsCategories.stream().anyMatch(a->a.getName().equals(categoryName));
if(!exist){
Assert.throwEx("无效的品类:"+categoryName);
}
}
}
Map<String,GoodsCategory> categoryMap = new HashMap<>(goodsCategories.size());
for (GoodsCategory category : goodsCategories) {
categoryMap.put(category.getName(),category);
}
return categoryMap;
}
/**
* 初始化set
* @param goodsCategories
* @param categoryString
*/
private void initCategorySet(Set<String> goodsCategories, String categoryString) {
if(StringUtils.hasText(categoryString)){
String[] values = categoryString
.replace(",",",")
.split(",");
goodsCategories.addAll(Arrays.asList(values));
}
}
private Map<String,TbsSchedule> loadScheduleMap(List<String> scheduleNames) {
List<TbsSchedule> schedules = tbsScheduleService.list(
new LambdaQueryWrapper<TbsSchedule>().in(TbsSchedule::getName, scheduleNames)
);
if(scheduleNames.size()!=schedules.size()){
for (String scheduleName : scheduleNames) {
boolean exist = schedules.stream().anyMatch(a->a.getName().equals(scheduleName));
if(!exist){
Assert.throwEx("预算周期不存在:["+scheduleName+"]");
}
}
}
Map<String,TbsSchedule> scheduleMap = new HashMap<>(scheduleNames.size());
for (TbsSchedule schedule : schedules) {
List<TbsScheduleItem> scheduleItems = tbsScheduleItemService.listByScheduleId(schedule.getId());
schedule.setScheduleItemlist(scheduleItems);
scheduleMap.put(schedule.getName(),schedule);
}
return scheduleMap;
}
/**
* 加载param的所有科目过滤无效的
* @param param
* @return
*/
private Map<String,BmsSubject> loadSubjectMapWithFilterInvalid(TbsBudgetBatchBo param){
List<String> subjectCodes = param.getBudgetList().stream().filter(a->a.getSubjectName()!=null)
.map(TbsBudgetBatchBo.BudgetMain::getSubjectName)
.collect(Collectors.toList());
return bmsSubjectService.loadByNameOrCode(subjectCodes,true);
}
}

14
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;
}
/**

6
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`
<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.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>

Loading…
Cancel
Save