Browse Source

发布政策

contract
Yen 2 years ago
parent
commit
7d86f66b21
  1. 17
      src/main/java/com/qs/serve/modules/goods/entity/dto/GoodTargetParam.java
  2. 34
      src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsTargetInfo.java
  3. 94
      src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java
  4. 12
      src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java
  5. 141
      src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyGoodsController.java
  6. 21
      src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java
  7. 34
      src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicy.java
  8. 22
      src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcPolicyBo.java
  9. 62
      src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcPolicyGoodsBo.java
  10. 19
      src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcPolicyItemBo.java
  11. 1
      src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyGoodsService.java
  12. 6
      src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyService.java
  13. 10
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyGoodsServiceImpl.java
  14. 68
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyItemServiceImpl.java
  15. 31
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyServiceImpl.java

17
src/main/java/com/qs/serve/modules/goods/entity/dto/GoodTargetParam.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.goods.entity.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* @author YenHex
* @since 2023/2/20
*/
@Data
@AllArgsConstructor
public class GoodTargetParam {
private String goodsType;
private String goodsId;
}

34
src/main/java/com/qs/serve/modules/goods/entity/dto/GoodsTargetInfo.java

@ -0,0 +1,34 @@
package com.qs.serve.modules.goods.entity.dto;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2023/2/20
*/
@Data
public class GoodsTargetInfo {
/** 目标类型(brand、category、series、spu、sku) */
private String targetType;
/** 目标id */
private Long targetId;
/** 目标编码 */
private String targetCode;
/** 目标名称 */
private String targetName;
/** 目标等级id路径 */
private String targetLevelPathIds;
/** 目标等级名称路径 */
private String targetLevelPathNames;
}

94
src/main/java/com/qs/serve/modules/goods/service/GoodsApplicationService.java

@ -0,0 +1,94 @@
package com.qs.serve.modules.goods.service;
import com.qs.serve.modules.bms.service.BmsChannelPointService;
import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
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.GoodTargetParam;
import com.qs.serve.modules.goods.entity.dto.GoodsTargetInfo;
import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.TbsActivityGoods;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityGoodsBo;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author YenHex
* @since 2023/2/20
*/
@Service
@AllArgsConstructor
public class GoodsApplicationService {
private final GoodsSkuService goodsSkuService;
private final GoodsSpuService goodsSpuService;
private final GoodsCategoryService goodsCategoryService;
public GoodsTargetInfo getGoodsTargetInfo(String goodsType,Long goodsIds){
List<GoodsTargetInfo> list = this.getGoodsTargetInfo(goodsType, Arrays.asList(goodsIds));
if(list.size()>0){
return list.get(0);
}
return null;
}
public List<GoodsTargetInfo> getGoodsTargetInfo(String goodsType,List<Long> goodsIds){
List<GoodsTargetInfo> resultList = new ArrayList<>();
if(goodsType.equals(TbsGoodsType.spu.name())){
for (Long spuId : goodsIds) {
GoodsSpu goodsSpu = goodsSpuService.getById(spuId);
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird());
GoodsTargetInfo targetInfo = new GoodsTargetInfo();
targetInfo.setTargetType(goodsType);
targetInfo.setTargetId(goodsSpu.getId());
targetInfo.setTargetCode(goodsSpu.getSpuCode());
targetInfo.setTargetName(goodsSpu.getName());
targetInfo.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId());
targetInfo.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName());
resultList.add(targetInfo);
}
}else if (goodsType.equals(TbsGoodsType.sku.name())){
for (Long skuId : goodsIds) {
GoodsSku sku = goodsSkuService.getById(skuId);
GoodsSpu goodsSpu = goodsSpuService.getById(sku.getSpuId());
GoodsCategory category1 = goodsCategoryService.getById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryService.getById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryService.getById(goodsSpu.getCategoryThird());
GoodsTargetInfo targetInfo = new GoodsTargetInfo();
targetInfo.setTargetType(goodsType);
targetInfo.setTargetId(sku.getId());
targetInfo.setTargetCode(sku.getSkuCode());
targetInfo.setTargetName(sku.getSpecInfos());
targetInfo.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()+"_"+sku.getId());
targetInfo.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()+"_"+sku.getSpecInfos());
resultList.add(targetInfo);
}
}else {
//品牌、品类、系列
for (Long categoryId : goodsIds) {
GoodsCategory category = goodsCategoryService.getById(categoryId);
GoodsTargetInfo targetInfo = new GoodsTargetInfo();
targetInfo.setTargetType(goodsType);
targetInfo.setTargetId(category.getId());
targetInfo.setTargetCode(category.getCode());
targetInfo.setTargetName(category.getName());
targetInfo.setTargetLevelPathIds(category.getLevelPath());
targetInfo.setTargetLevelPathNames(category.getLevelPathNames());
resultList.add(targetInfo);
}
}
return resultList;
}
}

