| | |
| | | private SafetyCertificateMapper certificateMapper; |
| | | @Resource |
| | | private HrmEmployeeApi hrmEmployeeApi; |
| | | @Resource |
| | | private SafetyRefResolver refResolver; |
| | | |
| | | public Long createCertificate(SafetyCertificateSaveReqVO reqVO) { |
| | | reqVO.setId(null); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 批量补全展示字段,持证人档案一次性查好,避免逐条查询 |
| | | */ |
| | | public void fillDisplayFieldsBatch(List<SafetyCertificateDO> certs, List<SafetyCertificateRespVO> resps) { |
| | | var employeeMap = refResolver.employeeMap(certs.stream().map(SafetyCertificateDO::getEmployeeId).toList()); |
| | | for (int i = 0; i < certs.size(); i++) { |
| | | fillDisplayFields(certs.get(i), resps.get(i), employeeMap.get(certs.get(i).getEmployeeId())); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 单个证件的展示字段补全(类型名称、状态名称、剩余天数、持证人档案) |
| | | */ |
| | | public void fillDisplayFields(SafetyCertificateDO cert, SafetyCertificateRespVO respVO) { |
| | | fillDisplayFields(cert, respVO, cert.getEmployeeId() == null ? null |
| | | : hrmEmployeeApi.getEmployee(cert.getEmployeeId())); |
| | | } |
| | | |
| | | private void fillDisplayFields(SafetyCertificateDO cert, SafetyCertificateRespVO respVO, |
| | | HrmEmployeeSimpleDTO employee) { |
| | | respVO.setCertTypeName(SafetyCertificateTypeEnum.getNameByType(cert.getCertType())); |
| | | String status = resolveStatus(cert.getExpireDate(), cert.getWarnDays(), cert.getStatus()); |
| | | respVO.setStatus(status); |
| | |
| | | if (cert.getExpireDate() != null) { |
| | | respVO.setRemainingDays(ChronoUnit.DAYS.between(LocalDate.now(), cert.getExpireDate())); |
| | | } |
| | | HrmEmployeeSimpleDTO employee = cert.getEmployeeId() == null ? null |
| | | : hrmEmployeeApi.getEmployee(cert.getEmployeeId()); |
| | | if (employee != null) { |
| | | respVO.setEmployeeName(employee.getName()); |
| | | respVO.setEmployeeNo(employee.getEmployeeNo()); |