From ba6c3fd372e966e6b1df2d7550de1229fdb8ff22 Mon Sep 17 00:00:00 2001 From: wulin Date: Thu, 9 Sep 2021 21:39:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BD=93=E8=80=83=E8=AF=84?= =?UTF-8?q?=E7=BB=84=E4=BA=BA=E5=91=98=E5=85=A8=E9=83=A8=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=88=A0=E9=99=A4=E8=80=83=E8=AF=84=E7=BB=84?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84start=E9=87=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E7=BB=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/GroupResultRecordStaffsCount.java | 31 ++++++++++++ .../impl/AssessManagerServiceImpl.java | 49 +++++++++++++++++-- .../sys/dao/app/ResultRecordMapper.java | 7 +++ .../sys/service/app/ResultRecordService.java | 2 + .../app/impl/ResultRecordServiceImpl.java | 5 ++ .../controller/ThirdAppConfigController.java | 17 +++++++ .../mapper/app/ResultRecordMapper.xml | 26 ++++++++++ 7 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/lz/modules/flow/entity/GroupResultRecordStaffsCount.java diff --git a/src/main/java/com/lz/modules/flow/entity/GroupResultRecordStaffsCount.java b/src/main/java/com/lz/modules/flow/entity/GroupResultRecordStaffsCount.java new file mode 100644 index 00000000..31d1c84c --- /dev/null +++ b/src/main/java/com/lz/modules/flow/entity/GroupResultRecordStaffsCount.java @@ -0,0 +1,31 @@ +package com.lz.modules.flow.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** +*

+*

