diff --git a/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java b/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java index 98f574f1..f0c82d48 100644 --- a/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java +++ b/src/main/java/com/lz/common/emun/WorkMsgTypeEnum.java @@ -1,6 +1,6 @@ package com.lz.common.emun; -import javax.security.auth.message.AuthStatus; + /** * 绩效通知相关type @@ -13,11 +13,17 @@ public enum WorkMsgTypeEnum { //绩效通过领导审核的通知,这一步提交到HR,提交的type LEADER_PASS(2, "绩效已打分", "去提交给人事", "# 绩效已打分\n ## 你的绩效已经打分"), //绩效通过人事,老板审核的最终审核通知 - PASS(3, "绩效通过", "去查看", "# 绩效通过\n ## 你的绩效已经通过"),; + PASS(3, "绩效通过", "去查看", "# 绩效通过\n ## 你的绩效已经通过"), + URGING(4, "绩效催办", "去审批", "# 绩效催办\n ## @提醒您审批"), + ; int type; String title; String btnText; String content; + + + + WorkMsgTypeEnum(int type, String title, String btnText, String content){ this.type = type; this.title = title; @@ -25,6 +31,8 @@ public enum WorkMsgTypeEnum { this.content = content; } + + public static WorkMsgTypeEnum findRoleTypeByCode(int code) { for (WorkMsgTypeEnum workMsgTypeEnum : WorkMsgTypeEnum.values()) { if (workMsgTypeEnum.getType() == code) { diff --git a/src/main/java/com/lz/common/utils/Constant.java b/src/main/java/com/lz/common/utils/Constant.java index bb4c61f7..c7705ffd 100644 --- a/src/main/java/com/lz/common/utils/Constant.java +++ b/src/main/java/com/lz/common/utils/Constant.java @@ -169,4 +169,5 @@ public class Constant { public static final String OSS_BUCCKET = "my-wallet"; public static final Integer TWO = 2; + public static final Integer ONE = 1; } diff --git a/src/main/java/com/lz/common/utils/StringUtil.java b/src/main/java/com/lz/common/utils/StringUtil.java index 9c114e6d..b8fc0456 100644 --- a/src/main/java/com/lz/common/utils/StringUtil.java +++ b/src/main/java/com/lz/common/utils/StringUtil.java @@ -662,4 +662,16 @@ public class StringUtil extends StringUtils { } return randomNum.toString(); } + + public static boolean in(Integer status, Integer ... is) { + if(is == null || is.length <= 0){ + return false; + } + for(Integer i:is){ + if(i.equals(status)){ + return true; + } + } + return false; + } } 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 34db081a..e45382f7 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -40,6 +40,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.io.PrintWriter; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -266,6 +267,10 @@ public class ResultRecordController extends AbstractController { } String superStaff = recordAuthService.selectByStaffId(resultRecord.getStaffId()); int fileCount = recordFileService.selectRecordFileCountByRecordId(resultRecord.getId()); + + if(resultRecord.getStaffId().equals(getUserId()) && StringUtil.in(resultRecord.getStatus() ,1,2,3,5)){ + auth.setSubmited(1); + } return R.ok() .put("staffName", staffEntity.getName()) .put("department1", departmentDto.getDepartment1()) diff --git a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java index 5109f97f..3da2c632 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -44,4 +44,6 @@ public interface FlowRecordMapper extends BaseMapper { List selectFlowRecordByFlowId(@Param("recordId") Long recordId); FlowRecord selectLastFlowNoStatusRecordByRecordId(@Param("recordId") Long recordId); + + List selectFlowRecordByResultRecordIdType(@Param("resultRecordId") Long resultRecordId, @Param("type") Integer type); } \ No newline at end of file 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 0b635bb7..36250494 100644 --- a/src/main/java/com/lz/modules/flow/entity/FlowRecord.java +++ b/src/main/java/com/lz/modules/flow/entity/FlowRecord.java @@ -46,6 +46,8 @@ public class FlowRecord implements java.io.Serializable { private String flowStaffIdRole; //状态名称 private String statusName; + //类型 ,1 表示提交目标,2 表示提交结果 + private Integer type; /** * * @return @@ -271,6 +273,14 @@ public class FlowRecord implements java.io.Serializable { this.statusName = statusName; } + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + @Override public String toString() { return "FlowRecord{" + diff --git a/src/main/java/com/lz/modules/flow/model/Auth.java b/src/main/java/com/lz/modules/flow/model/Auth.java index bfac4a0d..65a52ccd 100644 --- a/src/main/java/com/lz/modules/flow/model/Auth.java +++ b/src/main/java/com/lz/modules/flow/model/Auth.java @@ -28,4 +28,7 @@ public class Auth { private int keyResult37; private int editScore; private int deleteDetail; + private int dissatisfied; + private int submited;//是否己经提交 + } diff --git a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java index f81778e3..bf66f8a9 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -46,4 +46,6 @@ public interface FlowRecordService extends IService { List selectFlowRecordByFlowId(Long recordId); FlowRecord selectLastFlowNoStatusRecordByRecordId(Long resultRecordId); + + List selectFlowRecordByResultRecordIdType(Long recordResultId, Integer type); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java index e018ea91..baaa9595 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java @@ -102,6 +102,7 @@ public class FlowRecordServiceImpl extends ServiceImpl selectFlowRecordByResultRecordIdType(Long resultRecordId, Integer type) { + return flowRecordMapper.selectFlowRecordByResultRecordIdType(resultRecordId,type); + } + } diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultCommentService.java b/src/main/java/com/lz/modules/sys/service/app/ResultCommentService.java index dad213aa..2c40aa72 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultCommentService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultCommentService.java @@ -2,6 +2,7 @@ package com.lz.modules.sys.service.app; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.modules.app.req.ResultRecordReq; +import com.lz.modules.flow.entity.FlowRecord; import com.lz.modules.sys.entity.app.ResultComment; import java.util.List; @@ -38,5 +39,5 @@ public interface ResultCommentService extends IService { ResultComment selectLastComment(Long recordId); - void addOrUpdateComment(ResultRecordReq req,Long userId,int status ); + void addOrUpdateComment(ResultRecordReq req, Long userId, int status , FlowRecord lastUsedFlowRecord); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java index 9d01a2ed..b756d7c5 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java @@ -91,4 +91,6 @@ public interface ResultRecordService extends IService { Map> getStringListMap(List tDepartments); ResultRecord selectResultRecordByStaffIdStatus(Long staffId, int status); + + R reject( ResultRecord resultRecord,ResultRecordReq req, Long userId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultCommentServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultCommentServiceImpl.java index 3a2ab434..78929397 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultCommentServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultCommentServiceImpl.java @@ -84,7 +84,7 @@ public class ResultCommentServiceImpl extends ServiceImpl 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()); - resultRecord.setStatus(req.getStatus()); - List list = JSONObject.parseArray(resultRecord.getFlowStaffIdRole(), StaffRoleDto.class); - if (CollectionUtils.isNotEmpty(list)) { - StaffRoleDto staffRoleDto = list.get(0); - approvalStaff = staffService.selectStaffById(staffRoleDto.getStaffId()); - resultRecord.setCurrentApprovalStaffId(approvalStaff != null ? approvalStaff.getId() : null); - resultRecord.setCurrentApprovalStaffName(approvalStaff != null ? approvalStaff.getName() : null); - } - 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()); - lastFlowRecordNoStatus.setGmtCreate(new Date()); //更新驳回时间 - 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);// 新插入一条提交记录 - - if(mySelf.getId().longValue() == approvalStaff.getId().longValue()){//同一个人 - mySelf.setName("你");//用于替换消息中的@符号。无其他任何作用,不保存 - } - r = R.ok("成功") - .put("from", mySelf) - .put("to", approvalStaff) - .put("type", WorkMsgTypeEnum.REJECT); + r = reject(resultRecord,req,userId); + }else if (req.getStatus() == 7){ + List flowRecords = flowRecordService.selectFlowRecordByResultRecordIdType(req.getRecordResultId(),resultRecord.getType()); + if(flowRecords!=null && flowRecords.size() == 2){ // 表示可以撤回 + r = reject(resultRecord,req,userId); + }else if(flowRecords!=null && flowRecords.size() > 2){ + return R.error("你的领导己经审批,不能撤回了"); } + }else if(req.getStatus() == 8 ){ + Long staffId = resultRecord.getStaffId(); + Long approvalStaffId = resultRecord.getCurrentApprovalStaffId(); + StaffEntity mySelf = staffService.selectStaffById(staffId); + StaffEntity approvalStaff = staffService.selectStaffById(approvalStaffId); + r = R.ok("成功") + .put("from", mySelf) + .put("to", approvalStaff) + .put("type", WorkMsgTypeEnum.URGING); } - resultCommentService.addOrUpdateComment(req, userId, status); + resultCommentService.addOrUpdateComment(req, userId, status,lastUsedFlowRecord); if(r != null){//下面推送消息 if(r.isSuccess()){ StaffEntity mySelf = (StaffEntity)r.get("from"); @@ -624,6 +605,50 @@ public class ResultRecordServiceImpl extends ServiceImpl 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()); + resultRecord.setStatus(req.getStatus()); + List list = JSONObject.parseArray(resultRecord.getFlowStaffIdRole(), StaffRoleDto.class); + if (CollectionUtils.isNotEmpty(list)) { + StaffRoleDto staffRoleDto = list.get(0); + approvalStaff = staffService.selectStaffById(staffRoleDto.getStaffId()); + resultRecord.setCurrentApprovalStaffId(approvalStaff != null ? approvalStaff.getId() : null); + resultRecord.setCurrentApprovalStaffName(approvalStaff != null ? approvalStaff.getName() : null); + } + 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()); + lastFlowRecordNoStatus.setGmtCreate(new Date()); //更新驳回时间 + flowRecordService.updateFlowRecordById(lastFlowRecordNoStatus); + + // 可能会被删除 + FlowRecord lastUsedFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(req.getRecordResultId()); + lastUsedFlowRecord.setId(null); + lastUsedFlowRecord.setStatus(1); + lastUsedFlowRecord.setStatusName(FlowRecordEnum.CONFIRM.getName()); + flowRecordService.insertFlowRecord(lastUsedFlowRecord);// 新插入一条提交记录 + + if(mySelf.getId().longValue() == approvalStaff.getId().longValue()){//同一个人 + mySelf.setName("你");//用于替换消息中的@符号。无其他任何作用,不保存 + } + return R.ok("成功") + .put("from", mySelf) + .put("to", approvalStaff) + .put("type", WorkMsgTypeEnum.REJECT); + } + return R.error("驳回失败"); + } + public void sendWorkMSG(StaffEntity mySelf, StaffEntity toSelf, WorkMsgTypeEnum workMsgTypeEnum , Long recordResultId, int count){ String url = domain + "/management/dingtalklogin?url=";//免登接口 diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index ce736a69..15affb60 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -19,12 +19,13 @@ + - 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 + 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 @@ -48,6 +49,7 @@ status, flow_staff_id_role, status_name, + type, is_delete, gmt_create, gmt_modified @@ -63,6 +65,7 @@ #{ status}, #{ flowStaffIdRole}, #{ statusName}, + #{ type}, 0, now(), now() @@ -86,7 +89,8 @@ flow_index = #{flowIndex}, status = #{status}, flow_staff_id_role = #{flowStaffIdRole}, - status_name = #{statusName} + status_name = #{statusName}, + type = #{type} ,gmt_modified = now() where id = #{id} @@ -109,7 +113,8 @@ flow_index = #{flowIndex}, status = #{status}, flow_staff_id_role = #{flowStaffIdRole}, - status_name = #{statusName} + status_name = #{statusName}, + type = #{type} ,gmt_modified = now() where id = #{id} @@ -122,8 +127,6 @@ - - @@ -151,5 +154,11 @@ + + + + diff --git a/src/test/java/com/lz/mysql/MysqlMain.java b/src/test/java/com/lz/mysql/MysqlMain.java index 4ab58ce2..479cac29 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -63,7 +63,7 @@ public class MysqlMain { } List list = new ArrayList(); - list.add(new TablesBean("lz_result_comment")); + list.add(new TablesBean("lz_flow_record")); List list2 = new ArrayList(); Map map = MysqlUtil2ShowCreateTable.getComments();