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. 56
      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.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<HuzhouContractinf
private RuntimeService runtimeService;
@Autowired
private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper;
@Autowired
@Lazy
private IHuzhouContractinfoService contractinfoService;
@Override
public Page<HuzhouProjectinfoOV> getContractProjectPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) {
Page page = new Page(pageNo, pageSize);
@ -424,7 +429,7 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
@Override
public Boolean checkContractAmount(List<HuzhouContractinfo> 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<HuzhouContractinf
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();
@ -466,17 +467,42 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
// 2.如果是合同签订阶段则 检查项目资金总额是否与 contractList 的总和相等(第二层校验)
if (StrUtil.isNotBlank(contractMoneyFieldsValue) && taskName.equals("合同签订")){
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("总金额与其他金额之和不相等,请重新输入! " );
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("合同实际金额大于计划金额!请重新填写合同信息 ");
}
}
}
}

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

Loading…
Cancel
Save