12
src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java

@ -114,5 +114,17 @@ public class TzcPolicyController {
return R.isTrue(result); return R.isTrue(result);
} }
/**
* 提交审批
* @param policyId
* @return
*/
@PostMapping("/commitPolicy/{policyId}")
public R<?> commitPolicy(@PathVariable("policyId")Long policyId){
return R.ok();
}
} }

141
src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyGoodsController.java

@ -1,141 +0,0 @@
package com.qs.serve.modules.tzc.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.entity.TzcPolicyItem;
import com.qs.serve.modules.tzc.service.TzcPolicyService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.tzc.entity.bo.TzcPolicyGoodsBo;
import com.qs.serve.modules.tzc.entity.TzcPolicyGoods;
import com.qs.serve.modules.tzc.service.TzcPolicyGoodsService;
import javax.validation.Valid;
import java.util.List;
import java.util.stream.Collectors;
/**
* 政策 政策商品
* @author YenHex
* @since 2023-02-20
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("tzc/policyGoods")
public class TzcPolicyGoodsController {
private TzcPolicyService tzcPolicyService;
private TzcPolicyGoodsService tzcPolicyGoodsService;
/**
* 列表
* @param param
* @return
*/
@GetMapping("/list")
public R<List<TzcPolicyGoods>> getList(TzcPolicyGoods param){
LambdaQueryWrapper<TzcPolicyGoods> lqw = new LambdaQueryWrapper<>(param);
List<TzcPolicyGoods> list = tzcPolicyGoodsService.list(lqw);
return R.ok(list);
}
/**
* 翻页
* @param param
* @return
*/
@GetMapping("/page")
public R<PageVo<TzcPolicyGoods>> getPage(TzcPolicyGoods param){
LambdaQueryWrapper<TzcPolicyGoods> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<TzcPolicyGoods> list = tzcPolicyGoodsService.list(lqw);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.Policy, title = "政策商品", biz = BizType.QUERY)
public R<TzcPolicyGoods> getById(@PathVariable("id") String id){
TzcPolicyGoods tzcPolicyGoods = tzcPolicyGoodsService.getById(id);
return R.ok(tzcPolicyGoods);
}
/**
* 更新
* @param param
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.Policy, title = "政策商品", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tzc:policy:insert')")
public R<?> updateById(@RequestBody @Valid TzcPolicyGoodsBo param){
TzcPolicy tzcPolicy = tzcPolicyService.getById(param.getPolicyId());
if(!tzcPolicy.allowEditFlag()){
return R.error("当前状态不支持编辑");
}
TzcPolicyGoods entity = CopierUtil.copy(param,new TzcPolicyGoods());
boolean result = tzcPolicyGoodsService.updateById(entity);
return R.isTrue(result);
}
/**
* 新增
* @param param
* @return
*/
@PostMapping("/save")
@SysLog(module = SystemModule.Policy, title = "政策商品", biz = BizType.INSERT)
@PreAuthorize("hasRole('tzc:policy:insert')")
public R<?> save(@RequestBody @Valid TzcPolicyGoodsBo param){
TzcPolicy tzcPolicy = tzcPolicyService.getById(param.getPolicyId());
if(!tzcPolicy.allowEditFlag()){
return R.error("当前状态不支持编辑");
}
TzcPolicyGoods entity = CopierUtil.copy(param,new TzcPolicyGoods());
boolean result = tzcPolicyGoodsService.save(entity);
return R.isTrue(result);
}
/**
* 删除
* @param ids
* @return
*/
@DeleteMapping("/deleteById/{ids}")
@SysLog(module = SystemModule.Policy, title = "政策商品", biz = BizType.DELETE)
@PreAuthorize("hasRole('tzc:policy:insert')")
public R<?> deleteById(@PathVariable("ids") String ids){
List<Long> idsLong = StringUtils.splitIdLong(ids);
List<TzcPolicyGoods> policyGoods = tzcPolicyGoodsService.listByIds(idsLong);
List<Long> policyIdsList = policyGoods.stream().map(TzcPolicyGoods::getPolicyId).distinct().collect(Collectors.toList());
List<TzcPolicy> policyList = tzcPolicyService.listByIds(policyIdsList);
policyList.forEach(a->{
if(!a.allowEditFlag()){
Assert.throwEx("当前状态不支持编辑");
}
});
boolean result = tzcPolicyGoodsService.removeByIds(idsLong);
return R.isTrue(result);
}
}

