From 87d71c9bce15d4bc910eb45f790423676e6c6e3b Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Fri, 21 Aug 2020 11:27:44 +0800 Subject: [PATCH 1/2] =?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 --- .../java/com/lz/common/utils/Constant.java | 1 + .../controller/ResultRecordController.java | 308 ++---------------- .../lz/modules/flow/entity/FlowRecord.java | 20 +- .../lz/modules/flow/model/StaffRoleDto.java | 4 +- .../flow/service/RecordAuthService.java | 3 + .../service/impl/RecordAuthServiceImpl.java | 26 ++ .../modules/sys/entity/app/ResultRecord.java | 2 +- .../sys/service/app/ResultDetailService.java | 20 ++ .../sys/service/app/ResultRecordService.java | 3 + .../app/impl/ResultDetailServiceImpl.java | 98 ++++++ .../app/impl/ResultRecordServiceImpl.java | 162 ++++++++- .../mapper/flow/FlowRecordMapper.xml | 15 +- src/test/java/com/lz/mysql/MysqlMain.java | 2 +- 13 files changed, 372 insertions(+), 292 deletions(-) diff --git a/src/main/java/com/lz/common/utils/Constant.java b/src/main/java/com/lz/common/utils/Constant.java index 5bf4b6e2..c9c08727 100644 --- a/src/main/java/com/lz/common/utils/Constant.java +++ b/src/main/java/com/lz/common/utils/Constant.java @@ -47,6 +47,7 @@ public class Constant { public static final String INVELOMENT_TYPE_TEST = "dev"; public static final String SING = "【霖梓控股】"; + public static final Integer STATUS_3 = 3; /** * 菜单类型 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 0c094827..48ce37bb 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -1,6 +1,5 @@ package com.lz.modules.app.controller; -import com.alibaba.fastjson.JSON; import com.lz.common.utils.*; import com.lz.modules.app.dto.DepartmentsDto; import com.lz.modules.app.dto.StaffDepartmentDto; @@ -11,11 +10,10 @@ import com.lz.modules.app.resp.ResultDetailResp; import com.lz.modules.app.service.DepartmentsService; import com.lz.modules.app.service.DepartmentsStaffRelateService; import com.lz.modules.app.service.StaffService; -import com.lz.modules.flow.entity.*; +import com.lz.modules.flow.entity.RecordAuth; import com.lz.modules.flow.model.Auth; -import com.lz.modules.flow.model.StaffRoleDto; import com.lz.modules.flow.req.ResultDetailReq; -import com.lz.modules.flow.service.*; +import com.lz.modules.flow.service.RecordAuthService; import com.lz.modules.sys.controller.AbstractController; import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.entity.app.ResultDetail; @@ -51,38 +49,17 @@ public class ResultRecordController extends AbstractController { private ResultRecordService lzResultRecordService; @Autowired private DepartmentsService departmentsService; - @Autowired private ResultDetailService resultDetailService; @Autowired private ResultRecordService resultRecordService; - @Autowired private StaffService staffService; - @Autowired private DepartmentsStaffRelateService departmentsStaffRelateService; - @Autowired private RecordAuthService recordAuthService; - @Autowired - private FlowDepartmentService flowDepartmentService; - - @Autowired - private FlowRelationService flowRelationService; - - @Autowired - private FlowService flowService; - - @Autowired - private FlowRecordService flowRecordService; - - @Autowired - private StaffRoleService staffRoleService; - - @Autowired - private StaffRoleDepartmentService staffRoleDepartmentService; /** * 列表 @@ -125,17 +102,17 @@ public class ResultRecordController extends AbstractController { List listAuth = new ArrayList<>(); if (req.getRecordType() == 1) { //新增目标 listAuth = recordAuthService.selectAuthInfo(7l); - auth = getAuth(listAuth); + auth = recordAuthService.getAuth(listAuth); } else if (req.getRecordType() == 2) { //新增业绩 listAuth = recordAuthService.selectAuthInfo(8l); - auth = getAuth(listAuth); + auth = recordAuthService.getAuth(listAuth); auth.setWenHuaEdit(1); ResultRecord resultRecordOld = resultRecordService.selectResultRecordByStaffId(getUserId()); ResultRecord resultRecordNew = null; if (resultRecordOld != null) { Long recordId = resultRecordOld.getId(); resultRecordOld.setId(null); - resultRecordOld.setFlowStaffIdRole(initRole(resultRecordOld.getStaffId(), 8l)); + resultRecordOld.setFlowStaffIdRole(resultDetailService.initRole(resultRecordOld.getStaffId(), 8l)); resultRecordService.insertResultRecord(resultRecordOld); resultRecordNew = resultRecordOld; List resultDetails = resultDetailService.selectByRecordId(recordId); @@ -148,17 +125,17 @@ public class ResultRecordController extends AbstractController { } } } else { - resultRecordNew = createResultRecord(getUserId(),2); + resultRecordNew = createResultRecord(getUserId(), 2); } //保存文件价值观 recordType = 3; - insertWenHuaJiaZhiGua("做人:相信、包容、担当", resultRecordNew.getId(), getUserId()); - insertWenHuaJiaZhiGua("做事:用户第一、求真、极致", resultRecordNew.getId(), getUserId()); + resultDetailService.insertWenHuaJiaZhiGua("做人:相信、包容、担当", resultRecordNew.getId(), getUserId()); + resultDetailService.insertWenHuaJiaZhiGua("做事:用户第一、求真、极致", resultRecordNew.getId(), getUserId()); recordResultId = resultRecordNew.getId(); } else if (resultRecord != null) { Map staffRoleMap = recordAuthService.selectRoleIdByStaffRoleInfo(resultRecord.getFlowStaffIdRole()); listAuth = recordAuthService.selectAuthInfo(staffRoleMap.get(getUserId())); - auth = getAuth(listAuth); + auth = recordAuthService.getAuth(listAuth); } List resultDetails = resultDetailService.selectByRecordId(recordResultId); if (CollectionUtils.isNotEmpty(resultDetails)) { @@ -169,8 +146,8 @@ public class ResultRecordController extends AbstractController { int type2 = tempType2; if (tempType1 == 0) { type1 = 1; - list.add(getYeJi()); - list.add(getYeJiKaoHe()); + list.add(resultDetailService.getYeJi()); + list.add(resultDetailService.getYeJiKaoHe()); } if (tempType2 == 0) { type2 = 2; @@ -196,14 +173,14 @@ public class ResultRecordController extends AbstractController { } resp.setIsEdit(1); if (count == type1 + 1 && tempType1 != 0) { - list.add(getYeJiKaoHe()); + list.add(resultDetailService.getYeJiKaoHe()); } list.add(resp); } if (tempType2 == 0) { - list.add(getYeJiKaoHe()); - list.add(getWenHuaJiaZhiGua1(auth)); - list.add(getWenHuaJiaZhiGua2(auth)); + list.add(resultDetailService.getYeJiKaoHe()); + list.add(resultDetailService.getWenHuaJiaZhiGua1(auth)); + list.add(resultDetailService.getWenHuaJiaZhiGua2(auth)); } } else { int type1 = 1; @@ -214,14 +191,14 @@ public class ResultRecordController extends AbstractController { fourRowspan = type1 + 1 + type2 + 1; fiveRowspan = type1 + 1 + type2 + 2; - list.add(getYeJi()); - list.add(getYeJiKaoHe()); - list.add(getWenHuaJiaZhiGua1(auth)); - list.add(getWenHuaJiaZhiGua2(auth)); + list.add(resultDetailService.getYeJi()); + list.add(resultDetailService.getYeJiKaoHe()); + list.add(resultDetailService.getWenHuaJiaZhiGua1(auth)); + list.add(resultDetailService.getWenHuaJiaZhiGua2(auth)); } - list.add(getWenHuaJiaZhiGuaResult1()); - list.add(getWenHuaJiaZhiGuaResult2()); - list.add(getLastResult()); + list.add(resultDetailService.getWenHuaJiaZhiGuaResult1()); + list.add(resultDetailService.getWenHuaJiaZhiGuaResult2()); + list.add(resultDetailService.getLastResult()); return R.ok() .put("staffName", staffEntity.getName()) .put("department1", departmentDto.getDepartment1()) @@ -240,237 +217,16 @@ public class ResultRecordController extends AbstractController { } - public String initRole(Long staffId,Long roleId){ - List staffRoles = new ArrayList<>(); - StaffRoleDto staffRole = new StaffRoleDto() ; - staffRole.setStaffId(staffId); - staffRole.setRoleId(roleId); - staffRoles.add(staffRole); - return JSON.toJSONString(staffRoles); - } - @RequestMapping("/commitApproval") public R commitApproval(ResultRecordReq req) { - ResultRecord resultRecord = resultRecordService.selectResultRecordById(req.getRecordResultId()); - StaffEntity staffEntity = staffService.selectStaffById(resultRecord.getStaffId()); - StaffEntity mySelf = staffService.selectStaffById(getUserId()); - FlowDepartment flowDepartment = flowDepartmentService.selectByStaffId(staffEntity.getId()); - Long flowId = flowDepartment != null ? flowDepartment.getSelfFlowId() : 0l; // 表示是部门主管自己 - if (flowDepartment == null) { - DepartmentsStaffRelateEntity departmentsStaffRelateEntity = departmentsStaffRelateService.selectLastDepartmentByStaffId(staffEntity.getId()); - DepartmentsStaffRelateEntity leader = departmentsStaffRelateService.selectLeaderByDepartmentId(departmentsStaffRelateEntity.getDepartmentId()); - flowDepartment = flowDepartmentService.selectByStaffId(leader.getStaffId()); - flowId = flowDepartment.getChildFlowId();//表示是部门下的普通员工 + if (req.getType() == 1) { + return resultRecordService.approval(req.getRecordResultId(), getUserId()); + } else { //侍提交 + ResultRecord resultRecord = resultRecordService.selectResultRecordById(req.getRecordResultId()); + resultRecord.setStatus(Constant.STATUS_3); + resultRecordService.updateResultRecordById(resultRecord); } - List list = new ArrayList<>(); - list.add(flowDepartment); - for (int i = 0; i < 10; i++) { - if (flowDepartment.getParentId() != null && flowDepartment.getParentId() > 0) { - flowDepartment = flowDepartmentService.selectFlowDepartmentById(flowDepartment.getParentId()); - list.add(flowDepartment); - } else { - break; - } - } - List flowRelations = flowRelationService.selectFlowRelationAll(); - Map staffEntityMap = list.stream().collect(Collectors.toMap(FlowDepartment::getDepartmentLevel, p -> p)); - // approvalList = [ME,ONE_D,TWO_D,HR,BOSS] - List approvalList = new ArrayList<>(); - approvalList.add("ME"); - for (FlowRelation flowRelation : flowRelations) { - if (staffEntityMap.get(flowRelation.getChild()) != null || flowRelation.getCanReplace() == 0) { - approvalList.add(flowRelation.getChild()); - } - } - - List flows = flowService.selectByFlowId(flowId); - FlowRecord lastFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(req.getRecordResultId()); - FlowRecord notFlowRecord = flowRecordService.selectNotApprovalStaffIdFlowRecords(resultRecord.getId()); - if (notFlowRecord != null) { - notFlowRecord.setApprovalStaffId(getUserId()); - } - - StaffEntity staff = staffService.selectStaffById(resultRecord.getStaffId()); - int flowIndex = lastFlowRecord != null ? lastFlowRecord.getFlowIndex() + 1 : 1; - int index = getDepartmentLevelIndex(flows, flowIndex); - if (index < 0) { //表示流程己经结束 - lastFlowRecord.setFlowName(mySelf.getName() + "-审批通过"); - flowRecordService.updateCoverFlowRecordById(lastFlowRecord); - resultRecordService.updateFlowStaffIdRoleToNull(resultRecord.getId());// 更新用户权限 - return R.ok("流程审批结束"); - } - - FlowRecord flowRecord = new FlowRecord(); - flowRecord.setRecordId(req.getRecordResultId()); - flowRecord.setRecordStaffId(resultRecord.getStaffId()); - flowRecord.setFlowIndex(flowIndex); - flowRecord.setFlowId(flowId); - String departmentLevel = approvalList.get(index); - flowRecord.setDepartmentLevel(departmentLevel); - StaffEntity approvalStaff = null; - List staffRoleDtos = new ArrayList<>(); - if (Constant.ME.equals(departmentLevel)) { //如果是自己 - approvalStaff = staff; // 是自己进行审批 - StaffRoleDto staffRoleDto = new StaffRoleDto(staff.getId(),flows.get(flowIndex-1).getRoleId()); - staffRoleDtos.add(staffRoleDto); - } else { - FlowDepartment flowD = staffEntityMap.get(departmentLevel); - if (flowD == null) { - List staffRoles = staffRoleService.selectByRole(departmentLevel); - for(StaffRole staffRole: staffRoles ){ - List staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId()); - Map departmentIdMap = departmentsService.selectUserAllDepartmentIds(resultRecord.getDepartmentId()); - for (StaffRoleDepartment staffRoleDepartment : staffRoleDepartments) { - String value = departmentIdMap.get(staffRoleDepartment.getDepartmentId()); - if(StringUtil.isNotBlank(value) ){ - StaffRoleDto staffRoleDto = new StaffRoleDto(staffRole.getStaffId(),staffRole.getRoleId()); - staffRoleDtos.add(staffRoleDto); - } - } - } - if(staffRoleDtos.size() == 1 ){ //表示只有一个审批的用户 - approvalStaff = staffService.selectStaffById(staffRoleDtos.get(0).getStaffId()); - } - } else { - approvalStaff = staffService.selectStaffById(flowD.getStaffId()); - StaffRoleDto staffRoleDto = new StaffRoleDto(approvalStaff.getId(), flows.get(flowIndex - 1).getRoleId()); - staffRoleDtos.add(staffRoleDto); - } - } - flowRecord.setFlowName(mySelf.getName() + "-" + flows.get(flowIndex - 1).getOptDesc()); - flowRecord.setApprovalStaffId(approvalStaff != null ? approvalStaff.getId() : null); - flowRecord.setApprovalStaffName(approvalStaff != null ? approvalStaff.getName() : null); - flowRecordService.insertFlowRecord(flowRecord); - resultRecord.setFlowStaffIdRole(JSON.toJSONString(staffRoleDtos)); - resultRecordService.updateResultRecordById(resultRecord);// 更新用户权限 - return R.ok("提交审批成功"); - } - - public int getDepartmentLevelIndex(List list,int flowIndex) { - if(flowIndex > list.size()){ - return -1 ; - } - List flows = new ArrayList<>(); - for(int i = 0 ;i < flowIndex ;i ++){ - flows.add(list.get(i)); - } - int index = 0; - for (Flow flow : flows) { - String opt = flow.getOpt(); - String opts[] = opt.split(""); - for (String p : opts) { - if ("+".equals(p)) { - index++; - } else { - index--; - } - } - } - return index; - } - - public void insertWenHuaJiaZhiGua(String target, Long recordId, Long staffId) { - ResultDetail wenhua1 = new ResultDetail(); - wenhua1.setTarget(target); - wenhua1.setType(2); - wenhua1.setCheckWeight(new BigDecimal(0.15)); - wenhua1.setStaffId(staffId); - wenhua1.setRecordId(recordId); - resultDetailService.insertResultDetail(wenhua1); - } - - public ResultDetailResp getYeJi() { - ResultDetailResp result = new ResultDetailResp(); - result.setCheckRange("业绩"); - result.setCheckWeight(new BigDecimal(0.7)); - result.setIsAdd(1); - result.setIsEdit(1); - result.setType(1); - return result; - } - - public ResultDetailResp getYeJiKaoHe() { - ResultDetailResp respHeader = new ResultDetailResp(); - respHeader.setKeyResult("业务考核结果"); - respHeader.setCheckWeight(new BigDecimal(0.7)); - respHeader.setSuperScore("/"); - respHeader.setAcquireScore(new BigDecimal(0)); - respHeader.setScoreComment("/"); - respHeader.setIsAdd(-1); - return respHeader; - } - - public ResultDetailResp getWenHuaJiaZhiGua1(Auth auth) { - ResultDetailResp wenhua1 = new ResultDetailResp(); - wenhua1.setCheckRange("文化价值观"); - wenhua1.setTarget("做人:相信、包容、担当"); - wenhua1.setType(2); - wenhua1.setIsEdit(auth.getWenHuaEdit()); - wenhua1.setCheckWeight(new BigDecimal(0.15)); - return wenhua1; - } - - public ResultDetailResp getWenHuaJiaZhiGua2(Auth auth) { - ResultDetailResp wenhua2 = new ResultDetailResp(); - wenhua2.setCheckRange("文化价值观"); - wenhua2.setTarget("做事:用户第一、求真、极致"); - wenhua2.setType(2); - wenhua2.setIsEdit(auth.getWenHuaEdit()); - wenhua2.setCheckWeight(new BigDecimal(0.15)); - return wenhua2; - } - - public ResultDetailResp getWenHuaJiaZhiGuaResult1() { - ResultDetailResp tail1 = new ResultDetailResp(); - tail1.setKeyResult("文化价值观考核结果"); - tail1.setCheckWeight(new BigDecimal(0.3)); - tail1.setSuperScore("/"); - tail1.setAcquireScore(new BigDecimal(0)); - tail1.setScoreComment("/"); - tail1.setIsAdd(-1); - return tail1; - } - - - public ResultDetailResp getWenHuaJiaZhiGuaResult2() { - ResultDetailResp tail2 = new ResultDetailResp(); - tail2.setCheckRange("文化价值观考核结果"); - tail2.setAcquireScore(new BigDecimal(0)); - tail2.setScoreComment("/"); - tail2.setIsAdd(-1); - return tail2; - } - - public ResultDetailResp getLastResult() { - ResultDetailResp tail3 = new ResultDetailResp(); - tail3.setCheckRange("最终绩效考核结果等级"); - tail3.setAcquireScore(new BigDecimal(3.25)); - tail3.setScoreComment("/"); - tail3.setIsAdd(-1); - return tail3; - } - - public Auth getAuth(List auths) { - Map map = new HashMap<>(); - if (CollectionUtils.isNotEmpty(auths)) { - map = auths.stream().collect(Collectors.toMap(RecordAuth::getIdentity, RecordAuth::getStatus)); - } - Auth auth = new Auth(); - auth.setAdd(NumberUtil.objToIntDefault(map.get("add"), 0)); - auth.setApprovel(NumberUtil.objToIntDefault(map.get("approvel"), 0)); - auth.setCheckResult(NumberUtil.objToIntDefault(map.get("checkResult"), 0)); - auth.setCheckWeight(NumberUtil.objToIntDefault(map.get("checkWeight"), 0)); - auth.setCommit(NumberUtil.objToIntDefault(map.get("commit"), 0)); - auth.setConfirmCommit(NumberUtil.objToIntDefault(map.get("confirmCommit"), 0)); - auth.setKeyResult(NumberUtil.objToIntDefault(map.get("keyResult"), 0)); - auth.setPriority(NumberUtil.objToIntDefault(map.get("priority"), 0)); - auth.setReject(NumberUtil.objToIntDefault(map.get("reject"), 0)); - auth.setScoreComment(NumberUtil.objToIntDefault(map.get("scoreComment"), 0)); - auth.setSuperScore(NumberUtil.objToIntDefault(map.get("superScore"), 0)); - auth.setTarget(NumberUtil.objToIntDefault(map.get("target"), 0)); - auth.setEdit(NumberUtil.objToIntDefault(map.get("edit"), 0)); - auth.setAcquireScore(NumberUtil.objToIntDefault(map.get("acquireScore"), 0)); - return auth; + return R.ok("成功"); } /** @@ -540,7 +296,6 @@ public class ResultRecordController extends AbstractController { return R.ok("验证成功"); } - /** * 信息 */ @@ -577,9 +332,9 @@ public class ResultRecordController extends AbstractController { ResultRecord resultRecord = new ResultRecord(); resultRecord.setMonthTime(new Date()); if (type == 1) { - resultRecord.setFlowStaffIdRole(initRole(staffId,7l)); + resultRecord.setFlowStaffIdRole(resultDetailService.initRole(staffId,7l)); } else { - resultRecord.setFlowStaffIdRole(initRole(staffId,8l)); + resultRecord.setFlowStaffIdRole(resultDetailService.initRole(staffId,8l)); } resultRecord.setStaffId(getUserId()); resultRecord.setStatus(0); @@ -587,7 +342,6 @@ public class ResultRecordController extends AbstractController { resultRecordService.insertResultRecord(resultRecord); return resultRecord; } - /** * 保存 */ 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 0e56d65e..d4af8ac9 100644 --- a/src/main/java/com/lz/modules/flow/entity/FlowRecord.java +++ b/src/main/java/com/lz/modules/flow/entity/FlowRecord.java @@ -9,7 +9,7 @@ import java.util.Date; * 菜单权限表 *

*流转记录表 * @author quyixiao -* @since 2020-08-20 +* @since 2020-08-21 */ @Data @@ -42,6 +42,8 @@ public class FlowRecord implements java.io.Serializable { private Integer flowIndex; //0表示正常状态,1 表示被驳回无用的流程 private Integer status; + // 员工&权限id + private String flowStaffIdRole; /** * * @return @@ -237,6 +239,21 @@ public class FlowRecord implements java.io.Serializable { this.status = status; } + /** + *  员工&权限id + * @return + */ + public String getFlowStaffIdRole() { + return flowStaffIdRole; + } + /** + *  员工&权限id + * @param flowStaffIdRole + */ + public void setFlowStaffIdRole(String flowStaffIdRole) { + this.flowStaffIdRole = flowStaffIdRole; + } + @Override public String toString() { return "FlowRecord{" + @@ -253,6 +270,7 @@ public class FlowRecord implements java.io.Serializable { ",flowId=" + flowId + ",flowIndex=" + flowIndex + ",status=" + status + + ",flowStaffIdRole=" + flowStaffIdRole + "}"; } } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java b/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java index 816d254e..6ebcec94 100644 --- a/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java +++ b/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java @@ -22,8 +22,8 @@ public class StaffRoleDto { public static void main(String[] args) { List staffRoleDtoList = new ArrayList<>(); - //StaffRoleDto staffRoleDto = new StaffRoleDto(314l,6l); - //staffRoleDtoList.add(staffRoleDto); + StaffRoleDto staffRoleDto = new StaffRoleDto(314l,6l); + staffRoleDtoList.add(staffRoleDto); System.out.println(JSON.toJSONString(staffRoleDtoList)); } diff --git a/src/main/java/com/lz/modules/flow/service/RecordAuthService.java b/src/main/java/com/lz/modules/flow/service/RecordAuthService.java index 4e87d5f1..0c98de6d 100644 --- a/src/main/java/com/lz/modules/flow/service/RecordAuthService.java +++ b/src/main/java/com/lz/modules/flow/service/RecordAuthService.java @@ -2,6 +2,7 @@ package com.lz.modules.flow.service; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.modules.flow.entity.RecordAuth; +import com.lz.modules.flow.model.Auth; import java.util.List; import java.util.Map; @@ -36,4 +37,6 @@ public interface RecordAuthService extends IService { List selectAuthInfo(Long roldId); Map selectRoleIdByStaffRoleInfo(String flowStaffIdRole); + + Auth getAuth(List listAuth); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java index 2404036f..9ce3e087 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/RecordAuthServiceImpl.java @@ -2,9 +2,11 @@ package com.lz.modules.flow.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lz.common.utils.NumberUtil; import com.lz.common.utils.StringUtil; import com.lz.modules.flow.dao.RecordAuthMapper; import com.lz.modules.flow.entity.RecordAuth; +import com.lz.modules.flow.model.Auth; import com.lz.modules.flow.model.StaffRoleDto; import com.lz.modules.flow.service.RecordAuthService; import org.apache.commons.collections.CollectionUtils; @@ -82,4 +84,28 @@ public class RecordAuthServiceImpl extends ServiceImpl auths) { + Map map = new HashMap<>(); + if (CollectionUtils.isNotEmpty(auths)) { + map = auths.stream().collect(Collectors.toMap(RecordAuth::getIdentity, RecordAuth::getStatus)); + } + Auth auth = new Auth(); + auth.setAdd(NumberUtil.objToIntDefault(map.get("add"), 0)); + auth.setApprovel(NumberUtil.objToIntDefault(map.get("approvel"), 0)); + auth.setCheckResult(NumberUtil.objToIntDefault(map.get("checkResult"), 0)); + auth.setCheckWeight(NumberUtil.objToIntDefault(map.get("checkWeight"), 0)); + auth.setCommit(NumberUtil.objToIntDefault(map.get("commit"), 0)); + auth.setConfirmCommit(NumberUtil.objToIntDefault(map.get("confirmCommit"), 0)); + auth.setKeyResult(NumberUtil.objToIntDefault(map.get("keyResult"), 0)); + auth.setPriority(NumberUtil.objToIntDefault(map.get("priority"), 0)); + auth.setReject(NumberUtil.objToIntDefault(map.get("reject"), 0)); + auth.setScoreComment(NumberUtil.objToIntDefault(map.get("scoreComment"), 0)); + auth.setSuperScore(NumberUtil.objToIntDefault(map.get("superScore"), 0)); + auth.setTarget(NumberUtil.objToIntDefault(map.get("target"), 0)); + auth.setEdit(NumberUtil.objToIntDefault(map.get("edit"), 0)); + auth.setAcquireScore(NumberUtil.objToIntDefault(map.get("acquireScore"), 0)); + return auth; + } + + } diff --git a/src/main/java/com/lz/modules/sys/entity/app/ResultRecord.java b/src/main/java/com/lz/modules/sys/entity/app/ResultRecord.java index bcafb133..e940b963 100644 --- a/src/main/java/com/lz/modules/sys/entity/app/ResultRecord.java +++ b/src/main/java/com/lz/modules/sys/entity/app/ResultRecord.java @@ -28,7 +28,7 @@ public class ResultRecord implements java.io.Serializable { private Date gmtModified; //月份 private Date monthTime; - //0.新建,1 提交审批中,2 拒绝 + //0.新建,1 提交审批中,2 拒绝 , 3侍提交 private Integer status; //最后得分 private BigDecimal lastScore; diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java index d5c2767f..9a307339 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java @@ -1,6 +1,8 @@ package com.lz.modules.sys.service.app; import com.baomidou.mybatisplus.extension.service.IService; +import com.lz.modules.app.resp.ResultDetailResp; +import com.lz.modules.flow.model.Auth; import com.lz.modules.sys.entity.app.ResultDetail; import java.util.List; @@ -35,4 +37,22 @@ public interface ResultDetailService extends IService { List selectByRecordId(Long recordResultId); List selectByRecordIdType(Long recordResultId, Integer type); + + ResultDetailResp getYeJi(); + + ResultDetailResp getYeJiKaoHe(); + + ResultDetailResp getWenHuaJiaZhiGua2(Auth auth); + + ResultDetailResp getWenHuaJiaZhiGua1(Auth auth); + + ResultDetailResp getWenHuaJiaZhiGuaResult1(); + + ResultDetailResp getWenHuaJiaZhiGuaResult2(); + + ResultDetailResp getLastResult(); + + void insertWenHuaJiaZhiGua(String s, Long id, Long userId); + + String initRole(Long staffId, long l); } \ 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 1af5f659..b5bbe93e 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 @@ -2,6 +2,7 @@ package com.lz.modules.sys.service.app; import com.baomidou.mybatisplus.extension.service.IService; import com.lz.common.utils.PageUtils; +import com.lz.common.utils.R; import com.lz.modules.app.req.ResultRecordReq; import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.entity.app.ResultRecord; @@ -43,4 +44,6 @@ public interface ResultRecordService extends IService { ResultRecord selectResultRecordByStaffId(Long userId); void updateFlowStaffIdRoleToNull(Long id); + + R approval(Long resultRecordId, Long userId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java index a7fd5f22..2430d348 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultDetailServiceImpl.java @@ -1,12 +1,18 @@ package com.lz.modules.sys.service.app.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lz.modules.app.resp.ResultDetailResp; +import com.lz.modules.flow.model.Auth; +import com.lz.modules.flow.model.StaffRoleDto; import com.lz.modules.sys.dao.app.ResultDetailMapper; import com.lz.modules.sys.entity.app.ResultDetail; import com.lz.modules.sys.service.app.ResultDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; /** @@ -71,5 +77,97 @@ public class ResultDetailServiceImpl extends ServiceImpl staffRoles = new ArrayList<>(); + StaffRoleDto staffRole = new StaffRoleDto() ; + staffRole.setStaffId(staffId); + staffRole.setRoleId(roleId); + staffRoles.add(staffRole); + return JSON.toJSONString(staffRoles); + } } 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 29324300..aa24009f 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 @@ -1,20 +1,22 @@ package com.lz.modules.sys.service.app.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.lz.common.utils.DateUtils; -import com.lz.common.utils.PageUtils; -import com.lz.common.utils.StringUtil; +import com.lz.common.utils.*; import com.lz.modules.app.dao.DepartmentsDao; import com.lz.modules.app.dao.DepartmentsStaffRelateDao; import com.lz.modules.app.dto.EmployeesDto; import com.lz.modules.app.entity.DepartmentsEntity; +import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; +import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.app.req.ResultRecordReq; import com.lz.modules.app.resp.ResultRecordResp; +import com.lz.modules.app.service.DepartmentsService; +import com.lz.modules.app.service.DepartmentsStaffRelateService; import com.lz.modules.app.service.StaffService; -import com.lz.modules.flow.entity.FlowDepartment; -import com.lz.modules.flow.entity.StaffRole; -import com.lz.modules.flow.service.FlowDepartmentService; -import com.lz.modules.flow.service.StaffRoleService; +import com.lz.modules.flow.entity.*; +import com.lz.modules.flow.model.StaffRoleDto; +import com.lz.modules.flow.service.*; import com.lz.modules.sys.dao.app.ResultRecordMapper; import com.lz.modules.sys.entity.SysUserEntity; import com.lz.modules.sys.entity.app.ResultRecord; @@ -26,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.stream.Collectors; /** *

@@ -64,6 +67,29 @@ public class ResultRecordServiceImpl extends ServiceImpl list = new ArrayList<>(); + list.add(flowDepartment); + for (int i = 0; i < 10; i++) { + if (flowDepartment.getParentId() != null && flowDepartment.getParentId() > 0) { + flowDepartment = flowDepartmentService.selectFlowDepartmentById(flowDepartment.getParentId()); + list.add(flowDepartment); + } else { + break; + } + } + List flowRelations = flowRelationService.selectFlowRelationAll(); + Map staffEntityMap = list.stream().collect(Collectors.toMap(FlowDepartment::getDepartmentLevel, p -> p)); + // approvalList = [ME,ONE_D,TWO_D,HR,BOSS] + List approvalList = new ArrayList<>(); + approvalList.add("ME"); + for (FlowRelation flowRelation : flowRelations) { + if (staffEntityMap.get(flowRelation.getChild()) != null || flowRelation.getCanReplace() == 0) { + approvalList.add(flowRelation.getChild()); + } + } + List flows = flowService.selectByFlowId(flowId); + FlowRecord lastFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(resultRecordId); + FlowRecord notFlowRecord = flowRecordService.selectNotApprovalStaffIdFlowRecords(resultRecord.getId()); + if (notFlowRecord != null) { + notFlowRecord.setApprovalStaffId(userId); + } + + StaffEntity staff = staffService.selectStaffById(resultRecord.getStaffId()); + int flowIndex = lastFlowRecord != null ? lastFlowRecord.getFlowIndex() + 1 : 1; + int index = getDepartmentLevelIndex(flows, flowIndex); + if (index < 0) { //表示流程己经结束 + lastFlowRecord.setFlowName(mySelf.getName() + "-审批通过"); + flowRecordService.updateCoverFlowRecordById(lastFlowRecord); + resultRecordService.updateFlowStaffIdRoleToNull(resultRecord.getId());// 更新用户权限 + return R.ok("流程审批结束"); + } + + FlowRecord flowRecord = new FlowRecord(); + flowRecord.setRecordId(resultRecordId); + flowRecord.setRecordStaffId(resultRecord.getStaffId()); + flowRecord.setFlowIndex(flowIndex); + flowRecord.setFlowId(flowId); + String departmentLevel = approvalList.get(index); + flowRecord.setDepartmentLevel(departmentLevel); + StaffEntity approvalStaff = null; + List staffRoleDtos = new ArrayList<>(); + if (Constant.ME.equals(departmentLevel)) { //如果是自己 + approvalStaff = staff; // 是自己进行审批 + StaffRoleDto staffRoleDto = new StaffRoleDto(staff.getId(),flows.get(flowIndex-1).getRoleId()); + staffRoleDtos.add(staffRoleDto); + } else { + FlowDepartment flowD = staffEntityMap.get(departmentLevel); + if (flowD == null) { + List staffRoles = staffRoleService.selectByRole(departmentLevel); + for(StaffRole staffRole: staffRoles ){ + List staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId()); + Map departmentIdMap = departmentsService.selectUserAllDepartmentIds(resultRecord.getDepartmentId()); + for (StaffRoleDepartment staffRoleDepartment : staffRoleDepartments) { + String value = departmentIdMap.get(staffRoleDepartment.getDepartmentId()); + if(StringUtil.isNotBlank(value) ){ + StaffRoleDto staffRoleDto = new StaffRoleDto(staffRole.getStaffId(),staffRole.getRoleId()); + staffRoleDtos.add(staffRoleDto); + } + } + } + if(staffRoleDtos.size() == 1 ){ //表示只有一个审批的用户 + approvalStaff = staffService.selectStaffById(staffRoleDtos.get(0).getStaffId()); + } + } else { + approvalStaff = staffService.selectStaffById(flowD.getStaffId()); + StaffRoleDto staffRoleDto = new StaffRoleDto(approvalStaff.getId(), flows.get(flowIndex - 1).getRoleId()); + staffRoleDtos.add(staffRoleDto); + } + } + flowRecord.setFlowName(mySelf.getName() + "-" + flows.get(flowIndex - 1).getOptDesc()); + flowRecord.setApprovalStaffId(approvalStaff != null ? approvalStaff.getId() : null); + flowRecord.setApprovalStaffName(approvalStaff != null ? approvalStaff.getName() : null); + String staffRoles = JSON.toJSONString(staffRoleDtos); + flowRecord.setFlowStaffIdRole(staffRoles); + flowRecordService.insertFlowRecord(flowRecord); + resultRecord.setFlowStaffIdRole(staffRoles); + resultRecordService.updateResultRecordById(resultRecord);// 更新用户权限 + return R.ok("提交审批成功"); + } + + + public int getDepartmentLevelIndex(List list, int flowIndex) { + if (flowIndex > list.size()) { + return -1 ; + } + List flows = new ArrayList<>(); + for(int i = 0 ;i < flowIndex ;i ++){ + flows.add(list.get(i)); + } + int index = 0; + for (Flow flow : flows) { + String opt = flow.getOpt(); + String opts[] = opt.split(""); + for (String p : opts) { + if ("+".equals(p)) { + index++; + } else { + index--; + } + } + } + return index; + } + } diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index efca5816..0a99e9bb 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -17,18 +17,23 @@ + - 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 + 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 + + + + insert into lz_flow_record( department_level, @@ -40,6 +45,7 @@ flow_id, flow_index, status, + flow_staff_id_role, is_delete, gmt_create, gmt_modified @@ -53,6 +59,7 @@ #{ flowId}, #{ flowIndex}, #{ status}, + #{ flowStaffIdRole}, 0, now(), now() @@ -74,7 +81,8 @@ record_staff_id = #{recordStaffId}, flow_id = #{flowId}, flow_index = #{flowIndex}, - status = #{status} + status = #{status}, + flow_staff_id_role = #{flowStaffIdRole} ,gmt_modified = now() where id = #{id} @@ -95,7 +103,8 @@ record_staff_id = #{recordStaffId}, flow_id = #{flowId}, flow_index = #{flowIndex}, - status = #{status} + status = #{status}, + flow_staff_id_role = #{flowStaffIdRole} ,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 3ade7906..ef20a3ab 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -62,7 +62,7 @@ public class MysqlMain { List list = new ArrayList(); - list.add(new TablesBean("third_app_config")); + list.add(new TablesBean("lz_flow_record")); List list2 = new ArrayList(); From 8dc09d65ef38a0dd9cdaca53f87ccef5cc4c59e8 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Fri, 21 Aug 2020 11:42:03 +0800 Subject: [PATCH 2/2] =?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 --- .../java/com/lz/common/utils/StringUtil.java | 4 ++++ .../app/controller/ResultRecordController.java | 18 ++++++++++++++---- .../lz/modules/app/req/ResultRecordReq.java | 1 + .../sys/service/app/ResultDetailService.java | 2 +- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/lz/common/utils/StringUtil.java b/src/main/java/com/lz/common/utils/StringUtil.java index d6d33ccc..97a9da1d 100644 --- a/src/main/java/com/lz/common/utils/StringUtil.java +++ b/src/main/java/com/lz/common/utils/StringUtil.java @@ -640,4 +640,8 @@ public class StringUtil extends StringUtils { } return null; } + + public static String removeHtml(String html) { + return html.replaceAll("\\<.*?>",""); + } } 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 48ce37bb..b3eb5d70 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -16,8 +16,10 @@ import com.lz.modules.flow.req.ResultDetailReq; import com.lz.modules.flow.service.RecordAuthService; import com.lz.modules.sys.controller.AbstractController; import com.lz.modules.sys.entity.SysUserEntity; +import com.lz.modules.sys.entity.app.ResultComment; import com.lz.modules.sys.entity.app.ResultDetail; import com.lz.modules.sys.entity.app.ResultRecord; +import com.lz.modules.sys.service.app.ResultCommentService; import com.lz.modules.sys.service.app.ResultDetailService; import com.lz.modules.sys.service.app.ResultRecordService; import org.apache.commons.collections.CollectionUtils; @@ -59,6 +61,8 @@ public class ResultRecordController extends AbstractController { private DepartmentsStaffRelateService departmentsStaffRelateService; @Autowired private RecordAuthService recordAuthService; + @Autowired + private ResultCommentService resultCommentService; /** @@ -216,12 +220,19 @@ public class ResultRecordController extends AbstractController { .put("recordResultId", recordResultId); } - @RequestMapping("/commitApproval") public R commitApproval(ResultRecordReq req) { - if (req.getType() == 1) { + if (req.getStatus() == 2) { + String resultComment = StringUtil.decodeBase64(req.getResultComment()); + resultComment = StringUtil.removeHtml(resultComment); + if (StringUtil.isNotBlank(resultComment)) { + ResultComment comment = new ResultComment(); + comment.setCommentUserId(getUserId()); + comment.setRecordId(req.getRecordResultId()); + resultCommentService.insertResultComment(comment); + } return resultRecordService.approval(req.getRecordResultId(), getUserId()); - } else { //侍提交 + } else if (req.getStatus() == 3) { //侍提交 ResultRecord resultRecord = resultRecordService.selectResultRecordById(req.getRecordResultId()); resultRecord.setStatus(Constant.STATUS_3); resultRecordService.updateResultRecordById(resultRecord); @@ -236,7 +247,6 @@ public class ResultRecordController extends AbstractController { @RequiresPermissions("user:lzresultrecord:info") public R info(@PathVariable("id") Long id) { ResultRecord lzResultRecord = lzResultRecordService.selectResultRecordById(id); - return R.ok().put("lzResultRecord", lzResultRecord); } diff --git a/src/main/java/com/lz/modules/app/req/ResultRecordReq.java b/src/main/java/com/lz/modules/app/req/ResultRecordReq.java index ac69d78c..10eda703 100644 --- a/src/main/java/com/lz/modules/app/req/ResultRecordReq.java +++ b/src/main/java/com/lz/modules/app/req/ResultRecordReq.java @@ -32,4 +32,5 @@ public class ResultRecordReq { private Long staffId; private Integer recordType; private String departmentLevel ; + private String resultComment; } diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java index 9a307339..2a70f21b 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultDetailService.java @@ -54,5 +54,5 @@ public interface ResultDetailService extends IService { void insertWenHuaJiaZhiGua(String s, Long id, Long userId); - String initRole(Long staffId, long l); + String initRole(Long staffId, Long l); } \ No newline at end of file