Merge branch 'master' into version_equipment_20200901

This commit is contained in:
wulin 2020-09-03 16:33:56 +08:00
commit 6ae9b4c897
11 changed files with 172 additions and 34 deletions

View File

@ -9,7 +9,7 @@ public enum WorkMsgTypeEnum {
//绩效提交审核的通知自己提交给领导自己提交给人事人事提交给老板
SUBMIT(0, "绩效提交", "去审核", "# 绩效提交\n ## @的绩效已经提交"),
//绩效打回审核的通知
REJECT(1, "绩效驳回", "去修改", "# 绩效驳回\n ## 的绩效已经驳回"),
REJECT(1, "绩效驳回", "去修改", "# 绩效驳回\n ## @的绩效已经驳回"),
//绩效通过领导审核的通知这一步提交到HR提交的type
LEADER_PASS(2, "绩效已打分", "去提交给人事", "# 绩效已打分\n ## 你的绩效已经打分"),
//绩效通过人事老板审核的最终审核通知

View File

@ -0,0 +1,69 @@
package com.lz.datasource.interceptor;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.interceptor.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by guozp on 2017/8/28.
*/
@Aspect
@Configuration
public class TxAdviceInterceptor {
private static final int TX_METHOD_TIMEOUT = 30;
private static final String AOP_POINTCUT_EXPRESSION = "execution (* com.lz..*.*Impl.*(..))";
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public TransactionInterceptor txAdvice() {
NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();
/*当前存在事务就使用当前事务,当前不存在事务就创建一个新的事务*/
RuleBasedTransactionAttribute requiredTx = new RuleBasedTransactionAttribute();
List<RollbackRuleAttribute> list = new ArrayList<>();
list.add(new RollbackRuleAttribute(RuntimeException.class));
list.add(new RollbackRuleAttribute(Exception.class));
requiredTx.setRollbackRules(list);
requiredTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
requiredTx.setTimeout(TX_METHOD_TIMEOUT);
Map<String, TransactionAttribute> txMap = new HashMap<>();
txMap.put("add*", requiredTx);
txMap.put("save*", requiredTx);
txMap.put("insert*", requiredTx);
txMap.put("update*", requiredTx);
txMap.put("delete*", requiredTx);
txMap.put("get*", requiredTx);
txMap.put("query*", requiredTx);
txMap.put("*", requiredTx);
source.setNameMap(txMap);
TransactionInterceptor txAdvice = new TransactionInterceptor(transactionManager, source);
return txAdvice;
}
@Bean
public Advisor txAdviceAdvisor() {
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
return new DefaultPointcutAdvisor(pointcut, txAdvice());
}
}

View File

@ -42,4 +42,6 @@ public interface FlowRecordMapper extends BaseMapper<FlowRecord> {
List<FlowRecord> selectFlowRecordByResultRecordIdFlowId(@Param("recordId") Long recordId);
List<FlowRecord> selectFlowRecordByFlowId(@Param("recordId") Long recordId);
FlowRecord selectLastFlowNoStatusRecordByRecordId(@Param("recordId") Long recordId);
}

View File

@ -9,7 +9,7 @@ import java.util.Date;
* 菜单权限表
* </p>*流转记录表
* @author quyixiao
* @since 2020-08-21
* @since 2020-09-03
*/
@Data
@ -44,6 +44,8 @@ public class FlowRecord implements java.io.Serializable {
private Integer status;
// 员工&权限id
private String flowStaffIdRole;
//状态名称
private String statusName;
/**
*
* @return
@ -254,6 +256,21 @@ public class FlowRecord implements java.io.Serializable {
this.flowStaffIdRole = flowStaffIdRole;
}
/**
* 状态名称
* @return
*/
public String getStatusName() {
return statusName;
}
/**
* 状态名称
* @param statusName
*/
public void setStatusName(String statusName) {
this.statusName = statusName;
}
@Override
public String toString() {
return "FlowRecord{" +
@ -271,6 +288,7 @@ public class FlowRecord implements java.io.Serializable {
",flowIndex=" + flowIndex +
",status=" + status +
",flowStaffIdRole=" + flowStaffIdRole +
",statusName=" + statusName +
"}";
}
}

View File

@ -0,0 +1,26 @@
package com.lz.modules.flow.enums;
public enum FlowRecordEnum {
APPROVAL("通过"), REJECT("驳回"),COMMIT("提交"), CONFIRM("确认中"), START("开始"), END("结束"),APPROVALING("审批中");
private String name;
FlowRecordEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
System.out.println(APPROVAL.getName());
}
}

View File

@ -44,4 +44,6 @@ public interface FlowRecordService extends IService<FlowRecord> {
List<FlowRecord> selectFlowRecordByResultRecordIdFlowId(Long recordResultId);
List<FlowRecord> selectFlowRecordByFlowId(Long recordId);
FlowRecord selectLastFlowNoStatusRecordByRecordId(Long resultRecordId);
}

View File

@ -7,6 +7,7 @@ import com.lz.modules.app.service.StaffService;
import com.lz.modules.app.utils.t.OneTuple;
import com.lz.modules.flow.dao.FlowRecordMapper;
import com.lz.modules.flow.entity.FlowRecord;
import com.lz.modules.flow.enums.FlowRecordEnum;
import com.lz.modules.flow.model.StaffRoleDto;
import com.lz.modules.flow.service.FlowRecordService;
import com.lz.modules.sys.entity.app.ResultRecord;
@ -102,6 +103,7 @@ public class FlowRecordServiceImpl extends ServiceImpl<FlowRecordMapper, FlowRec
flowRecord.setRecordId(resultRecord.getId());
flowRecord.setStatus(0);
flowRecord.setDepartmentLevel(Constant.ME);
flowRecord.setStatusName(FlowRecordEnum.START.getName());
flowRecordMapper.insertFlowRecord(flowRecord);
}
@ -115,5 +117,10 @@ public class FlowRecordServiceImpl extends ServiceImpl<FlowRecordMapper, FlowRec
return flowRecordMapper.selectFlowRecordByFlowId(recordId);
}
@Override
public FlowRecord selectLastFlowNoStatusRecordByRecordId(Long resultRecordId) {
return flowRecordMapper.selectLastFlowNoStatusRecordByRecordId(resultRecordId);
}
}

View File

@ -261,35 +261,13 @@ public class ResultDetailServiceImpl extends ServiceImpl<ResultDetailMapper, Res
SimpleDateFormat myFmt2 = new SimpleDateFormat("MM-dd HH:mm");
FlowRecord lastFlowRecord = null;
if (CollectionUtils.isNotEmpty(flowRecordList)) {
int index = 0;
String lastStatusStr = "";
for (FlowRecord flowRecord : flowRecordList) {
String name = flowRecord.getApprovalStaffName();
String time = myFmt2.format(flowRecord.getGmtCreate());
String statusStr = "通过";
if (flowRecord.getStatus().equals(0)) {
lastFlowRecord = flowRecord;
} else if (flowRecord.getStatus().equals(1)) {
if (index + 1 <= flowRecordList.size() - 1) {
FlowRecord flowRecord1 = flowRecordList.get(index + 1);
if (flowRecord1.getStatus().equals(0)) {
statusStr = "驳回";
}
}
}
if(index ==0){
stepList.add(new Step(name, time, 1, "提交"));
}else if (index == flowRecordList.size() - 1) {
if(resultRecord.getStatus() == 4 ){
stepList.add(new Step(name, time, 1, "结束"));
}else{
stepList.add(new Step(name, time, 1, "驳回".equals(lastStatusStr) ? "确认" : "审批中"));
}
} else {
stepList.add(new Step(name, time, 1, "驳回".equals(lastStatusStr) ? "确认" : statusStr));
}
lastStatusStr = statusStr;
index++;
stepList.add(new Step(name, time, 1, flowRecord.getStatusName()));
}
}
int flowIndex = lastFlowRecord != null ? lastFlowRecord.getFlowIndex() + 1 : 1;

View File

@ -18,6 +18,7 @@ import com.lz.modules.app.service.DepartmentsStaffRelateService;
import com.lz.modules.app.service.StaffService;
import com.lz.modules.app.utils.t.TwoTuple;
import com.lz.modules.flow.entity.*;
import com.lz.modules.flow.enums.FlowRecordEnum;
import com.lz.modules.flow.model.StaffRoleDto;
import com.lz.modules.flow.model.TypeFlowDto;
import com.lz.modules.flow.model.TypeRoleDto;
@ -373,7 +374,6 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
}
}
log.info("approvalList approval : " + Arrays.toString(approvalList.toArray()) );
List<Flow> flows = flowService.selectByFlowId(flowId);
FlowRecord lastFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(resultRecordId);
FlowRecord notFlowRecord = flowRecordService.selectNotApprovalStaffIdFlowRecords(resultRecord.getId());
@ -385,6 +385,7 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
int index = getDepartmentLevelIndex(flows, flowIndex);
if (index < 0 || index >= approvalList.size()) { //表示流程己经结束
lastFlowRecord.setFlowName(mySelf.getName() + "-审批通过");
lastFlowRecord.setStatusName(FlowRecordEnum.END.getName());
flowRecordService.updateCoverFlowRecordById(lastFlowRecord);
resultRecordService.updateFlowStaffIdRoleToNull(resultRecord.getId());// 更新用户权限
return R.ok("流程审批结束")
@ -428,6 +429,18 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
flowRecord.setDepartmentLevel(departmentLevel);
String staffRoles = JSON.toJSONString(staffRoleDtos);
flowRecord.setFlowStaffIdRole(staffRoles);
flowRecord.setStatusName(FlowRecordEnum.APPROVALING.getName());
FlowRecord lastFlowRecordNoStatus = flowRecordService.selectLastFlowNoStatusRecordByRecordId(resultRecordId);
// 如果上一步是开始则不进行修改如果上一步是确认中改成提交如果上一点是审批中将上一步改成通过
if (lastFlowRecordNoStatus != null
&& !lastFlowRecordNoStatus.getStatusName().equals(FlowRecordEnum.START.getName())) {
lastFlowRecordNoStatus.setStatusName(FlowRecordEnum.APPROVAL.getName());
} else if (lastFlowRecordNoStatus != null
&& lastFlowRecordNoStatus.getStatusName().equals(FlowRecordEnum.CONFIRM.getName())) {
lastFlowRecordNoStatus.setStatusName(FlowRecordEnum.COMMIT.getName());
}
flowRecordService.insertFlowRecord(flowRecord);
resultRecord.setFlowStaffIdRole(staffRoles);
resultRecord.setStatus(1); //审批中
@ -507,6 +520,8 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
} else if (req.getStatus() == 5) { // 驳回
status = 5;
List<FlowRecord> flowRecords = flowRecordService.selectFlowRecordByResultRecordIdFlowId(req.getRecordResultId());
StaffEntity mySelf = staffService.selectStaffById(resultRecord.getStaffId());
StaffEntity approvalStaff = mySelf;
if (flowRecords.size() >= 2) {
FlowRecord secondFlowRecord = flowRecords.get(flowRecords.size() - 2);
resultRecord.setFlowStaffIdRole(secondFlowRecord.getFlowStaffIdRole());
@ -514,27 +529,36 @@ public class ResultRecordServiceImpl extends ServiceImpl<ResultRecordMapper, Res
List<StaffRoleDto> list = JSONObject.parseArray(resultRecord.getFlowStaffIdRole(), StaffRoleDto.class);
if (CollectionUtils.isNotEmpty(list)) {
StaffRoleDto staffRoleDto = list.get(0);
StaffEntity approvalStaff = staffService.selectStaffById(staffRoleDto.getStaffId());
approvalStaff = staffService.selectStaffById(staffRoleDto.getStaffId());
resultRecord.setCurrentApprovalStaffId(approvalStaff != null ? approvalStaff.getId() : null);
resultRecord.setCurrentApprovalStaffName(approvalStaff != null ? approvalStaff.getName() : null);
}
resultRecordService.updateResultRecordById(resultRecord);
resultRecordService.updateResultRecordById(resultRecord);
FlowRecord lastFlowRecord = flowRecords.get(flowRecords.size() - 1);
lastFlowRecord.setStatus(1);
flowRecordService.updateFlowRecordById(lastFlowRecord);
FlowRecord lastFlowRecordNoStatus = flowRecordService.selectLastFlowNoStatusRecordByRecordId(req.getRecordResultId());
lastFlowRecordNoStatus.setStatusName(FlowRecordEnum.REJECT.getName());
flowRecordService.updateFlowRecordById(lastFlowRecordNoStatus);
// 可能会被删除
FlowRecord lastUsedFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(req.getRecordResultId());
lastUsedFlowRecord.setId(null);
lastUsedFlowRecord.setGmtCreate(new Date());
lastUsedFlowRecord.setGmtModified(new Date());
lastUsedFlowRecord.setStatus(1);
lastUsedFlowRecord.setStatusName(FlowRecordEnum.CONFIRM.getName());
flowRecordService.insertFlowRecord(lastUsedFlowRecord);// 新插入一条提交记录
StaffEntity mySelf = staffService.selectStaffById(resultRecord.getStaffId());
if(mySelf.getId().longValue() == approvalStaff.getId().longValue()){//同一个人
mySelf.setName("");//用于替换消息中的@符号无其他任何作用不保存
}
r = R.ok("成功")
.put("from", mySelf)
.put("to", mySelf)
.put("to", approvalStaff)
.put("type", WorkMsgTypeEnum.REJECT);
}
}

View File

@ -18,12 +18,13 @@
<result column="flow_index" property="flowIndex"/>
<result column="status" property="status"/>
<result column="flow_staff_id_role" property="flowStaffIdRole"/>
<result column="status_name" property="statusName"/>
</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
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
</sql>
@ -46,6 +47,7 @@
<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>
is_delete,
gmt_create,
gmt_modified
@ -60,6 +62,7 @@
<if test="flowIndex != null">#{ flowIndex}, </if>
<if test="status != null">#{ status}, </if>
<if test="flowStaffIdRole != null">#{ flowStaffIdRole}, </if>
<if test="statusName != null">#{ statusName}, </if>
0,
now(),
now()
@ -82,7 +85,8 @@
<if test="flowId != null">flow_id = #{flowId},</if>
<if test="flowIndex != null">flow_index = #{flowIndex},</if>
<if test="status != null">status = #{status},</if>
<if test="flowStaffIdRole != null">flow_staff_id_role = #{flowStaffIdRole}</if>
<if test="flowStaffIdRole != null">flow_staff_id_role = #{flowStaffIdRole},</if>
<if test="statusName != null">status_name = #{statusName}</if>
</trim>
,gmt_modified = now()
where id = #{id}
@ -104,7 +108,8 @@
flow_id = #{flowId},
flow_index = #{flowIndex},
status = #{status},
flow_staff_id_role = #{flowStaffIdRole}
flow_staff_id_role = #{flowStaffIdRole},
status_name = #{statusName}
,gmt_modified = now()
where id = #{id}
</update>
@ -116,6 +121,9 @@
<select id="selectLastFlowRecordByRecordId" resultType="com.lz.modules.flow.entity.FlowRecord">
select * from lz_flow_record where is_delete = 0 and record_id = #{recordId} and status = 0 order by id desc limit 1
</select>
@ -138,6 +146,10 @@
select * from lz_flow_record where is_delete = 0 and record_id = #{recordId}
</select>
<select id="selectLastFlowNoStatusRecordByRecordId" resultType="com.lz.modules.flow.entity.FlowRecord">
select * from lz_flow_record where is_delete = 0 and record_id = #{recordId} order by id desc limit 1
</select>
</mapper>

View File

@ -63,7 +63,7 @@ public class MysqlMain {
}
List<TablesBean> list = new ArrayList<TablesBean>();
list.add(new TablesBean("lz_result_detail"));
list.add(new TablesBean("lz_flow_record"));
List<TablesBean> list2 = new ArrayList<TablesBean>();
Map<String, String> map = MysqlUtil2ShowCreateTable.getComments();