Browse Source

预算调整

mssql
Yen 3 years ago
parent
commit
db26d50338
  1. 12
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  2. 14
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java
  3. 96
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  4. 63
      src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml

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

@ -78,8 +78,6 @@ public class TbsBudgetController {
return R.ok(tbsBudget);
}
/**
* 更新
* @param param
@ -89,9 +87,8 @@ public class TbsBudgetController {
@SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tbs:budget:update')")
public R<?> updateById(@RequestBody @Valid TbsBudgetBo param){
TbsBudget entity = CopierUtil.copy(param,new TbsBudget());
boolean result = tbsBudgetService.updateById(entity);
return R.isTrue(result);
tbsBudgetService.modify(param);
return R.ok();
}
/**
@ -103,9 +100,8 @@ public class TbsBudgetController {
@SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.INSERT)
@PreAuthorize("hasRole('tbs:budget:insert')")
public R<?> save(@RequestBody @Valid TbsBudgetBo param){
TbsBudget entity = CopierUtil.copy(param,new TbsBudget());
boolean result = tbsBudgetService.save(entity);
return R.isTrue(result);
tbsBudgetService.modify(param);
return R.ok();
}
/**

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

@ -14,7 +14,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 预算 Bo
* @author YenHex
@ -44,7 +44,19 @@ public class TbsBudgetBo implements Serializable {
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 品牌Id列表 */
private List<Long> brandIds;
/** 品类Id列表 */
private List<Long> categoryIds;
/** 系列Id列表 */
private List<Long> seriesIds;
/** 商品Id列表(前端显示为sku) */
private List<Long> spuIds;
/** skuId列表(前端显示为单品) */
private List<Long> skuIds;
}

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

@ -1,14 +1,27 @@
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.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil;
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.service.BmsCostCenterService;
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.service.GoodsCategoryService;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.TbsActivityGoods;
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition;
import com.qs.serve.modules.tbs.entity.TbsSchedule;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityGoodsBo;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo;
import com.qs.serve.modules.tbs.service.TbsBudgetConditionService;
import com.qs.serve.modules.tbs.service.TbsScheduleService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -17,6 +30,9 @@ import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.service.TbsBudgetService;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import java.util.*;
import java.util.stream.Collectors;
/**
* 预算 服务实现类
* @author YenHex
@ -30,10 +46,15 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
private final BmsSubjectService subjectService;
private final BmsCostCenterService costCenterService;
private final TbsScheduleService scheduleService;
private final TbsBudgetConditionService budgetConditionService;
private final GoodsSkuService goodsSkuService;
private final GoodsSpuService goodsSpuService;
private final GoodsCategoryService goodsCategoryService;
@Override
public void modify(TbsBudgetBo budgetBo) {
TbsBudget budget = null;
TbsBudget budget;
if(budgetBo.getId()!=null){
budget = this.getById(budgetBo.getId());
if(budget==null){
@ -54,10 +75,81 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
budget.setScheduleId(schedule.getId());
budget.setScheduleCode(schedule.getCode());
budget.setScheduleName(schedule.getName());
this.saveOrUpdate(budget);
//删除条件
if(budget.getId()!=null){
LambdaQueryWrapper<TbsBudgetCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId());
budgetConditionService.remove(lqw);
this.saveOrUpdate(budget);
}
//设置条件
List<TbsBudgetCondition> budgetConditions = new ArrayList<>();
if(CollectionUtil.isNotEmpty(budgetBo.getSkuIds())){
List<GoodsSku> skuList = goodsSkuService.listByIds(budgetBo.getSkuIds());
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(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());
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(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()));
budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getCategoryIds()));
budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getBrandIds()));
budgetConditionService.saveBatch(budgetConditions);
}
/**
* 建立类目条件
* @param budgetId
* @param categoryIds
* @return
*/
public List<TbsBudgetCondition> buildCategoryCondition(Long budgetId,List<Long> categoryIds){
List<TbsBudgetCondition> budgetConditions = new ArrayList<>();
if(CollectionUtil.isNotEmpty(categoryIds)){
List<GoodsCategory> categoryList = goodsCategoryService.listByIds(categoryIds);
for (GoodsCategory category : categoryList) {
TbsBudgetCondition condition = new TbsBudgetCondition();
condition.setBudgetId(budgetId);
condition.setTargetType(TbsGoodsType.series.name());
condition.setTargetId(category.getId());
condition.setTargetCode(category.getCode());
condition.setTargetName(category.getName());
condition.setTargetLevelPathIds(category.getLevelPath());
condition.setTargetLevelPathNames(category.getLevelPathNames());
budgetConditions.add(condition);
}
}
return budgetConditions;
}
}

