From 50b3a0142de2b67e110ca64fb06c22c3ac70e2b5 Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Tue, 11 Feb 2025 17:33:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=88=E5=90=8C=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HuzhouFieldchangehistoryServiceImpl.java | 13 +++-- .../impl/HuzhouPlaninfofileServiceImpl.java | 51 ++++++++++++++----- 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouFieldchangehistoryServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouFieldchangehistoryServiceImpl.java index e7516ad..4c8498b 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouFieldchangehistoryServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouFieldchangehistoryServiceImpl.java @@ -64,7 +64,10 @@ public class HuzhouFieldchangehistoryServiceImpl extends ServiceImpl contractList) throws IOException { // 判断是否为二次上传,是则清楚原有记录 hasOldContractInfo(contractList); + //立项审批和合同签订 金额输入 HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); if(approvalMoneyFieldsValue!=null){ @@ -462,23 +465,43 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl contractList = mapper.readValue(contractinfoList, new TypeReference>() { }); - // 1.遍历contractList并针对每个元素更新数据库中的记录 - for (HuzhouContractinfo contract : contractList) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - // 2.根据阶段不同执行对应的更新操作 - if (taskName.equals("合同签订")) { - updateWrapper.eq(HuzhouContractinfo::getProjectId, contract.getProjectId()) - .eq(HuzhouContractinfo::getTaskName, contract.getTaskName()) - .eq(HuzhouContractinfo::getFlag, "计划"); - } else { - updateWrapper.eq(HuzhouContractinfo::getProjectId, contract.getProjectId()) - .eq(HuzhouContractinfo::getTaskName, contract.getTaskName()) - .eq(HuzhouContractinfo::getFlag, "实际"); + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId()) + .eq(HuzhouContractinfo::getTaskName, contractList.get(0).getTaskName()) + // 根据taskName动态设置Flag + .eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); + + // 2.查询数据库中符合条件的合同信息 + List dbList = contractinfoService.list(qw); + + // 3. 将dbList转换为Map,方便根据projectId和taskName快速查找 + Map dbMap = dbList.stream() + .collect(Collectors.toMap(h -> h.getProjectId() + "_" + h.getTaskName()+ "_" + h.getPayDate().toString(), + Function.identity(), + (oldValue, newValue) -> newValue)); + // 4.进行更新contractList 的属性更新到dbList中 + for (HuzhouContractinfo contractinfo : contractList) { + String key = contractinfo.getProjectId() + "_" + contractinfo.getTaskName()+ "_" +contractinfo.getPayDate().toString(); + HuzhouContractinfo contractDb = dbMap.get(key); + + if (contractDb != null) { + contractDb.setEditDate(new Date()); + BeanUtils.copyProperties(contractinfo, contractDb); + // 更新数据库中的记录 + // 创建更新条件,基于projectId和taskName更新 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(HuzhouContractinfo::getProjectId, contractinfo.getProjectId()) + .eq(HuzhouContractinfo::getTaskName, contractinfo.getTaskName()) + .eq(HuzhouContractinfo::getPayDate, contractinfo.getPayDate()) + .eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); + contractinfoService.update(contractDb, updateWrapper); + log.info("更新合同信息成功!--{}",key); + }else { + //contractinfoService.addContractinfo(files, contractList); } - contract.setEditDate(new Date()); - contractinfoService.update(contract, updateWrapper); } } if("3".equals(flag)){