Browse Source

销售计划

v1.0
Yen 2 years ago
parent
commit
1ecba54635
  1. 1
      src/main/java/com/qs/serve/common/util/CodeGenUtil.java
  2. 15
      src/main/java/com/qs/serve/modules/bms/controller/BmsApplyMessageController.java
  3. 4
      src/main/java/com/qs/serve/modules/bms/entity/BmsApplyMessage.java
  4. 8
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsApplyMessageServiceImpl.java
  5. 4
      src/main/java/com/qs/serve/modules/sale/entity/SalePlan.java
  6. 29
      src/main/java/com/qs/serve/modules/sale/entity/bo/SalePlanBo.java
  7. 6
      src/main/java/com/qs/serve/modules/sale/mapper/SalePlanGoodsMapper.java
  8. 3
      src/main/java/com/qs/serve/modules/sale/service/SalePlanService.java
  9. 114
      src/main/java/com/qs/serve/modules/sale/service/impl/SalePlanServiceImpl.java
  10. 2
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

1
src/main/java/com/qs/serve/common/util/CodeGenUtil.java

@ -22,6 +22,7 @@ public class CodeGenUtil {
@AllArgsConstructor
public enum SourceKey{
CostApply("cost_apply"),
SalePlan("SalePlan"),
Activity("activity"),
Verification("verification"),
Policy("policy"),

15
src/main/java/com/qs/serve/modules/bms/controller/BmsApplyMessageController.java

@ -92,6 +92,21 @@ public class BmsApplyMessageController {
return R.isTrue(result);
}
/**
* 更新状态
* @param param
* @return
*/
@PostMapping("/enable")
@SysLog(module = SystemModule.BASE, title = "申请信息", biz = BizType.UPDATE)
public R<?> enableById(@RequestBody BmsApplyMessage param){
BmsApplyMessage upd = new BmsApplyMessage();
upd.setId(param.getId());
upd.setEnableFlag(param.getEnableFlag());
boolean result = bmsApplyMessageService.updateById(param);
return R.isTrue(result);
}
/**
* 新增
* @param param

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

@ -37,16 +37,12 @@ public class BmsApplyMessage implements Serializable {
private String type;
/** 表达式 */
@NotBlank(message = "表达式不能为空")
@Length(max = 255,message = "表达式长度不能超过255字")
private String express;
/** 启用状态 */
private Integer enableFlag;
/** 信息 */
@NotBlank(message = "信息不能为空")
@Length(max = 255,message = "信息长度不能超过255字")
private String message;
/** 备注 */

8
src/main/java/com/qs/serve/modules/bms/service/impl/BmsApplyMessageServiceImpl.java

@ -45,11 +45,11 @@ public class BmsApplyMessageServiceImpl extends ServiceImpl<BmsApplyMessageMappe
}
String jsonString = JsonUtil.objectToJson(seeyonData);
List<String> result = new ArrayList<>();
if(StringUtils.hasText(param.getTestJsString())){
if(param.getTestJsString()!=null){
String js = "function checkCostRate (){" +
"\n var jsonStr = '"+jsonString+"';" +
"\n var data= JSON.parse(jsonStr);" +
"\n console.log('checkCostRate() data',data);" +
//"\n console.log('checkCostRate() data',data);" +
param.getTestJsString() +
"\n}";
result.add(js);
@ -57,12 +57,12 @@ public class BmsApplyMessageServiceImpl extends ServiceImpl<BmsApplyMessageMappe
LambdaQueryWrapper<BmsApplyMessage> msgLqw = new LambdaQueryWrapper<>();
msgLqw.eq(BmsApplyMessage::getType, param.getTargetType());
msgLqw.eq(BmsApplyMessage::getEnableFlag,1);
List<BmsApplyMessage> applyMessageList = new ArrayList<>();
List<BmsApplyMessage> applyMessageList = super.list(msgLqw);
for (BmsApplyMessage applyMessage : applyMessageList) {
String js = "function checkCostRate (){" +
"\n var jsonStr = '"+jsonString+"';" +
"\n var data= JSON.parse(jsonStr);" +
"\n console.log('checkCostRate() data',data);" +
//"\n console.log('checkCostRate() data',data);" +
applyMessage.getExpress() +
"\n}";
result.add(js);

4
src/main/java/com/qs/serve/modules/sale/entity/SalePlan.java

@ -4,6 +4,7 @@ import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -99,6 +100,9 @@ public class SalePlan implements Serializable {
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 销售计划商品list */
@TableField(exist = false)
private List<SalePlanGoods> planGoodsList;
public static SalePlan toNewObject(SalePlan source){
SalePlan plan = new SalePlan();

29
src/main/java/com/qs/serve/modules/sale/entity/bo/SalePlanBo.java

@ -1,8 +1,37 @@
package com.qs.serve.modules.sale.entity.bo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* @author YenHex
* @since 2023/9/20
*/
@Data
public class SalePlanBo {
/** id */
private Long id;
/** 标题 */
@NotBlank(message = "标题不能为空")
private String planTitle;
/** 客户id */
private String supplierId;
/** 目标类型(brand、category、series、spu、sku) */
private String targetType;
private List<SalePlanGoodsItem> goodsItems;
@Data
public static class SalePlanGoodsItem{
private Long targetId;
private Integer qty;
}
}

6
src/main/java/com/qs/serve/modules/sale/mapper/SalePlanGoodsMapper.java

@ -2,6 +2,9 @@ package com.qs.serve.modules.sale.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.sale.entity.SalePlanGoods;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.web.bind.annotation.DeleteMapping;
/**
* 销售计划商品 Mapper
@ -10,5 +13,8 @@ import com.qs.serve.modules.sale.entity.SalePlanGoods;
*/
public interface SalePlanGoodsMapper extends BaseMapper<SalePlanGoods> {
@Update("update set del_flag = 1 where plan_id = #{planId}")
int deleteByPlanId(@Param("planId") Long planId);
}

3
src/main/java/com/qs/serve/modules/sale/service/SalePlanService.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.sale.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.sale.entity.SalePlan;
import com.qs.serve.modules.sale.entity.bo.SalePlanBo;
/**
* 销售计划 服务接口
@ -10,5 +11,7 @@ import com.qs.serve.modules.sale.entity.SalePlan;
*/
public interface SalePlanService extends IService<SalePlan> {
SalePlan modify(SalePlanBo param);
}

114
src/main/java/com/qs/serve/modules/sale/service/impl/SalePlanServiceImpl.java

@ -1,6 +1,25 @@
package com.qs.serve.modules.sale.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CodeGenUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
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.mapper.GoodsCategoryMapper;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import com.qs.serve.modules.goods.mapper.GoodsSpuMapper;
import com.qs.serve.modules.sale.entity.SalePlanGoods;
import com.qs.serve.modules.sale.entity.bo.SalePlanBo;
import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper;
import com.qs.serve.modules.sale.service.SalePlanGoodsService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -8,6 +27,9 @@ import com.qs.serve.modules.sale.entity.SalePlan;
import com.qs.serve.modules.sale.service.SalePlanService;
import com.qs.serve.modules.sale.mapper.SalePlanMapper;
import java.util.ArrayList;
import java.util.List;
/**
* 销售计划 服务实现类
* @author YenHex
@ -18,5 +40,97 @@ import com.qs.serve.modules.sale.mapper.SalePlanMapper;
@AllArgsConstructor
public class SalePlanServiceImpl extends ServiceImpl<SalePlanMapper,SalePlan> implements SalePlanService {
private final SysUserMapper sysUserMapper;
private final BmsSupplierMapper supplierMapper;
private final SalePlanGoodsMapper salePlanGoodsMapper;
private final SalePlanGoodsService salePlanGoodsService;
private final GoodsCategoryMapper goodsCategoryMapper;
private final GoodsSpuMapper goodsSpuMapper;
private final GoodsSkuMapper goodsSkuMapper;
@Override
public SalePlan modify(SalePlanBo param) {
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserMapper.selectById(userId);
BmsSupplier supplier = supplierMapper.selectById(param.getSupplierId());
SalePlan salePlan = new SalePlan();
salePlan.setPlanTitle(param.getPlanTitle());
salePlan.setUserId(sysUser.getId());
salePlan.setUserCode(sysUser.getCode());
salePlan.setUserName(sysUser.getName());
salePlan.setSupplierId(supplier.getId());
salePlan.setSupplierCode(supplier.getCode());
salePlan.setSupplierName(supplier.getName());
if(param.getId()==null){
salePlan.setPlanCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.SalePlan));
super.save(salePlan);
}else {
salePlan.setId(param.getId());
super.updateById(salePlan);
//删除品类
salePlanGoodsMapper.deleteByPlanId(salePlan.getId());
}
List<SalePlanGoods> planGoodsList = this.buildPlanGoods(param.getGoodsItems(),param.getTargetType());
for (SalePlanGoods planGoods : planGoodsList) {
planGoods.setPlanId(salePlan.getId());
}
salePlanGoodsService.saveBatch(planGoodsList);
return salePlan;
}
private List<SalePlanGoods> buildPlanGoods(List<SalePlanBo.SalePlanGoodsItem> goodsItems,String goodsType){
List<SalePlanGoods> salePlanGoods = new ArrayList<>();
if(goodsType.equals(TbsGoodsType.spu.name())){
for (SalePlanBo.SalePlanGoodsItem goodsBo : goodsItems) {
GoodsSpu goodsSpu = goodsSpuMapper.selectById(goodsBo.getTargetId());
GoodsCategory category1 = goodsCategoryMapper.selectById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryMapper.selectById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryMapper.selectById(goodsSpu.getCategoryThird());
SalePlanGoods planGoods = new SalePlanGoods();
planGoods.setTargetType(goodsType);
planGoods.setTargetId(goodsSpu.getId());
planGoods.setTargetCode(goodsSpu.getSpuCode());
planGoods.setTargetName(goodsSpu.getName());
planGoods.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId());
planGoods.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName());
planGoods.setQty(goodsBo.getQty());
salePlanGoods.add(planGoods);
}
}else if (goodsType.equals(TbsGoodsType.sku.name())){
for (SalePlanBo.SalePlanGoodsItem goodsBo : goodsItems) {
GoodsSku sku = goodsSkuMapper.selectById(goodsBo.getTargetId());
GoodsSpu goodsSpu = goodsSpuMapper.selectById(sku.getSpuId());
GoodsCategory category1 = goodsCategoryMapper.selectById(goodsSpu.getCategoryFirst());
GoodsCategory category2 = goodsCategoryMapper.selectById(goodsSpu.getCategorySecond());
GoodsCategory category3 = goodsCategoryMapper.selectById(goodsSpu.getCategoryThird());
SalePlanGoods planGoods = new SalePlanGoods();
planGoods.setTargetType(goodsType);
planGoods.setTargetId(sku.getId());
planGoods.setTargetCode(sku.getSkuCode());
planGoods.setTargetName(sku.getSpecInfos());
planGoods.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()+"_"+sku.getId());
planGoods.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()+"_"+sku.getSpecInfos());
planGoods.setQty(goodsBo.getQty());
salePlanGoods.add(planGoods);
}
}else {
//品牌、品类、系列
for (SalePlanBo.SalePlanGoodsItem goodsBo : goodsItems) {
GoodsCategory category = goodsCategoryMapper.selectById(goodsBo.getTargetId());
SalePlanGoods planGoods = new SalePlanGoods();
planGoods.setTargetType(goodsType);
planGoods.setTargetId(category.getId());
planGoods.setTargetCode(category.getCode());
planGoods.setTargetName(category.getName());
planGoods.setTargetLevelPathIds(category.getLevelPath());
planGoods.setTargetLevelPathNames(category.getLevelPathNames());
planGoods.setQty(goodsBo.getQty());
salePlanGoods.add(planGoods);
}
}
return salePlanGoods;
}
}

2
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -798,7 +798,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
temp.setActivityId(activity.getId());
temp.setSupplierName(supplier.getSupplierName());
temp.setSupplierCode(supplier.getSupplierCode());
//temp.setAmount(activity.get);
temp.setAmount(activity.getTotalAmount().subtract(activity.getUsedAmount()));
return buildSeeYonVerificationData(activity,sysUser,temp,saleBizNames,bizBizNames);
}

Loading…
Cancel
Save