63
src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.tbs.mapper.TbsBudgetConditionMapper">
<resultMap id="tbsBudgetConditionMap" type="com.qs.serve.modules.tbs.entity.TbsBudgetCondition" >
<result property="id" column="id"/>
<result property="budgetId" column="budget_id"/>
<result property="targetType" column="target_type"/>
<result property="targetId" column="target_id"/>
<result property="targetCode" column="target_code"/>
<result property="targetName" column="target_name"/>
<result property="targetLevelPathIds" column="target_level_path_ids"/>
<result property="targetLevelPathNames" column="target_level_path_names"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="tenantId" column="tenant_id"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="tbsBudgetConditionSql">
tbs_budget_condition.`id`,
tbs_budget_condition.`budgt_id`,
tbs_budget_condition.`target_type`,
tbs_budget_condition.`target_id`,
tbs_budget_condition.`target_code`,
tbs_budget_condition.`target_name`,
tbs_budget_condition.`target_level_path_ids`,
tbs_budget_condition.`target_level_path_names`,
tbs_budget_condition.`remark`,
tbs_budget_condition.`create_time`,
tbs_budget_condition.`update_time`,
tbs_budget_condition.`tenant_id`,
tbs_budget_condition.`create_by`,
tbs_budget_condition.`update_by`,
tbs_budget_condition.`del_flag` </sql>
<select id="selectTbsBudgetConditionList" parameterType="com.qs.serve.modules.tbs.entity.TbsBudgetCondition" resultMap="tbsBudgetConditionMap">
SELECT
<include refid="tbsBudgetConditionSql"/>
FROM `tbs_budget_condition` `tbs_budget_condition`
<where>
<if test="query.id != null"> and `tbs_budget_condition`.`id` = #{query.id}</if>
<if test="query.budgtId != null"> and `tbs_budget_condition`.`budgt_id` = #{query.budgtId}</if>
<if test="query.targetType != null and query.targetType != ''"> and `tbs_budget_condition`.`target_type` = #{query.targetType}</if>
<if test="query.targetId != null"> and `tbs_budget_condition`.`target_id` = #{query.targetId}</if>
<if test="query.targetCode != null and query.targetCode != ''"> and `tbs_budget_condition`.`target_code` = #{query.targetCode}</if>
<if test="query.targetName != null and query.targetName != ''"> and `tbs_budget_condition`.`target_name` = #{query.targetName}</if>
<if test="query.remark != null and query.remark != ''"> and `tbs_budget_condition`.`remark` = #{query.remark}</if>
<if test="query.createTime != null"> and `tbs_budget_condition`.`create_time` = #{query.createTime}</if>
<if test="query.updateTime != null"> and `tbs_budget_condition`.`update_time` = #{query.updateTime}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `tbs_budget_condition`.`tenant_id` = #{query.tenantId}</if>
<if test="query.createBy != null and query.createBy != ''"> and `tbs_budget_condition`.`create_by` = #{query.createBy}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `tbs_budget_condition`.`update_by` = #{query.updateBy}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `tbs_budget_condition`.`del_flag` = #{query.delFlag}</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save