Browse Source

添加excel导入预算

mssql
Yen 3 years ago
parent
commit
2e37ac397a
  1. 3
      src/main/java/com/qs/serve/modules/bms/service/BmsCostCenterService.java
  2. 1
      src/main/java/com/qs/serve/modules/bms/service/BmsRegion2Service.java
  3. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java
  4. 3
      src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java
  5. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java
  6. 15
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsCostCenterServiceImpl.java
  7. 10
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java
  8. 10
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java
  9. 7
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java
  10. 2
      src/main/java/com/qs/serve/modules/goods/service/GoodsCategoryService.java
  11. 2
      src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java
  12. 2
      src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java
  13. 8
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java
  14. 7
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  15. 7
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java
  16. 31
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  17. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  18. 3
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java
  19. 84
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetExcelBo.java
  20. 57
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsScheduleItemBudgetBo.java
  21. 3
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java
  22. 5
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java
  23. 58
      src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java
  24. 2
      src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleService.java
  25. 294
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  26. 8
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleServiceImpl.java

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

@ -10,5 +10,8 @@ import com.qs.serve.modules.bms.entity.BmsCostCenter;
*/ */
public interface BmsCostCenterService extends IService<BmsCostCenter> { public interface BmsCostCenterService extends IService<BmsCostCenter> {
BmsCostCenter getByCode(String code);
BmsCostCenter getByName(String name);
} }

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

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

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

@ -20,6 +20,8 @@ public interface BmsRegionService extends IService<BmsRegion> {
BmsRegion getByCode(String code); BmsRegion getByCode(String code);
BmsRegion getByName(String name,Integer level);
// void flushLevel(BmsRegion param); // void flushLevel(BmsRegion param);
void flushAllLevel(boolean batchUpdate); void flushAllLevel(boolean batchUpdate);

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

@ -11,5 +11,8 @@ import com.qs.serve.modules.bms.entity.BmsSubject;
public interface BmsSubjectService extends IService<BmsSubject> { public interface BmsSubjectService extends IService<BmsSubject> {
void updatePathNameByParent(BmsSubject subject); void updatePathNameByParent(BmsSubject subject);
BmsSubject getByName(String name);
} }

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

@ -20,6 +20,8 @@ public interface BmsSupplierService extends IService<BmsSupplier> {
BmsSupplier getByCode(String code,String belong); BmsSupplier getByCode(String code,String belong);
BmsSupplier getByName(String String);
List<BmsSupplier> listChild(String pid); List<BmsSupplier> listChild(String pid);
List<BmsSupplier> listByRegionId(String regionId); List<BmsSupplier> listByRegionId(String regionId);

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

@ -1,5 +1,6 @@
package com.qs.serve.modules.bms.service.impl; package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -18,5 +19,19 @@ import com.qs.serve.modules.bms.mapper.BmsCostCenterMapper;
@AllArgsConstructor @AllArgsConstructor
public class BmsCostCenterServiceImpl extends ServiceImpl<BmsCostCenterMapper,BmsCostCenter> implements BmsCostCenterService { public class BmsCostCenterServiceImpl extends ServiceImpl<BmsCostCenterMapper,BmsCostCenter> implements BmsCostCenterService {
@Override
public BmsCostCenter getByCode(String code) {
LambdaQueryWrapper<BmsCostCenter> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsCostCenter::getCode,code);
return this.getOne(lqw,false);
}
@Override
public BmsCostCenter getByName(String name) {
LambdaQueryWrapper<BmsCostCenter> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsCostCenter::getName,name);
return this.getOne(lqw,true);
}
} }

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

