From 7f89d1c4af046ee4a41faea77fb4083ecb8ea2a0 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Tue, 3 Nov 2020 11:59:37 +0800 Subject: [PATCH 1/4] =?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 --- .../lz/modules/flow/entity/FlowRecord.java | 58 ++++++++++++++++--- .../app/impl/ResultRecordServiceImpl.java | 4 +- .../mapper/flow/FlowRecordMapper.xml | 47 +++------------ src/test/java/com/lz/mysql/MysqlMain.java | 21 +------ 4 files changed, 63 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/entity/FlowRecord.java b/src/main/java/com/lz/modules/flow/entity/FlowRecord.java index b03f5334..f8a77c5f 100644 --- a/src/main/java/com/lz/modules/flow/entity/FlowRecord.java +++ b/src/main/java/com/lz/modules/flow/entity/FlowRecord.java @@ -1,53 +1,73 @@ package com.lz.modules.flow.entity; -import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** *

-* 菜单权限表 *

*流转记录表 * @author quyixiao -* @since 2020-09-03 +* @since 2020-11-03 */ @Data @TableName("lz_flow_record") +@ApiModel(value = "流转记录表") public class FlowRecord implements java.io.Serializable { // @TableId(value = "id", type = IdType.AUTO) private Long id; //是否删除状态,1:删除,0:有效 + @ApiModelProperty(value = "是否删除状态,1:删除,0:有效", name = "isDelete") private Integer isDelete; //创建时间 + @ApiModelProperty(value = "创建时间", name = "gmtCreate") private Date gmtCreate; //最后修改时间 + @ApiModelProperty(value = "最后修改时间", name = "gmtModified") private Date gmtModified; // + @ApiModelProperty(value = "", name = "departmentLevel") private String departmentLevel; //记录 id + @ApiModelProperty(value = "记录 id", name = "recordId") private Long recordId; //审批员工 id + @ApiModelProperty(value = "审批员工 id", name = "approvalStaffId") private Long approvalStaffId; //审批员工名称 + @ApiModelProperty(value = "审批员工名称", name = "approvalStaffName") private String approvalStaffName; //流程名称 + @ApiModelProperty(value = "流程名称", name = "flowName") private String flowName; //record 表中的员工 id + @ApiModelProperty(value = "record 表中的员工 id", name = "recordStaffId") private Long recordStaffId; //流程 id + @ApiModelProperty(value = "流程 id", name = "flowId") private Long flowId; //流程中的第几个步骤 + @ApiModelProperty(value = "流程中的第几个步骤", name = "flowIndex") private Integer flowIndex; - //0表示正常状态,1 表示被驳回无用的流程 + //0表示流程未到,1 表示流程已走 2 :当前流程 3:其他人己经审批,4,跳过 + @ApiModelProperty(value = "0表示流程未到,1 表示流程已走 2 :当前流程 3:其他人己经审批,4,跳过", name = "status") private Integer status; // 员工&权限id + @ApiModelProperty(value = " 员工&权限id", name = "flowStaffIdRole") private String flowStaffIdRole; //状态名称 + @ApiModelProperty(value = "状态名称", name = "statusName") private String statusName; //步骤类型0:依次,1:或签(同时通知,一人通过或拒绝即可),2会签(同时通知,所有人同意才可) + @ApiModelProperty(value = "步骤类型0:依次,1:或签(同时通知,一人通过或拒绝即可),2会签(同时通知,所有人同意才可)", name = "type") private Integer type; + //flow_manager表中id + @ApiModelProperty(value = "flow_manager表中id", name = "processId") + private Long processId; /** * * @return @@ -229,14 +249,14 @@ public class FlowRecord implements java.io.Serializable { } /** - * 0表示正常状态,1 表示被驳回无用的流程 + * 0表示流程未到,1 表示流程已走 2 :当前流程 3:其他人己经审批,4,跳过 * @return */ public Integer getStatus() { return status; } /** - * 0表示正常状态,1 表示被驳回无用的流程 + * 0表示流程未到,1 表示流程已走 2 :当前流程 3:其他人己经审批,4,跳过 * @param status */ public void setStatus(Integer status) { @@ -273,14 +293,36 @@ public class FlowRecord implements java.io.Serializable { this.statusName = statusName; } + /** + * 步骤类型0:依次,1:或签(同时通知,一人通过或拒绝即可),2会签(同时通知,所有人同意才可) + * @return + */ public Integer getType() { return type; } - + /** + * 步骤类型0:依次,1:或签(同时通知,一人通过或拒绝即可),2会签(同时通知,所有人同意才可) + * @param type + */ public void setType(Integer type) { this.type = type; } + /** + * flow_manager表中id + * @return + */ + public Long getProcessId() { + return processId; + } + /** + * flow_manager表中id + * @param processId + */ + public void setProcessId(Long processId) { + this.processId = processId; + } + @Override public String toString() { return "FlowRecord{" + @@ -299,6 +341,8 @@ public class FlowRecord implements java.io.Serializable { ",status=" + status + ",flowStaffIdRole=" + flowStaffIdRole + ",statusName=" + statusName + + ",type=" + type + + ",processId=" + processId + "}"; } } \ No newline at end of file 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 f071c467..e1864723 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 @@ -796,14 +796,16 @@ public class ResultRecordServiceImpl extends ServiceImpl + - 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, status_name AS statusName, type AS type + 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, status_name AS statusName, type AS type, process_id AS processId @@ -50,6 +51,7 @@ flow_staff_id_role, status_name, type, + process_id, is_delete, gmt_create, gmt_modified @@ -66,48 +68,13 @@ #{ flowStaffIdRole}, #{ statusName}, #{ type}, + #{ processId}, 0, now(), now() ) - - insert into lz_flow_record( - department_level, - record_id, - approval_staff_id, - approval_staff_name, - flow_name, - record_staff_id, - flow_id, - flow_index, - status, - flow_staff_id_role, - status_name, - type, - is_delete, - gmt_create, - gmt_modified - )values( - #{ departmentLevel}, - #{ recordId}, - #{ approvalStaffId}, - #{ approvalStaffName}, - #{ flowName}, - #{ recordStaffId}, - #{ flowId}, - #{ flowIndex}, - #{ status}, - #{ flowStaffIdRole}, - #{ statusName}, - #{ type}, - 0, - #{ gmtCreate}, - #{ gmtModified} - ) - - update @@ -126,7 +93,8 @@ status = #{status}, flow_staff_id_role = #{flowStaffIdRole}, status_name = #{statusName}, - type = #{type} + type = #{type}, + process_id = #{processId} ,gmt_modified = now() where id = #{id} @@ -150,7 +118,8 @@ status = #{status}, flow_staff_id_role = #{flowStaffIdRole}, status_name = #{statusName}, - type = #{type} + type = #{type}, + process_id = #{processId} ,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 cfcf9bf7..d8784020 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -125,27 +125,8 @@ public class MysqlMain { } List list = new ArrayList(); - /*list.add(new TablesBean("lz_evaluation_group")); - list.add(new TablesBean("lz_evaluation_start_staff")); - list.add(new TablesBean("lz_flow_approval_role")); - list.add(new TablesBean("lz_flow_change")); - list.add(new TablesBean("lz_flow_chart")); - list.add(new TablesBean("lz_flow_chart_role")); - list.add(new TablesBean("lz_flow_start")); - list.add(new TablesBean("lz_result_calculate")); - list.add(new TablesBean("lz_result_dimension"));' - list.add(new TablesBean("lz_result_grade"));*/ - //list.add(new TablesBean("lz_result_model")); - //list.add(new TablesBean("lz_result_score")); - //list.add(new TablesBean("lz_result_taget_lib")); - //list.add(new TablesBean("lz_flow_chart_detail_record")); - //list.add(new TablesBean("lz_flow_approval_role")); - - list.add(new TablesBean("lz_staff_menu")); - list.add(new TablesBean("lz_staff_role")); - list.add(new TablesBean("lz_staff_role_evaluation_group")); - list.add(new TablesBean("lz_staff_role_menu")); + list.add(new TablesBean("lz_flow_record")); List list2 = new ArrayList(); Map map = MysqlUtil2ShowCreateTable.getComments(); From 02ea9a0c984639cd09479871d15781aedcdd0de8 Mon Sep 17 00:00:00 2001 From: wulin Date: Tue, 3 Nov 2020 13:44:25 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=8A=8A=E4=BF=9D=E5=AD=98=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=98=AF=E7=9A=84=E5=BF=85=E5=A4=87=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=94=BE=E5=88=B0=E5=8F=91=E8=B5=B7=E8=80=83=E6=A0=B8=E6=97=B6?= =?UTF-8?q?=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlowStartServiceImpl.java | 73 +++++++++++++++++-- .../controller/FlowChartController.java | 36 +-------- 2 files changed, 68 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java index bb59aaed..a69cb6e9 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java @@ -24,10 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -80,6 +77,9 @@ public class FlowStartServiceImpl extends ServiceImpl evaluationGroups = evaluationGroupService.selectEvaluationGroupByIds(ids); + Map> mustRole = new HashMap<>(); + Map> selfMustRole = new HashMap<>(); + for (int n = 0; n < evaluationGroups.size(); n++ ) { EvaluationGroup evaluationGroup = evaluationGroups.get(n); @@ -202,7 +205,7 @@ public class FlowStartServiceImpl extends ServiceImpl> staffManages, List staffIds){ + Map> staffManages, List staffIds, + Map> mustRole, Map> selfMustRole){ List resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId()); @@ -317,8 +321,24 @@ public class FlowStartServiceImpl extends ServiceImpl flowChartRoles = null; + //获取必备权限 + if(mustRole.containsKey(flow.getChartId())){ + flowChartRoles = mustRole.get(flow.getChartId()); + }else{ + flowChartRoles = + flowChartRoleService.selectFlowChartRolesByChartIdAndType(flow.getChartId(), 1); + mustRole.put(flow.getChartId(), flowChartRoles); + } + + + if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.APPOINT.getCode()){//指定人员的 + + String[] optIds = flowChartDetailRecord.getOptIds().split(","); + + for (String id:optIds ) { @@ -334,6 +354,20 @@ public class FlowStartServiceImpl extends ServiceImpl 0){//设置必备权限 + String roles = flowChartRoles.stream().map(new Function() { + @Override + public String apply(FlowChartRole flowChartRole) { + return flowChartRole.getRoleId().toString(); + } + }).collect(Collectors.joining(",")); + if(flowApprovalRole.getRoleId() == null || flowApprovalRole.getRoleId().length() == 0){ + flowApprovalRole.setRoleId(roles); + }else{ + flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds() + "," + roles); + } + } } //stepIndex++; if(flowApprovalRole != null){ @@ -341,6 +375,17 @@ public class FlowStartServiceImpl extends ServiceImpl flowChartRoles1 = + flowChartRoleService.selectFlowChartRolesByChartIdAndType(flow.getChartId(), 2); + selfMustRole.put(flow.getChartId(), flowChartRoles1); + flowChartRoles.addAll(flowChartRoles1); + } + } flowApprovalRole = new FlowApprovalRole(); flowApprovalRole.setFlowId(flow.getId()); flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); @@ -349,9 +394,25 @@ public class FlowStartServiceImpl extends ServiceImpl 0){//设置必备权限 + String roles = flowChartRoles.stream().map(new Function() { + @Override + public String apply(FlowChartRole flowChartRole) { + return flowChartRole.getRoleId().toString(); + } + }).collect(Collectors.joining(",")); + if(flowApprovalRole.getRoleId() == null || flowApprovalRole.getRoleId().length() == 0){ + flowApprovalRole.setRoleId(roles); + }else{ + flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds() + "," + roles); + } + } + stepIndex++; } + + } //插入记录/flowChart/saveDetailProcs if(flowApprovalRoles.size() > 0){ diff --git a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java index e0a016a7..394fa38c 100644 --- a/src/main/java/com/lz/modules/performance/controller/FlowChartController.java +++ b/src/main/java/com/lz/modules/performance/controller/FlowChartController.java @@ -145,49 +145,15 @@ public class FlowChartController { if(flowChartDetailRecordListReq.getRecordSimpleDtos() != null && flowChartDetailRecordListReq.getRecordSimpleDtos().size() > 0){ List inserts = new ArrayList<>(); List updaes = new ArrayList<>(); - Map> mustRole = new HashMap<>(); - Map> selfMustRole = new HashMap<>(); + int index = 0; for (FlowChartDetailRecordSimpleReq req:flowChartDetailRecordListReq.getRecordSimpleDtos() ) { FlowChartDetailRecord flowChartDetailRecord = new FlowChartDetailRecord(); BeanUtils.copyProperties(req, flowChartDetailRecord); flowChartDetailRecord.setChartId(flowChartDetailRecordListReq.getId()); - List flowChartRoles = null; - if(mustRole.containsKey(flowChartDetailRecordListReq.getId())){ - flowChartRoles = mustRole.get(flowChartDetailRecordListReq.getId()); - }else{ - flowChartRoles = - flowChartRoleService.selectFlowChartRolesByChartIdAndType(flowChartDetailRecordListReq.getId(), 1); - mustRole.put(flowChartDetailRecordListReq.getId(), flowChartRoles); - } - if(flowChartDetailRecord.getOptType().intValue() == -1){//考核人是自己的 - //获取被考核人的必备权限 - if(selfMustRole.containsKey(flowChartDetailRecordListReq.getId())){ - flowChartRoles.addAll(selfMustRole.get(flowChartDetailRecordListReq.getId())); - }else{ - List flowChartRoles1 = - flowChartRoleService.selectFlowChartRolesByChartIdAndType(flowChartDetailRecordListReq.getId(), 2); - selfMustRole.put(flowChartDetailRecordListReq.getId(), flowChartRoles1); - flowChartRoles.addAll(flowChartRoles1); - } - } - - if(flowChartRoles != null && flowChartRoles.size() > 0){//设置必备权限 - String roles = flowChartRoles.stream().map(new Function() { - @Override - public String apply(FlowChartRole flowChartRole) { - return flowChartRole.getRoleId().toString(); - } - }).collect(Collectors.joining(",")); - if(flowChartDetailRecord.getRoleIds() == null || flowChartDetailRecord.getRoleIds().length() == 0){ - flowChartDetailRecord.setRoleIds(roles); - }else{ - flowChartDetailRecord.setRoleIds(flowChartDetailRecord.getRoleIds() + "," + roles); - } - } flowChartDetailRecord.setEvaluationGroupId(flowChartDetailRecordListReq.getEvaluationGroupId()); flowChartDetailRecord.setStepIndex(index); From c9cee68261b93f084da05b1993b1b5440ae45b09 Mon Sep 17 00:00:00 2001 From: wulin Date: Tue, 3 Nov 2020 13:45:48 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=8A=8A=E4=BF=9D=E5=AD=98=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=98=AF=E7=9A=84=E5=BF=85=E5=A4=87=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=94=BE=E5=88=B0=E5=8F=91=E8=B5=B7=E8=80=83=E6=A0=B8=E6=97=B6?= =?UTF-8?q?=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lz/modules/flow/service/impl/FlowStartServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java index a69cb6e9..0cfd1966 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java @@ -129,13 +129,15 @@ public class FlowStartServiceImpl extends ServiceImpl> staffManages = new HashedMap();//部门(id+几级)和部门几级管理对应关系,减少数据库查找 + Map> mustRole = new HashMap<>(); + Map> selfMustRole = new HashMap<>(); for (GroupStaffs groupStaffs:startGroupStaffIds.getGroups() ) { List staffSimpleInfos = staffService.selectStaffSimpleInfos(groupStaffs.getStaffIds()); if(staffSimpleInfos.size() == 0){ R.error(groupStaffs.getEvaluationGroup().getName() + "——无有效考核人员"); } - switch (start(groupStaffs.getEvaluationGroup(), flowStart, staffManages, staffSimpleInfos)){ + switch (start(groupStaffs.getEvaluationGroup(), flowStart, staffManages, staffSimpleInfos, mustRole, selfMustRole)){ case 1: return R.error(groupStaffs.getEvaluationGroup().getName() + "——没有设置考核模板"); From b11e3af70d45ad26daa5c6cf33e85c33ce76ba73 Mon Sep 17 00:00:00 2001 From: wulin Date: Tue, 3 Nov 2020 14:08:06 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lz/modules/flow/service/impl/FlowStartServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java index 0cfd1966..58364636 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowStartServiceImpl.java @@ -367,7 +367,7 @@ public class FlowStartServiceImpl extends ServiceImpl