*业绩记录表 +* @author quyixiao +* @since 2020-10-23 +*/ + +@Data +@TableName("lz_result_record") +@ApiModel(value = "一次业绩中一个组内人员个数") +public class GroupResultRecordStaffsCount implements java.io.Serializable { + + //当前是目标确认还是评分,0,目标制定,1,目标确认,2执行中,3,结果值录入,4,评分,5考核结束 + @ApiModelProperty(value = "本次绩效考核已经发起人员个数", name = "count") + private Integer count; + //考核组id + @ApiModelProperty(value = "考核组id", name = "evaluationId") + private Long evaluationId; +} \ No newline at end of file diff --git a/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java b/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java index b9766ddd..c00aea26 100644 --- a/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java +++ b/src/main/java/com/lz/modules/performance/service/impl/AssessManagerServiceImpl.java @@ -20,6 +20,7 @@ import com.lz.modules.flow.dao.FlowRecordMapper; import com.lz.modules.flow.dao.FlowStartMapper; import com.lz.modules.flow.entity.EvaluationGroup; import com.lz.modules.flow.entity.FlowStart; +import com.lz.modules.flow.entity.GroupResultRecordStaffsCount; import com.lz.modules.flow.model.GroupStaffs; import com.lz.modules.flow.model.StartGroups; import com.lz.modules.flow.service.EvaluationGroupService; @@ -44,6 +45,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; @@ -207,9 +210,9 @@ public class AssessManagerServiceImpl implements AssessManagerService { String[] changeStaffIds = req.getStaffIds().split(","); List change = new ArrayList<>(Arrays.asList(changeStaffIds)); - if(req.getChangeType() == 0){ - //获取所有考核人员 - List all = Lists.newArrayList(); + if(req.getChangeType() == 0){//添加人员 + + List all = Lists.newArrayList();//获取所有考核人员 //根据组id成员分组 Map> map = Maps.newHashMap(); @@ -270,12 +273,50 @@ public class AssessManagerServiceImpl implements AssessManagerService { if(req.getChangeType() == 1 && CollectionUtils.isNotEmpty(change)){ //删除钉钉任务 try { - List recordIds = resultRecordMapper.selectIdsByStartIdAndStaffIds(req.getStartId(),change); + List resultRecords = resultRecordMapper.selectResultRecordsByStartIdAndStaffIds(req.getStartId(),change); + Map> rIdAndStaffIds = new HashMap<>(); + List recordIds = resultRecords.stream().map(new Function() { + @Override + public Long apply(ResultRecord resultRecord) { + Map staffIds = rIdAndStaffIds.get(resultRecord.getEvaluationId()); + if(staffIds == null){ + staffIds = new HashMap<>(); + rIdAndStaffIds.put(resultRecord.getEvaluationId(), staffIds); + } + Long staffId = staffIds.get(resultRecord.getStaffId()); + if(staffId == null){ + staffIds.put(resultRecord.getStaffId(), resultRecord.getStaffId()); + } + return resultRecord.getId(); + } + }).collect(toList()); + if(!CollectionUtils.isEmpty(recordIds)){ log.info("删除resultRecordIds: " + JSON.toJSONString(recordIds)); String s = dingtalkBusiness.delWorkMSGWithStart(recordIds); log.info("清除钉钉任务响应,res: " +s); } + List groupResultRecordStaffsCounts = + resultRecordMapper.selectGroupResultRecordsStaffsCountByStartId(req.getStartId()); + for (GroupResultRecordStaffsCount groupResultRecordStaffsCount:groupResultRecordStaffsCounts + ) { + //从flowstart中删除全部删完的考核组信息 + Map staffIds = rIdAndStaffIds.get(groupResultRecordStaffsCount.getEvaluationId()); + if(staffIds != null && staffIds.size() == groupResultRecordStaffsCount.getCount()){ + //这次全部删除了该考评组下面的人,那么删除考评组对应的start里面的信息 + for (Long id:ids + ) { + if(id == groupResultRecordStaffsCount.getEvaluationId()){ + ids.remove(id); + break; + } + } + } + } + if(ids.size() != split.length){//更新考核组信息 + flowStart.setGroupIds(String.join(",", ids.toString())); + flowStartService.updateFlowStartById(flowStart); + } } catch (Exception e) { log.error("调用钉钉清除任务异常,e:" ,e); } diff --git a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java index c10ef5a6..8bcc6e75 100644 --- a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java +++ b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java @@ -15,6 +15,7 @@ import com.lz.modules.app.dto.ReportProgressListDto; import com.lz.modules.app.req.ReportListReq; import com.lz.modules.app.req.ResultRecordReq; import com.lz.modules.app.resp.OwnResultResp; +import com.lz.modules.flow.entity.GroupResultRecordStaffsCount; import com.lz.modules.flow.model.ResultRecordDto; import com.lz.modules.performance.dto.LevelDetailExportDto; import com.lz.modules.performance.dto.ToScoreDingTalkDto; @@ -117,4 +118,10 @@ public interface ResultRecordMapper extends BaseMapper { List selectStaffIdsByStartIdAndFlowProcess(@Param("startId") Long startId, @Param("flowProcess") Long flowProcess); List selectIdsByStartIdAndStaffIds(@Param("startId")Long startId,@Param("staffIds") List staffIds); + List selectResultRecordsByStartIdAndStaffIds(@Param("startId")Long startId, + @Param("staffIds") List staffIds); + + List selectGroupResultRecordsStaffsCountByStartId(@Param("startId") Long startId); + + List selectResultRecordByGroupIds(@Param("groupIds") List groupIds); } \ 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 dcaea363..85eb93d2 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 @@ -138,4 +138,6 @@ public interface ResultRecordService extends IService { List selectStaffIdsByFlowProcess(List flowProcess); R saveDetail(Long userId, ResultRecordDetailDto dto); + + List selectResultRecordByGroupIds(List groupIds); } \ No newline at end of file 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 8ccff835..ab0ac8c8 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 @@ -1930,4 +1930,9 @@ public class ResultRecordServiceImpl extends ServiceImpl selectResultRecordByGroupIds(List groupIds){ + return resultRecordMapper.selectResultRecordByGroupIds(groupIds); + } } diff --git a/src/main/java/com/lz/modules/third/controller/ThirdAppConfigController.java b/src/main/java/com/lz/modules/third/controller/ThirdAppConfigController.java index a1e860d0..752a6b43 100644 --- a/src/main/java/com/lz/modules/third/controller/ThirdAppConfigController.java +++ b/src/main/java/com/lz/modules/third/controller/ThirdAppConfigController.java @@ -11,9 +11,11 @@ import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.app.entity.StaffSimpleInfo; import com.lz.modules.app.service.StaffService; import com.lz.modules.flow.entity.FlowStart; +import com.lz.modules.flow.model.ResultTagetLibDto; import com.lz.modules.flow.req.FlowReSendDingTalkMsgReq; import com.lz.modules.flow.service.FlowStartService; import com.lz.modules.job.business.DingtalkBusiness; +import com.lz.modules.performance.service.ResultTagetLibService; import com.lz.modules.sys.entity.app.ResultRecord; import com.lz.modules.sys.service.app.ResultRecordService; import com.lz.modules.third.entity.ThirdAppConfig; @@ -50,6 +52,9 @@ public class ThirdAppConfigController { @Autowired private ResultRecordService resultRecordService; + @Autowired + private ResultTagetLibService resultTagetLibService; + @RequestMapping("/list") public R list(@RequestBody String body) { @@ -61,12 +66,24 @@ public class ThirdAppConfigController { return R.ok().put("page", page); } + //同步人员信息 @GetMapping("/syn") public R syn(@RequestParam String appid) { dingtalkBusiness.getDingTalkepartmentsIntoData(appid); return R.ok(); } + //重新生成绩效详情 + @PostMapping("/reStartFlow") + public R reStartFlow(@RequestBody List groupIds) { + List resultRecordList = resultRecordService.selectResultRecordByGroupIds(groupIds); + for (ResultRecord resultRecord:resultRecordList + ) { + List libDtos = resultTagetLibService.selectResultTagetLibDtoByModelId(resultRecord.getId()); + } + return R.ok(); + } + //从新发送钉钉消息 @PostMapping("/reSendDingTalkMst") public R reSendDingTalkMst(@RequestBody FlowReSendDingTalkMsgReq flowReSendDingTalkMsgReq) { diff --git a/src/main/resources/mapper/app/ResultRecordMapper.xml b/src/main/resources/mapper/app/ResultRecordMapper.xml index 0e48e09e..06e0bf36 100644 --- a/src/main/resources/mapper/app/ResultRecordMapper.xml +++ b/src/main/resources/mapper/app/ResultRecordMapper.xml @@ -663,5 +663,31 @@ ) + + + + + + +