弹弓人脸
This commit is contained in:
parent
1e0c93c0c7
commit
a76a022cfd
@ -1 +0,0 @@
|
||||
EWEPEPEOGMGTELIZJUGECKIUJDBCJTCNISGPBNHLJTJUBHEWGNAKGEGAIOHJDQAJGNCFDRFZJEDMJTGEDVIQGKEJIKACHIIXDEELIWCCEEELCVCEHFHAJGIPGIIKJRASJFEHAMIKCIGXAPGEHIIZGFBBJMFJJNGFHUGDGDFGFAITGDAXBGAZGKAMBMDABKBAERDUHDAUDOEBIBGBBMCUIZGABKCABIDMFHFRILIIANEBEWBOAIJHBYFAIREBFQFFCHHREKFTFJJQIAGFDSDZHMHUCGBVHIAUENBCJIBBJDIHHDIQFKFNDEBJCKCFGLJKBMHFAZHTHOIRGLJFDUHWEVFGFHDKIBEKFVCGAQJGCYBZAMHDJBJREAIOJPIAJDCJFXHKHPJTHUBTJPDWISESIEIPISDWDRAMFVFFBJCTFVFAARGJHFIMELIQJEAHFRFQDTERDCCGDCIKCAGBJVDLGHEXEBAWAMAFITJDANGBCRDPBPEECBAVAEBNJADGIPJAFWFJCYDZHFBFDHCMDCGNGTJTARACGRGOCDFWBPIRHKJACZAEHDJLGUFUGJDTHNJODDEBEVJLJUDDAAIJGNBPIQJOFNDHGKDQGOIBCWEGDBHDHDDBDPCFGLIBCRIPDSHECTAJBKGHGYAPDFJHFEDMCPAUHBDXAXEQCOEVCFDLGKAUASEZDAESETEUAJGHJFHLCTANBPDDCOGABTJJBBJHGLJPFMCQJOBTHPCNBMGFIPGNCHJSHOJGFQFSHGGUBVACADCHEDFDJHCKFEHBDIFJIUINCVJUDUENFHIUEFJFDBEPFHHGJAGLJGAOEMJNDYANAADPDODKGXFMHUCVHVCXGLCFHLFLETEZIWCTEFBRAOFFADEUIDFCGWDBCSAVDQJOANHKGHCSBFIBEACRITIEJGETGEJIAFDAIRJLHMEIBRCUIKDLBTHWHIEPHOGABGBBCCFFHKIECJJQHUDFHDITIQBQBCANARGIBPDUFTDHFKGOCMEEFHGXCTJVCOIXFUFDEAGZGNILISHSHKJGHQAEEAHLDWAWJADUGGELCKBACPAEINFSJHBQIFBVJHJICEAEGEFKBHCIHZCNJUJLIHGPFLILBRJTIYFUAZJVCPHPFQFYIDGZAUFXANHWBFJGJJHWFFBRCVBOCXJDIMBNBQJGJEFPGTAEDJFLHGITESAKCFBZBD
|
||||
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
||||
import com.zhgd.xmgl.modules.worker.entity.UfaceDev;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -45,14 +46,18 @@ public interface IProjectUfaceConfigService extends IService<ProjectUfaceConfig>
|
||||
void deleteWorkerInfo(WorkerInfo workerInfo);
|
||||
|
||||
/**
|
||||
*更新人员权限
|
||||
* 更新人员权限
|
||||
*
|
||||
* @param newWorkerInfo
|
||||
* @param oldWorkerInfo
|
||||
*/
|
||||
void updateWorkerInfo(WorkerInfo newWorkerInfo, WorkerInfo oldWorkerInfo);
|
||||
|
||||
Pair<String, String> getSendAndDeleteDevSns(WorkerInfo workerInfo);
|
||||
|
||||
/**
|
||||
*批量发送人员权限
|
||||
* 批量发送人员权限
|
||||
*
|
||||
* @param workerInfo
|
||||
* @param projectUfaceConfig
|
||||
* @param list
|
||||
|
||||
@ -12,7 +12,6 @@ import com.zhgd.xmgl.call.HikvisionCall;
|
||||
import com.zhgd.xmgl.constant.Cts;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
||||
import com.zhgd.xmgl.modules.project.enums.IscSendAuthModel;
|
||||
import com.zhgd.xmgl.modules.project.enums.ProjectUfaceConfigSupplierTypeEnum;
|
||||
import com.zhgd.xmgl.modules.project.enums.WorkerInfoDevTypeEnum;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectUfaceConfigMapper;
|
||||
@ -25,6 +24,7 @@ import com.zhgd.xmgl.modules.worker.mapper.UfaceDevToGroupMapper;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.UserDevAuthorityMapper;
|
||||
import com.zhgd.xmgl.modules.worker.service.IUfaceDevService;
|
||||
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
|
||||
import com.zhgd.xmgl.modules.worker.service.IDangongWorkerFaceStatusService;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
|
||||
import com.zhgd.xmgl.modules.xz.enums.XzHikvisionSyncOperateEnum;
|
||||
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
|
||||
@ -93,6 +93,9 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
@Lazy
|
||||
@Autowired
|
||||
private INoticeService noticeService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IDangongWorkerFaceStatusService dangongWorkerFaceStatusService;
|
||||
|
||||
@Override
|
||||
public void editProjectUfaceConfig(ProjectUfaceConfig projectUfaceConfig) {
|
||||
@ -223,6 +226,9 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
List<UfaceDev> ufaceDevs = ufaceDevService.getAllDevsByProjectSn(ufaceConfig.getProjectSn());
|
||||
this.deleteHkSyncRecordAndResetStatusForDev(workerInfo, ufaceDevs);
|
||||
this.buildAndSendOneWorkerForHk(ufaceDevs, workerInfo, 3, ufaceConfig.getProjectSn(), true);
|
||||
} else if (Objects.equals(ufaceConfig.getSupplierType(), SLINGSHOT.getCode())) {
|
||||
//保存弹弓下发状态
|
||||
dangongWorkerFaceStatusService.deleteStatus(workerInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -302,6 +308,9 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
if (hasDev) {
|
||||
HikvisionUfaceSDKUtil.addOrUpdatePerson(workerInfo, ufaceConfig, devBuilder.toString());
|
||||
}
|
||||
} else if (Objects.equals(ufaceConfig.getSupplierType(), SLINGSHOT.getCode())) {
|
||||
//保存弹弓下发状态
|
||||
dangongWorkerFaceStatusService.saveStatus(workerInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -314,15 +323,16 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
* @param workerInfo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Pair<String, String> getSendAndDeleteDevSns(WorkerInfo workerInfo) {
|
||||
//海康门禁isc
|
||||
String devSns = "";
|
||||
String notDevSns = "";
|
||||
List<UfaceDev> allDevs = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (NumberUtils.lt(workerInfo.getSafeScore(), PropertiesUtil.getWorkerInfoRedScore())) {
|
||||
//红码不能通行
|
||||
List<UfaceDev> allList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(allList)) {
|
||||
notDevSns = StrUtil.join(Cts.COMMA, allList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
if (CollUtil.isNotEmpty(allDevs)) {
|
||||
notDevSns = StrUtil.join(Cts.COMMA, allDevs.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
} else if (Objects.equals(workerInfo.getDevType(), WorkerInfoDevTypeEnum.GROUP.getCode())) {
|
||||
//设备分组情况
|
||||
@ -338,9 +348,8 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
}
|
||||
} else {
|
||||
//只删除
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(Cts.COMMA, notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
if (CollUtil.isNotEmpty(allDevs)) {
|
||||
notDevSns = StrUtil.join(Cts.COMMA, allDevs.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -357,9 +366,8 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
}
|
||||
} else {
|
||||
//只删除
|
||||
List<UfaceDev> notExistList = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>().eq(UfaceDev::getProjectSn, workerInfo.getProjectSn()));
|
||||
if (CollUtil.isNotEmpty(notExistList)) {
|
||||
notDevSns = StrUtil.join(Cts.COMMA, notExistList.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
if (CollUtil.isNotEmpty(allDevs)) {
|
||||
notDevSns = StrUtil.join(Cts.COMMA, allDevs.stream().map(UfaceDev::getDevSn).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -489,6 +497,9 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
||||
//海康门禁isc
|
||||
List<UfaceDev> list = ufaceDevService.getAllDevsByProjectSn(ufaceConfig.getProjectSn());
|
||||
this.buildAndSendOneWorkerForHk(list, workerInfo, 1, ufaceConfig.getProjectSn(), true);
|
||||
} else if (Objects.equals(ufaceConfig.getSupplierType(), SLINGSHOT.getCode())) {
|
||||
//保存弹弓下发状态
|
||||
dangongWorkerFaceStatusService.saveStatus(workerInfo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,127 @@
|
||||
package com.zhgd.xmgl.modules.worker.controller;
|
||||
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.xmgl.modules.worker.entity.DangongWorkerFaceStatus;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import com.zhgd.xmgl.modules.worker.service.IDangongWorkerFaceStatusService;
|
||||
|
||||
import org.simpleframework.xml.core.Validate;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
||||
/**
|
||||
* @Title: Controller
|
||||
* @Description: 弹弓人脸照片质量反馈
|
||||
* @author: pds
|
||||
* @date: 2025-03-10
|
||||
* @version: V1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/dangongWorkerFaceStatus")
|
||||
@Slf4j
|
||||
@Api(tags = "弹弓人脸照片质量反馈相关Api")
|
||||
public class DangongWorkerFaceStatusController {
|
||||
@Autowired
|
||||
private IDangongWorkerFaceStatusService dangongWorkerFaceStatusService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "弹弓人脸照片质量反馈管理", operType = "分页查询", operDesc = "分页列表查询弹弓人脸照片质量反馈信息")
|
||||
@ApiOperation(value = "分页列表查询弹弓人脸照片质量反馈信息", notes = "分页列表查询弹弓人脸照片质量反馈信息", httpMethod = "GET")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
|
||||
})
|
||||
@GetMapping(value = "/page")
|
||||
public Result<IPage<DangongWorkerFaceStatus>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
return Result.success(dangongWorkerFaceStatusService.queryPageList(param));
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "弹弓人脸照片质量反馈管理", operType = "列表查询", operDesc = "列表查询弹弓人脸照片质量反馈信息")
|
||||
@ApiOperation(value = "列表查询弹弓人脸照片质量反馈信息", notes = "列表查询弹弓人脸照片质量反馈信息", httpMethod = "GET")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<DangongWorkerFaceStatus>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
return Result.success(dangongWorkerFaceStatusService.queryList(param));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param dangongWorkerFaceStatus
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "弹弓人脸照片质量反馈管理", operType = "添加", operDesc = "添加弹弓人脸照片质量反馈信息")
|
||||
@ApiOperation(value = "添加弹弓人脸照片质量反馈信息", notes = "添加弹弓人脸照片质量反馈信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<DangongWorkerFaceStatus> add(@RequestBody @Validate DangongWorkerFaceStatus dangongWorkerFaceStatus) {
|
||||
dangongWorkerFaceStatusService.add(dangongWorkerFaceStatus);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param dangongWorkerFaceStatus
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "弹弓人脸照片质量反馈管理", operType = "编辑", operDesc = "编辑弹弓人脸照片质量反馈信息")
|
||||
@ApiOperation(value = "编辑弹弓人脸照片质量反馈信息", notes = "编辑弹弓人脸照片质量反馈信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<DangongWorkerFaceStatus> edit(@RequestBody DangongWorkerFaceStatus dangongWorkerFaceStatus) {
|
||||
dangongWorkerFaceStatusService.edit(dangongWorkerFaceStatus);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "弹弓人脸照片质量反馈管理", operType = "删除", operDesc = "删除弹弓人脸照片质量反馈信息")
|
||||
@ApiOperation(value = "删除弹弓人脸照片质量反馈信息", notes = "删除弹弓人脸照片质量反馈信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "id", value = "弹弓人脸照片质量反馈ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
|
||||
@PostMapping(value = "/delete")
|
||||
public Result<DangongWorkerFaceStatus> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
|
||||
dangongWorkerFaceStatusService.delete(MapUtils.getString(map, "id"));
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "弹弓人脸照片质量反馈管理", operType = "通过id查询", operDesc = "通过id查询弹弓人脸照片质量反馈信息")
|
||||
@ApiOperation(value = "通过id查询弹弓人脸照片质量反馈信息", notes = "通过id查询弹弓人脸照片质量反馈信息", httpMethod = "GET")
|
||||
@ApiImplicitParam(name = "id", value = "弹弓人脸照片质量反馈ID", paramType = "query", required = true, dataType = "Integer")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<DangongWorkerFaceStatus> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
return Result.success(dangongWorkerFaceStatusService.queryById(id));
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,30 +1,51 @@
|
||||
package com.zhgd.xmgl.modules.worker.controller;
|
||||
|
||||
import com.gexin.fastjson.JSON;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.xmgl.modules.worker.entity.DangongWorkerFaceStatus;
|
||||
import com.zhgd.xmgl.modules.worker.entity.UfaceDev;
|
||||
import com.zhgd.xmgl.modules.worker.entity.dto.GetWorkerInfoByDevDto;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.GetWorkerInfoByDevVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.vo.UploadAttendanceByDevDto;
|
||||
import com.zhgd.xmgl.modules.worker.service.IDangongWorkerFaceStatusService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IUfaceDevService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import java.util.HashMap;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping
|
||||
@Slf4j
|
||||
@Api(tags = "人脸设备对外api")
|
||||
public class UfaceDevApiController {
|
||||
@Lazy
|
||||
@Autowired
|
||||
IWorkerInfoService workerInfoService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
IWorkerAttendanceService workerAttendanceService;
|
||||
@Lazy
|
||||
@Resource
|
||||
private IUfaceDevService ufaceDevService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IDangongWorkerFaceStatusService dangongWorkerFaceStatusService;
|
||||
|
||||
@ApiOperation(value = "下载白名单(拉取允许通行人员信息)", notes = "下载白名单(拉取允许通行人员信息)", httpMethod = "GET")
|
||||
@GetMapping(value = "/workers")
|
||||
@ -40,6 +61,63 @@ public class UfaceDevApiController {
|
||||
return workerAttendanceService.uploadAttendanceByDev(dto);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "照片质量反馈", notes = "照片质量反馈", httpMethod = "POST")
|
||||
@PostMapping(value = "/quality")
|
||||
public String quality(@RequestBody HashMap<String, Object> param) {
|
||||
//只会返回有问题的图片
|
||||
log.info("照片质量反馈:{}", JSON.toJSONString(param));
|
||||
//productId string 是 产品id
|
||||
//deviceId string 是 设备编号
|
||||
//data object 是 数组
|
||||
//data.workerId string 是 系统中的人员编号
|
||||
//data.name string 是 人员
|
||||
//data.plat string 是 平台
|
||||
//data.msg string 是 信息
|
||||
//data.code string 是 错误号
|
||||
JSONArray data = JSON.parseArray(JSON.toJSONString(param.get("data")));
|
||||
String deviceId = MapUtils.getString(param, "deviceId");
|
||||
int count = ufaceDevService.count(new LambdaQueryWrapper<UfaceDev>()
|
||||
.eq(UfaceDev::getDevSn, deviceId));
|
||||
if (count == 0) {
|
||||
throw new OpenAlertException("设备" + deviceId + "在平台中不存在");
|
||||
}
|
||||
List<Map<String, Object>> workerIdObjs = new ArrayList<>();
|
||||
List<Long> workerIds = new ArrayList<>();
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
JSONObject data1 = data.getJSONObject(i);
|
||||
String workerId = data1.getString("workerId");
|
||||
dangongWorkerFaceStatusService.update(null, new LambdaUpdateWrapper<DangongWorkerFaceStatus>()
|
||||
.set(DangongWorkerFaceStatus::getMsg, data1.getString("msg"))
|
||||
.set(DangongWorkerFaceStatus::getDangongStatus, data1.getString("code"))
|
||||
.eq(DangongWorkerFaceStatus::getDevSn, deviceId)
|
||||
.eq(DangongWorkerFaceStatus::getWorkerId, workerId)
|
||||
);
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("workerId", workerId);
|
||||
workerIds.add(Long.valueOf(workerId));
|
||||
workerIdObjs.add(map);
|
||||
}
|
||||
dangongWorkerFaceStatusService.updateStatus(workerIds);
|
||||
GetWorkerInfoByDevVo vo = new GetWorkerInfoByDevVo();
|
||||
vo.setSuccess(true);
|
||||
vo.setCode(0);
|
||||
vo.setMessage("success");
|
||||
vo.setTime(System.currentTimeMillis() / 1000);
|
||||
vo.setData(workerIdObjs);
|
||||
vo.setEvent("quality");
|
||||
//{
|
||||
// "success": true,
|
||||
// "code": 0,
|
||||
// "message": "success",
|
||||
// "time": 1583137489, //单位s
|
||||
// "data": [{
|
||||
// "workerId": "121212"
|
||||
// }],
|
||||
// "event": "quality"
|
||||
//}
|
||||
return JSON.toJSONString(vo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "时间同步", notes = "时间同步", httpMethod = "POST")
|
||||
@GetMapping(value = "/init")
|
||||
public String init(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||
|
||||
@ -0,0 +1,69 @@
|
||||
package com.zhgd.xmgl.modules.worker.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @Description: 弹弓人脸照片质量反馈
|
||||
* @author: pds
|
||||
* @date: 2025-03-10
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("dangong_worker_face_status")
|
||||
@ApiModel(value = "DangongWorkerFaceStatus实体类", description = "DangongWorkerFaceStatus")
|
||||
public class DangongWorkerFaceStatus implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "id")
|
||||
private java.lang.Long id;
|
||||
/**
|
||||
* 所属项目SN
|
||||
*/
|
||||
@ApiModelProperty(value = "所属项目SN")
|
||||
private java.lang.String projectSn;
|
||||
/**
|
||||
* 设备唯一标识
|
||||
*/
|
||||
@ApiModelProperty(value = "设备唯一标识")
|
||||
private java.lang.String devSn;
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
@ApiModelProperty(value = "人员id")
|
||||
private java.lang.Long workerId;
|
||||
/**
|
||||
* 弹弓下发人员状态:0:成功,1:没有照片,2:入库失败,3:与 XXX 相似度高,4:下载失败,5:照片太大,6:其他
|
||||
*/
|
||||
@ApiModelProperty(value = "弹弓下发人员状态:0:成功,1:没有照片,2:入库失败,3:与 XXX 相似度高,4:下载失败,5:照片太大,6:其他")
|
||||
private java.lang.String dangongStatus;
|
||||
@ApiModelProperty(value = "消息")
|
||||
private java.lang.String msg;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private java.util.Date createDate;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private java.util.Date updateDate;
|
||||
@TableField(exist = false)
|
||||
private String devName;
|
||||
}
|
||||
@ -345,6 +345,9 @@ public class WorkerInfo implements Serializable {
|
||||
private Double exitSafeScore;
|
||||
@ApiModelProperty(value = "人员性质")
|
||||
private Integer workerNature;
|
||||
@ApiModelProperty(value = "弹弓下发人员状态:0:成功,1:没有照片,2:入库失败,3:与 XXX 相似度高,4:下载失败,5:照片太大,6:其他")
|
||||
private String dangongStatus;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "人员性质")
|
||||
private String workerNatureName;
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
package com.zhgd.xmgl.modules.worker.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.zhgd.xmgl.modules.worker.entity.DangongWorkerFaceStatus;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @Description: 弹弓人脸照片质量反馈
|
||||
* @author: pds
|
||||
* @date: 2025-03-10
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface DangongWorkerFaceStatusMapper extends BaseMapper<DangongWorkerFaceStatus> {
|
||||
|
||||
/**
|
||||
* 分页列表查询弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param page
|
||||
* @param queryWrapper
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
IPage<DangongWorkerFaceStatus> queryList(Page<DangongWorkerFaceStatus> page, @Param(Constants.WRAPPER) QueryWrapper<DangongWorkerFaceStatus> queryWrapper, @Param("param") HashMap<String, Object> param);
|
||||
|
||||
/**
|
||||
* 列表查询弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param queryWrapper
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
List<DangongWorkerFaceStatus> queryList(@Param(Constants.WRAPPER) QueryWrapper<DangongWorkerFaceStatus> queryWrapper, @Param("param") HashMap<String, Object> param);
|
||||
|
||||
|
||||
/**
|
||||
* 通过id查询弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
DangongWorkerFaceStatus queryById(String id);
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.worker.mapper.DangongWorkerFaceStatusMapper">
|
||||
<select id="queryList" resultType="com.zhgd.xmgl.modules.worker.entity.DangongWorkerFaceStatus">
|
||||
select * from (
|
||||
select t.*
|
||||
,ud.dev_name
|
||||
from dangong_worker_face_status t
|
||||
left join uface_dev ud on ud.dev_sn=t.dev_sn
|
||||
)t
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
<select id="queryById" resultType="com.zhgd.xmgl.modules.worker.entity.DangongWorkerFaceStatus">
|
||||
select * from (
|
||||
select t.*
|
||||
,ud.dev_name
|
||||
from dangong_worker_face_status t
|
||||
left join uface_dev ud on ud.dev_sn=t.dev_sn
|
||||
)t
|
||||
where t.id = #{id}
|
||||
</select>
|
||||
</mapper>
|
||||
@ -48,6 +48,9 @@
|
||||
and create_time>=current_date group by person_sn ) wa on wa.person_sn = a.person_sn
|
||||
</if>
|
||||
WHERE 1 = 1
|
||||
<if test="param.dangongStatus != null and param.dangongStatus != '' or param.dangongStatus == '0'.toString()">
|
||||
and a.dangong_status = #{param.dangongStatus}
|
||||
</if>
|
||||
<if test="param.safeScoreLevel == '1'.toString()">
|
||||
and a.safe_score < #{param.workerInfoRedScore}
|
||||
</if>
|
||||
|
||||
@ -0,0 +1,86 @@
|
||||
package com.zhgd.xmgl.modules.worker.service;
|
||||
|
||||
import com.zhgd.xmgl.modules.worker.entity.DangongWorkerFaceStatus;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 弹弓人脸照片质量反馈
|
||||
* @author: pds
|
||||
* @date: 2025-03-10
|
||||
* @version: V1.0
|
||||
*/
|
||||
public interface IDangongWorkerFaceStatusService extends IService<DangongWorkerFaceStatus> {
|
||||
/**
|
||||
* 分页列表查询弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param param 参数map
|
||||
* @return
|
||||
*/
|
||||
IPage<DangongWorkerFaceStatus> queryPageList(HashMap<String, Object> param);
|
||||
|
||||
/**
|
||||
* 列表查询弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param param 参数map
|
||||
* @return
|
||||
*/
|
||||
List<DangongWorkerFaceStatus> queryList(HashMap<String, Object> param);
|
||||
|
||||
/**
|
||||
* 添加弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param dangongWorkerFaceStatus 弹弓人脸照片质量反馈
|
||||
* @return
|
||||
*/
|
||||
void add(DangongWorkerFaceStatus dangongWorkerFaceStatus);
|
||||
|
||||
/**
|
||||
* 编辑弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param dangongWorkerFaceStatus 弹弓人脸照片质量反馈
|
||||
* @return
|
||||
*/
|
||||
void edit(DangongWorkerFaceStatus dangongWorkerFaceStatus);
|
||||
|
||||
/**
|
||||
* 根据id删除弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param id 弹弓人脸照片质量反馈的id
|
||||
* @return
|
||||
*/
|
||||
void delete(String id);
|
||||
|
||||
/**
|
||||
* 根据id查询弹弓人脸照片质量反馈信息
|
||||
*
|
||||
* @param id 弹弓人脸照片质量反馈的id
|
||||
* @return
|
||||
*/
|
||||
DangongWorkerFaceStatus queryById(String id);
|
||||
|
||||
/**
|
||||
* 保存人脸下发状态
|
||||
*
|
||||
* @param workerInfo
|
||||
*/
|
||||
void saveStatus(WorkerInfo workerInfo);
|
||||
|
||||
/**
|
||||
* 删除人脸下发状态
|
||||
*
|
||||
* @param workerInfo
|
||||
*/
|
||||
void deleteStatus(WorkerInfo workerInfo);
|
||||
|
||||
/**
|
||||
* 更新弹弓下发状态
|
||||
*
|
||||
* @param workerIds
|
||||
*/
|
||||
void updateStatus(List<Long> workerIds);
|
||||
}
|
||||
@ -0,0 +1,164 @@
|
||||
package com.zhgd.xmgl.modules.worker.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
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.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
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.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.DangongWorkerFaceStatus;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.DangongWorkerFaceStatusMapper;
|
||||
import com.zhgd.xmgl.modules.worker.service.IDangongWorkerFaceStatusService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 弹弓人脸照片质量反馈
|
||||
* @author: pds
|
||||
* @date: 2025-03-10
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Service
|
||||
public class DangongWorkerFaceStatusServiceImpl extends ServiceImpl<DangongWorkerFaceStatusMapper, DangongWorkerFaceStatus> implements IDangongWorkerFaceStatusService {
|
||||
@Autowired
|
||||
private DangongWorkerFaceStatusMapper dangongWorkerFaceStatusMapper;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IProjectUfaceConfigService projectUfaceConfigService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IWorkerInfoService workerInfoService;
|
||||
|
||||
@Override
|
||||
public IPage<DangongWorkerFaceStatus> queryPageList(HashMap<String, Object> param) {
|
||||
QueryWrapper<DangongWorkerFaceStatus> queryWrapper = this.getQueryWrapper(param);
|
||||
Page<DangongWorkerFaceStatus> page = PageUtil.getPage(param);
|
||||
IPage<DangongWorkerFaceStatus> pageList = baseMapper.queryList(page, queryWrapper, param);
|
||||
pageList.setRecords(this.dealList(pageList.getRecords()));
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DangongWorkerFaceStatus> queryList(HashMap<String, Object> param) {
|
||||
QueryWrapper<DangongWorkerFaceStatus> queryWrapper = getQueryWrapper(param);
|
||||
return dealList(baseMapper.queryList(queryWrapper, param));
|
||||
}
|
||||
|
||||
private QueryWrapper<DangongWorkerFaceStatus> getQueryWrapper(HashMap<String, Object> param) {
|
||||
QueryWrapper<DangongWorkerFaceStatus> queryWrapper = QueryGenerator.initPageQueryWrapper(DangongWorkerFaceStatus.class, param, true);
|
||||
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(DangongWorkerFaceStatus::getId));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private List<DangongWorkerFaceStatus> dealList(List<DangongWorkerFaceStatus> list) {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(DangongWorkerFaceStatus dangongWorkerFaceStatus) {
|
||||
dangongWorkerFaceStatus.setId(null);
|
||||
baseMapper.insert(dangongWorkerFaceStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(DangongWorkerFaceStatus dangongWorkerFaceStatus) {
|
||||
DangongWorkerFaceStatus oldDangongWorkerFaceStatus = baseMapper.selectById(dangongWorkerFaceStatus.getId());
|
||||
if (oldDangongWorkerFaceStatus == null) {
|
||||
throw new OpenAlertException("未找到对应实体");
|
||||
}
|
||||
baseMapper.updateById(dangongWorkerFaceStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
DangongWorkerFaceStatus dangongWorkerFaceStatus = baseMapper.selectById(id);
|
||||
if (dangongWorkerFaceStatus == null) {
|
||||
throw new OpenAlertException("未找到对应实体");
|
||||
}
|
||||
baseMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DangongWorkerFaceStatus queryById(String id) {
|
||||
DangongWorkerFaceStatus entity = baseMapper.queryById(id);
|
||||
if (entity == null) {
|
||||
throw new OpenAlertException("未找到对应实体");
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveStatus(WorkerInfo workerInfo) {
|
||||
//保存弹弓下发状态
|
||||
Pair<String, String> pair = projectUfaceConfigService.getSendAndDeleteDevSns(workerInfo);
|
||||
String devs = pair.getLeft();
|
||||
if (StrUtil.isNotEmpty(devs)) {
|
||||
this.remove(new LambdaQueryWrapper<DangongWorkerFaceStatus>()
|
||||
.eq(DangongWorkerFaceStatus::getWorkerId, workerInfo.getId()));
|
||||
for (String sn : StrUtil.split(devs, ",")) {
|
||||
DangongWorkerFaceStatus st = new DangongWorkerFaceStatus();
|
||||
st.setProjectSn(workerInfo.getProjectSn());
|
||||
st.setDevSn(sn);
|
||||
st.setWorkerId(workerInfo.getId());
|
||||
st.setDangongStatus(null);
|
||||
this.save(st);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteStatus(WorkerInfo workerInfo) {
|
||||
this.remove(new LambdaQueryWrapper<DangongWorkerFaceStatus>()
|
||||
.eq(DangongWorkerFaceStatus::getWorkerId, workerInfo.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatus(List<Long> workerIds) {
|
||||
Map<Long, List<DangongWorkerFaceStatus>> workerMap = this.list(new LambdaQueryWrapper<DangongWorkerFaceStatus>()
|
||||
.in(DangongWorkerFaceStatus::getWorkerId, workerIds)
|
||||
).stream().collect(Collectors.groupingBy(DangongWorkerFaceStatus::getWorkerId));
|
||||
for (Map.Entry<Long, List<DangongWorkerFaceStatus>> entry : workerMap.entrySet()) {
|
||||
List<DangongWorkerFaceStatus> statusList = entry.getValue();
|
||||
if (CollUtil.isEmpty(statusList)) {
|
||||
continue;
|
||||
}
|
||||
Integer sendSuccessStatus;
|
||||
for (DangongWorkerFaceStatus status : statusList) {
|
||||
//时间小于10分钟
|
||||
if (DateUtil.compare(status.getUpdateDate(), DateUtil.offsetMinute(new Date(), -10)) < 0) {
|
||||
status.setDangongStatus("0");
|
||||
status.setMsg("成功");
|
||||
this.updateById(status);
|
||||
}
|
||||
if (statusList.stream().allMatch(o -> Objects.equals(o.getDangongStatus(), "0"))) {
|
||||
sendSuccessStatus = 1;
|
||||
} else if (statusList.stream().allMatch(o -> o.getDangongStatus() == null)) {
|
||||
sendSuccessStatus = 4;
|
||||
} else if (statusList.stream().anyMatch(o -> Objects.equals(o.getDangongStatus(), "0"))) {
|
||||
sendSuccessStatus = 3;
|
||||
} else {
|
||||
sendSuccessStatus = 2;
|
||||
}
|
||||
workerInfoService.update(null, new LambdaUpdateWrapper<WorkerInfo>()
|
||||
.set(WorkerInfo::getSendSuccessStatus, sendSuccessStatus)
|
||||
.eq(WorkerInfo::getId, entry.getKey()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -306,6 +306,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
.antMatchers("/xmgl/smartBeamFieldMaintainData/**").permitAll()
|
||||
.antMatchers("/xmgl/smartBeamFieldMakeBeamPedestal/list").permitAll()
|
||||
.antMatchers("/xmgl/smartBeamFieldBeam/countSmartBeamFieldBeam").permitAll()
|
||||
.antMatchers("/quality").permitAll()
|
||||
.antMatchers("/workers").permitAll()
|
||||
.antMatchers("/photo").permitAll()
|
||||
.antMatchers("/init").permitAll()
|
||||
|
||||
@ -24,21 +24,17 @@ import com.zhgd.xmgl.modules.dangerous.entity.HiddenDangerInspectRecord;
|
||||
import com.zhgd.xmgl.modules.dangerous.service.IHiddenDangerInspectRecordService;
|
||||
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectExternalSystemService;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectExternalSystemServiceMapper;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerMonthAttendanceStatistics;
|
||||
import com.zhgd.xmgl.modules.worker.entity.*;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerBlacklistMapper;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerCertificateMapper;
|
||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerCertificateService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerMonthAttendanceStatisticsService;
|
||||
import com.zhgd.xmgl.modules.worker.service.*;
|
||||
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
|
||||
import com.zhgd.xmgl.modules.worker.service.IDangongWorkerFaceStatusService;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzCertificateExpireAlarmRecord;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzWorkerSafeWatchAlarm;
|
||||
import com.zhgd.xmgl.modules.xz.entity.XzWorkerSafeWatchConfig;
|
||||
@ -64,6 +60,7 @@ import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -136,6 +133,13 @@ public class WorkerTask {
|
||||
private IXzSecurityQualityInspectionRecordService qualityInspectionRecordService;
|
||||
@Resource
|
||||
private UploadFileService uploadFileService;
|
||||
@Lazy
|
||||
@Resource
|
||||
private IUfaceDevService ufaceDevService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IDangongWorkerFaceStatusService dangongWorkerFaceStatusService;
|
||||
|
||||
/**
|
||||
* 定时修改用户码状态
|
||||
*/
|
||||
@ -496,7 +500,7 @@ public class WorkerTask {
|
||||
noticeList.add(notice);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(userIds)) {
|
||||
String frameUserNames = systemUserService.getFrameUserNames(StrUtil.join(",", userIds))+ msg;
|
||||
String frameUserNames = systemUserService.getFrameUserNames(StrUtil.join(",", userIds)) + msg;
|
||||
for (SystemUser user : projectLevelUsers) {
|
||||
Notice notice = new Notice();
|
||||
notice.setType("35");
|
||||
@ -564,7 +568,7 @@ public class WorkerTask {
|
||||
notice.setSendTime(now);
|
||||
noticeList.add(notice);
|
||||
}
|
||||
String frameUserNames = systemUserService.getFrameUserNames(StrUtil.join(",", noticeUserIds))+ msg;
|
||||
String frameUserNames = systemUserService.getFrameUserNames(StrUtil.join(",", noticeUserIds)) + msg;
|
||||
for (SystemUser user : projectLevelUsers) {
|
||||
Notice notice = new Notice();
|
||||
notice.setType("35");
|
||||
@ -833,4 +837,29 @@ public class WorkerTask {
|
||||
map.put("faceUrl", url);
|
||||
workerAttendanceService.saveExternalPassRecord(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 弹弓下发状态,把超过一个小时没有接受到异常状态的人员的图片,标志成正常状态
|
||||
*/
|
||||
@Scheduled(cron = "0 0/10 * * * ?")
|
||||
@SchedulerLock(name = "updateDangongWorkerStatus", lockAtMostFor = 1000 * 55, lockAtLeastFor = 1000 * 55)
|
||||
@RequestMapping("updateDangongWorkerStatus")
|
||||
public void updateDangongWorkerStatus() {
|
||||
List<ProjectUfaceConfig> configs = projectUfaceConfigService.list(new LambdaQueryWrapper<ProjectUfaceConfig>()
|
||||
.eq(ProjectUfaceConfig::getSupplierType, 8));
|
||||
if (CollUtil.isNotEmpty(configs)) {
|
||||
List<String> sns = configs.stream().map(ProjectUfaceConfig::getProjectSn).collect(Collectors.toList());
|
||||
// List<UfaceDev> ufaceDevs = ufaceDevService.list(new LambdaQueryWrapper<UfaceDev>()
|
||||
// .in(UfaceDev::getProjectSn, sns));
|
||||
// List<String> devSns = ufaceDevs.stream().map(UfaceDev::getDevSn).collect(Collectors.toList());
|
||||
List<WorkerInfo> workerInfos = workerInfoService.list(new LambdaQueryWrapper<WorkerInfo>().in(WorkerInfo::getProjectSn, sns)
|
||||
.or(eq -> eq.isNull(WorkerInfo::getSendSuccessStatus).or().ne(WorkerInfo::getSendSuccessStatus, 1)));
|
||||
List<Long> workerIds = workerInfos.stream().map(WorkerInfo::getId).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(workerIds)) {
|
||||
return;
|
||||
}
|
||||
dangongWorkerFaceStatusService.updateStatus(workerIds);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user