From 4ba86f901c71f0d83fd6617b6199c56d0b88e545 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 7 Dec 2023 14:52:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=A2=84=E7=AE=97=E5=8D=A0=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TbsBudgetLogController.java | 13 --- .../controller/TbsDealErrorController.java | 82 ++++++++++++++++ .../TbsCostApplyOperationServiceImpl.java | 94 ++++++++++++------- .../service/impl/TbsDealErrorApplication.java | 50 ++++++++-- .../modules/third/PortalOfCostController.java | 13 --- .../service/PortalOfCostApplication.java | 13 +-- 6 files changed, 194 insertions(+), 71 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/tbs/controller/TbsDealErrorController.java 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 f52abd13..af8741a4 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 @@ -19,10 +19,8 @@ import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.service.TbsBudgetService; import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService; -import com.qs.serve.modules.tbs.service.impl.TbsDealErrorApplication; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.tbs.entity.so.TbsBudgetLogSo; @@ -53,7 +51,6 @@ public class TbsBudgetLogController { private final TbsBudgetMapper tbsBudgetMapper; private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; private TbsBudgetLogService budgetLogService; - private TbsDealErrorApplication tbsDealErrorApplication; /** * 翻页 @@ -159,15 +156,5 @@ public class TbsBudgetLogController { return R.ok(tbsBudgetLog); } - /** - * 补偿处理错误的第三方订单 - * @return - */ - @GetMapping("/dealErrorThirtyCost") - public R dealErrorThirtyCost(){ - tbsDealErrorApplication.dealThirtyBuildCost(); - return R.ok(); - } - } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsDealErrorController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsDealErrorController.java new file mode 100644 index 00000000..b2e3e8e8 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsDealErrorController.java @@ -0,0 +1,82 @@ +package com.qs.serve.modules.tbs.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.LimitSubmit; +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.BudgetLogOptFlag; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.tbs.entity.TbsBudget; +import com.qs.serve.modules.tbs.entity.TbsBudgetLog; +import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; +import com.qs.serve.modules.tbs.entity.so.TbsBudgetLogSo; +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.TbsBudgetLogService; +import com.qs.serve.modules.tbs.service.TbsBudgetService; +import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService; +import com.qs.serve.modules.tbs.service.impl.TbsDealErrorApplication; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 预算 预算日志 + * @author YenHex + * @since 2023-01-05 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("tbs/budgetLog") +public class TbsDealErrorController { + + private TbsBudgetLogService tbsBudgetLogService; + private TbsBudgetService tbsBudgetService; + private TbsBudgetLogMapper tbsBudgetLogMapper; + private final TbsBudgetMapper tbsBudgetMapper; + private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; + private TbsBudgetLogService budgetLogService; + private TbsDealErrorApplication tbsDealErrorApplication; + + + /** + * 补偿处理错误的第三方订单 + * @return + */ + @GetMapping("/dealErrorThirtyCost") + public R dealErrorThirtyCost(){ + tbsDealErrorApplication.dealThirtyBuildCost(); + return R.ok(); + } + + /** + * 将整张单废弃 + * @param costId + * @return + */ + @GetMapping("/releaseAll") + public R releaseAll(Long costId){ + tbsDealErrorApplication.releaseAll(costId); + return R.ok(); + } + +} + 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 0a22d6da..4d7136d3 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 @@ -326,41 +326,71 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService * @param costApply */ private void doEditAmtCallback(TbsCostApply costApply) { - //修改预算占用 + TbsActivityCenterGoodsService tbsActivityCenterGoodsService = SpringUtils.getBean(TbsActivityCenterGoodsService.class); List activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApply.getId()); - //查询当前预算占用 - LambdaQueryWrapper logLqw = new LambdaQueryWrapper<>(); - logLqw.eq(TbsBudgetLog::getRollbackFlag,BudgetLogRollbackFlag.State_0); - logLqw.eq(TbsBudgetLog::getCostApplyId, costApply.getId()); - logLqw.and(qw->{ - qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or() - .eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode()); - }); - //设置为回滚完成,防止出现多次查询 - List budgetLogList = tbsBudgetLogService.list(logLqw); - budgetLogList.forEach(bl->{ - bl.setRollbackFlag(BudgetLogRollbackFlag.State_2); - }); - tbsBudgetLogService.updateBatchById(budgetLogList); - //移除旧预算占用,即添预算 - budgetLogList.forEach(bl->{ - bl.setId(null); - bl.setOptType(BudgetLogOptFlag.State_5.getCode()); - bl.setAmount(bl.getAmount().negate()); - bl.setCreateBy(null); - bl.setCreateTime(null); - bl.setUpdateTime(null); - bl.setUpdateBy(null); - }); - tbsBudgetLogService.saveBatch(budgetLogList); - //保存新的预算占用 - SysUser sysUser = sysUserService.getById(costApply.getUserId()); + List budgetCostItemList = tbsBudgetCostItemService.listByCostApplyId(costApply.getId()); - List budgetIds = budgetCostItemList.stream().map(TbsBudgetCostItem::getBudgetId).collect(Collectors.toList()); - List budgetList = tbsBudgetMapper.selectBatchIds(budgetIds); - List newBudgetLogList = this.createNewBudgetLogs(costApply, activityCenterGoodsList, sysUser, budgetCostItemList, budgetList); - tbsBudgetLogService.saveBatch(newBudgetLogList); + for (TbsBudgetCostItem costItem : budgetCostItemList) { + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + if(costItem.getCenterGoodItemId().equals(centerGoods.getId())){ + costItem.setCenterGoodsAmount(centerGoods.getCenterGoodsAmount()); + tbsBudgetCostItemService.updateById(costItem); + } + } + } + + LambdaQueryWrapper budgetLogLqw = new LambdaQueryWrapper<>(); + budgetLogLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); + List budgetLogList = tbsBudgetLogMapper.selectList(budgetLogLqw); + for (TbsBudgetLog budgetLog : budgetLogList) { + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + if( budgetLog.getSubjectId().equals(centerGoods.getSubjectId()) + && budgetLog.getCenterType().equals(centerGoods.getCenterType()) + && budgetLog.getCenterId().equals(centerGoods.getCenterId()) + ){ + budgetLog.setAmount(centerGoods.getCenterGoodsAmount().negate()); + tbsBudgetLogMapper.updateById(budgetLog); + } + } + } + + +// //修改预算占用 +// TbsActivityCenterGoodsService tbsActivityCenterGoodsService = SpringUtils.getBean(TbsActivityCenterGoodsService.class); +// List activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApply.getId()); +// //查询当前预算占用 +// LambdaQueryWrapper logLqw = new LambdaQueryWrapper<>(); +// logLqw.eq(TbsBudgetLog::getRollbackFlag,BudgetLogRollbackFlag.State_0); +// logLqw.eq(TbsBudgetLog::getCostApplyId, costApply.getId()); +// logLqw.and(qw->{ +// qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or() +// .eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode()); +// }); +// //设置为回滚完成,防止出现多次查询 +// List budgetLogList = tbsBudgetLogService.list(logLqw); +// budgetLogList.forEach(bl->{ +// bl.setRollbackFlag(BudgetLogRollbackFlag.State_2); +// }); +// tbsBudgetLogService.updateBatchById(budgetLogList); +// //移除旧预算占用,即添预算 +// budgetLogList.forEach(bl->{ +// bl.setId(null); +// bl.setOptType(BudgetLogOptFlag.State_5.getCode()); +// bl.setAmount(bl.getAmount().negate()); +// bl.setCreateBy(null); +// bl.setCreateTime(null); +// bl.setUpdateTime(null); +// bl.setUpdateBy(null); +// }); +// tbsBudgetLogService.saveBatch(budgetLogList); +// //保存新的预算占用 +// SysUser sysUser = sysUserService.getById(costApply.getUserId()); +// List budgetCostItemList = tbsBudgetCostItemService.listByCostApplyId(costApply.getId()); +// List budgetIds = budgetCostItemList.stream().map(TbsBudgetCostItem::getBudgetId).collect(Collectors.toList()); +// List budgetList = tbsBudgetMapper.selectBatchIds(budgetIds); +// List newBudgetLogList = this.createNewBudgetLogs(costApply, activityCenterGoodsList, sysUser, budgetCostItemList, budgetList); +// tbsBudgetLogService.saveBatch(newBudgetLogList); } /** diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsDealErrorApplication.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsDealErrorApplication.java index 8dc89c34..f35a9604 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsDealErrorApplication.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsDealErrorApplication.java @@ -1,21 +1,20 @@ package com.qs.serve.modules.tbs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.qs.serve.common.util.JsonUtil; import com.qs.serve.modules.sys.entity.SysSyncLog; import com.qs.serve.modules.sys.mapper.SysSyncLogMapper; -import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; -import com.qs.serve.modules.tbs.entity.TbsBudgetCostItem; -import com.qs.serve.modules.tbs.entity.TbsBudgetLog; -import com.qs.serve.modules.tbs.entity.TbsCostApply; -import com.qs.serve.modules.tbs.mapper.TbsActivityCenterGoodsMapper; -import com.qs.serve.modules.tbs.mapper.TbsBudgetCostItemMapper; -import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper; +import com.qs.serve.modules.tbs.entity.*; +import com.qs.serve.modules.tbs.mapper.*; import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo; import com.qs.serve.modules.third.entity.ProcessGoodsItem; +import com.qs.serve.modules.vtb.entity.VtbVerification; +import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.HashMap; @@ -35,7 +34,12 @@ public class TbsDealErrorApplication { private final TbsBudgetLogMapper tbsBudgetLogMapper; private final SysSyncLogMapper sysSyncLogMapper; private final TbsActivityCenterGoodsMapper activityCenterGoodsMapper; + private final TbsActivityCenterMapper activityCenterMapper; + private final TbsActivitySubjectMapper activitySubjectMapper; + private final TbsActivityMapper activityMapper; private final TbsBudgetCostItemMapper budgetCostItemMapper; + private final VtbVerificationMapper verificationMapper; + private final TbsCostApplyMapper costApplyMapper; /** @@ -97,6 +101,38 @@ public class TbsDealErrorApplication { } } + + + } + } + + @Transactional(rollbackFor = Exception.class) + public void releaseAll(Long costId){ + VtbVerification verification = new VtbVerification(); + LambdaQueryWrapper veriLqw = new LambdaQueryWrapper<>(); + veriLqw.in(VtbVerification::getVerificationState,0,1); + Long count = verificationMapper.selectCount(veriLqw); + if(count>0){ + log.warn("存在核销记录,释放中断!"); + return; + } + QueryWrapper qw = new QueryWrapper(); + qw.eq("cost_apply_id",costId); + tbsBudgetLogMapper.delete(qw); + budgetCostItemMapper.delete(qw); + TbsCostApply costApply = costApplyMapper.selectById(costId); + costApply.setCheckState(3); + costApply.setChargeState(6); + costApply.setTotalActivityUsedAmount(BigDecimal.ZERO); + costApplyMapper.updateById(costApply); + + List activityList = activityMapper.selectList(qw); + for (TbsActivity activity : activityList) { + activity.setReleaseFlag(1); + activity.setReleaseAmount(activity.getTotalAmount()); + activity.setReleaseUserId("0"); + activity.setReleaseUserName("系统释放"); + activityMapper.updateById(activity); } } diff --git a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java index fe2b508b..0aabfc90 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java @@ -125,19 +125,6 @@ public class PortalOfCostController { return R.error("支付异常"); } - /** - * 一站式创建费用(政策) - * @param createBo - * @return - */ - //@PostMapping("createByPolicy") - public R createCostProcess2(@Valid @RequestBody ProcessCreatePolicyCostBo createBo, HttpServletRequest request){ - ThirdTokenUtil.checkToken(request); - log.debug("一站式创建费用(政策)===>{}", JsonUtil.objectToJson(createBo)); - portalOfCostApplication.createCostProcessByPolicy(createBo); - return R.ok(); - } - /** 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 f641fbaa..ecbde498 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 @@ -228,7 +228,7 @@ public class PortalOfCostApplication { * 已弃用,适用 syncXltPolicyItemPayment代替 * @param createBo */ - @Deprecated +// @Deprecated @Transactional(rollbackFor = Exception.class) public void createCostProcessByPolicy(ProcessCreatePolicyCostBo createBo){ SysUser user = userService.getByAccount(createBo.getUserCode()); @@ -377,15 +377,16 @@ public class PortalOfCostApplication { centerGoods.setTargetLevelPathIds(activityGoods.getTargetLevelPathIds()); centerGoods.setTargetLevelPathNames(activityGoods.getTargetLevelPathNames()); // 分配金额 + BigDecimal totalSkuAmt = BigDecimal.ZERO; for (ProcessGoodsItem goodsItem : processGoodsItems) { if(goodsItem.getInventoryCode().equals(activityGoods.getTargetCode())){ - BigDecimal rate = goodsItem.getAmount().divide(totalAmount, RoundingMode.UP); - centerGoods.setCenterGoodsAmount(goodsItem.getAmount()); - centerGoods.setCenterGoodsRate(rate); - centerGoods.setUsedAmount(goodsItem.getAmount()); - break; + totalSkuAmt = totalSkuAmt.add(goodsItem.getAmount()); } } + BigDecimal rate = totalSkuAmt.divide(totalAmount, RoundingMode.UP); + centerGoods.setCenterGoodsAmount(totalSkuAmt); + centerGoods.setCenterGoodsRate(rate); + centerGoods.setUsedAmount(totalSkuAmt); activityCenterGoodsList.add(centerGoods); }