package com.ruoyi.project.mobile.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.util.StringUtil; import com.ruoyi.common.constant.TrHiddenDangerCheckConstants; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.security.ShiroUtils; import com.ruoyi.doublePrevention.entity.PreventRiskDangerInfo; import com.ruoyi.doublePrevention.service.RiskService; import com.ruoyi.doublePrevention.service.baseService.PreventRiskDangerCheckAndMeasureService; import com.ruoyi.doublePrevention.service.baseService.PreventRiskDangerConfirmLogService; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.mobile.domain.ApiRequestHeader; import com.ruoyi.project.mobile.domain.ApiResult; import com.ruoyi.project.system.user.domain.User; import com.ruoyi.project.system.user.service.IUserService; import com.ruoyi.project.tr.hiddenDangerCheck.domain.HiddenDangerCheck; import com.ruoyi.project.tr.hiddenDangerCheck.service.IHiddenDangerCheckService; import com.ruoyi.project.tr.hiddenDangerCheckPoint.domain.HiddenDangerCheckPoint; import com.ruoyi.project.tr.hiddenDangerCheckPoint.service.IHiddenDangerCheckPointService; import org.apache.commons.lang3.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.ReactiveListCommands; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @Service public class ApiHiddenDangerCheckService extends BaseApiService { private static Logger logger = LoggerFactory.getLogger(ApiHiddenDangerCheckService.class); @Autowired IHiddenDangerCheckService hiddenDangerCheckService;//隐患Service @Autowired IHiddenDangerCheckPointService hdcpService;//隐患检查点Service @Autowired private PreventRiskDangerCheckAndMeasureService riskDangerCheckAndMeasureService;//隐患检查点Service @Autowired IUserService userService;//用户Service @Autowired private RiskService riskService; @Autowired private PreventRiskDangerConfirmLogService confirmLogService; @Autowired private IHiddenDangerCheckPointService hiddenDangerCheckPointService; /** * 获取隐患列表 * * @param str * @param header * @return */ public ApiResult getHiddenDangeCheckList(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } String loginName = header.loginName; try { Map queryHiddenDangerCheck = new ObjectMapper().readValue(str, HashMap.class); String hiddenDangerCheckType = queryHiddenDangerCheck.get("hiddenDangerCheckType");//隐患类型 String hiddenDangerCheckStatus = queryHiddenDangerCheck.get("hiddenDangerCheckStatus");//隐患状态 HiddenDangerCheckPoint hdcp = new HiddenDangerCheckPoint(); if (StringUtils.isEmpty(hiddenDangerCheckType) || StringUtils.isEmpty(hiddenDangerCheckType)) { return ApiResult.success("传输hiddenDangerCheckType为空", new ArrayList()); } else { if ("examine".equals(hiddenDangerCheckType)) { hdcp.setExamineUserId(Long.valueOf(header.userId));//核查人 hdcp.setExamineStatus(hiddenDangerCheckStatus);//核查状态 } else if ("rectify".equals(hiddenDangerCheckType)) { hdcp.setRectifyUserId(Long.valueOf(header.userId));//整改人 hdcp.setRectifyStatus(hiddenDangerCheckStatus);//整改状态 } else if ("accept".equals(hiddenDangerCheckType)) { hdcp.setAcceptUserId(Long.valueOf(header.userId));//验收人 hdcp.setAcceptStatus(hiddenDangerCheckStatus);//验收状态 } else if ("planExecute".equals(hiddenDangerCheckType)) { HiddenDangerCheck hdcQuery = new HiddenDangerCheck(); hdcQuery.setPlanFormulateStatusExclude(TrHiddenDangerCheckConstants.PLAN_FORMULATE_STATUS_NOT_STARTED);//排除---------隐患排查计划制定(未开始)的 if ("1".equals(hiddenDangerCheckStatus)) { hiddenDangerCheckStatus = "2"; } hdcQuery.setPlanExecuteStatus(hiddenDangerCheckStatus);//隐患排查计划执行(0未开始 2已完成) hdcQuery.setCheckUserId(Long.valueOf(header.userId));//排查人 List resultList = hiddenDangerCheckService.selectHiddenDangerCheckList(hdcQuery); //特殊处理(获取计划创建人姓名) for (HiddenDangerCheck hdc : resultList) { User user = userService.selectUserById(hdc.getPlanCreateUserId()); hdc.setPlanCreateUserName(user.getUserName()); } return ApiResult.success("请求数据成功", resultList); } else { return ApiResult.success("传输hiddenDangerCheckType有误", new ArrayList()); } List resultList = hdcpService.selectHiddenDangerCheckPointList(hdcp); for (HiddenDangerCheckPoint dangerCheckPoint : resultList) { PreventRiskDangerInfo dangerInfo = riskService.getDangerInfoByDangerCheckPointId(dangerCheckPoint.getId()); if (ObjectUtils.isNotEmpty(dangerInfo)){ if (ObjectUtils.isNotEmpty(dangerInfo.getDangerSrc())){ dangerCheckPoint.setDangerSrc(dangerInfo.getDangerSrc()); } if (ObjectUtils.isNotEmpty(dangerInfo.getReportTime())){ dangerCheckPoint.setReportTime(dangerInfo.getReportTime()); } } } return ApiResult.success("请求数据成功", resultList); } } catch (Exception e) { return ApiResult.error("异常"); } } /** * 隐患核查--再次核查 */ @Transactional public ApiResult editNextConfirmSave(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { Map map = new ObjectMapper().readValue(str, HashMap.class); HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); // todo-2022 中间核查,插入多人核查附属表 if(ObjectUtils.isEmpty(hdcp.getId())){ throw new RuntimeException("id不能为空"); } // report_status , 上报判定结果(0未判定 1不是隐患 2是隐患) // if(ObjectUtils.isEmpty(hdcp.getReportStatus())){ // throw new RuntimeException("判定结果不能为空"); // } // examine_user_id , 核查人id if(ObjectUtils.isEmpty(hdcp.getExamineUserId())){ throw new RuntimeException("核查人Id不能为空"); } // examine_user_name if(ObjectUtils.isEmpty(hdcp.getExamineUserName())){ throw new RuntimeException("核查人姓名不能为空"); } // examine_opinion 意见 // if(ObjectUtils.isEmpty(hdcp.getRectifyDeadlineTime())){ // throw new RuntimeException("核查意见不能为空"); // } int confirmResult = confirmLogService.saveConfirmLog(hdcp); if (confirmResult < 1){ throw new RuntimeException("操作失败"); } return ApiResult.success("隐患核查保存成功"); } catch (Exception e) { return ApiResult.error(e.getMessage()); } } /** * 隐患核查--保存 */ @Transactional public ApiResult editDangerExamineSave(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { Map map = new ObjectMapper().readValue(str, HashMap.class); HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); // todo-2023 hdcp.setUpdateBy(header.loginName); hdcp.setUpdateTime(DateUtils.getNowDate()); hdcp.setExamineCreateTime(DateUtils.getNowDate());//设置核查时间 hdcp.setExamineStatus(TrHiddenDangerCheckConstants.EXAMINE_STATUS_ALREADY_EXAMINE);//核查状态(已核查) if (!StringUtil.isEmpty(hdcp.getDangerLevel())) { if (("0".equals(hdcp.getDangerLevel())) || ("1".equals(hdcp.getDangerLevel()))) {//0 一般隐患 1 重大隐患 hdcp.setRectifyStatus(TrHiddenDangerCheckConstants.RECTIFY_STATUS_NOT_RECTIFY);//整改状态(未整改) hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_RECTIFY);//隐患整改阶段(数据进入到隐患整改阶段) } else if (("2".equals(hdcp.getDangerLevel()))) { //2 不是隐患 hdcp.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_NOT);//是否为隐患(正常) } } hdcpService.updateHiddenDangerCheckPoint(hdcp); //20250623 修改此处 PreventRiskDangerInfo dangerInfoByDangerCheckPointId = riskService.getDangerInfoByDangerCheckPointId(hdcp.getId()); if (ObjectUtils.isNotEmpty(dangerInfoByDangerCheckPointId)){ //此处插入隐患附属表 int result = riskService.updateDangerInfo(hdcp); if (result < 1){ throw new RuntimeException("修改失败"); } }else { //此处插入隐患附属表 int result = riskService.insertDangerInfo(hdcp.getId(), hdcp); if (result < 1){ throw new RuntimeException("添加隐患附属信息失败"); } } // //此处插入隐患附属表 // int result = riskService.updateCheckLog(hdcp.getId(), hdcp); // if (result< 1){ // throw new RuntimeException("添加隐患附属信息失败"); // } HiddenDangerCheckPoint hiddenDangerCheckPoint = hiddenDangerCheckPointService.getHiddenDangerCheckPointById(hdcp.getId()); int confirmResult = confirmLogService.saveConfirmLog(hiddenDangerCheckPoint); if (confirmResult < 1){ throw new RuntimeException("操作失败"); } hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送 return ApiResult.success("隐患核查保存成功"); } catch (Exception e) { return ApiResult.error(e.getMessage()); } } /** * 隐患整改--保存 */ @Transactional public ApiResult editDangerRectifySave(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); hdcp.setUpdateBy(header.loginName); hdcp.setUpdateTime(DateUtils.getNowDate()); hdcp.setRectifyCreateTime(DateUtils.getNowDate());//设置整改时间 hdcp.setRectifyStatus(TrHiddenDangerCheckConstants.RECTIFY_STATUS_ALREADY_RECTIFY);//整改状态(已整改) hdcp.setAcceptStatus(TrHiddenDangerCheckConstants.ACCEPT_STATUS_NOT_ACCEPT);//验收状态(未验收) hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_ACCEPT);//隐患验收阶段(数据进入到隐患验收阶段) hdcpService.updateHiddenDangerCheckPoint(hdcp); hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送 // todo-2022 隐患信息附属表 int result = riskService.updateDangerInfoRectify(hdcp); if (result < 1){ throw new RuntimeException("整改信息保存失败"); } return ApiResult.success("隐患整改保存成功"); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 整改延期--保存 */ @Transactional public ApiResult rectifyTimeOutSave(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); hdcp.setUpdateBy(header.loginName); hdcp.setUpdateTime(DateUtils.getNowDate()); int result = hdcpService.rectifyTimeOut(hdcp.getId(), hdcp.getRectifyDeadlineTime()); if (result < 1) { return ApiResult.error("延期失败"); } return ApiResult.success("延期成功"); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 隐患验收--保存 */ @Transactional public ApiResult editDangerAcceptSave(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); hdcp.setUpdateBy(header.loginName); hdcp.setUpdateTime(DateUtils.getNowDate()); if (ObjectUtils.isEmpty(hdcp.getAcceptCreateTime())){ throw new RuntimeException("请填写验收时间"); } if (!StringUtils.isEmpty(hdcp.getAcceptResult())) { //验收结果 (0不通过 打回上一级整改阶段 1通过) if ("0".equals(hdcp.getAcceptResult())) { hdcp.setAcceptCreateTime(hdcp.getAcceptCreateTime());//设置验收时间 hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_RECTIFY);//隐患整改阶段(数据进入到隐患整改阶段) hdcp.setRectifyStatus(TrHiddenDangerCheckConstants.RECTIFY_STATUS_NOT_RECTIFY);//整改状态(未整改) hdcp.setAcceptStatus(TrHiddenDangerCheckConstants.ACCEPT_STATUS_ALREADY_ACCEPT_NOT_PASS);//验收状态(验收未通过) } else if ("1".equals(hdcp.getAcceptResult())) { hdcp.setAcceptCreateTime(hdcp.getAcceptCreateTime());//设置验收时间 hdcp.setAcceptStatus(TrHiddenDangerCheckConstants.ACCEPT_STATUS_ALREADY_ACCEPT_PASS);//验收状态(验收通过) } } hdcpService.updateHiddenDangerCheckPoint(hdcp); hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送 // todo-2022 验收通过,修改为已验收状态 int result = riskService.updateDangerInfoAccept(hdcp); if (result < 1){ throw new RuntimeException("隐患验收信息保存失败"); } return ApiResult.success("隐患验收保存成功"); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 隐患计划执行--保存 */ public ApiResult editDangerPlanExecuteSave(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { HiddenDangerCheck hiddenDangerCheck = new ObjectMapper().readValue(str, HiddenDangerCheck.class); hiddenDangerCheck.setCheckStatus(TrHiddenDangerCheckConstants.CHECK_STATUS_ALREADY_CHECK);//排查状态(已排查) hiddenDangerCheck.setCheckTime(DateUtils.getNowDate());//设置排查时间 hiddenDangerCheck.setPlanFormulateStatus(TrHiddenDangerCheckConstants.PLAN_FORMULATE_STATUS_ALREADY_COMPLETE);//隐患排查计划制定(已完成) hiddenDangerCheck.setPlanExecuteStatus(TrHiddenDangerCheckConstants.PLAN_EXECUTE_STATUS_ALREADY_COMPLETE);//隐患排查计划执行(已完成) HiddenDangerCheckPoint hdcpTemp = new HiddenDangerCheckPoint(); hdcpTemp.setCheckId(hiddenDangerCheck.getCheckId()); List hdcpList = hdcpService.selectHiddenDangerCheckPointList(hdcpTemp); for (HiddenDangerCheckPoint hdcp : hdcpList) { if(StringUtils.isEmpty(hdcp.getWhetherDanger())){ return ApiResult.error("检查点需全部操作,请操作检查点。"); } } hdcpList.forEach(hdcp-> { if (hdcp != null) { hdcp.setUpdateBy(header.loginName);//更新者 hdcp.setUpdateTime(DateUtils.getNowDate());//更新时间 //是隐患设置核查人ID、核查人名称 if((!StringUtils.isEmpty(hdcp.getWhetherDanger()))&& (TrHiddenDangerCheckConstants.WHETHER_DANGER_YES.equals(hdcp.getWhetherDanger()))) { hdcp.setExamineStatus(TrHiddenDangerCheckConstants.EXAMINE_STATUS_NOT_EXAMINE);//核查状态(待核查) hdcp.setExamineUserId(hiddenDangerCheck.getExamineUserId());//核查人ID hdcp.setExamineUserName(hiddenDangerCheck.getExamineUserName());//核查人名称 hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_EXAMINE);//3隐患核查阶段(/** 更新者 */数据进入到3隐患核查阶段) } hdcpService.updateHiddenDangerCheckPoint(hdcp); } }); hiddenDangerCheckService.updateHiddenDangerCheck(hiddenDangerCheck); hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送 return ApiResult.success("隐患排查计划执行--保存成功"); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 隐患计划执行中---设置为记录正常 */ public ApiResult editPointSetNormal(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); hdcp.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_NOT);//是否为隐患(正常) hdcp.setCheckStatus(TrHiddenDangerCheckConstants.CHECK_STATUS_ALREADY_CHECK);//排查状态(已排查) hdcp.setPlanFormulateStatus(TrHiddenDangerCheckConstants.PLAN_FORMULATE_STATUS_ALREADY_COMPLETE);//隐患排查计划制定(已完成) hdcp.setPlanExecuteStatus(TrHiddenDangerCheckConstants.PLAN_EXECUTE_STATUS_ALREADY_COMPLETE);//隐患排查计划执行(已完成) hdcpService.updateHiddenDangerCheckPoint(hdcp); hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送 return ApiResult.success("隐患排查计划执行--设置为正常--成功"); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 隐患计划执行中---隐患登记 */ public ApiResult editPointDangerRegisterSave(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); if (ObjectUtils.isEmpty(hdcp.getCheckPerson())){ throw new RuntimeException("检查人不能为空"); } if (ObjectUtils.isEmpty(hdcp.getFindTime())){ throw new RuntimeException("发现时间不能为空"); } hdcp.setRegisterCreateTime(DateUtils.getNowDate());//设置隐患登记上报创建时间 hdcp.setRegisterUserId(Long.valueOf(header.userId));//设置隐患登记上报创建人ID User user = userService.selectUserById(Long.valueOf(header.userId)); hdcp.setRegisterUserName(user.getUserName());//设置隐患登记上报创建人名称 hdcp.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_YES);//是否为隐患(是隐患) hdcp.setCheckStatus(TrHiddenDangerCheckConstants.CHECK_STATUS_ALREADY_CHECK);//排查状态(已排查) hdcp.setExamineStatus(TrHiddenDangerCheckConstants.EXAMINE_STATUS_NOT_EXAMINE);//核查状态(待核查) hdcp.setPlanFormulateStatus(TrHiddenDangerCheckConstants.PLAN_FORMULATE_STATUS_ALREADY_COMPLETE);//隐患排查计划制定(已完成) hdcp.setPlanExecuteStatus(TrHiddenDangerCheckConstants.PLAN_EXECUTE_STATUS_ALREADY_COMPLETE);//隐患排查计划执行(已完成) hdcp.setStage(TrHiddenDangerCheckConstants.DANGER_STAGE_PLAN_EXAMINE);//隐患核查阶段(数据进入到隐患核查阶段) hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_PLAN_PRODUCE); //隐患来源(隐患计划排查生成) HiddenDangerCheckPoint queryExist = new HiddenDangerCheckPoint(); queryExist.setWhetherDanger(TrHiddenDangerCheckConstants.WHETHER_DANGER_YES);//是否为隐患(是隐患) queryExist.setCheckPointId(hdcp.getCheckPointId()); queryExist.setCheckId(hdcp.getCheckId()); List queryExistList = hdcpService.selectHiddenDangerCheckPointList(queryExist); int i=0; if(queryExistList.size()>0){ hdcp.setId(null); hdcp.setCheckTime(DateUtils.getNowDate()); hdcp.setCreateBy(user.getLoginName()); hdcp.setCreateTime(DateUtils.getNowDate()); hdcp.setCompanyId(user.getCompanyId()); i = hdcpService.insertHiddenDangerCheckPoint(hdcp); //20250623增加此逻辑 int result = riskService.insertDangerInfo(hdcp.getId(), hdcp); if (result< 1){ throw new RuntimeException("添加隐患附属信息失败"); } }else{ hdcp.setUpdateBy(user.getLoginName()); hdcp.setUpdateTime(DateUtils.getNowDate()); i = hdcpService.updateHiddenDangerCheckPoint(hdcp); //20250623增加此逻辑 int result = riskService.updateDangerInfo(hdcp); if (result < 1){ throw new RuntimeException("修改失败"); } } hdcpService.getTaskCountTotal(Long.valueOf(header.userId));//查询未执行任务总数量并推送 return ApiResult.success("隐患排查计划执行--隐患登记--成功"); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 隐患查看 */ public ApiResult detailPointDangerRegister(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { HiddenDangerCheckPoint hdcp = new ObjectMapper().readValue(str, HiddenDangerCheckPoint.class); HiddenDangerCheckPoint hiddenDangerCheckPoint = hdcpService.selectHiddenDangerCheckPointById(hdcp.getId()); PreventRiskDangerInfo dangerInfo = riskService.getDangerInfoByDangerCheckPointId(hiddenDangerCheckPoint.getId()); if (ObjectUtils.isNotEmpty(dangerInfo.getReportTime())){ hiddenDangerCheckPoint.setReportTime(dangerInfo.getReportTime()); } return ApiResult.success("隐患查看--成功",hiddenDangerCheckPoint); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 隐患数据统计 */ public ApiResult getDangerDataStatistics(String str, ApiRequestHeader header) { //验证userId,loginName,token,deviceType,deviceId,appType 是否一致 ApiRequestHeader requestHeader = getHeader(header); if (!(header.equals(requestHeader))) { return ApiResult.errorToken("验证userId,loginName,token,deviceType,deviceId,appType 不一致"); } try { HiddenDangerCheckPoint hdcpQuery = new HiddenDangerCheckPoint(); HiddenDangerCheckPoint hdcpQueryAll = new HiddenDangerCheckPoint(); HiddenDangerCheckPoint queryByTime = new HiddenDangerCheckPoint(); hdcpQuery.setRectifyUserIdIsNotNull("1");//隐患整改人ID 不为空 hdcpQueryAll.setRectifyUserIdIsNotNull("1");//隐患整改人ID 不为空 queryByTime.setRectifyUserIdIsNotNull("1");//隐患整改人ID 不为空 Map map = new ObjectMapper().readValue(str, HashMap.class); if(map!=null){ if(!StringUtils.isEmpty(map.get("companyId"))){ // User userQuery = new User(); // userQuery.setCompanyId(Long.valueOf(map.get("companyId"))); // List userList = userService.selectUserList(userQuery); // List userIdList = new ArrayList<>(); // for (User user : userList){ // userIdList.add(user.getUserId()); // } hdcpQuery.setCompanyId(Long.valueOf(map.get("companyId")));//隐患整改人ID 为登陆账号companyId下的userId的 hdcpQueryAll.setCompanyId(Long.valueOf(map.get("companyId")));//隐患整改人ID 为登陆账号companyId下的userId的 queryByTime.setCompanyId(Long.valueOf(map.get("companyId")));//隐患整改人ID 为登陆账号companyId下的userId的 }else{ return ApiResult.error("参数companyId不能为空!"); } //隐患等级 if(!StringUtils.isEmpty(map.get("dangerLevel"))){ hdcpQuery.setDangerLevel(map.get("dangerLevel")); } //日期区间 if(!StringUtils.isEmpty(map.get("dateRange"))){ if(("近一周").equals(map.get("dateRange"))){ hdcpQuery.setParams(getDaySevenRange()); }else if(("近一月").equals(map.get("dateRange"))){ hdcpQuery.setParams(getMonthRange()); }else if(("近一年").equals(map.get("dateRange"))){ hdcpQuery.setParams(getYearRange()); } } //整改状态 if(!StringUtils.isEmpty(map.get("rectifyStatus"))){ if(("未整改").equals(map.get("rectifyStatus"))){ hdcpQuery.setStage("4"); hdcpQuery.setRectifyStatus("0"); }else if(("未验收").equals(map.get("rectifyStatus"))){ hdcpQuery.setStage("5"); hdcpQuery.setAcceptStatus("0"); }else if(("已验收").equals(map.get("rectifyStatus"))){ hdcpQuery.setStage("5"); hdcpQuery.setAcceptStatus("1"); } } //整改部门 if(!StringUtils.isEmpty(map.get("rectifyDeptId"))){ hdcpQuery.setRectifyDeptId(Long.valueOf(map.get("rectifyDeptId"))); } } List resultList = hdcpService.selectHiddenDangerCheckPointList(hdcpQuery);//根据companyId 和 页面筛选条件 查询出的列表 Map resultMap = new HashMap<>(); for (HiddenDangerCheckPoint hdcp : resultList) { if (!StringUtils.isEmpty(hdcp.getStage())) { if ("3".equals(hdcp.getStage())) { if ((!StringUtils.isEmpty(hdcp.getExamineStatus()))&&"0".equals(hdcp.getExamineStatus())) { hdcp.setStage("未核查"); } }else if ("4".equals(hdcp.getStage())){ if ((!StringUtils.isEmpty(hdcp.getRectifyStatus()))&&"0".equals(hdcp.getRectifyStatus())) { hdcp.setStage("未整改"); } }else if ("5".equals(hdcp.getStage())){ if (!StringUtils.isEmpty(hdcp.getAcceptStatus())) { if("0".equals(hdcp.getAcceptStatus())){ hdcp.setStage("未验收"); }else{ hdcp.setStage("已验收"); } } } } } for (HiddenDangerCheckPoint dangerCheckPoint : resultList) { PreventRiskDangerInfo dangerInfo = riskService.getDangerInfoByDangerCheckPointId(dangerCheckPoint.getId()); if (ObjectUtils.isNotEmpty(dangerInfo)){ if (ObjectUtils.isNotEmpty(dangerInfo.getReportTime())){ dangerCheckPoint.setReportTime(dangerInfo.getReportTime()); } } } resultMap.put("resultList", resultList); //companyId下总的数据统计 List resultListAll = hdcpService.selectHiddenDangerCheckPointList(hdcpQueryAll);//根据companyId 查询出的列表 int totalDangerNum = 0;//隐患数 int rectifyNum = 0;//已整改数目 int notRectifyNum = 0;//未整改数目 int totalRectifyNum = 0;//整改总条数(已整改数目+未整改数目) String rectifyRate = "暂无";//整改率 int onTimeRectifyNum = 0;//按期整改数 String onTimeRectifyRate = "暂无";//按期率 int overdueRectifyNum = 0;//超期整改数 String overdueRectifyRate = "暂无";//超期率 for (HiddenDangerCheckPoint hdcp : resultListAll) { if (!StringUtils.isEmpty(hdcp.getStage())) { if ("3".equals(hdcp.getStage())) { if (!StringUtil.isEmpty(hdcp.getExamineStatus())) { if ("0".equals(hdcp.getExamineStatus())) { notRectifyNum++; } } }else if ("4".equals(hdcp.getStage())) { if (!StringUtil.isEmpty(hdcp.getRectifyStatus())) { if ("0".equals(hdcp.getRectifyStatus())) { notRectifyNum++; } } } else if ("5".equals(hdcp.getStage())) { if (!StringUtil.isEmpty(hdcp.getAcceptStatus())) { rectifyNum++; SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); try { if (f.parse(f.format(hdcp.getRectifyDeadlineTime())).before(f.parse(f.format(hdcp.getRectifyCompleteTime())))){ overdueRectifyNum++; } else { onTimeRectifyNum++; } } catch (ParseException e) { } } } } } totalDangerNum = resultListAll.size(); totalRectifyNum = rectifyNum + notRectifyNum; if(totalDangerNum>0) { //计算整改率 BigDecimal a = divide(rectifyNum , totalDangerNum,4); //下面将结果转化成百分比 NumberFormat percent1 = NumberFormat.getPercentInstance(); percent1.setMaximumFractionDigits(2); rectifyRate = percent1.format(a.doubleValue()); //计算按期率 BigDecimal b = divide(onTimeRectifyNum , totalDangerNum,4); //下面将结果转化成百分比 NumberFormat percent2 = NumberFormat.getPercentInstance(); percent2.setMaximumFractionDigits(2); onTimeRectifyRate = percent2.format(b.doubleValue()); //计算超期率 BigDecimal c = divide(overdueRectifyNum , totalDangerNum,4); //下面将结果转化成百分比 NumberFormat percent3 = NumberFormat.getPercentInstance(); percent3.setMaximumFractionDigits(2); overdueRectifyRate = percent3.format(c.doubleValue()); } resultMap.put("totalDangerNum", totalDangerNum); resultMap.put("rectifyNum", rectifyNum); resultMap.put("notRectifyNum", notRectifyNum); resultMap.put("rectifyRate", rectifyRate); resultMap.put("onTimeRectifyNum", onTimeRectifyNum); resultMap.put("onTimeRectifyRate", onTimeRectifyRate); resultMap.put("overdueRectifyNum", overdueRectifyNum); resultMap.put("overdueRectifyRate", overdueRectifyRate); String monthOnMonthRate = "";//环比-------(上个月 - 上上个月)/上上个月 String yearOnYearRate = "";//同比-------(上个月 - 去年上个月)/去年上个月 Map map1 = getLastMonthTime(0,-1);//上个月 Map map2 = getLastMonthTime(0,-2);//上上个月 Map map3 = getLastMonthTime(-1,-1);//去年上个月 queryByTime.setParams(map1); List list1 = hdcpService.selectHiddenDangerCheckPointList(queryByTime);//上个月 queryByTime.setParams(map2); List list2 = hdcpService.selectHiddenDangerCheckPointList(queryByTime);//上上个月 queryByTime.setParams(map3); List list3 = hdcpService.selectHiddenDangerCheckPointList(queryByTime);//去年上个月 //计算环比 if(list2.size()>0) { BigDecimal d = divide((list1.size() - list2.size()) , list2.size(),4); //下面将结果转化成百分比 NumberFormat percent4 = NumberFormat.getPercentInstance(); percent4.setMaximumFractionDigits(2); monthOnMonthRate = percent4.format(d.doubleValue()); }else{ monthOnMonthRate = "暂无"; } //计算同比 if(list3.size()>0) { BigDecimal e = divide((list1.size() - list3.size()) , list3.size(),4); //下面将结果转化成百分比 NumberFormat percent5 = NumberFormat.getPercentInstance(); percent5.setMaximumFractionDigits(2); yearOnYearRate = percent5.format(e.doubleValue()); }else{ yearOnYearRate = "暂无"; } resultMap.put("monthOnMonthRate", monthOnMonthRate); resultMap.put("yearOnYearRate", yearOnYearRate); return ApiResult.success("请求数据成功", resultMap); } catch (Exception e) { return ApiResult.error("异常"); } } /** * 除法(需要给定小数位数) * @param i1 操作数1 * @param i2 操作数2 * @return */ public static BigDecimal divide(int i1, int i2,int scale) { BigDecimal b1 = new BigDecimal(i1); BigDecimal b2 = new BigDecimal(i2); if(b1 == null) { return new BigDecimal(0); } if(b2 == null || equals(b2,new BigDecimal(0))){ throw new ArithmeticException("b2 is zero ! "); } return b1.divide(b2, scale, RoundingMode.DOWN); } /** * 等于 * @param b1 操作数1 * @param b2 操作数2 * @return 结果 */ public static boolean equals(BigDecimal b1, BigDecimal b2) { if (b1 == null) { b1 = new BigDecimal(0); } if (b2 == null) { b2 = new BigDecimal(0); } return b1.compareTo(b2) == 0; } /** * 获得近一周的开始时间和结束时间 * @return */ public static Map getDaySevenRange(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map condition=new HashMap(); Calendar calendar = Calendar.getInstance(); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); calendar.set(Calendar.HOUR_OF_DAY,24); condition.put("endTime",sdf.format(calendar.getTime())); calendar.set(Calendar.HOUR_OF_DAY,-168); condition.put("beginTime",sdf.format(calendar.getTime())); return condition; } /** * 获得近一月的开始时间和结束时间 * @return */ public static Map getMonthRange(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map condition=new HashMap(); Calendar calendar = Calendar.getInstance(); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); calendar.set(Calendar.HOUR_OF_DAY,24); condition.put("endTime",sdf.format(calendar.getTime())); calendar.add(Calendar.MONTH,-1); condition.put("beginTime",sdf.format(calendar.getTime())); return condition; } /** * 获得近一年的开始时间和结束时间 * @return */ public static Map getYearRange(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map condition=new HashMap(); Calendar calendar = Calendar.getInstance(); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); calendar.set(Calendar.HOUR_OF_DAY,24); condition.put("endTime",sdf.format(calendar.getTime())); calendar.add(Calendar.YEAR,-1); condition.put("beginTime",sdf.format(calendar.getTime())); return condition; } /** * 获取某个月月开始时间和结束时间 * year -1代表去年 * month -1代表上月,-2代表上上月 * @return */ public static Map getLastMonthTime(int year,int month) { Calendar c=Calendar.getInstance(); c.add(Calendar.YEAR, year); c.add(Calendar.MONTH, month); SimpleDateFormat sdfLast = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH); c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59); String endTimeStr = sdfLast.format(c.getTime()); //上月最后一天 SimpleDateFormat sdfFirst = new SimpleDateFormat("yyyy-MM-01 00:00:00"); String startTimeStr = sdfFirst.format(c.getTime()); //上月第一天 Map map = new HashMap(); map.put("beginTime", startTimeStr); map.put("endTime", endTimeStr); return map; } }