package com.gkhy.safePlatform.doublePrevention.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gkhy.safePlatform.account.rpc.apimodel.AccountAuthService; import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService; import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.DepInfoRPCRespDTO; import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.UserRPCRespDTO; import com.gkhy.safePlatform.commons.enums.E; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.exception.AusinessException; import com.gkhy.safePlatform.commons.exception.BusinessException; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import com.gkhy.safePlatform.commons.utils.idService.SnowFlow; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.doublePrevention.entity.*; import com.gkhy.safePlatform.doublePrevention.entity.dto.req.*; import com.gkhy.safePlatform.doublePrevention.entity.dto.resp.PreventDangerManageListQueryRespDTO; import com.gkhy.safePlatform.doublePrevention.entity.dto.resp.PreventDangerManageQueryRespDTO; import com.gkhy.safePlatform.doublePrevention.entity.dto.resp.PreventDangerRectifyQueryRespDTO; import com.gkhy.safePlatform.doublePrevention.enums.StatusEnum; import com.gkhy.safePlatform.doublePrevention.enums.SyncEnum; import com.gkhy.safePlatform.doublePrevention.enums.WorkStatusEnum; import com.gkhy.safePlatform.doublePrevention.repository.param.*; import com.gkhy.safePlatform.doublePrevention.service.RectifyService; import com.gkhy.safePlatform.doublePrevention.service.baseService.*; import org.apache.commons.lang3.ObjectUtils; import org.apache.dubbo.config.annotation.DubboReference; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; @Service public class RectifyServiceImpl implements RectifyService { @DubboReference(check = false) private AccountAuthService accountAuthService; @DubboReference(check = false) private AccountDepartmentService accountDepartmentService; @Autowired private RedissonClient redissonClient; @Autowired private PreventDangerManageService preventDangerManageService; @Autowired private PreventDangerRectifyService preventDangerRectifyService; @Autowired private PreventDangerCheckTaskService preventDangerCheckTaskService; @Autowired private PreventProduceDeviceService preventProduceDeviceService; @Autowired private PreventDangerCheckTaskUnitService preventDangerCheckTaskUnitService; @Autowired private PreventReportConfigService preventReportConfigService; @Autowired private PreventRiskAnaUnitService preventRiskAnaUnitService; @Autowired private PreventDangerManageTimeoutService preventDangerManageTimeoutService; //隐患治理清单 /** * 隐患治理清单-分页查询 */ @Override public ResultVO getDangerManagePage(Long userId, PreventDangerManageQueryReqDTO manageQueryReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("查询成功"); List list = new ArrayList<>(); Integer pageIndex = manageQueryReqDTO.getPageIndex(); Integer pageSize = manageQueryReqDTO.getPageSize(); //获取用户信息 ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //获取到所有符合条件的隐患治理清单信息 IPage page = preventDangerManageService.getDangerManagePage(new Page<>(pageIndex, pageSize), manageQueryReqDTO); if (ObjectUtils.isEmpty(page.getRecords())){ resultVO.setMsg("查询成功,无数据"); return resultVO; } //遍历结果集,封装数据 for (PreventDangerManage record : page.getRecords()) { PreventDangerManageQueryRespDTO respDTO = BeanCopyUtils.copyBean(record, PreventDangerManageQueryRespDTO.class); respDTO.setPageIndex((int) page.getCurrent()); respDTO.setPageSize((int) page.getSize()); PreventProduceDevice deviceById = preventProduceDeviceService.getDeviceById(record.getProduceDeviceId()); if (ObjectUtils.isNotEmpty(deviceById)){ respDTO.setProduceDeviceName(deviceById.getProduceDeviceName()); } PreventRiskAnaUnit riskUnitById = preventRiskAnaUnitService.getRiskUnitById(record.getRiskUnitId()); if (ObjectUtils.isNotEmpty(riskUnitById)){ respDTO.setRiskUnitName(riskUnitById.getRiskUnitName()); } PreventDangerRectify rectifyByManageId = preventDangerRectifyService.getRectifyByManageId(record.getId()); if (ObjectUtils.isNotEmpty(rectifyByManageId)){ //获取责任人信息 ResultVO liablePersonResult = accountAuthService.getUserById(rectifyByManageId.getLiablePersonId()); UserRPCRespDTO liablePerson = (UserRPCRespDTO)liablePersonResult.getData(); if (rectifyByManageId.getCost() != null){ respDTO.setCost(rectifyByManageId.getCost()); } if (rectifyByManageId.getRectifyDesc() != null){ respDTO.setRectifyDesc(rectifyByManageId.getRectifyDesc()); } if (rectifyByManageId.getRectifyInfo() != null){ respDTO.setRectifyInfo(rectifyByManageId.getRectifyInfo()); } if (rectifyByManageId.getCheckAcceptPersonId() != null){ respDTO.setCheckAcceptPersonId(rectifyByManageId.getCheckAcceptPersonId()); respDTO.setCheckAcceptTime(rectifyByManageId.getCheckAcceptTime()); respDTO.setCheckAcceptPerson(rectifyByManageId.getCheckAcceptPerson()); respDTO.setCheckAcceptDesc(rectifyByManageId.getCheckAcceptDesc()); respDTO.setLiablePersonId(rectifyByManageId.getLiablePersonId()); } respDTO.setRectifyTime(rectifyByManageId.getRectifyTime()); respDTO.setRectifyType(rectifyByManageId.getRectifyType()); respDTO.setRectifyDepId(rectifyByManageId.getRectifyDepId()); respDTO.setLiablePersonId(rectifyByManageId.getLiablePersonId()); respDTO.setLastEditUserName(rectifyByManageId.getLiablePerson()); respDTO.setRectifyDepId(rectifyByManageId.getRectifyDepId()); respDTO.setTimeOutDesc(respDTO.getTimeOutDesc()); respDTO.setRectifyDepName(liablePerson.getDepartment().getDepName()); respDTO.setRectifyId(rectifyByManageId.getId()); } PreventDangerManageTimeout timeoutResult = preventDangerManageTimeoutService.getByManageId(record.getId()); if (ObjectUtils.isNotEmpty(timeoutResult)){ respDTO.setTimeoutStatus(timeoutResult.getTimeoutStatus()); } respDTO.setReportState(reportConfigById.getReportState()); respDTO.setReportType(reportConfigById.getReportType()); respDTO.setDepName(userById.getDepartment().getDepName()); list.add(respDTO); } resultVO.setData(list); resultVO.setCount((int) page.getTotal()); return resultVO; } /** * 隐患治理清单-列表 */ @Override public ResultVO listDangerManage(Long valueOf) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("查询成功"); List dangerManages = preventDangerManageService.listDangerManage(); List respDTOS = BeanCopyUtils.copyBeanList(dangerManages, PreventDangerManageListQueryRespDTO.class); resultVO.setData(respDTOS); return resultVO; } /** * 隐患管理-手工上报-配置 */ @Override public ResultVO updateDangerManagerReport(Long userId, PreventHandReportConfigReqDTO preventHandReportConfigReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("修改上报数据成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } if (preventHandReportConfigReqDTO.getId() == null){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "传参非法"); } if (preventHandReportConfigReqDTO.getReportSwitch() == null){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "传参非法"); } //查询当前隐患的配置 PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(preventHandReportConfigReqDTO.getId()); //配置相同,做处理 if (dangerManageById.getReportSwitch() == preventHandReportConfigReqDTO.getReportSwitch()){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "与当前配置相同"); } int result ; //读取主配置信息 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //只有当开启上报,且类型为手动上报时,可以修改 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_AUTO_EXEC_CONFIG.getCode()){ result = preventDangerManageService.updateDangerManagerReport(preventHandReportConfigReqDTO); }else { throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "当前上报配置,不支持对单条数据操作"); } resultVO.setCount(result); return resultVO; } /** * 隐患治理清单-新增 */ @Transactional @Override public ResultVO saveDangerManage(Long userId, PreventDangerManageSaveReqDTO manageSaveReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("新增成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } //校验参数 if (manageSaveReqDTO.getDangerLevel() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患等级不能为空"); } if (manageSaveReqDTO.getDangerType() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患类型不能为空"); } if (manageSaveReqDTO.getDepId() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患所属部门不能为空"); } if (manageSaveReqDTO.getDangerCode() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患名称不能为空"); } //校验部门是否存在 ResultVO depInfoByDepId = accountDepartmentService.getDepInfoByDepId(userId, manageSaveReqDTO.getDepId()); if(ObjectUtils.isEmpty(depInfoByDepId)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT,"请输入正确责任部门"); } if (manageSaveReqDTO.getRiskUnitId() != null){ PreventRiskAnaUnit riskUnitById = preventRiskAnaUnitService.getRiskUnitById(manageSaveReqDTO.getRiskUnitId()); if(ObjectUtils.isEmpty(riskUnitById)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT,"请输入正确的风险分析单元"); } } if (manageSaveReqDTO.getProduceDeviceId() != null){ PreventProduceDevice deviceById = preventProduceDeviceService.getDeviceById(manageSaveReqDTO.getProduceDeviceId()); if (ObjectUtils.isEmpty(deviceById)){ throw new AusinessException(E.DATA_PARAM_NULL, "请填写正确的生产装置"); } PreventRiskAnaUnit riskUnitById = preventRiskAnaUnitService.getRiskUnitById(manageSaveReqDTO.getRiskUnitId()); if (ObjectUtils.isNotEmpty(riskUnitById)){ if (!riskUnitById.getProduceDeviceId().equals(manageSaveReqDTO.getProduceDeviceId())){ throw new AusinessException(E.DATA_PARAM_NULL, "请填写生产装置对应的分析单元"); } }else if (ObjectUtils.isEmpty(riskUnitById)){ throw new AusinessException(E.DATA_PARAM_NULL, "请填写生产装置对应的分析单元"); } } if (manageSaveReqDTO.getRectifyType() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改类型不能为空"); } if (manageSaveReqDTO.getDangerResult() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患可能造成的后果不能为空"); } if (manageSaveReqDTO.getLiablePersonId() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改责任人不能为空"); } //责任人信息 ResultVO execUserResult = accountAuthService.getUserById(manageSaveReqDTO.getLiablePersonId()); UserRPCRespDTO liableUser = (UserRPCRespDTO)execUserResult.getData(); if (ObjectUtils.isEmpty(liableUser)){ throw new AusinessException(E.DATA_PARAM_NULL, "该责任人不存在或已被删除,请选择正确的责任人"); } if (manageSaveReqDTO.getRectifyTime() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改期限不能为空"); } if (manageSaveReqDTO.getRectifyDepId() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改部门不能为空"); } if (!manageSaveReqDTO.getRectifyDepId().equals(liableUser.getDepartment().getDepId())){ throw new AusinessException(E.DATA_PARAM_NULL, "整改人不属于该部门"); } //获取需要填充的信息 SnowFlow snowFlow = new SnowFlow();//雪花算法生成器 String uuid = UUID.randomUUID().toString(); Date date = new Date(); long dangerManagerId = snowFlow.nextId(); //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); /**设置隐患管理表参数*/ PreventDangerManage dangerManage = BeanCopyUtils.copyBean(manageSaveReqDTO, PreventDangerManage.class); dangerManage.setId(dangerManagerId); dangerManage.setUuid(uuid); dangerManage.setDeleteStatus(StatusEnum.DELETE_STATUS_USE.getCode()); dangerManage.setGmtCreate(date); dangerManage.setGmtModitify(date); dangerManage.setCreateByUserName(userById.getRealName()); dangerManage.setLastEditUserName(userById.getRealName()); dangerManage.setEnterpriseId((long) 1); dangerManage.setEnterpriseUuid("123124134"); dangerManage.setDangerStatus(StatusEnum.DANGER_MANAGER_RECTIFY.getCode()); dangerManage.setDangerReview(StatusEnum.DANGER_RECTIFY_WAIT.getCode()); dangerManage.setDangerCode(manageSaveReqDTO.getDangerCode()); dangerManage.setDangerCloseReason(null); //这暂时不用字段 dangerManage.setTaskId(null); dangerManage.setRegistantId(null); dangerManage.setRegisterTime(null); dangerManage.setRegistantName(null); /**设置隐患整改验收表的参数*/ //获取需要填充的信息 String RectifyUuid = UUID.randomUUID().toString(); long rectifyId = snowFlow.nextId(); //封装参数 PreventDangerRectify dangerRectify = BeanCopyUtils.copyBean(manageSaveReqDTO, PreventDangerRectify.class); dangerRectify.setId(rectifyId); dangerRectify.setUuid(RectifyUuid); dangerRectify.setDeleteStatus(StatusEnum.DELETE_STATUS_USE.getCode()); dangerRectify.setGmtCreate(date); dangerRectify.setCreateByUserName(userById.getRealName()); dangerRectify.setGmtModitify(date); dangerRectify.setLastEditUserName(userById.getRealName()); dangerRectify.setEnterpriseId((long) 1); dangerRectify.setEnterpriseUuid("1564wq"); dangerRectify.setDangerManagerUuid(uuid); dangerRectify.setDangerManagerId(dangerManagerId); dangerRectify.setLiablePerson(liableUser.getRealName()); dangerRectify.setDangerCode(null); dangerRectify.setApplyTime(null); dangerRectify.setTimeOutDesc(null); dangerRectify.setRectifyInfo(null); dangerRectify.setCheckAcceptPerson(userById.getRealName()); dangerRectify.setRectifyDepId(manageSaveReqDTO.getRectifyDepId()); dangerRectify.setDangerReview(StatusEnum.DANGER_RECTIFY_WAIT.getCode()); dangerRectify.setCheckAcceptPersonId(userId); dangerRectify.setCheckAcceptPerson(userById.getRealName()); // 不确定是否需要的字段 dangerRectify.setCheckAcceptTime(null); dangerRectify.setCheckAcceptDesc(null); //设置上报时间为空,以隐患管理表为主,同时设置上报 dangerManage.setReportTime(null); dangerRectify.setReportTime(null); //设置本条数据上报更新时间 dangerManage.setUpdateReportDataTime(new Date()); dangerRectify.setUpdateReportDataTime(new Date()); //读取上报主配置,进行任务记录上报配置,如果开启上报功能,且设置为自动上报,开启上报相关配置 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_HAND_EXEC_CONFIG.getCode()){ //设置上报状态为-等待上报 dangerManage.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); dangerRectify.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); //设置本条数据上报开关为-开启 dangerManage.setReportSwitch(SyncEnum.REPORT_ON.getCode()); //其他情况默认不开启上报数据,如果是手动上报,可对单条数据进行操作 }else { //设置上报状态为-不上报 dangerManage.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); dangerRectify.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); //设置本条数据上报开关为-关闭 dangerManage.setReportSwitch(SyncEnum.REPORT_OFF.getCode()); } /**设置是否延期状态参数*/ PreventDangerManageTimeout manageTimeout = new PreventDangerManageTimeout(); manageTimeout.setDeleteStatus(StatusEnum.DELETE_STATUS_USE.getCode()); manageTimeout.setTimeoutStatus(StatusEnum.DANGER_ON_TIME_RECTIFY.getCode()); manageTimeout.setDangerRectifyId(rectifyId); manageTimeout.setDangerManagerId(dangerManagerId); //生成隐患编码 LocalDateTime t = dangerManage.getGmtCreate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); LocalDate localDate = t.toLocalDate(); LocalDateTime startTime = LocalDateTime.of(localDate, LocalTime.of(0,0,0)); LocalDateTime endTime = LocalDateTime.of(localDate, LocalTime.of(23,59,59)); Date start = Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()); Date end = Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()); //1、加分布式锁 String lockName = "LOCK_DANGER_CODE_GENERATE"; RLock lock = redissonClient.getLock(lockName); lock.lock(3, TimeUnit.SECONDS); int count = -1; try { count = preventDangerManageService.countByCreateTime(start,end); } catch (Exception e) { lock.unlock(); throw new AusinessException(E.ADD_FAIL, "保存隐患整改信息失败"); } //2、生成编码 String serialCode = generateDangerSerialCode(dangerManage.getGmtCreate(),count); if(serialCode == null || serialCode.isEmpty()){ throw new AusinessException(E.ADD_FAIL, "保存隐患整改信息失败"); } dangerManage.setSerialCode(serialCode); int step = 1; //保存隐患管理信息 if (step == 1){ int resultManage = preventDangerManageService.saveDangerManage(dangerManage); if (resultManage < 1){ throw new AusinessException(E.ADD_FAIL, "保存隐患管理信息失败"); }else { step = 2; } } //保存隐患整改信息 if (step == 2){ int resultRectify = preventDangerRectifyService.saveDangerRectify(dangerRectify); if (resultRectify < 1){ throw new AusinessException(E.ADD_FAIL, "保存隐患整改信息失败"); }else { step = 3; } } //保存延期状态 if (step == 3){ int resultTimeout = preventDangerManageTimeoutService.insert(manageTimeout); if (resultTimeout < 1){ throw new AusinessException(E.ADD_FAIL, "保存隐患整改信息失败"); } } //3、释放生成编码锁 lock.unlock(); return resultVO; } /** * 隐患管理清单-修改 */ @Transactional @Override public ResultVO updateDangerManage(Long userId, PreventDangerManageUpdateReqDTO manageUpdateReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("修改成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } //校验参数 if (manageUpdateReqDTO.getId() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "传参非法"); } if (manageUpdateReqDTO.getDangerLevel() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患等级不能为空"); } if (manageUpdateReqDTO.getDangerType() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患类型不能为空"); } if (manageUpdateReqDTO.getDangerSource() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患来源不能为空"); } if (manageUpdateReqDTO.getDepId() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患所属部门不能为空"); } //校验部门是否存在 ResultVO depInfoByDepId = accountDepartmentService.getDepInfoByDepId(userId, manageUpdateReqDTO.getDepId()); if(ObjectUtils.isEmpty(depInfoByDepId)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT,"请输入正确责任部门"); } if (manageUpdateReqDTO.getRiskUnitId() != null){ PreventRiskAnaUnit riskUnitById = preventRiskAnaUnitService.getRiskUnitById(manageUpdateReqDTO.getRiskUnitId()); if(ObjectUtils.isEmpty(riskUnitById)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT,"请输入正确的风险分析单元"); } } if (manageUpdateReqDTO.getProduceDeviceId() != null){ PreventProduceDevice deviceById = preventProduceDeviceService.getDeviceById(manageUpdateReqDTO.getProduceDeviceId()); if (ObjectUtils.isEmpty(deviceById)){ throw new AusinessException(E.DATA_PARAM_NULL, "请填写正确的生产装置"); } PreventRiskAnaUnit riskUnitById = preventRiskAnaUnitService.getRiskUnitById(manageUpdateReqDTO.getRiskUnitId()); if (!riskUnitById.getProduceDeviceId().equals(manageUpdateReqDTO.getProduceDeviceId())){ throw new AusinessException(E.DATA_PARAM_NULL, "请填写生产装置对应的分析单元"); } } if (manageUpdateReqDTO.getRectifyType() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改类型不能为空"); } if (manageUpdateReqDTO.getLiablePersonId() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改责任人不能为空"); } if (manageUpdateReqDTO.getRectifyDepId() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改部门不能为空"); } //责任人信息 ResultVO execUserResult = accountAuthService.getUserById(manageUpdateReqDTO.getLiablePersonId()); UserRPCRespDTO liableUser = (UserRPCRespDTO)execUserResult.getData(); Date date = new Date(); //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //封装隐患管理参数 PreventDangerRectify rectifyByManageId = preventDangerRectifyService.getRectifyByManageId(manageUpdateReqDTO.getId()); PreventDangerManageUpdateParams updateParams = BeanCopyUtils.copyBean(manageUpdateReqDTO, PreventDangerManageUpdateParams.class); updateParams.setLastEditUserName(userById.getRealName()); updateParams.setGmtModitify(date); //封装隐患整改参数 //PreventDangerRectifyUpdateParams rectifyUpdateParams = new PreventDangerRectifyUpdateParams(); PreventDangerRectifyUpdateParams rectifyUpdateParams = BeanCopyUtils.copyBean(manageUpdateReqDTO, PreventDangerRectifyUpdateParams.class); rectifyUpdateParams.setLastEditUserName(userById.getRealName()); rectifyUpdateParams.setGmtModitify(date); rectifyUpdateParams.setLiablePerson(liableUser.getRealName()); rectifyUpdateParams.setId(rectifyByManageId.getId()); //设置本条数据上报更新时间 rectifyUpdateParams.setUpdateReportDataTime(date); updateParams.setUpdateReportDataTime(date); //读取上报主配置,进行任务记录上报配置,如果开启上报功能,且设置为自动上报,开启上报相关配置 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_HAND_EXEC_CONFIG.getCode()){ //设置上报状态为-等待上报 updateParams.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); rectifyUpdateParams.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); //设置本条数据上报开关为-开启 updateParams.setReportSwitch(SyncEnum.REPORT_ON.getCode()); //其他情况默认不开启上报数据,如果是手动上报,可对单条数据进行操作 }else { //设置上报状态为-不上报 updateParams.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); rectifyUpdateParams.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); //设置本条数据上报开关为-关闭 updateParams.setReportSwitch(SyncEnum.REPORT_OFF.getCode()); } int rectifyResult = preventDangerRectifyService.updateDangerRectify(rectifyUpdateParams); if (rectifyResult < 1){ throw new AusinessException(E.UPDATE_FAIL, "修改隐患整改信息失败"); } int result = preventDangerManageService.updateDangerManage(updateParams); if (rectifyResult < 1){ throw new AusinessException(E.UPDATE_FAIL, "修改管理整改信息失败"); } resultVO.setCount(result); return resultVO; } /** * 隐患治理清单-删除 */ @Override public ResultVO deleteDangerManage(Long userId, PreventDangerManageDeleteReqDTO manageDeleteReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("删除成功"); PreventDeleteParams deleteParams = new PreventDeleteParams(); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } //校验参数 if (manageDeleteReqDTO.getId() == null ){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "请选择正确的删除内容"); } PreventDangerRectify rectifyByManageId = preventDangerRectifyService.getRectifyByManageId(manageDeleteReqDTO.getId()); if (ObjectUtils.isNotEmpty(rectifyByManageId)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "需要先删除对应的隐患整改"); } //获取需要填充的信息 Date date = new Date(); //封装删除需要的参数 deleteParams.setId(manageDeleteReqDTO.getId()); deleteParams.setGmtModitify(date); deleteParams.setLastEditUserName(userById.getRealName()); deleteParams.setUpdateReportDataTime(date); int result = preventDangerManageService.deleteDangerManage(deleteParams); resultVO.setCount(result); return resultVO; } //隐患整改清单 /** * 隐患整改清单-分页查询 */ @Override public ResultVO getDangerRectifyPage(Long userId, PreventDangerRectifyQueryReqDTO rectifyQueryReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("查询成功"); List list = new ArrayList<>(); Integer pageIndex = rectifyQueryReqDTO.getPageIndex(); Integer pageSize = rectifyQueryReqDTO.getPageSize(); //获取用户信息 ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_RISK_ANA_UNIT.getCode()); //获取到所有符合条件的隐患治理清单信息 Page pageInfo = new Page<>(pageIndex, pageSize); pageInfo.setOptimizeCountSql(false); IPage page = preventDangerRectifyService.getDangerRectifyPage(pageInfo, rectifyQueryReqDTO); if (ObjectUtils.isEmpty(page.getRecords())){ resultVO.setMsg("查询成功,无数据"); return resultVO; } //遍历结果集,封装数据 for (PreventDangerRectify record : page.getRecords()) { PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(record.getDangerManagerId()); if (rectifyQueryReqDTO.getDangerStatus() != null){ if(dangerManageById.getDangerStatus().equals(rectifyQueryReqDTO.getDangerStatus())){ PreventDangerManageTimeout timeoutResult = preventDangerManageTimeoutService.getByRectifyId(record.getId()); PreventDangerRectifyQueryRespDTO respDTO = BeanCopyUtils.copyBean(record, PreventDangerRectifyQueryRespDTO.class); //添加部门名称 ResultVO depInfoByDepId = accountDepartmentService.getDepInfoByDepId(userId, respDTO.getRectifyDepId()); DepInfoRPCRespDTO data = (DepInfoRPCRespDTO)depInfoByDepId.getData(); if (ObjectUtils.isNotEmpty(timeoutResult)){ respDTO.setTimeoutStatus(timeoutResult.getTimeoutStatus()); } respDTO.setSerialCode(dangerManageById.getSerialCode()); respDTO.setRectifyDepName(data.getDepName()); respDTO.setDangerStatus(dangerManageById.getDangerStatus()); respDTO.setDangerManagerId(dangerManageById.getId()); respDTO.setReportState(reportConfigById.getReportState()); respDTO.setReportType(reportConfigById.getReportType()); respDTO.setDangerCode(dangerManageById.getDangerCode()); list.add(respDTO); respDTO.setPageIndex(list.indexOf(respDTO)); respDTO.setPageSize(pageSize); } }else { PreventDangerManageTimeout timeoutResult = preventDangerManageTimeoutService.getByRectifyId(record.getId()); PreventDangerRectifyQueryRespDTO respDTO = BeanCopyUtils.copyBean(record, PreventDangerRectifyQueryRespDTO.class); //添加部门名称 ResultVO depInfoByDepId = accountDepartmentService.getDepInfoByDepId(userId, respDTO.getRectifyDepId()); DepInfoRPCRespDTO data = (DepInfoRPCRespDTO)depInfoByDepId.getData(); if (ObjectUtils.isNotEmpty(timeoutResult)){ respDTO.setTimeoutStatus(timeoutResult.getTimeoutStatus()); } if (ObjectUtils.isNotEmpty(dangerManageById.getSerialCode())){ respDTO.setSerialCode(dangerManageById.getSerialCode()); } respDTO.setSerialCode(dangerManageById.getSerialCode()); respDTO.setRectifyDepName(data.getDepName()); respDTO.setDangerStatus(dangerManageById.getDangerStatus()); respDTO.setPageIndex(pageSize); respDTO.setPageSize((int) page.getCurrent()); respDTO.setDangerManagerId(dangerManageById.getId()); respDTO.setReportState(reportConfigById.getReportState()); respDTO.setReportType(reportConfigById.getReportType()); list.add(respDTO); resultVO.setCount((int) page.getTotal()); } } resultVO.setData(list); resultVO.setCount((int) page.getTotal()); return resultVO; } /** * 隐患整改清单-查询:待验收与已验收 */ @Override public ResultVO getRectifyOverPage(Long userId, PreventRectifyOverQueryReqDTO rectifyOverQueryReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("查询成功"); List list = new ArrayList<>(); Integer pageIndex = rectifyOverQueryReqDTO.getPageIndex(); Integer pageSize = rectifyOverQueryReqDTO.getPageSize(); //获取用户信息 ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } if (ObjectUtils.isEmpty(rectifyOverQueryReqDTO.getDangerStatus())){ rectifyOverQueryReqDTO.setStatus(StatusEnum.DELETE_STATUS_USE.getCode()); }else { rectifyOverQueryReqDTO.setStatus(null); } //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_RISK_ANA_UNIT.getCode()); Page pageInfo = new Page<>(pageIndex, pageSize); pageInfo.setOptimizeCountSql(false); IPage page = preventDangerRectifyService.getDangerRectifyPageToOverRectify(pageInfo, rectifyOverQueryReqDTO); if (ObjectUtils.isEmpty(page)){ resultVO.setMsg("查询成功,无数据"); return resultVO; } for (PreventDangerRectify record : page.getRecords()) { PreventDangerRectifyQueryRespDTO respDTO = BeanCopyUtils.copyBean(record, PreventDangerRectifyQueryRespDTO.class); PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(record.getDangerManagerId()); PreventDangerManageTimeout timeoutResult = preventDangerManageTimeoutService.getByRectifyId(record.getId()); //添加部门名称 ResultVO depInfoByDepId = accountDepartmentService.getDepInfoByDepId(userId, respDTO.getRectifyDepId()); if (ObjectUtils.isNotEmpty(timeoutResult)){ respDTO.setTimeoutStatus(timeoutResult.getTimeoutStatus()); } DepInfoRPCRespDTO data = (DepInfoRPCRespDTO)depInfoByDepId.getData(); respDTO.setRectifyDepName(data.getDepName()); respDTO.setSerialCode(dangerManageById.getSerialCode()); respDTO.setDangerStatus(dangerManageById.getDangerStatus()); respDTO.setDangerManagerId(record.getDangerManagerId()); respDTO.setReportState(reportConfigById.getReportState()); respDTO.setReportType(reportConfigById.getReportType()); respDTO.setPageIndex((int) page.getCurrent()); respDTO.setPageSize((int) page.getSize()); list.add(respDTO); } resultVO.setData(list); resultVO.setCount((int) page.getTotal()); return resultVO; } /** * 隐患整改清单-新增 ---不要了--20220727 */ @Override public ResultVO saveDangerRectify(Long userId, PreventDangerRectifySaveReqDTO rectifySaveReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("新增成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } if (rectifySaveReqDTO.getDangerManagerId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患管理单不能为空"); } PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(rectifySaveReqDTO.getDangerManagerId()); if (ObjectUtils.isEmpty(dangerManageById)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "请填写正确的隐患管理单"); } //每个隐患管理单,只能有一个整改清单 PreventDangerRectify rectifyByCode = preventDangerRectifyService.getRectifyByCode(dangerManageById.getDangerCode()); if (ObjectUtils.isNotEmpty(rectifyByCode)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "每个隐患管理单只能有一个整改任务单"); } if (rectifySaveReqDTO.getRectifyTime() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改期限不能为空"); } if (rectifySaveReqDTO.getLiablePersonId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改责任人不能为空"); } //获取责任人信息 ResultVO liablePersonResult = accountAuthService.getUserById(rectifySaveReqDTO.getLiablePersonId()); UserRPCRespDTO liablePerson = (UserRPCRespDTO)liablePersonResult.getData(); if (ObjectUtils.isEmpty(liablePerson)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "请正确填写整改责任人"); } if (rectifySaveReqDTO.getRectifyDesc() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改内容说明"); } if (rectifySaveReqDTO.getRectifyTime() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改类型不能为空"); } //获取需要填充的信息 SnowFlow snowFlow = new SnowFlow();//雪花算法生成器 String uuid = UUID.randomUUID().toString(); Date date = new Date(); long rectifyId = snowFlow.nextId(); //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //封装参数 PreventDangerRectify dangerRectify = BeanCopyUtils.copyBean(rectifySaveReqDTO, PreventDangerRectify.class); dangerRectify.setId(rectifyId); dangerRectify.setUuid(uuid); dangerRectify.setDeleteStatus(StatusEnum.DELETE_STATUS_USE.getCode()); dangerRectify.setGmtCreate(date); dangerRectify.setCreateByUserName(userById.getRealName()); dangerRectify.setGmtModitify(date); dangerRectify.setLastEditUserName(userById.getRealName()); dangerRectify.setEnterpriseId((long) 1); dangerRectify.setEnterpriseUuid("1564wq"); dangerRectify.setCheckAcceptPerson(userById.getRealName()); dangerRectify.setCheckAcceptPersonId(null); dangerRectify.setRectifyDepId(null); dangerRectify.setDangerManagerUuid(dangerManageById.getUuid()); dangerRectify.setDangerManagerId(rectifySaveReqDTO.getDangerManagerId()); dangerRectify.setDangerCode(dangerManageById.getDangerCode()); dangerRectify.setLiablePerson(liablePerson.getRealName()); //设置上报时间为空 dangerRectify.setReportTime(null); //设置本条数据上报更新时间 dangerRectify.setUpdateReportDataTime(new Date()); //读取上报主配置,进行任务记录上报配置,如果开启上报功能,且设置为自动上报,开启上报相关配置 //本模块是否上报,通过DangerManager表的配置进行管理 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_HAND_EXEC_CONFIG.getCode()){ //设置上报状态为-等待上报 dangerRectify.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); //其他情况默认不开启上报数据,如果是手动上报,可对单条数据进行操作 }else { //设置上报状态为-不上报 dangerRectify.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); } //不确定是否需要的字段 dangerRectify.setCheckAcceptTime(null); dangerRectify.setCheckAcceptDesc(null); int result = preventDangerRectifyService.saveDangerRectify(dangerRectify); resultVO.setCount(result); return resultVO; } /** * 隐患整改--延期 */ @Transactional @Override public ResultVO timeOutRectify(Long userId, PreventDangerRectifyUpdateReqDTO updateReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("整改已延期"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } if (updateReqDTO.getId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "传参非法"); } if (updateReqDTO.getDangerManagerId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患管理单不能为空"); } if (updateReqDTO.getRectifyTime() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "延期的时间不能为空"); } if (updateReqDTO.getTimeOutDesc() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "延期说明不能为空"); } PreventDangerRectify rectify = preventDangerRectifyService.getRectifyById(updateReqDTO.getId()); if (updateReqDTO.getRectifyTime().getTime() - rectify.getRectifyTime().getTime() <= 0){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "延期时间必须大于整改期限"); } PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(rectify.getDangerManagerId()); if (ObjectUtils.isEmpty(dangerManageById)){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "传参错误"); } if (dangerManageById.getDangerStatus() == StatusEnum.DANGER_MANAGER_NOT_ACCEPT.getCode()){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "超期未整改任务无法延期"); } //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //封装修改参数 PreventDangerRectifyUpdateParams updateParams = new PreventDangerRectifyUpdateParams(); updateParams.setId(updateReqDTO.getId()); updateParams.setRectifyTime(updateReqDTO.getRectifyTime()); updateParams.setLastEditUserName(userById.getRealName()); updateParams.setGmtModitify(new Date()); updateParams.setTimeOutDesc(updateReqDTO.getTimeOutDesc()); //设置本条数据上报更新时间 ,上报开关依赖于dangerManager updateParams.setUpdateReportDataTime(new Date()); //读取上报主配置,进行任务记录上报配置,如果开启上报功能,且设置为自动上报,开启上报相关配置 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_HAND_EXEC_CONFIG.getCode()){ //设置上报状态为-等待上报 updateParams.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); //其他情况默认不开启上报数据,如果是手动上报,可对单条数据进行操作 }else { //设置上报状态为-不上报 updateParams.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); } //整改单延期成功 int resultRectify = preventDangerRectifyService.updateRectifyTime(updateParams); if (resultRectify < 1){ throw new AusinessException(E.UPDATE_FAIL, "延期操作失败"); } //管理单变更状态成功 //封装修改参数 UpdateRectifyResultParams updateRectifyParams = new UpdateRectifyResultParams(); updateRectifyParams.setDangerStatus(StatusEnum.DANGER_MANAGER_TIMEOUT_RECTIFY.getCode()); updateRectifyParams.setDangerManagerId(updateReqDTO.getDangerManagerId()); updateRectifyParams.setUpdateReportDataTime(new Date()); //封装延期状态参数 PreventDangerManageTimeout manageTimeout = new PreventDangerManageTimeout(); manageTimeout.setDeleteStatus(StatusEnum.DELETE_STATUS_USE.getCode()); manageTimeout.setTimeoutStatus(StatusEnum.DANGER_MANAGER_TIMEOUT_RECTIFY.getCode()); manageTimeout.setDangerRectifyId(updateReqDTO.getId()); manageTimeout.setDangerManagerId(updateReqDTO.getDangerManagerId()); int resultManager = preventDangerManageService.updateRectifyResult(updateRectifyParams); if (resultManager < 1){ throw new AusinessException(E.UPDATE_FAIL, "隐患管理状态变更失败"); } int resultTimeout = preventDangerManageTimeoutService.updateTimeout(manageTimeout); if (resultTimeout < 1){ throw new AusinessException(E.UPDATE_FAIL, "延期状态变更失败"); } return resultVO; } /** * 隐患整改清单-修改 */ @Override public ResultVO updateDangerRectify(Long userId, PreventDangerRectifyUpdateReqDTO rectifyUpdateReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("修改成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } if (rectifyUpdateReqDTO.getDangerManagerId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "参数非法"); } PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(rectifyUpdateReqDTO.getDangerManagerId()); if (ObjectUtils.isEmpty(dangerManageById)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "请填写正确的隐患管理单"); } if (rectifyUpdateReqDTO.getRectifyTime() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改期限不能为空"); } if (rectifyUpdateReqDTO.getLiablePersonId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改责任人不能为空"); } //获取责任人信息 ResultVO liablePersonResult = accountAuthService.getUserById(rectifyUpdateReqDTO.getLiablePersonId()); UserRPCRespDTO liablePerson = (UserRPCRespDTO)liablePersonResult.getData(); if (ObjectUtils.isEmpty(liablePerson)){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "请正确填写整改责任人"); } if (rectifyUpdateReqDTO.getRectifyDesc() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改内容说明不能为空"); } if (rectifyUpdateReqDTO.getRectifyType() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改类型不能为空"); } if (rectifyUpdateReqDTO.getCost() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "整改资金不能为空"); } //获取需要填充的信息 Date date = new Date(); //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //封装参数 PreventDangerRectifyUpdateParams updateParams = BeanCopyUtils.copyBean(rectifyUpdateReqDTO, PreventDangerRectifyUpdateParams.class); updateParams.setGmtModitify(date); updateParams.setLastEditUserName(userById.getRealName()); updateParams.setDangerManagerUuid(dangerManageById.getUuid()); updateParams.setLiablePerson(liablePerson.getRealName()); //设置本条数据上报更新时间 ,上报开关依赖于dangerManager updateParams.setUpdateReportDataTime(date); //读取上报主配置,进行任务记录上报配置,如果开启上报功能,且设置为自动上报,开启上报相关配置 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_HAND_EXEC_CONFIG.getCode()){ //设置上报状态为-等待上报 updateParams.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); //其他情况默认不开启上报数据,如果是手动上报,可对单条数据进行操作 }else { //设置上报状态为-不上报 updateParams.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); } int result = preventDangerRectifyService.updateDangerRectify(updateParams); resultVO.setCount(result); return resultVO; } /** * 隐患整改清单-验收情况填报-整改 */ @Override public ResultVO applyReport(Long userId, PreventDangerReportRectifyReqDTO reportRectify) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("填报成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } if (reportRectify.getId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "参数为空"); } // //获取验收责任人信息 验收人已经使用了整改责任人 // ResultVO checkAcceptPersonResult = accountAuthService.getUserById(reportRectify.getCheckAcceptPersonId()); // UserRPCRespDTO checkAcceptPerson = (UserRPCRespDTO)checkAcceptPersonResult.getData(); PreventDangerRectify rectifyById = preventDangerRectifyService.getRectifyById(reportRectify.getId()); if (!userId.equals(rectifyById.getLiablePersonId())){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "非整改责任人,无法操作"); } PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(reportRectify.getDangerManagerId()); if (dangerManageById.getDangerStatus().equals(StatusEnum.DANGER_MANAGER_NOT_ACCEPT.getCode()) || dangerManageById.getDangerStatus().equals(StatusEnum.DANGER_MANAGER_WAIT_ACCEPT.getCode()) || dangerManageById.getDangerStatus().equals(StatusEnum.DANGER_MANAGER_ACCEPT.getCode())){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "该整改单不是整改中状态,只有在整改的单据才可以申请验收"); } if (reportRectify.getRectifyInfo() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "整改说明不能为空"); } if (dangerManageById.getDangerReview() == StatusEnum.DANGER_RECTIFY_REVIEW.getCode()){ throw new AusinessException(E.DATA_PARAM_NULL, "隐患已关闭,无法处理"); } //获取需要填充的信息 Date date = new Date(); //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //封装参数 PreventDangerReportRectifyUpdayeParams reportParams = BeanCopyUtils.copyBean(reportRectify, PreventDangerReportRectifyUpdayeParams.class); reportParams.setGmtModitify(date); reportParams.setLastEditUserName(userById.getRealName()); reportParams.setApplyTime(reportRectify.getApplyTime()); reportParams.setRectifyInfo(reportRectify.getRectifyInfo()); //设置本条数据上报更新时间 ,上报开关依赖于dangerManager reportParams.setUpdateReportDataTime(date); //读取上报主配置,进行任务记录上报配置,如果开启上报功能,且设置为自动上报,开启上报相关配置 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_HAND_EXEC_CONFIG.getCode()){ //设置上报状态为-等待上报 reportParams.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); //其他情况默认不开启上报数据,如果是手动上报,可对单条数据进行操作 }else { //设置上报状态为-不上报 reportParams.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); } //提交数据 int result = preventDangerRectifyService.applyReport(reportParams); if (result < 1) { throw new AusinessException(E.UPDATE_FAIL, "提交验收失败"); } //封装修改参数 UpdateRectifyResultParams updateParams = new UpdateRectifyResultParams(); updateParams.setDangerStatus(StatusEnum.DANGER_MANAGER_WAIT_ACCEPT.getCode()); updateParams.setDangerManagerId(reportRectify.getDangerManagerId()); updateParams.setUpdateReportDataTime(date); //设置为待验收 int manageResult = preventDangerManageService.updateRectifyResult(updateParams); if (manageResult < 1) { throw new AusinessException(E.UPDATE_FAIL, "状态变更失败"); } resultVO.setCount(result); return resultVO; } /** * 隐患管理-关闭隐患单 */ @Transactional @Override public ResultVO closeDanger(Long userId, PreventCloseDangerReqDTO closeDangerReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("关闭成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } //只有没有处理过的隐患,才能关闭 //封装参数 CloseDangerParams closeDangerParams = BeanCopyUtils.copyBean(closeDangerReqDTO, CloseDangerParams.class); closeDangerParams.setDangerReview(StatusEnum.DANGER_RECTIFY_REVIEW.getCode()); closeDangerParams.setGmtModitify(new Date()); closeDangerParams.setLastEditUserName(userById.getRealName()); closeDangerParams.setUpdateReportDataTime(new Date()); int resultManage = preventDangerManageService.closeDanger(closeDangerParams); if (resultManage < 1){ throw new AusinessException(E.UPDATE_FAIL, "关闭隐患管理信息失败"); } //当做删除-进行同步 int resultRectify = preventDangerRectifyService.closeDanger(closeDangerParams); if (resultRectify < 1){ throw new AusinessException(E.UPDATE_FAIL, "关闭隐患整改信息失败"); } resultVO.setCount(resultManage); return resultVO; } /** * 隐患整改清单--验收 */ @Override public ResultVO reportRectify(Long userId, PreventDangerReportRectifyReqDTO reportRectify) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("验收成功"); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } if (reportRectify.getId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "参数为空"); } if (reportRectify.getDangerManagerId() == null ){ throw new AusinessException(E.DATA_PARAM_NULL, "参数为空"); } if (reportRectify.getCheckAcceptDesc() == null){ throw new AusinessException(E.DATA_PARAM_NULL, "验收意见不能为空"); } PreventDangerRectify rectifyById = preventDangerRectifyService.getRectifyById(reportRectify.getId()); if(!rectifyById.getCheckAcceptPersonId().equals(userId)){ throw new AusinessException(E.DATA_PARAM_NULL, "非验收人,无权操作"); } PreventDangerManage dangerManageById = preventDangerManageService.getDangerManageById(reportRectify.getDangerManagerId()); if (dangerManageById.getDangerStatus() != StatusEnum.DANGER_MANAGER_WAIT_ACCEPT.getCode()){ throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "该整改单不是待验收状态,只有待验收的单据才可以同意验收"); } //获取需要填充的信息 Date date = new Date(); //读取上报主配置 PreventReportConfig reportConfigById = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_DANGER_INFO.getCode()); //封装参数 PreventDangerReportRectifyUpdayeParams reportParams = new PreventDangerReportRectifyUpdayeParams(); reportParams.setId(reportRectify.getId()); reportParams.setGmtModitify(date); reportParams.setLastEditUserName(userById.getRealName()); reportParams.setCheckAcceptTime(date); reportParams.setCheckAcceptDesc(reportRectify.getCheckAcceptDesc()); reportParams.setUpdateReportDataTime(date); //设置本条数据上报更新时间 ,上报开关依赖于dangerManager reportParams.setUpdateReportDataTime(date); //读取上报主配置,进行任务记录上报配置,如果开启上报功能,且设置为自动上报,开启上报相关配置 if (reportConfigById.getReportState() == SyncEnum.REPORT_ON.getCode() && reportConfigById.getReportType() == SyncEnum.REPORT_HAND_EXEC_CONFIG.getCode()){ //设置上报状态为-等待上报 reportParams.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); //其他情况默认不开启上报数据,如果是手动上报,可对单条数据进行操作 }else { //设置上报状态为-不上报 reportParams.setReportStatus(SyncEnum.SYNC_NOT_EXEC.getCode()); } int result = preventDangerRectifyService.reportRectify(reportParams); if (result < 1) { throw new AusinessException(E.UPDATE_FAIL, "验收信息提交失败"); } //封装修改参数 UpdateRectifyResultParams updateParams = new UpdateRectifyResultParams(); updateParams.setDangerStatus(StatusEnum.DANGER_MANAGER_ACCEPT.getCode()); updateParams.setDangerManagerId(reportRectify.getDangerManagerId()); updateParams.setUpdateReportDataTime(date); //设置为待验收 int RectifyResult= preventDangerManageService.updateRectifyResult(updateParams); if (result < 1) { throw new AusinessException(E.UPDATE_FAIL, "验收状态变更失败"); } resultVO.setCount(result); return resultVO; } /** * 隐患整改清单-删除 */ @Override public ResultVO deleteDangerRectify(Long userId, PreventDangerRectifyDeleteReqDTO rectifyDeleteReqDTO) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode("200"); resultVO.setMsg("删除成功"); PreventDeleteParams deleteParams = new PreventDeleteParams(); ResultVO rpcResult = accountAuthService.getUserById(userId); if (rpcResult == null) { throw new BusinessException(ResultCodes.RPC_RESULT_NULL); } if (!ResultCodes.OK.getCode().equals(rpcResult.getCode())) { throw new BusinessException(rpcResult.getCode(), rpcResult.getMsg()); } if (rpcResult.getData() == null) { throw new BusinessException(ResultCodes.RPC_DATA_NULL); } if (!(rpcResult.getData() instanceof UserRPCRespDTO)) { throw new BusinessException(ResultCodes.RPC_DATA_TYPE_NOT_MATCH); } UserRPCRespDTO userById = (UserRPCRespDTO)rpcResult.getData(); if (ObjectUtils.isEmpty(userById)) { throw new BusinessException(ResultCodes.CLIENT_IDENTITY_CHECK_ERROR); } //校验参数 if (rectifyDeleteReqDTO.getId() == null ){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "请选择正确的删除内容"); } //获取需要填充的信息 Date date = new Date(); //封装删除需要的参数 deleteParams.setId(rectifyDeleteReqDTO.getId()); deleteParams.setGmtModitify(date); deleteParams.setLastEditUserName(userById.getRealName()); deleteParams.setUpdateReportDataTime(date); int result = preventDangerRectifyService.deleteDangerRectify(deleteParams); resultVO.setCount(result); return resultVO; } @Override public ResultVO countDangerByDate(LocalDate date) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode(ResultCodes.OK.getCode()); LocalDateTime startTime = LocalDateTime.of(date, LocalTime.of(0,0,0)); LocalDateTime endTime = LocalDateTime.of(date, LocalTime.of(23,59,59)); Date start = Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()); Date end = Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()); resultVO.setData(preventDangerManageService.countByCreateTime(start,end)); return resultVO; } @Override public ResultVO findByDangerSerialCode(String serialCode) { ResultVO resultVO = new ResultVO<>(); resultVO.setCode(ResultCodes.OK.getCode()); PreventDangerManage dangerManage = preventDangerManageService.findByDangerSerialCode(serialCode); if(dangerManage != null){ PreventDangerManageQueryRespDTO respDTO = new PreventDangerManageQueryRespDTO(); BeanUtils.copyProperties(dangerManage,respDTO); resultVO.setData(respDTO); } return resultVO; } /** * 生成隐患编码 * @param time * @param existCount * @return */ private String generateDangerSerialCode(Date time,int existCount){ LocalDateTime t = time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); LocalDate d = t.toLocalDate(); StringBuilder stringBuilder = new StringBuilder(""); stringBuilder.append(d.getYear()); int mon = d.getMonthValue(); if(mon < 10){ stringBuilder.append("0"); stringBuilder.append(mon); }else { stringBuilder.append(mon); } stringBuilder.append(d.getDayOfMonth()); stringBuilder.append('-'); int nowSerial = 0; if(existCount > 0) nowSerial = existCount + 1; else nowSerial = 1; if(nowSerial < 10000){ if(nowSerial<10){ stringBuilder.append("000"); }else if(nowSerial>=10 && nowSerial<100){ stringBuilder.append("00"); }else if(nowSerial>=100 && nowSerial<1000){ stringBuilder.append("0"); } stringBuilder.append(nowSerial); }else { stringBuilder.append(nowSerial); } return stringBuilder.toString(); } }