Browse Source

删除多余计划金额bug修复和 计划时间修改

master
gjh 2 weeks ago
parent
commit
a4dbba25de
  1. 63
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java
  2. 20
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

63
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java

@ -31,6 +31,7 @@ import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricTaskInstance;
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.apache.commons.lang3.SerializationUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
@ -535,7 +536,11 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
public void removeByProjectId(String projectid) { public void removeByProjectId(String projectid) {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"0"); // 使用 apply 方法加入自定义 SQL 语句进行 taskLevel 的数值比较
//queryWrapper.apply("CAST(task_level AS DECIMAL) >= 2");
queryWrapper.apply("CAST(task_level AS DECIMAL(10,2)) >= 2");
// 添加 isfinish 条件,要求 isfinish 的值为 "0", "1", 或 "2"
queryWrapper.in(HuzhouPlaninfo::getIsfinish, "0", "1", "2");
this.remove(queryWrapper); this.remove(queryWrapper);
} }
@ -837,20 +842,61 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
HashMap<String, Object> hashMap = getPlanInfoListFromFile(multipartFile, projectid); HashMap<String, Object> hashMap = getPlanInfoListFromFile(multipartFile, projectid);
//res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常 //res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常
boolean res = (boolean) hashMap.get("res"); boolean res = (boolean) hashMap.get("res");
if(!res){ if (!res) {
throw new EasyException((String)hashMap.get("msg")); throw new EasyException((String) hashMap.get("msg"));
} }
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr"); // List<HuzhouPlaninfo> excelList =(ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
String isAllow = IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList); List<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
if(!"1".equals(isAllow)){ List<HuzhouPlaninfo> excelList = SerializationUtils.clone((ArrayList<HuzhouPlaninfo>) hashMap.get("arr"));
throw new EasyException(isAllow); String isAllow = IsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList);
if (!"1".equals(isAllow)) {
throw new EasyException(isAllow);
} }
//修改项目计划会重新修改项目阶段类型 //修改项目计划会重新修改项目阶段类型
projectinfoService.modifyStageById(projectid,"4"); projectinfoService.modifyStageById(projectid,"4");
//保存历史记录 //保存历史记录
List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid); List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid);
planinfoHistoryService.savePlanInfoToHistory(planinfoHistory); planinfoHistoryService.savePlanInfoToHistory(planinfoHistory);
//删除未开始的项目计划,保零六已完成或审批中的 // 获取审批中和已完成的计划列表进行更新操作
// 计算差集
Set<String> keysFromHuzhouPlaninfoArrayList = huzhouPlaninfoArrayList.stream()
.map(item ->item.getProjectId() + "-" + item.getTaskLevel())
.collect(Collectors.toSet());
List<HuzhouPlaninfo> tmpDifList = planinfoHistory.stream()
.filter(item -> !keysFromHuzhouPlaninfoArrayList.contains(item.getProjectId() + "-" + item.getTaskLevel()))
.filter(item -> {
try {
// 过滤条件:只保留 taskLevel 大于 2 的记录
BigDecimal taskLevel = new BigDecimal(item.getTaskLevel());
return taskLevel.compareTo(BigDecimal.valueOf(2)) >= 0;
} catch (NumberFormatException e) {
// 如果转换失败,可以选择处理异常或忽略这条记录
throw new EasyException("无法将 taskLevel 转换为数字: " + item.getTaskLevel());
}
})
.collect(Collectors.toList());
// isFinish为0表示未开始,1审批中,2表示已完成 scheduledStartTime scheduledEndTime
Map<String, HuzhouPlaninfo> excelMap = excelList.stream()
.collect(Collectors.toMap(
item -> item.getTaskLevel(),
item -> item
));
// 遍历 tmpDifList,并根据 projectId 和 taskLevel 查找对应的 excelItem
tmpDifList.forEach(tmpItem -> {
String key = tmpItem.getTaskLevel();
Optional.ofNullable(excelMap.get(key)).ifPresent(excelItem -> {
tmpItem.setScheduledEndTime(excelItem.getScheduledEndTime());
tmpItem.setScheduledStartTime(excelItem.getScheduledStartTime());
});
});
huzhouPlaninfoArrayList.addAll(tmpDifList);
for (HuzhouPlaninfo huzhouPlaninfo : huzhouPlaninfoArrayList) {
log.info("修改后的计划信息为{}",huzhouPlaninfo.getTaskLevel());
}
//删除未开始 已完成 和审批中且taskLevel>2的项目
removeByProjectId(projectid); removeByProjectId(projectid);
//将之前的分组id修改为最新的分组id //将之前的分组id修改为最新的分组id
LambdaUpdateWrapper<HuzhouPlaninfo> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<HuzhouPlaninfo> wrapper = new LambdaUpdateWrapper<>();
@ -859,6 +905,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
update(null,wrapper); update(null,wrapper);
//批量新增 //批量新增
saveBatch(huzhouPlaninfoArrayList); saveBatch(huzhouPlaninfoArrayList);
//创建流程
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid); WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
Task task = workFlow.getTask(); Task task = workFlow.getTask();
String processInstanceId = workFlow.getProcessInstanceId(); String processInstanceId = workFlow.getProcessInstanceId();

