Browse Source

perf:优化订单查询6秒变1秒

feat: SPU编码重复拦截
fix:修复协议类状态异常
fix: 修复预算缺失项异常
checkBack
Yen 1 year ago
parent
commit
de5b418c5b
  1. 2
      src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java
  2. 5
      src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java
  3. 2
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  4. 2
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java
  5. 9
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  6. 7
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java
  7. 14
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  8. 3
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java
  9. 3
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java
  10. 1
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  11. 2
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  12. 9
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java
  13. 25
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java
  14. 128
      src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java
  15. 19
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java
  16. 62
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java
  17. 3
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java
  18. 1
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java
  19. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java
  20. 2
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  21. 2
      src/main/java/com/qs/serve/task/TbsTask.java
  22. 2
      src/main/resources/application.yml

2
src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java

@ -92,7 +92,7 @@ public class HttpServletRequestFilter implements Filter{
}
} catch (Exception e) {}
if(diffTime< 1D){
log.debug(buffer.toString());
log.info(buffer.toString());
}else if (diffTime< 20D){
log.warn(buffer.toString());
}else {

5
src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java

File diff suppressed because one or more lines are too long

2
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -75,13 +75,11 @@ public class BmsSupplier implements Serializable {
/** 名称 */
@NotBlank(message = "名称不能为空")
@Length(max = 20,message = "名称长度不能超过20字")
@TableField(condition = SqlCondition.LIKE)
private String name;
/** 客户编码 */
@NotBlank(message = "客户编码不能为空")
@Length(max = 20,message = "客户编码长度不能超过20字")
@TableField(condition = SqlCondition.LIKE)
private String code;

2
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java

@ -37,12 +37,10 @@ public class BmsSupplierBo {
/** 名称 */
@NotBlank(message = "名称不能为空")
@Length(max = 20,message = "名称长度不能超过20字")
private String name;
/** 客户编码 */
@NotBlank(message = "客户编码不能为空")
@Length(max = 20,message = "客户编码长度不能超过20字")
private String code;
/** 父级id,0表总公司无上级 */

9
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java

@ -273,6 +273,15 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
goodsSku.setId(dbGoodSku.getId());
}
//code必须唯一
Long countCode = super.getBaseMapper().selectCount(new LambdaQueryWrapper<GoodsSku>()
.ne(GoodsSku::getId,dbGoodSku.getId())
.eq(GoodsSku::getSkuCode,goodSkuVo.getSkuCode())
);
if(countCode>0L){
Assert.throwEx("编码必须唯一");
}
//拓展spu
GoodsSpu goodsSpu = goodsSpuMapper.selectById(goodsSku.getSpuId());
if(goodsSpu==null){

7
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java

@ -174,6 +174,13 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
GoodsCategory category = goodsCategoryService.getById(param.getCategoryId());
relateCate(spu,category);
}
Long count = super.baseMapper.selectCount(new LambdaQueryWrapper<GoodsSpu>()
.ne(param.getId()!=null,GoodsSpu::getId,param.getId())
.eq(GoodsSpu::getSpuCode,param.getSpuCode())
);
if(count>0){
Assert.throwEx("编码不可重复");
}
this.saveOrUpdate(spu);
insertSpuSpec(spu.getId());
return spu;

14
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -40,6 +40,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_STATUS;
@ -170,6 +171,14 @@ public class OmsOrderApi {
addrIds.add(0L);
List<BmsSupplierAddress> supplierAddressList = bmsSupplierAddressService.listByIds(addrIds);
List<Long> orderIds = list.stream().map(OmsOrder::getId).collect(Collectors.toList());
orderIds.add(0L);
LambdaQueryWrapper<OmsOrderItem> lqw = new LambdaQueryWrapper<>();
lqw.in(OmsOrderItem::getOrderId,orderIds);
List<OmsOrderItem> allItems = omsOrderItemService.list(lqw);
Map<Long,List<OmsOrderItem>> itemsMap = allItems.stream().collect(Collectors.groupingBy(OmsOrderItem::getOrderId));
for (OmsOrder order : list) {
omsOrderService.checkMsOrderStatus(order);
@ -185,10 +194,7 @@ public class OmsOrderApi {
}
}
LambdaQueryWrapper<OmsOrderItem> lqw = new LambdaQueryWrapper<>();
lqw.eq(OmsOrderItem::getOrderId,order.getId());
List<OmsOrderItem> items = omsOrderItemService.list(lqw);
order.setOrderItems(items);
order.setOrderItems(itemsMap.get(order.getId()));
}
return R.byPageHelperList(list);

3
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java

@ -26,6 +26,9 @@ public class OmsOrderBo {
/** 品牌规则ID */
private Long brandRuleId;
/** CD单据备注 */
private String cdOrderRemark;
/** 购物车ID(购物车方式下单) */
private List<Long> shoppingCartIds;

3
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java

@ -33,6 +33,9 @@ public class OmsOrderSkuBo {
/** 立刻下单标识 */
private Integer instantFlag;
/** CD单据备注 */
private String cdOrderRemark;
/** 收货地址 */
private Long addressId;

1
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -445,6 +445,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
confirmOrder.setLatitudeFrom("SPU");
confirmOrder.setOrderSource(omsOrderBo.getOrderSource());
CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam();
createOrderParam.setCdOrderRemark(omsOrderBo.getCdOrderRemark());
OmsOrder order = this.buildOmsOrder(confirmOrder, createOrderParam);
if(omsOrderBo.getInstantFlag()!=null&&omsOrderBo.getInstantFlag().equals(1)){
this.buildPriceOrder(order.getId()+"",null);

2
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java

@ -110,8 +110,6 @@ public class TbsActivityController {
@GetMapping("/resetList")
public R<?> reset(){
Long[] ids = new Long[]{
367411L,370962L,371944L,1664621L,1664735L,1670003L,1670540L,1670543L,1670848L,1672047L,1673700L,1673831L
,1673871L,1674351L,1674356L,1675523L,1676292L,1678649L,1676360L,1678659L,1677127L,1679655L,1680396L,1683464L
};
for (Long id : ids) {
tbsActivityDebugApplicationService.reset(id);

9
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java

@ -15,6 +15,7 @@ import com.qs.serve.modules.bms.service.BmsDutyInfoService;
import com.qs.serve.modules.sys.entity.SysAttach;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.tbs.entity.bo.TbsCostContractBo;
import com.qs.serve.modules.tbs.service.TbsCostContractApplication;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -41,6 +42,14 @@ public class TbsCostContractController {
private TbsCostContractService tbsCostContractService;
private SysAttachService attachService;
private BmsDutyInfoService bmsDutyInfoService;
private TbsCostContractApplication tbsCostContractApplication;
@GetMapping("resetRelease")
public R<?> getById(){
tbsCostContractApplication.resetState();
return R.ok();
}
/**
* 列表

25
src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java

@ -1,10 +1,14 @@
package com.qs.serve.modules.tbs.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.tbs.entity.TbsActivityPayCondition;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* 活动支付条件 Mapper
* @author YenHex
@ -13,6 +17,27 @@ import org.apache.ibatis.annotations.Update;
public interface TbsActivityPayConditionMapper extends BaseMapper<TbsActivityPayCondition> {
@InterceptorIgnore(tenantLine = "1")
@Select("select " +
"tbs_cost_apply.id " +
" from tbs_cost_apply " +
"left join ( " +
" select cost_apply_id,count(*) as total_contract from tbs_activity_pay_condition " +
" where del_flag = 0 " +
" group by cost_apply_id " +
") t1 on t1.cost_apply_id = tbs_cost_apply.id " +
"left join ( " +
" select cost_apply_id,count(*) as total_vtb from vtb_verification " +
" where del_flag = 0 " +
" group by cost_apply_id " +
") t2 on t2.cost_apply_id = tbs_cost_apply.id " +
"where " +
"tbs_cost_apply.del_flag = 0 " +
"and tbs_cost_apply.charge_state !=3 " +
"and tbs_cost_apply.contract_flag = 1 " +
"and t1.total_contract = t2.total_vtb")
List<Long> getFinishedCostId();
@Update("update `tbs_activity_pay_condition` set pre_notify_time = null where id = #{id}")
void updateSetNotifyTimeNull(@Param("id")String id);

128
src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.vtb.entity.VtbVerification;
@ -39,7 +40,7 @@ public class TbsActivityDebugApplicationService {
private TbsActivityCenterGoodsService activityCenterGoodsService;
private TbsBudgetLogService budgetLogService;
private VtbVerificationMapper verificationMapper;
//private VtbVerificationSubjectMapper verificationSubjectMapper;
private TbsCostApplyMapper tbsCostApplyMapper;
public String reset(Long activityId){
@ -50,16 +51,29 @@ public class TbsActivityDebugApplicationService {
TbsActivity activity = activityMapper.selectById(activityId);
TbsCostApply costApply = tbsCostApplyMapper.selectById(activity.getCostApplyId());
if(costApply.getPolicyItemId()!=null){
log.warn("随货折让不支持该方法");
return "随货折让不支持该方法";
}
//过滤 CA SHX YX06 PortalOfCostApplication.createCostProcess()
if(StringUtils.hasText(costApply.getBillNumber())||StringUtils.hasText(costApply.getDisCode())){
log.warn("方法仅支持普通订单");
return "方法仅支持普通订单";
}
BigDecimal checkeAmt = activity.getUsedAmount();
if(activity.getReleaseFlag().equals(1)){
checkeAmt = checkeAmt.add(activity.getReleaseAmount());
}
if(checkeAmt.compareTo(activity.getTotalAmount())>0){
log.warn("活动自身金额异常");
return "活动自身金额异常";
}
Long unMatchNum = activitySubjectMapper.checkActAndSubjectAmt(activityId);
if(unMatchNum!=null&&unMatchNum>0){
log.warn("活动科目金额异常");
return "活动科目金额异常";
}
@ -87,6 +101,7 @@ public class TbsActivityDebugApplicationService {
List<TbsActivityCenter> subjectCenterList = activityCenterListMap.get(subjectId);
BigDecimal totalCenterRate = BigDecimal.ZERO;
BigDecimal totalCenterAmt = BigDecimal.ZERO;
BigDecimal totalCenterUsedAmt = BigDecimal.ZERO;
BigDecimal subjectUsedAmt = activitySubject.getUsedAmount();
BigDecimal subjectAmt = activitySubject.getAmount();
@ -97,11 +112,10 @@ public class TbsActivityDebugApplicationService {
if(activityCenter.getCenterAmount().compareTo(BigDecimal.ZERO)>=0){
totalCenterAmt = totalCenterAmt.add(activityCenter.getCenterAmount());
}
totalCenterUsedAmt = totalCenterUsedAmt.add(activityCenter.getUsedAmount());
}
boolean isUpdateCenter = false;
if(n100.compareTo(totalCenterRate)!=0){
log.warn("centerRate不为100:{}",activityId);
isUpdateCenter = true;
log.info("重新分配TbsActivityCenter的比例");
BigDecimal centerRate = n100;
for (int i = 0; i < subjectCenterList.size(); i++) {
TbsActivityCenter activityCenter = subjectCenterList.get(i);
@ -115,10 +129,65 @@ public class TbsActivityDebugApplicationService {
}
}
}
// 分配占用金额
// 更新subject的已用金额
if(subjectUsedAmt==null || totalCenterUsedAmt.compareTo(subjectUsedAmt)!=0){
log.info("成本中心和科目已用金额不匹配");
BigDecimal totalUsedOnCenter = BigDecimal.ZERO;
for (TbsActivityCenter center : activityCenterList) {
totalUsedOnCenter = totalUsedOnCenter.add(center.getUsedAmount());
}
if(0 == totalUsedOnCenter.compareTo(activity.getUsedAmount())){
log.info("通过center更新subject金额");
subjectUsedAmt = BigDecimal.ZERO;
for (TbsActivityCenter center : subjectCenterList) {
subjectUsedAmt = subjectUsedAmt.add(center.getUsedAmount());
}
activitySubject.setUsedAmount(subjectUsedAmt);
updateSubject = true;
}else if (activitySubjectList.size()==1){
subjectUsedAmt = activity.getUsedAmount();
activitySubject.setUsedAmount(subjectUsedAmt);
log.info("更新TbsActivityCenter的已用金额");
BigDecimal totalCenterSubjectRate = BigDecimal.ZERO;
for (TbsActivityCenter center : subjectCenterList) {
totalCenterSubjectRate = totalCenterSubjectRate.add(center.getCenterRate());
}
if(totalCenterSubjectRate.compareTo(n100)!=0){
log.info("更新TbsActivityCenter的比率");
BigDecimal avgRate = n100.divide(new BigDecimal(subjectCenterList.size()),2,RoundingMode.DOWN);
BigDecimal addRate = BigDecimal.ZERO;
for (int i = 0; i < subjectCenterList.size(); i++) {
TbsActivityCenter center = subjectCenterList.get(i);
if(i+1 == subjectCenterList.size()){
center.setCenterRate(n100.subtract(addRate));
}else {
center.setCenterRate(avgRate);
addRate = avgRate.add(avgRate);
}
}
}
BigDecimal totalUsed11 = BigDecimal.ZERO;
for (int i = 0; i < subjectCenterList.size(); i++) {
log.info("更新TbsActivityCenter的已用");
TbsActivityCenter center = subjectCenterList.get(i);
if(i+1 == subjectCenterList.size()){
center.setUsedAmount(subjectUsedAmt.subtract(totalUsed11));
}else {
BigDecimal curAmt = subjectUsedAmt.multiply(center.getCenterRate()).divide(n100,2,RoundingMode.DOWN);
center.setUsedAmount(curAmt);
totalUsed11 = totalUsed11.add(curAmt);
}
}
}else {
log.info("成本中心和科目已用金额不匹配,而且活动金额也不匹配");
return "成本中心和科目已用金额不匹配,而且活动金额也不匹配";
}
}
// 分配center的占用金额和已用金额
if(totalCenterAmt.compareTo(activitySubject.getAmount())!=0){
log.warn("合计金额异常,将重新分配活动的成本中心金额");
isUpdateCenter = true;
log.info("重新分配TbsActivityCenter的CenterAmount");
BigDecimal centerAmt = subjectAmt;
BigDecimal centerUsedAmt = subjectUsedAmt;
for (int i = 0; i < subjectCenterList.size(); i++) {
@ -148,14 +217,6 @@ public class TbsActivityDebugApplicationService {
}
}
}
if(subjectUsedAmt==null){
subjectUsedAmt = BigDecimal.ZERO;
for (TbsActivityCenter center : subjectCenterList) {
subjectUsedAmt = subjectUsedAmt.add(center.getUsedAmount());
}
activitySubject.setUsedAmount(subjectUsedAmt);
updateSubject = true;
}
List<TbsActivityCenterGoods> activityCenterGoodsListOfSubject = activityCenterGoodsListMap.get(subjectId);
@ -175,7 +236,7 @@ public class TbsActivityDebugApplicationService {
}
//重新分配比率
if(totalGoodRate.compareTo(n100)!=0){
log.warn("totalGoodRate不为100,重新分配");
log.info("重新分配申请Rate");
BigDecimal avgRate = n100.divide(new BigDecimal(goodsList.size()),2,RoundingMode.DOWN);
BigDecimal addRate = BigDecimal.ZERO;
for (int i = 0; i < goodsList.size(); i++) {
@ -191,6 +252,7 @@ public class TbsActivityDebugApplicationService {
//分配申请金额
BigDecimal centerAmt3 = centerAmt;
log.info("重新分配申请金额");
for (int i = 0; i < goodsList.size(); i++) {
TbsActivityCenterGoods goods = goodsList.get(i);
if(i+1 == goodsList.size()){
@ -204,8 +266,9 @@ public class TbsActivityDebugApplicationService {
}
}
//分配已用金额
//分配TbsActivityCenterGoods已用金额
BigDecimal centerUsed2 = centerUsed;
log.info("重新分配已用金额");
for (int i = 0; i < goodsList.size(); i++) {
TbsActivityCenterGoods goods = goodsList.get(i);
if(i+1 == goodsList.size()){
@ -224,6 +287,8 @@ public class TbsActivityDebugApplicationService {
//二次校验
BigDecimal totalSubjectAmt = BigDecimal.ZERO;
BigDecimal totalSubjectUsedAmt = BigDecimal.ZERO;
BigDecimal totalAllCenterUsedAmt = BigDecimal.ZERO;
for (TbsActivitySubject activitySubject : activitySubjectList) {
Long subjectId = activitySubject.getSubjectId();
List<TbsActivityCenter> subjectCenterList = activityCenterListMap.get(subjectId);
@ -234,19 +299,21 @@ public class TbsActivityDebugApplicationService {
BigDecimal subjectUsedAmt = activitySubject.getUsedAmount();
BigDecimal subjectAmt = activitySubject.getAmount();
totalSubjectAmt = totalSubjectAmt.add(subjectAmt);
totalSubjectUsedAmt = totalSubjectUsedAmt.add(activitySubject.getUsedAmount());
for (TbsActivityCenter activityCenter : subjectCenterList) {
totalCenterRate = totalCenterRate.add(activityCenter.getCenterRate());
totalCenterAmt = totalCenterAmt.add(activityCenter.getCenterAmount());
totalCenterUsedAmt = totalCenterUsedAmt.add(activityCenter.getUsedAmount());
}
totalAllCenterUsedAmt = totalAllCenterUsedAmt.add(totalCenterUsedAmt);
if(totalCenterAmt.compareTo(subjectAmt)!=0){
log.error("合计totalCenterUsedAmt金额异常:{}",activityId);
return "合计totalCenterUsedAmt金额异常";
log.error("合计totalCenterAmt金额异常:{}",activityId);
return "合计totalCenterAmt金额异常";
}
if(totalCenterUsedAmt.compareTo(subjectUsedAmt)!=0){
log.error("合计subjectUsedAmt金额异常,将重新分配活动的成本中心金额:{}",activityId);
return "合计subjectUsedAmt金额异常";
log.error("合计totalCenterUsedAmt金额异常,将重新分配活动的成本中心金额:{}",activityId);
return "合计totalCenterUsedAmt金额异常";
}
if(n100.compareTo(totalCenterRate)!=0){
log.error("centerRate不为100:{}",activityId);
@ -287,12 +354,20 @@ public class TbsActivityDebugApplicationService {
}
}
if(activity.getUsedAmount().compareTo(totalSubjectUsedAmt)!=0){
log.error("活动和totalSubjectUsedAmt匹对金额异常:{}",activityId);
return "活动和totalSubjectUsedAmt匹对金额异常";
}
if(totalSubjectUsedAmt.compareTo(totalAllCenterUsedAmt)!=0){
log.error("活动和totalAllCenterUsedAmt匹对金额异常:{}",activityId);
return "活动和totalAllCenterUsedAmt匹对金额异常";
}
if(activity.getTotalAmount().compareTo(totalSubjectAmt)!=0){
log.error("科目和活动的申请金额不匹配");
return "科目和活动的申请金额不匹配";
}
// 处理预算占用
List<TbsBudgetLog> actBudgetLogs = budgetLogService.list(wrapper);
@ -305,13 +380,12 @@ public class TbsActivityDebugApplicationService {
BigDecimal releaseAmt = totalBudgetLogAmount(releaseLogs);
//检查下占用预算和释放
if(applyAmt.compareTo(activity.getTotalAmount())!=0){
log.warn("历史预算占用金额异常");
if(applyAmt.negate().compareTo(activity.getTotalAmount())!=0){
log.info("历史预算占用金额异常");
}
if(activity.getReleaseAmount()!=null && releaseAmt.compareTo(activity.getReleaseAmount())!=0){
log.warn("历史预算释放金额异常");
log.info("历史预算释放金额异常");
}
List<TbsBudgetLog> newApplyLogList = new ArrayList<>();

19
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.tbs.service;
import java.util.ArrayList;
import java.util.List;
/**
* @author YenHex
* @since 2024/5/28
*/
public class TbsBudgetReleaseApplicationService {
public void check(){
//校验活动的核销金额是否匹配,不匹配则中断
//查询需要补偿释放的活动ID
List<Long> activitIds = new ArrayList<>();
}
}

62
src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java

@ -0,0 +1,62 @@
package com.qs.serve.modules.tbs.service;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityPayCondition;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.mapper.TbsActivityPayConditionMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author YenHex
* @since 2024/5/28
*/
@Slf4j
@Service
@AllArgsConstructor
public class TbsCostContractApplication {
private final TbsActivityPayConditionMapper activityPayConditionMapper;
private final TbsActivityPayConditionService activityPayConditionService;
private final TbsActivityService tbsActivityService;
private final TbsCostApplyService tbsCostApplyService;
public void resetState(){
//更新遗漏的已完成费用申请
List<Long> costIds = activityPayConditionMapper.getFinishedCostId();
if(CollUtil.isNotEmpty(costIds)){
List<TbsCostApply> costApplyList = tbsCostApplyService.listByIds(costIds);
for (TbsCostApply costApply : costApplyList) {
costApply.setChargeState(3);
costApply.setCheckState(1);
}
tbsCostApplyService.updateBatchById(costApplyList);
//更新状态
activityPayConditionService.update(new LambdaUpdateWrapper<TbsActivityPayCondition>()
.set(TbsActivityPayCondition::getFinishedFlag,1)
.in(TbsActivityPayCondition::getCostApplyId,costIds));
List<TbsActivity> activityList = tbsActivityService.list(new LambdaQueryWrapper<TbsActivity>()
.in(TbsActivity::getCostApplyId,costIds));
for (TbsActivity activity : activityList) {
if(activity.getUsedAmount().compareTo(activity.getTotalAmount())==0){
activity.setActivityState(TbsActivityState.STATE_1_Finished);
}else {
//不进行直接释放,通过补充释放,最终一次性修复
activity.setReleaseFlag(1);
activity.setReleaseAmount(activity.getTotalAmount().subtract(activity.getUsedAmount()));
activity.setActivityState(TbsActivityState.STATE_4_Release);
}
}
tbsActivityService.updateBatchById(activityList);
}
}
}

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

@ -16,6 +16,7 @@ import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.service.TbsBudgetLogService;
import com.qs.serve.modules.tbs.service.TbsBudgetService;
import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -34,6 +35,7 @@ import java.util.List;
@AllArgsConstructor
public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationService {
private final TbsBudgetService budgetService;
private final TbsBudgetMapper budgetMapper;
private final TbsBudgetLogService budgetLogService;
private final TbsScheduleItemBudgetService scheduleItemBudgetService;
@ -102,6 +104,7 @@ public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationServic
budgetLogService.saveBatch(budgetLogList);
}
budgetMapper.updateConFlag();
budgetService.syncMissSchItem();
return null;
}

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

@ -81,6 +81,7 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
budgetBatch.setFinishedTime(LocalDateTime.now());
budgetBatchService.updateById(budgetBatch);
tbsBudgetMapper.updateConFlag();
tbsBudgetService.syncMissSchItem();
return null;
}

2
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java

@ -35,6 +35,7 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationService {
private TbsBudgetService budgetService;
private TbsBudgetMapper budgetMapper;
private TbsBudgetChangeMapper budgetChangeMapper;
private TbsBudgetConditionService tbsBudgetConditionService;
@ -142,6 +143,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi
}
}
budgetMapper.updateConFlag();
budgetService.syncMissSchItem();
}
/**

2
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -83,6 +83,7 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class PortalOfCostApplication {
private TbsCostContractApplication costContractApplication;
private SysUserCodeMathMapper userCodeMathMapper;
private final SysSyncLogService sysSyncLogService;
private SysTableTempMapper sysTableTempMapper;
@ -1155,6 +1156,7 @@ public class PortalOfCostApplication {
}
// 修复没有vtbFundFlow异常,并修复活动状态
verificationService.successCommit(verification.getId(),false);
costContractApplication.resetState();
}

2
src/main/java/com/qs/serve/task/TbsTask.java

@ -82,7 +82,7 @@ public class TbsTask {
}
//启用和停用模板规则
@Scheduled(cron="0 0 1 * * ?")
//@Scheduled(cron="0 0 1 * * ?")
public void task2(){

2
src/main/resources/application.yml

@ -56,7 +56,7 @@ mybatis-plus:
logging:
level:
ROOT: info
#com.qs.serve: debug
com.qs.serve: debug
#com.qs.serve.modules.his: info
#com.qs.serve.modules.sys: debug
com.qs.serve.modules.tag: info

Loading…
Cancel
Save