kongzy
2024-09-23 d015cc0b48ca51a2b93b6c60c91dc352a104b1e7
incident-manage/incident-manage-service/src/main/java/com/gkhy/safePlatform/incidentManage/service/impl/WorkInjuryDeclarationServiceImpl.java
@@ -1,6 +1,8 @@
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;
@@ -9,6 +11,7 @@
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.enums.WorkInjuryTypeEnum;
import com.gkhy.safePlatform.incidentManage.exception.AccidentException;
import com.gkhy.safePlatform.incidentManage.model.dto.req.WorkInjuryDeclarationFileReqDTO;
import com.gkhy.safePlatform.incidentManage.model.dto.req.WorkInjuryDeclarationReqDTO;
@@ -18,16 +21,16 @@
import com.gkhy.safePlatform.incidentManage.query.WorkInjuryDeclarationQuery;
import com.gkhy.safePlatform.incidentManage.query.db.WorkInjuryDeclarationDBQuery;
import com.gkhy.safePlatform.incidentManage.service.WorkInjuryDeclarationService;
import com.gkhy.safePlatform.incidentManage.service.baseService.AccidentExpressInfoService;
import com.gkhy.safePlatform.incidentManage.service.baseService.WorkInjuryDeclarationFileInfoService;
import com.gkhy.safePlatform.incidentManage.service.baseService.WorkInjuryDeclarationInfoService;
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.util.*;
import java.util.stream.Collectors;
@Service("workInjuryDeclarationService")
@@ -38,6 +41,12 @@
    @Autowired
    private WorkInjuryDeclarationFileInfoService workInjuryDeclarationFileInfoService;
    @DubboReference(check = false)
    private AccountDepartmentService accountDepartmentService;
    @Autowired
    private AccidentExpressInfoService accidentExpressInfoService;
    @Override
