Browse Source

补充校验合同金额逻辑和判空

ai_dev
gjh 4 weeks ago
parent
commit
533614ee78
  1. 65
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java
  2. 11
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouContractinfoService.java
  3. 78
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java
  4. 14
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

65
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java

@ -1,5 +1,6 @@
package com.easy.admin.modules.huzhou.controller; package com.easy.admin.modules.huzhou.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.easy.admin.auth.model.SysUser; import com.easy.admin.auth.model.SysUser;
import com.easy.admin.common.api.vo.Result; import com.easy.admin.common.api.vo.Result;
@ -52,31 +53,29 @@ public class TestController {
} }
/** /**
* 金额校验 * 金额校验测试
* @param contractinfoList * @param contractinfoList
* @return * @return
* @throws JsonProcessingException * @throws JsonProcessingException
*/ */
@PostMapping("/checkAmount") @PostMapping("/checkContractAmount")
public Result<?> checkAmount( @RequestParam(value = "contractinfoList", required = false) String contractinfoList, public Result<?> checkAmount( @RequestParam(value = "contractinfoList", required = false) String contractinfoList,
@RequestParam(value = "contractMoneyFieldsValue", required = false) String contractMoneyFieldsValue) throws JsonProcessingException { @RequestParam(value = "contractMoneyFieldsValue", required = false) String contractMoneyFieldsValue,
ObjectMapper mapper = new ObjectMapper(); @RequestParam(value = "taskName", required = false)String taskName) throws JsonProcessingException {
ObjectMapper contractInfoMapper = new ObjectMapper();
Boolean flag = true;
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney();
// 初始化项目资金总额变量
double totalContractTotalMoney = 0;
double totalContractSelfMoney = 0;
double totalContractCentralMoney = 0;
double totalContractProvincialMoney = 0;
double totalContractCityMoney = 0;
double totalContractCountyMoney = 0;
// 1.需要更新的合同信息集合 // 1.需要更新的合同信息集合
List<HuzhouContractinfo> contractList = mapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() { List<HuzhouContractinfo> contractList = contractInfoMapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() {
}); });
Boolean flag = false;
String msg = "总金额与其他金额之和不相等,请重新输入!";
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney();
ObjectMapper mapper2 = new ObjectMapper();
huzhouProjectinfoMoney = mapper2.readValue(contractMoneyFieldsValue, new TypeReference<HuzhouProjectinfoMoney>(){});
HuzhouProjectinfoMoney projectMoney = projectinfoMoneyMapper.selectById(huzhouProjectinfoMoney.getId());
Double contractTotalMoney = projectMoney.getContractTotalMoney();
Double contractSelfMoney = projectMoney.getContractSelfMoney();
Double contractCentralMoney = projectMoney.getContractCentralMoney();
Double contractProvincialMoney = projectMoney.getContractProvincialMoney();
Double contractCityMoney = projectMoney.getContractCityMoney();
Double contractCountyMoney = projectMoney.getContractCountyMoney();
Double approvalProvincialMoney = projectMoney.getApprovalProvincialMoney();
// 总金额等于其他金额相加之和 // 总金额等于其他金额相加之和
for (HuzhouContractinfo contract : contractList) { for (HuzhouContractinfo contract : contractList) {
@ -86,19 +85,39 @@ public class TestController {
Double cityMoney = contract.getCityMoney() != null ? contract.getCityMoney() : 0.0; Double cityMoney = contract.getCityMoney() != null ? contract.getCityMoney() : 0.0;
Double countyMoney = contract.getCountyMoney() != null ? contract.getCountyMoney() : 0.0; Double countyMoney = contract.getCountyMoney() != null ? contract.getCountyMoney() : 0.0;
Double selfMoney = contract.getSelfMoney() != null ? contract.getSelfMoney() : 0.0; Double selfMoney = contract.getSelfMoney() != null ? contract.getSelfMoney() : 0.0;
// 计算其他资金来源金额之和 // 计算其他资金来源金额之和
double sumOfOtherMoneys = centralMoney + provincialMoney + cityMoney + countyMoney + selfMoney; double sumOfOtherMoneys = centralMoney + provincialMoney + cityMoney + countyMoney + selfMoney;
// 检查总金额是否等于其他资金来源金额之和 // 检查总金额是否等于其他资金来源金额之和
if (Double.compare(totalMoney, sumOfOtherMoneys) != 0) { if (Double.compare(totalMoney, sumOfOtherMoneys) != 0) {
// 可以在这里抛出异常或者记录错误信息
throw new EasyException("总金额与其他金额之和不相等,请重新输入! " ); throw new EasyException("总金额与其他金额之和不相等,请重新输入! " );
}else {
flag = true;
//msg = "总金额与其他金额之和相等,校验通过!" ;
} }
// 累加各项资金总额
totalContractTotalMoney += totalMoney;
totalContractSelfMoney += selfMoney;
totalContractCentralMoney += centralMoney;
totalContractProvincialMoney += provincialMoney;
totalContractCityMoney += cityMoney;
totalContractCountyMoney += countyMoney;
} }
// 2.如果是合同签订阶段则 检查项目资金总额是否与 contractList 的总和相等(第二层校验)
if (StrUtil.isNotBlank(contractMoneyFieldsValue) && taskName.equals("合同签订")){
ObjectMapper contractMoneyMapper = new ObjectMapper();
huzhouProjectinfoMoney = contractMoneyMapper.readValue(contractMoneyFieldsValue, new TypeReference<HuzhouProjectinfoMoney>(){});
HuzhouProjectinfoMoney projectMoney = projectinfoMoneyMapper.selectById(huzhouProjectinfoMoney.getId());
if (Double.compare(projectMoney.getContractTotalMoney(), totalContractTotalMoney) != 0 ||
Double.compare(projectMoney.getContractSelfMoney(), totalContractSelfMoney) != 0 ||
Double.compare(projectMoney.getContractCentralMoney(), totalContractCentralMoney) != 0 ||
Double.compare(projectMoney.getContractProvincialMoney(), totalContractProvincialMoney) != 0 ||
Double.compare(projectMoney.getContractCityMoney(), totalContractCityMoney) != 0 ||
Double.compare(projectMoney.getContractCountyMoney(), totalContractCountyMoney) != 0) {
throw new EasyException("总金额与其他金额之和不相等,请重新输入! " );
}
}
return Result.OK(flag); return Result.OK(flag);
} }
} }

