中水北方修改

This commit is contained in:
pengjie 2025-07-05 11:20:58 +08:00
parent ce8752b742
commit 3d34bd6dc1
7 changed files with 67 additions and 14 deletions

View File

@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException;
@ -13,6 +14,8 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.entity.vo.AttendanceOfEachCompanyVo;
import com.zhgd.xmgl.entity.vo.NumberTimeTableVo;
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
import com.zhgd.xmgl.modules.quality.entity.QualityRegionToUfaceDev;
import com.zhgd.xmgl.modules.quality.service.IQualityRegionToUfaceDevService;
import com.zhgd.xmgl.modules.worker.entity.MockWorkerAttendanceConfig;
import com.zhgd.xmgl.modules.worker.entity.UfaceDev;
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
@ -67,6 +70,9 @@ public class WorkerAttendanceController {
@Resource
private IUfaceDevService ufaceDevService;
@Lazy
@Resource
private IQualityRegionToUfaceDevService qualityRegionToUfaceDevService;
@Lazy
@Autowired
private IWorkerInfoService workerInfoService;
@Lazy
@ -219,10 +225,23 @@ public class WorkerAttendanceController {
@ApiImplicitParam(name = "devSn", value = "设备sn", dataType = "String", paramType = "body", required = false),
@ApiImplicitParam(name = "cardType", value = "卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作(辅助考勤)5二维码6蓝牙,7手机打卡,8车辆通行,9身份证", dataType = "Integer", paramType = "body", required = false),
@ApiImplicitParam(name = "isMock", value = "1是模拟数据", dataType = "Integer", paramType = "body", required = false),
@ApiImplicitParam(name = "regionId", value = "区域ID", dataType = "Integer", paramType = "body", required = false),
})
@PostMapping(value = "/reissueAttendanceCard")
public Result reissueAttendanceCard(@RequestBody Map<String, Object> map) {
UfaceDev ufaceDev = ufaceDevService.getOne(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getDevSn, MapUtils.getString(map, "devSn")));
String devSn = MapUtils.getString(map, "devSn");
String regionId = MapUtils.getString(map, "regionId");
if (devSn == null && regionId != null) {
List<Long> devIds = qualityRegionToUfaceDevService.list(Wrappers.<QualityRegionToUfaceDev>lambdaQuery()
.eq(QualityRegionToUfaceDev::getQualityRegionId, regionId)).stream().map(q -> q.getUfaceDevId()).collect(Collectors.toList());
List<UfaceDev> list = ufaceDevService.list(Wrappers.<UfaceDev>lambdaQuery().in(UfaceDev::getId, devIds)
.eq(UfaceDev::getIsOut, 1));
if (list.size() > 0) {
devSn = list.get(0).getDevSn();
map.put("devSn", devSn);
}
}
UfaceDev ufaceDev = ufaceDevService.getOne(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getDevSn, devSn));
if (ufaceDev != null) {
map.put("passagewayName", ufaceDev.getDevName());
}

View File

@ -413,6 +413,10 @@ public class WorkerInfo implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "动火证编号")
private String fireCertificate;
@TableField(exist = false)
@ApiModelProperty(value = "中水北方进入超24小时未出进行人员预警信息")
private String alarmFlag;
/**
* 通知的人员id
*/

View File

