Merge branch 'version_performance_2.0' of http://gitlab.ldxinyong.com/enterpriseManagement/lz_management into version_performance_2.0

This commit is contained in:
杜建超 2020-11-03 14:36:23 +08:00
commit f01a49f3c5
6 changed files with 134 additions and 109 deletions

View File

@ -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;
/**
* <p>
* 菜单权限表
* </p>*流转记录表
* @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 +
"}";
}
}

View File

@ -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<FlowStartMapper, FlowStart
@Autowired
private EvaluationGroupService evaluationGroupService;
@Autowired
private FlowChartRoleService flowChartRoleService;
@ -129,13 +129,15 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
Map<String, List<StaffEntity>> staffManages = new HashedMap();//部门(id+几级)和部门几级管理对应关系减少数据库查找
Map<Long, List<FlowChartRole>> mustRole = new HashMap<>();
Map<Long, List<FlowChartRole>> selfMustRole = new HashMap<>();
for (GroupStaffs groupStaffs:startGroupStaffIds.getGroups()
) {
List<StaffSimpleInfo> 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() + "——没有设置考核模板");
@ -191,6 +193,9 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}).collect(Collectors.toList());
List<EvaluationGroup> evaluationGroups = evaluationGroupService.selectEvaluationGroupByIds(ids);
Map<Long, List<FlowChartRole>> mustRole = new HashMap<>();
Map<Long, List<FlowChartRole>> selfMustRole = new HashMap<>();
for (int n = 0; n < evaluationGroups.size(); n++
) {
EvaluationGroup evaluationGroup = evaluationGroups.get(n);
@ -202,7 +207,7 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
return R.error(evaluationGroup.getName() + "——无有效考核人员");
}
switch (start(evaluationGroup, flowStart, staffManages, staffIds)){
switch (start(evaluationGroup, flowStart, staffManages, staffIds, mustRole, selfMustRole)){
case 1:
return R.error(evaluationGroup.getName() + "——没有设置考核模板");
@ -220,7 +225,8 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
private int start(EvaluationGroup evaluationGroup, FlowStart flowStart,
Map<String, List<StaffEntity>> staffManages, List<StaffSimpleInfo> staffIds){
Map<String, List<StaffEntity>> staffManages, List<StaffSimpleInfo> staffIds,
Map<Long, List<FlowChartRole>> mustRole, Map<Long, List<FlowChartRole>> selfMustRole){
List<ResultModelDto> resultModelDtos = resultModelService.selectResultDtoByGroupId(evaluationGroup.getId());
@ -317,8 +323,24 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
flowService.insertFlow(flow);
FlowApprovalRole flowApprovalRole = null;
List<FlowChartRole> 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 +356,20 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
//依次
stepIndex++;
}
if(flowChartRoles != null && flowChartRoles.size() > 0){//设置必备权限
String roles = flowChartRoles.stream().map(new Function<FlowChartRole, String>() {
@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(flowApprovalRole.getRoleId() + "," + roles);
}
}
}
//stepIndex++;
if(flowApprovalRole != null){
@ -341,6 +377,17 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
}
}else{
if(flowChartDetailRecord.getOptType().intValue() == ChartOptType.SELF.getCode()) {//指定人员的
//获取被考核人的必备权限
if (selfMustRole.containsKey(flow.getChartId())) {
flowChartRoles.addAll(selfMustRole.get(flow.getChartId()));
} else {
List<FlowChartRole> 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 +396,25 @@ public class FlowStartServiceImpl extends ServiceImpl<FlowStartMapper, FlowStart
flowApprovalRoles.add(flowApprovalRole);
flowApprovalRole.setStepIndex(stepIndex);
if(flowChartRoles != null && flowChartRoles.size() > 0){//设置必备权限
String roles = flowChartRoles.stream().map(new Function<FlowChartRole, String>() {
@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(flowApprovalRole.getRoleId() + "," + roles);
}
}
stepIndex++;
}
}
//插入记录/flowChart/saveDetailProcs
if(flowApprovalRoles.size() > 0){

View File

@ -145,49 +145,15 @@ public class FlowChartController {
if(flowChartDetailRecordListReq.getRecordSimpleDtos() != null && flowChartDetailRecordListReq.getRecordSimpleDtos().size() > 0){
List<FlowChartDetailRecord> inserts = new ArrayList<>();
List<FlowChartDetailRecord> updaes = new ArrayList<>();
Map<Long, List<FlowChartRole>> mustRole = new HashMap<>();
Map<Long, List<FlowChartRole>> selfMustRole = new HashMap<>();
int index = 0;
for (FlowChartDetailRecordSimpleReq req:flowChartDetailRecordListReq.getRecordSimpleDtos()
) {
FlowChartDetailRecord flowChartDetailRecord = new FlowChartDetailRecord();
BeanUtils.copyProperties(req, flowChartDetailRecord);
flowChartDetailRecord.setChartId(flowChartDetailRecordListReq.getId());
List<FlowChartRole> 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<FlowChartRole> 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<FlowChartRole, String>() {
@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);

View File

@ -796,14 +796,16 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
}
flowRecord.setApprovalStaffName(staffEntity.getName());
flowRecord.setApprovalStaffId(staffEntity.getId());
flowRecord.setFlowName(getFlow(flows, flowApprovalRole.getFlowId()).getOptDesc());
flowRecord.setRecordStaffId(resultRecord.getStaffId());
flowRecord.setFlowId(flowApprovalRole.getFlowId());
FlowChart flowChart = flowService.selectFlowChartByChartId(flowApprovalRole.getFlowId());
flowRecord.setProcessId(flowChart.getProcessId());
String staffRole = StaffRoles.getStaffRole(staffEntity.getId(), StringUtil.strToLongs(flowApprovalRole.getRoleId()));
if (i == 0) {
flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus());
resultRecord.setFlowStaffIdRole(staffRole);
FlowChart flowChart = flowService.selectFlowChartByChartId(flowRecord.getFlowId());
resultRecord.setFlowProcess(flowChart.getFlowProcess());
} else {
flowRecord.setStatus(FlowRecordStatusEnums.UN_TO_STATUS.getStatus());

View File

@ -20,12 +20,13 @@
<result column="flow_staff_id_role" property="flowStaffIdRole"/>
<result column="status_name" property="statusName"/>
<result column="type" property="type"/>
<result column="process_id" property="processId"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
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
</sql>
@ -50,6 +51,7 @@
<if test="flowStaffIdRole != null">flow_staff_id_role, </if>
<if test="statusName != null">status_name, </if>
<if test="type != null">type, </if>
<if test="processId != null">process_id, </if>
is_delete,
gmt_create,
gmt_modified
@ -66,48 +68,13 @@
<if test="flowStaffIdRole != null">#{ flowStaffIdRole}, </if>
<if test="statusName != null">#{ statusName}, </if>
<if test="type != null">#{ type}, </if>
<if test="processId != null">#{ processId}, </if>
0,
now(),
now()
)
</insert>
<insert id="copyFlowRecord" parameterType="FlowRecord" useGeneratedKeys="true" keyProperty="id" >
insert into lz_flow_record(
<if test="departmentLevel != null">department_level, </if>
<if test="recordId != null">record_id, </if>
<if test="approvalStaffId != null">approval_staff_id, </if>
<if test="approvalStaffName != null">approval_staff_name, </if>
<if test="flowName != null">flow_name, </if>
<if test="recordStaffId != null">record_staff_id, </if>
<if test="flowId != null">flow_id, </if>
<if test="flowIndex != null">flow_index, </if>
<if test="status != null">status, </if>
<if test="flowStaffIdRole != null">flow_staff_id_role, </if>
<if test="statusName != null">status_name, </if>
<if test="type != null">type, </if>
is_delete,
gmt_create,
gmt_modified
)values(
<if test="departmentLevel != null">#{ departmentLevel}, </if>
<if test="recordId != null">#{ recordId}, </if>
<if test="approvalStaffId != null">#{ approvalStaffId}, </if>
<if test="approvalStaffName != null">#{ approvalStaffName}, </if>
<if test="flowName != null">#{ flowName}, </if>
<if test="recordStaffId != null">#{ recordStaffId}, </if>
<if test="flowId != null">#{ flowId}, </if>
<if test="flowIndex != null">#{ flowIndex}, </if>
<if test="status != null">#{ status}, </if>
<if test="flowStaffIdRole != null">#{ flowStaffIdRole}, </if>
<if test="statusName != null">#{ statusName}, </if>
<if test="type != null">#{ type}, </if>
0,
#{ gmtCreate},
#{ gmtModified}
)
</insert>
<update id="updateFlowRecordById" parameterType="FlowRecord" >
update
@ -126,7 +93,8 @@
<if test="status != null">status = #{status},</if>
<if test="flowStaffIdRole != null">flow_staff_id_role = #{flowStaffIdRole},</if>
<if test="statusName != null">status_name = #{statusName},</if>
<if test="type != null">type = #{type}</if>
<if test="type != null">type = #{type},</if>
<if test="processId != null">process_id = #{processId}</if>
</trim>
,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}
</update>

View File

@ -125,27 +125,8 @@ public class MysqlMain {
}
List<TablesBean> list = new ArrayList<TablesBean>();
/*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<TablesBean> list2 = new ArrayList<TablesBean>();
Map<String, String> map = MysqlUtil2ShowCreateTable.getComments();