From 95bdc7034540d8f14d4d2f05eb265ac45f41fb08 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 27 May 2024 10:36:27 +0800 Subject: [PATCH 01/19] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=A2=84=E7=AE=97=E5=8D=A0=E7=94=A8=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BirActivityCenterGoodsController.java | 4 +- .../impl/BirBaseActivityServiceImpl.java | 4 +- .../tbs/controller/TbsActivityController.java | 19 + .../tbs/mapper/TbsActivitySubjectMapper.java | 21 + .../tbs/mapper/TbsBudgetLogMapper.java | 3 +- .../TbsActivityDebugApplicationService.java | 401 ++++++++++++++++++ .../vtb/mapper/VtbVerificationMapper.java | 6 + src/main/resources/application.yml | 4 +- .../mapper/vtb/VtbVerfifcationMapper.xml | 18 + 9 files changed, 473 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java index c3a7aaf7..66d693c5 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java @@ -91,9 +91,9 @@ public class BirActivityCenterGoodsController { @GetMapping("/toSyncBirToday") public R toSyncBirEcro2(){ - Long[] ids = new Long[]{0L}; + //Long[] ids = new Long[]{0L}; //List ids = tbsActivityMapper.selectReleaseCostIds(); - //Set ids = tbsActivityCenterGoodsMapper.selectUpdateCostApplyIds(); + Set ids = tbsActivityCenterGoodsMapper.selectUpdateCostApplyIds(); List errIds = new ArrayList<>(); for (Long id : ids) { log.error("执行ID XXXX:{}",id); diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java index c64004fb..a331a087 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java @@ -52,9 +52,11 @@ public class BirBaseActivityServiceImpl extends ServiceImpl ids = activityList.stream().filter(a->a.getId()!=null) .map(TbsActivity::getId).collect(Collectors.toList()); LambdaQueryWrapper birBaseActivityLqw = new LambdaQueryWrapper<>(); - birBaseActivityLqw.in(BirBaseActivity::getCostApplyId,costId); + birBaseActivityLqw.eq(BirBaseActivity::getCostApplyId,costId); super.baseMapper.delete(birBaseActivityLqw); + //防空指针 + ids.add(0L); LambdaQueryWrapper activityLqw = new LambdaQueryWrapper<>(); activityLqw.in(TbsActivity::getId,ids); activityList = tbsActivityMapper.selectList(activityLqw); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 84de8b65..c12fa367 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -99,6 +99,25 @@ public class TbsActivityController { private final TbsCostApplyPart1Service tbsCostApplyPart1Service; private SysAttachService attachService; + TbsActivityDebugApplicationService tbsActivityDebugApplicationService; + + @GetMapping("/reset/{id}") + public R reset(@PathVariable("id") Long id){ + tbsActivityDebugApplicationService.reset(id); + return R.ok(); + } + + @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); + } + return R.ok(); + } /** * 列表 diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivitySubjectMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivitySubjectMapper.java index af9d510b..db35a273 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivitySubjectMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivitySubjectMapper.java @@ -2,6 +2,8 @@ package com.qs.serve.modules.tbs.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.tbs.entity.TbsActivitySubject; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** * 活动科目项 Mapper @@ -10,5 +12,24 @@ import com.qs.serve.modules.tbs.entity.TbsActivitySubject; */ public interface TbsActivitySubjectMapper extends BaseMapper { + @Select("select \n" + + " count(1) " + + "from tbs_activity \n" + + "left join tbs_cost_apply on tbs_activity.cost_apply_id = tbs_cost_apply.id\n" + + "left join (\n" + + "\tselect activity_id,sum(used_amount) as tal_used,count(1) as count_subject from tbs_activity_subject \n" + + "\twhere del_flag = 0 and activity_id = #{activityId} " + + "\tgroup by activity_id\n" + + ") act_info on act_info.activity_id = tbs_activity.id\n" + + "where tbs_activity.del_flag = 0 \n" + + "and tbs_cost_apply.del_flag = 0\n" + + "and tbs_cost_apply.charge_state in (1,2,3,7)\n" + + "and tbs_cost_apply.cancel_flag = 0\n" + + "and tbs_activity.cancel_flag = 0\n" + + "and tbs_activity.release_flag = 1\n" + + "and tbs_activity.id = #{activityId} " + + "and act_info.tal_used != tbs_activity.used_amount ") + Long checkActAndSubjectAmt(@Param("activityId") Long activityId); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java index 5900b809..3e0ce5be 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java @@ -1,5 +1,6 @@ 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.TbsBudgetLog; import com.qs.serve.modules.tbs.entity.TbsCostApply; @@ -67,7 +68,5 @@ public interface TbsBudgetLogMapper extends BaseMapper { " and (total_activity_amount-sum_budget>1 or sum_budget - total_activity_amount>1 )") List selectErrorThirtyCostId(); - - } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java new file mode 100644 index 00000000..b01f0254 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java @@ -0,0 +1,401 @@ +package com.qs.serve.modules.tbs.service; + +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.modules.tbs.entity.*; +import com.qs.serve.modules.tbs.mapper.*; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.entity.VtbVerificationSubject; +import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; +import com.qs.serve.modules.vtb.mapper.VtbVerificationSubjectMapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2024/5/25 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsActivityDebugApplicationService { + + private TbsActivityMapper activityMapper; + private TbsActivitySubjectService activitySubjectService; + private TbsActivitySubjectMapper activitySubjectMapper; + private TbsActivityCenterService activityCenterService; + private TbsActivityCenterGoodsService activityCenterGoodsService; + private TbsBudgetLogService budgetLogService; + private VtbVerificationMapper verificationMapper; + //private VtbVerificationSubjectMapper verificationSubjectMapper; + + public String reset(Long activityId){ + + BigDecimal n100 = new BigDecimal("100"); + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("activity_id",activityId); + + TbsActivity activity = activityMapper.selectById(activityId); + + BigDecimal checkeAmt = activity.getUsedAmount(); + if(activity.getReleaseFlag().equals(1)){ + checkeAmt = checkeAmt.add(activity.getReleaseAmount()); + } + if(checkeAmt.compareTo(activity.getTotalAmount())>0){ + return "活动自身金额异常"; + } + + Long unMatchNum = activitySubjectMapper.checkActAndSubjectAmt(activityId); + if(unMatchNum!=null&&unMatchNum>0){ + return "活动科目金额异常"; + } + + //校验核销金额,错误则不执行 + BigDecimal totalVerificationAmt = verificationMapper.getActivityVerificationAmt(activityId); + if(activity.getUsedAmount().compareTo(BigDecimal.ZERO)!=0 + &&activity.getUsedAmount().compareTo(totalVerificationAmt)!=0){ + return "核销金额异常"; + } + + // subject是和activity的 申请金额和核销金额一致,不进行更新 + List activitySubjectList = activitySubjectService.list(wrapper); + List activityCenterList = activityCenterService.list(wrapper); + List activityCenterGoodsList = activityCenterGoodsService.list(wrapper); + + Map> activityCenterGoodsListMap = activityCenterGoodsList.stream() + .collect(Collectors.groupingBy(TbsActivityCenterGoods::getSubjectId)); + + Map> activityCenterListMap = activityCenterList.stream() + .collect(Collectors.groupingBy(TbsActivityCenter::getSubjectId)); + + boolean updateSubject = false; + for (TbsActivitySubject activitySubject : activitySubjectList) { + Long subjectId = activitySubject.getSubjectId(); + List subjectCenterList = activityCenterListMap.get(subjectId); + BigDecimal totalCenterRate = BigDecimal.ZERO; + BigDecimal totalCenterAmt = BigDecimal.ZERO; + + BigDecimal subjectUsedAmt = activitySubject.getUsedAmount(); + BigDecimal subjectAmt = activitySubject.getAmount(); + for (TbsActivityCenter activityCenter : subjectCenterList) { + if(activityCenter.getCenterRate().compareTo(BigDecimal.ZERO)>=0){ + totalCenterRate = totalCenterRate.add(activityCenter.getCenterRate()); + } + if(activityCenter.getCenterAmount().compareTo(BigDecimal.ZERO)>=0){ + totalCenterAmt = totalCenterAmt.add(activityCenter.getCenterAmount()); + } + } + boolean isUpdateCenter = false; + if(n100.compareTo(totalCenterRate)!=0){ + log.warn("centerRate不为100:{}",activityId); + isUpdateCenter = true; + BigDecimal centerRate = n100; + for (int i = 0; i < subjectCenterList.size(); i++) { + TbsActivityCenter activityCenter = subjectCenterList.get(i); + if(i+1 == subjectCenterList.size()){ + activityCenter.setCenterRate(centerRate); + }else { + if(activityCenter.getCenterRate().compareTo(BigDecimal.ZERO)<0){ + activityCenter.setCenterRate(BigDecimal.ZERO); + } + centerRate = centerRate.subtract(activityCenter.getCenterRate()); + } + } + } + // 分配占用金额 + if(totalCenterAmt.compareTo(activitySubject.getAmount())!=0){ + log.warn("合计金额异常,将重新分配活动的成本中心金额"); + isUpdateCenter = true; + BigDecimal centerAmt = subjectAmt; + BigDecimal centerUsedAmt = subjectUsedAmt; + for (int i = 0; i < subjectCenterList.size(); i++) { + TbsActivityCenter activityCenter = subjectCenterList.get(i); + if(i+1 == subjectCenterList.size()){ + activityCenter.setCenterAmount(centerAmt); + }else { + BigDecimal currAmt = subjectAmt + .multiply(activityCenter.getCenterRate()) + .divide(n100, 2,RoundingMode.DOWN); + centerAmt = centerAmt.subtract(currAmt); + activityCenter.setCenterAmount(currAmt); + } + //设置已用金额 + if(subjectAmt.compareTo(subjectUsedAmt)==0){ + activityCenter.setUsedAmount(activityCenter.getCenterAmount()); + }else { + if(i+1 == subjectCenterList.size()){ + activityCenter.setUsedAmount(centerUsedAmt); + }else { + BigDecimal currAmt = subjectUsedAmt + .multiply(activityCenter.getCenterRate()) + .divide(n100, 2,RoundingMode.DOWN); + centerUsedAmt = centerUsedAmt.subtract(currAmt); + activityCenter.setUsedAmount(centerAmt); + } + } + } + } + if(subjectUsedAmt==null){ + subjectUsedAmt = BigDecimal.ZERO; + for (TbsActivityCenter center : subjectCenterList) { + subjectUsedAmt = subjectUsedAmt.add(center.getUsedAmount()); + } + activitySubject.setUsedAmount(subjectUsedAmt); + updateSubject = true; + } + + List activityCenterGoodsListOfSubject = activityCenterGoodsListMap.get(subjectId); + + for (TbsActivityCenter center : subjectCenterList) { + List goodsList = activityCenterGoodsListOfSubject.stream() + .filter(a->a.getCenterId().equals(center.getCenterId())&&a.getCenterType().equals(center.getCenterType())) + .collect(Collectors.toList()); + final BigDecimal centerUsed = center.getUsedAmount(); + final BigDecimal centerAmt = center.getCenterAmount(); + + BigDecimal totalGoodRate = BigDecimal.ZERO; + for (TbsActivityCenterGoods goods : goodsList) { + BigDecimal rate = goods.getCenterGoodsRate(); + if(rate.compareTo(BigDecimal.ZERO)>0){ + totalGoodRate = totalGoodRate.add(rate); + } + } + //重新分配比率 + if(totalGoodRate.compareTo(n100)!=0){ + log.warn("totalGoodRate不为100,重新分配"); + BigDecimal avgRate = n100.divide(new BigDecimal(goodsList.size()),2,RoundingMode.DOWN); + BigDecimal addRate = BigDecimal.ZERO; + for (int i = 0; i < goodsList.size(); i++) { + TbsActivityCenterGoods goods = goodsList.get(i); + if(i+1 == goodsList.size()){ + goods.setCenterGoodsRate(n100.subtract(addRate)); + }else { + goods.setCenterGoodsRate(avgRate); + addRate = addRate.add(avgRate); + } + } + } + + //分配申请金额 + BigDecimal centerAmt3 = centerAmt; + for (int i = 0; i < goodsList.size(); i++) { + TbsActivityCenterGoods goods = goodsList.get(i); + if(i+1 == goodsList.size()){ + goods.setCenterGoodsAmount(centerAmt3); + }else { + BigDecimal currentAmt = centerAmt + .multiply(goods.getCenterGoodsRate()) + .divide(n100,2,RoundingMode.DOWN); + goods.setCenterGoodsAmount(currentAmt); + centerAmt3 = centerAmt3.subtract(currentAmt); + } + } + + //分配已用金额 + BigDecimal centerUsed2 = centerUsed; + for (int i = 0; i < goodsList.size(); i++) { + TbsActivityCenterGoods goods = goodsList.get(i); + if(i+1 == goodsList.size()){ + goods.setUsedAmount(centerUsed2); + }else { + BigDecimal currentAmt = centerUsed + .multiply(goods.getCenterGoodsRate()) + .divide(n100,2,RoundingMode.DOWN); + goods.setUsedAmount(currentAmt); + centerUsed2 = centerUsed2.subtract(currentAmt); + } + } + } + + } + + //二次校验 + BigDecimal totalSubjectAmt = BigDecimal.ZERO; + for (TbsActivitySubject activitySubject : activitySubjectList) { + Long subjectId = activitySubject.getSubjectId(); + List subjectCenterList = activityCenterListMap.get(subjectId); + BigDecimal totalCenterRate = BigDecimal.ZERO; + BigDecimal totalCenterAmt = BigDecimal.ZERO; + BigDecimal totalCenterUsedAmt = BigDecimal.ZERO; + + BigDecimal subjectUsedAmt = activitySubject.getUsedAmount(); + BigDecimal subjectAmt = activitySubject.getAmount(); + totalSubjectAmt = totalSubjectAmt.add(subjectAmt); + + for (TbsActivityCenter activityCenter : subjectCenterList) { + totalCenterRate = totalCenterRate.add(activityCenter.getCenterRate()); + totalCenterAmt = totalCenterAmt.add(activityCenter.getCenterAmount()); + totalCenterUsedAmt = totalCenterUsedAmt.add(activityCenter.getUsedAmount()); + } + if(totalCenterAmt.compareTo(subjectAmt)!=0){ + log.error("合计totalCenterUsedAmt金额异常:{}",activityId); + return "合计totalCenterUsedAmt金额异常"; + } + if(totalCenterUsedAmt.compareTo(subjectUsedAmt)!=0){ + log.error("合计subjectUsedAmt金额异常,将重新分配活动的成本中心金额:{}",activityId); + return "合计subjectUsedAmt金额异常"; + } + if(n100.compareTo(totalCenterRate)!=0){ + log.error("centerRate不为100:{}",activityId); + return "centerRate不为100"; + } + List activityCenterGoodsListOfSubject = activityCenterGoodsListMap.get(subjectId); + + for (TbsActivityCenter center : subjectCenterList) { + List goodsList = activityCenterGoodsListOfSubject.stream() + .filter(a->a.getCenterId().equals(center.getCenterId())&&a.getCenterType().equals(center.getCenterType())) + .collect(Collectors.toList()); + final BigDecimal centerUsed = center.getUsedAmount(); + final BigDecimal centerAmt = center.getCenterAmount(); + + BigDecimal totalGoodRate = BigDecimal.ZERO; + BigDecimal totalGoodUsed = BigDecimal.ZERO; + BigDecimal totalGoodAmt = BigDecimal.ZERO; + for (TbsActivityCenterGoods goods : goodsList) { + BigDecimal rate = goods.getCenterGoodsRate(); + totalGoodRate = totalGoodRate.add(rate); + totalGoodAmt = totalGoodAmt.add(goods.getCenterGoodsAmount()); + totalGoodUsed = totalGoodUsed.add(goods.getUsedAmount()); + } + //重新分配比率 + if(totalGoodRate.compareTo(n100)!=0){ + log.error("totalGoodRate不为100:{}",activityId); + return "totalGoodRate不为100"; + } + + if(totalGoodAmt.compareTo(centerAmt)!=0){ + log.error("totalGoodAmt:{}",activityId); + return "totalGoodAmt错误"; + } + if(totalGoodUsed.compareTo(centerUsed)!=0){ + log.error("totalGoodUsed:{}",activityId); + return "totalGoodUsed错误"; + } + } + + } + if(activity.getTotalAmount().compareTo(totalSubjectAmt)!=0){ + log.error("科目和活动的申请金额不匹配"); + return "科目和活动的申请金额不匹配"; + } + + + // 处理预算占用 + List actBudgetLogs = budgetLogService.list(wrapper); + + List applyLogs = actBudgetLogs.stream().filter(a-> a.getOptType()!=4).collect(Collectors.toList()); + + List releaseLogs = actBudgetLogs.stream().filter(a-> a.getOptType()==4).collect(Collectors.toList()); + + BigDecimal applyAmt = totalBudgetLogAmount(applyLogs); + + BigDecimal releaseAmt = totalBudgetLogAmount(releaseLogs); + + //检查下占用预算和释放 + + if(applyAmt.compareTo(activity.getTotalAmount())!=0){ + log.warn("历史预算占用金额异常"); + } + + if(activity.getReleaseAmount()!=null && releaseAmt.compareTo(activity.getReleaseAmount())!=0){ + log.warn("历史预算释放金额异常"); + } + + List newApplyLogList = new ArrayList<>(); + List newReleaseLogList = new ArrayList<>(); + + for (TbsActivityCenterGoods goods : activityCenterGoodsList) { + + List goodApplyLogs = actBudgetLogs.stream().filter(a-> + a.getSubjectId().equals(goods.getSubjectId()) + &&a.getCenterType().equals(goods.getCenterType()) + &&a.getCenterId().equals(goods.getCenterId()) + &&a.getOptType()!=4 + ).collect(Collectors.toList()); + + List goodReleaseLogs = actBudgetLogs.stream().filter(a-> + a.getSubjectId().equals(goods.getSubjectId()) + &&a.getCenterType().equals(goods.getCenterType()) + &&a.getCenterId().equals(goods.getCenterId()) + &&a.getOptType()==4 + ).collect(Collectors.toList()); + + if(goodApplyLogs.size()==0 && goodReleaseLogs.size() ==0 + &&goods.getCenterGoodsAmount().equals(goods.getUsedAmount())){ + continue; + } + + // 新log + TbsBudgetLog newApplyLog = CopierUtil.copy(goodApplyLogs.get(0),new TbsBudgetLog()); + newApplyLog.setId(null); + newApplyLog.setAmount(goods.getCenterGoodsAmount().negate()); + newApplyLog.setOptType(1); + newApplyLogList.add(newApplyLog); + + if(goodReleaseLogs.size()>0){ + TbsBudgetLog newReleaseLog = CopierUtil.copy(goodReleaseLogs.get(0),new TbsBudgetLog()); + newReleaseLog.setId(null); + newReleaseLog.setAmount(goods.getCenterGoodsAmount().subtract(goods.getUsedAmount())); + newReleaseLog.setOptType(4); + newReleaseLogList.add(newReleaseLog); + } + + } + + + BigDecimal newApplyAmt = totalBudgetLogAmount(newApplyLogList); + BigDecimal newReleaseAmt = totalBudgetLogAmount(newReleaseLogList); + + if(newApplyAmt.negate().compareTo(activity.getTotalAmount())!=0){ + log.error("预算占用金额异常"); + return "预算占用金额异常"; + } + + if(activity.getReleaseAmount()!=null && newReleaseAmt.compareTo(activity.getReleaseAmount())!=0){ + log.error("预算释放金额异常 activity{},.getReleaseAmount():{} newReleaseAmt:{}",activityId,activity.getReleaseAmount(),newReleaseAmt); + return "预算释放金额异常"; + } + + if(updateSubject){ + activitySubjectService.updateBatchById(activitySubjectList); + } + activityCenterService.updateBatchById(activityCenterList); + activityCenterGoodsService.updateBatchById(activityCenterGoodsList); + List logIds = actBudgetLogs.stream().map(a->a.getId()).collect(Collectors.toList()); + if(!newApplyLogList.isEmpty()){ + budgetLogService.saveBatch(newApplyLogList); + } + if(CollectionUtil.isNotEmpty(newReleaseLogList)){ + budgetLogService.saveBatch(newReleaseLogList); + } + if(CollectionUtil.isNotEmpty(logIds)){ + budgetLogService.removeBatchByIds(logIds); + } + return null; + } + + + private BigDecimal totalBudgetLogAmount(List releaseLogs) { + BigDecimal amt = BigDecimal.ZERO; + if(releaseLogs!=null){ + for (TbsBudgetLog reLog : releaseLogs) { + amt = amt.add(reLog.getAmount()); + } + } + return amt; + } + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java index 77894e0a..9a52a32e 100644 --- a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java +++ b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java @@ -84,5 +84,11 @@ public interface VtbVerificationMapper extends BaseMapper { */ int updateCostExtUserByCostIds(@Param("costIds") List costIds, @Param("obj") SysUser sysUser); + /** + * 获取活动核销金额 + * @param actId + * @return + */ + BigDecimal getActivityVerificationAmt(@Param("actId")Long actId); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c1965185..ecb7d949 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -56,9 +56,9 @@ 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.sys: debug com.qs.serve.modules.tag: info org.xnio.nio: info org.springframework: info diff --git a/src/main/resources/mapper/vtb/VtbVerfifcationMapper.xml b/src/main/resources/mapper/vtb/VtbVerfifcationMapper.xml index 4b01e7d8..4a203791 100644 --- a/src/main/resources/mapper/vtb/VtbVerfifcationMapper.xml +++ b/src/main/resources/mapper/vtb/VtbVerfifcationMapper.xml @@ -26,5 +26,23 @@ + + From de5b418c5bb0ad26a0932cd9955067d8d4ca8e28 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 28 May 2024 11:47:53 +0800 Subject: [PATCH 02/19] =?UTF-8?q?perf=EF=BC=9A=E4=BC=98=E5=8C=96=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=9F=A5=E8=AF=A26=E7=A7=92=E5=8F=981=E7=A7=92=20feat?= =?UTF-8?q?:=20SPU=E7=BC=96=E7=A0=81=E9=87=8D=E5=A4=8D=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=20fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=8D=8F=E8=AE=AE=E7=B1=BB?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=BC=82=E5=B8=B8=20fix:=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=A2=84=E7=AE=97=E7=BC=BA=E5=A4=B1=E9=A1=B9=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mvc/HttpServletRequestFilter.java | 2 +- .../BirActivityCenterGoodsController.java | 5 +- .../serve/modules/bms/entity/BmsSupplier.java | 2 - .../modules/bms/entity/bo/BmsSupplierBo.java | 2 - .../service/impl/GoodsSkuServiceImpl.java | 9 ++ .../service/impl/GoodsSpuServiceImpl.java | 7 + .../oms/controller/api/OmsOrderApi.java | 14 +- .../modules/oms/entity/bo/OmsOrderBo.java | 3 + .../modules/oms/entity/bo/OmsOrderSkuBo.java | 3 + .../oms/service/impl/OmsOrderServiceImpl.java | 1 + .../tbs/controller/TbsActivityController.java | 2 - .../controller/TbsCostContractController.java | 9 ++ .../mapper/TbsActivityPayConditionMapper.java | 25 ++++ .../TbsActivityDebugApplicationService.java | 128 ++++++++++++++---- .../TbsBudgetReleaseApplicationService.java | 19 +++ .../service/TbsCostContractApplication.java | 62 +++++++++ .../TbsBudgetApplyOperationServiceImpl.java | 3 + .../TbsBudgetBatchOperationServiceImpl.java | 1 + .../TbsBudgetChangeOperationServiceImpl.java | 2 + .../service/PortalOfCostApplication.java | 2 + src/main/java/com/qs/serve/task/TbsTask.java | 2 +- src/main/resources/application.yml | 2 +- 22 files changed, 263 insertions(+), 42 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java diff --git a/src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java b/src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java index db032b96..d858718c 100644 --- a/src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java +++ b/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 { diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java index 66d693c5..9c74e790 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java @@ -91,9 +91,10 @@ public class BirActivityCenterGoodsController { @GetMapping("/toSyncBirToday") public R toSyncBirEcro2(){ - //Long[] ids = new Long[]{0L}; + Long[] ids = new Long[]{277466L,277498L,277516L,277533L,277551L,277615L,277651L,277666L,280941L,278119L,278096L,278432L,281315L,281522L,277464L,277471L,277503L,277696L,277714L,277754L,277881L,277890L,277915L,277954L,281632L,281759L,278147L,278383L,277320L,277495L,277506L,277536L,277595L,277604L,277629L,277663L,277695L,298987L,277748L,277755L,277798L,277805L,277930L,278048L,278141L,278473L,298922L,277441L,277475L,277560L,277609L,277641L,277660L,277726L,277741L,277760L,300889L,301023L,278427L,278478L,278495L,278578L,277725L,277891L,295609L,277733L,277734L,277766L,277834L,278001L,278020L,278838L,279305L,282278L,281006L,278984L,278098L,278566L,298143L,297182L,295914L,277730L,277762L,277412L,277455L,277512L,277519L,277548L,295578L,282378L,276919L,298961L,277763L,277865L,277897L,277906L,277963L,299262L,295443L,295513L,293573L,293648L,278068L,278136L,279121L,279139L,279240L,300963L,277732L,277768L,277985L,299696L,277846L,282151L,282165L,276921L,298856L,278121L,278375L,279157L,278557L,278582L,277478L,277514L,277546L,277571L,277596L,277628L,292736L,292915L,294801L,277889L,277165L,277166L,280306L,295599L,295649L,279156L,299294L,300729L,293078L,293191L,278129L,295084L,295145L,282175L,280178L,295586L,295720L,276734L,298923L,277385L,277399L,277435L,277550L,277582L,277667L,277685L,277718L,276731L,299027L,277738L,277872L,277940L,277965L,299632L,299187L,299332L,277102L,278708L,278094L,278111L,278145L,299186L,299220L,277509L,277592L,277594L,277658L,277707L,281579L,277485L,277568L,277618L,277700L,277717L,295451L,277967L,279154L,282255L,301422L,292768L,292866L,292983L,276773L,298884L,298916L,278745L,277472L,277504L,277529L,277563L,277640L,280203L,277806L,293514L,293541L,277593L,277676L,277691L,277693L,277727L,277993L,279112L,299183L,299185L,277460L,277541L,277575L,277607L,277626L,277675L,278428L,277877L,277977L,278095L,299168L,277410L,277491L,277508L,277591L,277657L,277708L,301740L,300623L,277879L,277888L,277981L,278049L,281423L,278090L,279126L,299382L,278581L,281899L,281906L,276887L,298847L,298904L,282292L,282349L,277530L,277555L,277723L,277486L,277522L,277545L,277579L,277588L,277611L,277613L,281966L,277622L,278251L,300948L,277015L,298576L,279188L,279206L,295049L,295063L,292524L,296253L,277014L,277017L,277081L,300964L,301081L,299863L,279304L,299292L,292490L,296083L,278762L,277809L,277892L,277945L,277958L,281587L,277624L,277694L,277709L,277342L,277540L,277576L,278112L,300019L,300153L,291280L,296094L,296375L,294624L,277749L,277886L,277903L,278003L,278018L,278371L,276682L,299009L,299042L,296183L,278859L,278491L,279127L,277830L,277887L,299583L,296307L,294567L,294578L,280179L,278089L,299924L,277739L,277896L,277914L,277946L,279175L,296162L,296248L,277743L,277826L,277894L,277943L,295693L,296980L,296127L,296210L,295259L,296546L,277679L,277686L,277688L,277690L,277722L,295631L,299280L,299337L,278783L,278324L,291331L,292584L,296377L,295107L,295158L,294503L,294690L,294203L,296475L,296560L,295775L,296041L,277744L,277842L,277859L,296092L,292565L,295075L,292733L,301218L,277747L,277949L,278013L,278054L,293932L,279124L,291324L,294393L,292562L,283088L,277161L,296079L,296254L,292737L,292873L,302440L,277772L,277870L,299666L,277465L,277484L,277652L,277752L,277866L,277883L,277952L,278120L,292492L,278114L,278357L,299349L,294394L,294426L,294076L,292622L,295112L,281272L,302071L,294432L,294593L,294368L,292360L,292619L,295136L,295304L,296408L,277447L,277547L,296134L,294697L,294712L,296470L,296552L,296584L,292961L,280307L,295601L,300701L,293081L,296082L,296132L,295078L,295160L,295353L,296471L,296557L,293799L,295319L,293883L,292729L,292890L,281004L,277589L,277603L,277614L,295537L,277711L,277090L,298533L,278377L,300152L,296159L,292364L,292883L,292900L,295825L,279190L,296102L,294679L,294162L,292493L,293843L,279086L,295651L,295852L,295884L,277994L,278126L,278143L,299988L,295559L,294421L,296495L,294002L,295759L,295774L,281172L,278132L,278139L,278350L,278382L,277328L,277446L,277521L,277539L,277553L,277096L,277160L,277746L,278014L,293065L,296087L,295094L,294283L,296491L,293890L,281745L,281946L,299930L,276648L,296167L,294481L,294649L,294682L,281278L,279037L,278844L,277325L,277391L,277459L,277627L,277659L,277710L,282320L,299268L,278418L,300478L,300699L,294512L,296401L,294047L,292794L,292876L,277650L,295533L,295081L,295114L,294614L,292860L,292877L,292909L, + 277683L,295750L,296886L,296954L,295238L,292887L,280998L,277445L,277511L,277513L,277620L,295527L,295795L,296029L,278790L,278392L,278515L,295661L,295663L,299884L,277788L,296163L,296165L,292519L,295120L,294516L,296747L,294050L,281005L,295756L,295811L,295820L,297190L,297619L,296335L,295099L,295132L,300111L,292641L,292777L,295799L,298857L,293627L,293710L,301061L,295077L,295109L,277463L,277572L,277665L,301293L,299155L,298151L,277653L,277664L,277689L,295930L,295973L,296023L,297241L,297416L,277864L,277957L,295083L,292793L,280893L,277518L,277535L,295466L,295634L,282030L,295801L,300631L,281284L,278780L,302191L,282056L,282356L,296060L,300957L,298902L,297866L,293520L,279279L,291281L,294523L,295240L,292683L,292985L,280251L,295457L,295757L,299133L,278011L,295123L,298899L,278445L,299301L,296091L,296161L,296442L,296561L,277456L,277681L,277713L,295602L,295904L,298946L,296174L,295134L,296397L,277483L,277566L,277602L,277616L,277633L,277669L,295618L,300983L,301098L,296594L,294052L,292801L,278778L,295726L,296996L,276738L,301089L,293320L,293335L,301905L,280213L,295528L,277169L,278130L,295385L,293881L,295896L,298947L,297268L,299936L,292548L,295088L,294522L,294605L,296477L,296492L,293854L,295541L,277586L,277654L,277656L,295470L,295706L,295761L,295838L,295970L,296967L,299107L,294051L,281283L,302439L,282233L,295605L,295637L,295898L,295980L,280322L,297745L,299624L,293483L,293715L,294351L,298931L,299106L,299131L,281365L,298270L,298295L,298979L,281456L,300962L,295121L,293824L,294049L,292906L,302516L,277537L,277544L,295161L,294200L,296440L,296565L,292889L,281155L,277388L,277520L,277581L,282393L,296073L,296305L,294401L,292497L,295137L,295144L,295162L,296505L,293747L,293908L,293973L,298921L,298930L,299132L,277729L,277765L,294511L,294075L,295386L,277761L,277893L,278142L,278493L,300689L,296077L,296175L,296309L,294437L,277898L,277905L,277955L,298597L,294342L,292731L,292756L,292963L,277444L,277587L,278134L,296136L,296303L,294596L,294077L,294164L,292491L,295214L,292741L,277619L,294556L,295239L,295341L,296562L,277457L,277525L,277610L,303746L,299134L,296100L,294431L,292423L,295350L,296436L,296554L,293845L,292660L,277502L,277515L,277612L,277623L,277662L,280295L,295503L,295546L,296032L,299472L,305170L,295715L,295765L,281662L,298909L,298991L,299159L,293662L,294798L,294916L,297600L,293463L,293181L,293356L,277948L,278030L,278055L,305763L,294835L,295053L,293582L,294618L,295352L,296558L,293984L,279135L,303876L,279074L,299123L,294752L,296739L,280970L,302441L,277523L,277598L,277655L,295921L,299833L,294910L,295060L,296901L,298937L,299137L,281389L,298312L,297274L,293632L,278422L,294861L,292882L,295592L,295624L,298030L,297379L,300804L,294807L,299953L,300170L,293121L,296329L,296374L,294693L,299105L,281498L,301052L,298169L,294759L,294800L,277500L,277585L,277600L,277668L,277682L,295130L,281630L,282330L,277817L,280958L,295751L,295851L,296034L,301099L,293512L,293579L,277750L,278053L,295065L,293061L,277438L,277538L,277597L,277661L,302204L,281648L,299096L,297492L,293137L,299321L,299135L,281519L,301056L,297380L,280315L,300054L,294989L,295057L,303879L,304315L,294048L,277461L,277697L,295788L,281641L,281843L,296990L,293650L,294820L,303878L,277684L,281896L,281359L,281510L,301083L,297690L,282396L,293445L,293660L,293309L,296559L,295808L,295859L,299118L,300958L,298297L,300739L,295040L,295055L,299320L,280965L,277639L,277678L,282008L,299120L,281608L,280379L,294819L,298413L,296497L,296599L,296742L,296808L,282302L,293255L,293289L,298203L,278549L,277120L,294975L,278125L,277106L,277159L,293303L,299468L,299470L,299485L,299838L,277687L,295664L,282010L,297014L,299004L,297257L,293563L,295067L,300151L,293038L,292734L,293885L,293000L,293036L,293317L,277458L,277507L,277524L,277692L,296827L,295891L,276707L,298869L,281568L,301071L,278560L,293270L,294740L,294821L,305519L,301728L,295644L,296834L,297009L,293558L,306933L,293140L,293333L,305104L,305740L,303880L,299500L,298381L,298632L,298610L,299845L,278092L,299456L,294862L,298806L,299799L,305522L,305245L,298611L,304438L,277951L,293259L,299494L,293509L,293542L,293577L,293677L,300012L,292992L,305142L,294751L,299488L,305147L,305240L,299855L,299158L,293510L,293678L,278469L,294932L,293195L,293327L,299844L,299963L,300128L,293244L,299378L,295857L,296042L,294891L,293002L,293351L,299318L,305370L,293131L,279116L,299433L,299454L,299254L,299279L,299340L,299465L,277155L,277552L,277583L,277716L,295432L,292991L,298943L,298708L,305695L,294993L,303853L,293123L,305221L,306928L,293381L,293387L,305253L,295544L,281915L,296984L,298988L,294808L,306939L,293086L,293267L,295061L,299675L,293180L,293271L,298652L,305172L,299498L,296888L,293175L,293312L,301049L,294933L,294998L,277150L,277164L,293673L,277163L,277168L,277170L,299857L,299330L,299823L,293623L,293396L,294802L,293532L,305966L,300150L,294868L,306936L,299239L,293355L,299850L,298166L,297381L,298417L,294739L,300004L,293001L,293252L,299964L,299376L,278002L,299843L,293003L,293139L,294886L,299357L,299832L,281618L,293484L,294839L,294958L,299419L,293318L,304999L,305520L,292738L,277630L,277705L,298343L,293681L,294810L,295066L,299895L,299492L,298623L,299763L,281293L,295648L,295665L,295684L,295783L,295902L,296887L,294797L,277167L,293044L,299495L,305244L}; //List ids = tbsActivityMapper.selectReleaseCostIds(); - Set ids = tbsActivityCenterGoodsMapper.selectUpdateCostApplyIds(); + //Set ids = tbsActivityCenterGoodsMapper.selectUpdateCostApplyIds(); List errIds = new ArrayList<>(); for (Long id : ids) { log.error("执行ID XXXX:{}",id); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index ed3e9ac4..84c41660 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java index 765911b2..6871b7d9 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java +++ b/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表总公司无上级 */ diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java index c63a24dc..befe6edc 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java @@ -273,6 +273,15 @@ public class GoodsSkuServiceImpl extends ServiceImpl im goodsSku.setId(dbGoodSku.getId()); } + //code必须唯一 + Long countCode = super.getBaseMapper().selectCount(new LambdaQueryWrapper() + .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){ diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java index 5e0f793a..d9211180 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java @@ -174,6 +174,13 @@ public class GoodsSpuServiceImpl extends ServiceImpl im GoodsCategory category = goodsCategoryService.getById(param.getCategoryId()); relateCate(spu,category); } + Long count = super.baseMapper.selectCount(new LambdaQueryWrapper() + .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; diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 0a99d811..926aa929 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/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 supplierAddressList = bmsSupplierAddressService.listByIds(addrIds); + List orderIds = list.stream().map(OmsOrder::getId).collect(Collectors.toList()); + orderIds.add(0L); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(OmsOrderItem::getOrderId,orderIds); + List allItems = omsOrderItemService.list(lqw); + + Map> itemsMap = allItems.stream().collect(Collectors.groupingBy(OmsOrderItem::getOrderId)); + for (OmsOrder order : list) { omsOrderService.checkMsOrderStatus(order); @@ -185,10 +194,7 @@ public class OmsOrderApi { } } - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(OmsOrderItem::getOrderId,order.getId()); - List items = omsOrderItemService.list(lqw); - order.setOrderItems(items); + order.setOrderItems(itemsMap.get(order.getId())); } return R.byPageHelperList(list); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java index 653b444f..21f5154c 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java +++ b/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 shoppingCartIds; diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java index 416a0344..3865ed77 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderSkuBo.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index 8944d204..01ad0f0e 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -445,6 +445,7 @@ public class OmsOrderServiceImpl extends ServiceImpl 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); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index c12fa367..319f1060 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/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); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java index 2b2b9395..56c1bc1b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java +++ b/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(); + } /** * 列表 diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java index 1fdb9333..33ad7dcc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java +++ b/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 { + @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 getFinishedCostId(); + @Update("update `tbs_activity_pay_condition` set pre_notify_time = null where id = #{id}") void updateSetNotifyTimeNull(@Param("id")String id); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java index b01f0254..8c0c0181 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java +++ b/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 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 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 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 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 newApplyLogList = new ArrayList<>(); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java new file mode 100644 index 00000000..b71e5714 --- /dev/null +++ b/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 activitIds = new ArrayList<>(); + + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java new file mode 100644 index 00000000..e8f4ea32 --- /dev/null +++ b/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 costIds = activityPayConditionMapper.getFinishedCostId(); + if(CollUtil.isNotEmpty(costIds)){ + List costApplyList = tbsCostApplyService.listByIds(costIds); + for (TbsCostApply costApply : costApplyList) { + costApply.setChargeState(3); + costApply.setCheckState(1); + } + tbsCostApplyService.updateBatchById(costApplyList); + //更新状态 + activityPayConditionService.update(new LambdaUpdateWrapper() + .set(TbsActivityPayCondition::getFinishedFlag,1) + .in(TbsActivityPayCondition::getCostApplyId,costIds)); + List activityList = tbsActivityService.list(new LambdaQueryWrapper() + .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); + } + + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java index 49feedc9..8b9c3403 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java index 199f7da1..42d16ce1 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index d39290fa..3fcfde25 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/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(); } /** diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index 8ecba32b..f01f037b 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/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(); } diff --git a/src/main/java/com/qs/serve/task/TbsTask.java b/src/main/java/com/qs/serve/task/TbsTask.java index f8143e5d..f2777716 100644 --- a/src/main/java/com/qs/serve/task/TbsTask.java +++ b/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(){ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ecb7d949..fc9ee4a8 100644 --- a/src/main/resources/application.yml +++ b/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 From 47f9c8749dc61db05030f6c22a0aa2ac285a6b6d Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 29 May 2024 10:45:25 +0800 Subject: [PATCH 03/19] =?UTF-8?q?perf=EF=BC=9A=E8=AE=A2=E5=8D=95=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=A7=E5=9C=B0=E7=9B=B8=E5=85=B3=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BirActivityCenterGoodsController.java | 3 +- .../serve/modules/goods/entity/GoodsSpu.java | 3 + .../oms/controller/api/OmsOrderApi.java | 2 + .../modules/oms/entity/OmsOrderItem.java | 8 ++ .../tbs/controller/TbsActivityController.java | 7 +- .../controller/TbsBudgetLogController.java | 12 ++ .../TbsActivityDebugApplicationService.java | 3 + .../TbsBudgetReleaseApplicationService.java | 112 +++++++++++++++++- .../modules/vtb/mapper/VtbFundFlowMapper.java | 4 + .../resources/mapper/goods/GoodsSpuMapper.xml | 3 +- .../mapper/vtb/VtbFundFlowMapper.xml | 20 ++++ 11 files changed, 171 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java index 9c74e790..167e2554 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java @@ -91,8 +91,7 @@ public class BirActivityCenterGoodsController { @GetMapping("/toSyncBirToday") public R toSyncBirEcro2(){ - Long[] ids = new Long[]{277466L,277498L,277516L,277533L,277551L,277615L,277651L,277666L,280941L,278119L,278096L,278432L,281315L,281522L,277464L,277471L,277503L,277696L,277714L,277754L,277881L,277890L,277915L,277954L,281632L,281759L,278147L,278383L,277320L,277495L,277506L,277536L,277595L,277604L,277629L,277663L,277695L,298987L,277748L,277755L,277798L,277805L,277930L,278048L,278141L,278473L,298922L,277441L,277475L,277560L,277609L,277641L,277660L,277726L,277741L,277760L,300889L,301023L,278427L,278478L,278495L,278578L,277725L,277891L,295609L,277733L,277734L,277766L,277834L,278001L,278020L,278838L,279305L,282278L,281006L,278984L,278098L,278566L,298143L,297182L,295914L,277730L,277762L,277412L,277455L,277512L,277519L,277548L,295578L,282378L,276919L,298961L,277763L,277865L,277897L,277906L,277963L,299262L,295443L,295513L,293573L,293648L,278068L,278136L,279121L,279139L,279240L,300963L,277732L,277768L,277985L,299696L,277846L,282151L,282165L,276921L,298856L,278121L,278375L,279157L,278557L,278582L,277478L,277514L,277546L,277571L,277596L,277628L,292736L,292915L,294801L,277889L,277165L,277166L,280306L,295599L,295649L,279156L,299294L,300729L,293078L,293191L,278129L,295084L,295145L,282175L,280178L,295586L,295720L,276734L,298923L,277385L,277399L,277435L,277550L,277582L,277667L,277685L,277718L,276731L,299027L,277738L,277872L,277940L,277965L,299632L,299187L,299332L,277102L,278708L,278094L,278111L,278145L,299186L,299220L,277509L,277592L,277594L,277658L,277707L,281579L,277485L,277568L,277618L,277700L,277717L,295451L,277967L,279154L,282255L,301422L,292768L,292866L,292983L,276773L,298884L,298916L,278745L,277472L,277504L,277529L,277563L,277640L,280203L,277806L,293514L,293541L,277593L,277676L,277691L,277693L,277727L,277993L,279112L,299183L,299185L,277460L,277541L,277575L,277607L,277626L,277675L,278428L,277877L,277977L,278095L,299168L,277410L,277491L,277508L,277591L,277657L,277708L,301740L,300623L,277879L,277888L,277981L,278049L,281423L,278090L,279126L,299382L,278581L,281899L,281906L,276887L,298847L,298904L,282292L,282349L,277530L,277555L,277723L,277486L,277522L,277545L,277579L,277588L,277611L,277613L,281966L,277622L,278251L,300948L,277015L,298576L,279188L,279206L,295049L,295063L,292524L,296253L,277014L,277017L,277081L,300964L,301081L,299863L,279304L,299292L,292490L,296083L,278762L,277809L,277892L,277945L,277958L,281587L,277624L,277694L,277709L,277342L,277540L,277576L,278112L,300019L,300153L,291280L,296094L,296375L,294624L,277749L,277886L,277903L,278003L,278018L,278371L,276682L,299009L,299042L,296183L,278859L,278491L,279127L,277830L,277887L,299583L,296307L,294567L,294578L,280179L,278089L,299924L,277739L,277896L,277914L,277946L,279175L,296162L,296248L,277743L,277826L,277894L,277943L,295693L,296980L,296127L,296210L,295259L,296546L,277679L,277686L,277688L,277690L,277722L,295631L,299280L,299337L,278783L,278324L,291331L,292584L,296377L,295107L,295158L,294503L,294690L,294203L,296475L,296560L,295775L,296041L,277744L,277842L,277859L,296092L,292565L,295075L,292733L,301218L,277747L,277949L,278013L,278054L,293932L,279124L,291324L,294393L,292562L,283088L,277161L,296079L,296254L,292737L,292873L,302440L,277772L,277870L,299666L,277465L,277484L,277652L,277752L,277866L,277883L,277952L,278120L,292492L,278114L,278357L,299349L,294394L,294426L,294076L,292622L,295112L,281272L,302071L,294432L,294593L,294368L,292360L,292619L,295136L,295304L,296408L,277447L,277547L,296134L,294697L,294712L,296470L,296552L,296584L,292961L,280307L,295601L,300701L,293081L,296082L,296132L,295078L,295160L,295353L,296471L,296557L,293799L,295319L,293883L,292729L,292890L,281004L,277589L,277603L,277614L,295537L,277711L,277090L,298533L,278377L,300152L,296159L,292364L,292883L,292900L,295825L,279190L,296102L,294679L,294162L,292493L,293843L,279086L,295651L,295852L,295884L,277994L,278126L,278143L,299988L,295559L,294421L,296495L,294002L,295759L,295774L,281172L,278132L,278139L,278350L,278382L,277328L,277446L,277521L,277539L,277553L,277096L,277160L,277746L,278014L,293065L,296087L,295094L,294283L,296491L,293890L,281745L,281946L,299930L,276648L,296167L,294481L,294649L,294682L,281278L,279037L,278844L,277325L,277391L,277459L,277627L,277659L,277710L,282320L,299268L,278418L,300478L,300699L,294512L,296401L,294047L,292794L,292876L,277650L,295533L,295081L,295114L,294614L,292860L,292877L,292909L, - 277683L,295750L,296886L,296954L,295238L,292887L,280998L,277445L,277511L,277513L,277620L,295527L,295795L,296029L,278790L,278392L,278515L,295661L,295663L,299884L,277788L,296163L,296165L,292519L,295120L,294516L,296747L,294050L,281005L,295756L,295811L,295820L,297190L,297619L,296335L,295099L,295132L,300111L,292641L,292777L,295799L,298857L,293627L,293710L,301061L,295077L,295109L,277463L,277572L,277665L,301293L,299155L,298151L,277653L,277664L,277689L,295930L,295973L,296023L,297241L,297416L,277864L,277957L,295083L,292793L,280893L,277518L,277535L,295466L,295634L,282030L,295801L,300631L,281284L,278780L,302191L,282056L,282356L,296060L,300957L,298902L,297866L,293520L,279279L,291281L,294523L,295240L,292683L,292985L,280251L,295457L,295757L,299133L,278011L,295123L,298899L,278445L,299301L,296091L,296161L,296442L,296561L,277456L,277681L,277713L,295602L,295904L,298946L,296174L,295134L,296397L,277483L,277566L,277602L,277616L,277633L,277669L,295618L,300983L,301098L,296594L,294052L,292801L,278778L,295726L,296996L,276738L,301089L,293320L,293335L,301905L,280213L,295528L,277169L,278130L,295385L,293881L,295896L,298947L,297268L,299936L,292548L,295088L,294522L,294605L,296477L,296492L,293854L,295541L,277586L,277654L,277656L,295470L,295706L,295761L,295838L,295970L,296967L,299107L,294051L,281283L,302439L,282233L,295605L,295637L,295898L,295980L,280322L,297745L,299624L,293483L,293715L,294351L,298931L,299106L,299131L,281365L,298270L,298295L,298979L,281456L,300962L,295121L,293824L,294049L,292906L,302516L,277537L,277544L,295161L,294200L,296440L,296565L,292889L,281155L,277388L,277520L,277581L,282393L,296073L,296305L,294401L,292497L,295137L,295144L,295162L,296505L,293747L,293908L,293973L,298921L,298930L,299132L,277729L,277765L,294511L,294075L,295386L,277761L,277893L,278142L,278493L,300689L,296077L,296175L,296309L,294437L,277898L,277905L,277955L,298597L,294342L,292731L,292756L,292963L,277444L,277587L,278134L,296136L,296303L,294596L,294077L,294164L,292491L,295214L,292741L,277619L,294556L,295239L,295341L,296562L,277457L,277525L,277610L,303746L,299134L,296100L,294431L,292423L,295350L,296436L,296554L,293845L,292660L,277502L,277515L,277612L,277623L,277662L,280295L,295503L,295546L,296032L,299472L,305170L,295715L,295765L,281662L,298909L,298991L,299159L,293662L,294798L,294916L,297600L,293463L,293181L,293356L,277948L,278030L,278055L,305763L,294835L,295053L,293582L,294618L,295352L,296558L,293984L,279135L,303876L,279074L,299123L,294752L,296739L,280970L,302441L,277523L,277598L,277655L,295921L,299833L,294910L,295060L,296901L,298937L,299137L,281389L,298312L,297274L,293632L,278422L,294861L,292882L,295592L,295624L,298030L,297379L,300804L,294807L,299953L,300170L,293121L,296329L,296374L,294693L,299105L,281498L,301052L,298169L,294759L,294800L,277500L,277585L,277600L,277668L,277682L,295130L,281630L,282330L,277817L,280958L,295751L,295851L,296034L,301099L,293512L,293579L,277750L,278053L,295065L,293061L,277438L,277538L,277597L,277661L,302204L,281648L,299096L,297492L,293137L,299321L,299135L,281519L,301056L,297380L,280315L,300054L,294989L,295057L,303879L,304315L,294048L,277461L,277697L,295788L,281641L,281843L,296990L,293650L,294820L,303878L,277684L,281896L,281359L,281510L,301083L,297690L,282396L,293445L,293660L,293309L,296559L,295808L,295859L,299118L,300958L,298297L,300739L,295040L,295055L,299320L,280965L,277639L,277678L,282008L,299120L,281608L,280379L,294819L,298413L,296497L,296599L,296742L,296808L,282302L,293255L,293289L,298203L,278549L,277120L,294975L,278125L,277106L,277159L,293303L,299468L,299470L,299485L,299838L,277687L,295664L,282010L,297014L,299004L,297257L,293563L,295067L,300151L,293038L,292734L,293885L,293000L,293036L,293317L,277458L,277507L,277524L,277692L,296827L,295891L,276707L,298869L,281568L,301071L,278560L,293270L,294740L,294821L,305519L,301728L,295644L,296834L,297009L,293558L,306933L,293140L,293333L,305104L,305740L,303880L,299500L,298381L,298632L,298610L,299845L,278092L,299456L,294862L,298806L,299799L,305522L,305245L,298611L,304438L,277951L,293259L,299494L,293509L,293542L,293577L,293677L,300012L,292992L,305142L,294751L,299488L,305147L,305240L,299855L,299158L,293510L,293678L,278469L,294932L,293195L,293327L,299844L,299963L,300128L,293244L,299378L,295857L,296042L,294891L,293002L,293351L,299318L,305370L,293131L,279116L,299433L,299454L,299254L,299279L,299340L,299465L,277155L,277552L,277583L,277716L,295432L,292991L,298943L,298708L,305695L,294993L,303853L,293123L,305221L,306928L,293381L,293387L,305253L,295544L,281915L,296984L,298988L,294808L,306939L,293086L,293267L,295061L,299675L,293180L,293271L,298652L,305172L,299498L,296888L,293175L,293312L,301049L,294933L,294998L,277150L,277164L,293673L,277163L,277168L,277170L,299857L,299330L,299823L,293623L,293396L,294802L,293532L,305966L,300150L,294868L,306936L,299239L,293355L,299850L,298166L,297381L,298417L,294739L,300004L,293001L,293252L,299964L,299376L,278002L,299843L,293003L,293139L,294886L,299357L,299832L,281618L,293484L,294839L,294958L,299419L,293318L,304999L,305520L,292738L,277630L,277705L,298343L,293681L,294810L,295066L,299895L,299492L,298623L,299763L,281293L,295648L,295665L,295684L,295783L,295902L,296887L,294797L,277167L,293044L,299495L,305244L}; + Long[] ids = new Long[]{}; //List ids = tbsActivityMapper.selectReleaseCostIds(); //Set ids = tbsActivityCenterGoodsMapper.selectUpdateCostApplyIds(); List errIds = new ArrayList<>(); diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java index 890323c9..f6ba100b 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java @@ -209,6 +209,9 @@ public class GoodsSpu implements Serializable { @TableField(exist = false) private String skuName; + @TableField(exist = false) + private String skuBelong; + @TableField(exist = false) private String belong; diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 926aa929..f13ac039 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java @@ -260,6 +260,8 @@ public class OmsOrderApi { GoodsSku goodsSku = goodsSkuService.getById(orderItem.getSkuId()); if(goodsSku!=null){ orderItem.setSkuSpecialFlag(goodsSku.getSpecialFlag()); + orderItem.setSkuBelong(goodsSku.getBelong()); + orderItem.setSkuAddCode(goodsSku.getSkuAddCode()); } } omsOrder.setOrderItems(list); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java index 60c9334e..7e7db682 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java @@ -129,6 +129,14 @@ public class OmsOrderItem implements Serializable { @TableField(exist = false) private Object spuInfo; + /** skuBelong */ + @TableField(exist = false) + private Object skuBelong; + + /** skuBelong */ + @TableField(exist = false) + private Object skuAddCode; + /** 分类 */ @TableField(exist = false) private Object categoryInfo; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 319f1060..1027e5a6 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -110,9 +110,11 @@ public class TbsActivityController { @GetMapping("/resetList") public R reset(){ Long[] ids = new Long[]{ + 1701432L,1701437L,1701438L,1701439L,1701440L,1701441L,1701442L,1701443L,1701444L,1701741L,1701743L,1701744L, + 1701895L,1701898L,1701943L,1701988L,1701989L,1701990L,1701991L,1701993L,1701994L,1701996L,1702000L,1702001L,1702003L,1702005L,1702007L,1702009L,1702010L,1702012L,1702028L,1702207L,1702212L,1702213L,1702214L,1702269L,1702283L,1702284L,1702342L,1702344L,1702345L,1702346L,1702349L,1702380L }; for (Long id : ids) { - tbsActivityDebugApplicationService.reset(id); + System.out.println(tbsActivityDebugApplicationService.reset(id)); } return R.ok(); } @@ -535,6 +537,7 @@ public class TbsActivityController { public R getDefaultCenter(@RequestBody TbsActivityDefaultCenterBo defaultCenterBo){ String goodsType = defaultCenterBo.getActivityGoodsType(); List goodsIds = defaultCenterBo.getGoodsIds(); + goodsIds = goodsIds.stream().filter(Objects::nonNull).collect(Collectors.toList()); Long subjectId = defaultCenterBo.getSubjectId(); Long supplierId = defaultCenterBo.getSupplierId(); BmsSupplier supplier = bmsSupplierService.getById(supplierId); @@ -572,7 +575,7 @@ public class TbsActivityController { } } } - List budgetIds = budgetList.stream().map(a->a.getId()).collect(Collectors.toList()); + List budgetIds = budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList()); LambdaQueryWrapper lqwCon = new LambdaQueryWrapper<>(); lqwCon.in(TbsBudgetCondition::getBudgetId,budgetIds); List budgetConditionsAll = tbsBudgetConditionService.list(lqwCon); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java index 8845b540..a56a1b01 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java @@ -17,6 +17,7 @@ import com.qs.serve.modules.tbs.entity.so.TbsBudgetSo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo; import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; +import com.qs.serve.modules.tbs.service.TbsBudgetReleaseApplicationService; import com.qs.serve.modules.tbs.service.TbsBudgetService; import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService; import lombok.AllArgsConstructor; @@ -46,6 +47,7 @@ import java.util.stream.Collectors; @RequestMapping("tbs/budgetLog") public class TbsBudgetLogController { + private TbsBudgetReleaseApplicationService tbsBudgetReleaseApplicationService; private TbsBudgetLogService tbsBudgetLogService; private TbsBudgetService tbsBudgetService; private TbsBudgetLogMapper tbsBudgetLogMapper; @@ -53,6 +55,16 @@ public class TbsBudgetLogController { private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; private TbsBudgetLogService budgetLogService; + /** + * 修复释放费用 + * @return + */ + @GetMapping("/debug") + public R debug(){ + tbsBudgetReleaseApplicationService.check(); + return R.ok(); + } + /** * 翻页 * @param param diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java index 8c0c0181..56bfc633 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java @@ -79,6 +79,9 @@ public class TbsActivityDebugApplicationService { //校验核销金额,错误则不执行 BigDecimal totalVerificationAmt = verificationMapper.getActivityVerificationAmt(activityId); + if(totalVerificationAmt==null){ + totalVerificationAmt = BigDecimal.ZERO; + } if(activity.getUsedAmount().compareTo(BigDecimal.ZERO)!=0 &&activity.getUsedAmount().compareTo(totalVerificationAmt)!=0){ return "核销金额异常"; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java index b71e5714..d01f882a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java @@ -1,18 +1,128 @@ package com.qs.serve.modules.tbs.service; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.enums.BudgetLogOptFlag; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; +import com.qs.serve.modules.tbs.entity.*; +import com.qs.serve.modules.vtb.common.VtbFundFlowType; +import com.qs.serve.modules.vtb.entity.VtbFundFlow; +import com.qs.serve.modules.vtb.mapper.VtbFundFlowMapper; +import com.qs.serve.modules.vtb.service.VtbFundFlowService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author YenHex * @since 2024/5/28 */ +@Slf4j +@Service +@AllArgsConstructor public class TbsBudgetReleaseApplicationService { + private final VtbFundFlowService fundFlowService; + private final VtbFundFlowMapper vtbFundFlowMapper; + private final TbsBudgetService budgetService; + private final TbsBudgetLogService budgetLogService; + private final TbsBudgetCostItemService budgetCostItemService; + private final TbsActivityService activityService; + private final TbsActivityCenterGoodsService activityCenterGoodsService; + private final TbsCostApplyService costApplyService; + private final TbsActivityPayConditionService activityPayConditionService; + public void check(){ //校验活动的核销金额是否匹配,不匹配则中断 //查询需要补偿释放的活动ID - List activitIds = new ArrayList<>(); + List activityIds = vtbFundFlowMapper.listMissReleaseActivityId(); + for (Long activityId : activityIds) { + TbsActivity activity = activityService.getById(activityId); + TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); + + //保存预算日志 + List centerGoodsList = activityCenterGoodsService.listByActivityId(activityId); + LambdaQueryWrapper itemLqw = new LambdaQueryWrapper<>(); + itemLqw.eq(TbsBudgetCostItem::getActivityId,activityId); + List budgetCostItemList = budgetCostItemService.list(itemLqw); + List budgetIds = budgetCostItemList.stream().map(TbsBudgetCostItem::getBudgetId).collect(Collectors.toList()); + if(CollUtil.isEmpty(budgetIds)){ + continue; + } + List budgetLIst = budgetService.listByIds(budgetIds); + List budgetLogList = new ArrayList<>(); + for (TbsActivityCenterGoods centerGoods : centerGoodsList) { + if(centerGoods.getCenterGoodsAmount().compareTo(centerGoods.getUsedAmount())<1){ + continue; + } + TbsBudgetCostItem currCostItem = null; + TbsBudget currentBudget = null; + for (TbsBudgetCostItem costItem : budgetCostItemList) { + if(centerGoods.getId().equals(costItem.getCenterGoodItemId())){ + currCostItem = costItem; + break; + } + } + for (TbsBudget budget : budgetLIst) { + if (currCostItem.getBudgetId().equals(budget.getId())){ + currentBudget = budget; + } + } + BigDecimal amount = centerGoods.getCenterGoodsAmount().subtract(centerGoods.getUsedAmount()); + SysUser sysUser = new SysUser(); + sysUser.setId("0"); + sysUser.setName("系统执行"); + sysUser.setCode("0"); + TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.buildTbsBudgetLog(BudgetLogOptFlag.State_4,sysUser,costApply,currCostItem,currentBudget,amount,activity); + budgetLogList.add(budgetLog); + } + + //移除历史记录 + fundFlowService.remove( + new LambdaQueryWrapper() + .eq(VtbFundFlow::getFundType, VtbFundFlowType.Release) + .eq(VtbFundFlow::getCostApplyId,activity.getCostApplyId()) + .eq(VtbFundFlow::getActivityId,activity.getId()) + ); + VtbFundFlow fundFlow = new VtbFundFlow(); + fundFlow.setFundType(VtbFundFlowType.Release); + fundFlow.setVerificationId(0L); + fundFlow.setCenterGoodsCode(activity.getActivityCode()+"_00"); + fundFlow.setCostApplyId(activity.getCostApplyId()); + fundFlow.setActivityId(activity.getId()); + fundFlow.setUsedAmount(activity.getReleaseAmount()); + fundFlow.setSupplierId(activity.getSupplierId()); + fundFlow.setSupplierCode(activity.getSupplierCode()); + fundFlow.setSupplierName(activity.getSupplierName()); + fundFlowService.save(fundFlow); + + //移除历史记录 + budgetLogService.remove(new LambdaQueryWrapper() + .eq(TbsBudgetLog::getCostApplyId,activity.getCostApplyId()) + .eq(TbsBudgetLog::getOptType, BudgetLogOptFlag.State_4.getCode()) + .eq(TbsBudgetLog::getActivityId,activity.getId())); + + //更新付款条件状态 + LambdaQueryWrapper updLqw = new LambdaQueryWrapper<>(); + updLqw.eq(TbsActivityPayCondition::getActivityId,activityId); + TbsActivityPayCondition payCondition = new TbsActivityPayCondition(); + payCondition.setFinishedFlag(1); + activityPayConditionService.update(payCondition,updLqw); + + //重新保存 + if(CollectionUtil.isNotEmpty(budgetLogList)){ + budgetLogService.saveBatch(budgetLogList); + } + + } + } diff --git a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbFundFlowMapper.java b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbFundFlowMapper.java index 43f0717d..ae1347f5 100644 --- a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbFundFlowMapper.java +++ b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbFundFlowMapper.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.vtb.mapper; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.common.model.AmountDTO; import com.qs.serve.modules.vtb.entity.VtbFundFlow; @@ -14,6 +15,9 @@ import java.util.List; */ public interface VtbFundFlowMapper extends BaseMapper { + @InterceptorIgnore(tenantLine = "1") + List listMissReleaseActivityId(); + /** * 统计金额 * @param flow diff --git a/src/main/resources/mapper/goods/GoodsSpuMapper.xml b/src/main/resources/mapper/goods/GoodsSpuMapper.xml index 0979dd54..b1c54251 100644 --- a/src/main/resources/mapper/goods/GoodsSpuMapper.xml +++ b/src/main/resources/mapper/goods/GoodsSpuMapper.xml @@ -36,7 +36,8 @@ goods_sku.sku_name as sku_name, goods_sku.id as sku_id, goods_sku.sku_code as sku_code, - goods_sku.special_flag as sku_special_flag + goods_sku.special_flag as sku_special_flag, + goods_sku.belong as sku_belong diff --git a/src/main/resources/mapper/vtb/VtbFundFlowMapper.xml b/src/main/resources/mapper/vtb/VtbFundFlowMapper.xml index 43f2271f..48054895 100644 --- a/src/main/resources/mapper/vtb/VtbFundFlowMapper.xml +++ b/src/main/resources/mapper/vtb/VtbFundFlowMapper.xml @@ -98,6 +98,26 @@ GROUP BY center_good_item_id + + From f321fa3187ce24dada42bc7a6536e59b1c9f184b Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 31 May 2024 10:07:13 +0800 Subject: [PATCH 04/19] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E8=B4=B9?= =?UTF-8?q?=E7=94=A8=E4=BD=BF=E7=94=A8=E9=A2=84=E7=AE=97=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20fix:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E7=BC=BA=E5=A4=B1=E8=B4=B9=E7=94=A8=E5=8D=A0?= =?UTF-8?q?=E7=94=A8=E8=84=9A=E6=9C=AC=20fix=EF=BC=9A=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E9=A2=84=E7=AE=97=E7=8A=B6=E6=80=81=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/bms/entity/BmsSubject.java | 3 + .../bms/entity/vo/BmsSubjectTreeVo.java | 4 + .../common/util/TbsBudgetLogBuildUtil.java | 3 +- .../tbs/controller/TbsActivityController.java | 3 +- .../controller/TbsBudgetLogController.java | 11 +++ .../mapper/TbsActivityChannelPointMapper.java | 24 ++++++ .../mapper/TbsScheduleItemBudgetMapper.java | 1 - .../TbsActivityDebugApplicationService.java | 38 ++++++--- .../TbsBudgetReleaseApplicationService.java | 79 ++++++++++++++++++- .../impl/TbsBudgetBatchServiceImpl.java | 2 +- .../impl/TbsBudgetManagerServiceImpl.java | 11 ++- .../TbsCostApplyOperationServiceImpl.java | 12 +-- .../service/impl/TbsCostApplyServiceImpl.java | 8 ++ 13 files changed, 172 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java index 1461f36f..978357b1 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java @@ -61,6 +61,9 @@ public class BmsSubject implements Serializable { private Integer level; + /** 应用与发布费用时,必选网点拦截 */ + private Integer pointSelectFlag; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java index b950ec07..ce3ed1f1 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java @@ -49,4 +49,8 @@ public class BmsSubjectTreeVo extends TreeNode { /** 是否进场费用 */ private Integer slottingFlag; + + /** 应用与发布费用时,必选网点拦截 */ + private Integer pointSelectFlag; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/util/TbsBudgetLogBuildUtil.java b/src/main/java/com/qs/serve/modules/tbs/common/util/TbsBudgetLogBuildUtil.java index ff8e2a9c..3a9815b1 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/util/TbsBudgetLogBuildUtil.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/util/TbsBudgetLogBuildUtil.java @@ -62,7 +62,8 @@ public class TbsBudgetLogBuildUtil { * @param activity * @return */ - public static TbsBudgetLog buildTbsBudgetLog(BudgetLogOptFlag optType, SysUser sysUser, TbsCostApply costApply, TbsBudgetCostItem item, TbsBudget budget, BigDecimal amount, TbsActivity activity) { + public static TbsBudgetLog buildTbsBudgetLog(BudgetLogOptFlag optType, SysUser sysUser, TbsCostApply costApply, + TbsBudgetCostItem item, TbsBudget budget, BigDecimal amount, TbsActivity activity) { TbsBudgetLog budgetLog = new TbsBudgetLog(); budgetLog.setBudgetId(item.getBudgetId()); budgetLog.setBudgetCode(budget.getBudgetCode()); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 1027e5a6..16a38dc4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -110,8 +110,7 @@ public class TbsActivityController { @GetMapping("/resetList") public R reset(){ Long[] ids = new Long[]{ - 1701432L,1701437L,1701438L,1701439L,1701440L,1701441L,1701442L,1701443L,1701444L,1701741L,1701743L,1701744L, - 1701895L,1701898L,1701943L,1701988L,1701989L,1701990L,1701991L,1701993L,1701994L,1701996L,1702000L,1702001L,1702003L,1702005L,1702007L,1702009L,1702010L,1702012L,1702028L,1702207L,1702212L,1702213L,1702214L,1702269L,1702283L,1702284L,1702342L,1702344L,1702345L,1702346L,1702349L,1702380L + 1702815L,1702816L,1702818L,1702819L,1702820L,1702821L,1702822L,1702823L,1702824L,1702826L,1702827L,1702829L,1702834L,1702835L,1702836L,1702837L,1702838L,1702839L,1702840L,1702841L,1702842L,1702843L,1702844L,1702845L,1702846L,1702847L,1702848L,1702849L,1702850L,1702851L,1702852L,1702853L,1702854L,1702855L,1702856L,1702857L,1702858L,1702859L,1702860L,1702861L,1702862L,1702863L,1702864L,1702865L,1702866L,1702867L,1702869L,1702870L,1702871L,1702872L,1702873L,1702874L,1702875L,1702876L,1702877L,1702878L,1702879L,1702880L,1702881L,1702882L,1702883L,1702884L,1702885L,1702886L,1702887L,1702888L,1702889L,1702891L,1702892L,1702899L,1702900L,1702901L,1702903L,1702904L,1702905L,1702906L,1702907L,1702908L,1702909L,1702910L,1702912L,1702913L,1702914L,1702915L,1702916L,1702917L,1702918L,1702919L,1702920L,1702921L,1702923L,1702924L,1702925L,1702926L,1702928L,1702929L,1702930L,1702931L,1702932L,1702933L,1702935L,1702936L,1702937L,1702938L,1702940L,1702948L,1702953L,1702955L,1702958L,1702959L,1702960L,1702961L,1702962L,1702963L,1702964L,1702965L,1702967L,1702968L,1702969L,1702970L,1702971L,1702972L,1702973L,1702974L,1702975L,1702978L,1702982L,1702983L,1702984L,1702985L,1702986L,1702987L,1702988L,1702990L,1702992L,1702993L,1702994L,1702995L,1702996L,1702997L,1702998L,1702999L,1703000L,1703001L,1703002L,1703003L,1703004L,1703007L,1703008L,1703009L,1703010L,1703011L,1703012L,1703013L,1703014L,1703015L,1703016L,1703018L,1703019L,1703020L,1703021L,1703022L,1703023L,1703024L,1703025L,1703026L,1703028L,1703029L,1703030L,1703031L,1703032L,1703033L,1703034L,1703036L,1703037L,1703038L,1703041L,1703043L,1703044L,1703047L,1703048L,1703052L,1703053L,1703054L,1703055L,1703056L,1703057L,1703059L,1703060L,1703061L,1703062L,1703063L,1703064L,1703065L,1703066L,1703067L,1703069L,1703072L,1703073L,1703075L,1703076L,1703077L,1703078L,1703079L,1703081L,1703083L,1703084L,1703086L,1703087L,1703089L,1703095L,1703099L,1703100L,1703101L,1703103L,1703104L,1703105L,1703106L,1703107L,1703108L,1703109L,1703111L,1703112L,1703114L,1703115L,1703116L,1703117L,1703118L,1703119L,1703120L,1703122L,1703123L,1703125L,1703126L,1703127L,1703128L,1703129L,1703130L,1703131L,1703133L,1703135L,1703136L,1703137L,1703138L,1703139L,1703140L,1703141L,1703142L,1703143L,1703144L,1703145L,1703146L,1703147L,1703148L,1703149L,1703150L,1703152L,1703153L,1703154L,1703155L,1703156L,1703157L,1703158L,1703162L,1703164L,1703165L,1703169L,1703170L,1703171L,1703173L,1703174L,1703175L,1703176L,1703177L,1703178L,1703181L,1703182L,1703183L,1703184L,1703187L,1703188L,1703189L,1703190L,1703192L,1703193L,1703194L,1703195L,1703196L,1703197L,1703198L,1703199L,1703200L,1703202L,1703203L,1703205L,1703206L,1703207L,1703209L,1703210L,1703212L,1703213L,1703214L,1703215L,1703217L,1703218L,1703220L,1703221L,1703222L,1703223L,1703224L,1703226L,1703228L,1703229L,1703231L,1703233L,1703234L,1703235L,1703236L,1703237L,1703238L,1703239L,1703240L,1703241L,1703242L,1703243L,1703244L,1703246L,1703247L,1703248L,1703249L,1703250L,1703251L,1703252L,1703253L,1703254L,1703255L,1703256L,1703258L,1703260L,1703262L,1703263L,1703264L,1703265L,1703267L,1703269L,1703270L,1703271L,1703272L,1703273L,1703276L,1703278L,1703280L,1703283L,1703284L,1703285L,1703287L,1703288L,1703291L,1703292L,1703293L,1703294L,1703295L,1703296L,1703297L,1703300L,1703301L,1703302L,1703307L,1703308L,1703309L,1703310L,1703311L,1703313L,1703314L,1703315L,1703316L,1703317L,1703319L,1703320L,1703321L,1703322L,1703325L,1703326L,1703327L,1703328L,1703329L,1703330L,1703331L,1703333L,1703334L,1703335L,1703338L,1703342L,1703345L,1703346L,1703350L,1703351L,1703354L,1703355L,1703356L,1703357L,1703358L,1703360L,1703362L,1703363L,1703364L,1703365L,1703366L,1703368L,1703369L,1703370L,1703371L,1703372L,1703373L,1703374L,1703375L,1703376L,1703377L,1703378L,1703379L,1703380L,1703381L,1703382L,1703383L,1703385L,1703387L,1703391L,1703394L,1703395L,1703396L,1703398L,1703399L,1703400L,1703401L,1703403L,1703404L,1703405L,1703407L,1703408L,1703410L,1703411L,1703412L,1703413L,1703414L,1703415L,1703421L,1703422L,1703423L,1703426L,1703427L,1703428L,1703429L,1703430L,1703431L,1703432L,1703433L,1703435L,1703436L,1703437L,1703438L,1703440L,1703441L,1703442L,1703443L,1703445L,1703446L,1703456L,1703461L,1703479L,1703480L,1703486L,1703488L,1703489L,1703491L,1703494L,1703497L,1703498L,1703506L,1703515L,1703516L,1703517L,1703519L,1703520L,1703521L,1703522L,1703523L,1703524L,1703557L,1703620L,1703631L,1703634L,1703668L,1703850L,1703854L,1703862L,1703863L,1703870L,1703940L,1703941L,1703955L,1703976L,1703982L,1703995L,1704078L,1704214L,1705268L,1705278L,1705282L,1705311L,1705314L,1705349L,1706282L,1706285L,1706286L,1706287L,1706421L,1706422L,1706423L,1706435L,1706440L,1706442L,1707024L,1707025L,1707076L,1707188L,1707190L,1707520L,1707583L,1707584L,1707999L,1708000L,1708777L,1708778L,1708783L,1708836L,1708858L,1708861L,1708863L,1708866L,1708868L,1708869L,1708870L,1708874L,1708876L,1708883L,1708884L,1709451L,1709478L,1709511L,1709513L,1709516L,1709525L,1709527L,1709535L,1709920L,1709921L,1709925L,1709929L,1710310L,1710505L,1710506L,1710527L,1710528L,1710529L,1710531L,1710534L,1710622L,1710623L,1711162L,1711163L,1711288L,1711301L,1711304L,1711313L,1711864L,1711867L,1711869L,1711876L,1711904L,1711907L,1711910L,1711911L,1711912L,1711927L,1711928L,1712196L,1712201L,1712206L,1712231L,1712261L,1712307L,1712309L,1712493L,1712500L,1712743L,1712744L,1712790L,1712791L,1712832L,1712868L,1712869L,1712877L,1712953L,1713120L,1713121L,1713122L,1713124L,1713298L,1713318L,1713321L,1713324L,1713335L,1713340L,1713351L,1713352L,1714129L,1714131L,1714260L,1714261L,1714262L,1716447L,1716448L,1716449L,1716452L,1716660L,1716661L,1716663L,1716664L,1716667L,1716671L,1716674L,1716676L,1716677L,1716678L,1716691L,1716699L,1716700L,1716702L,1716706L,1716707L,1716708L,1716711L,1716712L,1716942L,1717023L,1717027L,1717028L,1717029L,1717033L,1717038L,1717042L,1717043L,1717047L,1717050L,1717053L,1717055L,1717123L,1717125L,1717133L,1717397L,1717398L,1717478L,1717479L,1717483L,1717484L,1717522L,1717523L,1717528L,1717530L,1717531L,1717532L,1717534L,1717537L,1717538L,1717539L,1717540L,1717541L,1717542L,1717543L,1717544L,1717545L,1717546L,1717547L,1717548L,1717847L,1717862L,1717863L,1717876L,1717881L,1717882L,1717883L,1717886L,1717889L,1717890L,1717892L,1717893L,1717894L,1717895L,1717896L,1717897L,1717898L,1717899L,1717900L,1717901L,1717903L,1717905L,1717910L,1717917L,1717941L,1717943L,1718003L,1718120L,1718121L,1718152L,1718154L,1718157L,1718160L,1718162L,1718166L,1718170L,1718171L,1718172L,1718182L,1718183L,1718185L,1718294L,1718297L,1718298L,1718301L,1718572L,1718592L,1718594L,1718789L,1718790L,1718792L,1718793L,1718795L,1718797L,1718798L,1718800L,1718801L,1718809L,1718810L,1718865L,1718888L,1718897L,1718909L,1718913L,1718988L,1718990L,1719020L,1719024L,1719081L,1719083L,1719088L,1719090L,1719091L,1719114L,1719124L,1719147L,1719149L,1719154L,1719157L,1719160L,1719176L,1719178L,1719183L,1719187L,1719188L,1719193L,1719197L,1719202L,1719205L,1719219L,1719221L,1719222L,1719228L,1719259L,1719296L,1719297L,1719299L,1719300L,1719303L,1719309L,1719310L,1719327L,1719331L,1719332L,1719333L,1719339L,1719348L,1719376L,1719378L,1719388L,1719442L,1719444L,1719446L,1719447L,1719458L,1719459L,1719471L,1719472L,1719490L,1720721L,1720722L,1720734L,1720735L,1720786L,1720787L,1720801L,1720821L,1720831L,1720833L,1720834L,1720835L,1720838L,1720844L,1720846L,1720971L,1720976L,1720978L,1720979L,1720980L,1720982L,1721098L,1721132L,1721354L,1721429L,1721430L,1721431L,1721441L,1721443L,1721446L,1721447L,1721448L,1721485L,1721486L,1721487L,1721488L,1721489L,1721490L,1721491L,1721575L,1721576L,1721585L,1721586L,1721589L,1721591L,1721592L,1721593L,1721594L,1721595L,1721596L,1721842L,1721843L,1721844L,1721855L,1721857L,1721859L,1721861L,1721938L,1721939L,1722001L,1722002L,1722010L,1722011L,1722020L,1723421L,1723931L,1723932L,1723939L,1723945L,1723946L,1723947L,1724137L,1724138L,1724140L,1724142L,1724143L,1724148L,1724149L,1724150L,1724151L,1724307L,1724309L,1724313L,1724344L,1724347L,1724348L,1724727L,1724728L,1724733L,1724734L,1724735L,1724736L,1724737L,1724738L,1724740L,1724742L,1724745L,1724790L,1724792L,1724795L,1724875L,1724876L,1724877L,1724878L,1724879L,1724880L,1724881L,1724893L,1724895L,1724897L,1724898L,1724899L,1724900L,1724901L,1724902L,1724903L,1724971L,1725003L,1725004L,1725016L,1725017L,1725019L,1725021L,1725022L,1725095L,1725109L,1725110L,1725111L,1725128L,1725129L,1725563L,1725565L,1725566L,1725569L,1725570L,1725598L,1725602L,1725603L,1725604L,1725708L,1725711L,1725714L,1725717L,1725719L,1725720L,1725721L,1725722L,1725723L,1725725L,1725727L,1725728L,1725733L,1725736L,1725743L,1725772L,1725773L,1726013L,1726195L,1726200L,1726202L,1726203L,1726205L,1726224L,1726225L,1726226L,1726227L,1726228L,1726231L,1726233L,1726236L,1726237L,1726238L,1726239L,1726241L,1726242L,1726248L,1726252L,1726259L,1726290L,1726292L,1726293L,1726294L,1726295L,1726296L,1726297L,1726298L,1726472L,1726473L,1726474L,1726476L,1726477L,1726478L,1726479L,1726480L,1726484L,1726695L,1726696L,1726697L,1726699L,1726700L,1726703L,1726704L,1726705L }; for (Long id : ids) { System.out.println(tbsActivityDebugApplicationService.reset(id)); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java index a56a1b01..bc220f45 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java @@ -65,6 +65,17 @@ public class TbsBudgetLogController { return R.ok(); } + /** + * 初始化活动申请费用 + * @param activityId + * @return + */ + @GetMapping("/debugActivity") + public R debugActivity(Long activityId){ + tbsBudgetReleaseApplicationService.initHis(activityId); + return R.ok(); + } + /** * 翻页 * @param param diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityChannelPointMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityChannelPointMapper.java index a1d0970a..0f19be1e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityChannelPointMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityChannelPointMapper.java @@ -1,7 +1,10 @@ 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.TbsActivityChannelPoint; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** * 活动网点项 Mapper @@ -10,5 +13,26 @@ import com.qs.serve.modules.tbs.entity.TbsActivityChannelPoint; */ public interface TbsActivityChannelPointMapper extends BaseMapper { + /** + * 检查科目必选网点拦截 + * @param activityId + * @return activityId表示被拦截,空表示ok + */ + @InterceptorIgnore(tenantLine = "1") + @Select("select tbs_activity_subject.activity_id from tbs_activity_subject " + + "left join bms_subject on subject_id = bms_subject.id " + + "left join ( " + + " select count(1) as count_point,activity_id from tbs_activity_channel_point " + + " where del_flag = 0 and activity_id = #{activityId} " + + " group by activity_id " + + ") t1 on t1.activity_id = tbs_activity_subject.activity_id " + + "where " + + " bms_subject.del_flag = 0 " + + "and tbs_activity_subject.del_flag = 0 " + + "and bms_subject.point_select_flag = 1 " + + "and (t1.activity_id is null or t1.count_point = 0) " + + "and tbs_activity_subject.activity_id = #{activityId}") + Long checkSubjectPoint(@Param("activityId") Long activityId); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java index c447d038..6ead8ca8 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsScheduleItemBudgetMapper.java @@ -226,7 +226,6 @@ public interface TbsScheduleItemBudgetMapper extends BaseMapper goodsList = activityCenterGoodsListOfSubject.stream() .filter(a->a.getCenterId().equals(center.getCenterId())&&a.getCenterType().equals(center.getCenterType())) .collect(Collectors.toList()); + if(goodsList.size()==0){ + if(subjectCenterList.size()==1 && activityCenterGoodsListOfSubject.size()==1){ + TbsActivityCenterGoods centerGoods = activityCenterGoodsListOfSubject.get(0); + centerGoods.setCenterType(center.getCenterType()); + centerGoods.setCenterId(center.getCenterId()); + centerGoods.setCenterName(center.getCenterName()); + goodsList = new ArrayList<>(); + goodsList.add(centerGoods); + }else { + log.error("商品数据缺失"); + return "商品数据缺失"; + } + } final BigDecimal centerUsed = center.getUsedAmount(); final BigDecimal centerAmt = center.getCenterAmount(); @@ -358,7 +371,6 @@ public class TbsActivityDebugApplicationService { } - if(activity.getUsedAmount().compareTo(totalSubjectUsedAmt)!=0){ log.error("活动和totalSubjectUsedAmt匹对金额异常:{}",activityId); return "活动和totalSubjectUsedAmt匹对金额异常"; @@ -415,6 +427,10 @@ public class TbsActivityDebugApplicationService { continue; } + if(goodApplyLogs.size()==0){ + return "缺失费用申请log"; + } + // 新log TbsBudgetLog newApplyLog = CopierUtil.copy(goodApplyLogs.get(0),new TbsBudgetLog()); newApplyLog.setId(null); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java index d01f882a..347299cb 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java @@ -38,11 +38,85 @@ public class TbsBudgetReleaseApplicationService { private final TbsActivityCenterGoodsService activityCenterGoodsService; private final TbsCostApplyService costApplyService; private final TbsActivityPayConditionService activityPayConditionService; + private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService; + public void initHis(Long activityId){ + TbsBudget budget = budgetService.getById("1669"); + TbsScheduleItemBudget scheduleItemBudget = tbsScheduleItemBudgetService.getById("4896"); + TbsActivity activity = activityService.getById(activityId); + TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); + SysUser sysUser = new SysUser(); + sysUser.setId("0"); + sysUser.setName("系统执行"); + sysUser.setCode("0"); + + List budgetLogList = new ArrayList<>(); + List centerGoodsList = activityCenterGoodsService.listByActivityId(activityId); + for (TbsActivityCenterGoods centerGoods : centerGoodsList) { + BigDecimal amount = centerGoods.getCenterGoodsAmount(); + + TbsBudgetCostItem costItem = new TbsBudgetCostItem(); + costItem.setCenterGoodsCode(centerGoods.getCenterGoodsCode()); + costItem.setCostApplyId(centerGoods.getCostApplyId()); + costItem.setActivityId(centerGoods.getActivityId()); + costItem.setActivityCode(centerGoods.getActivityCode()); + costItem.setSupplierId(centerGoods.getSupplierId()); + costItem.setSupplierCode(centerGoods.getSupplierCode()); + costItem.setSupplierName(centerGoods.getSupplierName()); + costItem.setSubjectId(centerGoods.getSubjectId()); + costItem.setSubjectCode(centerGoods.getSubjectCode()); + costItem.setSubjectName(centerGoods.getSubjectName()); + costItem.setCenterType(centerGoods.getCenterType()); + costItem.setCenterId(centerGoods.getCenterId()); + costItem.setCenterCode(centerGoods.getCenterCode()); + costItem.setCenterName(centerGoods.getCenterName()); + costItem.setCenterAmount(centerGoods.getCenterAmount()); + costItem.setCenterRate(centerGoods.getCenterRate()); + costItem.setCenterGoodsAmount(centerGoods.getCenterGoodsAmount()); + costItem.setCenterGoodsRate(centerGoods.getCenterGoodsRate()); + costItem.setTargetType(centerGoods.getTargetType()); + costItem.setTargetId(centerGoods.getTargetId()); + costItem.setTargetCode(centerGoods.getTargetCode()); + costItem.setTargetName(centerGoods.getTargetName()); + costItem.setTargetLevelPathIds(centerGoods.getTargetLevelPathIds()); + costItem.setTargetLevelPathNames(centerGoods.getTargetLevelPathNames()); + costItem.setActStartDate(centerGoods.getActStartDate()); + costItem.setActEndDate(centerGoods.getActEndDate()); + costItem.setPreStartDate(centerGoods.getPreStartDate()); + costItem.setPreEndDate(centerGoods.getPreEndDate()); + costItem.setPreCheckDate(centerGoods.getPreCheckDate()); + costItem.setCenterGoodItemId(centerGoods.getId()); + + TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.buildTbsBudgetLog(BudgetLogOptFlag.State_1,sysUser,costApply,costItem ,budget,amount,activity); + budgetLog.setBudgetId(budget.getId()); + + budgetLog.setScheduleItemBudgetId(scheduleItemBudget.getId()); + budgetLog.setScheduleId(scheduleItemBudget.getScheduleId()); + budgetLog.setScheduleItemId(scheduleItemBudget.getScheduleItemId()); + budgetLog.setItemName(scheduleItemBudget.getItemName()); + + budgetLogList.add(budgetLog); + } + //移除历史记录 + budgetLogService.remove(new LambdaQueryWrapper() + .eq(TbsBudgetLog::getCostApplyId,activity.getCostApplyId()) + .eq(TbsBudgetLog::getOptType, BudgetLogOptFlag.State_1.getCode()) + .eq(TbsBudgetLog::getActivityId,activity.getId())); + //重新保存 + if(CollectionUtil.isNotEmpty(budgetLogList)){ + budgetLogService.saveBatch(budgetLogList); + } + + } + + /** + * 依据剩余预算刷新释放金额 + */ public void check(){ //校验活动的核销金额是否匹配,不匹配则中断 //查询需要补偿释放的活动ID - List activityIds = vtbFundFlowMapper.listMissReleaseActivityId(); + //List activityIds = vtbFundFlowMapper.listMissReleaseActivityId(); + Long[] activityIds = new Long[]{229065L,229066L,229067L,229068L,229069L,229070L,229071L,229072L,229073L,229074L,229075L}; for (Long activityId : activityIds) { TbsActivity activity = activityService.getById(activityId); TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); @@ -84,6 +158,9 @@ public class TbsBudgetReleaseApplicationService { budgetLogList.add(budgetLog); } + //TODO 二次校验,释放金额是否一致 + + //移除历史记录 fundFlowService.remove( new LambdaQueryWrapper() diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java index 9cbf73e4..24c7ec34 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java @@ -553,7 +553,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl activityGoodsList = goodsListMap.get(activityId); for (TbsActivityGoods goods : activityGoodsList) { boolean isMatch = false; - for (TbsBudgetCondition condition : budgetConditionList) { - if(goods.getTargetLevelPathIds().contains(condition.getTargetLevelPathIds())){ - isMatch = true; - break; + if(CollUtil.isNotEmpty(budgetConditionList)){ + for (TbsBudgetCondition condition : budgetConditionList) { + if(goods.getTargetLevelPathIds().contains(condition.getTargetLevelPathIds())){ + isMatch = true; + break; + } } } if(!isMatch){ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java index f8b2e535..037ab094 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java @@ -221,12 +221,12 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService ctpAffairVo.setAffairInfo(ctpAffair); //2已发 if(ctpAffair!=null&&ctpAffair.getState().equals(2)){ - String costId = ctpAffair.getCostApplyId(); - if(costId!=null){ - TbsCostApply costApply1 = costApplyService.getById(costId); - Date date = Date.from(costApply1.getSubmitTime().atZone(ZoneId.systemDefault()).toInstant()); - ctpAffair.setCommentTime(date); - } +// String costId = ctpAffair.getCostApplyId(); +// if(costId!=null){ +// TbsCostApply costApply1 = costApplyService.getById(costId); +// Date date = Date.from(costApply1.getSubmitTime().atZone(ZoneId.systemDefault()).toInstant()); +// ctpAffair.setCommentTime(date); +// } } for (SysUser user : userList) { if(ctpAffair.getMemberId().equals(user.getSyUserId())){ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 79a5f336..f99c6140 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -88,6 +88,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class TbsCostApplyServiceImpl extends ServiceImpl implements TbsCostApplyService { + private TbsActivityChannelPointMapper tbsActivityChannelPointMapper; private VtbVerificationMapper vtbVerificationMapper; private TbsBudgetApplicationService budgetApplicationService; private TbsBudgetCostItemService budgetCostItemService; @@ -513,6 +514,13 @@ public class TbsCostApplyServiceImpl extends ServiceImpl activityList = tbsActivityMapper.selectList(actLqw); + for (TbsActivity activity : activityList) { + Long actId = tbsActivityChannelPointMapper.checkSubjectPoint(activity.getId()); + if(actId!=null){ + Assert.throwEx("活动["+activity.getActivityCode() + "]因科目类型,必须选网点"); + } + } + //判断是否进场费 if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(2)){ if (activityList.size()>1){ From fd18560b63dd006e29a2e48b1cfbf8a7cf26cae0 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 31 May 2024 10:33:36 +0800 Subject: [PATCH 05/19] =?UTF-8?q?feat=EF=BC=9A=E6=8B=93=E5=B1=95=E7=A7=91?= =?UTF-8?q?=E7=9B=AE=E9=99=90=E5=88=B6=E7=BD=91=E7=82=B9=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/tbs/controller/TbsActivityController.java | 1 - .../modules/tbs/service/impl/TbsActivityServiceImpl.java | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index 16a38dc4..7c5c04ab 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java @@ -110,7 +110,6 @@ public class TbsActivityController { @GetMapping("/resetList") public R reset(){ Long[] ids = new Long[]{ - 1702815L,1702816L,1702818L,1702819L,1702820L,1702821L,1702822L,1702823L,1702824L,1702826L,1702827L,1702829L,1702834L,1702835L,1702836L,1702837L,1702838L,1702839L,1702840L,1702841L,1702842L,1702843L,1702844L,1702845L,1702846L,1702847L,1702848L,1702849L,1702850L,1702851L,1702852L,1702853L,1702854L,1702855L,1702856L,1702857L,1702858L,1702859L,1702860L,1702861L,1702862L,1702863L,1702864L,1702865L,1702866L,1702867L,1702869L,1702870L,1702871L,1702872L,1702873L,1702874L,1702875L,1702876L,1702877L,1702878L,1702879L,1702880L,1702881L,1702882L,1702883L,1702884L,1702885L,1702886L,1702887L,1702888L,1702889L,1702891L,1702892L,1702899L,1702900L,1702901L,1702903L,1702904L,1702905L,1702906L,1702907L,1702908L,1702909L,1702910L,1702912L,1702913L,1702914L,1702915L,1702916L,1702917L,1702918L,1702919L,1702920L,1702921L,1702923L,1702924L,1702925L,1702926L,1702928L,1702929L,1702930L,1702931L,1702932L,1702933L,1702935L,1702936L,1702937L,1702938L,1702940L,1702948L,1702953L,1702955L,1702958L,1702959L,1702960L,1702961L,1702962L,1702963L,1702964L,1702965L,1702967L,1702968L,1702969L,1702970L,1702971L,1702972L,1702973L,1702974L,1702975L,1702978L,1702982L,1702983L,1702984L,1702985L,1702986L,1702987L,1702988L,1702990L,1702992L,1702993L,1702994L,1702995L,1702996L,1702997L,1702998L,1702999L,1703000L,1703001L,1703002L,1703003L,1703004L,1703007L,1703008L,1703009L,1703010L,1703011L,1703012L,1703013L,1703014L,1703015L,1703016L,1703018L,1703019L,1703020L,1703021L,1703022L,1703023L,1703024L,1703025L,1703026L,1703028L,1703029L,1703030L,1703031L,1703032L,1703033L,1703034L,1703036L,1703037L,1703038L,1703041L,1703043L,1703044L,1703047L,1703048L,1703052L,1703053L,1703054L,1703055L,1703056L,1703057L,1703059L,1703060L,1703061L,1703062L,1703063L,1703064L,1703065L,1703066L,1703067L,1703069L,1703072L,1703073L,1703075L,1703076L,1703077L,1703078L,1703079L,1703081L,1703083L,1703084L,1703086L,1703087L,1703089L,1703095L,1703099L,1703100L,1703101L,1703103L,1703104L,1703105L,1703106L,1703107L,1703108L,1703109L,1703111L,1703112L,1703114L,1703115L,1703116L,1703117L,1703118L,1703119L,1703120L,1703122L,1703123L,1703125L,1703126L,1703127L,1703128L,1703129L,1703130L,1703131L,1703133L,1703135L,1703136L,1703137L,1703138L,1703139L,1703140L,1703141L,1703142L,1703143L,1703144L,1703145L,1703146L,1703147L,1703148L,1703149L,1703150L,1703152L,1703153L,1703154L,1703155L,1703156L,1703157L,1703158L,1703162L,1703164L,1703165L,1703169L,1703170L,1703171L,1703173L,1703174L,1703175L,1703176L,1703177L,1703178L,1703181L,1703182L,1703183L,1703184L,1703187L,1703188L,1703189L,1703190L,1703192L,1703193L,1703194L,1703195L,1703196L,1703197L,1703198L,1703199L,1703200L,1703202L,1703203L,1703205L,1703206L,1703207L,1703209L,1703210L,1703212L,1703213L,1703214L,1703215L,1703217L,1703218L,1703220L,1703221L,1703222L,1703223L,1703224L,1703226L,1703228L,1703229L,1703231L,1703233L,1703234L,1703235L,1703236L,1703237L,1703238L,1703239L,1703240L,1703241L,1703242L,1703243L,1703244L,1703246L,1703247L,1703248L,1703249L,1703250L,1703251L,1703252L,1703253L,1703254L,1703255L,1703256L,1703258L,1703260L,1703262L,1703263L,1703264L,1703265L,1703267L,1703269L,1703270L,1703271L,1703272L,1703273L,1703276L,1703278L,1703280L,1703283L,1703284L,1703285L,1703287L,1703288L,1703291L,1703292L,1703293L,1703294L,1703295L,1703296L,1703297L,1703300L,1703301L,1703302L,1703307L,1703308L,1703309L,1703310L,1703311L,1703313L,1703314L,1703315L,1703316L,1703317L,1703319L,1703320L,1703321L,1703322L,1703325L,1703326L,1703327L,1703328L,1703329L,1703330L,1703331L,1703333L,1703334L,1703335L,1703338L,1703342L,1703345L,1703346L,1703350L,1703351L,1703354L,1703355L,1703356L,1703357L,1703358L,1703360L,1703362L,1703363L,1703364L,1703365L,1703366L,1703368L,1703369L,1703370L,1703371L,1703372L,1703373L,1703374L,1703375L,1703376L,1703377L,1703378L,1703379L,1703380L,1703381L,1703382L,1703383L,1703385L,1703387L,1703391L,1703394L,1703395L,1703396L,1703398L,1703399L,1703400L,1703401L,1703403L,1703404L,1703405L,1703407L,1703408L,1703410L,1703411L,1703412L,1703413L,1703414L,1703415L,1703421L,1703422L,1703423L,1703426L,1703427L,1703428L,1703429L,1703430L,1703431L,1703432L,1703433L,1703435L,1703436L,1703437L,1703438L,1703440L,1703441L,1703442L,1703443L,1703445L,1703446L,1703456L,1703461L,1703479L,1703480L,1703486L,1703488L,1703489L,1703491L,1703494L,1703497L,1703498L,1703506L,1703515L,1703516L,1703517L,1703519L,1703520L,1703521L,1703522L,1703523L,1703524L,1703557L,1703620L,1703631L,1703634L,1703668L,1703850L,1703854L,1703862L,1703863L,1703870L,1703940L,1703941L,1703955L,1703976L,1703982L,1703995L,1704078L,1704214L,1705268L,1705278L,1705282L,1705311L,1705314L,1705349L,1706282L,1706285L,1706286L,1706287L,1706421L,1706422L,1706423L,1706435L,1706440L,1706442L,1707024L,1707025L,1707076L,1707188L,1707190L,1707520L,1707583L,1707584L,1707999L,1708000L,1708777L,1708778L,1708783L,1708836L,1708858L,1708861L,1708863L,1708866L,1708868L,1708869L,1708870L,1708874L,1708876L,1708883L,1708884L,1709451L,1709478L,1709511L,1709513L,1709516L,1709525L,1709527L,1709535L,1709920L,1709921L,1709925L,1709929L,1710310L,1710505L,1710506L,1710527L,1710528L,1710529L,1710531L,1710534L,1710622L,1710623L,1711162L,1711163L,1711288L,1711301L,1711304L,1711313L,1711864L,1711867L,1711869L,1711876L,1711904L,1711907L,1711910L,1711911L,1711912L,1711927L,1711928L,1712196L,1712201L,1712206L,1712231L,1712261L,1712307L,1712309L,1712493L,1712500L,1712743L,1712744L,1712790L,1712791L,1712832L,1712868L,1712869L,1712877L,1712953L,1713120L,1713121L,1713122L,1713124L,1713298L,1713318L,1713321L,1713324L,1713335L,1713340L,1713351L,1713352L,1714129L,1714131L,1714260L,1714261L,1714262L,1716447L,1716448L,1716449L,1716452L,1716660L,1716661L,1716663L,1716664L,1716667L,1716671L,1716674L,1716676L,1716677L,1716678L,1716691L,1716699L,1716700L,1716702L,1716706L,1716707L,1716708L,1716711L,1716712L,1716942L,1717023L,1717027L,1717028L,1717029L,1717033L,1717038L,1717042L,1717043L,1717047L,1717050L,1717053L,1717055L,1717123L,1717125L,1717133L,1717397L,1717398L,1717478L,1717479L,1717483L,1717484L,1717522L,1717523L,1717528L,1717530L,1717531L,1717532L,1717534L,1717537L,1717538L,1717539L,1717540L,1717541L,1717542L,1717543L,1717544L,1717545L,1717546L,1717547L,1717548L,1717847L,1717862L,1717863L,1717876L,1717881L,1717882L,1717883L,1717886L,1717889L,1717890L,1717892L,1717893L,1717894L,1717895L,1717896L,1717897L,1717898L,1717899L,1717900L,1717901L,1717903L,1717905L,1717910L,1717917L,1717941L,1717943L,1718003L,1718120L,1718121L,1718152L,1718154L,1718157L,1718160L,1718162L,1718166L,1718170L,1718171L,1718172L,1718182L,1718183L,1718185L,1718294L,1718297L,1718298L,1718301L,1718572L,1718592L,1718594L,1718789L,1718790L,1718792L,1718793L,1718795L,1718797L,1718798L,1718800L,1718801L,1718809L,1718810L,1718865L,1718888L,1718897L,1718909L,1718913L,1718988L,1718990L,1719020L,1719024L,1719081L,1719083L,1719088L,1719090L,1719091L,1719114L,1719124L,1719147L,1719149L,1719154L,1719157L,1719160L,1719176L,1719178L,1719183L,1719187L,1719188L,1719193L,1719197L,1719202L,1719205L,1719219L,1719221L,1719222L,1719228L,1719259L,1719296L,1719297L,1719299L,1719300L,1719303L,1719309L,1719310L,1719327L,1719331L,1719332L,1719333L,1719339L,1719348L,1719376L,1719378L,1719388L,1719442L,1719444L,1719446L,1719447L,1719458L,1719459L,1719471L,1719472L,1719490L,1720721L,1720722L,1720734L,1720735L,1720786L,1720787L,1720801L,1720821L,1720831L,1720833L,1720834L,1720835L,1720838L,1720844L,1720846L,1720971L,1720976L,1720978L,1720979L,1720980L,1720982L,1721098L,1721132L,1721354L,1721429L,1721430L,1721431L,1721441L,1721443L,1721446L,1721447L,1721448L,1721485L,1721486L,1721487L,1721488L,1721489L,1721490L,1721491L,1721575L,1721576L,1721585L,1721586L,1721589L,1721591L,1721592L,1721593L,1721594L,1721595L,1721596L,1721842L,1721843L,1721844L,1721855L,1721857L,1721859L,1721861L,1721938L,1721939L,1722001L,1722002L,1722010L,1722011L,1722020L,1723421L,1723931L,1723932L,1723939L,1723945L,1723946L,1723947L,1724137L,1724138L,1724140L,1724142L,1724143L,1724148L,1724149L,1724150L,1724151L,1724307L,1724309L,1724313L,1724344L,1724347L,1724348L,1724727L,1724728L,1724733L,1724734L,1724735L,1724736L,1724737L,1724738L,1724740L,1724742L,1724745L,1724790L,1724792L,1724795L,1724875L,1724876L,1724877L,1724878L,1724879L,1724880L,1724881L,1724893L,1724895L,1724897L,1724898L,1724899L,1724900L,1724901L,1724902L,1724903L,1724971L,1725003L,1725004L,1725016L,1725017L,1725019L,1725021L,1725022L,1725095L,1725109L,1725110L,1725111L,1725128L,1725129L,1725563L,1725565L,1725566L,1725569L,1725570L,1725598L,1725602L,1725603L,1725604L,1725708L,1725711L,1725714L,1725717L,1725719L,1725720L,1725721L,1725722L,1725723L,1725725L,1725727L,1725728L,1725733L,1725736L,1725743L,1725772L,1725773L,1726013L,1726195L,1726200L,1726202L,1726203L,1726205L,1726224L,1726225L,1726226L,1726227L,1726228L,1726231L,1726233L,1726236L,1726237L,1726238L,1726239L,1726241L,1726242L,1726248L,1726252L,1726259L,1726290L,1726292L,1726293L,1726294L,1726295L,1726296L,1726297L,1726298L,1726472L,1726473L,1726474L,1726476L,1726477L,1726478L,1726479L,1726480L,1726484L,1726695L,1726696L,1726697L,1726699L,1726700L,1726703L,1726704L,1726705L }; for (Long id : ids) { System.out.println(tbsActivityDebugApplicationService.reset(id)); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java index 0aa99d9b..c2d6409e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java @@ -58,6 +58,7 @@ public class TbsActivityServiceImpl extends ServiceImpl Date: Fri, 31 May 2024 10:51:59 +0800 Subject: [PATCH 06/19] =?UTF-8?q?feat=EF=BC=9A=E6=8B=93=E5=B1=95=E7=A7=91?= =?UTF-8?q?=E7=9B=AE=E9=99=90=E5=88=B6=E7=BD=91=E7=82=B9=E9=80=89=E6=8B=A9?= =?UTF-8?q?=20feat:=20=E6=94=AF=E4=BB=98=E6=B7=BB=E5=8A=A0=E5=89=8D?= =?UTF-8?q?=E7=BD=AE=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/controller/PayPaymentController.java | 96 ++++++++++++++++--- .../service/impl/TbsActivityServiceImpl.java | 9 +- 2 files changed, 89 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java b/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java index b104aa7f..d8303465 100644 --- a/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java +++ b/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java @@ -25,9 +25,13 @@ import com.qs.serve.modules.pay.entity.vo.PaySupplierVo; import com.qs.serve.modules.pay.mapper.PaySupplierMapper; import com.qs.serve.modules.pay.service.PayPaymentItemService; import com.qs.serve.modules.sys.entity.SysConfig; +import com.qs.serve.modules.sys.entity.SysSyncLog; import com.qs.serve.modules.sys.service.SysConfigService; import com.qs.serve.modules.sys.service.SysPostUserService; +import com.qs.serve.modules.sys.service.SysSyncLogService; import com.qs.serve.modules.tbs.mapper.TbsCostApplySumAmountMapper; +import com.qs.serve.modules.third.ThirdTokenUtil; +import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -39,6 +43,7 @@ import com.qs.serve.modules.pay.entity.bo.PayPaymentBo; import com.qs.serve.modules.pay.entity.PayPayment; import com.qs.serve.modules.pay.service.PayPaymentService; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.math.BigDecimal; import java.time.LocalDate; @@ -63,6 +68,7 @@ public class PayPaymentController { private PaySupplierMapper paySupplierMapper; private DateCheckApplyService dateCheckApplyService; private SysConfigService configService; + private SysSyncLogService sysSyncLogService; /** * 客户费用列表 @@ -228,9 +234,27 @@ public class PayPaymentController { @PostMapping("/unPayment") @SysLog(module = SystemModule.Payment, title = "支付", biz = BizType.INSERT) @PreAuthorize("hasRole('pay:payment:pay')") - public R unPayment(@RequestBody @Valid PayPaymentBo param){ - PayPayment payPayment = payPaymentService.unpayment(param); - return R.ok(payPayment); + public R unPayment(@RequestBody @Valid PayPaymentBo param, HttpServletRequest request){ + SysSyncLog syncLog = new SysSyncLog(); + syncLog.setFromPlat("新增不再支付"); + syncLog.setUrl(request.getRequestURI()); + syncLog.setRequestJson(JsonUtil.objectToJson(param)); + syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); + PayPayment payPayment = null; + try { + payPayment = payPaymentService.unpayment(param); + syncLog.setSuccessStatus(1); + } catch (Exception e) { + syncLog.setFailReason(e.getMessage()); + sysSyncLogService.save(syncLog); + return R.error(e.getMessage()); + } + sysSyncLogService.save(syncLog); + if(syncLog.getSuccessStatus()!=null&&syncLog.getSuccessStatus().equals(1)){ + return R.ok(payPayment); + } + return R.error("新增不再支付异常"); + } @@ -242,9 +266,25 @@ public class PayPaymentController { @PostMapping("/cancelUnPayment") @SysLog(module = SystemModule.Payment, title = "支付", biz = BizType.INSERT) @PreAuthorize("hasRole('pay:payment:pay')") - public R cancelUnPayment(@RequestBody String verificationCode){ - payPaymentService.cancelUnPayment(verificationCode); - return R.ok(); + public R cancelUnPayment(@RequestBody String verificationCode, HttpServletRequest request){ + SysSyncLog syncLog = new SysSyncLog(); + syncLog.setFromPlat("取消不再支付"); + syncLog.setUrl(request.getRequestURI()); + syncLog.setRemark(verificationCode); + syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); + try { + payPaymentService.cancelUnPayment(verificationCode); + syncLog.setSuccessStatus(1); + } catch (Exception e) { + syncLog.setFailReason(e.getMessage()); + sysSyncLogService.save(syncLog); + return R.error(e.getMessage()); + } + sysSyncLogService.save(syncLog); + if(syncLog.getSuccessStatus()!=null&&syncLog.getSuccessStatus().equals(1)){ + return R.ok(); + } + return R.error("取消不再支付异常"); } /** @@ -255,9 +295,26 @@ public class PayPaymentController { @PostMapping("/save") @SysLog(module = SystemModule.Payment, title = "支付", biz = BizType.INSERT) @PreAuthorize("hasRole('pay:payment:pay')") - public R save(@RequestBody @Valid PayPaymentBo param){ - PayPayment payPayment = payPaymentService.payment(param); - return R.ok(payPayment); + public R save(@RequestBody @Valid PayPaymentBo param, HttpServletRequest request){ + SysSyncLog syncLog = new SysSyncLog(); + syncLog.setFromPlat("新增支付"); + syncLog.setUrl(request.getRequestURI()); + syncLog.setRequestJson(JsonUtil.objectToJson(param)); + syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); + PayPayment payPayment = null; + try { + payPayment = payPaymentService.payment(param); + syncLog.setSuccessStatus(1); + } catch (Exception e) { + syncLog.setFailReason(e.getMessage()); + sysSyncLogService.save(syncLog); + return R.error(e.getMessage()); + } + sysSyncLogService.save(syncLog); + if(syncLog.getSuccessStatus()!=null&&syncLog.getSuccessStatus().equals(1)){ + return R.ok(payPayment); + } + return R.error("新增支付异常"); } /** @@ -268,9 +325,24 @@ public class PayPaymentController { @RequestMapping(value = "/cancel/{id}",method = {RequestMethod.GET,RequestMethod.DELETE}) @SysLog(module = SystemModule.Payment, title = "取消支付", biz = BizType.DELETE) @PreAuthorize("hasRole('pay:payment:cancel')") - public R cancelById(@PathVariable("id") String erpId){ - payPaymentService.cancel(erpId); - return R.ok(); + public R cancelById(@PathVariable("id") String erpId, HttpServletRequest request){ + SysSyncLog syncLog = new SysSyncLog(); + syncLog.setFromPlat("取消支付"); + syncLog.setUrl(request.getRequestURI()); + syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); + try { + payPaymentService.cancel(erpId); + syncLog.setSuccessStatus(1); + } catch (Exception e) { + syncLog.setFailReason(e.getMessage()); + sysSyncLogService.save(syncLog); + return R.error(e.getMessage()); + } + sysSyncLogService.save(syncLog); + if(syncLog.getSuccessStatus()!=null&&syncLog.getSuccessStatus().equals(1)){ + return R.ok(); + } + return R.error("取消支付异常"); } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java index c2d6409e..a0a247f9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java @@ -195,10 +195,7 @@ public class TbsActivityServiceImpl extends ServiceImpl0){ activityChannelPointService.saveBatch(activityChannelPointList); } + Long actId = tbsActivityChannelPointMapper.checkSubjectPoint(activity.getId()); + if(actId!=null){ + Assert.throwEx("活动["+activity.getActivityCode() + "]因科目类型,必须选网点"); + } //保存 activityGoodsService.saveBatch(activityGoodsList); activitySubjectService.saveBatch(activitySubjects); From 809e2e744e47df1d417f8d5cf7854b0e091b1d9b Mon Sep 17 00:00:00 2001 From: Yen Date: Sat, 1 Jun 2024 16:44:31 +0800 Subject: [PATCH 07/19] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/bms/controller/BmsChannelController.java | 7 +++++++ .../bms/service/impl/BmsChannelPointServiceImpl.java | 9 +++++++++ .../modules/goods/service/impl/GoodsSpuServiceImpl.java | 3 --- .../modules/tbs/controller/TbsBudgetLogController.java | 4 ++-- .../tbs/service/TbsBudgetReleaseApplicationService.java | 4 ++-- .../modules/tbs/service/TbsCostContractApplication.java | 4 ++++ .../modules/third/service/PortalOfCostApplication.java | 1 + .../vtb/service/impl/VtbVerificationServiceImpl.java | 6 ++++++ 8 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java index 386dbc57..bb643a1f 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java @@ -194,6 +194,13 @@ public class BmsChannelController { param.setHeadChannel(""); param.setHeadChannelCode(""); } + //编码不可重复 + Long count = bmsChannelService.count(new LambdaQueryWrapper() + .ne(BmsChannel::getId,param.getId()) + .eq(BmsChannel::getChannelCode,param.getChannelCode())); + if(count > 0){ + return R.error("编码不可重复"); + } boolean result = bmsChannelService.updateById(param); if(!ori.getChannelName().equals(param.getChannelName())){ List channelPoints = bmsChannelPointService.listByChannelId(param.getId()); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java index da6f35c9..2d4203e9 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.bms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.RowParam; import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.AuthContextUtils; @@ -98,6 +99,14 @@ public class BmsChannelPointServiceImpl extends ServiceImpl() + .ne(BmsChannelPoint::getId,channelPoint.getId()) + .eq(BmsChannelPoint::getPointCode,channelPoint.getPointCode())); + if(count > 0){ + Assert.throwEx("编码不可重复"); + } + BmsChannelPoint orgData = this.getById(channelPoint.getId()); sysBusinessLogService.buildLog4Change(BusinessLogType.Point, channelPoint.getId()+"",channelPoint.getPointCode(),channelPoint.getPointName(),null,orgData,channelPoint); diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java index d9211180..f235ec84 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java @@ -167,9 +167,6 @@ public class GoodsSpuServiceImpl extends ServiceImpl im @Transactional(rollbackFor = Exception.class) public GoodsSpu editTasteSpu(GoodsSpuBo param) { GoodsSpu spu = CopierUtil.copy(param,new GoodsSpu()); - if(param.getId()!=null){ - spu.setSpuCode(null); - } if(StringUtils.hasText(param.getCategoryId())){ GoodsCategory category = goodsCategoryService.getById(param.getCategoryId()); relateCate(spu,category); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java index bc220f45..024df3fc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetLogController.java @@ -61,7 +61,7 @@ public class TbsBudgetLogController { */ @GetMapping("/debug") public R debug(){ - tbsBudgetReleaseApplicationService.check(); + //tbsBudgetReleaseApplicationService.check(); return R.ok(); } @@ -72,7 +72,7 @@ public class TbsBudgetLogController { */ @GetMapping("/debugActivity") public R debugActivity(Long activityId){ - tbsBudgetReleaseApplicationService.initHis(activityId); + //tbsBudgetReleaseApplicationService.initHis(activityId); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java index 347299cb..e997e36e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetReleaseApplicationService.java @@ -112,11 +112,11 @@ public class TbsBudgetReleaseApplicationService { /** * 依据剩余预算刷新释放金额 */ - public void check(){ + public void check(Long actId){ //校验活动的核销金额是否匹配,不匹配则中断 //查询需要补偿释放的活动ID //List activityIds = vtbFundFlowMapper.listMissReleaseActivityId(); - Long[] activityIds = new Long[]{229065L,229066L,229067L,229068L,229069L,229070L,229071L,229072L,229073L,229074L,229075L}; + Long[] activityIds = new Long[]{actId}; for (Long activityId : activityIds) { TbsActivity activity = activityService.getById(activityId); TbsCostApply costApply = costApplyService.getById(activity.getCostApplyId()); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java index e8f4ea32..1d5355c4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractApplication.java @@ -8,6 +8,7 @@ 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 com.qs.serve.modules.vtb.service.VtbVerificationService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -23,10 +24,12 @@ import java.util.List; @AllArgsConstructor public class TbsCostContractApplication { + private final TbsBudgetReleaseApplicationService tbsBudgetReleaseApplicationService; private final TbsActivityPayConditionMapper activityPayConditionMapper; private final TbsActivityPayConditionService activityPayConditionService; private final TbsActivityService tbsActivityService; private final TbsCostApplyService tbsCostApplyService; + private final VtbVerificationService verificationService; public void resetState(){ //更新遗漏的已完成费用申请 @@ -52,6 +55,7 @@ public class TbsCostContractApplication { activity.setReleaseFlag(1); activity.setReleaseAmount(activity.getTotalAmount().subtract(activity.getUsedAmount())); activity.setActivityState(TbsActivityState.STATE_4_Release); + tbsBudgetReleaseApplicationService.check(activity.getId()); } } tbsActivityService.updateBatchById(activityList); diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index f01f037b..ce1226d9 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java @@ -1151,6 +1151,7 @@ public class PortalOfCostApplication { paymentItemService.save(paymentItem); verificationSubjectService.save(verificationSubject); } + if(subjectSurplus.compareTo(BigDecimal.ZERO)>0){ Assert.throwEx("余额不足"); } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 1c98ebcf..69b68964 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -475,6 +475,12 @@ public class VtbVerificationServiceImpl extends ServiceImpl Date: Mon, 3 Jun 2024 14:16:25 +0800 Subject: [PATCH 08/19] =?UTF-8?q?fix=EF=BC=9Abir=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E5=AE=A2=E6=88=B7=E7=A9=BA=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20opt:=20=E7=94=B3=E8=AF=B7=E7=B1=BB=E5=9E=8B=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=A7=91=E7=9B=AE=E7=9A=84=E6=97=B6=E5=80=99=E5=8F=AA?= =?UTF-8?q?=E8=83=BD=E9=80=89=E6=8B=A9=E8=A1=8C=E9=94=80=E8=B4=B9=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BirActivityCenterGoodsController.java | 18 +++++----- .../BirActivityCenterGoodsServiceImpl.java | 25 ++++++++------ .../impl/BirBaseActivityServiceImpl.java | 3 ++ .../bms/controller/BmsSubjectController.java | 34 +++++++++++++------ .../goods/controller/GoodsSpuController.java | 16 +++++++++ .../service/impl/PayPaymentServiceImpl.java | 2 +- .../mapper/bms/BmsSupplierMapper.xml | 2 +- 7 files changed, 69 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java index 167e2554..47a0ebb9 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java @@ -155,12 +155,12 @@ public class BirActivityCenterGoodsController { public R syncBir(Integer idType){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw - .select(TbsCostApply::getId).ne(TbsCostApply::getChargeState,0) - .eq(TbsCostApply::getCancelFlag,0) - .gt(TbsCostApply::getTotalActivity,0) - .ne(TbsCostApply::getTmpState,11) - .le(TbsCostApply::getCreateTime, LocalDate.of(2024,1,1).atStartOfDay()) - .ge(TbsCostApply::getCreateTime, LocalDate.of(2024,2,1).atStartOfDay()) ; + .select(TbsCostApply::getId).in(TbsCostApply::getChargeState,1,2,3,7) + //.eq(TbsCostApply::getCancelFlag,0) + //.ne(TbsCostApply::getTotalActivity,0) + .ne(TbsCostApply::getTmpState,20) + .ge(TbsCostApply::getCreateTime, LocalDate.of(2023,9,1).atStartOfDay()) + .le(TbsCostApply::getCreateTime, LocalDate.of(2024,1,1).atStartOfDay()) ; boolean ex = extracted(lqw); while (!ex){ ex = extracted(lqw); @@ -173,11 +173,13 @@ public class BirActivityCenterGoodsController { if(CollectionUtil.isEmpty(costIds)){ return true; } - for (Long costId : costIds) { + for (int i = 0; i < costIds.size(); i++) { + Long costId = costIds.get(i); centerGoodsService.rebuildBir(Arrays.asList(costId)); tbsCostApplyService.update(new LambdaUpdateWrapper() .eq(TbsCostApply::getId,costId) - .set(TbsCostApply::getTmpState,11)); + .set(TbsCostApply::getTmpState,20)); + log.info("{}/{} {}",i,costIds.size(),costId); } return costIds.size()<100; } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java index a983ece0..b51d4b3d 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java @@ -139,19 +139,22 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl supplierLqw = new LambdaQueryWrapper<>(); - supplierLqw.in(BmsSupplier::getId,activityCenterGoodsAllList.stream().map(a->a.getSupplierId()).distinct().collect(Collectors.toList())); + supplierLqw.in(BmsSupplier::getCode,activityCenterGoodsAllList.stream().map(TbsActivityCenterGoods::getSupplierCode).distinct().collect(Collectors.toList())); List bmsSupplierList = bmsSupplierMapper.selectList(supplierLqw); Map supplierMap = bmsSupplierList.stream().collect(Collectors.toMap(BmsSupplier::getId,a->a)); - LambdaQueryWrapper regionLqw = new LambdaQueryWrapper<>(); - regionLqw.in(BmsRegion::getId,bmsSupplierList.stream().map(a->a.getRegionLast()).collect(Collectors.toList())); - List saleRegionList = regionMapper.selectList(regionLqw); - Map saleRegionMap = saleRegionList.stream().collect(Collectors.toMap(BmsRegion::getId,a->a)); - - LambdaQueryWrapper region2Lqw = new LambdaQueryWrapper<>(); - region2Lqw.in(BmsRegion2::getId,bmsSupplierList.stream().map(a->a.getRegion2Last()).collect(Collectors.toList())); - List bizRegionList = region2Mapper.selectList(region2Lqw); - Map bizRegionMap = bizRegionList.stream().collect(Collectors.toMap(BmsRegion2::getId,a->a)); + Map saleRegionMap = null; + Map bizRegionMap = null; + if(CollUtil.isNotEmpty(bmsSupplierList)) { + LambdaQueryWrapper regionLqw = new LambdaQueryWrapper<>(); + regionLqw.in(BmsRegion::getId,bmsSupplierList.stream().map(BmsSupplier::getRegionLast).collect(Collectors.toList())); + List saleRegionList = regionMapper.selectList(regionLqw); + saleRegionMap = saleRegionList.stream().collect(Collectors.toMap(BmsRegion::getId, a->a)); + LambdaQueryWrapper region2Lqw = new LambdaQueryWrapper<>(); + region2Lqw.in(BmsRegion2::getId,bmsSupplierList.stream().map(BmsSupplier::getRegion2Last).collect(Collectors.toList())); + List bizRegionList = region2Mapper.selectList(region2Lqw); + bizRegionMap = bizRegionList.stream().collect(Collectors.toMap(BmsRegion2::getId, a->a)); + } //过滤无效的费用申请 LambdaQueryWrapper costLqw = new LambdaQueryWrapper<>(); @@ -225,8 +228,10 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl0){ + LocalDateTime nowTime = LocalDateTime.now(); for (BirActivityCenterGoods bir : bacgList) { bir.setId(IdUtil.getSnowflakeNextId()); + bir.setUpdateTime(nowTime); super.getBaseMapper().insert(bir); } } diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java index a331a087..ca94df19 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java @@ -24,6 +24,7 @@ import com.qs.serve.modules.bir.mapper.BirBaseActivityMapper; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.Period; import java.util.ArrayList; import java.util.List; @@ -176,8 +177,10 @@ public class BirBaseActivityServiceImpl extends ServiceImpl subjectIds2 = subjectRegionList.stream().map(a->a.getSubjectId().toString()) .distinct().collect(Collectors.toList()); subjectIds.addAll(subjectIds2); - recursionToSetSelectAble(treeVoList, subjectIds); + recursionToSetSelectAble(treeVoList, subjectIds,null); } } @@ -123,30 +123,42 @@ public class BmsSubjectController { findParentVoAndAddToList(treeVoList,newTreeVoList,pVo); } } + /** * 递归设置可选 * @param treeVoList * @param subjectIds + * @param parentNode */ - private void recursionToSetSelectAble(List treeVoList, List subjectIds) { + private void recursionToSetSelectAble(List treeVoList, List subjectIds,BmsSubjectTreeVo parentNode) { if(CollectionUtil.isEmpty(treeVoList)){ return; } for (Object object : treeVoList) { BmsSubjectTreeVo subjectTreeVo = (BmsSubjectTreeVo)object; - if(CollectionUtil.isEmpty(subjectTreeVo.getChildren())){ - if(subjectTreeVo.getBizRegionFlag().equals(0)||subjectTreeVo.getSaleRegionFlag().equals(0)){ - subjectTreeVo.setApiSelectAble(1); - }else { - for (String subjectId : subjectIds) { - if(subjectTreeVo.getId().equals(subjectId)){ + if(subjectTreeVo.getPid().equals(0L)){ + for (String subjectId : subjectIds) { + if(subjectTreeVo.getId().equals(subjectId)){ + subjectTreeVo.setApiSelectAble(1); + break; + } + } + parentNode = subjectTreeVo; + }else { + if(parentNode.getApiSelectAble().equals(1)){ + if(subjectTreeVo.getBizRegionFlag().equals(0)||subjectTreeVo.getSaleRegionFlag().equals(0)){ + if(!parentNode.getApiSelectAble().equals(0)){ subjectTreeVo.setApiSelectAble(1); - break; } } } - }else { - recursionToSetSelectAble(subjectTreeVo.getChildren(),subjectIds); + } + if(CollectionUtil.isNotEmpty(subjectTreeVo.getChildren())){ + if(parentNode.getApiSelectAble().equals(0)){ + recursionToSetSelectAble(subjectTreeVo.getChildren(),subjectIds,subjectTreeVo); + }else { + recursionToSetSelectAble(subjectTreeVo.getChildren(),subjectIds,subjectTreeVo); + } } } } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index 7db95307..d3021a5c 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.goods.controller; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.qs.serve.common.config.DevEnvironmentConfig; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; @@ -123,6 +124,21 @@ public class GoodsSpuController { return R.ok(result); } + + /** + * 更新spu下单状态 + * @param spuCode + * @param state + * @return + */ + @PutMapping("/orderState/{spuCode}/{state}") + public R updateOrderState(@PathVariable("spuCode")String spuCode, + @PathVariable("state") Integer state){ + boolean ok = goodsSpuService.update(new LambdaUpdateWrapper() + .eq(GoodsSpu::getSpuCode,spuCode).set(GoodsSpu::getOrderFlag,state)); + return R.isTrue(ok); + } + /** * spu下单查询 * @param param diff --git a/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java b/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java index bdd18f91..35aa9419 100644 --- a/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java @@ -135,7 +135,7 @@ public class PayPaymentServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(PayPaymentItem::getVerificationId,vtb.getId()); List payPaymentItemList = paymentItemService.list(lambdaQueryWrapper); - BigDecimal usedAmount = payPaymentItemList.stream().map(a->a.getItemPayAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); + BigDecimal usedAmount = payPaymentItemList.stream().map(PayPaymentItem::getItemPayAmount).reduce(BigDecimal.ZERO,BigDecimal::add); if(usedAmount==null){ usedAmount = BigDecimal.ZERO; } diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index 8a458171..9032e892 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -92,7 +92,6 @@ and `bms_supplier`.`region_first` = #{query.regionFirst} and `bms_supplier`.`region_second` = #{query.regionSecond} and `bms_supplier`.`region_third` = #{query.regionThird} - and `bms_supplier`.`cd_order_flag` = #{query.regionThird} and `bms_supplier`.`supplier_flag` = #{query.supplierFlag} and `bms_supplier`.`address` = #{query.address} and `bms_supplier`.`name` like concat('%',#{query.name},'%') @@ -103,6 +102,7 @@ and `bms_supplier`.`parent_code` = #{query.parentCode} and `bms_supplier`.`stop_flag` = #{query.stopFlag} and `bms_supplier`.`belong` = #{query.belong} + and `bms_supplier`.`cd_order_flag` = #{query.cdOrderFlag} and `bms_supplier`.`create_time` = #{query.createTime} and `bms_supplier`.`create_by` = #{query.createBy} and `bms_supplier`.`update_time` = #{query.updateTime} From be04bd070b0ec21c588f2066b9aee203f494f19c Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 3 Jun 2024 16:17:14 +0800 Subject: [PATCH 09/19] =?UTF-8?q?feat:=20=E5=AE=A1=E6=89=B9=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E9=A2=84=E7=AE=97=E5=8D=A0=E7=94=A8=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BirBudgetScheduleController.java | 13 ++++ .../dto/TbsBudgetCheckingWithAmount.java | 22 ++++++ .../tbs/entity/so/TbsScheduleItemSearch.java | 9 +++ .../tbs/mapper/TbsBudgetLog2Mapper.java | 16 +++++ .../service/TbsScheduleItemBudgetService.java | 12 ++-- .../service/impl/TbsBudgetServiceImpl.java | 2 +- .../TbsScheduleItemBudgetServiceImpl.java | 45 ++++++++++++ .../resources/mapper/tbs/TbsBudget2Mapper.xml | 68 +++++++++++++++++++ 8 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsBudgetCheckingWithAmount.java diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java index dd38e72c..09c5fb49 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java @@ -2,10 +2,12 @@ package com.qs.serve.modules.bir.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.modules.tbs.entity.TbsSchedule; import com.qs.serve.modules.tbs.entity.TbsScheduleItem; +import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCheckingWithAmount; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetWithAmount; import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetIdDto; import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemWithAmount; @@ -49,6 +51,17 @@ public class BirBudgetScheduleController { return R.ok(scheduleItemWithAmounts); } + /** + * 查询预算审批中的使用情况 + * @param query + * @return + */ + @PostMapping("/budgetCheckingList") + public R> queryBudgetUsingList(@RequestBody TbsScheduleItemSearch query){ + query.initCenterCombo(); + return R.byPageHelperList(scheduleItemBudgetService.listBudgetCheckingAmount(query)); + } + /** * 查询周期使用情况 * @param query diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsBudgetCheckingWithAmount.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsBudgetCheckingWithAmount.java new file mode 100644 index 00000000..ceefa93c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsBudgetCheckingWithAmount.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.tbs.entity.dto; + +import lombok.Data; + +/** + * @author YenHex + * @since 2024/6/3 + */ +@Data +public class TbsBudgetCheckingWithAmount { + + private String type; + private String tarId; + private String tarCode; + private String tarTitle; + private String totalAmount; + private String supplierCode; + private String supplierName; + private String userCode; + private String userName; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java index a2590144..5c5da5fb 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java @@ -28,6 +28,11 @@ public class TbsScheduleItemSearch { */ private List scheduleItemIds; + /** + * 周期项的预算ID(用于查询`审批中`的使用情况) + */ + private List scheduleItemBudgetIds; + /** * 品牌ID */ @@ -56,4 +61,8 @@ public class TbsScheduleItemSearch { } } + private Integer pageNum; + + private Integer pageSize; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java index 7fd7f6b1..ca243a4d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.tbs.entity.TbsBudgetLog; import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCheckingWithAmount; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount; import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetIdDto; import com.qs.serve.modules.tbs.entity.so.TbsScheduleItemSearch; @@ -70,5 +71,20 @@ public interface TbsBudgetLog2Mapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") List getCostCheckingList(@Param("selectIds") List ids,@Param("optNumbers")List optNumbers); + /** + * 统计审批中的费用,占用多少的logs + * @param ids + * @param policyNumbers + * @param costNumbers + * @return + */ + @InterceptorIgnore(tenantLine = "true") + List getBudgetLogCheckingList( + @Param("selectIds") List ids + ,@Param("scheduleItemBudgetIds") List scheduleItemBudgetIds + , @Param("policyNumbers")List policyNumbers + , @Param("costNumbers")List costNumbers + ); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java index b7cb4245..3c562f7b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsScheduleItemBudgetService.java @@ -3,10 +3,7 @@ package com.qs.serve.modules.tbs.service; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; -import com.qs.serve.modules.tbs.entity.dto.TbsBudgetScheduleWithAmount; -import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetIdDto; -import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemWithAmount; -import com.qs.serve.modules.tbs.entity.dto.TbsBudgetWithAmount; +import com.qs.serve.modules.tbs.entity.dto.*; import com.qs.serve.modules.tbs.entity.so.TbsScheduleItemSearch; import java.time.LocalDate; @@ -46,6 +43,13 @@ public interface TbsScheduleItemBudgetService extends IService listBudgetAmountByIds(TbsScheduleItemSearch param); + /** + * 查询审批中的费用或政策 + * @param param + * @return + */ + List listBudgetCheckingAmount(TbsScheduleItemSearch param); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 341075ff..0f128367 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -199,7 +199,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl budget.setAttachIds(budgetBo.getAttachIds()); //设置指定模板 budget.setTemplateIds(new String[]{}); - if(budget.getTemplateFlag()!=null&&budget.getTemplateFlag().equals(1)){ + if(budgetBo.getTemplateFlag()!=null&&budgetBo.getTemplateFlag().equals(1)){ if(budgetBo.getTemplateIds()!=null&&budgetBo.getTemplateIds().length>0){ budget.setTemplateIds(budgetBo.getTemplateIds()); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java index 90c6fe1b..74048d31 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java @@ -2,10 +2,13 @@ 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.github.pagehelper.PageHelper; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; +import com.qs.serve.modules.tbs.entity.TbsBudgetLog; import com.qs.serve.modules.tbs.entity.dto.*; import com.qs.serve.modules.tbs.entity.so.TbsScheduleItemSearch; import com.qs.serve.modules.tbs.mapper.*; @@ -349,5 +352,47 @@ public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl listBudgetCheckingAmount(TbsScheduleItemSearch param) { + + LambdaQueryWrapper budgetLqw = new LambdaQueryWrapper<>(); + budgetLqw.in(TbsBudget::getScheduleId,param.getScheduleIds()); + budgetLqw.in(TbsBudget::getCenterCombo,param.getCenterCombos()); + budgetLqw.eq(TbsBudget::getBudgetState,1); + List budgetList = tbsBudgetMapper.selectList(budgetLqw); + + Set budgetIds; + + if(CollectionUtil.isNotEmpty(param.getBrandIds())){ + //无品牌条件 + budgetIds = budgetList.stream() + .filter(a->a.getConditionFlag().equals(0)) + .map(TbsBudget::getId).collect(Collectors.toSet()); + + //筛选符合品牌条件 + List conBudgetIds = budgetList.stream() + .filter(a->a.getConditionFlag().equals(1)) + .map(TbsBudget::getId).collect(Collectors.toList()); + + LambdaQueryWrapper conLqw = new LambdaQueryWrapper<>(); + conBudgetIds.add(0L); + conLqw.in(TbsBudgetCondition::getBudgetId,conBudgetIds); + conLqw.in(TbsBudgetCondition::getBrandId,param.getBrandIds()); + List conditions = budgetConditionMapper.selectList(conLqw); + conBudgetIds = conditions.stream().map(TbsBudgetCondition::getBudgetId).collect(Collectors.toList()); + budgetIds.addAll(conBudgetIds); + }else { + //加载所有 + budgetIds = budgetList.stream().map(TbsBudget::getId).collect(Collectors.toSet()); + } + + budgetIds.add(0L); + + PageHelper.startPage(param.getPageNum(),param.getPageSize()); + + List budgetLogs = tbsBudgetLog2Mapper.getBudgetLogCheckingList(new ArrayList<>(budgetIds),param.getScheduleItemBudgetIds(), BudgetLogOptFlag.finalPolicyOptFlag,BudgetLogOptFlag.finalCostOptFlag); + + return budgetLogs; + } } diff --git a/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml b/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml index 161acaae..84d4d79c 100644 --- a/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml @@ -114,6 +114,7 @@ group by tbs_budget_log.schedule_item_budget_id + + + From 8cf7a0a902e30148eeb88572f993d0eb35c89932 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 4 Jun 2024 11:21:43 +0800 Subject: [PATCH 10/19] =?UTF-8?q?feat:=20=E5=AE=A1=E6=89=B9=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E9=A2=84=E7=AE=97=E5=8D=A0=E7=94=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8B=93=E5=B1=95=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=20fix?= =?UTF-8?q?=EF=BC=9A=E4=BF=AE=E5=A4=8D=E6=94=BF=E7=AD=96=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tbs/entity/so/TbsScheduleItemSearch.java | 12 ++++++++++ .../tbs/mapper/TbsBudgetLog2Mapper.java | 1 + .../TbsScheduleItemBudgetServiceImpl.java | 2 +- .../tzc/controller/TzcPolicyController.java | 11 +++++++++- .../resources/mapper/tbs/TbsBudget2Mapper.xml | 22 +++++++++++++++++-- 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java index 5c5da5fb..c85128ba 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java @@ -65,4 +65,16 @@ public class TbsScheduleItemSearch { private Integer pageSize; + /** + * 用于查询预算审批中的数据 + */ + private String type; + private String tarCode; + private String tarTitle; + private String supplierCode; + private String supplierName; + private String userCode; + private String userName; + + } diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java index ca243a4d..85b88a2f 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLog2Mapper.java @@ -80,6 +80,7 @@ public interface TbsBudgetLog2Mapper extends BaseMapper { */ @InterceptorIgnore(tenantLine = "true") List getBudgetLogCheckingList( + @Param("query")TbsScheduleItemSearch param, @Param("selectIds") List ids ,@Param("scheduleItemBudgetIds") List scheduleItemBudgetIds , @Param("policyNumbers")List policyNumbers diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java index 74048d31..36682694 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsScheduleItemBudgetServiceImpl.java @@ -390,7 +390,7 @@ public class TbsScheduleItemBudgetServiceImpl extends ServiceImpl budgetLogs = tbsBudgetLog2Mapper.getBudgetLogCheckingList(new ArrayList<>(budgetIds),param.getScheduleItemBudgetIds(), BudgetLogOptFlag.finalPolicyOptFlag,BudgetLogOptFlag.finalCostOptFlag); + List budgetLogs = tbsBudgetLog2Mapper.getBudgetLogCheckingList(param,new ArrayList<>(budgetIds),param.getScheduleItemBudgetIds(), BudgetLogOptFlag.finalPolicyOptFlag,BudgetLogOptFlag.finalCostOptFlag); return budgetLogs; } diff --git a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java index 2c39e326..4baea14e 100644 --- a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java +++ b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java @@ -184,6 +184,15 @@ public class TzcPolicyController { public R getById(@PathVariable("id") String id){ TzcPolicy tzcPolicy = tzcPolicyService.getById(id); if(tzcPolicy!=null){ + if(tzcPolicy.getPolicyStatus().equals(TzcPolicyStatus.Status_1_Checking)){ + //尝试进行补偿 + try { + tzcPolicyOperationService.runCompensate(id); + tzcPolicy = tzcPolicyService.getById(id); + }catch (Exception e){ + + } + } List policyItemList = tzcPolicyItemService.listByPolicyId(tzcPolicy.getId()); tzcPolicy.setPolicyItemList(policyItemList); } @@ -450,7 +459,7 @@ public class TzcPolicyController { * @param id * @return */ - @PostMapping("/cancellation/{id}") + @DeleteMapping("/cancellation/{id}") public R cancellation(@PathVariable Long id){ List tzcPolicyItemList = tzcPolicyItemService.listByPolicyId(id); List itemIds = tzcPolicyItemList.stream().map(TzcPolicyItem::getId).collect(Collectors.toList()); diff --git a/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml b/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml index 84d4d79c..d31136e7 100644 --- a/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudget2Mapper.xml @@ -144,7 +144,7 @@ tbs_cost_apply.id as tar_id, tbs_cost_apply.code as tar_code, tbs_cost_apply.charge_theme as tar_title, - sum(tbs_budget_log.amount) as total_amount, + -sum(tbs_budget_log.amount) as total_amount, tbs_cost_apply.supplier_code, tbs_cost_apply.supplier_name, tbs_cost_apply.user_code, @@ -168,6 +168,15 @@ #{selectId} + + and 1=0 + and tbs_cost_apply.code like concat('%',#{query.tarCode},'%') + and tbs_cost_apply.charge_theme like concat('%',#{query.tarTitle},'%') + and tbs_cost_apply.supplier_code like concat('%',#{query.supplierCode},'%') + and tbs_cost_apply.supplier_name like concat('%',#{query.supplierName},'%') + and tbs_cost_apply.user_code like concat('%',#{query.userCode},'%') + and tbs_cost_apply.user_name like concat('%',#{query.userName},'%') + group by tbs_budget_log.cost_apply_id union @@ -177,7 +186,7 @@ tzc_policy.id as tar_id, tzc_policy.policy_code as tar_code, tzc_policy.title as tar_title, - sum(tbs_budget_log.amount) as total_amount, + -sum(tbs_budget_log.amount) as total_amount, tzc_policy.supplier_code, tzc_policy.supplier_name, tzc_policy.user_code, @@ -201,6 +210,15 @@ #{selectId} + + and 1=0 + and tzc_policy.policy_code like concat('%',#{query.tarCode},'%') + and tzc_policy.title like concat('%',#{query.tarTitle},'%') + and tzc_policy.supplier_code like concat('%',#{query.supplierCode},'%') + and tzc_policy.supplier_name like concat('%',#{query.supplierName},'%') + and tzc_policy.user_code like concat('%',#{query.userCode},'%') + and tzc_policy.user_name like concat('%',#{query.userName},'%') + group by tbs_budget_log.policy_id From 5759e5d2d9109b37538ebf0bf8898455b25e452f Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 5 Jun 2024 09:34:03 +0800 Subject: [PATCH 11/19] =?UTF-8?q?feat=EF=BC=9A=E6=94=BF=E7=AD=96=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=A0=A1=E9=AA=8C=E5=92=8C=E6=8B=A6=E6=88=AA=20opt:?= =?UTF-8?q?=20spu=E7=BC=96=E7=A0=81=E5=92=8C=E5=90=8D=E7=A7=B0=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goods/controller/GoodsSkuController.java | 2 +- .../goods/controller/GoodsSpuController.java | 9 ++++++++- .../goods/service/impl/GoodsSkuServiceImpl.java | 6 +++++- .../goods/service/impl/GoodsSpuServiceImpl.java | 7 +++++++ .../seeyon/service/SeeYonRequestService.java | 8 ++++++++ .../service/impl/SeeYonRequestServiceImpl.java | 14 ++++++++++++++ .../serve/modules/tbs/common/TbsSeeYonConst.java | 1 + .../service/impl/TbsCostApplyPart1ServiceImpl.java | 3 +++ .../tbs/service/impl/TbsCostApplyServiceImpl.java | 7 +++++++ 9 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java index 3053a2c1..522444ba 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java @@ -350,7 +350,7 @@ public class GoodsSkuController { }else if (SAVE.equals(opt)){ //保存 if(sku!=null){ - skuItem.setErrMsg(skuItem.getErrMsg()==null?"已保存,新增失败;":skuItem.getErrMsg()+"\n已保存,新增失败;"); + skuItem.setErrMsg(skuItem.getErrMsg()==null?"编码重复,新增失败;":skuItem.getErrMsg()+"\n编码重复,新增失败;"); throwEx = true; continue; } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index d3021a5c..09e89917 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java @@ -643,7 +643,14 @@ public class GoodsSpuController { isError = true; item.setErrMsg("SKU编码不存在"); } - + long count = goodsSpuService.count(new LambdaQueryWrapper() + .eq(GoodsSpu::getName,item.getName()) + .ne(GoodsSpu::getSpuCode,spuCode) + ); + if(count>0){ + isError = true; + item.setErrMsg("SKU名称已存在"); + } } if(isError){ diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java index befe6edc..a97cc956 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java @@ -274,8 +274,12 @@ public class GoodsSkuServiceImpl extends ServiceImpl im } //code必须唯一 + Long goodsSkuId = null; + if(dbGoodSku!=null){ + goodsSkuId = dbGoodSku.getId(); + } Long countCode = super.getBaseMapper().selectCount(new LambdaQueryWrapper() - .ne(GoodsSku::getId,dbGoodSku.getId()) + .ne(GoodsSku::getId,goodsSkuId) .eq(GoodsSku::getSkuCode,goodSkuVo.getSkuCode()) ); if(countCode>0L){ diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java index f235ec84..7f820e9e 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java @@ -178,6 +178,13 @@ public class GoodsSpuServiceImpl extends ServiceImpl im if(count>0){ Assert.throwEx("编码不可重复"); } + Long count2 = super.baseMapper.selectCount(new LambdaQueryWrapper() + .ne(param.getId()!=null,GoodsSpu::getId,param.getId()) + .eq(GoodsSpu::getName,param.getName()) + ); + if(count2>0){ + Assert.throwEx("名称不可重复"); + } this.saveOrUpdate(spu); insertSpuSpec(spu.getId()); return spu; diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java index 76efa25c..e5402e7e 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java @@ -84,6 +84,14 @@ public interface SeeYonRequestService { */ SyAffairStateResult checkAffairState(String targetId,String templateCode); + /** + * 检验协议类编码是否存在 + * @param templateCode + * @return + */ + Boolean checkConstCodeExist(String templateCode); + + /** * 校验OA节点状态(用于调整校验) * @param key diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java index e8903e0d..36a94cf0 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java @@ -25,6 +25,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.API_PROCESS_GET_CONST; + /** * @author YenHex * @since 2022/11/30 @@ -164,6 +166,18 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService { return getSyAffairStateResult(title, param); } + @Override + public Boolean checkConstCodeExist(String templateCode) { + R result = seeYonRequestBaseService.getBase(API_PROCESS_GET_CONST+"?costCode="+templateCode,"API_PROCESS_GET_CONST"); + if(result.getStatus()==200){ + String resultString = result.getData(); + if(resultString.contains("ok")){ + return true; + } + } + return false; + } + @Override public SyAffairStateResult checkAffairState(String key, String memberId, String templateCode) { String title = "【校验OA节点状态】"; diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java index fb9a9d70..dc44797a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java @@ -68,6 +68,7 @@ public interface TbsSeeYonConst { String API_TEST = "/testConnection"; String API_PROCESS_CREATE = "/process/create"; + String API_PROCESS_GET_CONST = "/process/getConst"; String API_PROCESS_CREATE_NEW = "/process/newCreate"; String API_PROCESS_CREATE_CALLBACK = "/process/createCallback"; String API_PROCESS_COMMIT = "/process/commit"; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java index d74095ea..423c0086 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java @@ -111,6 +111,9 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { if(orgCost.getCancelFlag().equals(1)){ Assert.throwEx("该记录的费用已异动"); } + if(orgCost.getContractFlag().equals(1)){ + Assert.throwEx("协议类不支持异动"); + } boolean isExtUser = orgCost.getExtUserId()!=null&&userId.equals(orgCost.getExtUserId()); if(!userId.equals(orgCost.getUserId())&&!isExtUser){ Assert.throwEx("拒绝访问"); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index f99c6140..dc4bbb01 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -539,6 +539,12 @@ public class TbsCostApplyServiceImpl extends ServiceImpl payConditions = null; if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + //排查OA是否已提交数据 + String costCode = tbsCostApply.getCode(); + boolean checkExist = seeYonService.checkConstCodeExist(costCode); + if(!checkExist){ + Assert.throwEx("流程错误,请联系IT部门"); + } LambdaQueryWrapper contractLambdaQueryWrapper = new LambdaQueryWrapper<>(); contractLambdaQueryWrapper.eq(TbsCostContract::getCostApplyId,id); List contractList = costContractMapper.selectList(contractLambdaQueryWrapper); @@ -679,6 +685,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl Date: Wed, 5 Jun 2024 09:57:35 +0800 Subject: [PATCH 12/19] =?UTF-8?q?feat=EF=BC=9A=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=8B=A6=E6=88=AA=E5=8D=8F=E8=AE=AE=E7=B1=BB?= =?UTF-8?q?=E5=AD=98=E5=9C=A8OA=E7=9A=84=E5=8D=95=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/service/impl/SysDeleteLogServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java index 4b116396..f7225e8b 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java @@ -10,6 +10,7 @@ import com.qs.serve.common.util.JsonUtil; import com.qs.serve.modules.bir.consts.BirActivityCenterGoodsUtil; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; +import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.sys.entity.dto.CostDeletion; import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsCostTodo; @@ -45,6 +46,7 @@ public class SysDeleteLogServiceImpl extends ServiceImpl Date: Thu, 6 Jun 2024 08:53:16 +0800 Subject: [PATCH 13/19] =?UTF-8?q?feat=EF=BC=9A=E5=AE=A1=E6=89=B9=E8=BE=85?= =?UTF-8?q?=E5=8A=A9=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bir/controller/BirRoiRateController.java | 27 ++-- .../modules/bir/entity/BirBudgetTarget.java | 92 ++++++++++++++ .../bir/entity/so/BirBudgetTargetSo.java | 71 +++++++++++ .../bir/entity/vo/BirBudgetTargetVo.java | 61 +++++++++ .../bir/mapper/BirBudgetTargetMapper.java | 22 ++++ .../bir/service/BirBudgetTargetService.java | 20 +++ .../impl/BirBudgetTargetServiceImpl.java | 116 ++++++++++++++++++ .../service/impl/BmsSupplierServiceImpl.java | 4 + .../service/impl/TbsCostApplyServiceImpl.java | 5 +- .../mapper/bir/BirBudgetTargetMapper.xml | 101 +++++++++++++++ 10 files changed, 506 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/bir/entity/BirBudgetTarget.java create mode 100644 src/main/java/com/qs/serve/modules/bir/entity/so/BirBudgetTargetSo.java create mode 100644 src/main/java/com/qs/serve/modules/bir/entity/vo/BirBudgetTargetVo.java create mode 100644 src/main/java/com/qs/serve/modules/bir/mapper/BirBudgetTargetMapper.java create mode 100644 src/main/java/com/qs/serve/modules/bir/service/BirBudgetTargetService.java create mode 100644 src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java create mode 100644 src/main/resources/mapper/bir/BirBudgetTargetMapper.xml diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java index 6dc4ae65..20c9cad5 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java @@ -1,15 +1,11 @@ package com.qs.serve.modules.bir.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.qs.serve.common.model.annotation.RepeatSubmit; -import com.qs.serve.common.model.annotation.SysLog; -import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; -import com.qs.serve.common.model.enums.BizType; -import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.*; -import com.qs.serve.modules.bir.entity.BirBaseActivity; +import com.qs.serve.modules.bir.entity.so.BirBudgetTargetSo; +import com.qs.serve.modules.bir.entity.vo.BirBudgetTargetVo; import com.qs.serve.modules.bir.entity.so.BirCostRoiSo; import com.qs.serve.modules.bir.entity.vo.*; import com.qs.serve.modules.bir.service.*; @@ -18,7 +14,6 @@ import com.qs.serve.modules.sys.service.SysDictDataService; import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivityCenter; -import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem; import com.qs.serve.modules.tbs.mapper.TbsActivityCenterMapper; import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; @@ -26,15 +21,10 @@ import com.qs.serve.modules.tbs.service.TbsBudgetService; import com.qs.serve.modules.tbs.service.TbsCostApplyService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; -import java.math.BigDecimal; -import java.time.LocalDate; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; /** * BI报表 ROI费率 @@ -58,6 +48,7 @@ public class BirRoiRateController { private TbsActivityMapper tbsActivityMapper; private TbsActivityCenterMapper tbsActivityCenterMapper; private BirBaseActivityService birBaseActivityService; + private BirBudgetTargetService birBudgetTargetService; /** * 测试 @@ -149,6 +140,18 @@ public class BirRoiRateController { return R.ok(vo); } + /** + * 获取费率 + * @param query + * @return + */ + @RepeatSubmit + @PostMapping("/costYearMonthV2") + public R> getCostRoiOfYearMonthV2(@RequestBody BirBudgetTargetSo query){ + List list = birBudgetTargetService.listVo(query); + return R.ok(list); + } + /** * 获取成本中心费率 * @param costApplyId diff --git a/src/main/java/com/qs/serve/modules/bir/entity/BirBudgetTarget.java b/src/main/java/com/qs/serve/modules/bir/entity/BirBudgetTarget.java new file mode 100644 index 00000000..ec0764fa --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/entity/BirBudgetTarget.java @@ -0,0 +1,92 @@ +package com.qs.serve.modules.bir.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 实体类 + * @author YenHex + * @since 2024-06-05 + */ +@Data +@TableName("bir_budget_target") +public class BirBudgetTarget implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 搜索维度:0-客户;1-城市;2-省级经理;3-大区经理 */ + private Integer searchType; + + /** 年份 */ + private Integer yearNum; + + /** 季度 */ + private Integer quarterNum; + + /** 月份 */ + private Integer monthNum; + + /** 销售目标 */ + private BigDecimal targetAmt; + + /** 预算金额 */ + private BigDecimal budgetAmt; + + /** 实际发货 */ + private BigDecimal dispatchAmt; + + /** 去年同期发货 */ + private BigDecimal lastYearDispatchAmt; + + /** 城+省费用 */ + private BigDecimal provinceCityAmt; + + /** 城+省+区费用 */ + private BigDecimal provinceCityRegionAmt; + + /** 实际总费用 */ + private BigDecimal totalRealAmt; + + private String brandId; + + /** 品牌编码 */ + @Length(max = 255,message = "品牌编码长度不能超过255字") + private String brandCode; + + /** 品牌 */ + @Length(max = 255,message = "品牌长度不能超过255字") + private String brandName; + + /** 成本中心类型:saleRegion; bizRegion; costCenter; supplier */ + @Length(max = 255,message = "成本中心类型:saleRegion; bizRegion; costCenter; supplier长度不能超过255字") + private String centerType; + + private String centerId; + + /** 成本中心编码 */ + @Length(max = 255,message = "成本中心编码长度不能超过255字") + private String centerCode; + + /** 成本中心名 */ + @Length(max = 255,message = "成本中心名长度不能超过255字") + private String centerName; + +} + diff --git a/src/main/java/com/qs/serve/modules/bir/entity/so/BirBudgetTargetSo.java b/src/main/java/com/qs/serve/modules/bir/entity/so/BirBudgetTargetSo.java new file mode 100644 index 00000000..e5c1c1a6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/entity/so/BirBudgetTargetSo.java @@ -0,0 +1,71 @@ +package com.qs.serve.modules.bir.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author YenHex + * @since 2024/6/4 + */ +@Data +public class BirBudgetTargetSo { + + /** 搜索维度:0-客户;1-城市;2-省级经理;3-大区经理 */ + private Integer loadType; + + /** + * 开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime yearMonthStart; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime yearMonthEnd; + + /** + * 业务待定 + */ + private String supplierId; + + /** + * 成本中心 + */ + private List centerList; + + /**品牌 */ + private List brandIds; + + /** + * 减少xml条件 + */ + private Integer selectCenterFlag; + + /**成本中心编码 */ + private List centerIds; + + /**行政区域-成本中心编码 */ + private List bizRegionIds; + + /**销售区域-成本中心编码 */ + private List saleRegionIds; + + /**客户-成本中心编码 */ + private List supplierIds; + + @Data + public static class CostInfo{ + /** + * center,saleRegion,bizRegion,supplier + */ + private String costType; + + private String costId; + } + +} diff --git a/src/main/java/com/qs/serve/modules/bir/entity/vo/BirBudgetTargetVo.java b/src/main/java/com/qs/serve/modules/bir/entity/vo/BirBudgetTargetVo.java new file mode 100644 index 00000000..01297892 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/entity/vo/BirBudgetTargetVo.java @@ -0,0 +1,61 @@ +package com.qs.serve.modules.bir.entity.vo; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2024/6/4 + */ +@Data +public class BirBudgetTargetVo { + + /** 年份 */ + private Integer yearNum; + + /** 月份 */ + private Integer monthNum; + + /** 销售目标 */ + private BigDecimal targetAmt; + + /** 预算金额 */ + private BigDecimal budgetAmt; + + /** 实际发货 */ + private BigDecimal dispatchAmt; + + /** 实际总费用 */ + private BigDecimal totalRealAmt; + + /** 去年同期发货 */ + private BigDecimal lastYearDispatchAmt; + + /** 城+省费用 */ + private BigDecimal provinceCityAmt; + + /** 城+省+区费用 */ + private BigDecimal provinceCityRegionAmt; + + + /** 预算费用率 */ + private BigDecimal budgetRate; + + /** 发货达成率 */ + private BigDecimal dispatchRate; + + /** 同期成长率*/ + private BigDecimal lastYearGrowRate; + + /** 城+省费用率 */ + private BigDecimal provinceCityRate; + + /** 城+省+区费用率 */ + private BigDecimal provinceCityRegionRate; + + /** 实际总费用率 */ + private BigDecimal totalRealRate; + +} diff --git a/src/main/java/com/qs/serve/modules/bir/mapper/BirBudgetTargetMapper.java b/src/main/java/com/qs/serve/modules/bir/mapper/BirBudgetTargetMapper.java new file mode 100644 index 00000000..b057cc21 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/mapper/BirBudgetTargetMapper.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.bir.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.bir.entity.BirBudgetTarget; +import com.qs.serve.modules.bir.entity.so.BirBudgetTargetSo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Mapper + * @author YenHex + * @date 2024-06-04 + */ +public interface BirBudgetTargetMapper extends BaseMapper { + + @InterceptorIgnore(tenantLine = "1") + List selectBirBudgetTargetList(@Param("query") BirBudgetTargetSo budgetTargetSo); + +} + diff --git a/src/main/java/com/qs/serve/modules/bir/service/BirBudgetTargetService.java b/src/main/java/com/qs/serve/modules/bir/service/BirBudgetTargetService.java new file mode 100644 index 00000000..2a577710 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/service/BirBudgetTargetService.java @@ -0,0 +1,20 @@ +package com.qs.serve.modules.bir.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.bir.entity.BirBudgetTarget; +import com.qs.serve.modules.bir.entity.so.BirBudgetTargetSo; +import com.qs.serve.modules.bir.entity.vo.BirBudgetTargetVo; + +import java.util.List; + +/** + * 服务接口 + * @author YenHex + * @date 2024-06-04 + */ +public interface BirBudgetTargetService extends IService { + + List listVo(BirBudgetTargetSo query); + +} + diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java new file mode 100644 index 00000000..ac512bb4 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java @@ -0,0 +1,116 @@ +package com.qs.serve.modules.bir.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.modules.bir.entity.so.BirBudgetTargetSo; +import com.qs.serve.modules.bir.entity.vo.BirBudgetTargetVo; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.bir.entity.BirBudgetTarget; +import com.qs.serve.modules.bir.service.BirBudgetTargetService; +import com.qs.serve.modules.bir.mapper.BirBudgetTargetMapper; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.temporal.TemporalAdjuster; +import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 服务实现类 + * @author YenHex + * @since 2024-06-04 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BirBudgetTargetServiceImpl extends ServiceImpl implements BirBudgetTargetService { + + @Override + public List listVo(BirBudgetTargetSo query) { + + LocalDateTime endMonth = query.getYearMonthEnd(); + LocalDateTime startMonth = query.getYearMonthStart(); + //格式化 + startMonth = startMonth.withDayOfMonth(1).toLocalDate().atTime(0,0,0); + endMonth = endMonth.with(TemporalAdjusters.lastDayOfMonth()).toLocalDate().atTime(23,59,59); + query.setYearMonthStart(startMonth); + query.setYearMonthEnd(endMonth); + query.setSelectCenterFlag(0); + if(CollUtil.isNotEmpty(query.getCenterList())){ + query.setSelectCenterFlag(1); + } + + List birBudgetTargets = baseMapper.selectBirBudgetTargetList(query); + + Map> listMap = birBudgetTargets.stream() + .collect(Collectors.groupingBy(obj->obj.getYearNum()+"_"+obj.getMonthNum())); + + List budgetTargetVoList = new ArrayList<>(); + + + //12个月 + final int TOTAL_MONTH = 12; + for (int y = startMonth.getYear(); y <= endMonth.getYear(); y++) { + for (int m = 1; m <= TOTAL_MONTH; m++) { + //防止多空白行 + if(y == startMonth.getYear() && m < startMonth.getMonthValue()){ + continue; + } + if(y == endMonth.getYear() && m > endMonth.getMonthValue()){ + continue; + } + budgetTargetVoList.add(getBudgetTargetVo(listMap, m, y)); + } + } + return budgetTargetVoList; + } + + private BirBudgetTargetVo getBudgetTargetVo(Map> listMap, int month, int year) { + List mList = listMap.get(year +"_"+ month); + BirBudgetTargetVo targetVo = new BirBudgetTargetVo(); + targetVo.setYearNum(year); + targetVo.setMonthNum(month); + targetVo.setTargetAmt(BigDecimal.ZERO); + targetVo.setBudgetAmt(BigDecimal.ZERO); + targetVo.setDispatchAmt(BigDecimal.ZERO); + targetVo.setTotalRealAmt(BigDecimal.ZERO); + targetVo.setLastYearDispatchAmt(BigDecimal.ZERO); + targetVo.setProvinceCityAmt(BigDecimal.ZERO); + targetVo.setProvinceCityRegionAmt(BigDecimal.ZERO); + if(CollUtil.isNotEmpty(mList)){ + for (BirBudgetTarget target : mList) { + targetVo.setTargetAmt(targetVo.getTargetAmt().add(target.getTargetAmt())); + targetVo.setBudgetAmt(targetVo.getBudgetAmt().add(target.getBudgetAmt())); + targetVo.setDispatchAmt(targetVo.getDispatchAmt().add(target.getDispatchAmt())); + targetVo.setTotalRealAmt(targetVo.getTotalRealAmt().add(target.getTotalRealAmt())); + targetVo.setLastYearDispatchAmt(targetVo.getLastYearDispatchAmt().add(target.getLastYearDispatchAmt())); + targetVo.setProvinceCityAmt(targetVo.getProvinceCityAmt().add(target.getProvinceCityAmt())); + targetVo.setProvinceCityRegionAmt(targetVo.getProvinceCityRegionAmt().add(target.getProvinceCityRegionAmt())); + } + //预算费率 = 预算费用/销售目标 + targetVo.setBudgetRate(targetVo.getBudgetAmt().divide(targetVo.getTargetAmt(),2, RoundingMode.DOWN)); + //发货达成率 = 实际发货/销售目标 + targetVo.setDispatchRate(targetVo.getDispatchAmt().divide(targetVo.getTargetAmt(),2, RoundingMode.DOWN)); + //(当前发货-去年同期发货)/去年同期发货 + targetVo.setLastYearGrowRate( + targetVo.getDispatchAmt() + .subtract(targetVo.getLastYearDispatchAmt()) + .divide(targetVo.getLastYearDispatchAmt(),2, RoundingMode.DOWN) + ); + //实际费用率=实际费用/实际发货 + targetVo.setProvinceCityRate(targetVo.getProvinceCityAmt().divide(targetVo.getDispatchAmt(),2, RoundingMode.DOWN)); + targetVo.setProvinceCityRegionRate(targetVo.getProvinceCityRate().divide(targetVo.getDispatchAmt(),2, RoundingMode.DOWN)); + targetVo.setTotalRealRate(targetVo.getTotalRealAmt().divide(targetVo.getDispatchAmt(),2, RoundingMode.DOWN)); + } + return targetVo; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index 2e48570d..b93f370f 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -254,6 +254,8 @@ public class BmsSupplierServiceImpl extends ServiceImpl vtbLqw = new LambdaQueryWrapper<>(); vtbLqw.eq(VtbVerification::getCostApplyId,id); vtbLqw.and( @@ -543,7 +546,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl contractLambdaQueryWrapper = new LambdaQueryWrapper<>(); contractLambdaQueryWrapper.eq(TbsCostContract::getCostApplyId,id); diff --git a/src/main/resources/mapper/bir/BirBudgetTargetMapper.xml b/src/main/resources/mapper/bir/BirBudgetTargetMapper.xml new file mode 100644 index 00000000..dd9fd1da --- /dev/null +++ b/src/main/resources/mapper/bir/BirBudgetTargetMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + bir_budget_target.`id`, + bir_budget_target.`search_type`, + bir_budget_target.`year_num`, + bir_budget_target.`quarter_num`, + bir_budget_target.`month_num`, + bir_budget_target.`target_amt`, + bir_budget_target.`budget_amt`, + bir_budget_target.`dispatch_amt`, + bir_budget_target.`last_year_dispatch_amt`, + bir_budget_target.`province_city_amt`, + bir_budget_target.`province_city_region_amt`, + bir_budget_target.`total_real_amt`, + bir_budget_target.`brand_id`, + bir_budget_target.`brand_code`, + bir_budget_target.`brand_name`, + bir_budget_target.`center_type`, + bir_budget_target.`center_id`, + bir_budget_target.`center_code`, + bir_budget_target.`center_name` + + + + From 6200adc1b7fe655a72e852b7c19e7592b20e844b Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 6 Jun 2024 11:13:03 +0800 Subject: [PATCH 14/19] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=BB=B4=E6=8A=A4=E5=9C=B0=E5=9D=80=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20opt:=20=E4=BF=AE=E6=94=B9=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E5=8E=86=E5=8F=B2=E8=A1=A8=E6=9F=A5=E8=AF=A2=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BirBudgetTargetServiceImpl.java | 2 +- .../bms/controller/BmsRegionController.java | 5 +- .../my/BmsSupplierContactsMyController.java | 5 +- .../serve/modules/bms/entity/BmsSupplier.java | 16 +- .../controller/GoodsAccreditController.java | 11 ++ .../goods/service/GoodsAccreditService.java | 2 + .../impl/GoodsAccreditServiceImpl.java | 167 ++++++++++-------- .../modules/his/entity/HisUserSupplier.java | 6 + .../his/mapper/HisUserSupplierMapper.java | 5 + .../his/service/HisUserSupplierService.java | 2 +- .../impl/HisUserSupplierServiceImpl.java | 36 ++-- .../mapper/bms/BmsSupplierMapper.xml | 10 +- .../mapper/his/HisUserSupplierMapper.xml | 27 +++ 13 files changed, 193 insertions(+), 101 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java index ac512bb4..193fca36 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirBudgetTargetServiceImpl.java @@ -34,7 +34,7 @@ public class BirBudgetTargetServiceImpl extends ServiceImpl listVo(BirBudgetTargetSo query) { - + query.setLoadType(query.getLoadType()+1); LocalDateTime endMonth = query.getYearMonthEnd(); LocalDateTime startMonth = query.getYearMonthStart(); //格式化 diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index 46395e53..a90d2c64 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java @@ -110,8 +110,9 @@ public class BmsRegionController { BmsSupplier supplier = bmsSupplierService.getById(supplierId); regionIds.addAll(supplier.listSaleRegionIds()); } - List hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false); - List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + //List hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false); + //List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + List supplierIds = hisUserSupplierService.selectHisSupplier(null,false); supplierIds.add(0L); List supplierList = bmsSupplierService.listByIds(supplierIds); List firstRegionIds = supplierList.stream().map(a->a.getRegionFirst()).collect(Collectors.toList()); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java index 7fc0c9cf..1cbc0599 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java @@ -50,8 +50,9 @@ public class BmsSupplierContactsMyController { */ @GetMapping("/page") public R> getPage(BmsSupplierContactsSo param){ - List hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false); - List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + //List hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false); + //List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + List supplierIds = hisUserSupplierService.selectHisSupplier(null,false); PageUtil.startPage(); BmsSupplierContacts query = CopierUtil.copy(param,new BmsSupplierContacts()); LambdaQueryWrapper contactsLambdaQueryWrapper = new LambdaQueryWrapper<>(query); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index 84c41660..79203ae1 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java @@ -209,6 +209,18 @@ public class BmsSupplier implements Serializable { /** 线下下单 */ private Integer orderOfflineFlag; + /** 统计维护的地址数量 */ + @TableField(exist = false) + private Integer countAddr; + + /** + * 查询维护的地址 + * countAddrFlag=0 表示未维护的收货地址 + * countAddrFlag=1 表示已维护的收货地址 + */ + @TableField(exist = false) + private Integer countAddrFlag; + /** 当前用户ID */ @TableField(exist = false) private String currUserId; @@ -362,7 +374,7 @@ public class BmsSupplier implements Serializable { /*-------------- ----------------- */ @TableField(exist = false) - private List searchInIds; + private List searchInIds; /*-------------- ----------------- */ @TableField(exist = false) @@ -394,6 +406,7 @@ public class BmsSupplier implements Serializable { public HisUserSupplier toHisUserSupplier(String userId,Integer type){ HisUserSupplier userSupplier = new HisUserSupplier(); + userSupplier.setQueryValue(this.keyword); userSupplier.setUserId(userId); if(this.getUserId()!=null){ userSupplier.setSupplierId(Long.parseLong(this.getId())); @@ -401,6 +414,7 @@ public class BmsSupplier implements Serializable { if(this.getId()!=null){ userSupplier.setSupplierId(Long.parseLong(this.getId())); } + userSupplier.setSelectSupplierTypes(this.getSelectSupplierTypes()); userSupplier.setSupplierName(this.getName()); userSupplier.setSupplierCode(this.getCode()); userSupplier.setSaleRegionFirst(this.getRegionFirst()); diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java index a76a0a1a..46c7e1d6 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java @@ -49,6 +49,17 @@ public class GoodsAccreditController { return R.ok(data); } + /** + * 辅助查询 + * @param query + * @return + */ + @GetMapping("/getAllList") + public R> getAllList(GoodsAccreditQuery query){ + List data = goodsAccreditService.queryList(query); + return R.ok(data); + } + /** * ID查询 * @param cateId diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java index 435ee14d..4db28118 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java @@ -24,6 +24,8 @@ public interface GoodsAccreditService extends IService { PageVo queryPage(GoodsAccreditQuery query); + List queryList(GoodsAccreditQuery query); + void modify(GoodsAccreditBo param); GoodsAccreditVo getById(String cateId, String spuId, String skuId); diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java index 4699fa1c..e7d6bfe9 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java @@ -59,6 +59,98 @@ public class GoodsAccreditServiceImpl extends ServiceImpl queryPage(GoodsAccreditQuery query) { + initAccreditQuery(query); + PageUtil.startPage(); + List list = super.baseMapper.queryUnionPage(query); + List results = getGoodsAccreditResults(list); + + return R.byPageHelperList(list,results).getData(); + } + + + + @Override + public List queryList(GoodsAccreditQuery query) { + initAccreditQuery(query); + List list = super.baseMapper.queryUnionPage(query); + List results = getGoodsAccreditResults(list); + return results; + } + + private List getGoodsAccreditResults(List list) { + List results = list.stream().map(ext->{ + if (ext.getUnionType().equals("accredit")){ + GoodsAccreditResult result = new GoodsAccreditResult(); + result.setId("goods"+ext.getId()); + result.setRuleType("goods"); + if(ext.getCategoryId()!=null){ + result.setGoodType("category"); + }else if (ext.getSpuId()!=null){ + result.setGoodType("spu"); + }else { + result.setGoodType("sku"); + } + result.setCode(ext.getCode()); + result.setName(ext.getName()); + result.setAccType(ext.getAccType().equals(0)?"in":"notIn"); + if(ext.getTargetType().equals("0")){ + result.setTargetType("supplier"); + }else if (ext.getTargetType().equals("1")){ + result.setTargetType("bizRegion"); + }else if (ext.getTargetType().equals("2")){ + result.setTargetType("saleRegion"); + }else { + result.setTargetType(ext.getTargetType()); + } + result.setTargetCode(ext.getTargetCode()); + result.setTargetName(ext.getTargetName()); + result.setTargetId(ext.getTargetId()); + result.setCreateTime(ext.getCreateTime()); + result.setCreateUser(ext.getCreateUser()); + result.setCreateUserCode(ext.getCreateUserCode()); + return result; + }else { + GoodsAccreditResult result = new GoodsAccreditResult(); + result.setId("supplier"+ext.getId()); + result.setRuleType("supplier"); + if(ext.getUserId()!=null) { + result.setTargetType("user"); + }else if(ext.getSaleRegionId()!=null){ + result.setTargetType("saleRegion"); + }else if (ext.getBizRegionId()!=null){ + result.setTargetType("bizRegion"); + }else { + result.setTargetType("supplier"); + } + result.setCode(ext.getCode()); + result.setName(ext.getName()); + if(ext.getTargetType().equals("1")){ + result.setAccType("in"); + result.setGoodType("category"); + }else if (ext.getTargetType().equals("2")){ + result.setAccType("notIn"); + result.setGoodType("category"); + }else if (ext.getTargetType().equals("3")){ + result.setAccType("in"); + result.setGoodType("spu"); + }else { + result.setAccType("notIn"); + result.setGoodType("spu"); + } + result.setTargetId(ext.getId()+""); + //result.setTargetType(ext.getTargetType()); + result.setTargetCode(ext.getTargetCode()); + result.setTargetName(ext.getTargetName()); + result.setCreateTime(ext.getCreateTime()); + result.setCreateUser(ext.getCreateUser()); + result.setCreateUserCode(ext.getCreateUserCode()); + return result; + } + }).collect(Collectors.toList()); + return results; + } + + private void initAccreditQuery(GoodsAccreditQuery query) { String productCode = query.getCode(); String productName = query.getName(); String targetCode = query.getTargetCode(); @@ -175,81 +267,6 @@ public class GoodsAccreditServiceImpl extends ServiceImpl list = super.baseMapper.queryUnionPage(query); - List results = list.stream().map(ext->{ - if (ext.getUnionType().equals("accredit")){ - GoodsAccreditResult result = new GoodsAccreditResult(); - result.setId("goods"+ext.getId()); - result.setRuleType("goods"); - if(ext.getCategoryId()!=null){ - result.setGoodType("category"); - }else if (ext.getSpuId()!=null){ - result.setGoodType("spu"); - }else { - result.setGoodType("sku"); - } - result.setCode(ext.getCode()); - result.setName(ext.getName()); - result.setAccType(ext.getAccType().equals(0)?"in":"notIn"); - if(ext.getTargetType().equals("0")){ - result.setTargetType("supplier"); - }else if (ext.getTargetType().equals("1")){ - result.setTargetType("bizRegion"); - }else if (ext.getTargetType().equals("2")){ - result.setTargetType("saleRegion"); - }else { - result.setTargetType(ext.getTargetType()); - } - result.setTargetCode(ext.getTargetCode()); - result.setTargetName(ext.getTargetName()); - result.setTargetId(ext.getTargetId()); - result.setCreateTime(ext.getCreateTime()); - result.setCreateUser(ext.getCreateUser()); - result.setCreateUserCode(ext.getCreateUserCode()); - return result; - }else { - GoodsAccreditResult result = new GoodsAccreditResult(); - result.setId("supplier"+ext.getId()); - result.setRuleType("supplier"); - if(ext.getUserId()!=null) { - result.setTargetType("user"); - }else if(ext.getSaleRegionId()!=null){ - result.setTargetType("saleRegion"); - }else if (ext.getBizRegionId()!=null){ - result.setTargetType("bizRegion"); - }else { - result.setTargetType("supplier"); - } - result.setCode(ext.getCode()); - result.setName(ext.getName()); - if(ext.getTargetType().equals("1")){ - result.setAccType("in"); - result.setGoodType("category"); - }else if (ext.getTargetType().equals("2")){ - result.setAccType("notIn"); - result.setGoodType("category"); - }else if (ext.getTargetType().equals("3")){ - result.setAccType("in"); - result.setGoodType("spu"); - }else { - result.setAccType("notIn"); - result.setGoodType("spu"); - } - result.setTargetId(ext.getId()+""); - //result.setTargetType(ext.getTargetType()); - result.setTargetCode(ext.getTargetCode()); - result.setTargetName(ext.getTargetName()); - result.setCreateTime(ext.getCreateTime()); - result.setCreateUser(ext.getCreateUser()); - result.setCreateUserCode(ext.getCreateUserCode()); - return result; - } - }).collect(Collectors.toList()); - - return R.byPageHelperList(list,results).getData(); } @Override diff --git a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java index a9abf94b..9e863fe2 100644 --- a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java +++ b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java @@ -135,6 +135,12 @@ public class HisUserSupplier implements Serializable { @TableField(exist = false) private List selectUserIds; + /** + * 对应是supplierFlag + */ + @TableField(exist = false) + private List selectSupplierTypes; + @TableField(exist = false) private String addressId; diff --git a/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java b/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java index 14088f6a..aae64a93 100644 --- a/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java +++ b/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java @@ -1,6 +1,8 @@ package com.qs.serve.modules.his.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; import com.qs.serve.modules.bms.entity.so.BmsSupplierVisitSo; import com.qs.serve.modules.his.entity.HisUserSupplier; import com.qs.serve.modules.his.entity.dto.HisUserSupplierAddressVo; @@ -15,5 +17,8 @@ public interface HisUserSupplierMapper extends BaseMapper { List selectHisUserSupplierAddressList(@Param("query") HisUserSupplier param); + + List selectSupplierIdByQuery(@Param("query") HisUserSupplier param,@Param(Constants.WRAPPER) QueryWrapper lqw); + } diff --git a/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java b/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java index 170e15b5..2b1602ec 100644 --- a/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java +++ b/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java @@ -14,7 +14,7 @@ import java.util.List; */ public interface HisUserSupplierService extends IService { - List selectHisSupplier(BmsSupplier param,boolean usePage); + List selectHisSupplier(BmsSupplier param,boolean usePage); List selectListSupplier(BmsSupplier param); diff --git a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java index 08286954..404da77d 100644 --- a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java @@ -51,7 +51,7 @@ public class HisUserSupplierServiceImpl extends ServiceImpl selectHisSupplier(BmsSupplier param, boolean usePage) { + public List selectHisSupplier(BmsSupplier param, boolean usePage) { if(param==null){ param = new BmsSupplier(); } @@ -69,27 +69,29 @@ public class HisUserSupplierServiceImpl extends ServiceImpl(); } HisUserSupplier userSupplier = param.toHisUserSupplier(null,null); + userSupplier.setSelectUserIds(userIds); QueryWrapper lqw = new QueryWrapper<>(userSupplier); - lqw.select("distinct his_user_supplier.supplier_id"); - if(StringUtils.hasText(param.getKeyword())){ - lqw.lambda().like(HisUserSupplier::getSupplierCode,param.getKeyword()); - lqw.lambda().like(HisUserSupplier::getSupplierName,param.getKeyword()); - } - if(CollectionUtil.isNotEmpty(param.getSelectSupplierTypes())){ - lqw.lambda().in(HisUserSupplier::getSupplierFlag,param.getSelectSupplierTypes()); - } - lqw.lambda().in(HisUserSupplier::getUserId,userIds) - .ne(HisUserSupplier::getSupplierId,0); +// lqw.select("distinct his_user_supplier.supplier_id"); +// if(StringUtils.hasText(param.getKeyword())){ +// lqw.lambda().like(HisUserSupplier::getSupplierCode,param.getKeyword()); +// lqw.lambda().like(HisUserSupplier::getSupplierName,param.getKeyword()); +// } +// if(CollectionUtil.isNotEmpty(param.getSelectSupplierTypes())){ +// lqw.lambda().in(HisUserSupplier::getSupplierFlag,param.getSelectSupplierTypes()); +// } +// lqw.lambda().in(HisUserSupplier::getUserId,userIds) +// .ne(HisUserSupplier::getSupplierId,0); if(usePage){ PageUtil.startPage(); } - return this.list(lqw); + return baseMapper.selectSupplierIdByQuery(userSupplier,lqw); + //return this.list(lqw).stream().map(a->a.getSupplierId()).collect(Collectors.toList()); } @Override public List selectListSupplier(BmsSupplier param) { - List hisUserSuppliers = selectHisSupplier(param,false); - List supplierIds = hisUserSuppliers.stream().map(a->a.getSupplierId().toString()).collect(Collectors.toList()); + List supplierIds = selectHisSupplier(param,false); + //List supplierIds = hisUserSuppliers.stream().map(a->a.getSupplierId().toString()).collect(Collectors.toList()); if(supplierIds.size()>0) { param.setSearchInIds(supplierIds); List supplierList = bmsSupplierService.selectSupplierList(param); @@ -101,12 +103,12 @@ public class HisUserSupplierServiceImpl extends ServiceImpl selectPageSupplier(BmsSupplier param) { - List hisUserSuppliers = selectHisSupplier(param,true); - List supplierIds = hisUserSuppliers.stream().map(a->a.getSupplierId().toString()).collect(Collectors.toList()); + List supplierIds = selectHisSupplier(param,true); + //List supplierIds = hisUserSuppliers.stream().map(a->a.getSupplierId().toString()).collect(Collectors.toList()); if(supplierIds.size()>0) { param.setSearchInIds(supplierIds); List supplierList = bmsSupplierService.selectSupplierList(param); - return R.buildPageHelperList(hisUserSuppliers,supplierList); + return R.buildPageHelperList(supplierIds,supplierList); }else{ return R.buildPageHelperList(new ArrayList<>()); } diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index 9032e892..79bb958a 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -85,9 +85,15 @@ bms_supplier.`del_flag` + + From 7c9247a11f5edffaebd1aeba648eab49167b8c1b Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 6 Jun 2024 11:30:45 +0800 Subject: [PATCH 15/19] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=BB=B4=E6=8A=A4=E5=9C=B0=E5=9D=80=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20opt:=20=E4=BF=AE=E6=94=B9=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E5=8E=86=E5=8F=B2=E8=A1=A8=E6=9F=A5=E8=AF=A2=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qs/serve/modules/bms/entity/BmsSupplier.java | 2 ++ .../modules/his/entity/HisUserSupplierTemp.java | 13 +++++++++++++ src/main/resources/application.yml | 2 +- src/main/resources/mapper/bms/BmsSupplierMapper.xml | 6 +++--- .../resources/mapper/his/HisUserSupplierMapper.xml | 5 +++++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index 79203ae1..86c8e4f4 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java @@ -452,6 +452,8 @@ public class BmsSupplier implements Serializable { userSupplier.setBizRegionFourthly(this.getRegion2Fourthly()); userSupplier.setSupplierFlag(this.getSupplierFlag()); userSupplier.setType(type); + userSupplier.setCountAddr(this.getCountAddr()); + userSupplier.setCountAddrFlag(this.getCountAddrFlag()); userSupplier.setCostFlag(this.costFlag); userSupplier.setStopFlag(this.stopFlag); userSupplier.setStopFlagDate(this.stopFlagDate); diff --git a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplierTemp.java b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplierTemp.java index 2d9db50b..ed44f216 100644 --- a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplierTemp.java +++ b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplierTemp.java @@ -111,6 +111,19 @@ public class HisUserSupplierTemp implements Serializable { /** 闭户 */ private Integer stopFlag; + + /** 统计维护的地址数量 */ + @TableField(exist = false) + private Integer countAddr; + + /** + * 查询维护的地址 + * countAddrFlag=0 表示未维护的收货地址 + * countAddrFlag=1 表示已维护的收货地址 + */ + @TableField(exist = false) + private Integer countAddrFlag; + /** 闭户日期 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index fc9ee4a8..18d6ec1e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -58,7 +58,7 @@ logging: ROOT: info com.qs.serve: debug #com.qs.serve.modules.his: info - #com.qs.serve.modules.sys: debug + com.qs.serve.modules.sys: info com.qs.serve.modules.tag: info org.xnio.nio: info org.springframework: info diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index 79bb958a..65a03216 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -91,9 +91,9 @@ left join (select count(1) as count_addr,supplier_id from bms_supplier_address where del_flag = 0 group by supplier_id) supplier_addr on supplier_addr.supplier_id = bms_supplier.id - - - + and `supplier_addr`.`count_addr` = #{query.countAddr} + and `supplier_addr`.`count_addr` is null + and `supplier_addr`.`count_addr` =#{query.countAddrFlag} and `bms_supplier`.`id` = #{query.id} and `bms_supplier`.`region_first` = #{query.regionFirst} and `bms_supplier`.`region_second` = #{query.regionSecond} diff --git a/src/main/resources/mapper/his/HisUserSupplierMapper.xml b/src/main/resources/mapper/his/HisUserSupplierMapper.xml index 20be5ea7..c55c6444 100644 --- a/src/main/resources/mapper/his/HisUserSupplierMapper.xml +++ b/src/main/resources/mapper/his/HisUserSupplierMapper.xml @@ -73,8 +73,13 @@ + + update tzc_policy set ext_user_id = #{obj.id},ext_user_code=#{obj.code},ext_user_name=#{obj.name} From 630a897e404f32f7aa4f91a90bf6d4282a260e58 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 7 Jun 2024 10:19:18 +0800 Subject: [PATCH 18/19] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E9=87=8A=E6=94=BE=E6=94=BF=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TzcPolicyItemController.java | 11 ++++ .../modules/tzc/entity/TzcPolicyItem.java | 1 + .../modules/tzc/mapper/TzcPolicyMapper.java | 2 +- .../service/TzcPolicyApplicationService.java | 4 +- .../impl/TzcPolicyApplicationServiceImpl.java | 62 ++++++++++++++++++- 5 files changed, 76 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java index 03e0105f..475197f4 100644 --- a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java +++ b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java @@ -75,6 +75,17 @@ public class TzcPolicyItemController { return R.ok(); } + /** + * 取消释放政策 + * @param policyItemId + * @return + */ + @GetMapping("/cancelReleasePolicyByItemId") + public R cancelReleasePolicyByItemId(Long policyItemId){ + policyApplicationService.cancelReleasePolicyItem(policyItemId); + return R.ok(); + } + /** * 列表 * @param param diff --git a/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java b/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java index 4c0f11b4..027929d0 100644 --- a/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java +++ b/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java @@ -85,6 +85,7 @@ public class TzcPolicyItem implements Serializable { private Integer releaseFlag; /** 释放时间 */ + @TableField(updateStrategy = FieldStrategy.NOT_NULL) private LocalDateTime releaseTime; private String releaseUserId; diff --git a/src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyMapper.java b/src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyMapper.java index b9a7dd5a..46757958 100644 --- a/src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyMapper.java +++ b/src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyMapper.java @@ -43,7 +43,7 @@ public interface TzcPolicyMapper extends BaseMapper { * 获取需要释放的Item * @return */ - List listExpireItemIds(); + List listExpireItemIds(); /** * 替换继承人 diff --git a/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java index 1df62152..7d60257d 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java @@ -27,7 +27,9 @@ public interface TzcPolicyApplicationService { */ void syncExpireRelease(); - void releasePolicyItem(Long policyId, SysUser user); + void cancelReleasePolicyItem(Long policyItemId); + + void releasePolicyItem(Long policyItemId, SysUser user); /** * 创建费用占用结果 diff --git a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java index c907fcca..da54e851 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java @@ -1,6 +1,7 @@ package com.qs.serve.modules.tzc.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.qs.serve.common.config.DevEnvironmentConfig; import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectProperties; @@ -134,12 +135,69 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ } catch (Exception e) { log.error("释放过期费用失败,itemId:{} 原因:{}",id,e.getMessage()); } - return; } } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) + public void cancelReleasePolicyItem(Long policyItemId) { + TzcPolicyItem policyItem = tzcPolicyItemService.getById(policyItemId); + if(policyItem.getPolicyEndDate().atStartOfDay().isBefore(LocalDateTime.now())){ + Assert.throwEx("政策项已过期,不支持取消释放"); + } + if(!policyItem.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_3_Finished)|| + !policyItem.getReleaseFlag().equals(1)){ + Assert.throwEx("政策项的状态不支持"); + } + //查询已转移金额,金额为正数 + BigDecimal usedAmt = tzcPolicyItemMapper.sumPolicyItemTranAmt(policyItem.getId()); + if(policyItem.getUsedAmount().compareTo(usedAmt)!=0){ + Assert.throwEx("政策的已用金额异常"); + } + + //移除流水 + vtbFundFlowService.remove(new LambdaQueryWrapper() + .eq(VtbFundFlow::getPolicyItemId,policyItemId) + .eq(VtbFundFlow::getFundType,VtbFundFlowType.Release) + ); + + //移除Log释放 + List budgetLogList = budgetLogService.list(new LambdaQueryWrapper() + .eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_16.getCode()) + .eq(TbsBudgetLog::getPolicyItemId,policyItemId) + ); + BigDecimal totalRelease = BigDecimal.ZERO; + for (TbsBudgetLog budgetLog : budgetLogList) { + totalRelease = totalRelease.add(budgetLog.getAmount()); + } + if(policyItem.getReleaseAmount().compareTo(totalRelease)!=0){ + Assert.throwEx("释放金额异常"); + } + List logIds = budgetLogList.stream().map(TbsBudgetLog::getId).collect(Collectors.toList()); + budgetLogService.removeBatchByIds(logIds); + + //恢复状态 + policyItem.setReleaseAmount(BigDecimal.ZERO); + policyItem.setReleaseFlag(0); + policyItem.setReleaseTime(null); + policyItem.setReleaseUserId(""); + policyItem.setReleaseUserCode(""); + policyItem.setReleaseUserName(""); + policyItem.setPolicyItemStatus(TzPolicyItemStatus.Status_2_SyncSuccess); + tzcPolicyItemService.updateById(policyItem); + + //恢复主表状态 + Long policyId = policyItem.getPolicyId(); + TzcPolicy policy = tzcPolicyService.getById(policyId); + if(policy.getPolicyStatus().equals(TzcPolicyStatus.Status_3_Success)){ + policy.setPolicyStatus(TzcPolicyStatus.Status_2_PassSuccess); + tzcPolicyService.updateById(policy); + } + + } + + @Override + @Transactional(rollbackFor = Exception.class) public void releasePolicyItem(Long policyItemId, SysUser user) { TzcPolicyItem policyItem = tzcPolicyItemService.getById(policyItemId); if(!policyItem.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_2_SyncSuccess)){ From 1ded6c0f9054a2c2a20d3216c6807ff1dfac8f8c Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 7 Jun 2024 17:24:43 +0800 Subject: [PATCH 19/19] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=94=81?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=B7=A8=E7=B3=BB=E7=BB=9F=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=BC=80=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mvc/HttpServletRequestFilter.java | 12 +++++++ .../common/framework/redis/RedisService.java | 35 +++++++++++++++++++ .../serve/common/util/AuthContextUtils.java | 12 +++++++ .../sys/service/impl/SysPostServiceImpl.java | 1 + .../service/impl/SysPostUserServiceImpl.java | 2 +- .../service/impl/TbsBudgetServiceImpl.java | 6 +++- .../service/impl/TbsCostApplyServiceImpl.java | 5 ++- .../controller/TzcPolicyItemController.java | 10 ++++++ .../modules/tzc/entity/TzcPolicyItem.java | 8 +++++ .../service/TzcPolicyApplicationService.java | 4 +++ .../impl/TzcPolicyApplicationServiceImpl.java | 7 +++- .../controller/VtbVerificationController.java | 2 +- .../impl/VtbVerificationServiceImpl.java | 7 ++-- 13 files changed, 104 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java b/src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java index d858718c..6492549d 100644 --- a/src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java +++ b/src/main/java/com/qs/serve/common/framework/mvc/HttpServletRequestFilter.java @@ -1,15 +1,18 @@ package com.qs.serve.common.framework.mvc; import com.qs.serve.common.config.DevEnvironmentConfig; +import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.framework.security.model.LoginUser; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.DateUtils; import com.qs.serve.common.util.ServletUtils; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; +import javax.annotation.Resource; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; @@ -36,6 +39,8 @@ import java.time.format.DateTimeFormatter; @Order(10000) public class HttpServletRequestFilter implements Filter{ + @Resource + RedisService redisService; @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -98,6 +103,13 @@ public class HttpServletRequestFilter implements Filter{ }else { log.error(buffer.toString()); } + String themeKey = AuthContextUtils.getLockTheme(); + if(StringUtils.hasText(themeKey)){ + log.warn("释放资源key:{}",themeKey); + redisService.remove(themeKey); + } + //释放资源 防止线程池重复利用出现脏数据 + AuthContextUtils.removeThreadLocal(); } @Override diff --git a/src/main/java/com/qs/serve/common/framework/redis/RedisService.java b/src/main/java/com/qs/serve/common/framework/redis/RedisService.java index e054ec96..b4f51e8f 100644 --- a/src/main/java/com/qs/serve/common/framework/redis/RedisService.java +++ b/src/main/java/com/qs/serve/common/framework/redis/RedisService.java @@ -1,5 +1,7 @@ package com.qs.serve.common.framework.redis; +import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.AuthContextUtils; import lombok.AllArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; @@ -34,6 +36,39 @@ public class RedisService { private StringRedisTemplate stringRedisTemplate; + /** + * 加锁 + * @param theme + * @param id + * @return 是否在锁 + */ + public void throwResLock(String theme,String id){ + String key = "LOCK_RES:"+theme+":"+id; + String value = this.getString(key); + System.out.println("throwResLock:"+value); + String newVal = "lock"; + if(newVal.equals(value)){ + Assert.throwEx("服务正在处理,请稍后再试"); + } + this.set(key,newVal,10,TimeUnit.MINUTES); + String value2 = this.getString(key); + if(!newVal.equals(value2)){ + Assert.throwEx("锁失效"); + } + AuthContextUtils.setLockTheme(key); + } + + /** + * 释放锁 + * @param theme + * @param id + * @return 是否在锁 + */ + public void removeResLock(String theme,String id){ + String key = "LOCK_RES:"+theme+":"+id; + this.remove(key); + } + /** * 写入缓存 diff --git a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java b/src/main/java/com/qs/serve/common/util/AuthContextUtils.java index 9fdcf7fe..c8cd5cb2 100644 --- a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java +++ b/src/main/java/com/qs/serve/common/util/AuthContextUtils.java @@ -26,6 +26,13 @@ public class AuthContextUtils { private final static ThreadLocal THREAD_TENANT = new ThreadLocal<>(); private final static ThreadLocal THREAD_SUPPLIER = new ThreadLocal<>(); + private final static ThreadLocal RES_THEME_LOCK = new ThreadLocal<>(); + + public static void removeThreadLocal(){ + THREAD_TENANT.remove(); + THREAD_SUPPLIER.remove(); + RES_THEME_LOCK.remove(); + } public static String getAppId(){ return getAppId(true); @@ -69,6 +76,11 @@ public class AuthContextUtils { public static String getTenant(){return THREAD_TENANT.get();} + + public static void setLockTheme(String value){RES_THEME_LOCK.set(value);} + + public static String getLockTheme(){return RES_THEME_LOCK.get();} + public static void setSupplierId(String value){ if(value!=null){ try { diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java index 237bc266..b556d194 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostServiceImpl.java @@ -119,6 +119,7 @@ public class SysPostServiceImpl extends ServiceImpl impl post.setPathIds(pPathId +"_"+post.getId()); post.setPathNames(pPathName+"_"+post.getPostName()); } + this.updateById(post); this.toFlushPathIds(post.getId(),post.getPathIds(),post.getPostName()); } } diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java index e79ce4ac..f15e5227 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysPostUserServiceImpl.java @@ -44,7 +44,7 @@ public class SysPostUserServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); lqw.likeRight(SysPostUser::getPathIds,postUser.getPathIds()+"_"); - lqw.select(SysPostUser::getUserId,SysPostUser::getId); + //lqw.select(SysPostUser::getUserId,SysPostUser::getId); List sysPostUsers = this.list(lqw); for (SysPostUser childUser : sysPostUsers) { userIdSet.add(childUser.getUserId()); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 0f128367..87ec0280 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncManager; +import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.util.*; @@ -83,6 +84,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl private final VtbFundFlowService vtbFundFlowService; private final TbsActivityTemplateMapper tbsActivityTemplateMapper; + private RedisService redisService; private SysAttachService attachService; private SeeYonRequestService seeYonService; private ProjectProperties projectProperties; @@ -90,10 +92,12 @@ public class TbsBudgetServiceImpl extends ServiceImpl @Override public void commitApply(Long id) { + TbsBudget tbsBudget = this.getById(id); + redisService.throwResLock(TbsBudget.class.getSimpleName(),id.toString()); seeYonService.testConnection(); String templateCode = TbsSeeYonConst.BudgetApplyConf.Code(); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); - TbsBudget tbsBudget = this.getById(id); + if(tbsBudget.getBudgetState().equals(1)){ Assert.throwEx("已开启"); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index bb8f9fee..22a56e8e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -8,6 +8,7 @@ import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncManager; +import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.model.consts.ApplyTypeConst; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; @@ -88,6 +89,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class TbsCostApplyServiceImpl extends ServiceImpl implements TbsCostApplyService { + private RedisService redisService; private TbsActivityChannelPointMapper tbsActivityChannelPointMapper; private VtbVerificationMapper vtbVerificationMapper; private TbsBudgetApplicationService budgetApplicationService; @@ -499,8 +501,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl policyGoodsList = tzcPolicyGoodsService.listByItemId(policyItem.getId()); policyItem.setPolicyGoodsList(policyGoodsList); if(policyItem.getAttachIds()!=null&&policyItem.getAttachIds().length>0){ diff --git a/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java b/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java index 027929d0..e4393182 100644 --- a/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java +++ b/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java @@ -85,6 +85,8 @@ public class TzcPolicyItem implements Serializable { private Integer releaseFlag; /** 释放时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @TableField(updateStrategy = FieldStrategy.NOT_NULL) private LocalDateTime releaseTime; @@ -232,6 +234,12 @@ public class TzcPolicyItem implements Serializable { @TableField(exist = false) private List matchBudgetList; + /** + * 是否过期 + */ + @TableField(exist = false) + private Integer expireFlag; + public void initSetNull(){ this.setId(null); this.setCreateBy(null); diff --git a/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java index 7d60257d..9405c050 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java @@ -27,6 +27,10 @@ public interface TzcPolicyApplicationService { */ void syncExpireRelease(); + /** + * 取消释放 + * @param policyItemId + */ void cancelReleasePolicyItem(Long policyItemId); void releasePolicyItem(Long policyItemId, SysUser user); diff --git a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java index da54e851..402bbed6 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java @@ -7,6 +7,7 @@ import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncManager; +import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; import com.qs.serve.common.model.dto.R; @@ -61,6 +62,7 @@ import com.qs.serve.modules.tzc.service.TzcPolicyItemService; import com.qs.serve.modules.tzc.service.TzcPolicyService; import com.qs.serve.modules.vtb.common.VtbFundFlowType; import com.qs.serve.modules.vtb.entity.VtbFundFlow; +import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.service.VtbFundFlowService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -84,6 +86,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationService { + private RedisService redisService; private TzcPolicyMapper tzcPolicyMapper; private TzcPolicyService tzcPolicyService; private TzcPolicyItemService tzcPolicyItemService; @@ -378,8 +381,10 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ @Override @Transactional(rollbackFor = Exception.class) public void commitPolicy(Long policyId){ - seeYonService.testConnection(); TzcPolicy tzcPolicy = tzcPolicyService.getById(policyId); + + redisService.throwResLock(TzcPolicy.class.getSimpleName(),tzcPolicy.getId()+""); + seeYonService.testConnection(); Integer tzcPolicyStatus = tzcPolicy.getPolicyStatus(); if(!tzcPolicy.allowEditFlag()){ Assert.throwEx("操作失败,政策状态不支持"); diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java index 3efda2c6..977e8d38 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java +++ b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java @@ -335,7 +335,7 @@ public class VtbVerificationController { * @param commitBo * @return */ - @LimitSubmit(interval = 3000) + @LimitSubmit(interval = 30000) @PostMapping("/commit") @SysLog(module = SystemModule.Verification, title = "核销", biz = BizType.UPDATE) @PreAuthorize("hasRole('vtb:verification:commit')") diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 69b68964..483d9b41 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -8,6 +8,7 @@ import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.framework.manager.AsyncFactory; import com.qs.serve.common.framework.manager.AsyncManager; +import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.model.AmountDTO; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.dto.R; @@ -103,6 +104,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl subjectCenterBoList = verificationBo.getSubjectCenterList(); boolean isCenterCheck = CollectionUtil.isNotEmpty(subjectCenterBoList); @@ -850,6 +852,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl