|
|
@ -1,5 +1,6 @@ |
|
|
|
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.update.LambdaUpdateWrapper; |
|
|
|
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.modules.huzhou.dao.HuzhouContractinfoHistoryMapper; |
|
|
|
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.entity.*; |
|
|
|
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.sys.model.SysDict; |
|
|
|
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 org.activiti.engine.RuntimeService; |
|
|
|
import org.activiti.engine.TaskService; |
|
|
@ -61,6 +66,8 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf |
|
|
|
private HuzhouContractinfoHistoryMapper contractinfoHistoryMapper; |
|
|
|
@Autowired |
|
|
|
private RuntimeService runtimeService; |
|
|
|
@Autowired |
|
|
|
private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper; |
|
|
|
@Override |
|
|
|
public Page<HuzhouProjectinfoOV> getContractProjectPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { |
|
|
|
Page page = new Page(pageNo, pageSize); |
|
|
@ -381,6 +388,10 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf |
|
|
|
// 返回合同信息(计划)
|
|
|
|
ContractInfoVo contractInfoVo = new ContractInfoVo(); |
|
|
|
List<HuzhouContractinfo> planList = this.getContractinfoByprojectId(projectId); |
|
|
|
|
|
|
|
planList= planList.stream() |
|
|
|
.filter(item -> item.getTaskName().equals(taskName)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
contractInfoVo.setHasInfo(true); |
|
|
|
contractInfoVo.setPlanList(planList); |
|
|
|
return contractInfoVo; |
|
|
@ -389,7 +400,13 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf |
|
|
|
// 返回合同信息(计划 + 实际)
|
|
|
|
ContractInfoVo contractInfoVo = new ContractInfoVo(); |
|
|
|
List<HuzhouContractinfo> planList = this.getContractinfoByprojectId(projectId); |
|
|
|
planList= planList.stream() |
|
|
|
.filter(item -> item.getTaskName().equals(taskName)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
List<HuzhouContractinfo> realList = this.getRealContractinfoByprojectId(projectId); |
|
|
|
realList= realList.stream() |
|
|
|
.filter(item -> item.getTaskName().equals(taskName)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
contractInfoVo.setHasInfo(true); |
|
|
|
contractInfoVo.setPlanList(planList); |
|
|
|
contractInfoVo.setRealList(realList); |
|
|
@ -402,5 +419,66 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf |
|
|
|
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; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|