Browse Source

合同金额校验补充

master
gjh 2 weeks ago
parent
commit
14169551e8
  1. 40
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java
  2. 58
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

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

@ -30,6 +30,7 @@ import org.activiti.engine.task.Task;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -68,6 +69,10 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
private RuntimeService runtimeService; private RuntimeService runtimeService;
@Autowired @Autowired
private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper; private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper;
@Autowired
@Lazy
private IHuzhouContractinfoService contractinfoService;
@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);
@ -424,7 +429,7 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
@Override @Override
public Boolean checkContractAmount(List<HuzhouContractinfo> contractList, String contractMoneyFieldsValue, String taskName) throws JsonProcessingException { public Boolean checkContractAmount(List<HuzhouContractinfo> contractList, String contractMoneyFieldsValue, String taskName) throws JsonProcessingException {
ObjectMapper contractInfoMapper = new ObjectMapper(); //ObjectMapper contractInfoMapper = new ObjectMapper();
Boolean flag = true; Boolean flag = true;
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney();
// 初始化项目资金总额变量 // 初始化项目资金总额变量
@ -435,10 +440,6 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
double totalContractCityMoney = 0; double totalContractCityMoney = 0;
double totalContractCountyMoney = 0; double totalContractCountyMoney = 0;
// 1.需要更新的合同信息集合
// List<HuzhouContractinfo> contractList = contractInfoMapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() {
// });
// 总金额等于其他金额相加之和 // 总金额等于其他金额相加之和
for (HuzhouContractinfo contract : contractList) { for (HuzhouContractinfo contract : contractList) {
Double totalMoney = contract.getTotalMoney(); Double totalMoney = contract.getTotalMoney();
@ -466,17 +467,42 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
// 2.如果是合同签订阶段则 检查项目资金总额是否与 contractList 的总和相等(第二层校验) // 2.如果是合同签订阶段则 检查项目资金总额是否与 contractList 的总和相等(第二层校验)
if (StrUtil.isNotBlank(contractMoneyFieldsValue) && taskName.equals("合同签订")){ if (StrUtil.isNotBlank(contractMoneyFieldsValue) && taskName.equals("合同签订")) {
ObjectMapper contractMoneyMapper = new ObjectMapper(); ObjectMapper contractMoneyMapper = new ObjectMapper();
huzhouProjectinfoMoney = contractMoneyMapper.readValue(contractMoneyFieldsValue, new TypeReference<HuzhouProjectinfoMoney>(){}); huzhouProjectinfoMoney = contractMoneyMapper.readValue(contractMoneyFieldsValue, new TypeReference<HuzhouProjectinfoMoney>(){});
HuzhouProjectinfoMoney projectMoney = projectinfoMoneyMapper.selectById(huzhouProjectinfoMoney.getId()); HuzhouProjectinfoMoney projectMoney = projectinfoMoneyMapper.selectById(huzhouProjectinfoMoney.getId());
if (Double.compare(projectMoney.getContractTotalMoney(), totalContractTotalMoney) != 0 || if (Double.compare(projectMoney.getContractTotalMoney(), totalContractTotalMoney) != 0 ||
Double.compare(projectMoney.getContractSelfMoney(), totalContractSelfMoney) != 0 || Double.compare(projectMoney.getContractSelfMoney(), totalContractSelfMoney) != 0 ||
Double.compare(projectMoney.getContractCentralMoney(), totalContractCentralMoney) != 0 || Double.compare(projectMoney.getContractCentralMoney(), totalContractCentralMoney) != 0 ||
Double.compare(projectMoney.getContractProvincialMoney(), totalContractProvincialMoney) != 0 || Double.compare(projectMoney.getContractProvincialMoney(), totalContractProvincialMoney) != 0 ||
Double.compare(projectMoney.getContractCityMoney(), totalContractCityMoney) != 0 || Double.compare(projectMoney.getContractCityMoney(), totalContractCityMoney) != 0 ||
Double.compare(projectMoney.getContractCountyMoney(), totalContractCountyMoney) != 0) { Double.compare(projectMoney.getContractCountyMoney(), totalContractCountyMoney) != 0) {
throw new EasyException("总金额与其他金额之和不相等,请重新输入! " ); throw new EasyException("总金额与其他金额之和不相等,请重新输入! ");
}
}
// 3.如果 taskName 不等于 "合同签订" 阶段,则实际金额需要小于等于 计划金额
if ( !"合同签订".equals(taskName)) {
HuzhouContractinfo contractInfo = contractList.get(0);
// 查询合同计划金额
List<HuzhouContractinfo> planContractInfoList = contractinfoService.getContractinfoByprojectId(contractInfo.getProjectId());
// 合同实际金额(contractList) <= 计划金额 (planContractInfoList)
// [{"projectId":"1828610662885105665","payDate":"2025-02-13","taskName":"首付支付","totalMoney":600,"centralMoney":600,"provincialMoney":0,"cityMoney":0,"countyMoney":0,"selfMoney":0}]
if (planContractInfoList.size() > 0){
// 存在计划金额则比较实际金额
Map<String, HuzhouContractinfo> realContractMap = new HashMap<>();
for (HuzhouContractinfo realContract : contractList) {
realContractMap.put(realContract.getTaskName(), realContract);
}
for (HuzhouContractinfo planContractInfo : planContractInfoList) {
HuzhouContractinfo realContract = realContractMap.get(planContractInfo.getTaskName());
if ( realContract.getTotalMoney() >planContractInfo.getTotalMoney() ) {
throw new EasyException("合同实际金额大于计划金额!请重新填写合同信息 ");
}
}
} }
} }

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

@ -111,6 +111,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
public void submitPlanUploadFile(MultipartFile[] files, String planinfoid,String approvalMoneyFieldsValue, public void submitPlanUploadFile(MultipartFile[] files, String planinfoid,String approvalMoneyFieldsValue,
String contractMoneyFieldsValue, String contractMoneyFieldsValue,
List<HuzhouContractinfo> contractList) throws IOException { List<HuzhouContractinfo> contractList) throws IOException {
// 判断是否为二次上传,是则清楚原有记录 // 判断是否为二次上传,是则清楚原有记录
if (CollectionUtil.isNotEmpty(contractList)){ if (CollectionUtil.isNotEmpty(contractList)){
hasOldContractInfo(contractList); hasOldContractInfo(contractList);
@ -144,6 +145,17 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
//根据项目计划id获取项目信息 //根据项目计划id获取项目信息
String taskName = planinfo.getTaskName(); String taskName = planinfo.getTaskName();
taskName=StrUtil.trim(taskName); taskName=StrUtil.trim(taskName);
if (CollectionUtil.isEmpty(contractList) && taskName.equals("合同签订")){
throw new EasyException("合同信息不能为空!");
}
// 校验合同金额
if (CollectionUtil.isNotEmpty(contractList)) {
if (contractinfoService.checkContractAmount(contractList, contractMoneyFieldsValue, taskName)) {
log.info("金额校验成功!");
}
}
String projectId = planinfoService.getById(planinfoid).getProjectId(); String projectId = planinfoService.getById(planinfoid).getProjectId();
HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectId); HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectId);
@ -357,16 +369,8 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
if(list.size()==0){ if(list.size()==0){
projectinfoService.modifyStageById(pid,"6"); projectinfoService.modifyStageById(pid,"6");
} }
// 增加合同信息
if (CollectionUtil.isEmpty(contractList) && taskName.equals("合同签订")){ contractinfoService.addContractinfo(files, contractList);
throw new EasyException("合同信息不能为空!");
}
// 校验合同金额
if (CollectionUtil.isNotEmpty(contractList)) {
if (contractinfoService.checkContractAmount(contractList, contractMoneyFieldsValue, taskName)) {
contractinfoService.addContractinfo(files, contractList);
}
}
} }
/** /**
@ -382,7 +386,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
.eq(HuzhouContractinfo::getFlag,"实际"); .eq(HuzhouContractinfo::getFlag,"实际");
List<HuzhouContractinfo> tmp = contractinfoService.list(qw); List<HuzhouContractinfo> tmp = contractinfoService.list(qw);
if (tmp.size()>0){ if (tmp.size()>0){
// 清原有合同信息(实际) // 清原有合同信息(实际)
LambdaQueryWrapper<HuzhouContractinfo> deleteWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouContractinfo> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(HuzhouContractinfo::getProjectId, contractinfo.getProjectId()) deleteWrapper.eq(HuzhouContractinfo::getProjectId, contractinfo.getProjectId())
.eq(HuzhouContractinfo::getTaskName, contractinfo.getTaskName()) .eq(HuzhouContractinfo::getTaskName, contractinfo.getTaskName())
@ -470,7 +474,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
huzhouPlaninfo.setId(planinfoid); huzhouPlaninfo.setId(planinfoid);
// 判断是否更新合同信息 // 判断是否更新合同信息
updateContractInfo(files, flag, contractinfoList, taskName); updateContractInfo(files, flag, contractinfoList,contractMoneyFieldsValue, taskName);
if("3".equals(flag)){ if("3".equals(flag)){
huzhouPlaninfo.setIsfinish("0"); huzhouPlaninfo.setIsfinish("0");
@ -574,14 +578,30 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
planinfoService.updateById(huzhouPlaninfo1); planinfoService.updateById(huzhouPlaninfo1);
} }
} }
ObjectMapper mapper = new ObjectMapper();
} }
private void updateContractInfo(MultipartFile[] files, String flag, String contractinfoList, String taskName) throws IOException { /**
* 修改合同信息
* @param files
* @param flag
* @param contractinfoList
* @param contractMoneyFieldsValue
* @param taskName
* @throws IOException
*/
private void updateContractInfo(MultipartFile[] files, String flag, String contractinfoList, String contractMoneyFieldsValue, String taskName) throws IOException {
if (StrUtil.isNotBlank(contractinfoList) && "1".equals(flag)) { if (StrUtil.isNotBlank(contractinfoList) && "1".equals(flag)) {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
// 1.需要更新的合同信息集合 // 1.需要更新的合同信息集合
List<HuzhouContractinfo> contractList = mapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() { List<HuzhouContractinfo> contractList = mapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() {
}); });
if (contractinfoService.checkContractAmount(contractList, contractMoneyFieldsValue, taskName)) {
log.info("金额校验成功!");
}
// 2.封装条件 // 2.封装条件
LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>();
qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId()) qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId())
@ -599,11 +619,11 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectid); HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectid);
String superLeader = ""; String superLeader = "";
//如果项目信息为空说明是子项目 //如果项目信息为空说明是子项目
if(huzhouProjectinfo==null){ if (huzhouProjectinfo == null) {
HuzhouSubProjectinfo bySubId = subProjectinfoService.getById(projectid); HuzhouSubProjectinfo bySubId = subProjectinfoService.getById(projectid);
superLeader = bySubId.getSuperLeader(); superLeader = bySubId.getSuperLeader();
}else { } else {
superLeader=huzhouProjectinfo.getSuperLeader(); superLeader = huzhouProjectinfo.getSuperLeader();
} }
//获取上级指导室中文名称 //获取上级指导室中文名称
SysDict dict = sysDictService.getDictByCode("superLeader", superLeader); SysDict dict = sysDictService.getDictByCode("superLeader", superLeader);
@ -611,11 +631,11 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
//上级指导室中文名称查询角色有哪些人 //上级指导室中文名称查询角色有哪些人
List<HashMap<String, String>> userDictByRoles = userService.getUserDictByRoles(dictName); List<HashMap<String, String>> userDictByRoles = userService.getUserDictByRoles(dictName);
ArrayList<String> userIdlist = new ArrayList<>(); ArrayList<String> userIdlist = new ArrayList<>();
if(userDictByRoles==null||userDictByRoles.size()==0){ if (userDictByRoles == null || userDictByRoles.size() == 0) {
String error = "任务牵头处室"+dictName+"负责人未找到"; String error = "任务牵头处室" + dictName + "负责人未找到";
throw new EasyException(error); throw new EasyException(error);
} }
for (HashMap<String, String> map:userDictByRoles for (HashMap<String, String> map : userDictByRoles
) { ) {
String userid = map.get("value"); String userid = map.get("value");
userIdlist.add(userid); userIdlist.add(userid);

Loading…
Cancel
Save