Merge branch 'master' into version_equipment_20200901
This commit is contained in:
commit
6ae9b4c897
@ -9,7 +9,7 @@ public enum WorkMsgTypeEnum {
|
||||
//绩效提交审核的通知(自己提交给领导,自己提交给人事,人事提交给老板)
|
||||
SUBMIT(0, "绩效提交", "去审核", "# 绩效提交\n ## @的绩效已经提交"),
|
||||
//绩效打回审核的通知
|
||||
REJECT(1, "绩效驳回", "去修改", "# 绩效驳回\n ## 你的绩效已经驳回"),
|
||||
REJECT(1, "绩效驳回", "去修改", "# 绩效驳回\n ## @的绩效已经驳回"),
|
||||
//绩效通过领导审核的通知,这一步提交到HR,提交的type
|
||||
LEADER_PASS(2, "绩效已打分", "去提交给人事", "# 绩效已打分\n ## 你的绩效已经打分"),
|
||||
//绩效通过人事,老板审核的最终审核通知
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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 +
|
||||
"}";
|
||||
}
|
||||
}
|
||||
26
src/main/java/com/lz/modules/flow/enums/FlowRecordEnum.java
Normal file
26
src/main/java/com/lz/modules/flow/enums/FlowRecordEnum.java
Normal 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());
|
||||
}
|
||||
}
|
||||
@ -44,4 +44,6 @@ public interface FlowRecordService extends IService<FlowRecord> {
|
||||
List<FlowRecord> selectFlowRecordByResultRecordIdFlowId(Long recordResultId);
|
||||
|
||||
List<FlowRecord> selectFlowRecordByFlowId(Long recordId);
|
||||
|
||||
FlowRecord selectLastFlowNoStatusRecordByRecordId(Long resultRecordId);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user