diff --git a/src/main/java/com/lz/common/utils/DingTalkUtil.java b/src/main/java/com/lz/common/utils/DingTalkUtil.java index 298f089f..67563ec6 100644 --- a/src/main/java/com/lz/common/utils/DingTalkUtil.java +++ b/src/main/java/com/lz/common/utils/DingTalkUtil.java @@ -280,7 +280,7 @@ public class DingTalkUtil { * @param accessToken * @return */ - public List getDepartmentStaffDetailsV2(String accessToken, String departmentId) { + public List getDepartmentStaffDetailsV2(String accessToken, String departmentId, Map mapProbation) { try { long page = 0L; List list =new ArrayList<>(); @@ -324,6 +324,11 @@ public class DingTalkUtil { departmentStaffBo.setEmail(json.getString("email"));//邮箱,钉钉的企业邮箱才可以,需要单独授权手机权限 departmentStaffBo.setAvatar(json.getString("avatar"));//头像 departmentStaffBo.setPosition(json.getString("title")); + if(mapProbation.containsKey(departmentStaffBo.getEmployeeId())){ + departmentStaffBo.setEmployeeType(2); + }else{ + departmentStaffBo.setEmployeeType(1); + } departmentStaffBo.setStatus(0); /*if(json.getBoolean("active")){ //在职已激活 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 1471fcc5..620608ca 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -342,7 +342,7 @@ public class ResultRecordController extends AbstractController { @ApiOperation("绩效催办-吴林") @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "绩效id")}) @ApiResponses({@ApiResponse(code = 200, message = "成功", response = R.class)}) - public R getDetail(@RequestParam Long id) { + public R urging(@RequestParam Long id) { ResultRecord lzResultRecord = lzResultRecordService.selectResultRecordById(id); //获取当前节点,谁在处理 List flowRecords = flowRecordService.selectFlowRecordsByRecordIdAndStatus(id, 2); @@ -727,6 +727,19 @@ public class ResultRecordController extends AbstractController { List insertScores = new ArrayList<>(); List updateScores = new ArrayList<>(); + List resultDetails = resultDetailService.selectByRecordId(dto.getId()); + Map mapDetails = + resultDetails.stream().collect(Collectors.toMap(ResultDetail::getId, Function.identity(), (e, r) -> e)); + + //获取当前绩效的节点 + boolean isSetKeyResult = false; + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(dto.getId(), 2); + if(flowRecords.size() > 0){ + if(flowRecords.get(0).getFlowProcess().intValue() == 0){ + //指定目标中 + isSetKeyResult = true; + } + } for (ResultRecortModelDto model:dto.getRecortModelDtos() ) { @@ -739,6 +752,36 @@ public class ResultRecordController extends AbstractController { ) {//排序 ResultDetail resultDetail = new ResultDetail(); BeanUtils.copyProperties(detailDto, resultDetail); + if(!isSetKeyResult && resultDetail.getId() != null && mapDetails.containsKey(resultDetail.getId())){ + //这里判断是否有更新,或者删除 + ResultDetail resultDetail1 = mapDetails.get(resultDetail.getId()); + boolean isUp = false; + if(!resultDetail.getTarget().equals(resultDetail1.getTarget())){ + //打上标识 + isUp = true; + + } + + if(!resultDetail.getCheckResult().equals(resultDetail1.getCheckResult())){ + //打上标识 + isUp = true; + resultDetail1.setCheckResult("" + resultDetail1.getCheckResult() + ""); + } + + if(!resultDetail.getCheckWeight().equals(resultDetail1.getCheckWeight())){ + //打上标识 + isUp = true; + + //resultDetail1.setTarget("" + resultDetail1.getTarget() + ""); + } + if(isUp){ + resultDetail1.setId(null); + resultDetail1.setIsBack(1); + resultDetail1.setTarget("" + resultDetail1.getTarget() + ""); + resultDetail1.setBackId(resultDetail.getId()); + inserts.add(resultDetail); + } + } resultDetail.setPriority(index); index++; @@ -1139,6 +1182,8 @@ public class ResultRecordController extends AbstractController { // 审批:http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=1&comment=xxx&menuName=bbb // 跳过:http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=4&menuName=bbb&flowRecordId=360 // 转交:http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=215&status=8&menuName=bbb&flowRecordId=360&transferStaffId=294 + + // 重置:http://localhost:8080/lz_management/user/lzresultrecord/new/approval?resultRecordId=3702&status=9&menuName=cccc&flowRecordId=33987&resetFlag=0 @RequestMapping("/new/approval") public R approval(ApprovalDto approvalDto) { try { @@ -1152,7 +1197,6 @@ public class ResultRecordController extends AbstractController { } /** - * * 删除 */ // http://localhost:8080/lz_management/user/lzresultrecord/new/resultRecordDetail?resultRecordId=593&loginUserId=322 @@ -1166,4 +1210,16 @@ public class ResultRecordController extends AbstractController { } + + + + // http://localhost:8080/lz_management/user/lzresultrecord/get/reset/data?resultRecordId=593&loginUserId=322 + @RequestMapping("/get/reset/data") + public R getResetData(RecordDetailDto recordDetailDto) { + if(recordDetailDto.getLoginUserId() ==null && getUser() !=null ){ + recordDetailDto.setLoginUserId(getUserId()); + } + return resultRecordService.getResetData(recordDetailDto); + } + } diff --git a/src/main/java/com/lz/modules/app/controller/TestController.java b/src/main/java/com/lz/modules/app/controller/TestController.java index 06241cca..ab853483 100644 --- a/src/main/java/com/lz/modules/app/controller/TestController.java +++ b/src/main/java/com/lz/modules/app/controller/TestController.java @@ -9,6 +9,7 @@ import com.lz.common.utils.R; import com.lz.common.utils.StringUtil; import com.lz.modules.app.dao.DepartmentsDao; import com.lz.modules.app.dto.ApprovalDto; +import com.lz.modules.app.dto.RecordDetailDto; import com.lz.modules.app.entity.DepartmentsEntity; import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; import com.lz.modules.app.entity.StaffEntity; @@ -298,4 +299,20 @@ public class TestController { System.out.println(roleIds); } + //http://localhost:8080/lz_management/test/reset/data?resultRecordId=3682 + @RequestMapping("/test/reset/data") + public R getResetData(RecordDetailDto recordDetailDto) { + return resultRecordService.getResetData(recordDetailDto); + } + + + // 重置:http://localhost:8080/lz_management/test/approval?resultRecordId=3682&status=9&menuName=cccc&flowRecordId=33919&resetFlag=0 + @RequestMapping("/test/approval") + public R approval(ApprovalDto approvalDto) { + try { + return resultRecordService.newApproval(approvalDto); + } catch (Exception e) { + return R.error(e.getMessage()); + } + } } diff --git a/src/main/java/com/lz/modules/app/dto/ApprovalDto.java b/src/main/java/com/lz/modules/app/dto/ApprovalDto.java index f2ee7562..0181ebbe 100644 --- a/src/main/java/com/lz/modules/app/dto/ApprovalDto.java +++ b/src/main/java/com/lz/modules/app/dto/ApprovalDto.java @@ -11,4 +11,6 @@ public class ApprovalDto { private String comment; private Long transferStaffId; // 转交员工 id private Long flowRecordId;// 流程 id + private int resetFlag; + private int clearFlag;//0 全清,1 还是保留指标 } diff --git a/src/main/java/com/lz/modules/app/resp/ResetDataResp.java b/src/main/java/com/lz/modules/app/resp/ResetDataResp.java new file mode 100644 index 00000000..6875995a --- /dev/null +++ b/src/main/java/com/lz/modules/app/resp/ResetDataResp.java @@ -0,0 +1,13 @@ +package com.lz.modules.app.resp; + +import lombok.Data; + +import java.util.List; + +@Data +public class ResetDataResp { + private String flowName; + private List staffNames; + private Long id ; + +} 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 fff7c877..90994796 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -93,4 +93,16 @@ public interface FlowRecordMapper extends BaseMapper { List selectFirstFlowRecordsByIdAndFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") int flowIndex, @Param("status") int status); List selectFlowRecordsByRecordIdAndStatus(@Param("recordId") Long recordId, @Param("status") int status); + + List selectFlowRecordByRecordIdGeFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") Integer flowIndex); + + List selectFlowRecordByRecordIdLeFlowIndex(@Param("recordId") Long recordId, @Param("flowIndex") Integer flowIndex); + + void deleteFlowRecordByRecordId(@Param("recordId") Long recordId); + + void updateFlowRecordIdById(@Param("id") Long id, @Param("newId") Long newId); + + FlowRecord selectPreFlowRecordByRecordIdMinIdStatusList(@Param("recordId") Long recordId, @Param("flowIndex") Integer flowIndex, @Param("statusList") List statusList); + + List selectFlowRecordByRecordIdFlowIndexStatusList(@Param("recordId") Long recordId, @Param("flowIndex") Integer flowIndex, @Param("statusList") List statusList); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java b/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java index 8647cc54..bcd3f384 100644 --- a/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/ResultScoreMapper.java @@ -37,4 +37,6 @@ public interface ResultScoreMapper extends BaseMapper { List selectResultScoresByDetailId(@Param("id") Long id); List selectResultScoresByDetailIdAndOrderByStaffIds(@Param("id") Long id, @Param("list") List scoreDtos); + + int deleteResultScoreByDetailId(Long id); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/entity/ResultScore.java b/src/main/java/com/lz/modules/flow/entity/ResultScore.java index f6a322d8..c948f40a 100644 --- a/src/main/java/com/lz/modules/flow/entity/ResultScore.java +++ b/src/main/java/com/lz/modules/flow/entity/ResultScore.java @@ -12,7 +12,7 @@ import java.util.Date; *

*

*业绩详情评分表 * @author quyixiao -* @since 2020-11-12 +* @since 2020-12-03 */ @Data @@ -46,6 +46,9 @@ public class ResultScore implements java.io.Serializable { //评分权重 @ApiModelProperty(value = "评分权重", name = "weight") private BigDecimal weight; + //根据权重计算除的实际得分 + @ApiModelProperty(value = "根据权重计算除的实际得分", name = "score") + private BigDecimal score; /** * * @return @@ -181,6 +184,21 @@ public class ResultScore implements java.io.Serializable { this.weight = weight; } + /** + * 根据权重计算除的实际得分 + * @return + */ + public BigDecimal getScore() { + return score; + } + /** + * 根据权重计算除的实际得分 + * @param score + */ + public void setScore(BigDecimal score) { + this.score = score; + } + @Override public String toString() { return "ResultScore{" + @@ -193,6 +211,7 @@ public class ResultScore implements java.io.Serializable { ",approvalId=" + approvalId + ",scoreComment=" + scoreComment + ",weight=" + weight + + ",score=" + score + "}"; } } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java b/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java index 29bb213c..157816c3 100644 --- a/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java +++ b/src/main/java/com/lz/modules/flow/model/ResultScoreDto.java @@ -43,6 +43,10 @@ public class ResultScoreDto { //评分说明 @ApiModelProperty(value = "评分说明", name = "scoreComment") private String scoreComment; + + //根据权重计算除的实际得分 + @ApiModelProperty(value = "根据权重计算除的实际得分", name = "score") + private BigDecimal score; /** * * @return 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 4503002a..a08c24c6 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -6,6 +6,7 @@ import com.lz.modules.equipment.entity.model.BasePage; import com.lz.modules.flow.entity.FlowRecord; import com.lz.modules.performance.req.AssessTaskReq; import com.lz.modules.sys.entity.app.ResultRecord; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -88,4 +89,16 @@ public interface FlowRecordService extends IService { List selectFirstFlowRecordsByIdAndFlowIndex(Long recordId, int flowIndex, int status); List selectFlowRecordsByRecordIdAndStatus(Long recordId, int status); + + List selectFlowRecordByRecordIdGeFlowIndex(Long recordId, Integer flowIndex); + + void deleteFlowRecordByRecordId(Long recordId); + + void updateFlowRecordIdById(Long id, Long newId); + + FlowRecord selectPreFlowRecordByRecordIdMinIdStatusList(Long recordId, Integer flowIndex, List statusList); + + List selectFlowRecordByRecordIdFlowIndexStatusList(Long recordId, Integer flowIndex, List statusList); + + List selectFlowRecordByRecordIdLeFlowIndex(Long resultRecordId, Integer flowIndex); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/ResultScoreService.java b/src/main/java/com/lz/modules/flow/service/ResultScoreService.java index 7b1a520c..f7dd4358 100644 --- a/src/main/java/com/lz/modules/flow/service/ResultScoreService.java +++ b/src/main/java/com/lz/modules/flow/service/ResultScoreService.java @@ -36,4 +36,6 @@ public interface ResultScoreService extends IService { List selectResultScoresByDetailId(Long id); List selectResultScoresByDetailIdAndOrderByStaffIds(Long id, List scoreDtos); + + int deleteResultScoreByDetailId(Long id); } \ 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 5a19246b..d5fe6b3b 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 @@ -236,4 +236,34 @@ public class FlowRecordServiceImpl extends ServiceImpl selectFlowRecordByRecordIdGeFlowIndex(Long recordId, Integer flowIndex) { + return flowRecordMapper.selectFlowRecordByRecordIdGeFlowIndex(recordId,flowIndex); + } + + @Override + public void deleteFlowRecordByRecordId(Long recordId) { + flowRecordMapper.deleteFlowRecordByRecordId(recordId); + } + + @Override + public void updateFlowRecordIdById(Long id, Long newId) { + flowRecordMapper.updateFlowRecordIdById(id,newId); + } + + @Override + public FlowRecord selectPreFlowRecordByRecordIdMinIdStatusList(Long recordId, Integer flowIndex, List statusList) { + return flowRecordMapper.selectPreFlowRecordByRecordIdMinIdStatusList(recordId,flowIndex,statusList); + } + + @Override + public List selectFlowRecordByRecordIdFlowIndexStatusList(Long recordId, Integer flowIndex, List statusList) { + return flowRecordMapper.selectFlowRecordByRecordIdFlowIndexStatusList(recordId,flowIndex,statusList); + } + + @Override + public List selectFlowRecordByRecordIdLeFlowIndex(Long resultRecordId, Integer flowIndex) { + return flowRecordMapper.selectFlowRecordByRecordIdLeFlowIndex(resultRecordId,flowIndex); + } + } diff --git a/src/main/java/com/lz/modules/flow/service/impl/ResultScoreServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/ResultScoreServiceImpl.java index 6a006cd6..45818187 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/ResultScoreServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/ResultScoreServiceImpl.java @@ -71,6 +71,11 @@ public class ResultScoreServiceImpl extends ServiceImpl departmentInfosBos = dingTalkUtil.getDepartmentDetailsV2(token, "1"); if(departmentInfosBos.size() > 0){ + List probationUserIDS = getProbationStaff(token);//获取试用期人员信息 + Map mapProbation = + probationUserIDS.stream().collect(Collectors.toMap(String::toString, Function.identity(), (e, r) -> e)); //获取原有部门信息 Map mapDepartmentInfosBos = departmentInfosBos.stream().collect(Collectors.toMap(DepartmentInfosBo::getId, Function.identity(), (e, r) -> e)); @@ -251,7 +254,7 @@ public class DingtalkBusiness { } //获取部门用户详情 - List staffs = dingTalkUtil.getDepartmentStaffDetailsV2(token, departmentInfo.getId()); + List staffs = dingTalkUtil.getDepartmentStaffDetailsV2(token, departmentInfo.getId(), mapProbation); logger.info("=============================" + departmentInfo.getName() + "================================"); //设置本部门人数 if(departmentInfo.getMemberCount() == null){ @@ -466,6 +469,7 @@ public class DingtalkBusiness { if(addStaffs.size() > 0){//有新增部门 logger.info("新增人员信息个数{}", addStaffs.size()); + staffService.saveBatch(addStaffs); String key; for (StaffEntity entity:addStaffs @@ -495,6 +499,8 @@ public class DingtalkBusiness { } } + + if(updateStaffs.size() > 0){//有新增部门 logger.info("更新人员信息个数{}", updateStaffs.size()); staffService.updateBatchById(updateStaffs); @@ -559,6 +565,41 @@ public class DingtalkBusiness { } } + private List getProbationStaff(String token){ + //获取试用期员工信息 + + try { + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob"); + OapiSmartworkHrmEmployeeQueryonjobRequest req = new OapiSmartworkHrmEmployeeQueryonjobRequest(); + Long offSet = 0L; + req.setStatusList("2"); + req.setSize(50L); + boolean isNext = false; + List ids = new ArrayList<>(); + { + req.setOffset(offSet); + OapiSmartworkHrmEmployeeQueryonjobResponse rsp = client.execute(req, token); + logger.info("钉钉请求试用期员工返回信息{}", rsp.getBody()); + JSONObject jsonObject = JSONObject.parseObject(rsp.getBody()); + if(jsonObject.getIntValue("errcode") == 0){ + jsonObject = jsonObject.getJSONObject("result"); + offSet = jsonObject.getLong("next_cursor"); + if(offSet != null){ + isNext = true; + } + JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("data_list")); + ids.addAll(Arrays.stream(jsonArray.toArray(new String[jsonArray.size()])).collect(Collectors.toList())); + }else{ + logger.info("钉钉请求返回错误{}", jsonObject); + } + }while(isNext) + return ids; + + } catch (ApiException e) { + e.printStackTrace(); + } + return null; + } public void enterStaffOccupationInfos(List staffs) { @@ -586,6 +627,24 @@ public class DingtalkBusiness { } } + public String urging(Long recordId) { + ResultRecord lzResultRecord = resultRecordService.selectResultRecordById(recordId); + //获取当前节点,谁在处理 + List flowRecords = flowRecordService.selectFlowRecordsByRecordIdAndStatus(recordId, 2); + if(flowRecords.size() > 0){ + List ids = flowRecords.stream().map(new Function() { + @Override + public Long apply(FlowRecord flowRecord) { + return flowRecord.getApprovalStaffId(); + } + }).collect(Collectors.toList()); + List staffs = staffService.selectNamesByIds(ids); + sendNoticeMsg(lzResultRecord, staffs); + return "OK"; + } + return "error"; + } + public String sendNoticeMsg(ResultRecord lzResultRecord, List staffs) { ThirdAppConfig thirdAppConfig = thirdAppConfigService.getByAppId(appid); diff --git a/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java b/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java index 87424123..e57b1598 100644 --- a/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java +++ b/src/main/java/com/lz/modules/sys/dao/app/ResultDetailMapper.java @@ -46,4 +46,6 @@ public interface ResultDetailMapper extends BaseMapper { Long insertResultDetails(@Param("list") List resultDetails); List selectDtosByRecordId(@Param("recordResultId") Long id, @Param("modelId") Long modelId); + + int deleteResultDetailByRecordId(@Param("recordId") Long recordId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java b/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java index c042cc82..3b477599 100644 --- a/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java +++ b/src/main/java/com/lz/modules/sys/entity/app/ResultDetail.java @@ -12,7 +12,7 @@ import java.util.Date; *

*

*业绩详情表 * @author quyixiao -* @since 2020-11-17 +* @since 2020-12-03 */ @Data @@ -31,6 +31,12 @@ public class ResultDetail implements java.io.Serializable { //最后修改时间 @ApiModelProperty(value = "最后修改时间", name = "gmtModified") private Date gmtModified; + //备份id,本表得id + @ApiModelProperty(value = "备份id,本表得id", name = "backId") + private Long backId; + //是否为备份,0非备份,1备份值 + @ApiModelProperty(value = "是否为备份,0非备份,1备份值", name = "isBack") + private Integer isBack; //1,业绩,2文化价值观 @ApiModelProperty(value = "1,业绩,2文化价值观", name = "type") private Integer type; @@ -133,6 +139,36 @@ public class ResultDetail implements java.io.Serializable { this.gmtModified = gmtModified; } + /** + * 备份id,本表得id + * @return + */ + public Long getBackId() { + return backId; + } + /** + * 备份id,本表得id + * @param backId + */ + public void setBackId(Long backId) { + this.backId = backId; + } + + /** + * 是否为备份,0非备份,1备份值 + * @return + */ + public Integer getIsBack() { + return isBack; + } + /** + * 是否为备份,0非备份,1备份值 + * @param isBack + */ + public void setIsBack(Integer isBack) { + this.isBack = isBack; + } + /** * 1,业绩,2文化价值观 * @return @@ -350,6 +386,8 @@ public class ResultDetail implements java.io.Serializable { ",isDelete=" + isDelete + ",gmtCreate=" + gmtCreate + ",gmtModified=" + gmtModified + + ",backId=" + backId + + ",isBack=" + isBack + ",type=" + type + ",target=" + target + ",keyResult=" + keyResult + 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 f7360a95..b79f45d5 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 @@ -70,4 +70,6 @@ public interface ResultDetailService extends IService { Long insertResultDetails(List resultDetails); List selectDtosByRecordId(Long id, Long modelId); + + int deleteResultDetailByRecordId(Long recordId); } \ 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 7e79b30e..5b568912 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 @@ -125,4 +125,10 @@ public interface ResultRecordService extends IService { List selectResultRecordsByStartId(Long startId); List selectResultRecordIdsByStartId(Long startId); + + R getResetData(RecordDetailDto recordDetailDto); + + + R resetData(Long recordId, int clearFlag); + } \ 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 f337f388..fb2193bf 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 @@ -340,4 +340,9 @@ public class ResultDetailServiceImpl extends ServiceImpl tDepartments = departmentsDao.selectAll(); if (StringUtil.isNotBlank(params.getDepartment1()) || StringUtil.isNotBlank(params.getDepartment2()) || StringUtil.isNotBlank(params.getDepartment3())) { - Map> departmentMap = null; - if(employeesDto == null || employeesDto.getExpire() < new Date().getTime()){ + Map> departmentMap = null; + if (employeesDto == null || employeesDto.getExpire() < new Date().getTime()) { departmentMap = getStringListMap(tDepartments); - Date expire = DateUtils.addMinute(new Date(),30); - EmployeesDto newDto = new EmployeesDto(expire.getTime(),departmentMap); + Date expire = DateUtils.addMinute(new Date(), 30); + EmployeesDto newDto = new EmployeesDto(expire.getTime(), departmentMap); employeesDto = newDto; log.info("使用新数据"); - }else{ + } else { log.info("使用缓存"); departmentMap = employeesDto.getCacheMap(); } @@ -204,12 +202,12 @@ public class ResultRecordServiceImpl extends ServiceImpl listx = new ArrayList<>(); - if(status !=null){ - for(String l : status){ - listx.add(NumberUtil.objToLongDefault(l,-1)); + if (status != null) { + for (String l : status) { + listx.add(NumberUtil.objToLongDefault(l, -1)); } params.setStatusList(listx); } @@ -257,16 +255,16 @@ public class ResultRecordServiceImpl extends ServiceImpl> getStringListMap(List tDepartments) { - Map> departmentMap = new HashMap<>(); - for(DepartmentsEntity department : tDepartments) { + Map> departmentMap = new HashMap<>(); + for (DepartmentsEntity department : tDepartments) { List list = new ArrayList<>(); - for(DepartmentsEntity child : tDepartments) { - if(child.getDepartmentParentId().equals(department.getDepartmentId())){ + for (DepartmentsEntity child : tDepartments) { + if (child.getDepartmentParentId().equals(department.getDepartmentId())) { list.add(child); } } @@ -280,12 +278,12 @@ public class ResultRecordServiceImpl extends ServiceImpl childDepartIds ,String parentId,Map> departmentMap ){ + public void getChildIds(List childDepartIds, String parentId, Map> departmentMap) { childDepartIds.add(parentId); - List tDepartments = departmentMap.get(parentId); - if(CollectionUtils.isNotEmpty(tDepartments)){ - for(DepartmentsEntity tDepartment:tDepartments){ - getChildIds(childDepartIds,tDepartment.getDepartmentId(),departmentMap); + List tDepartments = departmentMap.get(parentId); + if (CollectionUtils.isNotEmpty(tDepartments)) { + for (DepartmentsEntity tDepartment : tDepartments) { + getChildIds(childDepartIds, tDepartment.getDepartmentId(), departmentMap); } } } @@ -303,8 +301,8 @@ public class ResultRecordServiceImpl extends ServiceImpl map = departmentsService.selectUserAllDepartmentInFo(departmentsStaffRelateEntity.getDepartmentId()); if (StringUtil.isNotBlank(map.get("dd2"))) { leader = departmentsStaffRelateService.selectLeaderByDepartmentId(map.get("dd2")); - if(leader ==null && StringUtil.isNotBlank(map.get("dd3"))){ + if (leader == null && StringUtil.isNotBlank(map.get("dd3"))) { leader = departmentsStaffRelateService.selectLeaderByDepartmentId(map.get("dd3")); return leader; @@ -349,12 +347,12 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByResultRecordIdFlowId(oldResultRecordId); - for(FlowRecord flowRecord : flowRecords){ + for (FlowRecord flowRecord : flowRecords) { flowRecord.setRecordId(resultRecordOld.getId()); flowRecord.setId(null); flowRecord.setType(Constant.ONE); @@ -428,12 +426,12 @@ public class ResultRecordServiceImpl extends ServiceImpl resultDetails = resultDetailService.selectByRecordId(recordId); if (CollectionUtils.isEmpty(resultDetails)) { @@ -445,12 +443,12 @@ public class ResultRecordServiceImpl extends ServiceImpl staffRoleMap = recordAuthService.selectRoleIdByStaffRoleInfo(resultRecord.getFlowStaffIdRole()); - List listAuth = recordAuthService.selectAuthInfo(staffRoleMap.get(userId)); + List listAuth = recordAuthService.selectAuthInfo(staffRoleMap.get(userId)); Auth auth = recordAuthService.getAuth(listAuth); // 如果是评分,查看是不是所有内容都己经评分 - if(auth.getEditScore() == 1 ){ - for(ResultDetail resultDetail : resultDetails ){ - if(resultDetail.getAcquireScore().compareTo(BigDecimal.ZERO) <= 0 ){ + if (auth.getEditScore() == 1) { + for (ResultDetail resultDetail : resultDetails) { + if (resultDetail.getAcquireScore().compareTo(BigDecimal.ZERO) <= 0) { return R.error("resultDetail[" + resultDetail.getId() + "] 评分必需 > 0 "); } } @@ -459,9 +457,9 @@ public class ResultRecordServiceImpl extends ServiceImpl flows = flowService.selectByFlowId(flowId,0l); + log.info("approvalList approval : " + Arrays.toString(approvalList.toArray())); + List flows = flowService.selectByFlowId(flowId, 0l); FlowRecord lastFlowRecord = flowRecordService.selectLastFlowRecordByRecordId(resultRecordId); FlowRecord notFlowRecord = flowRecordService.selectNotApprovalStaffIdFlowRecords(resultRecord.getId()); if (notFlowRecord != null) { @@ -572,7 +570,7 @@ public class ResultRecordServiceImpl extends ServiceImpl staffRoleDtos, Long roleId) { + public StaffEntity getApprovalStaff(ResultRecord resultRecord, String departmentLevel, List staffRoleDtos, Long roleId) { StaffEntity approvalStaff = null; List staffRoles = staffRoleService.selectByRole(departmentLevel); for (StaffRole staffRole : staffRoles) { @@ -602,10 +600,10 @@ public class ResultRecordServiceImpl extends ServiceImpl list, int flowIndex) { if (flowIndex > list.size()) { - return -1 ; + return -1; } List flows = new ArrayList<>(); - for(int i = 0 ;i < flowIndex ;i ++){ + for (int i = 0; i < flowIndex; i++) { flows.add(list.get(i)); } int index = 0; @@ -626,8 +624,8 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByResultRecordIdType(req.getRecordResultId(), resultRecord.getType()); if (flowRecords != null && flowRecords.size() == 2) { // 表示可以撤回 - r = reject(resultRecord,5); + r = reject(resultRecord, 5); } else if (flowRecords != null && flowRecords.size() > 2) { return R.error("你的领导己经审批,不能撤回了"); } @@ -659,17 +657,17 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByResultRecordIdFlowId(resultRecord.getId()); StaffEntity mySelf = staffService.selectStaffById(resultRecord.getStaffId()); StaffEntity approvalStaff = mySelf; @@ -713,10 +711,10 @@ public class ResultRecordServiceImpl extends ServiceImpl staffDistribution(String monthTime,List staffIds) { + public List staffDistribution(String monthTime, List staffIds) { - return resultRecordMapper.staffDistribution(monthTime,staffIds); + return resultRecordMapper.staffDistribution(monthTime, staffIds); } @Override - public List countNumByFlowProcess(Long startId,List evaluationIds,List departmentIds) { - return resultRecordMapper.countNumByFlowProcess(startId,evaluationIds,departmentIds); + public List countNumByFlowProcess(Long startId, List evaluationIds, List departmentIds) { + return resultRecordMapper.countNumByFlowProcess(startId, evaluationIds, departmentIds); } @Override - public List countNumByScoreLevel(Long startId,List evaluationIds,List departmentIds) { - return resultRecordMapper.countNumByScoreLevel(startId,evaluationIds,departmentIds); + public List countNumByScoreLevel(Long startId, List evaluationIds, List departmentIds) { + return resultRecordMapper.countNumByScoreLevel(startId, evaluationIds, departmentIds); } @Override @@ -772,19 +770,18 @@ public class ResultRecordServiceImpl extends ServiceImpl flows = flowService.selectByFlowId(resultRecord.getEvaluationId(),resultRecord.getStartId()); + List flows = flowService.selectByFlowId(resultRecord.getEvaluationId(), resultRecord.getStartId()); List flowIds = new ArrayList<>(); - for(Flow flow:flows){ + for (Flow flow : flows) { flowIds.add(flow.getId()); } - List flowApprovalRoles =flowApprovalRoleService.selectFlowApprovalRoleList(flowIds); + List flowApprovalRoles = flowApprovalRoleService.selectFlowApprovalRoleList(flowIds); return initFlowRecord(resultRecord, flows, flowApprovalRoles); } @Override public R initFlowRecord(ResultRecord resultRecord, List flows, List flowApprovalRoles) { - int i = 0; for (FlowApprovalRole flowApprovalRole : flowApprovalRoles) { FlowRecord flowRecord = new FlowRecord(); @@ -805,40 +802,41 @@ public class ResultRecordServiceImpl extends ServiceImpl staffRoles= staffRoleService.selectAllStaffRoleByDepartmentLevel(Arrays.asList(new String[]{RoleEnums.MASTER_PM.getName(),RoleEnums.CHILD_PM.getName()})); - for(StaffRole staffRole:staffRoles){ + if (approvalStaff != null && StringUtil.isNotBlank(approvalStaff.getName())) { + insertFlowRecord(flowRecord, approvalStaff, flows, flowApprovalRole, resultRecord, i, null); + } else { + List staffRoles = staffRoleService.selectAllStaffRoleByDepartmentLevel(Arrays.asList(new String[]{RoleEnums.MASTER_PM.getName(), RoleEnums.CHILD_PM.getName()})); + for (StaffRole staffRole : staffRoles) { approvalStaff = staffService.selectStaffById(staffRole.getStaffId()); - if(staffRole.getDepartmentId() ==0){ //如果是管理所有部门 - insertFlowRecord(flowRecord,approvalStaff,flows,flowApprovalRole,resultRecord,i,1); - }else{ + if (staffRole.getDepartmentId() == 0) { //如果是管理所有部门 + insertFlowRecord(flowRecord, approvalStaff, flows, flowApprovalRole, resultRecord, i, 1); + } else { DepartmentsStaffRelateEntity relateEntity = departmentsStaffRelateService.selectLastDepartmentByStaffId(resultRecord.getStaffId()); Map map = departmentsService.selectUserAllDepartmentIds(relateEntity.getDepartmentId()); List staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId()); boolean flag = false; - for(StaffRoleDepartment staffRoleDepartment: staffRoleDepartments){ + for (StaffRoleDepartment staffRoleDepartment : staffRoleDepartments) { String departmentName = map.get(staffRoleDepartment.getDepartmentId()); - if(StringUtil.isNotBlank(departmentName)){ + if (StringUtil.isNotBlank(departmentName)) { flag = true; break; } } - if(flag){ //如果管理员是管理特定部门 - insertFlowRecord(flowRecord,approvalStaff,flows,flowApprovalRole,resultRecord,i,1); + if (flag) { //如果管理员是管理特定部门 + insertFlowRecord(flowRecord, approvalStaff, flows, flowApprovalRole, resultRecord, i, 1); } } } } i++; } + resultRecordService.updateResultRecordById(resultRecord); return R.ok(); } - public void insertFlowRecord(FlowRecord flowRecord,StaffEntity approvalStaff,List flows,FlowApprovalRole flowApprovalRole ,ResultRecord resultRecord,int i,Integer stepType ){ + public void insertFlowRecord(FlowRecord flowRecord, StaffEntity approvalStaff, List flows, FlowApprovalRole flowApprovalRole, ResultRecord resultRecord, int i, Integer stepType) { flowRecord.setApprovalStaffName(approvalStaff.getName()); flowRecord.setApprovalStaffId(approvalStaff.getId()); Flow flow = getFlow(flows, flowApprovalRole.getFlowId()); @@ -855,38 +853,38 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),2); - if(CollectionUtils.isNotEmpty(flowRecords)){ + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 2); + if (CollectionUtils.isNotEmpty(flowRecords)) { FlowRecord preFlowRecord = flowRecords.get(0); // 评论内容 FlowChart flowChart = flowService.selectFlowChartByChartId(preFlowRecord.getFlowId()); @@ -895,13 +893,13 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordIdGeFlowIndex(f.getRecordId(),f.getFlowIndex()); + for(FlowRecord flowRecord:flowRecords){ + // 如果结果录入己经走了 + if (new Integer(2).equals(flowRecord.getFlowProcess()) && (flowRecord.getStatus() == 1 || flowRecord.getStatus() == 4) ) { + flowRecord.setStatus(4); //表示流程己经被重置 + }else{ + flowRecord.setStatus(0); //表示流程己经被重置 + } + flowRecordService.updateFlowRecordById(flowRecord); + } + FlowRecord preFlowRecord = flowRecordService.selectPreFlowRecordByRecordIdMinIdStatusList(f.getRecordId(), f.getFlowIndex() - 1, Arrays.asList(1, 2)); + List runing = new ArrayList<>(); + if (preFlowRecord != null) { + runing = flowRecordService.selectFlowRecordByRecordIdFlowIndex(f.getRecordId(), preFlowRecord.getFlowIndex()); + } else { + runing = flowRecordService.selectFlowRecordByRecordIdFlowIndex(f.getRecordId(), 0); + } + for (FlowRecord r : runing) { + r.setStatus(2); + flowRecordService.updateFlowRecordById(r); + } + return R.ok(); + } + + + private R resetAll(ApprovalDto approvalDto) { + FlowRecord flowRecord = flowRecordService.selectFlowRecordById(approvalDto.getFlowRecordId()); + List flowRecords = flowRecordService.selectFlowRecordByRecordId(flowRecord.getRecordId()); + List flowRecordIds =new ArrayList<>(); + boolean flag = false ; + for(FlowRecord f: flowRecords){ + flowRecordIds.add(f.getId()); + //如果录入己经走了,则重置数据后,结果录入还是默认己走 + if (new Integer(2).equals(f.getFlowProcess()) && (f.getStatus() == 1 || f.getStatus() == 4 )) { + flag = true; + } + } + flowRecordService.deleteFlowRecordByRecordId(flowRecord.getRecordId()); + initFlowRecord(flowRecord.getRecordId()); + List newflowRecords = flowRecordService.selectFlowRecordByRecordId(flowRecord.getRecordId()); + for(int i = 0 ;i < newflowRecords.size() ; i ++){ + flowRecordService.updateFlowRecordIdById(newflowRecords.get(i).getId(),flowRecordIds.get(i)); + if(flag ){ //如果录入己经走了,设置新的数据,结果录入己走 + FlowRecord newFlowRecord = newflowRecords.get(i) ; + if (new Integer(2).equals(newFlowRecord.getFlowProcess()) ) { + newFlowRecord.setStatus(4); + flowRecordService.updateFlowRecordById(newFlowRecord); + } + } + } + resultRecordService.resetData(flowRecord.getRecordId(),approvalDto.getClearFlag()); + return R.ok(); + } + private R skip(ApprovalDto approvalDto) { FlowRecord flowRecord = flowRecordService.selectFlowRecordById(approvalDto.getFlowRecordId()); - if(flowRecord.getStatus().equals(FlowRecordStatusEnums.FINISHED_STATUS.getStatus()) - || flowRecord.getStatus().equals(FlowRecordStatusEnums.OTHER_APPROVAL.getStatus())){ - return R.ok("流程己经走了,无法跳过 " ); + if (flowRecord.getStatus().equals(FlowRecordStatusEnums.FINISHED_STATUS.getStatus()) + || flowRecord.getStatus().equals(FlowRecordStatusEnums.OTHER_APPROVAL.getStatus())) { + return R.ok("流程己经走了,无法跳过 "); } - if(flowRecord.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())){ // 如果当前没有审批 + if (flowRecord.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())) { // 如果当前没有审批 flowRecord.setStatus(FlowRecordStatusEnums.SKIP_STATUS.getStatus()); flowRecordService.updateFlowRecordById(flowRecord); - }else if (flowRecord.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())){ //如果当前正在审批中 + } else if (flowRecord.getStatus().equals(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus())) { //如果当前正在审批中 approvalDto.setLoginUserId(flowRecord.getApprovalStaffId()); - newSubmit(approvalDto,FlowRecordStatusEnums.SKIP_STATUS.getStatus()); + newSubmit(approvalDto, FlowRecordStatusEnums.SKIP_STATUS.getStatus()); } flowChangeService.saveChange(approvalDto, flowRecord, 0); - dingtalkBusiness.sendWorkMSGWithAsyn(flowRecord.getRecordId(),flowRecord.getId(), WorkMsgTypeEnum. SKIP.getType()); + dingtalkBusiness.sendWorkMSGWithAsyn(flowRecord.getRecordId(), flowRecord.getId(), WorkMsgTypeEnum.SKIP.getType()); return R.ok("恭喜您,跳过成功。"); } @@ -949,14 +1016,14 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 1); - if(flowRecords!=null && flowRecords.size()>0){ + if (flowRecords != null && flowRecords.size() > 0) { return R.error("领导己经审批,不能撤回"); } return newReject(approvalDto); @@ -975,17 +1042,17 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),2); - if(CollectionUtils.isEmpty(flowRecords)){ + List flowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), 2); + if (CollectionUtils.isEmpty(flowRecords)) { log.info("流程己经结束"); return R.ok("流程己经结束"); } - if(finishedStatus == null){ + if (finishedStatus == null) { finishedStatus = FlowRecordStatusEnums.FINISHED_STATUS.getStatus(); } FlowRecord preFlowRecord = flowRecords.get(0); @@ -1022,8 +1089,8 @@ public class ResultRecordServiceImpl extends ServiceImpl currentflowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(),FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus()); - if(currentflowRecords !=null && currentflowRecords.size() > 0 ){ + List currentflowRecords = flowRecordService.selectFlowRecordByRecordIdStatus(approvalDto.getResultRecordId(), FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus()); + if (currentflowRecords != null && currentflowRecords.size() > 0) { FlowRecord currentFlowRecord = currentflowRecords.get(0); // 更新当前数据 // 获取当前审批结点组 List currentFlowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(approvalDto.getResultRecordId(), currentFlowRecord.getFlowIndex()); - for(FlowRecord flowRecord : currentFlowRecords){ + for (FlowRecord flowRecord : currentFlowRecords) { flowRecord.setStatus(FlowRecordStatusEnums.UN_TO_STATUS.getStatus()); flowRecordService.updateFlowRecordById(flowRecord); } // 恢复之前数据 // 获取之前审批过的结点 FlowRecord preFlowRecord = flowRecordService.selectPreFlowRecordByRecordIdMaxIdStatus(approvalDto.getResultRecordId(), - currentFlowRecord.getId(),FlowRecordStatusEnums.FINISHED_STATUS.getStatus()); - if(preFlowRecord != null) { + currentFlowRecord.getId(), FlowRecordStatusEnums.FINISHED_STATUS.getStatus()); + if (preFlowRecord != null) { // 获取之前审批结点组 List flowRecords = flowRecordService.selectFlowRecordByRecordIdFlowIndex(approvalDto.getResultRecordId(), preFlowRecord.getFlowIndex()); for (FlowRecord flowRecord : flowRecords) { @@ -1073,9 +1140,9 @@ public class ResultRecordServiceImpl extends ServiceImpl flowRecords = flowRecordService.selectFlowRecordByResultRecordId(recordDetailDto.getResultRecordId()); List flowRecordList = new ArrayList<>(); int flowIndex = -1; - Long flowRecordId= 0l; + Long flowRecordId = 0l; ResultRecord resultRecord = resultRecordService.selectResultRecordById(recordDetailDto.getResultRecordId()); for (FlowRecord flowRecord : flowRecords) { if (flowRecord.getFlowIndex().equals(flowIndex)) { //表示有重复数据 @@ -1119,7 +1186,7 @@ public class ResultRecordServiceImpl extends ServiceImpl flowDetailRespList = lastResp.getFlowDetailRespList(); - mySetFlowDetailRespList(flowDetailRespList, flowRecord,recordDetailDto.getLoginUserId(),resultRecord.getStaffId()); + mySetFlowDetailRespList(flowDetailRespList, flowRecord, recordDetailDto.getLoginUserId(), resultRecord.getStaffId()); for (FlowRecord mul : mulFlowRecord) { if (mul.getStatus().equals(FlowRecordStatusEnums.UN_TO_STATUS.getStatus())) { flag0 = true; @@ -1130,28 +1197,28 @@ public class ResultRecordServiceImpl extends ServiceImpl flowDetailRespList = new ArrayList<>(); - mySetFlowDetailRespList(flowDetailRespList,flowRecord,recordDetailDto.getLoginUserId(),resultRecord.getStaffId()); + mySetFlowDetailRespList(flowDetailRespList, flowRecord, recordDetailDto.getLoginUserId(), resultRecord.getStaffId()); resp.setFlowDetailRespList(flowDetailRespList); flowRecordList.add(resp); flowIndex = flowRecord.getFlowIndex(); } + boolean flag = true; for (FlowRecord flowRecord : flowRecords) { if (flowRecord.getStatus() == 2) { @@ -1176,71 +1244,78 @@ public class ResultRecordServiceImpl extends ServiceImpl resultCommentList = resultCommentService.selectByRecordId(recordDetailDto.getResultRecordId()); - for(ResultComment resultComment:resultCommentList){ + for (ResultComment resultComment : resultCommentList) { StaffEntity staffEntity = staffService.selectStaffById(resultComment.getStaffId()); resultComment.setAvatar(staffEntity.getAvatar()); } - Map auth = new HashMap<>(); - auth.put("showResult",1); - auth.put("showScore",1); - - List currentResultRecords = flowRecordService.selectFlowRecordByRecordIdStatus(recordDetailDto.getResultRecordId(),2); + Map auth = new HashMap<>(); + auth.put("showResult", 1); + auth.put("showScore", 1); + List currentResultRecords = flowRecordService.selectFlowRecordByRecordIdStatus(recordDetailDto.getResultRecordId(), 2); log.info("当前用户登陆用户 id :" + recordDetailDto.getLoginUserId()); - if(currentResultRecords !=null && currentResultRecords.size() > 0 ){ + if (currentResultRecords != null && currentResultRecords.size() > 0) { FlowRecord currentFlowRecord = currentResultRecords.get(0); int flowProcess = currentFlowRecord.getFlowProcess(); - if(flowProcess <= 3 ){ - auth.put("showResult",0); + if (flowProcess <= 3) { + auth.put("showResult", 0); } - if( flowProcess <= 4 ){ - auth.put("showScore",0); + if (flowProcess <= 4) { + auth.put("showScore", 0); } FlowRecord currentResultRecord = null; - for(FlowRecord flowRecord:currentResultRecords){ - if(flowRecord.getApprovalStaffId().equals(recordDetailDto.getLoginUserId())){ + for (FlowRecord flowRecord : currentResultRecords) { + if (flowRecord.getApprovalStaffId().equals(recordDetailDto.getLoginUserId())) { currentResultRecord = flowRecord; log.info("当前审批用户 id id :" + currentResultRecord.getApprovalStaffId()); break; } } - if(currentResultRecord !=null){ - if(StringUtil.isNotBlank(currentResultRecord.getFlowStaffIdRole())){ + if (currentResultRecord != null) { + if (StringUtil.isNotBlank(currentResultRecord.getFlowStaffIdRole())) { auth = getAuth(currentResultRecord.getFlowStaffIdRole()); flowRecordId = currentResultRecord.getId(); } } } - auth.put("tiaozhuang",0); + //如果是绩效管理员有一键催办功能 + StaffRole staffRole = staffRoleService.selectStaffRolesByStaffIdDepartmentLevelList(recordDetailDto.getLoginUserId(), + Arrays.asList(new String[]{RoleEnums.CHILD_PM.getName(), RoleEnums.MASTER_PM.getName()})); + if (staffRole != null) { + auth.put("toFast", 1); + auth.put("toReset", 1); + } + auth.put("tiaozhuang", 0); Map map = new HashMap<>(); map.put("flowRecordList", flowRecordList); map.put("resultCommentList", resultCommentList); - map.put("auth",auth); - map.put("flowRecordId",flowRecordId); + map.put("auth", auth); + map.put("flowRecordId", flowRecordId); return R.ok().put("data", map); } - public Map getAuth(String flowStaffIdRole){ - Map auth = Maps.newHashMap(); - Map map = JSONObject.parseObject(flowStaffIdRole,Map.class); + public Map getAuth(String flowStaffIdRole) { + Map auth = Maps.newHashMap(); + Map map = JSONObject.parseObject(flowStaffIdRole, Map.class); List roleIds = null; for (Map.Entry entry : map.entrySet()) { - if(entry.getValue() !=null ){ - roleIds = JSON.parseArray(entry.getValue().toString(),Long.class); + if (entry.getValue() != null) { + roleIds = JSON.parseArray(entry.getValue().toString(), Long.class); } } - if(roleIds !=null && roleIds.size() > 0){ - auth = recordAuthService.selectAuthByRoleIds(roleIds); + if (roleIds != null && roleIds.size() > 0) { + auth = recordAuthService.selectAuthByRoleIds(roleIds); } return auth; } - public void mySetFlowDetailRespList(List flowDetailRespList ,FlowRecord flowRecord,Long loginUserId,Long recordStaffId){ - FlowDetailResp flowDetailResp = new FlowDetailResp(); + public void mySetFlowDetailRespList(List flowDetailRespList, FlowRecord flowRecord, Long loginUserId, Long recordStaffId) { + FlowDetailResp flowDetailResp = new FlowDetailResp(); flowDetailResp.setCurrentStaffId(flowRecord.getApprovalStaffId()); flowDetailResp.setStaffName(flowRecord.getApprovalStaffName()); flowDetailResp.setFlowRecordId(flowRecord.getId()); @@ -1257,17 +1332,17 @@ public class ResultRecordServiceImpl extends ServiceImpl map = departmentsService.selectUserAllDepartmentIds(departmentsStaffRelateEntity.getDepartmentId()); List staffRoleDepartments = staffRoleDepartmentService.selectStaffRoleDepartmentByStaffRoleId(staffRole.getId()); for (StaffRoleDepartment staffRoleDepartment : staffRoleDepartments) { @@ -1294,7 +1369,7 @@ public class ResultRecordServiceImpl extends ServiceImpl staffEntities = departManagers.getManagers(); - if(CollectionUtils.isNotEmpty(staffEntities)){ + if (CollectionUtils.isNotEmpty(staffEntities)) { return staffEntities.get(0); } return new StaffEntity(); } - public Flow getFlow(List flows,Long flowId){ - for(Flow flow : flows){ - if(flow.getId().equals(flowId)){ - return flow; - } - } - return new Flow(); + public Flow getFlow(List flows, Long flowId) { + for (Flow flow : flows) { + if (flow.getId().equals(flowId)) { + return flow; + } + } + return new Flow(); } @Override - public ResultRecord selectLastResultRecordByUserId(Long userId){ + public ResultRecord selectLastResultRecordByUserId(Long userId) { return resultRecordMapper.selectLastResultRecordByUserId(userId); } @Override - public ResultRecord selectResultRecordByStaffIdAndStartId(Long userId, Long startId){ + public ResultRecord selectResultRecordByStaffIdAndStartId(Long userId, Long startId) { return resultRecordMapper.selectResultRecordByStaffIdAndStartId(userId, startId); } @Override - public List selectResultRecordsByStartId(Long startId){ + public List selectResultRecordsByStartId(Long startId) { return resultRecordMapper.selectResultRecordsByStartId(startId); } @Override - public List selectResultRecordIdsByStartId(Long startId){ + public List selectResultRecordIdsByStartId(Long startId) { return resultRecordMapper.selectIdsByStartId(startId); } + + @Override + public R getResetData(RecordDetailDto recordDetailDto) { + List flowRecordRunning = flowRecordService.selectFlowRecordByRecordIdStatus(recordDetailDto.getResultRecordId(),2); + List flowRecords = new ArrayList<>(); + if(CollectionUtils.isEmpty(flowRecordRunning) ){ + flowRecords = flowRecordService.selectFlowRecordByResultRecordId(recordDetailDto.getResultRecordId()); + }else{ + flowRecords = flowRecordService.selectFlowRecordByRecordIdLeFlowIndex(recordDetailDto.getResultRecordId(),flowRecordRunning.get(0).getFlowIndex()); + } + int flowIndex = 0; + List resetDataResps = new ArrayList<>(); + for (FlowRecord flowRecord : flowRecords) { + if (flowRecord.getFlowIndex().equals(flowIndex - 1)) { //表示有重复数据 + ResetDataResp resetDataResp = resetDataResps.get(flowIndex - 1); + resetDataResp.getStaffNames().add(flowRecord.getApprovalStaffName()); + continue; + } + ResetDataResp resetDataResp = new ResetDataResp(); + resetDataResp.setFlowName(flowRecord.getFlowName()); + resetDataResp.setId(flowRecord.getId()); + List staffNames = new ArrayList<>(); + staffNames.add(flowRecord.getApprovalStaffName()); + resetDataResp.setStaffNames(staffNames); + resetDataResps.add(resetDataResp); + flowIndex ++ ; + } + return R.ok().put("data",resetDataResps); + } + + @Override + public R resetData(Long recordId, int clearFlag) { + List resultDetails = resultDetailService.selectByRecordId(recordId); + + log.info("需要删除指标个数{}", resultDetails.size()); + if(resultDetails.size() > 0){ + if(clearFlag == 1){ + log.info("全部清空,删除所有指标即可"); + resultDetailService.deleteResultDetailByRecordId(recordId); + for(ResultDetail detail : resultDetails){ + resultScoreService.deleteResultScoreByDetailId(detail.getId()); + } + return R.ok(); + } + //删除指标以外的所有数据,评分、评分说明、结果 + + for(ResultDetail detail : resultDetails){ + detail.setCheckResult(null); + detail.setAcquireScore(null); + detail.setSuperScore(null); + resultScoreService.deleteResultScoreByDetailId(detail.getId()); + } + resultDetailService.updateBatchById(resultDetails); + return R.ok(); + } + return R.error("无数据删除"); + + } } diff --git a/src/main/resources/mapper/app/ResultDetailMapper.xml b/src/main/resources/mapper/app/ResultDetailMapper.xml index 796d3504..256ba69d 100644 --- a/src/main/resources/mapper/app/ResultDetailMapper.xml +++ b/src/main/resources/mapper/app/ResultDetailMapper.xml @@ -8,6 +8,8 @@ + + @@ -27,7 +29,7 @@ - id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, type AS type, target AS target, key_result AS keyResult, key_result_3_5 AS keyResult35, key_result_3_7 AS keyResult37, check_weight AS checkWeight, check_result AS checkResult, super_score AS superScore, acquire_score AS acquireScore, score_comment AS scoreComment, record_id AS recordId, staff_id AS staffId, priority AS priority, model_id AS modelId + id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, back_id AS backId, is_back AS isBack, type AS type, target AS target, key_result AS keyResult, key_result_3_5 AS keyResult35, key_result_3_7 AS keyResult37, check_weight AS checkWeight, check_result AS checkResult, super_score AS superScore, acquire_score AS acquireScore, score_comment AS scoreComment, record_id AS recordId, staff_id AS staffId, priority AS priority, model_id AS modelId @@ -40,6 +42,8 @@ insert into lz_result_detail( + back_id, + is_back, type, target, key_result, @@ -58,6 +62,8 @@ gmt_create, gmt_modified )values( + #{ backId}, + #{ isBack}, #{ type}, #{ target}, #{ keyResult}, @@ -85,6 +91,8 @@ is_delete = #{isDelete}, gmt_create = #{gmtCreate}, + back_id = #{backId}, + is_back = #{isBack}, type = #{type}, target = #{target}, key_result = #{keyResult}, @@ -111,6 +119,8 @@ set is_delete = #{isDelete}, gmt_create = #{gmtCreate}, + back_id = #{backId}, + is_back = #{isBack}, type = #{type}, target = #{target}, key_result = #{keyResult}, @@ -125,7 +135,7 @@ staff_id = #{staffId}, priority = #{priority}, model_id = #{modelId} - ,gmt_modified = now() + ,gmt_modified = now() where id = #{id} @@ -189,5 +199,9 @@ select * from lz_result_detail where record_id=#{recordResultId} and model_id = #{modelId} and is_delete = 0 order by priority asc + + update lz_result_detail set is_delete = 1, gmt_modified = now() where record_id=#{recordId} and is_delete = 0 + + diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index 7dca5bc4..cd947efb 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -32,7 +32,6 @@ - @@ -324,8 +323,45 @@ + + + + + + + + + + + + + delete from lz_flow_record where record_id = #{recordId} + + + + update lz_flow_record set id = #{newId} where id = #{id} + + diff --git a/src/main/resources/mapper/flow/ResultScoreMapper.xml b/src/main/resources/mapper/flow/ResultScoreMapper.xml index fc708796..6689788a 100644 --- a/src/main/resources/mapper/flow/ResultScoreMapper.xml +++ b/src/main/resources/mapper/flow/ResultScoreMapper.xml @@ -13,12 +13,13 @@ + - id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, acquire_score AS acquireScore, detail_id AS detailId, approval_id AS approvalId, score_comment AS scoreComment, weight AS weight + id AS id, is_delete AS isDelete, gmt_create AS gmtCreate, gmt_modified AS gmtModified, acquire_score AS acquireScore, detail_id AS detailId, approval_id AS approvalId, score_comment AS scoreComment, weight AS weight, score AS score @@ -36,6 +37,7 @@ approval_id, score_comment, weight, + score, is_delete, gmt_create, gmt_modified @@ -45,6 +47,7 @@ #{ approvalId}, #{ scoreComment}, #{ weight}, + #{ score}, 0, now(), now() @@ -62,7 +65,8 @@ detail_id = #{detailId}, approval_id = #{approvalId}, score_comment = #{scoreComment}, - weight = #{weight} + weight = #{weight}, + score = #{score} ,gmt_modified = now() where id = #{id} @@ -79,14 +83,15 @@ detail_id = #{detailId}, approval_id = #{approvalId}, score_comment = #{scoreComment}, - weight = #{weight} - ,gmt_modified = now() + weight = #{weight}, + score = #{score} + ,gmt_modified = now() where id = #{id} - update lz_result_score set is_delete = 1 where id=#{id} limit 1 + update lz_result_score set is_delete = 1 where id=#{id} limit 1 + + update lz_result_score set is_delete = 1, gmt_modified = now() where detail_id=#{id} and is_delete = 0 + + diff --git a/src/test/java/com/lz/mysql/MysqlMain.java b/src/test/java/com/lz/mysql/MysqlMain.java index 09095683..6410c7a3 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -1,5 +1,7 @@ package com.lz.mysql; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.lz.common.utils.StringUtil; import com.lz.modules.flow.entity.FlowChartRole; import org.springframework.util.ResourceUtils; @@ -65,51 +67,7 @@ public class MysqlMain { */ public static void main(String[] args) throws Exception { - /*Long a = 2l; - Long b = 3l; - String value = "aaa"; - StopWatch stopWatch = new StopWatch(); - stopWatch.start("测试静态方法"); - for(int i = 0; i < 10000; i++){ - if(TestStaticAndHuo.isEmpt(value)){ - } - } - stopWatch.stop(); - - stopWatch.start("测试对象方法"); - for(int i = 0; i < 10000; i++){ - if(value == null || value.length() == 0){ - - } - } - stopWatch.stop(); - - System.out.println(stopWatch.prettyPrint());*/ - - /*List testMaps = new ArrayList<>(); - TestMap test = new TestMap(); - test.setName("123"); - test.setMobile("18969093321"); - testMaps.add(test); - - test = new TestMap(); - test.setName("123"); - test.setMobile("18969093321"); - testMaps.add(test); - - Map t = testMaps.stream().collect(Collectors.toMap(TestMap::getName, testMap -> testMap)); - List flowChartRoles = new ArrayList<>(); - flowChartRoles.add(1L); - flowChartRoles.add(2L); - flowChartRoles.add(3L); - flowChartRoles.add(4L); - String roles = flowChartRoles.stream().map(new Function() { - @Override - public String apply(Long flowChartRole) { - return flowChartRole.toString(); - } - }).collect(Collectors.joining(","));*/ String path = ResourceUtils.getURL("classpath:").getPath(); System.out.println(path); @@ -126,7 +84,8 @@ public class MysqlMain { List list = new ArrayList(); - list.add(new TablesBean("third_msg_send_record")); + list.add(new TablesBean("lz_result_score")); + list.add(new TablesBean("lz_result_detail")); List list2 = new ArrayList(); Map map = MysqlUtil2ShowCreateTable.getComments();