package com.gk.hotwork.Service.ServiceImpl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.hotwork.Domain.Enum.*; import com.gk.hotwork.Domain.Exception.BusinessException; import com.gk.hotwork.Domain.HiddenDanger; import com.gk.hotwork.Domain.HiddenDangerResource; import com.gk.hotwork.Domain.TaskInfo; import com.gk.hotwork.Domain.UserInfo; import com.gk.hotwork.Domain.Utils.*; import com.gk.hotwork.Domain.Utils.Properties; import com.gk.hotwork.Domain.Vo.HiddenDangerAppVo; import com.gk.hotwork.Domain.Vo.HiddenDangerBySafeCheckVo; import com.gk.hotwork.Domain.Vo.HiddenDangerVo; import com.gk.hotwork.Domain.Vo.PageInfoExtension; import com.gk.hotwork.Mapper.HiddenDangerMapper; import com.gk.hotwork.Service.HiddenDangerResourceService; import com.gk.hotwork.Service.HiddenDangerService; import com.gk.hotwork.Service.TaskService; import com.gk.hotwork.Service.UserService; import org.apache.commons.lang3.ObjectUtils; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.util.*; @Service("hiddenDangerService") public class HiddenDangerServiceImpl extends ServiceImpl implements HiddenDangerService { @Autowired private TaskService taskService; @Autowired private UserService userService; @Autowired private HiddenDangerResourceService hiddenDangerResourceService; @Autowired private HiddenDangerMapper hiddenDangerMapper; /** * @Description: web 新增隐患报告 * @date 2021/10/9 10:11 */ @Override @Transactional public HiddenDanger addReport(HiddenDangerVo hiddenDangerVo, UserInfo userInfo,HiddenDangerReportSource source) { //上传文件判断 MultipartFile[] files = hiddenDangerVo.getFiles(); if (files == null || files.length < 1) { throw new BusinessException("请上传图片"); } Date now = new Date(); //判空 if (StringUtils.isBlank(hiddenDangerVo.getRectifymeasure())) throw new BusinessException("整改措施不能为空"); if (hiddenDangerVo.getLevel() == null) throw new BusinessException("隐患级别不能为空"); if (hiddenDangerVo.getRectifydeadline() == null) throw new BusinessException("整改截止日期不能为空"); if (hiddenDangerVo.getRectifierid() == null) throw new BusinessException("请选择整改人"); HiddenDanger hiddenDanger = new HiddenDanger(); hiddenDanger.setCreatenote(hiddenDangerVo.getNote()); hiddenDanger.setLevel(hiddenDangerVo.getLevel()); hiddenDanger.setCreatetime(now); hiddenDanger.setRectifydeadline(hiddenDangerVo.getRectifydeadline()); hiddenDanger.setRectifymeasure(hiddenDangerVo.getRectifymeasure()); hiddenDanger.setRectifier(hiddenDangerVo.getRectifier()); hiddenDanger.setRectifierid(hiddenDangerVo.getRectifierid()); hiddenDanger.setStatus(HiddenDangerApplyStatus.TORECTIFY); hiddenDanger.setSource(source.getCode()); //提出人 UserInfo user = userService.getById(userInfo); hiddenDanger.setRequestor(user.getRealname()); hiddenDanger.setRequestorid(userInfo.getId()); hiddenDanger.setValidflag(true); //生成单号 规则 yyyy-MM(000n) int num = this.countNumInMonth(userInfo.getId()); hiddenDanger.setCode(CodeUtils.generateHiddenDangerCode("yyMM",hiddenDanger.getLevel() ,userInfo.getId(), ++ num)); this.save(hiddenDanger); try { for (int i = 0 ;i < files.length;i++) { MultipartFile file = files[i]; HiddenDangerResource hiddenDangerResource = new HiddenDangerResource(); hiddenDangerResource.setBelongid(hiddenDanger.getId()); hiddenDangerResource.setOriginalfilename(file.getOriginalFilename()); hiddenDangerResource.setCreatetime(now); hiddenDangerResource.setOperation(HiddenDangerApplyOperation.REPORT); hiddenDangerResource.setSort(i + 1); hiddenDangerResource.setType(file.getContentType()); String newName = UploadUtil.uploadFile(file, Properties.hiddenDangerPath); hiddenDangerResource.setFilename(newName); hiddenDangerResource.setUrl(Properties.hiddenDanger + newName); hiddenDangerResource.setValidflag(true); hiddenDangerResource.setCreatetime(now); hiddenDangerResource.setSource(SourceType.WEB); hiddenDangerResourceService.save(hiddenDangerResource); } } catch (Exception e) { e.printStackTrace(); throw new BusinessException("文件上传出现问题"); } return hiddenDanger; } /** * @Description: 巡检上报 接收文件的相对路径 * @date 2022/5/19 10:04 */ @Transactional public boolean addReportBySafeCheck(HiddenDangerBySafeCheckVo vo,UserInfo operator){ boolean result = true; Date now = new Date(); //判断 { if (StringUtils.isBlank(vo.getRectifymeasure())) throw new BusinessException("整改措施不能为空"); if (vo.getLevel() == null) throw new BusinessException("隐患级别不能为空"); if (vo.getRectifydeadline() == null) throw new BusinessException("整改截止日期不能为空"); if (vo.getRectifierid() == null) throw new BusinessException("请选择整改人"); } //保存 HiddenDanger hiddenDanger = new HiddenDanger(); hiddenDanger.setCreatenote(vo.getNote()); hiddenDanger.setLevel(vo.getLevel()); hiddenDanger.setCreatetime(now); hiddenDanger.setRectifydeadline(vo.getRectifydeadline()); hiddenDanger.setRectifymeasure(vo.getRectifymeasure()); hiddenDanger.setRectifier(vo.getRectifier()); hiddenDanger.setRectifierid(vo.getRectifierid()); hiddenDanger.setStatus(HiddenDangerApplyStatus.TORECTIFY); hiddenDanger.setSource(HiddenDangerReportSource.SAFE_CHECK.getCode()); hiddenDanger.setRequestor(operator.getRealname()); hiddenDanger.setRequestorid(operator.getId()); hiddenDanger.setValidflag(true); //生成单号 规则 yyyy-MM(000n) int num = this.countNumInMonth(operator.getId()); hiddenDanger.setCode(CodeUtils.generateHiddenDangerCode("yyMM",hiddenDanger.getLevel() ,operator.getId(), ++ num)); if(this.save(hiddenDanger) == false){ result = false; throw new RuntimeException("数据库插入隐患信息失败"); } if (vo.getUrls() != null && vo.getUrls().size() > 0) { List hiddenDangerResourceList = new ArrayList<>(); for (int i=0;i 0){ if(hiddenDangerResourceService.saveBatch(hiddenDangerResourceList) == false){ result = false; throw new RuntimeException("数据库保存资源失败"); } } } return result; } /** * @Description: web 隐患整改 * @date 2021/10/9 13:48 */ @Override @Transactional public HiddenDanger hiddenDangerRectify(HiddenDangerVo hiddenDangerVo) { Long id = hiddenDangerVo.getId(); if (id == null) throw new BusinessException("参数传递错误"); HiddenDanger hiddenDanger = this.getById(id); if (hiddenDanger == null) throw new BusinessException("找不到该相应隐患"); Date now = new Date(); HiddenDanger updateOne = new HiddenDanger(); updateOne.setId(id); updateOne.setRectifynote(hiddenDangerVo.getNote()); updateOne.setRectifytime(now); updateOne.setStatus(HiddenDangerApplyStatus.TOACCEPT); this.updateById(updateOne); //覆盖原有上传图片 List list = hiddenDangerResourceService.list( new LambdaQueryWrapper() .eq(HiddenDangerResource::getBelongid, id) .eq(HiddenDangerResource::getOperation, HiddenDangerApplyOperation.RECTIFICATION) .eq(HiddenDangerResource::getValidflag, Boolean.TRUE)); if (list != null && list.size() > 0) { for (HiddenDangerResource delOne : list) { delOne.setValidflag(Boolean.FALSE); hiddenDangerResourceService.updateById(delOne); } } //插入新图片 MultipartFile[] files = hiddenDangerVo.getFiles(); try { if (files != null && files.length > 0) { for (int i = 0 ;i < files.length;i++) { MultipartFile file = files[i]; HiddenDangerResource hiddenDangerResource = new HiddenDangerResource(); hiddenDangerResource.setBelongid(hiddenDanger.getId()); hiddenDangerResource.setOriginalfilename(file.getOriginalFilename()); hiddenDangerResource.setCreatetime(now); hiddenDangerResource.setOperation(HiddenDangerApplyOperation.RECTIFICATION); hiddenDangerResource.setSort(i + 1); hiddenDangerResource.setType(file.getContentType()); String newName = UploadUtil.uploadFile(file, Properties.hiddenDangerPath); hiddenDangerResource.setFilename(newName); hiddenDangerResource.setUrl(Properties.hiddenDanger + newName); hiddenDangerResource.setValidflag(true); hiddenDangerResource.setCreatetime(now); hiddenDangerResource.setSource(SourceType.WEB); hiddenDangerResourceService.save(hiddenDangerResource); } } } catch (Exception e) { e.printStackTrace(); throw new BusinessException("文件上传出现问题"); } return hiddenDanger; } /** * @Description: app上报 * @date 2021/10/9 14:44 */ @Override @Transactional public HiddenDanger addReportByApp(HiddenDangerAppVo hiddenDangerAppVo, UserInfo userInfo) { ; if (StringUtils.isBlank(hiddenDangerAppVo.getRectifymeasure())) throw new BusinessException("整改措施不能为空"); if (hiddenDangerAppVo.getLevel() == null) throw new BusinessException("隐患级别不能为空"); if (hiddenDangerAppVo.getRectifydeadline() == null) throw new BusinessException("整改截止日期不能为空"); if (hiddenDangerAppVo.getRectifierid() == null) throw new BusinessException("请选择整改人"); List urls = hiddenDangerAppVo.getUrls(); if(urls == null || urls.size() < 1 ) throw new BusinessException("请上传图片"); Date now = new Date(); HiddenDanger hiddenDanger = new HiddenDanger(); hiddenDanger.setCreatenote(hiddenDangerAppVo.getNote()); hiddenDanger.setLevel(hiddenDangerAppVo.getLevel()); hiddenDanger.setCreatetime(now); hiddenDanger.setRectifydeadline(hiddenDangerAppVo.getRectifydeadline()); hiddenDanger.setRectifymeasure(hiddenDangerAppVo.getRectifymeasure()); hiddenDanger.setRectifier(hiddenDangerAppVo.getRectifier()); hiddenDanger.setRectifierid(hiddenDangerAppVo.getRectifierid()); hiddenDanger.setStatus(HiddenDangerApplyStatus.TORECTIFY); hiddenDanger.setSource(HiddenDangerReportSource.NORMAL.getCode()); //提出人 UserInfo user = userService.getById(userInfo); hiddenDanger.setRequestor(user.getRealname()); hiddenDanger.setRequestorid(userInfo.getId()); hiddenDanger.setValidflag(true); //生成单号 规则 yyyy-MM(000n) int num = this.countNumInMonth(userInfo.getId()); hiddenDanger.setCode(CodeUtils.generateHiddenDangerCode("yyMM",hiddenDanger.getLevel() ,userInfo.getId(), ++ num)); this.save(hiddenDanger); for (int i = 0; i < urls.size(); i++) { String url = urls.get(i); HiddenDangerResource hiddenDangerResource = new HiddenDangerResource(); hiddenDangerResource.setValidflag(true); hiddenDangerResource.setSource(SourceType.APP); hiddenDangerResource.setUrl(url); hiddenDangerResource.setOperation(HiddenDangerApplyOperation.REPORT); hiddenDangerResource.setSort(i + 1); hiddenDangerResource.setBelongid(hiddenDanger.getId()); hiddenDangerResource.setCreatetime(now); hiddenDangerResourceService.save(hiddenDangerResource); } return hiddenDanger; } /** * @Description: app整改 */ @Override @Transactional public HiddenDanger rectifyHiddenDangerByApp(HiddenDangerAppVo hiddenDangerAppVo, UserInfo user) { Long id = hiddenDangerAppVo.getId(); if (id == null) throw new BusinessException("参数传递错误"); HiddenDanger hiddenDanger = this.getById(id); if (hiddenDanger == null) throw new BusinessException("找不到该相应隐患"); Date now = new Date(); HiddenDanger updateOne = new HiddenDanger(); updateOne.setId(id); updateOne.setRectifynote(hiddenDangerAppVo.getNote()); updateOne.setRectifytime(now); updateOne.setStatus(HiddenDangerApplyStatus.TOACCEPT); this.updateById(updateOne); //覆盖原有上传图片 List list = hiddenDangerResourceService.list( new LambdaQueryWrapper() .eq(HiddenDangerResource::getBelongid, id) .eq(HiddenDangerResource::getOperation, HiddenDangerApplyOperation.RECTIFICATION) .eq(HiddenDangerResource::getValidflag, Boolean.TRUE)); if (list != null && list.size() > 0) { for (HiddenDangerResource delOne : list) { delOne.setValidflag(Boolean.FALSE); hiddenDangerResourceService.updateById(delOne); } } //新增图片 List urls = hiddenDangerAppVo.getUrls(); if (urls != null && urls.size() > 0) { for (int i = 0 ;i < urls.size();i++) { String url = urls.get(i); HiddenDangerResource hiddenDangerResource = new HiddenDangerResource(); hiddenDangerResource.setBelongid(hiddenDanger.getId()); hiddenDangerResource.setCreatetime(now); hiddenDangerResource.setOperation(HiddenDangerApplyOperation.RECTIFICATION); hiddenDangerResource.setSort(i + 1); hiddenDangerResource.setUrl(url); hiddenDangerResource.setValidflag(true); hiddenDangerResource.setCreatetime(now); hiddenDangerResource.setSource(SourceType.APP); hiddenDangerResourceService.save(hiddenDangerResource); } } return hiddenDanger; } /** * @Description: 上报页面 * @date 2022/3/24 10:12 */ @Override public IPage selectReportPages(Page page, Map filter, UserInfo user) { Map params = new HashMap<>(); params.put("requestorid", user.getId()); params.put("status",filter.get("status")); params.put("code",filter.get("code")); params.put("level", filter.get("level")); params.put("rectifierName", filter.get("rectifierName")); params.put("source",filter.get("source")); return hiddenDangerMapper.selectPages(page,params); } /** * @Description: 整改页面 */ @Override public IPage selectRectifyPages(Page page, Map filter, UserInfo user) { Map params = new HashMap<>(); params.put("rectifierid", user.getId()); params.put("requestorName", filter.get("requestorName")); params.put("status",filter.get("status")); params.put("level", filter.get("level")); params.put("code",filter.get("code")); params.put("source",filter.get("source")); params.put("overTime", filter.get("overTime")); return hiddenDangerMapper.selectPages(page,params); } /** * @Description: 验收页面 */ @Override public IPage selectAcceptPages(Page page, Map filter, UserInfo user) { Map params = new HashMap<>(); params.put("requestorid", user.getId()); params.put("status", HiddenDangerApplyStatus.TOACCEPT); params.put("level", filter.get("level")); params.put("code",filter.get("code")); params.put("rectifierName", filter.get("rectifierName")); params.put("source",filter.get("source")); return hiddenDangerMapper.selectPages(page,params); } @Override public int countNumInMonth(Long id) { return hiddenDangerMapper.countNumInMonth(id); } @Override public Integer selectOverTimeNum(HiddenDangerApplyStatus status,Long userId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(HiddenDanger::getValidflag, true); queryWrapper.lt(HiddenDanger::getRectifydeadline, new Date()); if (userId != null) queryWrapper.eq(HiddenDanger::getRectifierid, userId); if (status != null) queryWrapper.eq(HiddenDanger::getStatus, status); return hiddenDangerMapper.selectCount(queryWrapper); } @Override public Map getAppAnalysis(UserInfo userInfo) { //1.待整改 Integer num1 = this.selectCurrentNum(HiddenDangerApplyStatus.TORECTIFY,userInfo.getId()); Integer num2 = this.selectCurrentNum(HiddenDangerApplyStatus.REJECTED,userInfo.getId()); Integer toRectify = num1 + num2; //2.待验收 Integer toAccept = this.selectCurrentNum(HiddenDangerApplyStatus.TOACCEPT,userInfo.getId()); //3.逾期未整改 Integer num3 = this.selectOverTimeNum(HiddenDangerApplyStatus.TORECTIFY,userInfo.getId()); Integer num4 = this.selectOverTimeNum(HiddenDangerApplyStatus.REJECTED,userInfo.getId()); Integer overTimeToRectify = num3 + num4; //4.待巡检任务数量 Integer toCheck = 0; //5.超期未巡检任务 Integer overTimeCheck = 0; Map result = new HashMap<>(); result.put("toRectify", toRectify); result.put("toAccept", toAccept); result.put("toCheck", toCheck); result.put("overTimeToRectify", overTimeToRectify); result.put("overTimeCheck", overTimeCheck); return result; } @Override public Integer selectCurrentNum(HiddenDangerApplyStatus status, Long userId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(HiddenDanger::getValidflag, true); if (userId != null) queryWrapper.eq(HiddenDanger::getRectifierid, userId); if (status != null) queryWrapper.eq(HiddenDanger::getStatus, status); return hiddenDangerMapper.selectCount(queryWrapper); } /** * @Description: 管理员看 * @date 2021/10/14 15:41 */ @Override public PageInfoExtension selectRectifyStatisticsPages(Page page, Map filter, UserInfo user) { Map params = new HashMap<>(); params.put("status", filter.get("status")); params.put("level", filter.get("level")); params.put("requestorName", filter.get("requestorName")); params.put("rectifierName", filter.get("rectifierName")); params.put("source", filter.get("source")); Page pageInfo = hiddenDangerMapper.selectPages(page, params); PageInfoExtension extension = new PageInfoExtension<>(pageInfo); Map rectifyStatistics = new HashMap<>(); //设置统计数 { //完成数量 rectifyStatistics.put("completednum", this.selectNum(HiddenDangerApplyStatus.COMPLETED)); //上报数量 rectifyStatistics.put("reportnum", this.selectNum(null)); //驳回数量 rectifyStatistics.put("rejectnum", this.selectNum(HiddenDangerApplyStatus.REJECTED)); //待整改数量(包括驳回待整改) rectifyStatistics.put("2rectifynum", this.selectNum(HiddenDangerApplyStatus.TORECTIFY) + rectifyStatistics.get("rejectnum")); //待验收数量 rectifyStatistics.put("2acceptnum", this.selectNum(HiddenDangerApplyStatus.TOACCEPT)); } extension.setExtension(rectifyStatistics); return extension; } @Override public Integer selectNum(HiddenDangerApplyStatus status) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(HiddenDanger::getValidflag, true); if (status != null) queryWrapper.eq(HiddenDanger::getStatus, status); return hiddenDangerMapper.selectCount(queryWrapper); } @Override public void selectDataGrid(PageInfo pageInfo) { Page page = PageUtil.getPage(pageInfo,"hiddendanger.createtime"); if (StringUtils.isBlank(pageInfo.getSort())){ pageInfo.setSort("hiddendanger.createtime"); } if (StringUtils.isBlank(pageInfo.getOrder())){ pageInfo.setOrder("desc"); } List dangers = hiddenDangerMapper.selectDataGrid(pageInfo.getCondition(),page); for (HiddenDanger danger : dangers){ ListreportResources = hiddenDangerResourceService.getResourcesByDangerId(danger.getId(),"REPORT"); Listresources = hiddenDangerResourceService.getResourcesByDangerId(danger.getId(),"RECTIFICATION"); danger.setReportResources(reportResources); danger.setRectifyResources(resources); } pageInfo.setResult(dangers); pageInfo.setTotalCount(page.getTotal()); } @Override public void selectStatisticsData(PageInfo pageInfo) { Page page = PageUtil.getPage(pageInfo,"hiddendanger.createtime"); if (StringUtils.isBlank(pageInfo.getSort())){ pageInfo.setSort("hiddendanger.createtime"); } if (StringUtils.isBlank(pageInfo.getOrder())){ pageInfo.setOrder("desc"); } List dangers = hiddenDangerMapper.selectStatisticsData(pageInfo.getCondition(),page); pageInfo.setResult(dangers); pageInfo.setTotalCount(page.getTotal()); } @Override public HiddenDanger acceptHiddenDanger(Long id, UserInfo user) { if (id == null) throw new BusinessException("id参数不能为空"); int count = this.count(new LambdaQueryWrapper() .eq(HiddenDanger::getId, id) .eq(HiddenDanger::getValidflag,Boolean.TRUE)); if (count < 1) throw new BusinessException("找不到相应实体"); HiddenDanger acceptOne = new HiddenDanger(); acceptOne.setId(id); acceptOne.setStatus(HiddenDangerApplyStatus.COMPLETED); acceptOne.setAccepttime(new Date()); this.updateById(acceptOne); return acceptOne; } @Override public HiddenDanger rejectHiddenDanger(Long id, String rejectNote, UserInfo user) { if (id == null) throw new BusinessException("id参数不能为空"); if (StringUtils.isBlank(rejectNote)) throw new BusinessException("请填写驳回理由"); int count = this.count(new LambdaQueryWrapper() .eq(HiddenDanger::getId, id) .eq(HiddenDanger::getValidflag,Boolean.TRUE)); if (count < 1) throw new BusinessException("找不到相应实体"); HiddenDanger rejectOne = new HiddenDanger(); rejectOne.setId(id); rejectOne.setRejectnote(rejectNote); rejectOne.setRejecttime(new Date()); rejectOne.setStatus(HiddenDangerApplyStatus.REJECTED); this.updateById(rejectOne); return rejectOne; } }