Browse Source

调整成本中心为公共模块,地区支持4级

mssql
Yen 3 years ago
parent
commit
0092bf4fe4
  1. 30
      src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java
  2. 2
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  3. 4
      src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java
  4. 3
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java
  5. 14
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java
  6. 2
      src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java
  7. 2
      src/main/java/com/qs/serve/modules/tbs/common/TbsCenterType.java
  8. 51
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  9. 2
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  10. 5
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java
  11. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java
  12. 11
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java
  13. 5
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java
  14. 54
      src/main/java/com/qs/serve/modules/tbs/service/TbsCenterDtoService.java
  15. 30
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
  16. 11
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

30
src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java

@ -75,21 +75,21 @@ public class BmsChannelPointController {
if(StringUtils.hasText(param.getPointLevel())){
channelPointWrapper.eq(BmsChannelPoint::getPointLevel,param.getPointLevel());
}
List<BmsChannelPoint> list = bmsChannelPointService.list(channelPointWrapper);
// if(list.size()>0){
// List<Long> channelIds = list.stream().map(BmsChannelPoint::getChannelId).distinct().collect(Collectors.toList());
// List<BmsChannel> channels = bmsChannelService.listByIds(channelIds);
// for (BmsChannelPoint channelPoint : list) {
// for (BmsChannel channel : channels) {
// if(channelPoint.getChannelId().equals(channel.getId())){
// channelPoint.setChannelName(channel.getChannelName());
// break;
// }
// }
// }
// }
for (BmsChannelPoint channelPoint : list) {
if(StringUtils.hasText(channelPoint.getBizRegionPath())){
String[] bizRegions = channelPoint.getBizRegionPath().split("_");
if(bizRegions.length>0){
channelPoint.setBizRegionName(bizRegions[bizRegions.length-1]);
}
}
if(StringUtils.hasText(channelPoint.getSaleRegionPath())){
String[] regions = channelPoint.getSaleRegionPath().split("_");
if(regions.length>0){
channelPoint.setSaleRegionName(regions[regions.length-1]);
}
}
}
return R.byPageHelperList(list);
}
@ -103,8 +103,6 @@ public class BmsChannelPointController {
@PreAuthorize("hasRole('bms:channelPoint:query')")
public R<BmsChannelPoint> getById(@PathVariable("id") String id){
BmsChannelPoint bmsChannelPoint = bmsChannelPointService.getById(id);
// BmsChannel channel = bmsChannelService.getById(bmsChannelPoint.getChannelId());
// bmsChannelPoint.setChannelName(channel.getChannelName());
BmsRegion bmsRegion = bmsRegionService.getById(bmsChannelPoint.getSaleRegionId());
if(bmsRegion!=null){
bmsChannelPoint.setSaleRegionName(bmsRegion.getName());

2
src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java

@ -268,7 +268,7 @@ public class BmsRegion2Controller {
bmsRegion2Service.updateById(param);
}
}
bmsRegion2Service.flushAllLevel(false);
bmsRegion2Service.flushAllLevel(true);
return R.ok();
}

4
src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java

@ -74,6 +74,8 @@ public class BmsChannelPoint implements Serializable {
@Length(max = 255,message = "销售区域长度不能超过255字")
private String saleRegionPath;
private String saleRegionPathIds;
/** 行政区域id */
@NotNull(message = "行政区域id不能为空")
private String bizRegionId;
@ -83,6 +85,8 @@ public class BmsChannelPoint implements Serializable {
@Length(max = 255,message = "行政区域长度不能超过255字")
private String bizRegionPath;
private String bizRegionPathIds;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;

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

@ -99,6 +99,9 @@ public class BmsRuleMainService {
if(StringUtils.hasText(supplier.getRegionThird())){
regionIds.add(supplier.getRegionThird());
}
if(StringUtils.hasText(supplier.getRegionFourthly())){
regionIds.add(supplier.getRegionFourthly());
}
LambdaQueryWrapper<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRuleRegion::getRuleId,ruleIds);
lqw.in(BmsRuleRegion::getRegionId,regionIds);

14
src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java

@ -48,19 +48,13 @@ public class BmsChannelPointServiceImpl extends ServiceImpl<BmsChannelPointMappe
if(param.getSaleRegionId()!=null){
BmsRegion bmsRegion = bmsRegionService.getById(param.getSaleRegionId());
if(bmsRegion.getPathNames()==null){
channelPoint.setSaleRegionPath("");
}else{
channelPoint.setSaleRegionPath(bmsRegion.getPathNames());
}
channelPoint.setSaleRegionPath(bmsRegion.getPathNames());
channelPoint.setSaleRegionPathIds(bmsRegion.getPathIds());
}
if(param.getBizRegionId()!=null){
BmsRegion2 bmsRegion2 = bmsRegion2Service.getById(param.getBizRegionId());
if(bmsRegion2.getPathNames()==null){
channelPoint.setBizRegionPath("");
}else {
channelPoint.setBizRegionPath(bmsRegion2.getPathNames());
}
channelPoint.setBizRegionPath(bmsRegion2.getPathNames());
channelPoint.setBizRegionPathIds(bmsRegion2.getPathIds());
}
return this.saveOrUpdate(channelPoint);
}

2
src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java

@ -11,6 +11,8 @@ import lombok.Data;
@AllArgsConstructor
public class TbsCenterDto {
String id;
String centerCode;
String centerName;

2
src/main/java/com/qs/serve/modules/tbs/common/TbsCenterType.java

@ -8,9 +8,9 @@ public enum TbsCenterType {
center,
customer,
dept,
bizRegion,
saleRegion,
dept,
saleman
}

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

@ -79,20 +79,7 @@ public class TbsBudgetController {
List<TbsBudget> list = tbsBudgetService.listByIds(budgetIds);
List<TbsBudgetVo> voList = new ArrayList<>();
for (TbsBudget budget : list) {
LambdaQueryWrapper<TbsBudgetCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId());
List<TbsBudgetCondition> budgetConditions = tbsBudgetConditionService.list(lqw);
Map<String,List<TbsBudgetCondition>> listMap = budgetConditions.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType));
TbsBudgetVo budgetVo = CopierUtil.copy(budget,new TbsBudgetVo());
budgetVo.setBrandConditions(listMap.get(TbsGoodsType.brand.name()));
budgetVo.setCategoryConditions(listMap.get(TbsGoodsType.category.name()));
budgetVo.setSeriesConditions(listMap.get(TbsGoodsType.series.name()));
budgetVo.setSkuConditions(listMap.get(TbsGoodsType.sku.name()));
budgetVo.setSpuConditions(listMap.get(TbsGoodsType.spu.name()));
LambdaQueryWrapper<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>();
lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId());
List<TbsScheduleItemBudget> scheduleItemBudgets = tbsScheduleItemBudgetService.list(lqw2);
budgetVo.setScheduleItem(scheduleItemBudgets);
TbsBudgetVo budgetVo = toVoEntity(budget);
voList.add(budgetVo);
}
return R.byPageHelperList(list,voList);
@ -108,9 +95,9 @@ public class TbsBudgetController {
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.QUERY)
@PreAuthorize("hasRole('tbs:budget:query')")
public R<TbsBudget> getById(@PathVariable("id") String id){
TbsBudget tbsBudget = tbsBudgetService.getById(id);
return R.ok(tbsBudget);
public R<TbsBudgetVo> getById(@PathVariable("id") String id){
TbsBudget budget = tbsBudgetService.getById(id);
return R.ok(toVoEntity(budget));
}
/**
@ -129,6 +116,36 @@ public class TbsBudgetController {
return R.ok();
}
private TbsBudgetVo toVoEntity(TbsBudget budget){
LambdaQueryWrapper<TbsBudgetCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId());
List<TbsBudgetCondition> budgetConditions = tbsBudgetConditionService.list(lqw);
Map<String,List<TbsBudgetCondition>> listMap = budgetConditions.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType));
TbsBudgetVo budgetVo = CopierUtil.copy(budget,new TbsBudgetVo());
budgetVo.setBrandConditions(listMap.get(TbsGoodsType.brand.name()));
budgetVo.setCategoryConditions(listMap.get(TbsGoodsType.category.name()));
budgetVo.setSeriesConditions(listMap.get(TbsGoodsType.series.name()));
List<TbsBudgetCondition> skuCondition = listMap.get(TbsGoodsType.sku.name());
if(skuCondition!=null){
for (TbsBudgetCondition budgetCondition : skuCondition) {
try {
String[] names = budgetCondition.getTargetLevelPathNames().split("_");
budgetCondition.setSkuName(names[names.length-1]);
budgetCondition.setSpuName(names[names.length-2]);
} catch (Exception e) {
log.error("格式错误:{}",budgetCondition.getTargetLevelPathNames());
}
}
}
budgetVo.setSkuConditions(skuCondition);
budgetVo.setSpuConditions(listMap.get(TbsGoodsType.spu.name()));
LambdaQueryWrapper<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>();
lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId());
List<TbsScheduleItemBudget> scheduleItemBudgets = tbsScheduleItemBudgetService.list(lqw2);
budgetVo.setScheduleItem(scheduleItemBudgets);
return budgetVo;
}
/**
* 更新状态
* @param param

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

@ -50,7 +50,7 @@ public class TbsBudget implements Serializable {
/** 成本中心id */
@NotNull(message = "成本中心id不能为空")
private Long centerId;
private String centerId;
@NotNull(message = "成本中心类型不能为空")
private String centerType;

5
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java

@ -96,5 +96,10 @@ public class TbsBudgetCondition implements Serializable {
@JsonProperty
private String delFlag;
@TableField(exist = false)
private String spuName;
@TableField(exist = false)
private String skuName;
}

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

@ -35,6 +35,9 @@ public class TbsScheduleItemBudget implements Serializable {
@NotNull(message = "考核id不能为空")
private Long scheduleId;
/** 考核项id */
private Long scheduleItemId;
/** 考核编码 */
@NotBlank(message = "考核编码不能为空")
@Length(max = 30,message = "考核编码长度不能超过30字")

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

@ -34,8 +34,15 @@ public class TbsBudgetBo implements Serializable {
/** 成本中心id */
@NotNull(message = "成本中心id不能为空")
private Long centerId;
private String centerId;
/**
* 成本中心类型
center,
customer,
bizRegion,
saleRegion,
*/
@NotNull(message = "成本中心类型不能为空")
private String centerType;

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

@ -39,7 +39,7 @@ public class TbsBudgetVo implements Serializable {
private String subjectName;
/** 成本中心id */
private Long centerId;
private String centerId;
private String centerType;
@ -58,6 +58,9 @@ public class TbsBudgetVo implements Serializable {
/** 考核期名称 */
private String scheduleName;
/** 费用启用状态 */
private Integer budgetState;
/** 备注 */
private String remark;

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

@ -0,0 +1,54 @@
package com.qs.serve.modules.tbs.service;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.bms.entity.BmsCostCenter;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.goods.entity.dto.TbsCenterDto;
import com.qs.serve.modules.tbs.common.TbsCenterType;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author YenHex
* @since 2022/11/18
*/
@Slf4j
@Service
@AllArgsConstructor
public class TbsCenterDtoService {
private final BmsCostCenterService costCenterService;
private final BmsSupplierService supplierService;
private final BmsRegionService saleRegionService;
private final BmsRegion2Service bizRegionService;
/**
* 获取成本中心DTO
* @param centerType
* @param centerId
* @return
*/
public TbsCenterDto getCenterDto(String centerType, String centerId){
if(centerType.equals(TbsCenterType.center.name())){
BmsCostCenter costCenter = costCenterService.getById(centerId);
return new TbsCenterDto(centerId,costCenter.getCode(),costCenter.getName());
}else if (centerType.equals(TbsCenterType.customer.name())){
BmsSupplier supplier4Center = supplierService.getById(centerId);
return new TbsCenterDto(centerId,supplier4Center.getCode(),supplier4Center.getName());
}else if(centerType.equals(TbsCenterType.saleRegion.name())){
BmsRegion saleRegion = saleRegionService.getById(centerId);
return new TbsCenterDto(centerId,saleRegion.getCode(),saleRegion.getName());
}else if (centerType.equals(TbsCenterType.bizRegion.name())){
BmsRegion2 bizRegion = bizRegionService.getById(centerId);
return new TbsCenterDto(centerId,bizRegion.getCode(),bizRegion.getName());
}
Assert.throwEx("无法匹配成本中心类型:"+centerType);
return null;
}
}

30
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

@ -51,12 +51,10 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
private final TbsActivityChannelService activityChannelService;
private final TbsActivityChannelPointService activityChannelPointService;
private final TbsCostApplyService costApplyService;
private final TbsCenterDtoService tbsCenterDtoService;
private final BmsCostCenterService costCenterService;
private final BmsSupplierService supplierService;
private final BmsSubjectService subjectService;
private final BmsRegionService saleRegionService;
private final BmsRegion2Service bizRegionService;
private final BmsChannelService channelService;
private final BmsChannelPointService channelPointService;
@ -282,7 +280,7 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
String key = centerType+":"+centerId;
TbsCenterDto tbsCenterDto = centerDtoMap.get(key);
if(tbsCenterDto==null){
tbsCenterDto = getCenterDto(centerType,centerId);
tbsCenterDto = tbsCenterDtoService.getCenterDto(centerType,centerId);
centerDtoMap.put(key,tbsCenterDto);
}
TbsActivityCenter activityCenter = new TbsActivityCenter();
@ -374,29 +372,7 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
return activityGoodsList;
}
/**
* 获取成本中心DTO
* @param centerType
* @param centerId
* @return
*/
public TbsCenterDto getCenterDto(String centerType,String centerId){
if(centerType.equals(TbsCenterType.center.name())){
BmsCostCenter costCenter = costCenterService.getById(centerId);
return new TbsCenterDto(costCenter.getCode(),costCenter.getName());
}else if (centerType.equals(TbsCenterType.customer.name())){
BmsSupplier supplier4Center = supplierService.getById(centerId);
return new TbsCenterDto(supplier4Center.getCode(),supplier4Center.getName());
}else if(centerType.equals(TbsCenterType.saleRegion.name())){
BmsRegion saleRegion = saleRegionService.getById(centerId);
return new TbsCenterDto(saleRegion.getCode(),saleRegion.getName());
}else if (centerType.equals(TbsCenterType.bizRegion.name())){
BmsRegion2 bizRegion = bizRegionService.getById(centerId);
return new TbsCenterDto(bizRegion.getCode(),bizRegion.getName());
}
Assert.throwEx("无法匹配成本中心类型:"+centerType);
return null;
}
}

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

@ -12,6 +12,7 @@ import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.goods.entity.GoodsCategory;
import com.qs.serve.modules.goods.entity.GoodsSku;
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.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
@ -46,6 +47,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
private final TbsBudgetConditionService budgetConditionService;
private final TbsScheduleItemBudgetService scheduleItemBudgetService;
private final TbsScheduleItemService scheduleItemService;
private final TbsCenterDtoService tbsCenterDtoService;
private final GoodsSkuService goodsSkuService;
private final GoodsSpuService goodsSpuService;
@ -65,14 +67,14 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
budget = CopierUtil.copy(budgetBo,new TbsBudget());
}
BmsSubject subject = subjectService.getById(budgetBo.getSubjectId());
BmsCostCenter costCenter = costCenterService.getById(budgetBo.getCenterId());
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(budgetBo.getCenterType(),budgetBo.getCenterId());
TbsSchedule schedule = scheduleService.getById(budgetBo.getScheduleId());
budget.setSubjectId(subject.getId());
budget.setSubjectCode(subject.getSubjectCode());
budget.setSubjectName(subject.getSubjectName());
budget.setCenterId(costCenter.getId());
budget.setCenterCode(costCenter.getCode());
budget.setCenterName(costCenter.getName());
budget.setCenterId(centerDto.getId());
budget.setCenterCode(centerDto.getCenterCode());
budget.setCenterName(centerDto.getCenterName());
budget.setScheduleId(schedule.getId());
budget.setScheduleCode(schedule.getCode());
budget.setScheduleName(schedule.getName());
@ -103,6 +105,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
Assert.throwEx("考核期周期需设置金额");
}
itemBudget.setId(null);
itemBudget.setScheduleItemId(scheduleItem.getId());
itemBudget.setBudgetId(budget.getId());
scheduleItemBudgets.add(itemBudget);
}

Loading…
Cancel
Save