@@ -55,10 +64,30 @@
        List<WorkInjuryDeclarationInfoPageDO> WorkInjuryDeclarationInfoPageDOList = workInjuryDeclarationInfoService.selectWorkInjuryDeclarationList(page, WorkInjuryDeclarationDBQuery);
        List<WorkInjuryDeclarationPageRespDTO> respList = BeanCopyUtils.copyBeanList(WorkInjuryDeclarationInfoPageDOList, WorkInjuryDeclarationPageRespDTO.class);
        Map<Long, String> depPool = new HashMap<>();
        respList.forEach(WorkInjuryDeclarationPageRespDTO -> {
            // 设置部门名称
            if (!depPool.containsKey(WorkInjuryDeclarationPageRespDTO.getDeclareDepartmentId())) {
                ResultVO<DepInfoRPCRespDTO> rpcResult = accountDepartmentService.getDepInfoByDepId(WorkInjuryDeclarationPageRespDTO.getDeclareDepartmentId());
                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(WorkInjuryDeclarationPageRespDTO.getDeclareDepartmentId());
            WorkInjuryDeclarationPageRespDTO.setDeptName(depName);
        });
        return new SearchResultVO<>(
                true,
                pageIndex,
                pageSize,
                pageSize, page.getPages(),
                page.getTotal(),
                respList,
                ResultCodes.OK
@@ -79,13 +108,13 @@
        WorkInjuryDeclarationInfo.setGmtCreate(nowDate);
        workInjuryDeclarationInfoService.addWorkInjuryDeclaration(WorkInjuryDeclarationInfo);
        //2.新增工伤申报附件
        if (!CollectionUtils.isEmpty(WorkInjuryDeclarationReqDTO.getFileList())){
            addWorkInjuryDeclarationFile(WorkInjuryDeclarationInfo.getId(),uid,nowDate,WorkInjuryDeclarationReqDTO.getFileList());
        if (!CollectionUtils.isEmpty(WorkInjuryDeclarationReqDTO.getFileList())) {
            addWorkInjuryDeclarationFile(WorkInjuryDeclarationInfo.getId(), uid, nowDate, WorkInjuryDeclarationReqDTO.getFileList());
        }
        return new ResultVO(ResultCodes.OK);
    }
    private void  addWorkInjuryDeclarationFile(Long WorkInjuryDeclarationId ,Long uid , Date nowDate , List<WorkInjuryDeclarationFileReqDTO> WorkInjuryDeclarationFileReqDTOList){
    private void addWorkInjuryDeclarationFile(Long WorkInjuryDeclarationId, Long uid, Date nowDate, List<WorkInjuryDeclarationFileReqDTO> WorkInjuryDeclarationFileReqDTOList) {
        List<WorkInjuryDeclarationFileInfo> fileInfoList = BeanCopyUtils.copyBeanList(WorkInjuryDeclarationFileReqDTOList, WorkInjuryDeclarationFileInfo.class);
        fileInfoList.forEach(WorkInjuryDeclarationFileInfo -> {
            WorkInjuryDeclarationFileInfo.setWorkInjuryDeclarationId(WorkInjuryDeclarationId);
@@ -93,7 +122,7 @@
            WorkInjuryDeclarationFileInfo.setCreateUid(uid);
            WorkInjuryDeclarationFileInfo.setGmtCreate(nowDate);
        });
        for (WorkInjuryDeclarationFileInfo WorkInjuryDeclarationFileInfo :fileInfoList){
        for (WorkInjuryDeclarationFileInfo WorkInjuryDeclarationFileInfo : fileInfoList) {
            workInjuryDeclarationFileInfoService.addWorkInjuryDeclarationFile(WorkInjuryDeclarationFileInfo);
        }
    }
@@ -103,17 +132,17 @@
        WorkInjuryDeclarationDetailRespDTO WorkInjuryDeclarationDetailRespDTO = new WorkInjuryDeclarationDetailRespDTO();
        //查询是否存在
        WorkInjuryDeclarationInfoDetailDO WorkInjuryDeclarationInfoDetailDO = workInjuryDeclarationInfoService.selectWorkInjuryDeclarationById(id);
        if (WorkInjuryDeclarationInfoDetailDO==null){
        if (WorkInjuryDeclarationInfoDetailDO == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_NOT_EXIST);
        }else{
            BeanUtils.copyProperties(WorkInjuryDeclarationInfoDetailDO,WorkInjuryDeclarationDetailRespDTO);
        } else {
            BeanUtils.copyProperties(WorkInjuryDeclarationInfoDetailDO, WorkInjuryDeclarationDetailRespDTO);
            //查找对应的附件
            List<WorkInjuryDeclarationFileInfoDO> WorkInjuryDeclarationFileInfoDOList = workInjuryDeclarationFileInfoService.selectByWorkInjuryDeclarationId(id);
            if (!CollectionUtils.isEmpty(WorkInjuryDeclarationFileInfoDOList)){
                List<WorkInjuryDeclarationFileRespDTO> WorkInjuryDeclarationFileRespDTOList = BeanCopyUtils.copyBeanList(WorkInjuryDeclarationFileInfoDOList , WorkInjuryDeclarationFileRespDTO.class);
            if (!CollectionUtils.isEmpty(WorkInjuryDeclarationFileInfoDOList)) {
                List<WorkInjuryDeclarationFileRespDTO> WorkInjuryDeclarationFileRespDTOList = BeanCopyUtils.copyBeanList(WorkInjuryDeclarationFileInfoDOList, WorkInjuryDeclarationFileRespDTO.class);
                WorkInjuryDeclarationDetailRespDTO.setFileList(WorkInjuryDeclarationFileRespDTOList);
            }
            return new ResultVO<>(ResultCodes.OK ,WorkInjuryDeclarationDetailRespDTO);
            return new ResultVO<>(ResultCodes.OK, WorkInjuryDeclarationDetailRespDTO);
        }
    }
@@ -122,21 +151,21 @@
        Date nowDate = new Date();
        //查询是否存在
        WorkInjuryDeclarationInfoDetailDO WorkInjuryDeclarationInfoDetailDO = workInjuryDeclarationInfoService.selectWorkInjuryDeclarationById(WorkInjuryDeclarationReqDTO.getId());
        if (WorkInjuryDeclarationInfoDetailDO==null){
        if (WorkInjuryDeclarationInfoDetailDO == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_NOT_EXIST);
        }else{
        } else {
            WorkInjuryDeclarationInfo WorkInjuryDeclarationInfo = new WorkInjuryDeclarationInfo();
            BeanUtils.copyProperties(WorkInjuryDeclarationReqDTO,WorkInjuryDeclarationInfo);
            BeanUtils.copyProperties(WorkInjuryDeclarationReqDTO, WorkInjuryDeclarationInfo);
            WorkInjuryDeclarationInfo.setUpdateUid(uid);
            WorkInjuryDeclarationInfo.setGmtModitify(nowDate);
            workInjuryDeclarationInfoService.updateWorkInjuryDeclaration(WorkInjuryDeclarationInfo);
            //修改工伤申报附件
            updateWorkInjuryDeclarationFile(uid,WorkInjuryDeclarationReqDTO.getId(),nowDate,WorkInjuryDeclarationReqDTO.getFileList());
            updateWorkInjuryDeclarationFile(uid, WorkInjuryDeclarationReqDTO.getId(), nowDate, WorkInjuryDeclarationReqDTO.getFileList());
            return new ResultVO(ResultCodes.OK);
        }
    }
    private void updateWorkInjuryDeclarationFile(Long uid ,Long WorkInjuryDeclarationId ,Date nowDate,List<WorkInjuryDeclarationFileReqDTO> WorkInjuryDeclarationFileReqDTOList){
    private void updateWorkInjuryDeclarationFile(Long uid, Long WorkInjuryDeclarationId, Date nowDate, List<WorkInjuryDeclarationFileReqDTO> WorkInjuryDeclarationFileReqDTOList) {
        List<WorkInjuryDeclarationFileInfoDO> WorkInjuryDeclarationFileInfoDOList = workInjuryDeclarationFileInfoService.selectByWorkInjuryDeclarationId(WorkInjuryDeclarationId);
        List<Long> oldIdsList = WorkInjuryDeclarationFileInfoDOList.stream().map(WorkInjuryDeclarationFileInfoDO::getId).collect(Collectors.toList());
@@ -146,11 +175,11 @@
        List<WorkInjuryDeclarationFileInfo> addList = new ArrayList<>();
        //删除的附件集合(id)
        List<Long> deleteList = new ArrayList<>();
        for (WorkInjuryDeclarationFileReqDTO WorkInjuryDeclarationFileReqDTO : WorkInjuryDeclarationFileReqDTOList){
        for (WorkInjuryDeclarationFileReqDTO WorkInjuryDeclarationFileReqDTO : WorkInjuryDeclarationFileReqDTOList) {
            //如果不存在id则表示页面新增的附件
            if (WorkInjuryDeclarationFileReqDTO.getId() == null){
            if (WorkInjuryDeclarationFileReqDTO.getId() == null) {
                WorkInjuryDeclarationFileInfo WorkInjuryDeclarationFileInfo = new WorkInjuryDeclarationFileInfo();
                BeanUtils.copyProperties(WorkInjuryDeclarationFileReqDTO,WorkInjuryDeclarationFileInfo);
                BeanUtils.copyProperties(WorkInjuryDeclarationFileReqDTO, WorkInjuryDeclarationFileInfo);
                WorkInjuryDeclarationFileInfo.setDelFlag(false);
                WorkInjuryDeclarationFileInfo.setGmtCreate(nowDate);
                WorkInjuryDeclarationFileInfo.setCreateUid(uid);
@@ -158,34 +187,34 @@
                addList.add(WorkInjuryDeclarationFileInfo);
            }
            //如果存在id则判断页面是否删除
            else{
            else {
                newIdsList.add(WorkInjuryDeclarationFileReqDTO.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 (WorkInjuryDeclarationFileInfo WorkInjuryDeclarationFileInfo : addList){
        if (!CollectionUtils.isEmpty(addList)) {
            for (WorkInjuryDeclarationFileInfo WorkInjuryDeclarationFileInfo : addList) {
                workInjuryDeclarationFileInfoService.addWorkInjuryDeclarationFile(WorkInjuryDeclarationFileInfo);
            }
        }
        if (!CollectionUtils.isEmpty(deleteList)){
        if (!CollectionUtils.isEmpty(deleteList)) {
            workInjuryDeclarationFileInfoService.deleteWorkInjuryDeclarationFileByIds(deleteList);
        }
    }
    @Override
    public ResultVO batchDeleteWorkInjuryDeclaration(String ids) {
        if (StringUtils.isBlank(ids)){
    public ResultVO batchDeleteWorkInjuryDeclaration(Long[] ids) {
        if (ids == null || ids.length == 0) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_NULL);
        }else{
            String[] idArr = ids.split(",");
            for (String id : idArr) {
                deleteWorkInjuryDeclaration(Long.valueOf(id));
        } else {
            for (Long id : ids) {
                deleteWorkInjuryDeclaration(id);
            }
            return new ResultVO(ResultCodes.OK);
        }
@@ -194,9 +223,9 @@
    private void deleteWorkInjuryDeclaration(Long id) {
        //查询是否存在
        WorkInjuryDeclarationInfoDetailDO WorkInjuryDeclarationInfoDetailDO = workInjuryDeclarationInfoService.selectWorkInjuryDeclarationById(id);
        if (WorkInjuryDeclarationInfoDetailDO==null){
        if (WorkInjuryDeclarationInfoDetailDO == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_NOT_EXIST);
        }else{
        } else {
            workInjuryDeclarationInfoService.deleteWorkInjuryDeclarationById(id);
            //删除附件
            workInjuryDeclarationFileInfoService.deleteWorkInjuryDeclarationFileByWorkInjuryDeclarationId(id);
@@ -204,49 +233,48 @@
    }
    /**
     * 验证必填项
     *
     * @return
     */
    private void checkRequired(WorkInjuryDeclarationReqDTO WorkInjuryDeclarationReqDTO) {
       /* //名称
        if (StringUtils.isBlank(WorkInjuryDeclarationReqDTO.getAccidentName())) {
            throw new AccidentException(AccidentResultCodes.Report_NAME_NULL);
    private void checkRequired(WorkInjuryDeclarationReqDTO workInjuryDeclarationReqDTO) {
        //申报人姓名
        if (StringUtils.isBlank(workInjuryDeclarationReqDTO.getDeclareUserName())) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_USERNAME_NULL);
        }
        //部门
        if (WorkInjuryDeclarationReqDTO.getAccidentDepartmentId()==null) {
            throw new AccidentException(AccidentResultCodes.Report_DEPARTMENT_NULL);
        //事故性别
        if (workInjuryDeclarationReqDTO.getDeclareUserGender() == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_GENDER_NULL);
        }
        //发生时间
        if (WorkInjuryDeclarationReqDTO.getOccurrenceTime() == null ) {
            throw new AccidentException(AccidentResultCodes.Report_TIME_NULL);
        //申报人部门
        if (workInjuryDeclarationReqDTO.getDeclareDepartmentId() == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_USERNAME_NOT_EXIST);
        }
        //发生地点
        if (StringUtils.isBlank(WorkInjuryDeclarationReqDTO.getOccurrencePlace())) {
            throw new AccidentException(AccidentResultCodes.Report_PLACE_NULL);
        //事故名称
        if (workInjuryDeclarationReqDTO.getAccidentExpressId() == null) {
            throw new AccidentException(AccidentResultCodes.ACCIDENT_EXPRESS_NULL);
        }
        //事故原因
        if (StringUtils.isBlank(WorkInjuryDeclarationReqDTO.getAccidentCause())) {
            throw new AccidentException(AccidentResultCodes.Report_CAUSE_NULL);
        AccidentExpressInfoDetailDO accidentExpressInfo = accidentExpressInfoService.selectAccidentExpressById(workInjuryDeclarationReqDTO.getAccidentExpressId());
        if (accidentExpressInfo == null) {
            throw new AccidentException(AccidentResultCodes.ACCIDENT_EXPRESS_NOT_EXIST);
        }
        //是否有伤亡
        if (WorkInjuryDeclarationReqDTO.getCasualties()==null) {
            throw new AccidentException(AccidentResultCodes.Report_CASUALTIES_NULL);
        //工伤类型
        if (workInjuryDeclarationReqDTO.getWorkInjuryType() == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_TYPE_NULL);
        }
        //简要经过
        if (StringUtils.isBlank(WorkInjuryDeclarationReqDTO.getAccidentBriefProcess())) {
            throw new AccidentException(AccidentResultCodes.Report_BRIEF_PROCESS_NULL);
        //申报日期
        if (workInjuryDeclarationReqDTO.getDeclareDate() == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_DATA_NULL);
        }
        //初步分析
        if (StringUtils.isBlank(WorkInjuryDeclarationReqDTO.getAccidentCausesPreliminaryAnalysis())) {
            throw new AccidentException(AccidentResultCodes.Report_CASE_PRELIMINARY_ANALYSIS_NULL);
        }
        //应急防范措施
        if (StringUtils.isBlank(WorkInjuryDeclarationReqDTO.getEmergencyPrecautions())) {
            throw new AccidentException(AccidentResultCodes.Report_EMERGENCY_PRECAUTIONS_NULL);
        }*/
    }
    /**
     * 枚举验证
     */
    private void checkEnum(WorkInjuryDeclarationReqDTO workInjuryDeclarationReqDTO) {
        if (WorkInjuryTypeEnum.getByCode(workInjuryDeclarationReqDTO.getWorkInjuryType()) == null) {
            throw new AccidentException(AccidentResultCodes.WORK_INJURY_DECLARATION_ENUMS_TYPE_NOT_EXIST);
        }
    }
}