@ -113,6 +113,16 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
return this.getOne(lqw,false); return this.getOne(lqw,false);
} }
@Override
public BmsRegion2 getByName(String name, Integer level) {
LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegion2::getName,name);
if(level!=null){
lqw.eq(BmsRegion2::getLevel,level);
}
return this.getOne(lqw,true);
}
public BmsRegion2 toSetLevel(BmsRegion2 param) { public BmsRegion2 toSetLevel(BmsRegion2 param) {
if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0")){ if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0")){
BmsRegion2 parent = this.getById(param.getPid()); BmsRegion2 parent = this.getById(param.getPid());

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

@ -114,6 +114,16 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
return this.getOne(lqw,false); return this.getOne(lqw,false);
} }
@Override
public BmsRegion getByName(String name, Integer level) {
LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegion::getName,name);
if(level!=null){
lqw.eq(BmsRegion::getLevel,level);
}
return this.getOne(lqw,true);
}
public BmsRegion flushLevel(BmsRegion param) { public BmsRegion flushLevel(BmsRegion param) {
if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0") ){ if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0") ){
BmsRegion parent = this.getById(param.getPid()); BmsRegion parent = this.getById(param.getPid());

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

@ -45,5 +45,12 @@ public class BmsSubjectServiceImpl extends ServiceImpl<BmsSubjectMapper,BmsSubje
} }
} }
} }
@Override
public BmsSubject getByName(String name) {
LambdaQueryWrapper<BmsSubject> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSubject::getSubjectName,name);
return getOne(lqw,false);
}
} }

2
src/main/java/com/qs/serve/modules/goods/service/GoodsCategoryService.java

@ -13,6 +13,8 @@ public interface GoodsCategoryService extends IService<GoodsCategory> {
GoodsCategory getByCode(String code); GoodsCategory getByCode(String code);
GoodsCategory getByName(String code,Integer level);
void add(GoodsCategory category); void add(GoodsCategory category);
void modifyLevel(GoodsCategoryLevelBo category); void modifyLevel(GoodsCategoryLevelBo category);

2
src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java

@ -17,6 +17,8 @@ public interface GoodsSkuService extends IService<GoodsSku> {
GoodsSku getByCode(String code); GoodsSku getByCode(String code);
List<GoodsSku> getByCodes(List<String> codes);
List<GoodsSku> getBySpuId(Long spuId); List<GoodsSku> getBySpuId(Long spuId);
List<GoodSkuVo> selectSkuVo(GoodsSku goodsSku); List<GoodSkuVo> selectSkuVo(GoodsSku goodsSku);

2
src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java

@ -25,6 +25,8 @@ public interface GoodsSpuService extends IService<GoodsSpu> {
GoodsSpu getByCode(String code); GoodsSpu getByCode(String code);
GoodsSpu getByName(String name);
List<GoodSkuBatchResult> saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo); List<GoodSkuBatchResult> saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo);
void edit(GoodsSpuEditBo spuEditBo); void edit(GoodsSpuEditBo spuEditBo);

8
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java

@ -35,6 +35,14 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper,Go
return this.getOne(lqw,false); return this.getOne(lqw,false);
} }
@Override
public GoodsCategory getByName(String name, Integer level) {
LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsCategory::getName,name);
lqw.eq(GoodsCategory::getLevel,level);
return this.getOne(lqw,true);
}
@Override @Override
public void add(GoodsCategory category) { public void add(GoodsCategory category) {
category.setId(null); category.setId(null);

7
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java

@ -47,6 +47,13 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
return getOne(lqw,false); return getOne(lqw,false);
} }
@Override
public List<GoodsSku> getByCodes(List<String> codes) {
LambdaQueryWrapper<GoodsSku> lqw = new LambdaQueryWrapper<>();
lqw.in(GoodsSku::getSkuCode,codes);
return this.list(lqw);
}
@Override @Override
public List<GoodsSku> getBySpuId(Long spuId) { public List<GoodsSku> getBySpuId(Long spuId) {
LambdaQueryWrapper<GoodsSku> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GoodsSku> lqw = new LambdaQueryWrapper<>();

7
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java

@ -52,6 +52,13 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
return getOne(lqw,false); return getOne(lqw,false);
} }
@Override
public GoodsSpu getByName(String name) {
LambdaQueryWrapper<GoodsSpu> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsSpu::getName,name);
return getOne(lqw,true);
}
@Override @Override
public GoodsSpuVo getVoById(Long id) { public GoodsSpuVo getVoById(Long id) {
GoodsSpu goodsSpu = this.getById(id); GoodsSpu goodsSpu = this.getById(id);

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

@ -12,7 +12,9 @@ import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; import com.qs.serve.modules.tbs.entity.TbsBudgetCondition;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetStateBo; import com.qs.serve.modules.tbs.entity.bo.TbsBudgetStateBo;
import com.qs.serve.modules.tbs.entity.bo.TbsScheduleItemBudgetBo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.service.TbsBudgetConditionService; import com.qs.serve.modules.tbs.service.TbsBudgetConditionService;
@ -162,6 +164,22 @@ public class TbsBudgetController {
return R.ok(); return R.ok();
} }
/**
* 修改周期金额
* @param param
* @return
*/
@PostMapping("/updateScheduleItemAmount")
@SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tbs:budget:update')")
public R<?> updateById(@RequestBody @Valid TbsScheduleItemBudgetBo param){
TbsScheduleItemBudget itemBudget = new TbsScheduleItemBudget();
itemBudget.setId(param.getId());
itemBudget.setBudgetAmount(param.getBudgetAmount());
tbsScheduleItemBudgetService.updateById(itemBudget);
return R.ok();
}
/** /**
* 新增 * 新增
* @param param * @param param
@ -176,6 +194,19 @@ public class TbsBudgetController {
return R.ok(); return R.ok();
} }
/**
* excel导入
* @param budgetBo
* @return
*/
@PostMapping("/import")
@SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.INSERT)
@PreAuthorize("hasRole('tbs:budget:insert')")
public R<?> importBo(@RequestBody @Valid TbsBudgetExcelBo budgetBo){
tbsBudgetService.modifyByExcel(budgetBo);
return R.ok();
}
/** /**
* 删除 * 删除
* @param ids * @param ids

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

@ -31,6 +31,9 @@ public class TbsBudget implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** 预算编码 */
private String budgetCode;
/** 费用启用状态 */ /** 费用启用状态 */
private Integer budgetState; private Integer budgetState;

