diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java index e52848b..8514111 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java +++ b/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.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -68,6 +69,10 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl getContractProjectPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { Page page = new Page(pageNo, pageSize); @@ -424,7 +429,7 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl contractList, String contractMoneyFieldsValue, String taskName) throws JsonProcessingException { - ObjectMapper contractInfoMapper = new ObjectMapper(); + //ObjectMapper contractInfoMapper = new ObjectMapper(); Boolean flag = true; HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); // 初始化项目资金总额变量 @@ -435,10 +440,6 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl contractList = contractInfoMapper.readValue(contractinfoList, new TypeReference>() { -// }); - // 总金额等于其他金额相加之和 for (HuzhouContractinfo contract : contractList) { Double totalMoney = contract.getTotalMoney(); @@ -466,17 +467,42 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl(){}); 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("总金额与其他金额之和不相等,请重新输入! " ); + throw new EasyException("总金额与其他金额之和不相等,请重新输入! "); + } + } + + // 3.如果 taskName 不等于 "合同签订" 阶段,则实际金额需要小于等于 计划金额 + if ( !"合同签订".equals(taskName)) { + HuzhouContractinfo contractInfo = contractList.get(0); + // 查询合同计划金额 + List 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 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("合同实际金额大于计划金额!请重新填写合同信息 "); + } + } + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java index 3dd7121..cf3e7f9 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java @@ -111,6 +111,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl contractList) throws IOException { + // 判断是否为二次上传,是则清楚原有记录 if (CollectionUtil.isNotEmpty(contractList)){ hasOldContractInfo(contractList); @@ -144,6 +145,17 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl tmp = contractinfoService.list(qw); if (tmp.size()>0){ - // 清楚原有合同信息(实际) + // 清除原有合同信息(实际) LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); deleteWrapper.eq(HuzhouContractinfo::getProjectId, contractinfo.getProjectId()) .eq(HuzhouContractinfo::getTaskName, contractinfo.getTaskName()) @@ -470,7 +474,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl contractList = mapper.readValue(contractinfoList, new TypeReference>() { }); + if (contractinfoService.checkContractAmount(contractList, contractMoneyFieldsValue, taskName)) { + log.info("金额校验成功!"); + } + // 2.封装条件 LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId()) @@ -599,11 +619,11 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl> userDictByRoles = userService.getUserDictByRoles(dictName); ArrayList userIdlist = new ArrayList<>(); - if(userDictByRoles==null||userDictByRoles.size()==0){ - String error = "任务牵头处室"+dictName+"负责人未找到"; + if (userDictByRoles == null || userDictByRoles.size() == 0) { + String error = "任务牵头处室" + dictName + "负责人未找到"; throw new EasyException(error); } - for (HashMap map:userDictByRoles + for (HashMap map : userDictByRoles ) { String userid = map.get("value"); userIdlist.add(userid);