|
@ -33,6 +33,7 @@ import org.activiti.engine.RuntimeService; |
|
|
import org.activiti.engine.TaskService; |
|
|
import org.activiti.engine.TaskService; |
|
|
import org.activiti.engine.runtime.ProcessInstance; |
|
|
import org.activiti.engine.runtime.ProcessInstance; |
|
|
import org.activiti.engine.task.Task; |
|
|
import org.activiti.engine.task.Task; |
|
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
@ -41,6 +42,7 @@ import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
import java.util.function.Function; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
@Service |
|
|
@Service |
|
@ -108,6 +110,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil |
|
|
List<HuzhouContractinfo> contractList) throws IOException { |
|
|
List<HuzhouContractinfo> contractList) throws IOException { |
|
|
// 判断是否为二次上传,是则清楚原有记录
|
|
|
// 判断是否为二次上传,是则清楚原有记录
|
|
|
hasOldContractInfo(contractList); |
|
|
hasOldContractInfo(contractList); |
|
|
|
|
|
|
|
|
//立项审批和合同签订 金额输入
|
|
|
//立项审批和合同签订 金额输入
|
|
|
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); |
|
|
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); |
|
|
if(approvalMoneyFieldsValue!=null){ |
|
|
if(approvalMoneyFieldsValue!=null){ |
|
@ -462,23 +465,43 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil |
|
|
// 如果审批同意,则修改合同信息
|
|
|
// 如果审批同意,则修改合同信息
|
|
|
if (StrUtil.isNotBlank(contractinfoList) && "1".equals(flag)) { |
|
|
if (StrUtil.isNotBlank(contractinfoList) && "1".equals(flag)) { |
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
|
|
// 1.需要更新的合同信息集合
|
|
|
List<HuzhouContractinfo> contractList = mapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() { |
|
|
List<HuzhouContractinfo> contractList = mapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() { |
|
|
}); |
|
|
}); |
|
|
// 1.遍历contractList并针对每个元素更新数据库中的记录
|
|
|
LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>(); |
|
|
for (HuzhouContractinfo contract : contractList) { |
|
|
qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId()) |
|
|
|
|
|
.eq(HuzhouContractinfo::getTaskName, contractList.get(0).getTaskName()) |
|
|
|
|
|
// 根据taskName动态设置Flag
|
|
|
|
|
|
.eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); |
|
|
|
|
|
|
|
|
|
|
|
// 2.查询数据库中符合条件的合同信息
|
|
|
|
|
|
List<HuzhouContractinfo> dbList = contractinfoService.list(qw); |
|
|
|
|
|
|
|
|
|
|
|
// 3. 将dbList转换为Map,方便根据projectId和taskName快速查找
|
|
|
|
|
|
Map<String, HuzhouContractinfo> 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<HuzhouContractinfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
LambdaUpdateWrapper<HuzhouContractinfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
// 2.根据阶段不同执行对应的更新操作
|
|
|
updateWrapper.eq(HuzhouContractinfo::getProjectId, contractinfo.getProjectId()) |
|
|
if (taskName.equals("合同签订")) { |
|
|
.eq(HuzhouContractinfo::getTaskName, contractinfo.getTaskName()) |
|
|
updateWrapper.eq(HuzhouContractinfo::getProjectId, contract.getProjectId()) |
|
|
.eq(HuzhouContractinfo::getPayDate, contractinfo.getPayDate()) |
|
|
.eq(HuzhouContractinfo::getTaskName, contract.getTaskName()) |
|
|
.eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); |
|
|
.eq(HuzhouContractinfo::getFlag, "计划"); |
|
|
contractinfoService.update(contractDb, updateWrapper); |
|
|
} else { |
|
|
log.info("更新合同信息成功!--{}",key); |
|
|
updateWrapper.eq(HuzhouContractinfo::getProjectId, contract.getProjectId()) |
|
|
}else { |
|
|
.eq(HuzhouContractinfo::getTaskName, contract.getTaskName()) |
|
|
//contractinfoService.addContractinfo(files, contractList);
|
|
|
.eq(HuzhouContractinfo::getFlag, "实际"); |
|
|
} |
|
|
} |
|
|
|
|
|
contract.setEditDate(new Date()); |
|
|
|
|
|
contractinfoService.update(contract, updateWrapper); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if("3".equals(flag)){ |
|
|
if("3".equals(flag)){ |
|
|