3
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java

@ -28,6 +28,9 @@ public class TbsBudgetBo implements Serializable {
/** id */ /** id */
private Long id; private Long id;
/** 预算编码 */
private String budgetCode;
/** 科目id */ /** 科目id */
@NotNull(message = "科目id不能为空") @NotNull(message = "科目id不能为空")
private Long subjectId; private Long subjectId;

84
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetExcelBo.java

@ -0,0 +1,84 @@
package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* 预算 Bo
* @author YenHex
* @since 2022-11-12
*/
@Data
public class TbsBudgetExcelBo implements Serializable {
private String budgetCode;
/** 成本中心id */
private String subjectName;
/**
成本中心类型
center,
customer,
bizRegion,
saleRegion,
*/
private String centerType;
/**
* 成本中心名称
*/
private String centerName;
/** 成本中心编码 */
private String centerCode;
/** 区域等级 */
private Integer centerRegionLevel;
/** 品牌名称列表 */
private List<String> brandNames;
/** 品类名称列表 */
private List<String> categoryNames;
/** 系列名称列表 */
private List<String> seriesNames;
/** 商品名称列表(前端显示为sku) */
private List<String> spuNames;
/** skuId列表(前端显示为单品) */
private List<String> skuCodes;
/** 备注 */
private String remark;
/** 备注 */
private String scheduleName;
private BigDecimal amountYear;
private BigDecimal amountQ1;
private BigDecimal amountQ2;
private BigDecimal amountQ3;
private BigDecimal amountQ4;
private BigDecimal amountM1;
private BigDecimal amountM2;
private BigDecimal amountM3;
private BigDecimal amountM4;
private BigDecimal amountM5;
private BigDecimal amountM6;
private BigDecimal amountM7;
private BigDecimal amountM8;
private BigDecimal amountM9;
private BigDecimal amountM10;
private BigDecimal amountM11;
private BigDecimal amountM12;
}

57
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsScheduleItemBudgetBo.java

@ -12,6 +12,7 @@ import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -25,65 +26,13 @@ public class TbsScheduleItemBudgetBo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** id */ /** 考核期项费用id */
private Long id; private Long id;
/** 考核id */
@NotNull(message = "考核id不能为空")
private Long scheduleId;
/** 考核编码 */
@NotBlank(message = "考核编码不能为空")
@Length(max = 30,message = "考核编码长度不能超过30字")
private String itemName;
/** 开始时间 */
@NotNull(message = "开始时间不能为空")
@Length(max = 0,message = "开始时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startDate;
/** 结束时间 */
@NotNull(message = "结束时间不能为空")
@Length(max = 0,message = "结束时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endDate;
/** 预算id */
@NotNull(message = "预算id不能为空")
private Long budgetId;
/** 预算金额 */ /** 预算金额 */
@DecimalMin(value = "0")
@NotNull(message = "预算金额不能为空") @NotNull(message = "预算金额不能为空")
private BigDecimal budgetAmount; private BigDecimal budgetAmount;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 创建人 */
private String createBy;
/** 更新人 */
private String updateBy;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
} }

3
src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java

@ -29,6 +29,9 @@ public class TbsBudgetVo implements Serializable {
/** id */ /** id */
private Long id; private Long id;
/** 预算编码 */
private String budgetCode;
/** 科目id */ /** 科目id */
private Long subjectId; private Long subjectId;

5
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo; import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo;
/** /**
* 预算 服务接口 * 预算 服务接口
@ -17,5 +18,9 @@ public interface TbsBudgetService extends IService<TbsBudget> {
*/ */
void modify(TbsBudgetBo budgetBo); void modify(TbsBudgetBo budgetBo);
void modifyByExcel(TbsBudgetExcelBo budgetBo);
TbsBudget getByCode(String code);
} }

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

