Browse Source

订单查询调整,跨年预算禁用支持

v1.0
Yen 2 years ago
parent
commit
4bb7b591ad
  1. 6
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  2. 34
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  3. 6
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  4. 3
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java
  5. 9
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetStateBo.java
  6. 6
      src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java
  7. 60
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java
  8. 20
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java
  9. 3
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java
  10. 1
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java
  11. 30
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  12. 48
      src/main/resources/mapper/goods/GoodsSpuMapper.xml

6
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -187,6 +187,12 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false)
private String keyword;
@TableField(exist = false)
private String keywordName;
@TableField(exist = false)
private String keywordCode;
@TableField(exist = false)
private Integer skuSpecialFlag;

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

@ -30,6 +30,7 @@ import com.qs.serve.modules.tbs.entity.so.TbsBudgetSo;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -196,15 +197,40 @@ public class TbsBudgetController {
}
/**
* 更新状态
* 更新跨年状态
* @param param
* @return
*/
@PostMapping("/updateState")
@PostMapping("/updateCrossYearState")
@SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tbs:budget:update')")
public R<?> updateById(@RequestBody @Valid TbsBudgetStateBo param){
tbsBudgetService.startBudget(param.getId());
TbsBudget budget = tbsBudgetService.getById(param.getId());
// LocalDate nowDate = LocalDate.now();
// int currYear = nowDate.getYear();
// List<TbsScheduleItem> scheduleItems = tbsScheduleItemService.listByScheduleId(budget.getScheduleId());
// budget.setCrossYearFlag(param.getCrossYearFlag());
// if(scheduleItems.size()>0){
// TbsScheduleItem s = scheduleItems.get(0);
// int year = s.getEndDate().getYear();
// int diff = currYear-year ;
// //默认值
// budget.setStopFlag(0);
// if(diff>1){
// //超过1年
// budget.setStopFlag(1);
// }else if (diff==1){
// //刚过1年期间
// if(!param.getCrossYearFlag().equals(1)){
// budget.setStopFlag(1);
// }
// }
// }else {
// //未设置周期,定义为停用
// budget.setStopFlag(1);
// }
budget.setCrossYearFlag(param.getCrossYearFlag());
tbsBudgetService.updateById(budget);
tbsBudgetService.syncStopFlag();
return R.ok();
}

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

@ -43,6 +43,12 @@ public class TbsBudget implements Serializable {
/** 费用启用状态 0/1 */
private Integer budgetState;
/** 停用状态 0/1 */
private Integer stopFlag;
/** 是否允许跨年,控制停用状态 */
private Integer crossYearFlag;
/** 审批流程状态 */
private Integer budgetCheckState;

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

@ -38,6 +38,9 @@ public class TbsBudgetBo implements Serializable {
@NotNull(message = "成本中心id不能为空")
private String centerId;
/** 是否允许跨年,控制停用状态 */
private Integer crossYearFlag;
/**
* 成本中心类型
center,

9
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetStateBo.java

@ -15,9 +15,12 @@ public class TbsBudgetStateBo {
@NotNull
private Long id;
//
// /** 费用启用状态 */
// @NotNull
// private Integer budgetState;
/** 费用启用状态 */
@NotNull
private Integer budgetState;
/** 是否允许跨年,控制停用状态 */
private Integer crossYearFlag;
}

6
src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java

@ -28,6 +28,12 @@ public class TbsBudgetSo implements Serializable {
private Integer budgetState;
/** 停用状态 0/1 */
private Integer stopFlag;
/** 是否允许跨年,控制停用状态 */
private Integer crossYearFlag;
/** 预算标题 */
private String budgetCode;

60
src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.so.TbsBudgetSo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@ -31,5 +32,64 @@ public interface TbsBudgetMapper extends BaseMapper<TbsBudget> {
@Update("update tbs_budget set center_combo = concat(center_type,'_',center_id) where id = #{budgetId}")
int updateBudgetComboCenter(@Param("budgetId")Long budgetId);
/**
* 查询未过期的预算ID
* @return
*/
@InterceptorIgnore(tenantLine = "true")
@Select("select tbs_budget.id " +
" from tbs_schedule_item " +
" left join tbs_budget on tbs_schedule_item.schedule_id = tbs_budget.schedule_id " +
" where YEAR(end_date) >= YEAR(CURRENT_DATE) " +
" and tbs_schedule_item.del_flag = 0 " +
" and tbs_budget.del_flag = 0 " +
" GROUP BY tbs_budget.id")
List<Long> selectNotExpireBudgetId();
/**
* 查询上年过期的预算ID
* @return
*/
@InterceptorIgnore(tenantLine = "true")
@Select("select tbs_budget.id " +
"from tbs_schedule_item " +
"left join tbs_budget on tbs_schedule_item.schedule_id = tbs_budget.schedule_id " +
"where YEAR(end_date) = YEAR(CURRENT_DATE) -1 " +
"and cross_year_flag = 0 " +
"and tbs_schedule_item.del_flag = 0 " +
"and tbs_budget.del_flag = 0 " +
"GROUP BY tbs_budget.id")
List<Long> selectLastYearStopBudgetId();
/**
* 查询未过期的预算ID
* @return
*/
@InterceptorIgnore(tenantLine = "true")
@Select("select tbs_budget.id " +
"from tbs_schedule_item " +
"left join tbs_budget on tbs_schedule_item.schedule_id = tbs_budget.schedule_id " +
"where YEAR(end_date) = YEAR(CURRENT_DATE) -1 " +
"and cross_year_flag = 1 " +
"and tbs_schedule_item.del_flag = 0 " +
"and tbs_budget.del_flag = 0 " +
"GROUP BY tbs_budget.id")
List<Long> selectLastYearPassBudgetId();
/**
* 一年前的过期的预算
* @return
*/
@InterceptorIgnore(tenantLine = "true")
@Select("select tbs_budget.id " +
"from tbs_schedule_item " +
"left join tbs_budget on tbs_schedule_item.schedule_id = tbs_budget.schedule_id " +
"where YEAR(end_date) < YEAR(CURRENT_DATE) -1 " +
"and tbs_schedule_item.del_flag = 0 " +
"and tbs_budget.del_flag = 0 " +
"GROUP BY tbs_budget.id ")
List<Long> selectExpireBudgetId();
}

20
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java

@ -4,17 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.AmountDTO;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.common.util.CostSort2WrapperUtil;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodsGroupDTO;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableResultVo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMatchMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
@ -34,6 +33,7 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class TbsBudgetMatchApplication {
private final TbsCostApplyMapper tbsCostApplyMapper;
private final TbsActivityCenterGoodsService tbsActivityCenterGoodsService;
private final TbsActivityService activityService;
private final TbsBudgetMatchMapper budgetMatchMapper;
@ -41,6 +41,8 @@ public class TbsBudgetMatchApplication {
public TbsBudgetTableResultVo getMatchResult(Long costApplyId,boolean buildTable){
TbsCostApply costApply = tbsCostApplyMapper.selectById(costApplyId);
List<TbsActivity> activityList = activityService.listByCostApplyId(costApplyId);
//list转map,减少循环代码
@ -79,11 +81,21 @@ public class TbsBudgetMatchApplication {
//加载金额统计
this.batchInitScheduleAmount(activityCenterGoodsList, scheduleItemBudgetIds,costApplyId);
//加载所有预算
allBudgetIds.add(0L);
List<TbsBudget> allBudgetList = budgetMapper.selectBatchIds(allBudgetIds);
Map<Long,TbsBudget> allBudgetMap = new HashMap<>(allBudgetList.size());
for (TbsBudget budget : allBudgetList) {
//不是回退和异动,需要过滤停用条件
if(!costApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())&&
!costApply.getChargeState().equals(TbsCostApplyState.State_7_changed.getCode())){
if(budget.getStopFlag().equals(1)){
continue;
}
}
allBudgetMap.put(budget.getId(),budget);
}

3
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java

@ -53,5 +53,8 @@ public interface TbsBudgetService extends IService<TbsBudget> {
void moveBudgetAmount(TbsBudgetMoveAmountBo bo);
void updateBudgetAfterStart(TbsBudgetUpdateAfterStartBo param);
void syncStopFlag();
}

1
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java

@ -50,6 +50,7 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService {
.or().in(TbsBudget::getSubjectId,subjectIds);
}).in(TbsBudget::getCenterCombo,centerComboList)
.eq(TbsBudget::getStopFlag,0)
.select(TbsBudget::getId);
List<TbsBudget> budgetList = budgetMapper.selectList(lqw);
return budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList());

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

@ -1109,5 +1109,35 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
buildCondition(budget.getId(),param.getBrandIds(),param.getCategoryIds(),param.getSeriesIds(),param.getSpuIds(),param.getSkuIds());
}
@Override
public void syncStopFlag() {
List<Long> budgetIds = baseMapper.selectLastYearPassBudgetId();
List<Long> budgetIds2 = baseMapper.selectNotExpireBudgetId();
List<Long> expireBudgetIds2 = baseMapper.selectLastYearStopBudgetId();
List<Long> expireBudgetIds = baseMapper.selectExpireBudgetId();
TbsBudget stopBudget = new TbsBudget();
stopBudget.setStopFlag(1);
TbsBudget numalBudget = new TbsBudget();
numalBudget.setStopFlag(0);
if(CollectionUtil.isNotEmpty(expireBudgetIds)){
this.update(stopBudget,new LambdaQueryWrapper<TbsBudget>().in(TbsBudget::getId,expireBudgetIds));
}
if(CollectionUtil.isNotEmpty(expireBudgetIds2)){
this.update(stopBudget,new LambdaQueryWrapper<TbsBudget>().in(TbsBudget::getId,expireBudgetIds2));
}
if(CollectionUtil.isNotEmpty(budgetIds)){
this.update(numalBudget,new LambdaQueryWrapper<TbsBudget>().in(TbsBudget::getId,budgetIds));
}
if(CollectionUtil.isNotEmpty(budgetIds2)){
this.update(numalBudget,new LambdaQueryWrapper<TbsBudget>().in(TbsBudget::getId,budgetIds2));
}
}
}

48
src/main/resources/mapper/goods/GoodsSpuMapper.xml

@ -178,6 +178,18 @@
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
<if test="query.keywordCode != null and query.keywordCode != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keywordCode},'%') or
`spu`.`spu_code` like concat('%', #{query.keywordCode},'%')
)
</if>
<if test="query.keywordName != null and query.keywordName != '' ">
and (
`sku`.`sku_name` like concat('%', #{query.keywordName},'%') or
`spu`.`name` like concat('%', #{query.keywordName},'%')
)
</if>
)
UNION ALL
SELECT sku.*,1 as rn FROM goods_sku sku
@ -191,6 +203,18 @@
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
<if test="query.keywordCode != null and query.keywordCode != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keywordCode},'%') or
`spu`.`spu_code` like concat('%', #{query.keywordCode},'%')
)
</if>
<if test="query.keywordName != null and query.keywordName != '' ">
and (
`sku`.`sku_name` like concat('%', #{query.keywordName},'%') or
`spu`.`name` like concat('%', #{query.keywordName},'%')
)
</if>
) AS goods_sku
left join goods_spu on goods_sku.spu_id = goods_spu.id
LEFT JOIN `goods_category` `cate1` ON `cate1`.`id` = `goods_spu`.`category_first`
@ -221,6 +245,18 @@
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
<if test="query.keywordCode != null and query.keywordCode != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keywordCode},'%') or
`spu`.`spu_code` like concat('%', #{query.keywordCode},'%')
)
</if>
<if test="query.keywordName != null and query.keywordName != '' ">
and (
`sku`.`sku_name` like concat('%', #{query.keywordName},'%') or
`spu`.`name` like concat('%', #{query.keywordName},'%')
)
</if>
)
UNION ALL
SELECT sku.*,1 as rn FROM goods_sku sku
@ -234,6 +270,18 @@
`spu`.`spu_code` like concat('%', #{query.keyword},'%')
)
</if>
<if test="query.keywordCode != null and query.keywordCode != '' ">
and (
`sku`.`sku_code` like concat('%', #{query.keywordCode},'%') or
`spu`.`spu_code` like concat('%', #{query.keywordCode},'%')
)
</if>
<if test="query.keywordName != null and query.keywordName != '' ">
and (
`sku`.`sku_name` like concat('%', #{query.keywordName},'%') or
`spu`.`name` like concat('%', #{query.keywordName},'%')
)
</if>
) AS goods_sku
left join goods_spu on goods_sku.spu_id = goods_spu.id
<where>

Loading…
Cancel
Save