21
src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java

@ -12,6 +12,8 @@ import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.tzc.common.TzcPolicyStatus; import com.qs.serve.modules.tzc.common.TzcPolicyStatus;
import com.qs.serve.modules.tzc.entity.TzcPolicy; import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.entity.TzcPolicyGoods;
import com.qs.serve.modules.tzc.service.TzcPolicyGoodsService;
import com.qs.serve.modules.tzc.service.TzcPolicyService; import com.qs.serve.modules.tzc.service.TzcPolicyService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -38,6 +40,7 @@ import java.util.stream.Collectors;
public class TzcPolicyItemController { public class TzcPolicyItemController {
private TzcPolicyItemService tzcPolicyItemService; private TzcPolicyItemService tzcPolicyItemService;
private TzcPolicyGoodsService tzcPolicyGoodsService;
private TzcPolicyService tzcPolicyService; private TzcPolicyService tzcPolicyService;
/** /**
@ -45,14 +48,27 @@ public class TzcPolicyItemController {
* @param param * @param param
* @return * @return
*/ */
//@GetMapping("/list") @GetMapping("/list")
public R<List<TzcPolicyItem>> getList(TzcPolicyItem param){ public R<List<TzcPolicyItem>> getList(TzcPolicyItem param){
LambdaQueryWrapper<TzcPolicyItem> lqw = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<TzcPolicyItem> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<TzcPolicyItem> list = tzcPolicyItemService.list(lqw); List<TzcPolicyItem> list = tzcPolicyItemService.list(lqw);
return R.ok(list); return R.ok(list);
} }
/**
* 政策项商品列表
* @param itemId
* @return
*/
@GetMapping("/listItemGoods/{itemId}")
public R<List<TzcPolicyGoods>> getList(@PathVariable("itemId")Long itemId){
LambdaQueryWrapper<TzcPolicyGoods> lqw = new LambdaQueryWrapper<>();
lqw.eq(TzcPolicyGoods::getPolicyItemId,itemId);
List<TzcPolicyGoods> list = tzcPolicyGoodsService.list(lqw);
return R.ok(list);
}
/** /**
* 翻页 * 翻页
* @param param * @param param
@ -79,7 +95,6 @@ public class TzcPolicyItemController {
} }
/** /**
* 更新 * 更新
* @param param * @param param

34
src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicy.java

@ -83,40 +83,6 @@ public class TzcPolicy implements Serializable {
@Length(max = 32,message = "申请人长度不能超过32字") @Length(max = 32,message = "申请人长度不能超过32字")
private String userName; private String userName;
/** 成本中心类型 */
@NotBlank(message = "成本中心类型不能为空")
@Length(max = 50,message = "成本中心类型长度不能超过50字")
private String centerType;
/** 成本中心id */
@NotBlank(message = "成本中心id不能为空")
@Length(max = 32,message = "成本中心id长度不能超过32字")
private String centerId;
/** 成本中心编码 */
@NotBlank(message = "成本中心编码不能为空")
@Length(max = 50,message = "成本中心编码长度不能超过50字")
private String centerCode;
/** 成本中心名称 */
@NotBlank(message = "成本中心名称不能为空")
@Length(max = 50,message = "成本中心名称长度不能超过50字")
private String centerName;
/** 科目id */
@NotNull(message = "科目id不能为空")
private Long subjectId;
/** 科目编码 */
@NotBlank(message = "科目编码不能为空")
@Length(max = 50,message = "科目编码长度不能超过50字")
private String subjectCode;
/** 科目名称 */
@NotBlank(message = "科目名称不能为空")
@Length(max = 50,message = "科目名称长度不能超过50字")
private String subjectName;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;

22
src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcPolicyBo.java

@ -34,36 +34,14 @@ public class TzcPolicyBo implements Serializable {
@Length(max = 60,message = "主题长度不能超过60字") @Length(max = 60,message = "主题长度不能超过60字")
private String title; private String title;
/** 政策编码 */
@NotBlank(message = "政策编码不能为空")
@Length(max = 50,message = "政策编码长度不能超过50字")
private String policyCode;
/** 客户id */ /** 客户id */
@NotNull(message = "客户id不能为空") @NotNull(message = "客户id不能为空")
private Long supplierId; private Long supplierId;
/** 成本中心类型 */
@NotBlank(message = "成本中心类型不能为空")
@Length(max = 50,message = "成本中心类型长度不能超过50字")
private String centerType;
/** 成本中心id */
@NotBlank(message = "成本中心id不能为空")
@Length(max = 32,message = "成本中心id长度不能超过32字")
private String centerId;
/** 科目id */
@NotNull(message = "科目id不能为空")
private Long subjectId;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;
/** 备注 */
private List<TzcPolicyItemBo> policyItemList;
} }

62
src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcPolicyGoodsBo.java

@ -25,76 +25,16 @@ public class TzcPolicyGoodsBo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** id */
private Long id;
/** 政策id */
@NotNull(message = "政策id不能为空")
private Long policyId;
/** 政策项id */
@NotNull(message = "政策项id不能为空")
private Long policyItemId;
/** 政策编码 */
@NotBlank(message = "政策编码不能为空")
@Length(max = 50,message = "政策编码长度不能超过50字")
private String policyItemCode;
/** 目标类型(brand、category、series、spu、sku) */ /** 目标类型(brand、category、series、spu、sku) */
@NotBlank(message = "目标类型(brand、category、series、spu、sku)不能为空") @NotBlank(message = "目标类型不能为空")
@Length(max = 30,message = "目标类型(brand、category、series、spu、sku)长度不能超过30字")
private String targetType; private String targetType;
/** 目标id */
@NotNull(message = "目标id不能为空")
private Long targetId; private Long targetId;
/** 目标编码 */
@NotBlank(message = "目标编码不能为空")
@Length(max = 30,message = "目标编码长度不能超过30字")
private String targetCode;
/** 目标名称 */
@NotBlank(message = "目标名称不能为空")
@Length(max = 30,message = "目标名称长度不能超过30字")
private String targetName;
/** 目标等级路径 */
@Length(max = 600,message = "目标等级路径长度不能超过600字")
private String targetLevelPathIds;
/** 目标等级路径 */
@Length(max = 600,message = "目标等级路径长度不能超过600字")
private String targetLevelPathNames;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; 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;
} }

