Browse Source

新增联合技术审查模块

master
zhouhaibin 3 months ago
parent
commit
9e6f6d8024
  1. 11
      easy-activiti/src/main/java/com/easy/admin/activiti/config/manager/CustomUserEntityManager.java
  2. 1
      easy-sys/src/main/java/com/easy/admin/auth/dao/SysUserMapper.java
  3. 20
      easy-sys/src/main/java/com/easy/admin/auth/dao/mapping/SysUserMapper.xml
  4. 2
      easy-sys/src/main/java/com/easy/admin/auth/service/SysUserService.java
  5. 6
      easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserServiceImpl.java
  6. 12
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java
  7. 20
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouUploadfileinfoController.java
  8. 58
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java
  9. 67
      huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ResubmitListener.java
  10. 36
      huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/UserTaskCompleteListener.java
  11. 1
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java
  12. 3
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouUploadfileinfoService.java
  13. 13
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java
  14. 16
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java
  15. 156
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java
  16. 3
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java
  17. 1
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java

11
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<User> findUserByQueryCriteria(UserQueryImpl query, Page page) {
SysUser user = getUser(query.getId());
List<User> list = new ArrayList<>();
String groupId = query.getGroupId();
if (StrUtil.isNotBlank(groupId)) {
List<SysUser> 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;
}

1
easy-sys/src/main/java/com/easy/admin/auth/dao/SysUserMapper.java

@ -134,5 +134,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
IPage<UserInfoResponse> getUserPageByCondition(Page page, @Param("request") UserInfoRequest request,@Param("condition") String condition);
IPage<UserInfoResponse> getUserPageByConditions(Page page, @Param("request") UserInfoRequest request,@Param("condition") String condition1,@Param("condition1")String condition2);
List<SysUser> getUsersByRoleId( @Param("roleId") String roleId);
}

20
easy-sys/src/main/java/com/easy/admin/auth/dao/mapping/SysUserMapper.xml

@ -208,4 +208,24 @@
</if>
</where>
</select>
<select id="getUserDictByRoles" resultType="Map">
select u.nickname label,u.id value,u.username text , u.phone_number phone,u.workplace from sys_user u inner join
( select distinct user_id from sys_user_role WHERE role_id in(
select r.id from sys_role r where r.code in
<foreach item="item" collection="roles" open="(" separator="," close=")">
#{item}
</foreach>
)
) rr on rr.user_id = u.id
</select>
<select id="getUsersByRoleId" resultType="com.easy.admin.auth.model.SysUser">
select u.nickname,u.id,u.username , u.phone_number,u.workplace from sys_user u inner join
( select distinct user_id from sys_user_role WHERE role_id = #{roleId}
) rr on rr.user_id = u.id
</select>
</mapper>

2
easy-sys/src/main/java/com/easy/admin/auth/service/SysUserService.java

@ -187,7 +187,7 @@ public interface SysUserService extends IService<SysUser> {
boolean setPhone(String id, String phone);
List<HashMap<String,String>> getUserDictByRoles(String roles);
List<SysUser> getUsersByRoleId(String roleId);
IPage<UserInfoResponseOV> getUsersByCondition(String condition, UserInfoRequest request, Integer pageNo, Integer pageSize);
}

6
easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserServiceImpl.java

@ -391,6 +391,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return null;
}
@Override
public List<SysUser> getUsersByRoleId(String roleId) {
List<SysUser> usersByRoleId = userMapper.getUsersByRoleId(roleId);
return usersByRoleId;
}
@Override
public IPage<UserInfoResponseOV> getUsersByCondition(String condition, UserInfoRequest request, Integer pageNo, Integer pageSize) {
Page page=new Page<>(pageNo,pageSize);

12
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java

@ -264,5 +264,17 @@ public class HuzhouProjectController {
List<String> 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<HuzhouProjectinfoOV> infoPageList =projectinfoService.getUnitedTechnicalReviewList(projectinfo, pageNo, pageSize);
return Result.OK(infoPageList);
}
}

20
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("审批成功!!");
}
}

58
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());
//根据流程实例查询当前流所在位置
int size = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.active().list().size();
if(size==1){
Task task =taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.active()
.singleResult();
if(task!=null){
.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<Task> 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<Select> buttons = actionParam.getButtons();
for (Select select:buttons
) {
if("撤回".equals(select.getLabel())){
reshashMap.put("isrecall","1");
}
}
}
// if(task!=null){
// String currentTaskName = task.getName();
// reshashMap.put("currentTaskName",currentTaskName);
// WorkflowActionParamOV actionParam = workflowService.getActionParam(processInstanceId, task.getId(), "1");
// List<Select> 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(HashMap<String, Object> lastUser:approvalEntityList){
if ("0".equals(lastUser.get("approvalStatue"))) {
continue;
}
for (int i =0;i<userTaskList.size();i++ ) {
UserTask task=userTaskList.get(i);
HashMap<String, Object> lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个
// HashMap<String, Object> lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个
Object taskName = lastUser.get("taskName");
boolean match = task.getName().equals(taskName);
if(!match){
userTaskList.remove(task);
}else{
if(match){
userTaskList.remove(task);
break;
}
i--;
// else{
// userTaskList.remove(task);
// break;
// }
// i--;
}
}
for (UserTask userTask: userTaskList ) {
HashMap<String, Object> hashMap = new HashMap<>();
List<String> candidateGroups = userTask.getCandidateGroups();

67
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<Task> tasks = taskService.createTaskQuery()
.processInstanceId(execution.getProcessInstanceId())
.list();
HashMap<String,String> approvedResult = (HashMap<String,String>)execution.getVariable("ApprovedResult");
if(approvedResult != null){
approvedResult.forEach((userId,approved)->{
if ("1".equals(approved)) {
List<String> candidateUsers = new ArrayList<>();
for (Task task : tasks) {
List<IdentityLink> 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<User> 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());
}
}
}
});
}
}
}

