|
@ -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(); |
|
|