|
|
@ -31,6 +31,7 @@ import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -82,6 +83,9 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl<HuzhouField |
|
|
|
String projectid, |
|
|
|
String fieldValue, |
|
|
|
HuzhouProjectinfo newProjectinfo) throws Exception { |
|
|
|
if (fieldValue.equals("Money")){ |
|
|
|
checkMoney(newProjectinfo); |
|
|
|
} |
|
|
|
String id = UUID.randomUUID().toString().replace("-",""); |
|
|
|
String groupid = UUID.randomUUID().toString().replace("-",""); |
|
|
|
String newValue = ""; |
|
|
@ -315,6 +319,60 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl<HuzhouField |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void checkMoney(HuzhouProjectinfo projectInfo) { |
|
|
|
|
|
|
|
BigDecimal totalMoney = Optional.ofNullable(projectInfo.getTotalMoney()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal centralMoney = Optional.ofNullable(projectInfo.getCentralMoney()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal provincialMoney = Optional.ofNullable(projectInfo.getProvincialMoney()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal cityMoney = Optional.ofNullable(projectInfo.getCityMoney()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal countyMoney = Optional.ofNullable(projectInfo.getCountyMoney()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal selfMoney = Optional.ofNullable(projectInfo.getSelfMoney()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal payamount2023Money = Optional.ofNullable(projectInfo.getPayamount2023Money()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal payamount2024Money = Optional.ofNullable(projectInfo.getPayamount2024Money()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
BigDecimal payamount2025Money = Optional.ofNullable(projectInfo.getPayamount2025Money()) |
|
|
|
.map(BigDecimal::new) |
|
|
|
.orElse(null); |
|
|
|
|
|
|
|
// 检查是否有任何一个金额为null,如果是,则不进行校验
|
|
|
|
if (totalMoney == null || centralMoney == null || provincialMoney == null || |
|
|
|
cityMoney == null || countyMoney == null || selfMoney == null || |
|
|
|
payamount2023Money == null || payamount2024Money == null || payamount2025Money == null) { |
|
|
|
// 如果有任何一个金额为null,则直接返回,不进行校验
|
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 计算总和并进行比较
|
|
|
|
BigDecimal sum1 = centralMoney.add(provincialMoney).add(cityMoney).add(countyMoney).add(selfMoney); |
|
|
|
|
|
|
|
BigDecimal sum2 = payamount2023Money.add(payamount2024Money).add(payamount2025Money); |
|
|
|
|
|
|
|
if (totalMoney.compareTo(sum1) != 0) { |
|
|
|
throw new EasyException("项目总金额与各个阶段的金额之和不相等"); |
|
|
|
} |
|
|
|
if (totalMoney.compareTo(sum2) != 0) { |
|
|
|
throw new EasyException("项目总金额与各个年份所需支付金额之和不相等"); |
|
|
|
} |
|
|
|
log.info("金额校验成功!"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public List<HuzhouUploadfileinfo> getFieldchangeFileinfoList(String fieldChangeGroupid) { |
|
|
|
LambdaQueryWrapper<HuzhouUploadfileinfo> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
@ -328,6 +386,9 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl<HuzhouField |
|
|
|
|
|
|
|
@Override |
|
|
|
public void approvalFieldchange(MultipartFile[] file, String taskId, String flag, String fieldChangeGroupid, String comment, String isEdit, HuzhouProjectinfo newProjectinfo) throws Exception { |
|
|
|
//金额校验
|
|
|
|
checkMoney(newProjectinfo); |
|
|
|
|
|
|
|
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment); |
|
|
|
List<HuzhouFieldchangehistory> list = getFieldchangeByGroupid(fieldChangeGroupid); |
|
|
|
if ("1".equals(isEdit) && "1".equals(flag)) { |
|
|
|