Browse Source

feat: 添加取消释放政策

checkBack
Yen 1 year ago
parent
commit
630a897e40
  1. 11
      src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyItemController.java
  2. 1
      src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicyItem.java
  3. 2
      src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyMapper.java
  4. 4
      src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplicationService.java
  5. 62
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java

11
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

1
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;

2
src/main/java/com/qs/serve/modules/tzc/mapper/TzcPolicyMapper.java

@ -43,7 +43,7 @@ public interface TzcPolicyMapper extends BaseMapper<TzcPolicy> {
* 获取需要释放的Item
* @return
*/
List<Long> listExpireItemIds();
List<Long> listExpireItemIds();
/**
* 替换继承人

4
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);
/**
* 创建费用占用结果

62
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<VtbFundFlow>()
.eq(VtbFundFlow::getPolicyItemId,policyItemId)
.eq(VtbFundFlow::getFundType,VtbFundFlowType.Release)
);
//移除Log释放
List<TbsBudgetLog> budgetLogList = budgetLogService.list(new LambdaQueryWrapper<TbsBudgetLog>()
.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<Long> 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)){

Loading…
Cancel
Save