@ -1,6 +1,7 @@
package com.qs.serve.modules.tbs.service; package com.qs.serve.modules.tbs.service;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsCostCenter; import com.qs.serve.modules.bms.entity.BmsCostCenter;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsRegion2;
@ -51,4 +52,61 @@ public class TbsCenterDtoService {
return null; return null;
} }
/**
* 获取成本中心
* @param centerType
* @param centerName
* @param centerCode
* @param centerRegionLevel
* @return
*/
public TbsCenterDto getCenterDtoByName(String centerType,String centerName,String centerCode,Integer centerRegionLevel){
if(centerType.equals(TbsCenterType.center.name())){
BmsCostCenter costCenter = null;
if(StringUtils.hasText(centerCode)){
costCenter = costCenterService.getByCode(centerCode);
}
if(costCenter==null&&StringUtils.hasText(centerName)) {
costCenter = costCenterService.getByName(centerName);
}
return new TbsCenterDto(costCenter.getId()+"" ,costCenter.getCode(),costCenter.getName());
}else if (centerType.equals(TbsCenterType.customer.name())){
BmsSupplier supplier4Center = null;
if(StringUtils.hasText(centerCode)){
String belong = null;
if(centerCode.contains("JSB")){
centerCode = centerCode.replace("JSB","");
belong = "JSB";
}else if(centerCode.contains("JSL")){
centerCode = centerCode.replace("JSL","");
belong = "JSL";
}
supplier4Center = supplierService.getByCode(centerCode,belong);
}if(supplier4Center==null&&StringUtils.hasText(centerName)) {
supplier4Center = supplierService.getByName(centerName);
}
return new TbsCenterDto(supplier4Center.getId(),supplier4Center.getCode(),supplier4Center.getName());
}else if(centerType.equals(TbsCenterType.saleRegion.name())){
BmsRegion saleRegion = null;
if(StringUtils.hasText(centerCode)){
saleRegion = saleRegionService.getByCode(centerCode);
}
if(saleRegion==null&&StringUtils.hasText(centerName)){
saleRegion = saleRegionService.getByName(centerName,centerRegionLevel);
}
return new TbsCenterDto(saleRegion.getId(),saleRegion.getCode(),saleRegion.getName());
}else if (centerType.equals(TbsCenterType.bizRegion.name())){
BmsRegion2 bizRegion = null;
if(StringUtils.hasText(centerCode)){
bizRegion = bizRegionService.getByCode(centerCode);
}
if(bizRegion==null&&StringUtils.hasText(centerName)){
bizRegion = bizRegionService.getByName(centerName,centerRegionLevel);
}
return new TbsCenterDto(bizRegion.getId(),bizRegion.getCode(),bizRegion.getName());
}
Assert.throwEx("无法匹配成本中心类型:"+centerType);
return null;
}
} }

