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 @AllArgsConstructor
public enum SourceKey{ public enum SourceKey{
CostApply("cost_apply"), CostApply("cost_apply"),
SalePlan("SalePlan"),
Activity("activity"), Activity("activity"),
Verification("verification"), Verification("verification"),
Policy("policy"), 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); 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 * @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; private String type;
/** 表达式 */ /** 表达式 */
@NotBlank(message = "表达式不能为空")
@Length(max = 255,message = "表达式长度不能超过255字")
private String express; private String express;
/** 启用状态 */ /** 启用状态 */
private Integer enableFlag; private Integer enableFlag;
/** 信息 */ /** 信息 */
@NotBlank(message = "信息不能为空")
@Length(max = 255,message = "信息长度不能超过255字")
private String message; 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); String jsonString = JsonUtil.objectToJson(seeyonData);
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
if(StringUtils.hasText(param.getTestJsString())){ if(param.getTestJsString()!=null){
String js = "function checkCostRate (){" + String js = "function checkCostRate (){" +
"\n var jsonStr = '"+jsonString+"';" + "\n var jsonStr = '"+jsonString+"';" +
"\n var data= JSON.parse(jsonStr);" + "\n var data= JSON.parse(jsonStr);" +
"\n console.log('checkCostRate() data',data);" + //"\n console.log('checkCostRate() data',data);" +
param.getTestJsString() + param.getTestJsString() +
"\n}"; "\n}";
result.add(js); result.add(js);
@ -57,12 +57,12 @@ public class BmsApplyMessageServiceImpl extends ServiceImpl<BmsApplyMessageMappe
LambdaQueryWrapper<BmsApplyMessage> msgLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsApplyMessage> msgLqw = new LambdaQueryWrapper<>();
msgLqw.eq(BmsApplyMessage::getType, param.getTargetType()); msgLqw.eq(BmsApplyMessage::getType, param.getTargetType());
msgLqw.eq(BmsApplyMessage::getEnableFlag,1); msgLqw.eq(BmsApplyMessage::getEnableFlag,1);
List<BmsApplyMessage> applyMessageList = new ArrayList<>(); List<BmsApplyMessage> applyMessageList = super.list(msgLqw);
for (BmsApplyMessage applyMessage : applyMessageList) { for (BmsApplyMessage applyMessage : applyMessageList) {
String js = "function checkCostRate (){" + String js = "function checkCostRate (){" +
"\n var jsonStr = '"+jsonString+"';" + "\n var jsonStr = '"+jsonString+"';" +
"\n var data= JSON.parse(jsonStr);" + "\n var data= JSON.parse(jsonStr);" +
"\n console.log('checkCostRate() data',data);" + //"\n console.log('checkCostRate() data',data);" +
applyMessage.getExpress() + applyMessage.getExpress() +
"\n}"; "\n}";
result.add(js); 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.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -99,6 +100,9 @@ public class SalePlan implements Serializable {
@TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.UPDATE)
private String updateBy; private String updateBy;
/** 销售计划商品list */
@TableField(exist = false)
private List<SalePlanGoods> planGoodsList;
public static SalePlan toNewObject(SalePlan source){ public static SalePlan toNewObject(SalePlan source){
SalePlan plan = new SalePlan(); 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; 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 * @author YenHex
* @since 2023/9/20 * @since 2023/9/20
*/ */
@Data
public class SalePlanBo { 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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.sale.entity.SalePlanGoods; 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 * 销售计划商品 Mapper
@ -10,5 +13,8 @@ import com.qs.serve.modules.sale.entity.SalePlanGoods;
*/ */
public interface SalePlanGoodsMapper extends BaseMapper<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.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.sale.entity.SalePlan; 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> { 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; package com.qs.serve.modules.sale.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; 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.service.SalePlanService;
import com.qs.serve.modules.sale.mapper.SalePlanMapper; import com.qs.serve.modules.sale.mapper.SalePlanMapper;
import java.util.ArrayList;
import java.util.List;
/** /**
* 销售计划 服务实现类 * 销售计划 服务实现类
* @author YenHex * @author YenHex
@ -18,5 +40,97 @@ import com.qs.serve.modules.sale.mapper.SalePlanMapper;
@AllArgsConstructor @AllArgsConstructor
public class SalePlanServiceImpl extends ServiceImpl<SalePlanMapper,SalePlan> implements SalePlanService { 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.setActivityId(activity.getId());
temp.setSupplierName(supplier.getSupplierName()); temp.setSupplierName(supplier.getSupplierName());
temp.setSupplierCode(supplier.getSupplierCode()); temp.setSupplierCode(supplier.getSupplierCode());
//temp.setAmount(activity.get); temp.setAmount(activity.getTotalAmount().subtract(activity.getUsedAmount()));
return buildSeeYonVerificationData(activity,sysUser,temp,saleBizNames,bizBizNames); return buildSeeYonVerificationData(activity,sysUser,temp,saleBizNames,bizBizNames);
} }

Loading…
Cancel
Save