package com.gkhy.safePlatform.incidentManage.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.utils.StringUtils;
|
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.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.query.AccidentReportQuery;
|
import com.gkhy.safePlatform.incidentManage.query.db.AccidentReportDBQuery;
|
import com.gkhy.safePlatform.incidentManage.service.AccidentReportService;
|
import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentReportFileInfoService;
|
import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentReportInfoService;
|
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.util.stream.Collectors;
|
|
@Service("accidentReportService")
|
public class AccidentReportServiceImpl implements AccidentReportService {
|
|
@Autowired
|
private AccidentReportInfoService accidentReportInfoService;
|
|
@Autowired
|
private AccidentReportFileInfoService accidentReportFileInfoService;
|
|
|
@Override
|
public SearchResultVO<List<AccidentReportPageRespDTO>> selectAccidentReportList(PageQuery<AccidentReportQuery> query) {
|
Long pageIndex = query.getPageIndex();
|
Long pageSize = query.getPageSize();
|
Page<AccidentReportInfoPageDO> page = new Page<>(pageIndex, pageSize);
|
|
AccidentReportDBQuery accidentReportDBQuery = new AccidentReportDBQuery();
|
if (query.getSearchParams() != null) {
|
BeanUtils.copyProperties(query.getSearchParams(), accidentReportDBQuery);
|
}
|
|
|
List<AccidentReportInfoPageDO> accidentReportInfoPageDOList = accidentReportInfoService.selectAccidentReportList(page, accidentReportDBQuery);
|
List<AccidentReportPageRespDTO> respList = BeanCopyUtils.copyBeanList(accidentReportInfoPageDOList, AccidentReportPageRespDTO.class);
|
|
return new SearchResultVO<>(
|
true,
|
pageIndex,
|
pageSize,
|
page.getTotal(),
|
respList,
|
ResultCodes.OK
|
);
|
}
|
|
@Override
|
public ResultVO addAccidentReport(Long uid, AccidentReportReqDTO accidentReportReqDTO) {
|
//必填项验证
|
checkRequired(accidentReportReqDTO);
|
|
Date nowDate = new Date();
|
//1.新增事故报告
|
AccidentReportInfo accidentReportInfo = new AccidentReportInfo();
|
BeanUtils.copyProperties(accidentReportReqDTO, accidentReportInfo);
|
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());
|
}
|
return new ResultVO(ResultCodes.OK);
|
}
|
|
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.setDelFlag(false);
|
AccidentReportFileInfo.setCreateUid(uid);
|
AccidentReportFileInfo.setGmtCreate(nowDate);
|
});
|
for (AccidentReportFileInfo AccidentReportFileInfo :fileInfoList){
|
accidentReportFileInfoService.addAccidentReportFile(AccidentReportFileInfo);
|
}
|
}
|
|
@Override
|
public ResultVO<AccidentReportDetailRespDTO> getAccidentReportById(Long id) {
|
AccidentReportDetailRespDTO AccidentReportDetailRespDTO = new AccidentReportDetailRespDTO();
|
//查询是否存在
|
AccidentReportInfoDetailDO AccidentReportInfoDetailDO = accidentReportInfoService.selectAccidentReportById(id);
|
if (AccidentReportInfoDetailDO==null){
|
throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NOT_EXIST);
|
}else{
|
BeanUtils.copyProperties(AccidentReportInfoDetailDO,AccidentReportDetailRespDTO);
|
//查找对应的附件
|
List<AccidentReportFileInfoDO> AccidentReportFileInfoDOList = accidentReportFileInfoService.selectByAccidentReportId(id);
|
if (!CollectionUtils.isEmpty(AccidentReportFileInfoDOList)){
|
List<AccidentReportFileRespDTO> accidentReportFileRespDTOList = BeanCopyUtils.copyBeanList(AccidentReportFileInfoDOList , AccidentReportFileRespDTO.class);
|
AccidentReportDetailRespDTO.setFileList(accidentReportFileRespDTOList);
|
}
|
return new ResultVO<>(ResultCodes.OK ,AccidentReportDetailRespDTO);
|
}
|
}
|
|
@Override
|
public ResultVO updateAccidentReport(Long uid, AccidentReportReqDTO accidentReportReqDTO) {
|
Date nowDate = new Date();
|
//查询是否存在
|
AccidentReportInfoDetailDO AccidentReportInfoDetailDO = accidentReportInfoService.selectAccidentReportById(accidentReportReqDTO.getId());
|
if (AccidentReportInfoDetailDO==null){
|
throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NOT_EXIST);
|
}else{
|
AccidentReportInfo accidentReportInfo = new AccidentReportInfo();
|
BeanUtils.copyProperties(accidentReportReqDTO,accidentReportInfo);
|
accidentReportInfo.setUpdateUid(uid);
|
accidentReportInfo.setGmtModitify(nowDate);
|
accidentReportInfoService.updateAccidentReport(accidentReportInfo);
|
//修改事故报告附件
|
updateAccidentReportFile(uid,accidentReportReqDTO.getId(),nowDate,accidentReportReqDTO.getFileList());
|
return new ResultVO(ResultCodes.OK);
|
}
|
}
|
|
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<Long> newIdsList = new ArrayList<>();
|
|
//新增的附件集合
|
List<AccidentReportFileInfo> addList = new ArrayList<>();
|
//删除的附件集合(id)
|
List<Long> deleteList = new ArrayList<>();
|
for (AccidentReportFileReqDTO AccidentReportFileReqDTO : AccidentReportFileReqDTOList){
|
//如果不存在id则表示页面新增的附件
|
if (AccidentReportFileReqDTO.getId() == null){
|
AccidentReportFileInfo AccidentReportFileInfo = new AccidentReportFileInfo();
|
BeanUtils.copyProperties(AccidentReportFileReqDTO,AccidentReportFileInfo);
|
AccidentReportFileInfo.setDelFlag(false);
|
AccidentReportFileInfo.setGmtCreate(nowDate);
|
AccidentReportFileInfo.setCreateUid(uid);
|
AccidentReportFileInfo.setAccidentReportId(accidentReportId);
|
addList.add(AccidentReportFileInfo);
|
}
|
//如果存在id则判断页面是否删除
|
else{
|
newIdsList.add(AccidentReportFileReqDTO.getId());
|
}
|
}
|
for (Long oldId : oldIdsList){
|
if (!newIdsList.contains(oldId)){
|
deleteList.add(oldId);
|
}
|
}
|
if (!CollectionUtils.isEmpty(addList)){
|
for (AccidentReportFileInfo AccidentReportFileInfo : addList){
|
accidentReportFileInfoService.addAccidentReportFile(AccidentReportFileInfo);
|
}
|
}
|
if (!CollectionUtils.isEmpty(deleteList)){
|
accidentReportFileInfoService.deleteAccidentReportFileByIds(deleteList);
|
}
|
}
|
|
|
@Override
|
public ResultVO batchDeleteAccidentReport(String ids) {
|
if (StringUtils.isBlank(ids)){
|
throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NULL);
|
}else{
|
String[] idArr = ids.split(",");
|
for (String id : idArr) {
|
deleteAccidentReport(Long.valueOf(id));
|
}
|
return new ResultVO(ResultCodes.OK);
|
}
|
}
|
|
private void deleteAccidentReport(Long id) {
|
//查询是否存在
|
AccidentReportInfoDetailDO AccidentReportInfoDetailDO = accidentReportInfoService.selectAccidentReportById(id);
|
if (AccidentReportInfoDetailDO==null){
|
throw new AccidentException(AccidentResultCodes.ACCIDENT_REPORT_NOT_EXIST);
|
}else{
|
accidentReportInfoService.deleteAccidentReportById(id);
|
//删除附件
|
accidentReportFileInfoService.deleteAccidentReportFileByAccidentReportId(id);
|
}
|
}
|
|
|
|
|
/**
|
* 验证必填项
|
* @return
|
*/
|
private void checkRequired(AccidentReportReqDTO AccidentReportReqDTO) {
|
/* //名称
|
if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentName())) {
|
throw new AccidentException(AccidentResultCodes.Report_NAME_NULL);
|
}
|
//部门
|
if (AccidentReportReqDTO.getAccidentDepartmentId()==null) {
|
throw new AccidentException(AccidentResultCodes.Report_DEPARTMENT_NULL);
|
}
|
//发生时间
|
if (AccidentReportReqDTO.getOccurrenceTime() == null ) {
|
throw new AccidentException(AccidentResultCodes.Report_TIME_NULL);
|
}
|
//发生地点
|
if (StringUtils.isBlank(AccidentReportReqDTO.getOccurrencePlace())) {
|
throw new AccidentException(AccidentResultCodes.Report_PLACE_NULL);
|
}
|
//事故原因
|
if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentCause())) {
|
throw new AccidentException(AccidentResultCodes.Report_CAUSE_NULL);
|
}
|
//是否有伤亡
|
if (AccidentReportReqDTO.getCasualties()==null) {
|
throw new AccidentException(AccidentResultCodes.Report_CASUALTIES_NULL);
|
}
|
//简要经过
|
if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentBriefProcess())) {
|
throw new AccidentException(AccidentResultCodes.Report_BRIEF_PROCESS_NULL);
|
}
|
//初步分析
|
if (StringUtils.isBlank(AccidentReportReqDTO.getAccidentCausesPreliminaryAnalysis())) {
|
throw new AccidentException(AccidentResultCodes.Report_CASE_PRELIMINARY_ANALYSIS_NULL);
|
}
|
//应急防范措施
|
if (StringUtils.isBlank(AccidentReportReqDTO.getEmergencyPrecautions())) {
|
throw new AccidentException(AccidentResultCodes.Report_EMERGENCY_PRECAUTIONS_NULL);
|
}*/
|
}
|
|
}
|