2
src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleService.java

@ -10,5 +10,7 @@ import com.qs.serve.modules.tbs.entity.TbsSchedule;
*/ */
public interface TbsScheduleService extends IService<TbsSchedule> { public interface TbsScheduleService extends IService<TbsSchedule> {
TbsSchedule getByName(String name);
} }

294
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.modules.bms.entity.BmsCostCenter;
import com.qs.serve.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.service.BmsCostCenterService; import com.qs.serve.modules.bms.service.BmsCostCenterService;
import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.BmsSubjectService;
@ -18,16 +17,18 @@ import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityGoodsBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo; import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.service.*; 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 com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -41,8 +42,6 @@ import java.util.stream.Collectors;
public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget> implements TbsBudgetService { public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget> implements TbsBudgetService {
private final BmsSubjectService subjectService; private final BmsSubjectService subjectService;
private final BmsCostCenterService costCenterService;
private final TbsScheduleService scheduleService; private final TbsScheduleService scheduleService;
private final TbsBudgetConditionService budgetConditionService; private final TbsBudgetConditionService budgetConditionService;
private final TbsScheduleItemBudgetService scheduleItemBudgetService; private final TbsScheduleItemBudgetService scheduleItemBudgetService;
@ -63,33 +62,16 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
if(budget==null){ if(budget==null){
Assert.throwEx("预算不存在或被移除"); Assert.throwEx("预算不存在或被移除");
} }
if(budget.getBudgetState().equals(1)){
Assert.throwEx("已开启的预算无法编辑");
}
}else { }else {
budget = CopierUtil.copy(budgetBo,new TbsBudget()); budget = CopierUtil.copy(budgetBo,new TbsBudget());
} }
BmsSubject subject = subjectService.getById(budgetBo.getSubjectId()); BmsSubject subject = subjectService.getById(budgetBo.getSubjectId());
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(budgetBo.getCenterType(),budgetBo.getCenterId()); TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(budgetBo.getCenterType(),budgetBo.getCenterId());
TbsSchedule schedule = scheduleService.getById(budgetBo.getScheduleId()); TbsSchedule schedule = scheduleService.getById(budgetBo.getScheduleId());
budget.setSubjectId(subject.getId()); initEmptyBudget(budget,subject,centerDto,schedule);
budget.setSubjectCode(subject.getSubjectCode());
budget.setSubjectName(subject.getSubjectName());
budget.setCenterId(centerDto.getId());
budget.setCenterCode(centerDto.getCenterCode());
budget.setCenterName(centerDto.getCenterName());
budget.setScheduleId(schedule.getId());
budget.setScheduleCode(schedule.getCode());
budget.setScheduleName(schedule.getName());
//删除条件
if(budget.getId()!=null){
LambdaQueryWrapper<TbsBudgetCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId());
budgetConditionService.remove(lqw);
//删除 费用项
LambdaQueryWrapper<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>();
lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId());
scheduleItemBudgetService.remove(lqw2);
}
this.saveOrUpdate(budget);
//保存 费用项 //保存 费用项
List<TbsScheduleItem> scheduleItems = scheduleItemService.listByScheduleId(schedule.getId()); List<TbsScheduleItem> scheduleItems = scheduleItemService.listByScheduleId(schedule.getId());
List<TbsScheduleItemBudget> scheduleItemBudgets = new ArrayList<>(); List<TbsScheduleItemBudget> scheduleItemBudgets = new ArrayList<>();
@ -111,48 +93,23 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
} }
scheduleItemBudgetService.saveBatch(scheduleItemBudgets); scheduleItemBudgetService.saveBatch(scheduleItemBudgets);
//设置条件 //设置条件
List<TbsBudgetCondition> budgetConditions = new ArrayList<>(); List<Long> skuIds = budgetBo.getSkuIds();
if(CollectionUtil.isNotEmpty(budgetBo.getSkuIds())){ List<Long> spuIds = budgetBo.getSpuIds();
List<GoodsSku> skuList = goodsSkuService.listByIds(budgetBo.getSkuIds()); List<Long> seriesIds = budgetBo.getSeriesIds();
for (GoodsSku sku : skuList) { List<Long> brandIds = budgetBo.getBrandIds();
GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId()); List<Long> categoryIds = budgetBo.getCategoryIds();
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst()); buildCondition(budget.getId(),brandIds,categoryIds,seriesIds,spuIds,skuIds);
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird());
TbsBudgetCondition condition = new TbsBudgetCondition();
condition.setBudgetId(budget.getId());
condition.setTargetType(TbsGoodsType.sku.name());
condition.setTargetId(sku.getId());
condition.setTargetCode(sku.getSkuCode());
condition.setTargetName(sku.getSpecInfos());
condition.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()+"_"+sku.getId());
condition.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()+"_"+sku.getSpecInfos());
budgetConditions.add(condition);
}
} }
if(CollectionUtil.isNotEmpty(budgetBo.getSpuIds())){
List<GoodsSpu> spuList = goodsSpuService.listByIds(budgetBo.getSpuIds()); @Override
for (GoodsSpu goodsSpu : spuList) { public TbsBudget getByCode(String code) {
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst()); LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>();
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond()); lqw.eq(TbsBudget::getBudgetCode,code);
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird()); return getOne(lqw,false);
TbsBudgetCondition condition = new TbsBudgetCondition();
condition.setBudgetId(budget.getId());
condition.setTargetType(TbsGoodsType.spu.name());
condition.setTargetId(goodsSpu.getId());
condition.setTargetCode(goodsSpu.getSpuCode());
condition.setTargetName(goodsSpu.getName());
condition.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId());
condition.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName());
budgetConditions.add(condition);
}
}
budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getSeriesIds(),TbsGoodsType.series.name()));
budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getCategoryIds(),TbsGoodsType.category.name()));
budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getBrandIds(),TbsGoodsType.brand.name()));
budgetConditionService.saveBatch(budgetConditions);
} }
/** /**
* 建立类目条件 * 建立类目条件
* @param budgetId * @param budgetId
@ -179,5 +136,210 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void modifyByExcel(TbsBudgetExcelBo budgetBo) {
TbsBudget budget = this.getByCode(budgetBo.getBudgetCode());
if(budget!=null){
if(budget.getBudgetState().equals(1)){
Assert.throwEx("已开启的预算无法编辑");
}
}else {
budget = new TbsBudget();
budget.setBudgetCode(budgetBo.getBudgetCode());
}
List<Long> skuIds = null;
List<Long> spuIds = null;
if(CollectionUtil.isNotEmpty(budgetBo.getSkuCodes())){
List<GoodsSku> goodsSkus = goodsSkuService.listByIds(budgetBo.getSkuCodes());
if(goodsSkus.size()!=budgetBo.getSkuCodes().size()){
Assert.throwEx("部分存货编码不存在");
}
skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList());
}
if(CollectionUtil.isNotEmpty(budgetBo.getSpuNames())){
spuIds = new ArrayList<>();
for (String spuName : budgetBo.getSpuNames()) {
GoodsSpu goodsSpu = goodsSpuService.getByName(spuName);
if(goodsSpu==null){
Assert.throwEx("["+spuName+"]单品不存在");
}
spuIds.add(goodsSpu.getId());
}
}
List<Long> brandIds = this.selectCategory(budgetBo.getBrandNames(),1);
List<Long> categoryIds = this.selectCategory(budgetBo.getBrandNames(),2);
List<Long> seriesIds = this.selectCategory(budgetBo.getBrandNames(),3);
BmsSubject subject = subjectService.getByName(budgetBo.getSubjectName());
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDtoByName(
budgetBo.getCenterType(),
budgetBo.getCenterName(),
budgetBo.getBudgetCode(),
budgetBo.getCenterRegionLevel());
TbsSchedule schedule = scheduleService.getByName(budgetBo.getScheduleName());
initEmptyBudget(budget,subject,centerDto,schedule);
//保存 费用项
List<TbsScheduleItem> scheduleItems = scheduleItemService.listByScheduleId(schedule.getId());
List<TbsScheduleItemBudget> scheduleItemBudgets = new ArrayList<>();
for (TbsScheduleItem scheduleItem : scheduleItems) {
TbsScheduleItemBudget itemBudget = CopierUtil.copy(scheduleItem,new TbsScheduleItemBudget());
itemBudget.setId(null);
itemBudget.setScheduleItemId(scheduleItem.getId());
itemBudget.setBudgetId(budget.getId());
if(scheduleItem.getItemName().equals("M1")){
itemBudget.setBudgetAmount(budgetBo.getAmountM1());
}else if (scheduleItem.getItemName().equals("M2")){
itemBudget.setBudgetAmount(budgetBo.getAmountM2());
}else if (scheduleItem.getItemName().equals("M3")){
itemBudget.setBudgetAmount(budgetBo.getAmountM3());
}else if (scheduleItem.getItemName().equals("M4")){
itemBudget.setBudgetAmount(budgetBo.getAmountM4());
}else if (scheduleItem.getItemName().equals("M5")){
itemBudget.setBudgetAmount(budgetBo.getAmountM5());
}else if (scheduleItem.getItemName().equals("M6")){
itemBudget.setBudgetAmount(budgetBo.getAmountM6());
}else if (scheduleItem.getItemName().equals("M7")){
itemBudget.setBudgetAmount(budgetBo.getAmountM7());
}else if (scheduleItem.getItemName().equals("M8")){
itemBudget.setBudgetAmount(budgetBo.getAmountM8());
}else if (scheduleItem.getItemName().equals("M9")){
itemBudget.setBudgetAmount(budgetBo.getAmountM9());
}else if (scheduleItem.getItemName().equals("M10")){
itemBudget.setBudgetAmount(budgetBo.getAmountM10());
}else if (scheduleItem.getItemName().equals("M11")){
itemBudget.setBudgetAmount(budgetBo.getAmountM11());
}else if (scheduleItem.getItemName().equals("M12")){
itemBudget.setBudgetAmount(budgetBo.getAmountM12());
}else if (scheduleItem.getItemName().equals("Q1")){
itemBudget.setBudgetAmount(budgetBo.getAmountQ1());
}else if (scheduleItem.getItemName().equals("Q2")){
itemBudget.setBudgetAmount(budgetBo.getAmountQ2());
}else if (scheduleItem.getItemName().equals("Q3")){
itemBudget.setBudgetAmount(budgetBo.getAmountQ3());
}else if (scheduleItem.getItemName().equals("Q4")){
itemBudget.setBudgetAmount(budgetBo.getAmountQ4());
}else if (scheduleItem.getItemName().equals("Y")){
itemBudget.setBudgetAmount(budgetBo.getAmountYear());
}
if(itemBudget.getBudgetAmount()==null){
itemBudget.setBudgetAmount(BigDecimal.ZERO);
}
scheduleItemBudgets.add(itemBudget);
}
scheduleItemBudgetService.saveBatch(scheduleItemBudgets);
//设置条件
buildCondition(budget.getId(),brandIds,categoryIds,seriesIds,spuIds,skuIds);
}
private List<Long> selectCategory(List<String> names,Integer level){
if(CollectionUtil.isNotEmpty(names)){
List<Long> ids = new ArrayList<>();
for (String name : names) {
GoodsCategory category = goodsCategoryService.getByName(name,level);
if(category==null){
if(level==1){
Assert.throwEx("品牌["+name+"]不存在");
}else if (level==2){
Assert.throwEx("品牌["+name+"]不存在");
}else if (level==3){
Assert.throwEx("系列["+name+"]不存在");
}
}
ids.add(category.getId());
}
return ids;
}
return null;
}
/**
* 初始化空预算
* @param budget
* @param subject
* @param centerDto
* @param schedule
*/
private void initEmptyBudget(TbsBudget budget,BmsSubject subject,TbsCenterDto centerDto,TbsSchedule schedule){
if(subject==null){
Assert.throwEx("科目不存在");
}
if(schedule==null){
Assert.throwEx("考核期不存在");
}
budget.setSubjectId(subject.getId());
budget.setSubjectCode(subject.getSubjectCode());
budget.setSubjectName(subject.getSubjectName());
budget.setCenterId(centerDto.getId());
budget.setCenterCode(centerDto.getCenterCode());
budget.setCenterName(centerDto.getCenterName());
budget.setScheduleId(schedule.getId());
budget.setScheduleCode(schedule.getCode());
budget.setScheduleName(schedule.getName());
//删除条件
if(budget.getId()!=null){
LambdaQueryWrapper<TbsBudgetCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId());
budgetConditionService.remove(lqw);
//删除 费用项
LambdaQueryWrapper<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>();
lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId());
scheduleItemBudgetService.remove(lqw2);
}
this.saveOrUpdate(budget);
}
/**
* 建立条件数据
* @param budgetId
* @param brandIds
* @param categoryIds
* @param seriesIds
* @param spuIds
* @param skuIds
*/
private void buildCondition(Long budgetId,List<Long> brandIds,List<Long> categoryIds,List<Long> seriesIds,List<Long> spuIds,List<Long> skuIds){
List<TbsBudgetCondition> budgetConditions = new ArrayList<>();
if (CollectionUtil.isNotEmpty(skuIds)) {
List<GoodsSku> skuList = goodsSkuService.listByIds(skuIds);
for (GoodsSku sku : skuList) {
GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId());
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird());
TbsBudgetCondition condition = new TbsBudgetCondition();
condition.setBudgetId(budgetId);
condition.setTargetType(TbsGoodsType.sku.name());
condition.setTargetId(sku.getId());
condition.setTargetCode(sku.getSkuCode());
condition.setTargetName(sku.getSpecInfos());
condition.setTargetLevelPathIds(category1.getId() + "_" + category2.getId() + "_" + category3.getId() + "_" + goodsSpu.getId() + "_" + sku.getId());
condition.setTargetLevelPathNames(category1.getName() + "_" + category2.getName() + "_" + category3.getName() + "_" + goodsSpu.getName() + "_" + sku.getSpecInfos());
budgetConditions.add(condition);
}
}
if (CollectionUtil.isNotEmpty(spuIds)) {
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
for (GoodsSpu goodsSpu : spuList) {
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird());
TbsBudgetCondition condition = new TbsBudgetCondition();
condition.setBudgetId(budgetId);
condition.setTargetType(TbsGoodsType.spu.name());
condition.setTargetId(goodsSpu.getId());
condition.setTargetCode(goodsSpu.getSpuCode());
condition.setTargetName(goodsSpu.getName());
condition.setTargetLevelPathIds(category1.getId() + "_" + category2.getId() + "_" + category3.getId() + "_" + goodsSpu.getId());
condition.setTargetLevelPathNames(category1.getName() + "_" + category2.getName() + "_" + category3.getName() + "_" + goodsSpu.getName());
budgetConditions.add(condition);
}
}
budgetConditions.addAll(buildCategoryCondition(budgetId, seriesIds, TbsGoodsType.series.name()));
budgetConditions.addAll(buildCategoryCondition(budgetId, categoryIds, TbsGoodsType.category.name()));
budgetConditions.addAll(buildCategoryCondition(budgetId, brandIds, TbsGoodsType.brand.name()));
budgetConditionService.saveBatch(budgetConditions);
}
} }

8
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleServiceImpl.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.tbs.service.impl; package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -18,5 +19,12 @@ import com.qs.serve.modules.tbs.mapper.TbsScheduleMapper;
@AllArgsConstructor @AllArgsConstructor
public class TbsScheduleServiceImpl extends ServiceImpl<TbsScheduleMapper,TbsSchedule> implements TbsScheduleService { public class TbsScheduleServiceImpl extends ServiceImpl<TbsScheduleMapper,TbsSchedule> implements TbsScheduleService {
@Override
public TbsSchedule getByName(String name) {
LambdaQueryWrapper<TbsSchedule> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsSchedule::getName,name);
return this.getOne(lqw,false);
}
} }

Loading…
Cancel
Save