@ -43,7 +43,7 @@ public interface WorkerAttendancePresenceMapper extends BaseMapper<WorkerAttenda
*
* @return
*/
List<Long> getPresentWorkerIdListByRegion(@Param("regionId") Long regionId);
List<Map<String, Object>> getPresentWorkerIdListByRegion(@Param("regionId") Long regionId);
/**
* 查询一段时间的在场人数趋势

View File

@ -37,7 +37,8 @@
qr.id,
qr.region_name as regionName,
qr.project_sn as projectSn,
COUNT(DISTINCT wap.person_sn) AS present
COUNT(DISTINCT wap.person_sn) AS present,
MIN(wap.create_time) as minTime
from
quality_region qr
join quality_region_to_uface_dev qrtud on qr.id = qrtud.quality_region_id
@ -55,9 +56,9 @@
GROUP BY qr.id
</select>
<select id="getPresentWorkerIdListByRegion" resultType="java.lang.Long">
<select id="getPresentWorkerIdListByRegion" resultType="java.util.Map">
SELECT
distinct wi.id
wi.id, MIN(wap.create_time) minTime
from
quality_region qr
join quality_region_to_uface_dev qrtud on qr.id = qrtud.quality_region_id
@ -73,6 +74,7 @@
join worker_attendance_presence wap on wap.person_sn = a.person_sn
join worker_info wi on wi.person_sn=a.person_sn
WHERE qr.id=#{regionId}
GROUP BY wi.id
</select>
<select id="queryPresentTrend" resultType="com.zhgd.xmgl.entity.vo.NumberTimeTableVo">

View File

@ -38,5 +38,5 @@ public interface IWorkerAttendancePresenceService extends IService<WorkerAttenda
List<Map<String, Object>> getPresentByRegion(Map<String, Object> paramMap);
List<Long> getPresentWorkerIdListByRegion(Long regionId);
List<Map<String, Object>> getPresentWorkerIdListByRegion(Long regionId);
}

View File

@ -1,5 +1,7 @@
package com.zhgd.xmgl.modules.worker.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -74,11 +76,20 @@ public class WorkerAttendancePresenceServiceImpl extends ServiceImpl<WorkerAtten
@Override
public List<Map<String, Object>> getPresentByRegion(Map<String, Object> paramMap) {
return workerAttendancePresenceMapper.getPresentByRegion(paramMap);
List<Map<String, Object>> presentByRegion = workerAttendancePresenceMapper.getPresentByRegion(paramMap);
for (Map<String, Object> map : presentByRegion) {
Object minTime = map.get("minTime");
if (minTime != null) {
map.put("alarmFlag", DateUtil.between(DateUtil.parseDateTime(minTime.toString()), new Date(), DateUnit.HOUR) > 24 ? 1 : 0);
} else {
map.put("alarmFlag", 0);
}
}
return presentByRegion;
}
@Override
public List<Long> getPresentWorkerIdListByRegion(Long regionId) {
public List<Map<String, Object>> getPresentWorkerIdListByRegion(Long regionId) {
return workerAttendancePresenceMapper.getPresentWorkerIdListByRegion(regionId);
}

View File

@ -3,10 +3,7 @@ package com.zhgd.xmgl.modules.worker.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateRange;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.*;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.stream.StreamUtil;
@ -301,10 +298,20 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
@Override
public IPage<WorkerInfo> selectWorkerInfoList(Map<String, Object> map) {
String regionIdForUface = MapUtils.getString(map, "regionIdForUface");
List<Map<String, Object>> workerAttendList = new ArrayList<>();
if (StrUtil.isNotBlank(regionIdForUface)) {
List<Long> workerIds = workerAttendancePresenceService.getPresentWorkerIdListByRegion(Long.valueOf(regionIdForUface));
if (workerIds.size() == 0) {
workerAttendList = workerAttendancePresenceService.getPresentWorkerIdListByRegion(Long.valueOf(regionIdForUface));
for (Map<String, Object> param : workerAttendList) {
Object minTime = param.get("minTime");
if (minTime != null) {
param.put("enterHour", DateUtil.between(DateUtil.parseDateTime(minTime.toString()), new Date(), DateUnit.HOUR));
}
}
List<Long> workerIds = new ArrayList<>();
if (workerAttendList.size() == 0) {
workerIds.add(-100L);
} else {
workerIds = workerAttendList.stream().map(w -> Long.valueOf(w.get("id").toString())).collect(Collectors.toList());
}
map.put("workerInfos", StrUtil.join(",", workerIds));
}
@ -349,6 +356,16 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
}
}
}
if (StrUtil.isNotBlank(regionIdForUface)) {
for (WorkerInfo workerInfo : list) {
for (Map<String, Object> stringObjectMap : workerAttendList) {
if (workerInfo.getId().toString().equals(stringObjectMap.get("id").toString()) && stringObjectMap.get("enterHour") != null
&& Integer.valueOf(stringObjectMap.get("enterHour").toString()) > 24) {
workerInfo.setAlarmFlag("人员在场超过" + Integer.valueOf(stringObjectMap.get("enterHour").toString()) + "小时,请确认人员是否安全");
}
}
}
}
return page.setRecords(list);
}