From 9e6f6d802448aa0b6acf5955027e3d6f5beaa11d Mon Sep 17 00:00:00 2001 From: zhouhaibin Date: Thu, 27 Jun 2024 11:15:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=81=94=E5=90=88=E6=8A=80?= =?UTF-8?q?=E6=9C=AF=E5=AE=A1=E6=9F=A5=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/CustomUserEntityManager.java | 13 +- .../easy/admin/auth/dao/SysUserMapper.java | 1 + .../admin/auth/dao/mapping/SysUserMapper.xml | 20 +++ .../admin/auth/service/SysUserService.java | 2 +- .../auth/service/impl/SysUserServiceImpl.java | 6 + .../controller/HuzhouProjectController.java | 12 ++ .../HuzhouUploadfileinfoController.java | 20 +++ .../huzhou/controller/WorkflowController.java | 70 ++++++-- .../huzhou/listener/ResubmitListener.java | 67 ++++++++ .../listener/UserTaskCompleteListener.java | 36 ++++ .../service/IHuzhouProjectinfoService.java | 1 + .../service/IHuzhouUploadfileinfoService.java | 3 + .../impl/HuzhouPlaninfofileServiceImpl.java | 13 +- .../impl/HuzhouProjectinfoServiceImpl.java | 16 ++ .../impl/HuzhouUploadfileinfoServiceImpl.java | 156 +++++++++++++++++- .../service/impl/WorkflowServiceImpl.java | 3 +- .../huzhou/vo/HuzhouProjectinfoOV.java | 1 + 17 files changed, 417 insertions(+), 23 deletions(-) create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ResubmitListener.java create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/UserTaskCompleteListener.java diff --git a/easy-activiti/src/main/java/com/easy/admin/activiti/config/manager/CustomUserEntityManager.java b/easy-activiti/src/main/java/com/easy/admin/activiti/config/manager/CustomUserEntityManager.java index c640bbe..ebfe93d 100644 --- a/easy-activiti/src/main/java/com/easy/admin/activiti/config/manager/CustomUserEntityManager.java +++ b/easy-activiti/src/main/java/com/easy/admin/activiti/config/manager/CustomUserEntityManager.java @@ -70,9 +70,18 @@ public class CustomUserEntityManager extends UserEntityManager { */ @Override public List findUserByQueryCriteria(UserQueryImpl query, Page page) { - SysUser user = getUser(query.getId()); List list = new ArrayList<>(); - list.add(ActivitiUserUtil.toActivitiUser(user)); + String groupId = query.getGroupId(); + if (StrUtil.isNotBlank(groupId)) { + List usersByRoleId = userService.getUsersByRoleId(groupId); + for (SysUser user : usersByRoleId) { + list.add(ActivitiUserUtil.toActivitiUser(user)); + } + } + if (StrUtil.isNotBlank(query.getId())) { + SysUser user = getUser(query.getId()); + list.add(ActivitiUserUtil.toActivitiUser(user)); + } return list; } diff --git a/easy-sys/src/main/java/com/easy/admin/auth/dao/SysUserMapper.java b/easy-sys/src/main/java/com/easy/admin/auth/dao/SysUserMapper.java index 3ca1cfd..25a70f9 100644 --- a/easy-sys/src/main/java/com/easy/admin/auth/dao/SysUserMapper.java +++ b/easy-sys/src/main/java/com/easy/admin/auth/dao/SysUserMapper.java @@ -134,5 +134,6 @@ public interface SysUserMapper extends BaseMapper { IPage getUserPageByCondition(Page page, @Param("request") UserInfoRequest request,@Param("condition") String condition); IPage getUserPageByConditions(Page page, @Param("request") UserInfoRequest request,@Param("condition") String condition1,@Param("condition1")String condition2); + List getUsersByRoleId( @Param("roleId") String roleId); } \ No newline at end of file diff --git a/easy-sys/src/main/java/com/easy/admin/auth/dao/mapping/SysUserMapper.xml b/easy-sys/src/main/java/com/easy/admin/auth/dao/mapping/SysUserMapper.xml index fe3ab99..580a870 100644 --- a/easy-sys/src/main/java/com/easy/admin/auth/dao/mapping/SysUserMapper.xml +++ b/easy-sys/src/main/java/com/easy/admin/auth/dao/mapping/SysUserMapper.xml @@ -208,4 +208,24 @@ + + \ No newline at end of file diff --git a/easy-sys/src/main/java/com/easy/admin/auth/service/SysUserService.java b/easy-sys/src/main/java/com/easy/admin/auth/service/SysUserService.java index 91b1f86..94640bc 100644 --- a/easy-sys/src/main/java/com/easy/admin/auth/service/SysUserService.java +++ b/easy-sys/src/main/java/com/easy/admin/auth/service/SysUserService.java @@ -187,7 +187,7 @@ public interface SysUserService extends IService { boolean setPhone(String id, String phone); List> getUserDictByRoles(String roles); - + List getUsersByRoleId(String roleId); IPage getUsersByCondition(String condition, UserInfoRequest request, Integer pageNo, Integer pageSize); } \ No newline at end of file diff --git a/easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserServiceImpl.java b/easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserServiceImpl.java index 2d946f0..4f3d259 100644 --- a/easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserServiceImpl.java +++ b/easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserServiceImpl.java @@ -391,6 +391,12 @@ public class SysUserServiceImpl extends ServiceImpl impl return null; } + @Override + public List getUsersByRoleId(String roleId) { + List usersByRoleId = userMapper.getUsersByRoleId(roleId); + return usersByRoleId; + } + @Override public IPage getUsersByCondition(String condition, UserInfoRequest request, Integer pageNo, Integer pageSize) { Page page=new Page<>(pageNo,pageSize); diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java index ae03fe1..ce49d90 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java @@ -264,5 +264,17 @@ public class HuzhouProjectController { List result = projectinfoService.getAdminDivisionList(); return Result.ok(result); } + /** + * 获取联合技术审查项目列表 + * @return + */ + @GetMapping("/getUnitedTechnicalReviewList") + public Result getUnitedTechnicalReviewList(HuzhouProjectinfo projectinfo, + @RequestParam(name="current", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ + + IPage infoPageList =projectinfoService.getUnitedTechnicalReviewList(projectinfo, pageNo, pageSize); + return Result.OK(infoPageList); + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouUploadfileinfoController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouUploadfileinfoController.java index ebbdb09..48eea55 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouUploadfileinfoController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouUploadfileinfoController.java @@ -128,4 +128,24 @@ public class HuzhouUploadfileinfoController { return Result.ok("审批成功"); } + @PostMapping("/uploadURTFile") + public Result uploadURTFile(@RequestParam(value = "file") + MultipartFile[] files,@RequestParam(value = "projectid") String projectid) throws IOException { + uploadfileinfoService.submitURTFile(files, projectid,"6"); + + return Result.OK("上传成功!!"); + } + @PostMapping("/approveURTFile") + public Result approveURTFile(@RequestParam(value = "file",required = false) MultipartFile[] files, + @RequestParam String taskId, + @RequestParam String flag, + @RequestParam String projectid, + @RequestParam String comment, + @RequestParam(value = "adviceFile",required = false) MultipartFile[] adviceFiles) throws IOException { + uploadfileinfoService.approveURTFile(files, taskId, flag, projectid, comment, adviceFiles); + return Result.OK("审批成功!!"); + + } + + } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java index 32c52b3..63579ad 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java @@ -185,11 +185,14 @@ public class WorkflowController { .orderByTaskCreateTime().desc().list(); reshashMap.put("taskId",list.get(0).getId()); //根据流程实例查询当前流所在位置 - Task task = taskService.createTaskQuery() + int size = taskService.createTaskQuery() .processInstanceId(processInstanceId) - .active() - .singleResult(); - if(task!=null){ + .active().list().size(); + + if(size==1){ + Task task =taskService.createTaskQuery() + .processInstanceId(processInstanceId) + .active().singleResult(); String currentTaskName = task.getName(); reshashMap.put("currentTaskName",currentTaskName); WorkflowActionParamOV actionParam = workflowService.getActionParam(processInstanceId, task.getId(), "1"); @@ -200,7 +203,37 @@ public class WorkflowController { reshashMap.put("isrecall","1"); } } + }else if(size>1){ + List taskList = taskService.createTaskQuery() + .processInstanceId(processInstanceId) + .active().list(); + String currentTaskName=""; + for (Task t:taskList) { + currentTaskName=currentTaskName+t.getName()+","; + } + currentTaskName = currentTaskName.substring(0,currentTaskName.length()-1); + reshashMap.put("currentTaskName",currentTaskName); + WorkflowActionParamOV actionParam = workflowService.getActionParam(processInstanceId, taskList.get(0).getId(), "1"); + List buttons = actionParam.getButtons(); +// for (Select select:buttons +// ) { +// if("撤回".equals(select.getLabel())){ +// reshashMap.put("isrecall","1"); +// } +// } +// } //获取当前流程名称 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() @@ -352,19 +385,26 @@ public class WorkflowController { userTaskList.add(userTask); } } - for (int i =0;i lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个 - Object taskName = lastUser.get("taskName"); - boolean match = task.getName().equals(taskName); - if(!match){ - userTaskList.remove(task); - }else{ - userTaskList.remove(task); - break; + for(HashMap lastUser:approvalEntityList){ + if ("0".equals(lastUser.get("approvalStatue"))) { + continue; + } + for (int i =0;i lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个 + Object taskName = lastUser.get("taskName"); + boolean match = task.getName().equals(taskName); + if(match){ + userTaskList.remove(task); + } +// else{ +// userTaskList.remove(task); +// break; +// } +// i--; } - i--; } + for (UserTask userTask: userTaskList ) { HashMap hashMap = new HashMap<>(); List candidateGroups = userTask.getCandidateGroups(); diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ResubmitListener.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ResubmitListener.java new file mode 100644 index 0000000..4c65d66 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ResubmitListener.java @@ -0,0 +1,67 @@ +package com.easy.admin.modules.huzhou.listener; + +import org.activiti.engine.IdentityService; +import org.activiti.engine.TaskService; +import org.activiti.engine.delegate.DelegateExecution; +import org.activiti.engine.delegate.ExecutionListener; +import org.activiti.engine.identity.User; +import org.activiti.engine.task.IdentityLink; +import org.activiti.engine.task.Task; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +@Component +public class ResubmitListener implements ExecutionListener , ApplicationContextAware { +// @Autowired +// private TaskService taskService; +private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) { + ResubmitListener.applicationContext = applicationContext; + } + @Override + public void notify(DelegateExecution execution) throws Exception { + TaskService taskService = applicationContext.getBean(TaskService.class); + IdentityService identityService = applicationContext.getBean(IdentityService.class); + List tasks = taskService.createTaskQuery() + .processInstanceId(execution.getProcessInstanceId()) + .list(); + HashMap approvedResult = (HashMap)execution.getVariable("ApprovedResult"); + if(approvedResult != null){ + approvedResult.forEach((userId,approved)->{ + if ("1".equals(approved)) { + List candidateUsers = new ArrayList<>(); + for (Task task : tasks) { + List identityLinks = taskService.getIdentityLinksForTask(task.getId()); + for (IdentityLink identityLink : identityLinks) { + if (identityLink.getType().equals("candidate")) { + if (identityLink.getUserId() != null) { + candidateUsers.add(identityLink.getUserId()); + } else if (identityLink.getGroupId() != null) { + List users = identityService.createUserQuery() + .memberOfGroup(identityLink.getGroupId()) + .list(); + for (User user : users) { + candidateUsers.add(user.getId()); + } + } + } + } + if (candidateUsers.contains(userId)) { + taskService.claim(task.getId(), userId); + taskService.complete(task.getId()); + } + } + } + }); + } + + } +} \ No newline at end of file diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/UserTaskCompleteListener.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/UserTaskCompleteListener.java new file mode 100644 index 0000000..63ed0e6 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/UserTaskCompleteListener.java @@ -0,0 +1,36 @@ +package com.easy.admin.modules.huzhou.listener; + +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.TaskListener; +import org.springframework.stereotype.Component; + +import java.util.HashMap; + +@Component +public class UserTaskCompleteListener implements TaskListener { + + @Override + public void notify(DelegateTask delegateTask) { + String taskId = delegateTask.getId(); + String userId = delegateTask.getAssignee(); + String approved = (String) delegateTask.getVariableLocal("approvalStatue"); // 获取用户审批结果 + HashMap approvedResult = (HashMap)delegateTask.getVariable("ApprovedResult"); + if(approvedResult==null){ + approvedResult = new HashMap<>(); + } + if("1".equals(approved)){ + approvedResult.put(userId,"1"); // 审批通过 + }else{ + approvedResult.put(userId,"0"); // 审批不通过 + delegateTask.getExecution().setVariable("rejected",true); // 更新审批结果变量 + } + int size = approvedResult.size(); + if(size==7&&!approvedResult.containsValue("0")){ + delegateTask.getExecution().setVariable("rejected",false); // 更新审批结果变量 + } + delegateTask.getExecution().setVariable( "ApprovedResult", approvedResult); // 更新审批状态变量 +// identityService.createUserQuery() +// .memberOfGroup(identityLink.getGroupId()) +// .list(); + } +} \ No newline at end of file diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java index cc1ad9d..26623f0 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java @@ -180,6 +180,7 @@ public interface IHuzhouProjectinfoService extends IService { List getDutyWorkplaceList(); List getAdminDivisionList(); + IPage getUnitedTechnicalReviewList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouUploadfileinfoService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouUploadfileinfoService.java index a29c961..eb3df67 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouUploadfileinfoService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouUploadfileinfoService.java @@ -29,4 +29,7 @@ public interface IHuzhouUploadfileinfoService extends IService getuploacFilePageListOk(HuzhouUploadfileinfo uploadfileinfo, Integer pageNo, Integer pageSize); + void submitURTFile(MultipartFile[] files, String projectid, String s) throws IOException; + + void approveURTFile(MultipartFile[] files, String taskId, String flag, String projectid, String comment, MultipartFile[] adviceFiles) throws IOException; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java index 8a89e15..af64a77 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java @@ -3,6 +3,7 @@ package com.easy.admin.modules.huzhou.service.impl; 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.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.easy.admin.auth.service.SysUserService; @@ -12,6 +13,7 @@ import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfofileMapper; import com.easy.admin.modules.huzhou.entity.*; import com.easy.admin.modules.huzhou.service.*; +import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV; import com.easy.admin.sys.model.SysDict; import com.easy.admin.sys.service.SysDictService; import org.activiti.engine.RuntimeService; @@ -169,6 +171,8 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl getUnitedTechnicalReviewList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { + IPage projectInfoAndChildPageList = getProjectInfoAndChildPageList(projectinfo, pageNo, pageSize); + projectInfoAndChildPageList.getRecords().stream().forEach(x -> { + String id = x.getId(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouProcessinfo::getProjectid, id); + queryWrapper.eq(HuzhouProcessinfo::getProcessName, "createURT"); + List list = processinfoService.list(queryWrapper); + if (list.size() > 0) { + x.setUtrIsfinish(list.get(0).getProcessstatus()); + }else { + x.setUtrIsfinish("0"); + }}); + return projectInfoAndChildPageList; + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java index bf6bb6d..bbaed90 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java @@ -7,25 +7,38 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.easy.admin.auth.model.SysUser; +import com.easy.admin.auth.service.SysUserService; import com.easy.admin.common.util.CommonUtils; import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouUploadfileinfoMapper; import com.easy.admin.modules.huzhou.entity.BaseEntity; import com.easy.admin.modules.huzhou.entity.HuzhouProcessinfo; import com.easy.admin.modules.huzhou.entity.HuzhouUploadfileinfo; +import com.easy.admin.modules.huzhou.entity.WorkFlow; +import com.easy.admin.modules.huzhou.service.IHuzhouProcessinfoService; import com.easy.admin.modules.huzhou.service.IHuzhouUploadfileinfoService; +import com.easy.admin.modules.huzhou.service.IWorkflowService; import com.easy.admin.util.ShiroUtil; +import org.activiti.engine.IdentityService; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.identity.User; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.IdentityLink; +import org.activiti.engine.task.Task; +import org.activiti.engine.task.TaskQuery; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.FileCopyUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; +import java.util.*; /** * (HuzhouUploadfileinfo)表服务实现类 @@ -33,12 +46,28 @@ import java.util.List; * @author makejava * @since 2024-01-29 14:21:06 */ +@Transactional @Service public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl implements IHuzhouUploadfileinfoService { @Value(value = "${jeecg.path.upload}") private String uploadpath; @Autowired private HuzhouProcessinfoMapper processinfoMapper; + @Autowired + private IWorkflowService workflowService; + @Autowired + private TaskService taskService; + @Autowired + private IHuzhouProcessinfoService processinfoService; + @Autowired + private RuntimeService runtimeService; + @Autowired + private IdentityService identityService; + @Autowired + private SysUserService userService; + + + public void modifyUploadFile(MultipartFile[] files, String projectid, String stage) throws IOException { LambdaUpdateWrapper queryWrapper = new LambdaUpdateWrapper<>(); queryWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid); @@ -129,6 +158,10 @@ public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl uploadfileinfoIPage = this.page(huzhouUploadfileinfoIPage, huzhouUploadfileinfoLambdaUpdateWrapper); + uploadfileinfoIPage.getRecords().forEach(item->{ + SysUser sysUser = userService.get(item.getCreateUser()); + item.setCreateUser(sysUser.getNickname()); + }); return uploadfileinfoIPage; } @@ -155,4 +188,123 @@ public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); + queryWrapper.eq(HuzhouProcessinfo::getProcessName,"createURT"); + queryWrapper.eq(HuzhouProcessinfo::getProcessstatus,"1"); + List processinfos = processinfoService.list(queryWrapper); + String processName = processinfos.get(0).getProcessName(); + if(files!=null&&"1".equals(flag)){ + modifyUploadFile(files,projectid,"6"); + } + //意见文件 + if(adviceFiles!=null){ + modifyUploadFileByURT(adviceFiles,projectid,"7"); + } + WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment); + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workFlow.getProcessInstanceId()).singleResult(); + if(processInstance==null&&"1".equals(flag)){ + processinfoService.modifyStatusByProjectId(projectid,"2",processName); + }else{ + //如果流程未完成,检查流程是否被拒绝退回,退回后,之前同意的系统默认同意 + List tasks = taskService.createTaskQuery() + .processInstanceId(workFlow.getProcessInstanceId()) + .list(); + String executionId = tasks.get(0).getExecutionId(); + HashMap approvedResult = (HashMap) runtimeService.getVariable(executionId, "ApprovedResult"); + if(approvedResult != null){ + for (Task task : tasks) { + String tongyi=""; + for (Map.Entry entry : approvedResult.entrySet()){ + if ("1".equals(entry.getValue())) { + List identityLinks = taskService.getIdentityLinksForTask(task.getId()); + List candidateUsers = new ArrayList<>(); + for (IdentityLink identityLink : identityLinks) { + if (identityLink.getType().equals("candidate")) { + if (identityLink.getUserId() != null) { + candidateUsers.add(identityLink.getUserId()); + } else if (identityLink.getGroupId() != null) { + List users = identityService.createUserQuery() + .memberOfGroup(identityLink.getGroupId()) + .list(); + for (User user : users) { + candidateUsers.add(user.getId()); + } + } + } + } + if(candidateUsers.contains(entry.getKey())){ + tongyi=entry.getKey(); + break; + } + } + } + if (StringUtils.isNotEmpty(tongyi)) { + String id = task.getId(); + taskService.claim(id, tongyi); + taskService.setVariableLocal(id, "approvalStatue", "1");//添加审批状态 通过 + String comment1 = "同意"; + taskService.addComment(id, task.getProcessInstanceId(), comment1);//添加审批意见 + taskService.complete(id); + } + } + } + } + } + public void modifyUploadFileByURT(MultipartFile[] files, String projectid, String stage) throws IOException { + LambdaUpdateWrapper queryWrapper = new LambdaUpdateWrapper<>(); + queryWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid); + queryWrapper.eq(HuzhouUploadfileinfo::getStage,stage); + queryWrapper.eq(BaseEntity::getCreateUser,ShiroUtil.getCurrentUser().getId()); + queryWrapper.set(HuzhouUploadfileinfo::getStatus,"0"); + this.update(queryWrapper); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + String currentDay = dateFormat.format(new Date()); + SysUser currentUser = ShiroUtil.getCurrentUser(); + String nickname = currentUser.getNickname(); + File filePath = new File(uploadpath + File.separator +nickname+ File.separator+currentDay+File.separator); + //文件夹不存在则创建 + if (!filePath.exists()) { + // 创建文件根目录 + filePath.mkdirs(); + } + for (MultipartFile item:files) { + String fileName =null; + String originalFilename = item.getOriginalFilename(); + originalFilename = CommonUtils.getFileName(originalFilename); + if(originalFilename.indexOf(".")!=-1){ + fileName = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + "_" + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf(".")); + }else{ + fileName = originalFilename+ "_" + System.currentTimeMillis(); + } + String savePath = filePath.getPath() + File.separator + fileName; + File savefile = new File(savePath); + FileCopyUtils.copy(item.getBytes(), savefile);//保存文件 + HuzhouUploadfileinfo huzhouUploadfileinfo = new HuzhouUploadfileinfo(); + huzhouUploadfileinfo.setDocumentName(originalFilename);//未加工过的文件名称 + huzhouUploadfileinfo.setDocumentType(item.getContentType()); + huzhouUploadfileinfo.setDocumentPath(savePath); + huzhouUploadfileinfo.setStage(stage); + huzhouUploadfileinfo.setStatus("1"); + huzhouUploadfileinfo.setSize(item.getSize()); + huzhouUploadfileinfo.setProjectid(projectid); + boolean save = this.save(huzhouUploadfileinfo); + } + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java index 333fd39..d3c5254 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java @@ -102,7 +102,6 @@ public class WorkflowServiceImpl implements IWorkflowService { huzhouProcessinfo.setProcessinstanceid(processInstanceId); huzhouProcessinfo.setProjectid(id); huzhouProcessinfo.setProcessstatus("1"); - processinfoService.save(huzhouProcessinfo); } return workFlow; @@ -135,7 +134,7 @@ public class WorkflowServiceImpl implements IWorkflowService { callBack(processInstanceId,taskId); return workFlow; } - taskService.claim(task.getId(), userId);//拾取任务 +// taskService.claim(task.getId(), userId);//拾取任务 Authentication.setAuthenticatedUserId(userId);//添加审批人 taskService.setVariableLocal(taskId,"approvalStatue",flag); taskService.addComment(taskId,processInstanceId,comment);//添加审批意见 diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java index 2074d9d..2d41876 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java @@ -22,5 +22,6 @@ public class HuzhouProjectinfoOV extends HuzhouProjectinfo { * 合同流程状态 */ String contractStatus; + String utrIsfinish; // String isSubProject; }