20
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

@ -112,9 +112,9 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
String contractMoneyFieldsValue, String contractMoneyFieldsValue,
List<HuzhouContractinfo> contractList) throws IOException { List<HuzhouContractinfo> contractList) throws IOException {
// 判断是否为二次上传,是则清原有记录 // 判断是否为二次上传,是则清原有记录
if (CollectionUtil.isNotEmpty(contractList)){ if (CollectionUtil.isNotEmpty(contractList)){
hasOldContractInfo(contractList); hasOldContractInfo(contractList,planinfoid);
} }
//立项审批和合同签订 金额输入 //立项审批和合同签订 金额输入
@ -379,19 +379,20 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
* 判断是否为二次上传合同信息 * 判断是否为二次上传合同信息
* @param contractList 合同信息集合 * @param contractList 合同信息集合
*/ */
private void hasOldContractInfo(List<HuzhouContractinfo> contractList) { private void hasOldContractInfo(List<HuzhouContractinfo> contractList,String planinfoid) {
// 获取合同信息集合中的第一个元素即可判断是否为二次提交 // 获取合同信息集合中的第一个元素即可判断是否为二次提交
HuzhouContractinfo contractinfo = contractList.get(0); //HuzhouContractinfo contractinfo = contractList.get(0);
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);
LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>();
qw.eq(HuzhouContractinfo::getProjectId,contractinfo.getProjectId()) qw.eq(HuzhouContractinfo::getProjectId,planinfo.getProjectId())
.eq(HuzhouContractinfo::getTaskName,contractinfo.getTaskName()) .eq(HuzhouContractinfo::getTaskName,planinfo.getTaskName())
.eq(HuzhouContractinfo::getFlag,"实际"); .eq(HuzhouContractinfo::getFlag,"实际");
List<HuzhouContractinfo> tmp = contractinfoService.list(qw); List<HuzhouContractinfo> tmp = contractinfoService.list(qw);
if (tmp.size()>0){ if (tmp.size()>0){
// 清除原有合同信息(实际) // 清除原有合同信息(实际)
LambdaQueryWrapper<HuzhouContractinfo> deleteWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouContractinfo> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(HuzhouContractinfo::getProjectId, contractinfo.getProjectId()) deleteWrapper.eq(HuzhouContractinfo::getProjectId, planinfo.getProjectId())
.eq(HuzhouContractinfo::getTaskName, contractinfo.getTaskName()) .eq(HuzhouContractinfo::getTaskName, planinfo.getTaskName())
.eq(HuzhouContractinfo::getFlag,"实际"); .eq(HuzhouContractinfo::getFlag,"实际");
boolean success = contractinfoService.remove(deleteWrapper); boolean success = contractinfoService.remove(deleteWrapper);
if(success){ if(success){
@ -607,7 +608,8 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
// 2.封装条件 // 2.封装条件
LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>();
qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId()) qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId())
.eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); .eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际")
.eq(HuzhouContractinfo::getFlag, taskName);
// 3.查询数据库中符合条件的合同信息 // 3.查询数据库中符合条件的合同信息
List<HuzhouContractinfo> dbList = contractinfoService.list(qw); List<HuzhouContractinfo> dbList = contractinfoService.list(qw);
// 4.先删除原有数据再新增 // 4.先删除原有数据再新增

Loading…
Cancel
Save