19
src/main/java/com/qs/serve/modules/tzc/entity/bo/TzcPolicyItemBo.java

@ -14,7 +14,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.List;
/** /**
* 政策项 Bo * 政策项 Bo
* @author YenHex * @author YenHex
@ -32,6 +32,20 @@ public class TzcPolicyItemBo implements Serializable {
@NotNull(message = "政策id不能为空") @NotNull(message = "政策id不能为空")
private Long policyId; private Long policyId;
/** 成本中心类型 */
@NotBlank(message = "成本中心类型不能为空")
@Length(max = 50,message = "成本中心类型长度不能超过50字")
private String centerType;
/** 成本中心id */
@NotBlank(message = "成本中心id不能为空")
@Length(max = 32,message = "成本中心id长度不能超过32字")
private String centerId;
/** 科目id */
@NotNull(message = "科目id不能为空")
private Long subjectId;
/** 开始时间 */ /** 开始时间 */
@NotNull(message = "开始时间不能为空") @NotNull(message = "开始时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@ -54,5 +68,8 @@ public class TzcPolicyItemBo implements Serializable {
@NotNull(message = "已用金额不能为空") @NotNull(message = "已用金额不能为空")
private BigDecimal usedAmount; private BigDecimal usedAmount;
@NotNull(message = "商品列表参数不能为空")
List<TzcPolicyGoodsBo> policyGoodsList;
} }

1
src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyGoodsService.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.tzc.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tzc.entity.TzcPolicyGoods; import com.qs.serve.modules.tzc.entity.TzcPolicyGoods;
import com.qs.serve.modules.tzc.entity.bo.TzcPolicyGoodsBo;
/** /**
* 政策商品 服务接口 * 政策商品 服务接口

6
src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyService.java

@ -14,5 +14,11 @@ public interface TzcPolicyService extends IService<TzcPolicy> {
R<?> modify(TzcPolicyBo policyParam); R<?> modify(TzcPolicyBo policyParam);
/**
* 提交审批
* @param policyId
*/
void commitPolicy(Long policyId);
} }

10
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyGoodsServiceImpl.java

@ -1,6 +1,16 @@
package com.qs.serve.modules.tzc.service.impl; package com.qs.serve.modules.tzc.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 com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.modules.goods.service.GoodsApplicationService;
import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.entity.TzcPolicyItem;
import com.qs.serve.modules.tzc.entity.bo.TzcPolicyGoodsBo;
import com.qs.serve.modules.tzc.mapper.TzcPolicyItemMapper;
import com.qs.serve.modules.tzc.mapper.TzcPolicyMapper;
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;

68
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyItemServiceImpl.java

@ -3,19 +3,33 @@ package com.qs.serve.modules.tzc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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 com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.goods.entity.dto.GoodsTargetInfo;
import com.qs.serve.modules.goods.entity.dto.TbsCenterDto;
import com.qs.serve.modules.goods.service.GoodsApplicationService;
import com.qs.serve.modules.tbs.service.TbsCenterDtoService;
import com.qs.serve.modules.tzc.common.TzcPolicyStatus; import com.qs.serve.modules.tzc.common.TzcPolicyStatus;
import com.qs.serve.modules.tzc.entity.TzcPolicy; import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.entity.TzcPolicyGoods;
import com.qs.serve.modules.tzc.entity.bo.TzcPolicyGoodsBo;
import com.qs.serve.modules.tzc.entity.bo.TzcPolicyItemBo; import com.qs.serve.modules.tzc.entity.bo.TzcPolicyItemBo;
import com.qs.serve.modules.tzc.mapper.TzcPolicyMapper; import com.qs.serve.modules.tzc.mapper.TzcPolicyMapper;
import com.qs.serve.modules.tzc.service.TzcPolicyGoodsService;
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.tzc.entity.TzcPolicyItem; import com.qs.serve.modules.tzc.entity.TzcPolicyItem;
import com.qs.serve.modules.tzc.service.TzcPolicyItemService; import com.qs.serve.modules.tzc.service.TzcPolicyItemService;
import com.qs.serve.modules.tzc.mapper.TzcPolicyItemMapper; import com.qs.serve.modules.tzc.mapper.TzcPolicyItemMapper;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 政策项 服务实现类 * 政策项 服务实现类
@ -28,6 +42,10 @@ import java.util.List;
public class TzcPolicyItemServiceImpl extends ServiceImpl<TzcPolicyItemMapper,TzcPolicyItem> implements TzcPolicyItemService { public class TzcPolicyItemServiceImpl extends ServiceImpl<TzcPolicyItemMapper,TzcPolicyItem> implements TzcPolicyItemService {
private TzcPolicyMapper tzcPolicyMapper; private TzcPolicyMapper tzcPolicyMapper;
private TbsCenterDtoService tbsCenterDtoService;
private BmsSubjectService bmsSubjectService;
private GoodsApplicationService goodsApplicationService;
private TzcPolicyGoodsService tzcPolicyGoodsService;
@Override @Override
public List<TzcPolicyItem> listByPolicyId(Long id) { public List<TzcPolicyItem> listByPolicyId(Long id) {
@ -38,6 +56,7 @@ public class TzcPolicyItemServiceImpl extends ServiceImpl<TzcPolicyItemMapper,Tz
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public R<?> modify(TzcPolicyItemBo param) { public R<?> modify(TzcPolicyItemBo param) {
TzcPolicy tzcPolicy = tzcPolicyMapper.selectById(param.getPolicyId()); TzcPolicy tzcPolicy = tzcPolicyMapper.selectById(param.getPolicyId());
if(!tzcPolicy.allowEditFlag()){ if(!tzcPolicy.allowEditFlag()){
@ -49,8 +68,10 @@ public class TzcPolicyItemServiceImpl extends ServiceImpl<TzcPolicyItemMapper,Tz
return R.error("数据错误"); return R.error("数据错误");
} }
} }
TzcPolicyItem tzcPolicyItem = CopierUtil.copy(tzcPolicy,new TzcPolicyItem()); List<TzcPolicyItem> policyItemList = this.listByPolicyId(tzcPolicy.getId());
tzcPolicyItem.initSetNull(); BmsSubject bmsSubject = bmsSubjectService.getById(param.getSubjectId());
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(param.getCenterType(),param.getCenterId());
TzcPolicyItem tzcPolicyItem = new TzcPolicyItem();
tzcPolicyItem.setId(param.getId()); tzcPolicyItem.setId(param.getId());
tzcPolicyItem.setPolicyId(param.getPolicyId()); tzcPolicyItem.setPolicyId(param.getPolicyId());
tzcPolicyItem.setPolicyStartDate(param.getPolicyStartDate()); tzcPolicyItem.setPolicyStartDate(param.getPolicyStartDate());
@ -58,7 +79,50 @@ public class TzcPolicyItemServiceImpl extends ServiceImpl<TzcPolicyItemMapper,Tz
tzcPolicyItem.setDiscountAmount(param.getDiscountAmount()); tzcPolicyItem.setDiscountAmount(param.getDiscountAmount());
tzcPolicyItem.setDiscountRate(param.getDiscountRate()); tzcPolicyItem.setDiscountRate(param.getDiscountRate());
tzcPolicyItem.setUsedAmount(param.getUsedAmount()); tzcPolicyItem.setUsedAmount(param.getUsedAmount());
tzcPolicyItem.setCenterType(centerDto.getCenterType());
tzcPolicyItem.setCenterId(centerDto.getId());
tzcPolicyItem.setCenterCode(centerDto.getCenterCode());
tzcPolicyItem.setCenterName(centerDto.getCenterName());
tzcPolicyItem.setSubjectId(bmsSubject.getId());
tzcPolicyItem.setSubjectCode(bmsSubject.getSubjectCode());
tzcPolicyItem.setSubjectName(bmsSubject.getSubjectName());
tzcPolicyItem.setPolicyItemCode(tzcPolicy.getPolicyCode()+"_"+(policyItemList.size()+1));
tzcPolicyItem.setTitle(tzcPolicy.getTitle());
tzcPolicyItem.setSupplierId(tzcPolicy.getSupplierId());
tzcPolicyItem.setSupplierName(tzcPolicy.getSupplierName());
tzcPolicyItem.setSupplierCode(tzcPolicy.getSupplierCode());
tzcPolicyItem.setUserId(tzcPolicy.getUserId());
tzcPolicyItem.setUserCode(tzcPolicy.getUserCode());
tzcPolicyItem.setUserName(tzcPolicy.getUserName());
//移除旧记录
if(param.getId()!=null){
LambdaQueryWrapper<TzcPolicyGoods> lqw = new LambdaQueryWrapper<>();
lqw.eq(TzcPolicyGoods::getPolicyItemId,param.getId());
tzcPolicyGoodsService.remove(lqw);
}
//加载商品
List<TzcPolicyGoodsBo> policyGoodsBoList = param.getPolicyGoodsList();
Map<String,List<TzcPolicyGoodsBo>> policyGoodsBoListMap = policyGoodsBoList.stream()
.collect(Collectors.groupingBy(TzcPolicyGoodsBo::getTargetType));
List<TzcPolicyGoods> tzcPolicyGoodsList = new ArrayList<>();
for (String goodsType : policyGoodsBoListMap.keySet()) {
List<TzcPolicyGoodsBo> policyGoodsBos = policyGoodsBoListMap.get(goodsType);
List<Long> goodsIds = policyGoodsBos.stream().map(TzcPolicyGoodsBo::getTargetId).collect(Collectors.toList());
List<GoodsTargetInfo> goodsTargetInfoList = goodsApplicationService.getGoodsTargetInfo(goodsType,goodsIds);
if(goodsTargetInfoList.size()<goodsIds.size()){
Assert.throwEx("部分品类不存在");
}
for (GoodsTargetInfo targetInfo : goodsTargetInfoList) {
TzcPolicyGoods policyGoods = CopierUtil.copy(targetInfo,new TzcPolicyGoods());
policyGoods.setPolicyId(tzcPolicy.getId());
policyGoods.setPolicyItemCode(tzcPolicyItem.getPolicyItemCode());
tzcPolicyGoodsList.add(policyGoods);
}
}
this.saveOrUpdate(tzcPolicyItem); this.saveOrUpdate(tzcPolicyItem);
Long itemId = tzcPolicyItem.getId();
tzcPolicyGoodsList.forEach(a->a.setPolicyItemId(itemId));
tzcPolicyGoodsService.saveBatch(tzcPolicyGoodsList);
return R.ok(tzcPolicyItem); return R.ok(tzcPolicyItem);
} }

31
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyServiceImpl.java

@ -37,10 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
public class TzcPolicyServiceImpl extends ServiceImpl<TzcPolicyMapper,TzcPolicy> implements TzcPolicyService { public class TzcPolicyServiceImpl extends ServiceImpl<TzcPolicyMapper,TzcPolicy> implements TzcPolicyService {
private BmsSupplierService bmsSupplierService; private BmsSupplierService bmsSupplierService;
private BmsSubjectService bmsSubjectService;
private SysUserService sysUserService; private SysUserService sysUserService;
private TbsCenterDtoService tbsCenterDtoService;
private TzcPolicyItemService tzcPolicyItemService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -55,38 +52,28 @@ public class TzcPolicyServiceImpl extends ServiceImpl<TzcPolicyMapper,TzcPolicy>
} }
}else { }else {
tzcPolicy = new TzcPolicy(); tzcPolicy = new TzcPolicy();
tzcPolicy.setPolicyCode(IdUtil.getSnowflake()+"");
} }
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(policyParam.getCenterType(),policyParam.getCenterId());
BmsSupplier supplier = bmsSupplierService.getById(policyParam.getSupplierId()); BmsSupplier supplier = bmsSupplierService.getById(policyParam.getSupplierId());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
BmsSubject bmsSubject = bmsSubjectService.getById(policyParam.getSubjectId());
tzcPolicy.setTitle(policyParam.getTitle()); tzcPolicy.setTitle(policyParam.getTitle());
tzcPolicy.setPolicyCode(IdUtil.getSnowflake()+"");
tzcPolicy.setSupplierId(policyParam.getSupplierId()); tzcPolicy.setSupplierId(policyParam.getSupplierId());
tzcPolicy.setSubjectCode(supplier.getCode()); tzcPolicy.setSupplierCode(supplier.getCode());
tzcPolicy.setSupplierName(supplier.getName()); tzcPolicy.setSupplierName(supplier.getName());
tzcPolicy.setUserId(sysUser.getId()); tzcPolicy.setUserId(sysUser.getId());
tzcPolicy.setUserCode(sysUser.getCode()); tzcPolicy.setUserCode(sysUser.getCode());
tzcPolicy.setUserName(sysUser.getName()); tzcPolicy.setUserName(sysUser.getName());
tzcPolicy.setCenterType(centerDto.getCenterType());
tzcPolicy.setCenterId(centerDto.getId());
tzcPolicy.setCenterCode(centerDto.getCenterCode());
tzcPolicy.setCenterName(centerDto.getCenterName());
tzcPolicy.setSubjectId(bmsSubject.getId());
tzcPolicy.setSubjectCode(bmsSubject.getSubjectCode());
tzcPolicy.setSubjectName(bmsSubject.getSubjectName());
tzcPolicy.setRemark(policyParam.getRemark()); tzcPolicy.setRemark(policyParam.getRemark());
//更新
if(policyId!=null){
LambdaQueryWrapper<TzcPolicyItem> lqw = new LambdaQueryWrapper<>();
lqw.eq(TzcPolicyItem::getPolicyId,policyId);
TzcPolicyItem policyItem = CopierUtil.copy(tzcPolicy,new TzcPolicyItem());
policyItem.setRemark(null);
tzcPolicyItemService.update(policyItem,lqw);
}
this.saveOrUpdate(tzcPolicy); this.saveOrUpdate(tzcPolicy);
return R.ok(tzcPolicy); return R.ok(tzcPolicy);
} }
@Override
public void commitPolicy(Long policyId) {
}
} }

Loading…
Cancel
Save