36
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<String,String> approvedResult = (HashMap<String,String>)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();
}
}

1
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java

@ -180,6 +180,7 @@ public interface IHuzhouProjectinfoService extends IService<HuzhouProjectinfo> {
List<String> getDutyWorkplaceList();
List<String> getAdminDivisionList();
IPage<HuzhouProjectinfoOV> getUnitedTechnicalReviewList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize);
}

3
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouUploadfileinfoService.java

@ -29,4 +29,7 @@ public interface IHuzhouUploadfileinfoService extends IService<HuzhouUploadfilei
*/
IPage<HuzhouUploadfileinfo> 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;
}

13
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<HuzhouPlaninfofil
HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo();
huzhouPlaninfo.setId(planinfoid);
huzhouPlaninfo.setIsfinish("1");
huzhouPlaninfo.setActualStartTime(new Date());
planinfoService.updateById(huzhouPlaninfo);
}
@ -188,6 +192,8 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo();
huzhouPlaninfo.setId(planinfoid);
huzhouPlaninfo.setIsfinish("1");
huzhouPlaninfo.setActualStartTime(new Date());
planinfoService.updateById(huzhouPlaninfo);
}
else if("集中核验".equals(taskName)){
@ -203,15 +209,19 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo();
huzhouPlaninfo.setId(planinfoid);
huzhouPlaninfo.setIsfinish("1");
huzhouPlaninfo.setActualStartTime(new Date());
planinfoService.updateById(huzhouPlaninfo);
}else{
HuzhouPlaninfo huzhouPlaninfo = new HuzhouPlaninfo();
huzhouPlaninfo.setId(planinfoid);
huzhouPlaninfo.setIsfinish("2");
huzhouPlaninfo.setActualStartTime(new Date());
huzhouPlaninfo.setActualEndTime(new Date());
planinfoService.updateById(huzhouPlaninfo);
}
//修改子项状态
/**
* 检查所有阶段的状态判断是否完成
*/
@ -264,6 +274,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workFlow.getProcessInstanceId()).singleResult();
if(processInstance==null&&"1".equals(flag)){
huzhouPlaninfo.setIsfinish("2");
huzhouPlaninfo.setActualEndTime(new Date());
planinfoService.updateById(huzhouPlaninfo);
processinfoService.modifyStatusByProjectId(planinfoid,"2",processName);
HuzhouPlaninfo planinfo = planinfoService.getById(planinfoid);

16
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -1204,5 +1204,21 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
.build();
return fundByTypeResponse;
}
@Override
public IPage<HuzhouProjectinfoOV> getUnitedTechnicalReviewList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) {
IPage<HuzhouProjectinfoOV> projectInfoAndChildPageList = getProjectInfoAndChildPageList(projectinfo, pageNo, pageSize);
projectInfoAndChildPageList.getRecords().stream().forEach(x -> {
String id = x.getId();
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouProcessinfo::getProjectid, id);
queryWrapper.eq(HuzhouProcessinfo::getProcessName, "createURT");
List<HuzhouProcessinfo> list = processinfoService.list(queryWrapper);
if (list.size() > 0) {
x.setUtrIsfinish(list.get(0).getProcessstatus());
}else {
x.setUtrIsfinish("0");
}});
return projectInfoAndChildPageList;
}
}

156
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<HuzhouUploadfileinfoMapper,HuzhouUploadfileinfo> 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<HuzhouUploadfileinfo> queryWrapper = new LambdaUpdateWrapper<>();
queryWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid);
@ -129,6 +158,10 @@ public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl<HuzhouUploadfil
huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getStage,stage);
huzhouUploadfileinfoLambdaUpdateWrapper.orderByDesc(BaseEntity::getCreateDate);
IPage<HuzhouUploadfileinfo> 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<HuzhouUploadfil
return uploadfileinfoIPage;
}
@Override
public void submitURTFile(MultipartFile[] files, String projectid, String s) throws IOException {
WorkFlow workFlow = workflowService.createFlow("createURT", projectid);//创建流程
String taskId = workFlow.getTask().getId();
String processInstanceId = workFlow.getProcessInstanceId();
taskService.setVariableLocal(taskId, "approvalStatue", "1");//添加审批状态 通过
String comment = "同意";
taskService.addComment(taskId, processInstanceId, comment);//添加审批意见
taskService.complete(taskId);
saveFileAndFileInfo(files, projectid, s);
}
@Override
public void approveURTFile(MultipartFile[] files, String taskId, String flag, String projectid, String comment, MultipartFile[] adviceFiles) throws IOException {
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
queryWrapper.eq(HuzhouProcessinfo::getProcessName,"createURT");
queryWrapper.eq(HuzhouProcessinfo::getProcessstatus,"1");
List<HuzhouProcessinfo> 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<Task> tasks = taskService.createTaskQuery()
.processInstanceId(workFlow.getProcessInstanceId())
.list();
String executionId = tasks.get(0).getExecutionId();
HashMap<String,String> approvedResult = (HashMap<String, String>) runtimeService.getVariable(executionId, "ApprovedResult");
if(approvedResult != null){
for (Task task : tasks) {
String tongyi="";
for (Map.Entry<String, String> entry : approvedResult.entrySet()){
if ("1".equals(entry.getValue())) {
List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(task.getId());
List<String> 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<User> 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<HuzhouUploadfileinfo> 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);
}
}
}

3
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);//添加审批意见

1
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;
}

Loading…
Cancel
Save