安全首页接口

This commit is contained in:
guoshengxiong 2024-05-13 15:28:13 +08:00
parent 094b1eae79
commit 6d24138445
7 changed files with 161 additions and 2 deletions

View File

@ -7,6 +7,8 @@ import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.redis.annotation.ApiIdempotent; import com.zhgd.redis.annotation.ApiIdempotent;
import com.zhgd.redis.lock.RedisRepository; import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.base.entity.vo.SectorVo;
import com.zhgd.xmgl.base.entity.vo.TrendVo;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.entity.vo.*; import com.zhgd.xmgl.modules.worker.entity.vo.*;
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
@ -150,6 +152,7 @@ public class WorkerInfoController {
@ApiImplicitParam(name = "presence", value = "1在场2离场", paramType = "body", required = false, dataType = "Integer"), @ApiImplicitParam(name = "presence", value = "1在场2离场", paramType = "body", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "attendance", value = "1今日出勤", paramType = "body", required = false, dataType = "Integer"), @ApiImplicitParam(name = "attendance", value = "1今日出勤", paramType = "body", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "isFilterQualityRegionEnterprise", value = "是否查询过滤区域管理下的企业1是", paramType = "body", required = false, dataType = "Integer"), @ApiImplicitParam(name = "isFilterQualityRegionEnterprise", value = "是否查询过滤区域管理下的企业1是", paramType = "body", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "letter", value = "首字母", paramType = "body", required = false, dataType = "String"),
}) })
@PostMapping(value = "/selectWorkerInfoList") @PostMapping(value = "/selectWorkerInfoList")
public Result<IPage<WorkerInfo>> selectWorkerInfoList(@RequestBody Map<String, Object> map) { public Result<IPage<WorkerInfo>> selectWorkerInfoList(@RequestBody Map<String, Object> map) {
@ -663,11 +666,40 @@ public class WorkerInfoController {
@ApiOperation(value = "根据身份证号查询劳务人员", notes = "根据身份证号查询劳务人员", httpMethod = "POST") @ApiOperation(value = "根据身份证号查询劳务人员", notes = "根据身份证号查询劳务人员", httpMethod = "POST")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "idCard", value = "身份证号", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "idCard", value = "身份证号", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "projectSn", value = "projectSn", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = false, dataType = "String"),
}) })
@PostMapping(value = "/selectWorkerInfoByIdCard") @PostMapping(value = "/selectWorkerInfoByIdCard")
public Result<WorkerInfo> selectWorkerInfoByIdCard(@RequestBody Map<String, Object> map) { public Result<WorkerInfo> selectWorkerInfoByIdCard(@RequestBody Map<String, Object> map) {
return Result.success(workerInfoService.selectWorkerInfoByIdCard(map)); return Result.success(workerInfoService.selectWorkerInfoByIdCard(map));
} }
@ApiOperation(value = "人员风险概览", notes = "人员风险概览", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/statsSafeScore")
public Result<SectorVo> statsSafeScore(@RequestBody Map<String, Object> map) {
return Result.success(workerInfoService.statsSector(map));
}
@ApiOperation(value = "企业安全评分汇总", notes = "企业安全评分汇总", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/statsEnterprise")
public Result<SectorVo> statsEnterprise(@RequestBody Map<String, Object> map) {
return Result.success(workerInfoService.statsEnterprise(map));
}
@ApiOperation(value = "企业安全评分汇总表", notes = "企业安全评分汇总表", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/statsEnterpriseRisk")
public Result<List<StatsTrendVo>> statsEnterpriseRisk(@RequestBody Map<String, Object> map) {
return Result.success(workerInfoService.statsEnterpriseRisk(map));
}
} }

View File

@ -337,7 +337,7 @@ public class WorkerInfo implements Serializable {
private Integer devType; private Integer devType;
@ApiModelProperty(value = "门禁设备-分组id") @ApiModelProperty(value = "门禁设备-分组id")
private String ufaceDevGroupId; private String ufaceDevGroupId;
@ApiModelProperty(value = "安全分数") @ApiModelProperty(value = "安全分数,低中高-80-90-")
private Double safeScore; private Double safeScore;
@ApiModelProperty(value = "下发状态1成功2失败3部分成功") @ApiModelProperty(value = "下发状态1成功2失败3部分成功")
private Integer sendSuccessStatus; private Integer sendSuccessStatus;

View File

@ -0,0 +1,19 @@
package com.zhgd.xmgl.modules.worker.entity.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StatsTrendVo {
@ApiModelProperty("人数")
private Integer workerNum;
@ApiModelProperty("高风险数量")
private Integer highRiskNum;
@ApiModelProperty("中风险数量")
private Integer mediumRiskNum;
@ApiModelProperty("低风险数量")
private Integer lowRiskNum;
}

View File

@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.annotation.DataScope; import com.zhgd.annotation.DataScope;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.base.entity.vo.SectorOneVo;
import com.zhgd.xmgl.base.entity.vo.SectorVo;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.entity.vo.*; import com.zhgd.xmgl.modules.worker.entity.vo.*;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -238,4 +240,11 @@ public interface WorkerInfoMapper extends BaseMapper<WorkerInfo> {
void updateScore(HashMap<String, Object> map); void updateScore(HashMap<String, Object> map);
List<StatsTrendVo> stats(@Param("param") Map<String, Object> map);
List<SectorOneVo> statsSector(@Param("param") Map<String, Object> map);
List<SectorOneVo> statsEnterprise(@Param("param") Map<String, Object> map);
List<StatsTrendVo> statsEnterpriseRisk(@Param("param") Map<String, Object> map);
} }

View File

@ -192,6 +192,9 @@
<if test="param.selectType == '12'.toString()"> <if test="param.selectType == '12'.toString()">
and a.vaccine_status = 3 and a.vaccine_status = 3
</if> </if>
<if test="param.letter != null and param.letter != ''">
and pinyin(a.worker_name) like concat(#{param.letter},'%')
</if>
<if test="param.workerInfos != null and param.workerInfos != ''"> <if test="param.workerInfos != null and param.workerInfos != ''">
and FIND_IN_SET(a.id, #{param.workerInfos}) and FIND_IN_SET(a.id, #{param.workerInfos})
</if> </if>
@ -2445,4 +2448,75 @@
<update id="updateScore"> <update id="updateScore">
update worker_info set safe_score = safe_score - #{deductScore} where id = #{id} update worker_info set safe_score = safe_score - #{deductScore} where id = #{id}
</update> </update>
<select id="stats" resultType="com.zhgd.xmgl.modules.worker.entity.vo.StatsTrendVo">
select
<choose>
<when test="param.groupby == 'safeScore'.toString()">
CASE WHEN t.safe_score &lt; 80 THEN '高风险' When t.safe_score >= 80 and t.safe_score &lt; 90 then '中风险'
ELSE '低风险' END as name,
count(*) as count,
</when>
<when test="param.groupby == 'enterprise'.toString()">
ei.enterprise_name as name,
avg(t.safe_score) as count,
</when>
<when test="param.groupby == 'enterprise_safeScore'.toString()">
</when>
<otherwise>
</otherwise>
</choose>
1
from worker_info t
left join enterprise_info ei on ei.id=t.enterprise_id
where t.project_sn=#{param.projectSn}
<choose>
<when test="param.groupby == 'safeScore'.toString()">
group by name
</when>
<when test="param.groupby == 'enterprise'.toString()">
group by t.enterprise_id
</when>
<when test="param.groupby == 'enterprise_safeScore'.toString()">
group by t.enterprise_id
</when>
<otherwise>
</otherwise>
</choose>
</select>
<select id="statsSector" resultType="com.zhgd.xmgl.base.entity.vo.SectorOneVo">
select
CASE WHEN t.safe_score &lt; 80 THEN '高风险' When t.safe_score >= 80 and t.safe_score &lt; 90 then '中风险' ELSE '低风险'
END as name,
count(*) as count
from worker_info t
where t.project_sn=#{param.projectSn}
group by name
</select>
<select id="statsEnterprise" resultType="com.zhgd.xmgl.base.entity.vo.SectorOneVo">
select
ei.enterprise_name as name,
avg(t.safe_score) as count
from worker_info t
join enterprise_info ei on ei.id=t.enterprise_id
where t.project_sn=#{param.projectSn}
group by t.enterprise_id
</select>
<select id="statsEnterpriseRisk" resultType="com.zhgd.xmgl.modules.worker.entity.vo.StatsTrendVo">
select
ei.enterprise_name as name,
CASE WHEN t.safe_score &lt; 80 THEN '高风险' When t.safe_score >= 80 and t.safe_score &lt; 90 then '中风险' ELSE '低风险'
END as name,
ifnull(round(sum(if(t.safe_score &lt; 80,1,0)),2),0) as highRiskNum,
ifnull(round(sum(if(t.safe_score >= 80 and t.safe_score &lt; 90,1,0)),2),0) as mediumRiskNum,
ifnull(round(sum(if(t.safe_score >= 90,1,0)),2),0) as lowRiskNum,
count(*) as workerNum
from worker_info t
join enterprise_info ei on ei.id=t.enterprise_id
where t.project_sn=#{param.projectSn}
group by t.enterprise_id
</select>
</mapper> </mapper>

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.base.entity.vo.SectorVo;
import com.zhgd.xmgl.base.entity.vo.TrendVo;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.entity.dto.GetWorkerInfoByDevDto; import com.zhgd.xmgl.modules.worker.entity.dto.GetWorkerInfoByDevDto;
import com.zhgd.xmgl.modules.worker.entity.vo.*; import com.zhgd.xmgl.modules.worker.entity.vo.*;
@ -133,4 +135,9 @@ public interface IWorkerInfoService extends IService<WorkerInfo> {
WorkerInfo selectWorkerInfoByIdCard(Map<String, Object> map); WorkerInfo selectWorkerInfoByIdCard(Map<String, Object> map);
SectorVo statsSector(Map<String, Object> map);
SectorVo statsEnterprise(Map<String, Object> map);
List<StatsTrendVo> statsEnterpriseRisk(Map<String, Object> map);
} }

View File

@ -24,6 +24,9 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncJiLianDa; import com.zhgd.xmgl.async.AsyncJiLianDa;
import com.zhgd.xmgl.async.AsyncWorker; import com.zhgd.xmgl.async.AsyncWorker;
import com.zhgd.xmgl.base.entity.vo.SectorOneVo;
import com.zhgd.xmgl.base.entity.vo.SectorVo;
import com.zhgd.xmgl.base.entity.vo.TrendVo;
import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.modules.basicdata.entity.Company; import com.zhgd.xmgl.modules.basicdata.entity.Company;
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
@ -2124,6 +2127,21 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
return workerInfos.get(0); return workerInfos.get(0);
} }
@Override
public SectorVo statsSector(Map<String, Object> map) {
return SectorVo.getSectorVo(baseMapper.statsSector(map));
}
@Override
public SectorVo statsEnterprise(Map<String, Object> map) {
return SectorVo.getSectorVo(baseMapper.statsEnterprise(map));
}
@Override
public List<StatsTrendVo> statsEnterpriseRisk(Map<String, Object> map) {
return baseMapper.statsEnterpriseRisk(map);
}
/** /**
* 真正递归的方法 * 真正递归的方法
* *