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 f7225e8b..60fd6e16 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 @@ -3,10 +3,7 @@ import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.qs.serve.common.util.Assert; -import com.qs.serve.common.util.HttpUtil; -import com.qs.serve.common.util.IdUtil; -import com.qs.serve.common.util.JsonUtil; +import com.qs.serve.common.util.*; import com.qs.serve.modules.bir.consts.BirActivityCenterGoodsUtil; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; @@ -52,6 +49,10 @@ public class SysDeleteLogServiceImpl extends ServiceImpl releasePcy(Long policyItemId){ + policyApplicationService.syncExpireRelease(); + return R.ok(); + } + /** * 释放政策 * @param policyItemId @@ -56,7 +70,8 @@ public class TzcPolicyItemController { */ @GetMapping("/releasePolicyByItemId") public R releasePolicy(Long policyItemId){ - policyApplicationService.releasePolicyItem(policyItemId); + SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + policyApplicationService.releasePolicyItem(policyItemId, sysUser); return R.ok(); } 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 559773b0..4c0f11b4 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 @@ -81,6 +81,21 @@ public class TzcPolicyItem implements Serializable { @NotNull(message = "已用金额不能为空") private BigDecimal usedAmount; + /** 是否释放 */ + private Integer releaseFlag; + + /** 释放时间 */ + private LocalDateTime releaseTime; + + private String releaseUserId; + + private String releaseUserCode; + + private String releaseUserName; + + /** 释放金额 */ + private BigDecimal releaseAmount; + /** 客户id */ @NotNull(message = "客户id不能为空") private Long supplierId; 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 301ea5eb..b9a7dd5a 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 @@ -39,6 +39,12 @@ public interface TzcPolicyMapper extends BaseMapper { */ int cancelCostExtUserByPolicyIds(@Param("policyIds") List policyIds); + /** + * 获取需要释放的Item + * @return + */ + List listExpireItemIds(); + /** * 替换继承人 * @param userId 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 a4b4273e..1df62152 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 @@ -1,5 +1,6 @@ package com.qs.serve.modules.tzc.service; +import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; import com.qs.serve.modules.tzc.entity.TzcPolicyItem; @@ -21,7 +22,12 @@ public interface TzcPolicyApplicationService { void syncPolicy(Long policyId); - void releasePolicyItem(Long policyId); + /** + * 同步过期的政策释放 + */ + void syncExpireRelease(); + + void releasePolicyItem(Long policyId, 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 98da11ec..c907fcca 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 @@ -53,6 +53,7 @@ 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.mapper.TzcPolicyMapper; import com.qs.serve.modules.tzc.service.TzcPolicyApplicationService; import com.qs.serve.modules.tzc.service.TzcPolicyGoodsService; import com.qs.serve.modules.tzc.service.TzcPolicyItemService; @@ -82,6 +83,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationService { + private TzcPolicyMapper tzcPolicyMapper; private TzcPolicyService tzcPolicyService; private TzcPolicyItemService tzcPolicyItemService; private TzcPolicyItemMapper tzcPolicyItemMapper; @@ -107,6 +109,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ private ProjectApisProperties projectApisProperties; private final VtbFundFlowService vtbFundFlowService; + @Override public void syncPolicy(Long policyId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -119,9 +122,27 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ } @Override - public void releasePolicyItem(Long policyItemId) { + public void syncExpireRelease() { + SysUser sysUser = new SysUser(); + sysUser.setId("0"); + sysUser.setName("系统执行"); + sysUser.setCode(""); + List ids = tzcPolicyMapper.listExpireItemIds(); + for (Long id : ids) { + try { + releasePolicyItem(id,sysUser); + } catch (Exception e) { + log.error("释放过期费用失败,itemId:{} 原因:{}",id,e.getMessage()); + } + return; + } + } + + @Override + @Transactional + public void releasePolicyItem(Long policyItemId, SysUser user) { TzcPolicyItem policyItem = tzcPolicyItemService.getById(policyItemId); - if(!policyItem.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_3_Finished)){ + if(!policyItem.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_2_SyncSuccess)){ Assert.throwEx("政策项的状态不支持"); } Long policyId = policyItem.getPolicyId(); @@ -129,7 +150,11 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ if(!policy.getPolicyStatus().equals(TzcPolicyStatus.Status_2_PassSuccess)){ Assert.throwEx("政策的状态不支持"); } + //查询已转移金额,金额为正数 BigDecimal usedAmt = tzcPolicyItemMapper.sumPolicyItemTranAmt(policyItem.getId()); + if(policyItem.getUsedAmount().compareTo(usedAmt)!=0){ + Assert.throwEx("政策的已用金额异常"); + } BigDecimal surplusAmt = policyItem.getDiscountMax().subtract(usedAmt); if(surplusAmt.compareTo(BigDecimal.ZERO)>0){ LambdaQueryWrapper tbsLogLqw = new LambdaQueryWrapper<>(); @@ -165,7 +190,13 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ budgetLog.setOptType(optFlag.getCode()); budgetLogService.save(budgetLog); - policyItem.setUsedAmount(policyItem.getDiscountMax()); + //policyItem.setUsedAmount(policyItem.getDiscountMax()); + policyItem.setReleaseAmount(surplusAmt); + policyItem.setReleaseFlag(1); + policyItem.setReleaseTime(LocalDateTime.now()); + policyItem.setReleaseUserId(user.getId()); + policyItem.setReleaseUserCode(user.getCode()); + policyItem.setReleaseUserName(user.getName()); policyItem.setPolicyItemStatus(TzPolicyItemStatus.Status_3_Finished); tzcPolicyItemService.updateById(policyItem); @@ -175,7 +206,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ boolean allFinished = true; for (TzcPolicyItem item : listByPolicyId) { if(!item.getPolicyItemStatus().equals(TzPolicyItemStatus.Status_3_Finished)){ - if (item.getDiscountMax().compareTo(item.getUsedAmount())==0){ + if (item.getDiscountMax().compareTo(item.getUsedAmount())==0||item.getReleaseFlag().equals(1)){ item.setPolicyItemStatus(TzPolicyItemStatus.Status_3_Finished); tzcPolicyItemService.updateById(item); continue; diff --git a/src/main/resources/mapper/tzc/TzcPolicyMapper.xml b/src/main/resources/mapper/tzc/TzcPolicyMapper.xml index 250dbc1f..8ed67274 100644 --- a/src/main/resources/mapper/tzc/TzcPolicyMapper.xml +++ b/src/main/resources/mapper/tzc/TzcPolicyMapper.xml @@ -107,6 +107,21 @@ order by create_time desc + + update tzc_policy set ext_user_id = #{obj.id},ext_user_code=#{obj.code},ext_user_name=#{obj.name}