11
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouContractinfoService.java

@ -8,6 +8,7 @@ import com.easy.admin.modules.huzhou.entity.HuzhouRegulationlab;
import com.easy.admin.modules.huzhou.vo.ContractInfoVo; import com.easy.admin.modules.huzhou.vo.ContractInfoVo;
import com.easy.admin.modules.huzhou.vo.HuzhouContractinfoOV; import com.easy.admin.modules.huzhou.vo.HuzhouContractinfoOV;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV; import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -42,4 +43,14 @@ public interface IHuzhouContractinfoService extends IService<HuzhouContractinfo>
Boolean hasContractinfoByTaskName(String projectid, String taskName); Boolean hasContractinfoByTaskName(String projectid, String taskName);
ContractInfoVo getContractinfoByTaskName(String projectid, String taskName); ContractInfoVo getContractinfoByTaskName(String projectid, String taskName);
/**
* 校验合同金额
* @param contractList
* @param contractMoneyFieldsValue
* @param taskName
* @return
* @throws JsonProcessingException
*/
Boolean checkContractAmount(List<HuzhouContractinfo> contractList, String contractMoneyFieldsValue, String taskName) throws JsonProcessingException;
} }

78
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java

@ -1,5 +1,6 @@
package com.easy.admin.modules.huzhou.service.impl; package com.easy.admin.modules.huzhou.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -9,6 +10,7 @@ import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.common.util.CommonUtils; import com.easy.admin.common.util.CommonUtils;
import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoHistoryMapper; import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoHistoryMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouProjectinfoMoneyMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper;
import com.easy.admin.modules.huzhou.entity.*; import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.service.*; import com.easy.admin.modules.huzhou.service.*;
@ -17,6 +19,9 @@ import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.easy.admin.modules.huzhou.vo.ProjectInfoAuthSelect; import com.easy.admin.modules.huzhou.vo.ProjectInfoAuthSelect;
import com.easy.admin.sys.model.SysDict; import com.easy.admin.sys.model.SysDict;
import com.easy.admin.sys.service.SysDictService; import com.easy.admin.sys.service.SysDictService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
@ -61,6 +66,8 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
private HuzhouContractinfoHistoryMapper contractinfoHistoryMapper; private HuzhouContractinfoHistoryMapper contractinfoHistoryMapper;
@Autowired @Autowired
private RuntimeService runtimeService; private RuntimeService runtimeService;
@Autowired
private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper;
@Override @Override
public Page<HuzhouProjectinfoOV> getContractProjectPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { public Page<HuzhouProjectinfoOV> getContractProjectPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) {
Page page = new Page(pageNo, pageSize); Page page = new Page(pageNo, pageSize);
@ -381,6 +388,10 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
// 返回合同信息(计划) // 返回合同信息(计划)
ContractInfoVo contractInfoVo = new ContractInfoVo(); ContractInfoVo contractInfoVo = new ContractInfoVo();
List<HuzhouContractinfo> planList = this.getContractinfoByprojectId(projectId); List<HuzhouContractinfo> planList = this.getContractinfoByprojectId(projectId);
planList= planList.stream()
.filter(item -> item.getTaskName().equals(taskName))
.collect(Collectors.toList());
contractInfoVo.setHasInfo(true); contractInfoVo.setHasInfo(true);
contractInfoVo.setPlanList(planList); contractInfoVo.setPlanList(planList);
return contractInfoVo; return contractInfoVo;
@ -389,7 +400,13 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
// 返回合同信息(计划 + 实际) // 返回合同信息(计划 + 实际)
ContractInfoVo contractInfoVo = new ContractInfoVo(); ContractInfoVo contractInfoVo = new ContractInfoVo();
List<HuzhouContractinfo> planList = this.getContractinfoByprojectId(projectId); List<HuzhouContractinfo> planList = this.getContractinfoByprojectId(projectId);
planList= planList.stream()
.filter(item -> item.getTaskName().equals(taskName))
.collect(Collectors.toList());
List<HuzhouContractinfo> realList = this.getRealContractinfoByprojectId(projectId); List<HuzhouContractinfo> realList = this.getRealContractinfoByprojectId(projectId);
realList= realList.stream()
.filter(item -> item.getTaskName().equals(taskName))
.collect(Collectors.toList());
contractInfoVo.setHasInfo(true); contractInfoVo.setHasInfo(true);
contractInfoVo.setPlanList(planList); contractInfoVo.setPlanList(planList);
contractInfoVo.setRealList(realList); contractInfoVo.setRealList(realList);
@ -402,5 +419,66 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
return contractInfoVo; return contractInfoVo;
} }
@Override
public Boolean checkContractAmount(List<HuzhouContractinfo> contractList, String contractMoneyFieldsValue, String taskName) throws JsonProcessingException {
ObjectMapper contractInfoMapper = new ObjectMapper();
Boolean flag = true;
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney();
// 初始化项目资金总额变量
double totalContractTotalMoney = 0;
double totalContractSelfMoney = 0;
double totalContractCentralMoney = 0;
double totalContractProvincialMoney = 0;
double totalContractCityMoney = 0;
double totalContractCountyMoney = 0;
// 1.需要更新的合同信息集合
// List<HuzhouContractinfo> contractList = contractInfoMapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() {
// });
// 总金额等于其他金额相加之和
for (HuzhouContractinfo contract : contractList) {
Double totalMoney = contract.getTotalMoney();
Double centralMoney = contract.getCentralMoney() != null ? contract.getCentralMoney() : 0.0;
Double provincialMoney = contract.getProvincialMoney() != null ? contract.getProvincialMoney() : 0.0;
Double cityMoney = contract.getCityMoney() != null ? contract.getCityMoney() : 0.0;
Double countyMoney = contract.getCountyMoney() != null ? contract.getCountyMoney() : 0.0;
Double selfMoney = contract.getSelfMoney() != null ? contract.getSelfMoney() : 0.0;
// 计算其他资金来源金额之和
double sumOfOtherMoneys = centralMoney + provincialMoney + cityMoney + countyMoney + selfMoney;
// 检查总金额是否等于其他资金来源金额之和
if (Double.compare(totalMoney, sumOfOtherMoneys) != 0) {
throw new EasyException("总金额与其他金额之和不相等,请重新输入! " );
}
// 累加各项资金总额
totalContractTotalMoney += totalMoney;
totalContractSelfMoney += selfMoney;
totalContractCentralMoney += centralMoney;
totalContractProvincialMoney += provincialMoney;
totalContractCityMoney += cityMoney;
totalContractCountyMoney += countyMoney;
}
// 2.如果是合同签订阶段则 检查项目资金总额是否与 contractList 的总和相等(第二层校验)
if (StrUtil.isNotBlank(contractMoneyFieldsValue) && taskName.equals("合同签订")){
ObjectMapper contractMoneyMapper = new ObjectMapper();
huzhouProjectinfoMoney = contractMoneyMapper.readValue(contractMoneyFieldsValue, new TypeReference<HuzhouProjectinfoMoney>(){});
HuzhouProjectinfoMoney projectMoney = projectinfoMoneyMapper.selectById(huzhouProjectinfoMoney.getId());
if (Double.compare(projectMoney.getContractTotalMoney(), totalContractTotalMoney) != 0 ||
Double.compare(projectMoney.getContractSelfMoney(), totalContractSelfMoney) != 0 ||
Double.compare(projectMoney.getContractCentralMoney(), totalContractCentralMoney) != 0 ||
Double.compare(projectMoney.getContractProvincialMoney(), totalContractProvincialMoney) != 0 ||
Double.compare(projectMoney.getContractCityMoney(), totalContractCityMoney) != 0 ||
Double.compare(projectMoney.getContractCountyMoney(), totalContractCountyMoney) != 0) {
throw new EasyException("总金额与其他金额之和不相等,请重新输入! " );
}
}
return flag;
}
} }

