diff --git a/src/main/java/com/zhgd/mybatis/DataScopeHandler.java b/src/main/java/com/zhgd/mybatis/DataScopeHandler.java index 2f3b81fc2..1468153f9 100644 --- a/src/main/java/com/zhgd/mybatis/DataScopeHandler.java +++ b/src/main/java/com/zhgd/mybatis/DataScopeHandler.java @@ -202,6 +202,27 @@ public class DataScopeHandler implements DataPermissionHandler { } } + //解析ai视频预警 + List filterAis = getNeedFilterLeftExpression(plainSelect, getFieldAiTables(), ds, true); + if (CollUtil.isNotEmpty(filterAis)) { + List videoItems = aiAnalyseHardWareRecordService.getAiAnalyseHardIdsByEnterpriseId(id); + if (CollUtil.isEmpty(videoItems)) { + videoItems.add("0"); + } + videoItems = videoItems.stream().map(s -> "'" + s + "'").collect(Collectors.toList()); + for (String filterAi : filterAis) { + String sql = StrUtil.format(" ({}.hardware_id in ({}) OR ({}.quality_region_id in (select distinct quality_region_id from quality_region_to_user where user_id = {}))) ", + filterAi, StrUtil.join(",", videoItems), filterAi, SecurityUtils.getUser().getUserId()); + Expression expression = null; + try { + expression = CCJSqlParserUtil.parseCondExpression(sql); + expressions.add(expression); + } catch (JSQLParserException e) { + log.error(e.getMessage(), e); + } + } + } + } if (expressions.size() > 0) { Expression dataExpression; diff --git a/src/main/java/com/zhgd/xmgl/modules/quality/controller/QualityInspectionRecordController.java b/src/main/java/com/zhgd/xmgl/modules/quality/controller/QualityInspectionRecordController.java index 9e8562d13..1fc343adf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/quality/controller/QualityInspectionRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/quality/controller/QualityInspectionRecordController.java @@ -62,7 +62,7 @@ public class QualityInspectionRecordController { @ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "regionId", value = "检查部位ID", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "itemId", value = "子任务ID", paramType = "body", required = false, dataType = "String"), - @ApiImplicitParam(name = "status", value = "状态,1无需整改,2待整改,3待复查,4待核验,5合格,6不合格,7超期未关闭", paramType = "body", required = false, dataType = "String"), + @ApiImplicitParam(name = "status", value = "状态,1无需整改,2待整改,3待复查,4待核验,5合格,60未合格,7超期未关闭", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "recordStatus", value = "查询类型,1排查记录,2已闭合,3未闭合,4超期未关闭,5待整改,6待复查,7待核验", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "urgentLevel", value = "紧急程度,1一般,2严重,3紧要", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "level", value = "问题等级,1一级,2二级,3三级,4四级", paramType = "body", required = false, dataType = "String"), diff --git a/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml index fb7067cba..1d25429dc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/quality/mapper/xml/QualityInspectionRecordMapper.xml @@ -301,13 +301,16 @@ and a.level = #{param.level} - + and a.status = #{param.status} and a.change_limit_time current_date and a.status != 5 + + and a.status != 5 and a.status != 6 + and a.urgent_level = #{param.urgentLevel} diff --git a/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareRecordMapper.java index 7d7b53e9c..ed2cd0b31 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareRecordMapper.java @@ -17,6 +17,8 @@ public interface AiAnalyseHardWareRecordMapper extends BaseMapper getAiAnalyseHardIdsByUserId(Long userId); + List getAiAnalyseHardIdsByEnterpriseId(Long enterpriseId); + List getUserIdsByAiAnalyseHardId(String aiAnalyseHardId); List getUserIdsByQualityRegionId(String qualityRegionId); diff --git a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareRecordMapper.xml index 8932b9901..d0cd688de 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareRecordMapper.xml @@ -8,6 +8,15 @@ join quality_region_to_user qrtu on qrtaah.quality_region_id = qrtu.quality_region_id where qrtu.user_id = #{userId} + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/IEnterpriseInfoService.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/IEnterpriseInfoService.java index da19d63cd..821df2a38 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/IEnterpriseInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/IEnterpriseInfoService.java @@ -9,6 +9,7 @@ import com.zhgd.xmgl.base.CompanyVo; import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo; import com.baomidou.mybatisplus.extension.service.IService; import com.zhgd.xmgl.modules.worker.entity.SjEnterpriseInfo; +import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo; import java.util.HashMap; import java.util.List; @@ -58,4 +59,8 @@ public interface IEnterpriseInfoService extends IService { Page countSupplier(Map paramMap); List getEnterpriseInfoByRegionId(Long id); + + EnterpriseInfo getXzSupplierInfo(Map param); + + StatsEnterpriseWeekVo statsEnterpriseWeek(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java index 8d78993cb..5f4ad427b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java @@ -168,4 +168,5 @@ public interface IWorkerInfoService extends IService { void deleteBatch(String ids); + double getAvgSafeScore(String enterpriseId, String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java index b4f981ca9..6d14b0d76 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java @@ -1,38 +1,51 @@ package com.zhgd.xmgl.modules.worker.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.mybatis.EntityMap; +import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncJiLianDa; import com.zhgd.xmgl.async.AsyncWorker; import com.zhgd.xmgl.base.CompanyVo; import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; import com.zhgd.xmgl.modules.basicdata.service.impl.CompanyServiceImpl; +import com.zhgd.xmgl.modules.exam.entity.ExamTrain; +import com.zhgd.xmgl.modules.exam.entity.ExamTrainRecord; +import com.zhgd.xmgl.modules.exam.mapper.ExamTrainMapper; +import com.zhgd.xmgl.modules.exam.service.IExamTrainRecordService; +import com.zhgd.xmgl.modules.exam.service.IExamTrainService; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise; import com.zhgd.xmgl.modules.project.entity.XzUserToSupplier; import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; import com.zhgd.xmgl.modules.project.service.impl.ProjectEnterpriseServiceImpl; -import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo; -import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo; -import com.zhgd.xmgl.modules.worker.entity.SjEnterpriseInfo; -import com.zhgd.xmgl.modules.worker.entity.TeamInfo; +import com.zhgd.xmgl.modules.quality.entity.QualityInspectionRecord; +import com.zhgd.xmgl.modules.quality.service.IQualityInspectionRecordService; +import com.zhgd.xmgl.modules.worker.entity.*; +import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo; import com.zhgd.xmgl.modules.worker.mapper.DepartmentInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.TeamInfoMapper; import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService; import com.zhgd.xmgl.modules.worker.service.IUserEnterpriseService; +import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; +import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord; +import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityQualityInspectionRecordService; import com.zhgd.xmgl.modules.xz.service.impl.XzSupplierQualificationApplyServiceImpl; +import com.zhgd.xmgl.modules.xz.special.entity.*; +import com.zhgd.xmgl.modules.xz.special.service.*; import com.zhgd.xmgl.security.entity.UserInfo; import com.zhgd.xmgl.security.util.SecurityUtils; import com.zhgd.xmgl.util.ListUtils; @@ -45,7 +58,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @Description: 劳务公司 @@ -60,6 +76,30 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl getEnterpriseInfoList(Map map) { @@ -484,6 +528,130 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl param) { + Long userId = SecurityUtils.getUser().getUserId(); + return baseMapper.getXzSupplierByUserId(userId); + } + + @Override + public StatsEnterpriseWeekVo statsEnterpriseWeek(Map param) { + StatsEnterpriseWeekVo vo = new StatsEnterpriseWeekVo(); + String enterpriseId = MapUtils.getString(param, "enterpriseId"); + String projectSn = MapUtils.getString(param, "projectSn"); + String beginOfWeek = DateUtil.formatDateTime(DateUtil.beginOfWeek(new Date())); + Integer inServiceNum = workerInfoService.count(new LambdaQueryWrapper() + .eq(WorkerInfo::getProjectSn, projectSn) + .eq(WorkerInfo::getEnterpriseId, enterpriseId) + .eq(WorkerInfo::getInserviceType, 1)); + vo.setInServiceNum(inServiceNum); + int securityNum = xzSecurityQualityInspectionRecordService.count(new LambdaQueryWrapper() + .eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn) + .eq(XzSecurityQualityInspectionRecord::getEnterpriseId, enterpriseId) + .ge(XzSecurityQualityInspectionRecord::getInspectTime, beginOfWeek) + ); + vo.setSecurityNum(securityNum); + int qualityNum = qualityInspectionRecordService.count(new LambdaQueryWrapper() + .eq(QualityInspectionRecord::getProjectSn, projectSn) + .eq(QualityInspectionRecord::getEnterpriseId, enterpriseId) + .ge(QualityInspectionRecord::getInspectTime, beginOfWeek) + ); + vo.setQualityNum(qualityNum); + int specialNum = countSpecialNumThisWeek(enterpriseId, projectSn, beginOfWeek); + double notPassRadio = getTrainNotPassRadio(enterpriseId, projectSn, beginOfWeek); + vo.setTrainNotPassRadio(notPassRadio); + vo.setSpecialNum(specialNum); + double safeScore = workerInfoService.getAvgSafeScore(enterpriseId, projectSn); + vo.setSafeScore(safeScore); + vo.setNum(0); + return vo; + } + + private double getTrainNotPassRadio(String enterpriseId, String projectSn, String beginOfWeek) { + QueryWrapper wrapper = QueryGenerator.initPageQueryWrapper(ExamTrain.class, new HashMap<>()); + Set trainIds = examTrainRecordService.list().stream().map(e -> e.getTrainId()).collect(Collectors.toSet()); + if (trainIds.size() == 0) { + return 0; + } + wrapper.lambda().in(ExamTrain::getId, trainIds); + Page examTrainPage = examTrainMapper.pageList(new Page(1, -1), wrapper); + List ids = examTrainPage.getRecords().stream().map(e -> e.getId()).collect(Collectors.toList()); + BigDecimal sum = new BigDecimal(0); + BigDecimal count = new BigDecimal(0); + if (ids.size() > 0) { + List examTrainRecordList = examTrainRecordService.list(Wrappers.lambdaQuery().in(ExamTrainRecord::getTrainId, ids) + .eq(ExamTrainRecord::getProjectSn, projectSn) + .eq(ExamTrainRecord::getEnterpriseId, enterpriseId) + .ge(ExamTrainRecord::getCreateTime, beginOfWeek) + ); + for (ExamTrain record : examTrainPage.getRecords()) { + if (record.getExamPaperId() != null) { + List trainRecordList = examTrainRecordList.stream().filter(e -> e.getTrainId().toString().equals(record.getId().toString())).collect(Collectors.toList()); + if (trainRecordList.size() > 0) { + int pass = trainRecordList.stream().filter(t -> t.getIsPass() == 1).collect(Collectors.toList()).size(); + record.setPassRadio(new BigDecimal(pass).divide(new BigDecimal(trainRecordList.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); + sum.add(BigDecimal.valueOf(100).subtract(record.getPassRadio())); + count.add(new BigDecimal(1)); + } + } + } + } + return sum.divide(count, 2, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + private int countSpecialNumThisWeek(String enterpriseId, String projectSn, String beginOfWeek) { + String endOfWeek = DateUtil.formatDateTime(DateUtil.endOfWeek(new Date())); + int n1 = xzBlindPlatePlugSafeService.count(new LambdaQueryWrapper() + .eq(XzBlindPlatePlugSafe::getProjectSn, projectSn) + .eq(XzBlindPlatePlugSafe::getJobApplicationUnit, enterpriseId) + .le(XzBlindPlatePlugSafe::getWorkExecutionBeginTime, endOfWeek) + .ge(XzBlindPlatePlugSafe::getWorkExecutionEndTime, beginOfWeek) + ); + int n2 = iXzGroundSafetService.count(new LambdaQueryWrapper() + .eq(XzGroundSafet::getProjectSn, projectSn) + .eq(XzGroundSafet::getJobApplicationUnit, enterpriseId) + .le(XzGroundSafet::getWorkExecutionBeginTime, endOfWeek) + .ge(XzGroundSafet::getWorkExecutionEndTime, beginOfWeek) + ); + int n3 = iXzHighJobSafeService.count(new LambdaQueryWrapper() + .eq(XzHighJobSafe::getProjectSn, projectSn) + .eq(XzHighJobSafe::getJobApplicationUnit, enterpriseId) + .le(XzHighJobSafe::getWorkExecutionBeginTime, endOfWeek) + .ge(XzHighJobSafe::getWorkExecutionEndTime, beginOfWeek) + ); + int n4 = iXzHoistSafetyWorkService.count(new LambdaQueryWrapper() + .eq(XzHoistSafetyWork::getProjectSn, projectSn) + .eq(XzHoistSafetyWork::getJobApplicationUnit, enterpriseId) + .le(XzHoistSafetyWork::getWorkExecutionBeginTime, endOfWeek) + .ge(XzHoistSafetyWork::getWorkExecutionEndTime, beginOfWeek) + ); + int n5 = iXzLimitSpaceSafeService.count(new LambdaQueryWrapper() + .eq(XzLimitSpaceSafe::getProjectSn, projectSn) + .eq(XzLimitSpaceSafe::getJobApplicationUnit, enterpriseId) + .le(XzLimitSpaceSafe::getWorkExecutionBeginTime, endOfWeek) + .ge(XzLimitSpaceSafe::getWorkExecutionEndTime, beginOfWeek) + ); + int n6 = iXzOpenCircuitSafeService.count(new LambdaQueryWrapper() + .eq(XzOpenCircuitSafe::getProjectSn, projectSn) + .eq(XzOpenCircuitSafe::getJobApplicationUnit, enterpriseId) + .le(XzOpenCircuitSafe::getWorkExecutionBeginTime, endOfWeek) + .ge(XzOpenCircuitSafe::getWorkExecutionEndTime, beginOfWeek) + ); + int n7 = iXzSpecialOperationFireSafetyService.count(new LambdaQueryWrapper() + .eq(XzSpecialOperationFireSafety::getProjectSn, projectSn) + .eq(XzSpecialOperationFireSafety::getJobApplicationUnit, enterpriseId) + .le(XzSpecialOperationFireSafety::getHotWorkExecutionBeginTime, endOfWeek) + .ge(XzSpecialOperationFireSafety::getHotWorkExecutionEndTime, beginOfWeek) + ); + int n8 = xzTemporaryElectricitySafeService.count(new LambdaQueryWrapper() + .eq(XzTemporaryElectricitySafe::getProjectSn, projectSn) + .eq(XzTemporaryElectricitySafe::getJobApplicationUnit, enterpriseId) + .le(XzTemporaryElectricitySafe::getWorkExecutionBeginTime, endOfWeek) + .ge(XzTemporaryElectricitySafe::getWorkExecutionEndTime, beginOfWeek) + ); + return n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8; + } + private EnterpriseInfo getEnterpriseInfo(SjEnterpriseInfo e, String projectSn) { EnterpriseInfo enterpriseInfo = new EnterpriseInfo(); enterpriseInfo.setId(e.getId()); diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 50d8293b6..8922f188b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -2548,4 +2548,9 @@ public class WorkerInfoServiceImpl extends ServiceImpl