|
|
@ -2,23 +2,21 @@ package com.easy.admin.modules.huzhou.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.IdUtil; |
|
|
|
import com.alibaba.excel.util.StringUtils; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
|
import com.easy.admin.auth.service.SysUserService; |
|
|
|
import com.easy.admin.common.core.exception.EasyException; |
|
|
|
import com.easy.admin.modules.huzhou.dao.HuzhouMergesplitinfoMapper; |
|
|
|
import com.easy.admin.modules.huzhou.entity.HuzhouMergesplitinfo; |
|
|
|
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; |
|
|
|
import com.easy.admin.modules.huzhou.entity.WorkFlow; |
|
|
|
import com.easy.admin.modules.huzhou.service.HuzhouMergesplitinfoService; |
|
|
|
import com.easy.admin.modules.huzhou.service.IHuzhouProjectinfoService; |
|
|
|
import com.easy.admin.modules.huzhou.service.IHuzhouUserprojectService; |
|
|
|
import com.easy.admin.modules.huzhou.service.IWorkflowService; |
|
|
|
import com.easy.admin.modules.huzhou.entity.*; |
|
|
|
import com.easy.admin.modules.huzhou.service.*; |
|
|
|
import com.easy.admin.modules.huzhou.vo.HuzhouMergesplitinfoVo; |
|
|
|
import com.easy.admin.sys.model.SysDict; |
|
|
|
import com.easy.admin.sys.service.SysDictService; |
|
|
|
import org.activiti.engine.RuntimeService; |
|
|
|
import org.activiti.engine.TaskService; |
|
|
|
import org.activiti.engine.runtime.ProcessInstance; |
|
|
|
import org.activiti.engine.task.Task; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
@ -27,12 +25,10 @@ import org.springframework.data.domain.Page; |
|
|
|
import org.springframework.data.domain.PageImpl; |
|
|
|
import org.springframework.data.domain.PageRequest; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* (HuzhouMergesplitinfo)表服务实现类 |
|
|
@ -59,6 +55,8 @@ public class HuzhouMergesplitinfoServiceImpl extends ServiceImpl<HuzhouMergespli |
|
|
|
private SysDictService sysDictService; |
|
|
|
@Autowired |
|
|
|
private TaskService taskService; |
|
|
|
@Autowired |
|
|
|
private IHuzhouProcessinfoService processinfoService; |
|
|
|
@Override |
|
|
|
public void submitMergeProject(HuzhouMergesplitinfoVo mergesplitinfoVo) { |
|
|
|
HuzhouProjectinfo huzhouProjectinfo = new HuzhouProjectinfo(); |
|
|
@ -83,12 +81,12 @@ public class HuzhouMergesplitinfoServiceImpl extends ServiceImpl<HuzhouMergespli |
|
|
|
huzhouMergesplitinfo.setMergeOrSplit("merge"); |
|
|
|
huzhouMergesplitinfo.setProjectId(huzhouProjectinfo.getId()); |
|
|
|
projectinfo.setStage("0.1"); |
|
|
|
projectinfoService.updateById(projectinfo); |
|
|
|
// projectinfoService.updateById(projectinfo);
|
|
|
|
mergesplitinfoMapper.insert(huzhouMergesplitinfo); |
|
|
|
} |
|
|
|
//发起流程
|
|
|
|
String superLeader = mergesplitinfoVo.getSuperLeader(); |
|
|
|
WorkFlow workFlow = workflowService.createFlow("fieldChange",huzhouProjectinfo.getId()); |
|
|
|
WorkFlow workFlow = workflowService.createFlow("MergeProject",huzhouProjectinfo.getId()); |
|
|
|
Task task = workFlow.getTask(); |
|
|
|
String taskId = task.getId(); |
|
|
|
String processInstanceId = workFlow.getProcessInstanceId(); |
|
|
@ -110,6 +108,9 @@ public class HuzhouMergesplitinfoServiceImpl extends ServiceImpl<HuzhouMergespli |
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
variables.put("taskLeadingDepartment",strings); |
|
|
|
runtimeService.setVariable(processInstanceId, "taskLeadingDepartment", strings);//设置第三个人变量信息
|
|
|
|
taskService.setVariableLocal(taskId,"approvalStatue","1");//添加审批状态 通过
|
|
|
|
String comment = "同意"; |
|
|
|
taskService.addComment(taskId,processInstanceId,comment);//添加审批意见
|
|
|
|
taskService.complete(taskId, variables); |
|
|
|
} |
|
|
|
|
|
|
@ -126,7 +127,19 @@ public class HuzhouMergesplitinfoServiceImpl extends ServiceImpl<HuzhouMergespli |
|
|
|
LambdaQueryWrapper<HuzhouMergesplitinfo> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(HuzhouMergesplitinfo::getProjectId, projectid); |
|
|
|
queryWrapper.eq(HuzhouMergesplitinfo::getMergeOrSplit, "split"); |
|
|
|
return mergesplitinfoMapper.selectList(queryWrapper); |
|
|
|
List<HuzhouMergesplitinfo> huzhouMergesplitinfos = mergesplitinfoMapper.selectList(queryWrapper); |
|
|
|
if(huzhouMergesplitinfos==null||huzhouMergesplitinfos.size()==0){ |
|
|
|
ArrayList<HuzhouMergesplitinfo> huzhouProjectinfos = new ArrayList<>(); |
|
|
|
LambdaQueryWrapper<HuzhouMergesplitinfo> queryWrapper1 = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper1.eq(HuzhouMergesplitinfo::getId, projectid); |
|
|
|
queryWrapper1.eq(HuzhouMergesplitinfo::getMergeOrSplit, "split"); |
|
|
|
huzhouMergesplitinfos = mergesplitinfoMapper.selectList(queryWrapper1); |
|
|
|
huzhouProjectinfos.add(huzhouMergesplitinfos.get(0)); |
|
|
|
return huzhouProjectinfos; |
|
|
|
}else{ |
|
|
|
return huzhouMergesplitinfos; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -155,7 +168,7 @@ public class HuzhouMergesplitinfoServiceImpl extends ServiceImpl<HuzhouMergespli |
|
|
|
huzhouMergesplitinfo.setMergeOrSplit("split"); |
|
|
|
huzhouMergesplitinfo.setProjectId(huzhouProjectinfo.getId()); |
|
|
|
projectinfo.setStage("0.1"); |
|
|
|
projectinfoService.updateById(projectinfo); |
|
|
|
// projectinfoService.updateById(projectinfo);
|
|
|
|
mergesplitinfoMapper.insert(huzhouMergesplitinfo); |
|
|
|
} |
|
|
|
|
|
|
@ -163,7 +176,7 @@ public class HuzhouMergesplitinfoServiceImpl extends ServiceImpl<HuzhouMergespli |
|
|
|
HuzhouProjectinfo oldProjectinfo = projectinfoService.getById(oldId); |
|
|
|
//发起流程
|
|
|
|
String superLeader = oldProjectinfo.getSuperLeader(); |
|
|
|
WorkFlow workFlow = workflowService.createFlow("fieldChange",oldId); |
|
|
|
WorkFlow workFlow = workflowService.createFlow("SplitProject",oldId); |
|
|
|
Task task = workFlow.getTask(); |
|
|
|
String taskId = task.getId(); |
|
|
|
String processInstanceId = workFlow.getProcessInstanceId(); |
|
|
@ -185,6 +198,96 @@ public class HuzhouMergesplitinfoServiceImpl extends ServiceImpl<HuzhouMergespli |
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
variables.put("taskLeadingDepartment",strings); |
|
|
|
runtimeService.setVariable(processInstanceId, "taskLeadingDepartment", strings);//设置第三个人变量信息
|
|
|
|
taskService.setVariableLocal(taskId,"approvalStatue","1");//添加审批状态 通过
|
|
|
|
String comment = "同意"; |
|
|
|
taskService.addComment(taskId,processInstanceId,comment);//添加审批意见
|
|
|
|
taskService.complete(taskId, variables); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void approvalMergeProject(MultipartFile[] files, String taskId, String flag, String projectid, String comment) { |
|
|
|
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment); |
|
|
|
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); |
|
|
|
queryWrapper.eq(HuzhouProcessinfo::getProcessstatus,"1"); |
|
|
|
List<HuzhouProcessinfo> processinfos = processinfoService.list(queryWrapper); |
|
|
|
String processName = processinfos.get(0).getProcessName(); |
|
|
|
if("3".equals(flag)){ |
|
|
|
processinfoService.modifyStatusByProjectId(projectid,"0",processName); |
|
|
|
return ; |
|
|
|
} |
|
|
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workFlow.getProcessInstanceId()).singleResult(); |
|
|
|
if(processInstance==null&&"1".equals(flag)){ |
|
|
|
//将新项目状态变成0,可见
|
|
|
|
HuzhouProjectinfo newpj = projectinfoService.getById(projectid); |
|
|
|
newpj.setStage("0"); |
|
|
|
projectinfoService.updateById(newpj); |
|
|
|
//查询要合并的项目,将项目状态进行变更
|
|
|
|
LambdaQueryWrapper<HuzhouMergesplitinfo> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
lambdaQueryWrapper.eq(HuzhouMergesplitinfo::getProjectId,projectid); |
|
|
|
lambdaQueryWrapper.eq(HuzhouMergesplitinfo::getMergeOrSplit,"merge"); |
|
|
|
List<HuzhouMergesplitinfo> mergesplitinfos = mergesplitinfoMapper.selectList(lambdaQueryWrapper); |
|
|
|
for (HuzhouMergesplitinfo mergesplitinfo : mergesplitinfos) { |
|
|
|
HuzhouProjectinfo oldpj = projectinfoService.getById(mergesplitinfo.getId()); |
|
|
|
oldpj.setStage("0.1"); |
|
|
|
projectinfoService.updateById(oldpj); |
|
|
|
} |
|
|
|
processinfoService.modifyStatusByProjectId(projectid,"2",processName); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void approvalSplitProject(MultipartFile[] file, String taskId, String flag, String oldprojectid, String comment) { |
|
|
|
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment); |
|
|
|
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(HuzhouProcessinfo::getProjectid,oldprojectid); |
|
|
|
queryWrapper.eq(HuzhouProcessinfo::getProcessstatus,"1"); |
|
|
|
List<HuzhouProcessinfo> processinfos = processinfoService.list(queryWrapper); |
|
|
|
String processName = processinfos.get(0).getProcessName(); |
|
|
|
if("3".equals(flag)){ |
|
|
|
processinfoService.modifyStatusByProjectId(oldprojectid,"0",processName); |
|
|
|
return ; |
|
|
|
} |
|
|
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workFlow.getProcessInstanceId()).singleResult(); |
|
|
|
if(processInstance==null&&"1".equals(flag)){ |
|
|
|
//将旧项目状态变成已停止0.1,可见
|
|
|
|
HuzhouProjectinfo oldpj = projectinfoService.getById(oldprojectid); |
|
|
|
oldpj.setStage("0.1"); |
|
|
|
projectinfoService.updateById(oldpj); |
|
|
|
//查询项目拆分后,新项目的id,改变其状态
|
|
|
|
//新项目id在HuzhouMergesplitinfo projectid字段中
|
|
|
|
LambdaQueryWrapper<HuzhouMergesplitinfo> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
lambdaQueryWrapper.eq(HuzhouMergesplitinfo::getId,oldprojectid); |
|
|
|
lambdaQueryWrapper.eq(HuzhouMergesplitinfo::getMergeOrSplit,"split"); |
|
|
|
List<HuzhouMergesplitinfo> list = mergesplitinfoMapper.selectList(lambdaQueryWrapper); |
|
|
|
for (HuzhouMergesplitinfo mergesplitinfo : list) { |
|
|
|
HuzhouProjectinfo newpj = projectinfoService.getById(mergesplitinfo.getProjectId()); |
|
|
|
newpj.setStage("0"); |
|
|
|
projectinfoService.updateById(newpj); |
|
|
|
} |
|
|
|
processinfoService.modifyStatusByProjectId(oldprojectid,"2",processName); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<HuzhouProjectinfo> getFromDataFromMerge(String projectid) { |
|
|
|
ArrayList<HuzhouProjectinfo> huzhouProjectinfos = new ArrayList<>(); |
|
|
|
HuzhouProjectinfo projectinfo = projectinfoService.getById(projectid); |
|
|
|
huzhouProjectinfos.add(projectinfo); |
|
|
|
return huzhouProjectinfos; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<HuzhouProjectinfo> getFromDataFromSplit(String projectid) { |
|
|
|
LambdaQueryWrapper<HuzhouMergesplitinfo> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
lambdaQueryWrapper.eq(HuzhouMergesplitinfo::getId,projectid); |
|
|
|
lambdaQueryWrapper.eq(HuzhouMergesplitinfo::getMergeOrSplit,"split"); |
|
|
|
List<HuzhouMergesplitinfo> mergesplitinfos = mergesplitinfoMapper.selectList(lambdaQueryWrapper); |
|
|
|
ArrayList<HuzhouProjectinfo> huzhouProjectinfos = new ArrayList<>(); |
|
|
|
for (HuzhouMergesplitinfo mergesplitinfo : mergesplitinfos) { |
|
|
|
HuzhouProjectinfo projectinfo = projectinfoService.getById(mergesplitinfo.getProjectId()); |
|
|
|
huzhouProjectinfos.add(projectinfo); |
|
|
|
} |
|
|
|
return huzhouProjectinfos; |
|
|
|
} |
|
|
|
} |
|
|
|