| | |
| | | package com.gkhy.safePlatform.incidentManage.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService; |
| | | import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.DepInfoRPCRespDTO; |
| | | import com.gkhy.safePlatform.commons.enums.ResultCodes; |
| | | import com.gkhy.safePlatform.commons.query.PageQuery; |
| | | import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; |
| | |
| | | import com.gkhy.safePlatform.commons.vo.ResultVO; |
| | | import com.gkhy.safePlatform.commons.vo.SearchResultVO; |
| | | import com.gkhy.safePlatform.incidentManage.entity.*; |
| | | import com.gkhy.safePlatform.incidentManage.enums.AccidentReportGradeEnum; |
| | | import com.gkhy.safePlatform.incidentManage.enums.AccidentReportLevelEnum; |
| | | import com.gkhy.safePlatform.incidentManage.enums.AccidentReportTypeEnum; |
| | | import com.gkhy.safePlatform.incidentManage.enums.AccidentResultCodes; |
| | | import com.gkhy.safePlatform.incidentManage.exception.AccidentException; |
| | | import com.gkhy.safePlatform.incidentManage.model.dto.req.AccidentReportFileReqDTO; |
| | | import com.gkhy.safePlatform.incidentManage.model.dto.req.AccidentReportReqDTO; |
| | | import com.gkhy.safePlatform.incidentManage.model.dto.resp.AccidentReportDetailRespDTO; |
| | | import com.gkhy.safePlatform.incidentManage.model.dto.resp.AccidentReportFileRespDTO; |
| | | import com.gkhy.safePlatform.incidentManage.model.dto.resp.AccidentReportPageRespDTO; |
| | | import com.gkhy.safePlatform.incidentManage.model.dto.resp.*; |
| | | import com.gkhy.safePlatform.incidentManage.query.AccidentReportQuery; |
| | | import com.gkhy.safePlatform.incidentManage.query.db.AccidentReportDBQuery; |
| | | import com.gkhy.safePlatform.incidentManage.service.AccidentReportService; |
| | | import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentExpressFileInfoService; |
| | | import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentExpressInfoService; |
| | | import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentReportFileInfoService; |
| | | import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentReportInfoService; |
| | | import org.apache.dubbo.config.annotation.DubboReference; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service("accidentReportService") |
| | |
| | | |
| | | @Autowired |
| | | private AccidentReportFileInfoService accidentReportFileInfoService; |
| | | |
| | | @DubboReference(check = false) |
| | | private AccountDepartmentService accountDepartmentService; |
| | | |
| | | @Autowired |
| | | private AccidentExpressInfoService accidentExpressInfoService; |
| | | |
| | | @Autowired |
| | | private AccidentExpressFileInfoService accidentExpressFileInfoService; |
| | | |
| | | |
| | | @Override |
| | |
| | | List<AccidentReportInfoPageDO> accidentReportInfoPageDOList = accidentReportInfoService.selectAccidentReportList(page, accidentReportDBQuery); |
| | | List<AccidentReportPageRespDTO> respList = BeanCopyUtils.copyBeanList(accidentReportInfoPageDOList, AccidentReportPageRespDTO.class); |
| | | |
| | | Map<Long, String> depPool = new HashMap<>(); |
| | | |
| | | respList.forEach(AccidentReportPageRespDTO -> { |
| | | // 设置部门名称 |
| | | if (!depPool.containsKey(AccidentReportPageRespDTO.getAccidentDepartmentId())) { |
| | | ResultVO<DepInfoRPCRespDTO> rpcResult = accountDepartmentService.getDepInfoByDepId(AccidentReportPageRespDTO.getAccidentDepartmentId()); |
| | | if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) { |
| | | if (rpcResult.getData() != null) { |
| | | DepInfoRPCRespDTO dep = (DepInfoRPCRespDTO) rpcResult.getData(); |
| | | |
| | | depPool.put(dep.getDepId(), dep.getDepName()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | String depName = depPool.get(AccidentReportPageRespDTO.getAccidentDepartmentId()); |
| | | AccidentReportPageRespDTO.setDeptName(depName); |
| | | }); |
| | | |
| | | |
| | | return new SearchResultVO<>( |
| | | true, |
| | | pageIndex, |
| | | pageSize,page.getPages(), |
| | | pageSize, page.getPages(), |
| | | page.getTotal(), |
| | | respList, |
| | | ResultCodes.OK |
| | |
| | | public ResultVO addAccidentReport(Long uid, AccidentReportReqDTO accidentReportReqDTO) { |
| | | //必填项验证 |
| | | checkRequired(accidentReportReqDTO); |
| | | // 验证枚举 |
| | | checkEnum(accidentReportReqDTO); |
| | | |
| | | Date nowDate = new Date(); |
| | | //1.新增事故报告 |
| | |
| | | accidentReportInfo.setDelFlag(false); |
| | | accidentReportInfo.setCreateUid(uid); |
| | | accidentReportInfo.setGmtCreate(nowDate); |
| | | accidentReportInfo.setStatus(false); |
| | | accidentReportInfoService.addAccidentReport(accidentReportInfo); |
| | | //2.新增事故报告附件 |
| | | if (!CollectionUtils.isEmpty(accidentReportReqDTO.getFileList())){ |
| | | addAccidentReportFile(accidentReportInfo.getId(),uid,nowDate,accidentReportReqDTO.getFileList()); |
| | | if (!CollectionUtils.isEmpty(accidentReportReqDTO.getFileList())) { |
| | | addAccidentReportFile(accidentReportInfo.getId(), uid, nowDate, accidentReportReqDTO.getFileList()); |
| | | } |
| | | return new ResultVO(ResultCodes.OK); |
| | | } |
| | | |
| | | private void addAccidentReportFile(Long accidentReportId ,Long uid , Date nowDate , List<AccidentReportFileReqDTO> AccidentReportFileReqDTOList){ |
| | | private void addAccidentReportFile(Long accidentReportId, Long uid, Date nowDate, List<AccidentReportFileReqDTO> AccidentReportFileReqDTOList) { |
| | | List<AccidentReportFileInfo> fileInfoList = BeanCopyUtils.copyBeanList(AccidentReportFileReqDTOList, AccidentReportFileInfo.class); |
| | | fileInfoList.forEach(AccidentReportFileInfo -> { |
| | | AccidentReportFileInfo.setAccidentReportId(accidentReportId); |
| | |
| | | AccidentReportFileInfo.setCreateUid(uid); |
| | | AccidentReportFileInfo.setGmtCreate(nowDate); |
| | | }); |
| | | for (AccidentReportFileInfo AccidentReportFileInfo :fileInfoList){ |
| | | for (AccidentReportFileInfo AccidentReportFileInfo : fileInfoList) { |
| | | accidentReportFileInfoService.addAccidentReportFile(AccidentReportFileInfo); |
| | | } |
| | | } |
| | |
| | | AccidentReportDetailRespDTO AccidentReportDetailRespDTO = new AccidentReportDetailRespDTO(); |
| | | //查询是否存在 |
| | | AccidentReportInfoDetailDO AccidentReportInfoDetailDO = accidentReportInfoService.selectAccidentReportById(id); |
| | | if (AccidentReportInfoDetailDO==null){ |
| | | if (AccidentReportInfoDetailDO == null) { |
| | | throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NOT_EXIST); |
| | | }else{ |
| | | BeanUtils.copyProperties(AccidentReportInfoDetailDO,AccidentReportDetailRespDTO); |
| | | //查找对应的附件 |
| | | } else { |
| | | BeanUtils.copyProperties(AccidentReportInfoDetailDO, AccidentReportDetailRespDTO); |
| | | //查找事故报告对应的附件 |
| | | List<AccidentReportFileInfoDO> AccidentReportFileInfoDOList = accidentReportFileInfoService.selectByAccidentReportId(id); |
| | | if (!CollectionUtils.isEmpty(AccidentReportFileInfoDOList)){ |
| | | List<AccidentReportFileRespDTO> accidentReportFileRespDTOList = BeanCopyUtils.copyBeanList(AccidentReportFileInfoDOList , AccidentReportFileRespDTO.class); |
| | | if (!CollectionUtils.isEmpty(AccidentReportFileInfoDOList)) { |
| | | List<AccidentReportFileRespDTO> accidentReportFileRespDTOList = BeanCopyUtils.copyBeanList(AccidentReportFileInfoDOList, AccidentReportFileRespDTO.class); |
| | | AccidentReportDetailRespDTO.setFileList(accidentReportFileRespDTOList); |
| | | } |
| | | return new ResultVO<>(ResultCodes.OK ,AccidentReportDetailRespDTO); |
| | | // 查找事故快报对应的附件 |
| | | List<AccidentExpressFileInfoDO> AccidentExpressFileInfoDOList = accidentExpressFileInfoService.selectByAccidentExpressId(AccidentReportDetailRespDTO.getAccidentExpressId()); |
| | | if (!CollectionUtils.isEmpty(AccidentExpressFileInfoDOList)) { |
| | | List<AccidentExpressFileRespDTO> accidentExpressFileRespDTOList = BeanCopyUtils.copyBeanList(AccidentExpressFileInfoDOList, AccidentExpressFileRespDTO.class); |
| | | AccidentReportDetailRespDTO.setExpressFileList(accidentExpressFileRespDTOList); |
| | | } |
| | | |
| | | |
| | | return new ResultVO<>(ResultCodes.OK, AccidentReportDetailRespDTO); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ResultVO updateAccidentReport(Long uid, AccidentReportReqDTO accidentReportReqDTO) { |
| | | // 验证枚举 |
| | | checkEnum(accidentReportReqDTO); |
| | | |
| | | Date nowDate = new Date(); |
| | | //查询是否存在 |
| | | AccidentReportInfoDetailDO AccidentReportInfoDetailDO = accidentReportInfoService.selectAccidentReportById(accidentReportReqDTO.getId()); |
| | | if (AccidentReportInfoDetailDO==null){ |
| | | if (AccidentReportInfoDetailDO == null) { |
| | | throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NOT_EXIST); |
| | | }else{ |
| | | } else { |
| | | AccidentReportInfo accidentReportInfo = new AccidentReportInfo(); |
| | | BeanUtils.copyProperties(accidentReportReqDTO,accidentReportInfo); |
| | | BeanUtils.copyProperties(accidentReportReqDTO, accidentReportInfo); |
| | | accidentReportInfo.setUpdateUid(uid); |
| | | accidentReportInfo.setGmtModitify(nowDate); |
| | | accidentReportInfoService.updateAccidentReport(accidentReportInfo); |
| | | //修改事故报告附件 |
| | | updateAccidentReportFile(uid,accidentReportReqDTO.getId(),nowDate,accidentReportReqDTO.getFileList()); |
| | | updateAccidentReportFile(uid, accidentReportReqDTO.getId(), nowDate, accidentReportReqDTO.getFileList()); |
| | | return new ResultVO(ResultCodes.OK); |
| | | } |
| | | } |
| | | |
| | | private void updateAccidentReportFile(Long uid ,Long accidentReportId ,Date nowDate,List<AccidentReportFileReqDTO> AccidentReportFileReqDTOList){ |
| | | private void updateAccidentReportFile(Long uid, Long accidentReportId, Date nowDate, List<AccidentReportFileReqDTO> AccidentReportFileReqDTOList) { |
| | | |
| | | List<AccidentReportFileInfoDO> accidentReportFileInfoDOList = accidentReportFileInfoService.selectByAccidentReportId(accidentReportId); |
| | | List<Long> oldIdsList = accidentReportFileInfoDOList.stream().map(AccidentReportFileInfoDO::getId).collect(Collectors.toList()); |
| | |
| | | List<AccidentReportFileInfo> addList = new ArrayList<>(); |
| | | //删除的附件集合(id) |
| | | List<Long> deleteList = new ArrayList<>(); |
| | | for (AccidentReportFileReqDTO AccidentReportFileReqDTO : AccidentReportFileReqDTOList){ |
| | | for (AccidentReportFileReqDTO AccidentReportFileReqDTO : AccidentReportFileReqDTOList) { |
| | | //如果不存在id则表示页面新增的附件 |
| | | if (AccidentReportFileReqDTO.getId() == null){ |
| | | if (AccidentReportFileReqDTO.getId() == null) { |
| | | AccidentReportFileInfo AccidentReportFileInfo = new AccidentReportFileInfo(); |
| | | BeanUtils.copyProperties(AccidentReportFileReqDTO,AccidentReportFileInfo); |
| | | BeanUtils.copyProperties(AccidentReportFileReqDTO, AccidentReportFileInfo); |
| | | AccidentReportFileInfo.setDelFlag(false); |
| | | AccidentReportFileInfo.setGmtCreate(nowDate); |
| | | AccidentReportFileInfo.setCreateUid(uid); |
| | |
| | | addList.add(AccidentReportFileInfo); |
| | | } |
| | | //如果存在id则判断页面是否删除 |
| | | else{ |
| | | else { |
| | | newIdsList.add(AccidentReportFileReqDTO.getId()); |
| | | } |
| | | } |
| | | for (Long oldId : oldIdsList){ |
| | | if (!newIdsList.contains(oldId)){ |
| | | for (Long oldId : oldIdsList) { |
| | | if (!newIdsList.contains(oldId)) { |
| | | deleteList.add(oldId); |
| | | } |
| | | } |
| | | if (!CollectionUtils.isEmpty(addList)){ |
| | | for (AccidentReportFileInfo AccidentReportFileInfo : addList){ |
| | | if (!CollectionUtils.isEmpty(addList)) { |
| | | for (AccidentReportFileInfo AccidentReportFileInfo : addList) { |
| | | accidentReportFileInfoService.addAccidentReportFile(AccidentReportFileInfo); |
| | | } |
| | | } |
| | | if (!CollectionUtils.isEmpty(deleteList)){ |
| | | if (!CollectionUtils.isEmpty(deleteList)) { |
| | | accidentReportFileInfoService.deleteAccidentReportFileByIds(deleteList); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public ResultVO batchDeleteAccidentReport(String ids) { |
| | | if (StringUtils.isBlank(ids)){ |
| | | public ResultVO batchDeleteAccidentReport(Long[] ids) { |
| | | if (ids == null || ids.length == 0) { |
| | | throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NULL); |
| | | }else{ |
| | | String[] idArr = ids.split(","); |
| | | for (String id : idArr) { |
| | | deleteAccidentReport(Long.valueOf(id)); |
| | | } else { |
| | | |
| | | for (Long id : ids) { |
| | | deleteAccidentReport(id); |
| | | } |
| | | return new ResultVO(ResultCodes.OK); |
| | | } |
| | | } |
| | | |
| | | |
| | | private void deleteAccidentReport(Long id) { |
| | | //查询是否存在 |
| | | AccidentReportInfoDetailDO AccidentReportInfoDetailDO = accidentReportInfoService.selectAccidentReportById(id); |
| | | if (AccidentReportInfoDetailDO==null){ |
| | | if (AccidentReportInfoDetailDO == null) { |
| | | throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NOT_EXIST); |
| | | }else{ |
| | | } else { |
| | | accidentReportInfoService.deleteAccidentReportById(id); |
| | | //删除附件 |
| | | accidentReportFileInfoService.deleteAccidentReportFileByAccidentReportId(id); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 验证必填项 |
| | | * |
| | | * @return |
| | | */ |
| | | private void checkRequired(AccidentReportReqDTO AccidentReportReqDTO) { |
| | | private void checkRequired(AccidentReportReqDTO accidentReportReqDTO) { |
| | | //事故快报 |
| | | if (AccidentReportReqDTO.getAccidentExpressId() == null ) { |
| | | if (accidentReportReqDTO.getAccidentExpressId() == null) { |
| | | throw new AccidentException(AccidentResultCodes.ACCIDENT_EXPRESS_NULL); |
| | | } |
| | | AccidentExpressInfoDetailDO accidentExpressInfo = accidentExpressInfoService.selectAccidentExpressById(accidentReportReqDTO.getAccidentExpressId()); |
| | | if (accidentExpressInfo == null) { |
| | | throw new AccidentException(AccidentResultCodes.ACCIDENT_EXPRESS_NOT_EXIST); |
| | | } |
| | | |
| | | //事故类型 |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentType())) { |
| | | if (accidentReportReqDTO.getAccidentType() == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_TYPE_NULL); |
| | | } |
| | | //事故等级 |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentGrade())) { |
| | | if (accidentReportReqDTO.getAccidentGrade() == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_GRADE_NULL); |
| | | } |
| | | //经济损失 |
| | | if (AccidentReportReqDTO.getEconomicLoss() == null ) { |
| | | if (accidentReportReqDTO.getEconomicLoss() == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_ECONOMIC_LOSS_NULL); |
| | | } |
| | | //要求报告完成期限 |
| | | if (AccidentReportReqDTO.getReportDeadline() == null ) { |
| | | if (accidentReportReqDTO.getReportDeadline() == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_REPORT_DEADLINE_NULL); |
| | | } |
| | | //事故级别 |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentLevel())) { |
| | | if (accidentReportReqDTO.getAccidentLevel() == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_LEVEL_NULL); |
| | | } |
| | | //原因综合分析(直接) |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getComprehensiveAnalysisDirect())) { |
| | | if (StringUtils.isBlank(accidentReportReqDTO.getComprehensiveAnalysisDirect())) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_COMPREHENSIVE_ANALYSIS_DIRECT_NULL); |
| | | } |
| | | //原因综合分析(直接) |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getComprehensiveAnalysisDirect())) { |
| | | if (StringUtils.isBlank(accidentReportReqDTO.getComprehensiveAnalysisDirect())) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_COMPREHENSIVE_ANALYSIS_DIRECT_NULL); |
| | | } |
| | | //原因综合分析(间接) |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getComprehensiveAnalysisIndirect())) { |
| | | if (StringUtils.isBlank(accidentReportReqDTO.getComprehensiveAnalysisIndirect())) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_COMPREHENSIVE_ANALYSIS_INDIRECT_NULL); |
| | | } |
| | | //整改措施 |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getRectificationMeasures())) { |
| | | if (StringUtils.isBlank(accidentReportReqDTO.getRectificationMeasures())) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_RECTIFICATION_MEASURES_NULL); |
| | | } |
| | | //事故处理 |
| | | if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentHandling())) { |
| | | if (StringUtils.isBlank(accidentReportReqDTO.getAccidentHandling())) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_ACCIDENT_HANDLING_NULL); |
| | | } |
| | | //填写人 |
| | | if (AccidentReportReqDTO.getFillInUserUid() == null ) { |
| | | if (accidentReportReqDTO.getFillInUserUid() == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_FILL_IN_USER_UID_NULL); |
| | | } |
| | | //填写日期 |
| | | if (AccidentReportReqDTO.getFillInTime() == null ) { |
| | | if (accidentReportReqDTO.getFillInTime() == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_FILL_IN_TIME_NULL); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 枚举验证 |
| | | */ |
| | | private void checkEnum(AccidentReportReqDTO accidentExpressReqDTO) { |
| | | if (AccidentReportTypeEnum.getByCode(accidentExpressReqDTO.getAccidentType()) == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_ENUMS_TYPE_NOT_EXIST); |
| | | } |
| | | if (AccidentReportGradeEnum.getByCode(accidentExpressReqDTO.getAccidentGrade()) == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_ENUMS_GRADE_NOT_EXIST); |
| | | } |
| | | if (AccidentReportLevelEnum.getByCode(accidentExpressReqDTO.getAccidentLevel()) == null) { |
| | | throw new AccidentException(AccidentResultCodes.REPORT_ENUMS_LEVEL_NOT_EXIST); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |