diff --git a/src/main/java/com/qs/serve/common/model/enums/BudgetLogOptFlag.java b/src/main/java/com/qs/serve/common/model/enums/BudgetLogOptFlag.java index 1c33b519..0f508777 100644 --- a/src/main/java/com/qs/serve/common/model/enums/BudgetLogOptFlag.java +++ b/src/main/java/com/qs/serve/common/model/enums/BudgetLogOptFlag.java @@ -57,12 +57,14 @@ public enum BudgetLogOptFlag { /** 13-政策因费用申请调增(政策申请,预算转移) */ State_13(13,true), - /** 14-政策释放(被拒绝后,政策释放) */ + /** 14-政策申请释放(被拒绝后,政策释放) */ State_14(14,true), /** 15-费用申请释放(被拒绝后,预算增加) */ - State_15(15,true); + State_15(15,true), + /** 16-政策释放(释放操作,预算增加) */ + State_16(16,true); /** * 编码 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 1bf7bd63..0ebe9a46 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 @@ -183,6 +183,8 @@ public class BmsSupplier implements Serializable { private String comRegionCode; + private String bookCode; + /** 初始化当前欠费 */ @NotNull(message = "初始化当前欠费不能为空") private BigDecimal initCurAmount; diff --git a/src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java b/src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java index 6cfa01fe..b4b7a7b0 100644 --- a/src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java +++ b/src/main/java/com/qs/serve/modules/third/entity/ThirtyVerification.java @@ -128,6 +128,8 @@ public class ThirtyVerification { @NotNull(message = "客户名称不能为空") private String cusName; + private String bookCode; + /** * 对应 apticlaim_recid */ 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 3d56a625..df999200 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 @@ -324,6 +324,15 @@ public class PortalOfCostApplication { if(oriPolicyBudgetLog==null){ Assert.throwEx("政策预算数据异常:"+policyItem.getPolicyItemCode()); } + + + BigDecimal usedAmt = tzcPolicyItemMapper.sumPolicyItemTranAmt(policyItem.getId()); + BigDecimal resultItemAmt = usedAmt.add(totalAmount); + if(policyItem.getDiscountMax().compareTo(resultItemAmt)<0){ + BigDecimal surplusAmt = policyItem.getDiscountMax().subtract(usedAmt); + Assert.throwEx("政策预算不足,可用余额:"+surplusAmt); + } + //构建费用申请 TbsCostApply costApply = new TbsCostApply(); //2024年1月23日,添加 @@ -516,10 +525,9 @@ public class PortalOfCostApplication { TzcPolicyItemLog policyItemLog = TzcPolicyItemLog.toNewObject(policyItem,totalAmount); policyItemLogService.save(policyItemLog); - BigDecimal usedAmt = tzcPolicyItemMapper.sumPolicyItemTranAmt(policyItem.getId()); TzcPolicyItem policyItemParam = new TzcPolicyItem(); policyItemParam.setId(policyItem.getId()); - policyItemParam.setUsedAmount(usedAmt.add(totalAmount)); + policyItemParam.setUsedAmount(resultItemAmt); policyItemServiceService.updateById(policyItemParam); //保存核销申请 diff --git a/src/main/java/com/qs/serve/modules/third/util/ThirtyVerificationUtil.java b/src/main/java/com/qs/serve/modules/third/util/ThirtyVerificationUtil.java index ab0cfe3a..8f50c5de 100644 --- a/src/main/java/com/qs/serve/modules/third/util/ThirtyVerificationUtil.java +++ b/src/main/java/com/qs/serve/modules/third/util/ThirtyVerificationUtil.java @@ -91,6 +91,7 @@ public class ThirtyVerificationUtil { tv.setCheckTime(timeString); tv.setCusCode(supplier.getCode()); tv.setCusName(supplier.getName()); + tv.setBookCode(supplier.getBookCode()); tv.setRecId(verification.getVerificationCode()); return JsonUtil.objectToJson(tv); } 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 56fb460e..3efc9e8c 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 @@ -478,17 +478,6 @@ public class TzcPolicyController { } - /** - * 释放政策 - * @param policyId - * @return - */ - @GetMapping("/releasePolicy") - public R releasePolicy(Long policyId){ - policyApplicationService.releasePolicy(policyId); - return R.ok(); - } - private List getCateIds(String province,String city,String area){ LambdaQueryWrapper region2Lqw = new LambdaQueryWrapper<>(); boolean search = false; 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 685acdb7..48027a3e 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 @@ -14,6 +14,7 @@ import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; import com.qs.serve.modules.tzc.common.TzcPolicyStatus; import com.qs.serve.modules.tzc.entity.TzcPolicy; import com.qs.serve.modules.tzc.entity.TzcPolicyGoods; +import com.qs.serve.modules.tzc.service.TzcPolicyApplicationService; import com.qs.serve.modules.tzc.service.TzcPolicyGoodsService; import com.qs.serve.modules.tzc.service.TzcPolicyService; import lombok.AllArgsConstructor; @@ -46,6 +47,18 @@ public class TzcPolicyItemController { private TzcPolicyGoodsService tzcPolicyGoodsService; private TzcPolicyService tzcPolicyService; private SysAttachService attachService; + private TzcPolicyApplicationService policyApplicationService; + + /** + * 释放政策 + * @param policyItemId + * @return + */ + @GetMapping("/releasePolicyByItemId") + public R releasePolicy(Long policyItemId){ + policyApplicationService.releasePolicyItem(policyItemId); + return R.ok(); + } /** * 列表 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 324d7d52..a4b4273e 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 @@ -21,7 +21,7 @@ public interface TzcPolicyApplicationService { void syncPolicy(Long policyId); - void releasePolicy(Long policyId); + void releasePolicyItem(Long policyId); /** * 创建费用占用结果 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 1c7931ee..0bdb3b51 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 @@ -52,10 +52,14 @@ import com.qs.serve.modules.tzc.entity.TzcPolicy; import com.qs.serve.modules.tzc.entity.TzcPolicyGoods; import com.qs.serve.modules.tzc.entity.TzcPolicyItem; import com.qs.serve.modules.tzc.entity.dto.PolicyItemDto; +import com.qs.serve.modules.tzc.mapper.TzcPolicyItemMapper; import com.qs.serve.modules.tzc.service.TzcPolicyApplicationService; import com.qs.serve.modules.tzc.service.TzcPolicyGoodsService; 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.service.VtbFundFlowService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -80,6 +84,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ private TzcPolicyService tzcPolicyService; private TzcPolicyItemService tzcPolicyItemService; + private TzcPolicyItemMapper tzcPolicyItemMapper; private TzcPolicyGoodsService tzcPolicyGoodsService; private TbsCostUnItemPolicyService tbsCostUnItemPolicyService; private TbsBudgetCostItemPolicyService tbsBudgetCostItemPolicyService; @@ -100,6 +105,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ private final BmsRegionMapper regionMapper; private final BmsRegion2Mapper region2Mapper; private ProjectApisProperties projectApisProperties; + private final VtbFundFlowService vtbFundFlowService; @Override public void syncPolicy(Long policyId) { @@ -113,8 +119,74 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ } @Override - public void releasePolicy(Long policyId) { - + public void releasePolicyItem(Long policyItemId) { + TzcPolicyItem policyItem = tzcPolicyItemService.getById(policyItemId); + if(!policyItem.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_3_Finished)){ + Assert.throwEx("政策项的状态不支持"); + } + Long policyId = policyItem.getPolicyId(); + TzcPolicy policy = tzcPolicyService.getById(policyId); + if(!policy.getPolicyStatus().equals(TzcPolicyStatus.Status_2_PassSuccess)){ + Assert.throwEx("政策的状态不支持"); + } + BigDecimal usedAmt = tzcPolicyItemMapper.sumPolicyItemTranAmt(policyItem.getId()); + BigDecimal surplusAmt = policyItem.getDiscountMax().subtract(usedAmt); + if(surplusAmt.compareTo(BigDecimal.ZERO)>0){ + LambdaQueryWrapper tbsLogLqw = new LambdaQueryWrapper<>(); + tbsLogLqw.eq(TbsBudgetLog::getPolicyItemId,policyItem.getId()); + tbsLogLqw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_11.getCode()); + TbsBudgetLog budgetLog = budgetLogService.getOne(tbsLogLqw,false); + if(budgetLog==null){ + Assert.throwEx("政策预算数据异常:"+policyItem.getPolicyItemCode()); + } + //余额大于0则释放 + VtbFundFlow fundFlow = new VtbFundFlow(); + fundFlow.setFundType(VtbFundFlowType.Release); + fundFlow.setVerificationId(0L); + fundFlow.setCenterGoodsCode("0"); + fundFlow.setCostApplyId(0L); + fundFlow.setActivityId(0L); + fundFlow.setSupplierId(0L); + fundFlow.setSupplierCode(""); + fundFlow.setSupplierName(""); + fundFlow.setPolicyId(policyId); + fundFlow.setPolicyItemId(policyItem.getId()); + fundFlow.setUsedAmount(surplusAmt); + vtbFundFlowService.save(fundFlow); + + budgetLog.setCreateBy(null); + budgetLog.setCreateTime(null); + budgetLog.setUpdateBy(null); + budgetLog.setUpdateTime(null); + budgetLog.setId(null); + BudgetLogOptFlag optFlag = BudgetLogOptFlag.State_16; + //正数 + budgetLog.setAmount(surplusAmt); + budgetLog.setOptType(optFlag.getCode()); + budgetLogService.save(budgetLog); + + policyItem.setUsedAmount(policyItem.getDiscountMax()); + policyItem.setPolicyItemStatus(TzPolicyItemStatus.Status_3_Finished); + + tzcPolicyItemService.updateById(policyItem); + } + //标记政策已完成 + List listByPolicyId = tzcPolicyItemService.listByPolicyId(policyId); + boolean allFinished = true; + for (TzcPolicyItem item : listByPolicyId) { + if(!item.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_3_Finished)){ + if (item.getDiscountMax().compareTo(item.getUsedAmount())==0){ + item.setPolicyItemStatus(TzPolicyItemStatus.Status_3_Finished); + tzcPolicyItemService.updateById(item); + continue; + } + allFinished = false; + } + } + if(allFinished){ + policy.setPolicyStatus(TzcPolicyStatus.Status_3_Success); + tzcPolicyService.updateById(policy); + } } diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbFundFlow.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbFundFlow.java index 11907d5b..e7e85a4f 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/VtbFundFlow.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbFundFlow.java @@ -54,6 +54,12 @@ public class VtbFundFlow implements Serializable { /** 科目id */ private Long subjectId; + /** 政策id */ + private Long policyId; + + /** 政策项id */ + private Long policyItemId; + /** 科目编码 */ @Length(max = 50,message = "科目编码长度不能超过50字") private String subjectCode; diff --git a/src/main/java/com/qs/serve/task/BirTask.java b/src/main/java/com/qs/serve/task/BirTask.java index b6a7691a..9eb6970b 100644 --- a/src/main/java/com/qs/serve/task/BirTask.java +++ b/src/main/java/com/qs/serve/task/BirTask.java @@ -1,5 +1,6 @@ package com.qs.serve.task; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; import com.qs.serve.task.controller.TaskActivityController; import lombok.AllArgsConstructor; @@ -24,6 +25,7 @@ public class BirTask { @Scheduled(cron="0 0 1 * * ?") public void buildTempTable(){ + AuthContextUtils.setTenant("001"); int year = LocalDate.now().getYear(); for (int i = 1;i < 13; i++) { birActivityCenterGoodsService.buildReport(year,i); diff --git a/src/main/java/com/qs/serve/task/BitTask.java b/src/main/java/com/qs/serve/task/BitTask.java index cc33e77a..2597baed 100644 --- a/src/main/java/com/qs/serve/task/BitTask.java +++ b/src/main/java/com/qs/serve/task/BitTask.java @@ -2,6 +2,7 @@ package com.qs.serve.task; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.modules.bir.entity.BirBaseActivity; import com.qs.serve.modules.bir.service.BirBaseActivityService; import com.qs.serve.modules.bir.service.BirRoiRateService; @@ -25,6 +26,7 @@ public class BitTask { @Scheduled(cron="0 0 1 * * ?") public void buildTempTable(){ + AuthContextUtils.setTenant("001"); //移除当年所有 int year = 2023; //重新生成记录 diff --git a/src/main/java/com/qs/serve/task/ErpDipatchTask.java b/src/main/java/com/qs/serve/task/ErpDipatchTask.java index d52d6079..29fc4021 100644 --- a/src/main/java/com/qs/serve/task/ErpDipatchTask.java +++ b/src/main/java/com/qs/serve/task/ErpDipatchTask.java @@ -1,5 +1,6 @@ package com.qs.serve.task; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.modules.bir.mapper.BirReportAccountBookMapper; import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService; import lombok.AllArgsConstructor; @@ -24,6 +25,7 @@ public class ErpDipatchTask { @Scheduled(cron="0 0 1 * * ?") public void buildTempTable(){ + AuthContextUtils.setTenant("001"); birReportAccountBookMapper.buildAllDispatch(); birReportAccountBookMapper.buildRegionDispatch(); birReportAccountBookMapper.buildBizRegionDispatch(); diff --git a/src/main/java/com/qs/serve/task/GoodsTask.java b/src/main/java/com/qs/serve/task/GoodsTask.java index 47cc0b70..842869d0 100644 --- a/src/main/java/com/qs/serve/task/GoodsTask.java +++ b/src/main/java/com/qs/serve/task/GoodsTask.java @@ -1,5 +1,6 @@ package com.qs.serve.task; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.modules.goods.service.GoodsApplicationService; import com.qs.serve.modules.goods.service.GoodsSpuService; import lombok.AllArgsConstructor; @@ -23,6 +24,7 @@ public class GoodsTask { @Scheduled(cron="0 0 1 * * ?") public void buildTempTable(){ + AuthContextUtils.setTenant("001"); goodsSpuService.initSkuNum(); } @@ -31,6 +33,7 @@ public class GoodsTask { */ @Scheduled(cron="0 0/2 0 * * ?") public void syncStandGoods(){ + AuthContextUtils.setTenant("001"); goodsApplicationService.syncStandGoods(false); } @@ -39,6 +42,7 @@ public class GoodsTask { */ @Scheduled(cron="0 0 1 * * ?") public void syncInvPrice(){ + AuthContextUtils.setTenant("001"); goodsApplicationService.syncSkuPrice(); } diff --git a/src/main/java/com/qs/serve/task/PayTask.java b/src/main/java/com/qs/serve/task/PayTask.java index 5272ee37..a84af761 100644 --- a/src/main/java/com/qs/serve/task/PayTask.java +++ b/src/main/java/com/qs/serve/task/PayTask.java @@ -46,6 +46,7 @@ public class PayTask { */ @Scheduled(cron="0 0 2 * * ?") public void checkToPay(){ + AuthContextUtils.setTenant("001"); //预先调用伟成同步状态接口,减少查询记录数 String url = projectApisProperties.getCheckPayStatus(); HttpUtil.doGet(url,null); diff --git a/src/main/java/com/qs/serve/task/TbsTask.java b/src/main/java/com/qs/serve/task/TbsTask.java index 508192bf..31f47460 100644 --- a/src/main/java/com/qs/serve/task/TbsTask.java +++ b/src/main/java/com/qs/serve/task/TbsTask.java @@ -115,6 +115,7 @@ public class TbsTask { */ @Scheduled(cron="0 0/30 * * * ?") public void updateCheckState(){ + AuthContextUtils.setTenant("001"); tbsCostApplyService.updateCheckState(); } @@ -124,6 +125,7 @@ public class TbsTask { */ @Scheduled(cron="0 0/30 * * * ?") public void syncPayToErp(){ + AuthContextUtils.setTenant("001"); vtbVerificationService.toPayRequest(); } diff --git a/src/main/java/com/qs/serve/task/WxUserTask.java b/src/main/java/com/qs/serve/task/WxUserTask.java index 00e941db..682af4f5 100644 --- a/src/main/java/com/qs/serve/task/WxUserTask.java +++ b/src/main/java/com/qs/serve/task/WxUserTask.java @@ -1,5 +1,6 @@ package com.qs.serve.task; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.modules.wx.service.WxUserService; import lombok.AllArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; @@ -17,6 +18,7 @@ public class WxUserTask { //@Scheduled(cron = "0 0/30 * * * ?") public void syncSubscribe(){ + AuthContextUtils.setTenant("001"); wxUserService.syncSubscribe(); }