staffRoles = new ArrayList<>();
+ StaffRoleDto staffRole = new StaffRoleDto() ;
+ staffRole.setStaffId(staffId);
+ staffRole.setRoleId(roleId);
+ staffRoles.add(staffRole);
+ return JSON.toJSONString(staffRoles);
+ }
}
diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java
index 29324300..aa24009f 100644
--- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java
+++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java
@@ -1,20 +1,22 @@
package com.lz.modules.sys.service.app.impl;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.lz.common.utils.DateUtils;
-import com.lz.common.utils.PageUtils;
-import com.lz.common.utils.StringUtil;
+import com.lz.common.utils.*;
import com.lz.modules.app.dao.DepartmentsDao;
import com.lz.modules.app.dao.DepartmentsStaffRelateDao;
import com.lz.modules.app.dto.EmployeesDto;
import com.lz.modules.app.entity.DepartmentsEntity;
+import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
+import com.lz.modules.app.entity.StaffEntity;
import com.lz.modules.app.req.ResultRecordReq;
import com.lz.modules.app.resp.ResultRecordResp;
+import com.lz.modules.app.service.DepartmentsService;
+import com.lz.modules.app.service.DepartmentsStaffRelateService;
import com.lz.modules.app.service.StaffService;
-import com.lz.modules.flow.entity.FlowDepartment;
-import com.lz.modules.flow.entity.StaffRole;
-import com.lz.modules.flow.service.FlowDepartmentService;
-import com.lz.modules.flow.service.StaffRoleService;
+import com.lz.modules.flow.entity.*;
+import com.lz.modules.flow.model.StaffRoleDto;
+import com.lz.modules.flow.service.*;
import com.lz.modules.sys.dao.app.ResultRecordMapper;
import com.lz.modules.sys.entity.SysUserEntity;
import com.lz.modules.sys.entity.app.ResultRecord;
@@ -26,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
+import java.util.stream.Collectors;
/**
*
@@ -64,6 +67,29 @@ public class ResultRecordServiceImpl extends ServiceImpl list = new ArrayList<>();
+ list.add(flowDepartment);
+ for (int i = 0; i < 10; i++) {
+ if (flowDepartment.getParentId() != null && flowDepartment.getParentId() > 0) {
+ flowDepartment = flowDepartmentService.selectFlowDepartmentById(flowDepartment.getParentId());
+ list.add(flowDepartment);
+ } else {
+ break;
+ }
+ }
+ List flowRelations = flowRelationService.selectFlowRelationAll();
+ Map staffEntityMap = list.stream().collect(Collectors.toMap(FlowDepartment::getDepartmentLevel, p -> p));
+ // approvalList = [ME,ONE_D,TWO_D,HR,BOSS]
+ List approvalList = new ArrayList<>();
+ approvalList.add("ME");
+ for (FlowRelation flowRelation : flowRelations) {
+ if (staffEntityMap.get(flowRelation.getChild()) != null || flowRelation.getCanReplace() == 0) {
+ approvalList.add(flowRelation.getChild());
+ }
+ }
+ List flows = flowService.selectByFlowId(flowId);
+ FlowRecord lastFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(resultRecordId);
+ FlowRecord notFlowRecord = flowRecordService.selectNotApprovalStaffIdFlowRecords(resultRecord.getId());
+ if (notFlowRecord != null) {
+ notFlowRecord.setApprovalStaffId(userId);
+ }
+
+ StaffEntity staff = staffService.selectStaffById(resultRecord.getStaffId());
+ int flowIndex = lastFlowRecord != null ? lastFlowRecord.getFlowIndex() + 1 : 1;
+ int index = getDepartmentLevelIndex(flows, flowIndex);
+ if (index < 0) { //表示流程己经结束
+ lastFlowRecord.setFlowName(mySelf.getName() + "-审批通过");
+ flowRecordService.updateCoverFlowRecordById(lastFlowRecord);
+ resultRecordService.updateFlowStaffIdRoleToNull(resultRecord.getId());// 更新用户权限
+ return R.ok("流程审批结束");
+ }
+
+ FlowRecord flowRecord = new FlowRecord();
+ flowRecord.setRecordId(resultRecordId);
+ flowRecord.setRecordStaffId(resultRecord.getStaffId());
+ flowRecord.setFlowIndex(flowIndex);
+ flowRecord.setFlowId(flowId);
+ String departmentLevel = approvalList.get(index);
+ flowRecord.setDepartmentLevel(departmentLevel);
+ StaffEntity approvalStaff = null;
+ List staffRoleDtos = new ArrayList<>();
+ if (Constant.ME.equals(departmentLevel)) { //如果是自己
+ approvalStaff = staff; // 是自己进行审批
+ StaffRoleDto staffRoleDto = new StaffRoleDto(staff.getId(),flows.get(flowIndex-1).getRoleId());
+ staffRoleDtos.add(staffRoleDto);
+ } else {
+ FlowDepartment flowD = staffEntityMap.get(departmentLevel);
+ if (flowD == null) {
+ List staffRoles = staffRoleService.selectByRole(departmentLevel);
+ for(StaffRole staffRole: staffRoles ){
+ List staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId());
+ Map departmentIdMap = departmentsService.selectUserAllDepartmentIds(resultRecord.getDepartmentId());
+ for (StaffRoleDepartment staffRoleDepartment : staffRoleDepartments) {
+ String value = departmentIdMap.get(staffRoleDepartment.getDepartmentId());
+ if(StringUtil.isNotBlank(value) ){
+ StaffRoleDto staffRoleDto = new StaffRoleDto(staffRole.getStaffId(),staffRole.getRoleId());
+ staffRoleDtos.add(staffRoleDto);
+ }
+ }
+ }
+ if(staffRoleDtos.size() == 1 ){ //表示只有一个审批的用户
+ approvalStaff = staffService.selectStaffById(staffRoleDtos.get(0).getStaffId());
+ }
+ } else {
+ approvalStaff = staffService.selectStaffById(flowD.getStaffId());
+ StaffRoleDto staffRoleDto = new StaffRoleDto(approvalStaff.getId(), flows.get(flowIndex - 1).getRoleId());
+ staffRoleDtos.add(staffRoleDto);
+ }
+ }
+ flowRecord.setFlowName(mySelf.getName() + "-" + flows.get(flowIndex - 1).getOptDesc());
+ flowRecord.setApprovalStaffId(approvalStaff != null ? approvalStaff.getId() : null);
+ flowRecord.setApprovalStaffName(approvalStaff != null ? approvalStaff.getName() : null);
+ String staffRoles = JSON.toJSONString(staffRoleDtos);
+ flowRecord.setFlowStaffIdRole(staffRoles);
+ flowRecordService.insertFlowRecord(flowRecord);
+ resultRecord.setFlowStaffIdRole(staffRoles);
+ resultRecordService.updateResultRecordById(resultRecord);// 更新用户权限
+ return R.ok("提交审批成功");
+ }
+
+
+ public int getDepartmentLevelIndex(List list, int flowIndex) {
+ if (flowIndex > list.size()) {
+ return -1 ;
+ }
+ List flows = new ArrayList<>();
+ for(int i = 0 ;i < flowIndex ;i ++){
+ flows.add(list.get(i));
+ }
+ int index = 0;
+ for (Flow flow : flows) {
+ String opt = flow.getOpt();
+ String opts[] = opt.split("");
+ for (String p : opts) {
+ if ("+".equals(p)) {
+ index++;
+ } else {
+ index--;
+ }
+ }
+ }
+ return index;
+ }
+
}
diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml
index efca5816..0a99e9bb 100644
--- a/src/main/resources/mapper/flow/FlowRecordMapper.xml
+++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml
@@ -17,18 +17,23 @@
+
- id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, department_level AS departmentLevel, record_id AS recordId, approval_staff_id AS approvalStaffId, approval_staff_name AS approvalStaffName, flow_name AS flowName, record_staff_id AS recordStaffId, flow_id AS flowId, flow_index AS flowIndex, status AS status
+ id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, department_level AS departmentLevel, record_id AS recordId, approval_staff_id AS approvalStaffId, approval_staff_name AS approvalStaffName, flow_name AS flowName, record_staff_id AS recordStaffId, flow_id AS flowId, flow_index AS flowIndex, status AS status, flow_staff_id_role AS flowStaffIdRole
+
+
+
+
insert into lz_flow_record(
department_level,
@@ -40,6 +45,7 @@
flow_id,
flow_index,
status,
+ flow_staff_id_role,
is_delete,
gmt_create,
gmt_modified
@@ -53,6 +59,7 @@
#{ flowId},
#{ flowIndex},
#{ status},
+ #{ flowStaffIdRole},
0,
now(),
now()
@@ -74,7 +81,8 @@
record_staff_id = #{recordStaffId},
flow_id = #{flowId},
flow_index = #{flowIndex},
- status = #{status}
+ status = #{status},
+ flow_staff_id_role = #{flowStaffIdRole}
,gmt_modified = now()
where id = #{id}
@@ -95,7 +103,8 @@
record_staff_id = #{recordStaffId},
flow_id = #{flowId},
flow_index = #{flowIndex},
- status = #{status}
+ status = #{status},
+ flow_staff_id_role = #{flowStaffIdRole}
,gmt_modified = now()
where id = #{id}
diff --git a/src/test/java/com/lz/mysql/MysqlMain.java b/src/test/java/com/lz/mysql/MysqlMain.java
index 3ade7906..ef20a3ab 100644
--- a/src/test/java/com/lz/mysql/MysqlMain.java
+++ b/src/test/java/com/lz/mysql/MysqlMain.java
@@ -62,7 +62,7 @@ public class MysqlMain {
List list = new ArrayList();
- list.add(new TablesBean("third_app_config"));
+ list.add(new TablesBean("lz_flow_record"));
List list2 = new ArrayList();
From 8dc09d65ef38a0dd9cdaca53f87ccef5cc4c59e8 Mon Sep 17 00:00:00 2001
From: quyixiao <2621048238@qq.com>
Date: Fri, 21 Aug 2020 11:42:03 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/lz/common/utils/StringUtil.java | 4 ++++
.../app/controller/ResultRecordController.java | 18 ++++++++++++++----
.../lz/modules/app/req/ResultRecordReq.java | 1 +
.../sys/service/app/ResultDetailService.java | 2 +-
4 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/lz/common/utils/StringUtil.java b/src/main/java/com/lz/common/utils/StringUtil.java
index d6d33ccc..97a9da1d 100644
--- a/src/main/java/com/lz/common/utils/StringUtil.java
+++ b/src/main/java/com/lz/common/utils/StringUtil.java
@@ -640,4 +640,8 @@ public class StringUtil extends StringUtils {
}
return null;
}
+
+ public static String removeHtml(String html) {
+ return html.replaceAll("\\<.*?>","");
+ }
}
diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java
index 48ce37bb..b3eb5d70 100644
--- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java
+++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java
@@ -16,8 +16,10 @@ import com.lz.modules.flow.req.ResultDetailReq;
import com.lz.modules.flow.service.RecordAuthService;
import com.lz.modules.sys.controller.AbstractController;
import com.lz.modules.sys.entity.SysUserEntity;
+import com.lz.modules.sys.entity.app.ResultComment;
import com.lz.modules.sys.entity.app.ResultDetail;
import com.lz.modules.sys.entity.app.ResultRecord;
+import com.lz.modules.sys.service.app.ResultCommentService;
import com.lz.modules.sys.service.app.ResultDetailService;
import com.lz.modules.sys.service.app.ResultRecordService;
import org.apache.commons.collections.CollectionUtils;
@@ -59,6 +61,8 @@ public class ResultRecordController extends AbstractController {
private DepartmentsStaffRelateService departmentsStaffRelateService;
@Autowired
private RecordAuthService recordAuthService;
+ @Autowired
+ private ResultCommentService resultCommentService;
/**
@@ -216,12 +220,19 @@ public class ResultRecordController extends AbstractController {
.put("recordResultId", recordResultId);
}
-
@RequestMapping("/commitApproval")
public R commitApproval(ResultRecordReq req) {
- if (req.getType() == 1) {
+ if (req.getStatus() == 2) {
+ String resultComment = StringUtil.decodeBase64(req.getResultComment());
+ resultComment = StringUtil.removeHtml(resultComment);
+ if (StringUtil.isNotBlank(resultComment)) {
+ ResultComment comment = new ResultComment();
+ comment.setCommentUserId(getUserId());
+ comment.setRecordId(req.getRecordResultId());
+ resultCommentService.insertResultComment(comment);
+ }
return resultRecordService.approval(req.getRecordResultId(), getUserId());
- } else { //侍提交
+ } else if (req.getStatus() == 3) { //侍提交
ResultRecord resultRecord = resultRecordService.selectResultRecordById(req.getRecordResultId());
resultRecord.setStatus(Constant.STATUS_3);
resultRecordService.updateResultRecordById(resultRecord);
@@ -236,7 +247,6 @@ public class ResultRecordController extends AbstractController {
@RequiresPermissions("user:lzresultrecord:info")
public R info(@PathVariable("id") Long id) {
ResultRecord lzResultRecord = lzResultRecordService.selectResultRecordById(id);
-
return R.ok().put("lzResultRecord", lzResultRecord);
}
diff --git a/src/main/java/com/lz/modules/app/req/ResultRecordReq.java b/src/main/java/com/lz/modules/app/req/ResultRecordReq.java
index ac69d78c..10eda703 100644
--- a/src/main/java/com/lz/modules/app/req/ResultRecordReq.java
+++ b/src/main/java/com/lz/modules/app/req/ResultRecordReq.java
@@ -32,4 +32,5 @@ public class ResultRecordReq {
private Long staffId;
private Integer recordType;
private String departmentLevel ;
+ private String resultComment;
}
diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java
index 9a307339..2a70f21b 100644
--- a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java
+++ b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java
@@ -54,5 +54,5 @@ public interface ResultDetailService extends IService {
void insertWenHuaJiaZhiGua(String s, Long id, Long userId);
- String initRole(Long staffId, long l);
+ String initRole(Long staffId, Long l);
}
\ No newline at end of file