|
|
@ -77,6 +77,9 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil |
|
|
|
private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper; |
|
|
|
@Autowired |
|
|
|
private RepositoryService repositoryService; |
|
|
|
@Autowired |
|
|
|
private IHuzhouUploadfileinfoService uploadfileinfoService; |
|
|
|
|
|
|
|
// private String[] names ={"可研技术审查报告(初稿)确认","可研技术审查报告(复审稿)确认","可研技术审查报告(终稿)确认","造价评估报告确认","可行性研究报告审批(发改)","合同签订","首付支付","初验阶段","终验阶段","初步设计审批"};
|
|
|
|
private String[] names ={"合同签订","首付支付","初验阶段","终验阶段","初步设计审批"}; |
|
|
|
|
|
|
@ -358,10 +361,6 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil |
|
|
|
throw new EasyException("合同信息不能为空!"); |
|
|
|
} |
|
|
|
contractinfoService.addContractinfo(files,contractList); |
|
|
|
// if (CollectionUtil.isNotEmpty(contractList)) {
|
|
|
|
// contractinfoService.addContractinfo(files, contractList);
|
|
|
|
// throw new EasyException("合同信息不能为空!");
|
|
|
|
// }
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -435,6 +434,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil |
|
|
|
//获取阶段名称
|
|
|
|
HuzhouPlaninfo byId = planinfoService.getById(planinfoid); |
|
|
|
String taskName = StrUtil.trim(byId.getTaskName()); |
|
|
|
log.info("审批阶段为:{}",taskName); |
|
|
|
//立项审批和合同签订 金额输入
|
|
|
|
HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); |
|
|
|
if(approvalMoneyFieldsValue!=null){ |
|
|
@ -462,48 +462,10 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil |
|
|
|
} |
|
|
|
HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo(); |
|
|
|
huzhouPlaninfo.setId(planinfoid); |
|
|
|
// 如果审批同意,则修改合同信息
|
|
|
|
if (StrUtil.isNotBlank(contractinfoList) && "1".equals(flag)) { |
|
|
|
ObjectMapper mapper = new ObjectMapper(); |
|
|
|
// 1.需要更新的合同信息集合
|
|
|
|
List<HuzhouContractinfo> contractList = mapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>() { |
|
|
|
}); |
|
|
|
LambdaQueryWrapper<HuzhouContractinfo> 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<HuzhouContractinfo> dbList = contractinfoService.list(qw); |
|
|
|
// 判断是否更新合同信息
|
|
|
|
updateContractInfo(files, flag, contractinfoList, taskName); |
|
|
|
|
|
|
|
// 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<>(); |
|
|
|
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);
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if("3".equals(flag)){ |
|
|
|
huzhouPlaninfo.setIsfinish("0"); |
|
|
|
planinfoService.updateById(huzhouPlaninfo); |
|
|
@ -608,6 +570,63 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void updateContractInfo(MultipartFile[] files, String flag, String contractinfoList, 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>>() { |
|
|
|
}); |
|
|
|
// 2.封装条件
|
|
|
|
LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>(); |
|
|
|
qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId()) |
|
|
|
.eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); |
|
|
|
// 3.查询数据库中符合条件的合同信息
|
|
|
|
List<HuzhouContractinfo> dbList = contractinfoService.list(qw); |
|
|
|
// 4.先删除原有数据再新增
|
|
|
|
if (dbList.size() > 0) { |
|
|
|
contractinfoService.removeBatchByIds(dbList); |
|
|
|
log.info("删除原有合同信息:{}", dbList); |
|
|
|
} |
|
|
|
String projectid = contractList.get(0).getProjectId(); |
|
|
|
uploadfileinfoService.saveFileAndFileInfo(files, projectid, "4"); |
|
|
|
|
|
|
|
HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectid); |
|
|
|
String superLeader = ""; |
|
|
|
//如果项目信息为空说明是子项目
|
|
|
|
if(huzhouProjectinfo==null){ |
|
|
|
HuzhouSubProjectinfo bySubId = subProjectinfoService.getById(projectid); |
|
|
|
superLeader = bySubId.getSuperLeader(); |
|
|
|
}else { |
|
|
|
superLeader=huzhouProjectinfo.getSuperLeader(); |
|
|
|
} |
|
|
|
//获取上级指导室中文名称
|
|
|
|
SysDict dict = sysDictService.getDictByCode("superLeader", superLeader); |
|
|
|
String dictName = dict.getName(); |
|
|
|
//上级指导室中文名称查询角色有哪些人
|
|
|
|
List<HashMap<String, String>> userDictByRoles = userService.getUserDictByRoles(dictName); |
|
|
|
ArrayList<String> userIdlist = new ArrayList<>(); |
|
|
|
if(userDictByRoles==null||userDictByRoles.size()==0){ |
|
|
|
String error = "任务牵头处室"+dictName+"负责人未找到"; |
|
|
|
throw new EasyException(error); |
|
|
|
} |
|
|
|
for (HashMap<String, String> map:userDictByRoles |
|
|
|
) { |
|
|
|
String userid = map.get("value"); |
|
|
|
userIdlist.add(userid); |
|
|
|
} |
|
|
|
List<HuzhouContractinfo> collectForSave = contractList.stream().map(contract -> { |
|
|
|
contract.setStatus("1"); |
|
|
|
String itemProjectId = contract.getProjectId(); |
|
|
|
String itemTaskName = contract.getTaskName(); |
|
|
|
// 存在合同信息(计划) 则插入的为实际合同信息
|
|
|
|
contract.setFlag(contractinfoService.hasContractinfoByTaskName(itemProjectId, itemTaskName) ? "实际" : "计划"); |
|
|
|
return contract; |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
contractinfoService.saveBatch(collectForSave); |
|
|
|
log.info("新增原有合同信息:{}", collectForSave); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public String getProcessName(String pid) { |
|
|
|
String name = processinfoService.getProcessName(pid); |
|
|
|