14
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

@ -112,7 +112,9 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
String contractMoneyFieldsValue, String contractMoneyFieldsValue,
List<HuzhouContractinfo> contractList) throws IOException { List<HuzhouContractinfo> contractList) throws IOException {
// 判断是否为二次上传,是则清楚原有记录 // 判断是否为二次上传,是则清楚原有记录
hasOldContractInfo(contractList); if (CollectionUtil.isNotEmpty(contractList)){
hasOldContractInfo(contractList);
}
//立项审批和合同签订 金额输入 //立项审批和合同签订 金额输入
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney();
@ -356,11 +358,15 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
projectinfoService.modifyStageById(pid,"6"); projectinfoService.modifyStageById(pid,"6");
} }
// 1.校验修改 2插入:huzhou_contractinfo表 if (CollectionUtil.isEmpty(contractList) && taskName.equals("合同签订")){
if (CollectionUtil.isEmpty(contractList)){
throw new EasyException("合同信息不能为空!"); throw new EasyException("合同信息不能为空!");
} }
contractinfoService.addContractinfo(files,contractList); // 校验合同金额
if (CollectionUtil.isNotEmpty(contractList)) {
if (contractinfoService.checkContractAmount(contractList, contractMoneyFieldsValue, taskName)) {
contractinfoService.addContractinfo(files, contractList);
}
}
} }
/** /**

Loading…
Cancel
Save