package com.thhy.staff.modules.biz.platuser.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.nacos.api.utils.StringUtils;
|
import com.thhy.general.common.BasicMessage;
|
import com.thhy.general.common.BasicStatus;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.general.utils.ScreenMqUtils;
|
import com.thhy.general.utils.UserInfoUtils;
|
import com.thhy.staff.modules.biz.applyhistory.entity.UserApplyHistory;
|
import com.thhy.staff.modules.biz.applyhistory.mapper.UserApplyHistoryMapper;
|
import com.thhy.staff.modules.biz.depart.entity.OtherUser;
|
import com.thhy.staff.modules.biz.group.entity.GroupUser;
|
import com.thhy.staff.modules.biz.netty.NettyServerHandler;
|
import com.thhy.staff.modules.biz.platuser.controller.FaceServer;
|
import com.thhy.staff.modules.biz.platuser.entity.*;
|
import com.thhy.staff.modules.biz.platuser.mapper.PlatUserMapper;
|
import com.thhy.staff.modules.biz.platuser.service.PlatUserService;
|
import com.thhy.staff.modules.biz.platuser.service.SysUserService;
|
import com.thhy.staff.modules.biz.position.mapper.PositionMapper;
|
import com.thhy.staff.utils.ProcessFlag;
|
import com.thhy.staff.utils.StaffNoUtils;
|
import io.netty.channel.ChannelHandlerContext;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.websocket.Session;
|
import java.io.IOException;
|
import java.io.Serializable;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.util.*;
|
import java.util.concurrent.CopyOnWriteArraySet;
|
|
/**
|
* 服务实现类
|
* @author zhang_xiao_bo
|
* @since 2023-03-30 12:49:45
|
*/
|
@Service
|
public class PlatUserServiceImpl implements PlatUserService {
|
|
private Logger logger = LoggerFactory.getLogger(PlatUserServiceImpl.class);
|
|
@Autowired
|
private PlatUserMapper platUserMapper;
|
|
@Autowired
|
private SysUserService sysUserService;
|
|
@Autowired
|
private UserApplyHistoryMapper historyMapper;
|
|
@Autowired
|
private PositionMapper positionMapper;
|
|
@Autowired
|
private ScreenMqUtils screenMqUtils;
|
|
public PlatUser get(Serializable id){
|
return platUserMapper.queryById(id);
|
}
|
|
@Override
|
public List<PlatUserPullDown> queryForPullDown(PlatUserDto platUserDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
if(platUserDto==null)platUserDto = new PlatUserDto();
|
platUserDto.setCompanyId(userInfo.getCompanyId());
|
return platUserMapper.queryForPullDown(platUserDto);
|
}
|
|
@Override
|
public List<PlatUserPullDown> queryForPullDownDorm(PlatUserDto platUserDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
if(platUserDto==null)platUserDto = new PlatUserDto();
|
platUserDto.setCompanyId(userInfo.getCompanyId());
|
return platUserMapper.queryForPullDownDorm(platUserDto);
|
}
|
|
public List<PlatUserListVo> findList(PlatUserDto platUserDto){
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
platUserDto.setCompanyId(sysUserInfo.getCompanyId());
|
return platUserMapper.findList(platUserDto);
|
}
|
|
@Override
|
public List<PlatUserListVo> findListForExport(PlatUserDto platUserDto, String token) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(token);
|
platUserDto.setCompanyId(sysUserInfo.getCompanyId());
|
return platUserMapper.findList(platUserDto);
|
}
|
|
/**
|
* 增加和修改
|
* @param platUserDto
|
*/
|
@Transactional
|
public void addPlatUser(PlatUserDto platUserDto){
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String syncSysFlag = "false";
|
//String syncJobNum = "";
|
if(platUserDto.getUserId() == null){
|
//增加操作
|
String userId = platUserMapper.queryIdByPhone(platUserDto.getPhone());
|
if(!StringUtils.isEmpty(userId)){
|
throw new BasicException(BasicStatus.PHONE_IS_EXIST);
|
}
|
|
String sysUserId = platUserMapper.querySysUserIdByPhone(platUserDto.getPhone());
|
|
if(!StringUtils.isEmpty(sysUserId)){
|
throw new BasicException(BasicStatus.PHONE_IS_EXIST_SYSUSER);
|
}
|
|
String userIdno = platUserMapper.queryIdByIdno(platUserDto.getIdNo());
|
if(!StringUtils.isEmpty(userIdno)){
|
throw new BasicException(BasicStatus.IDNO_IS_EXIST);
|
}
|
|
|
|
int maxno = platUserMapper.queryMaxJobNum(platUserDto.getUserType());
|
String newJobNum = StaffNoUtils.create(platUserDto.getUserType(),maxno);
|
platUserDto.setJobNum(newJobNum);
|
platUserDto.setCreateUser(sysUserInfo.getUserId());
|
platUserDto.setFromPlat(1); //PC
|
platUserMapper.insert(platUserDto);
|
if(platUserDto.getIsLogin()==1) syncSysFlag="first";
|
}else{
|
//修改操作
|
String userId = platUserMapper.queryIdByPhone(platUserDto.getPhone());
|
String userIdno = platUserMapper.queryIdByIdno(platUserDto.getIdNo());
|
if (!StringUtils.isEmpty(userId)) {
|
if(!platUserDto.getUserId().equals(userId)){
|
throw new BasicException(BasicStatus.PHONE_IS_EXIST);
|
}
|
}
|
if (!StringUtils.isEmpty(userIdno)) {
|
if(!platUserDto.getUserId().equals(userIdno)){
|
throw new BasicException(BasicStatus.IDNO_IS_EXIST);
|
}
|
}
|
PlatUser plat = platUserMapper.queryById(platUserDto.getUserId());
|
platUserDto.setUpdateUser(sysUserInfo.getUserId());
|
platUserDto.setUpdateTime(new Date());
|
if(platUserDto.getIsLogin()==plat.getIsLogin()){
|
syncSysFlag="false";
|
}else{
|
if(platUserDto.getIsLogin()==1)syncSysFlag="updatesync";
|
if(platUserDto.getIsLogin()==2)syncSysFlag="updatedel";
|
|
platUserDto.setJobNum(plat.getJobNum());
|
}
|
platUserMapper.update(platUserDto);
|
|
}
|
if("first".equals(syncSysFlag)){
|
//同步用户表
|
SysUsers sysUsers = StaffNoUtils.PlatoSys(platUserDto);
|
platUserMapper.insertSysUser(sysUsers);
|
//BasicResult basicResult = sysUserService.insertSysUser(JSON.toJSONString(sysUsers));
|
//CheckResult.check(basicResult);
|
}else if(!"false".equals(syncSysFlag)){
|
if("updatesync".equals(syncSysFlag)){
|
SysUsers sysUsers = StaffNoUtils.PlatoSys(platUserDto);
|
platUserMapper.insertSysUser(sysUsers);
|
}else{
|
platUserMapper.syncDelete(platUserDto.getJobNum());
|
}
|
}
|
String posId = platUserDto.getPosId();
|
String departId = platUserDto.getDepartId();
|
String groups = platUserDto.getGroups();
|
platUserMapper.deleteDepartUserByUser(platUserDto.getUserId());
|
platUserMapper.insertDepartUser(new OtherUser(departId, platUserDto.getUserId()));
|
platUserMapper.deletePositionUserByUser(platUserDto.getUserId());
|
platUserMapper.insertPositionUser(new OtherUser(posId, platUserDto.getUserId()));
|
|
|
platUserMapper.deleteGroupUserByUser(platUserDto.getUserId());
|
if (!StringUtils.isEmpty(platUserDto.getGroups())) {
|
String[] groupArray = new String[]{groups};
|
if(groups.contains(",")){
|
groupArray = groups.split(",");
|
}
|
for(String groupId : groupArray){
|
platUserMapper.insertGroupUser(new GroupUser(groupId, platUserDto.getUserId()));
|
}
|
}
|
}
|
|
/**
|
* 删除
|
* @param userId
|
*/
|
@Transactional
|
public void delete(Serializable userId){
|
PlatUser platUser = platUserMapper.queryPhoneAndIsLogin(userId);
|
|
if (platUser.getIsLogin()==1) {
|
platUserMapper.deleteSysUserByPlat(platUser.getUserId());
|
}
|
platUserMapper.deleteDepartUserByUser(platUser.getUserId());
|
platUserMapper.deletePositionUserByUser(platUser.getUserId());
|
platUserMapper.deleteGroupUserByUser(platUser.getUserId());
|
platUserMapper.deletelogic(userId);
|
}
|
|
|
@Override
|
@Transactional
|
public void register(PlatUserDto platUserDto) {
|
if(StringUtils.isEmpty(platUserDto.getOpenId())){
|
throw new BasicException(BasicStatus.OPEN_ID_IS_MISS);
|
}
|
MpRegisterInfoVo reginfo = platUserMapper.queryByOpenId(platUserDto.getOpenId());
|
if(reginfo==null){
|
String phone = platUserMapper.queryIdByPhone(platUserDto.getPhone());
|
if(!StringUtils.isEmpty(phone)){
|
throw new BasicException(BasicStatus.PHONE_IS_EXIST);
|
}
|
|
String userIdno = platUserMapper.queryIdByIdno(platUserDto.getIdNo());
|
if(!StringUtils.isEmpty(userIdno)){
|
throw new BasicException(BasicStatus.IDNO_IS_EXIST);
|
}
|
int maxno = platUserMapper.queryMaxJobNum(2);
|
String newJobNum = StaffNoUtils.create(2,maxno);
|
platUserDto.setJobNum(newJobNum);
|
platUserDto.setUserType(2);//劳务人员
|
platUserDto.setApplyFlag(0);
|
platUserDto.setIsLogin(1);
|
platUserMapper.insert(platUserDto);
|
platUserMapper.deletePositionUserByUser(platUserDto.getUserId());
|
platUserMapper.insertPositionUser(new OtherUser(platUserDto.getPosId(), platUserDto.getUserId()));
|
}else {
|
if(!reginfo.getCompanyId().equals(platUserDto.getCompanyId())){
|
throw new BasicException(BasicStatus.USER_ALREADY_HAS_COMPANY);
|
}
|
if(reginfo.getApplyFlag()==1){
|
throw new BasicException(BasicStatus.REGISTER_IS_PASS); //不要重复注册
|
}
|
String userId = platUserMapper.queryIdByPhone(platUserDto.getPhone());
|
String userIdno = platUserMapper.queryIdByIdno(platUserDto.getIdNo());
|
if (!StringUtils.isEmpty(userId)) {
|
if(!reginfo.getUserId().equals(userId)){
|
throw new BasicException(BasicStatus.PHONE_IS_EXIST);
|
}
|
}
|
if (!StringUtils.isEmpty(userIdno)) {
|
if(!reginfo.getUserId().equals(userIdno)){
|
throw new BasicException(BasicStatus.IDNO_IS_EXIST);
|
}
|
}
|
platUserDto.setUserId(reginfo.getUserId());
|
platUserDto.setApplyFlag(0);
|
platUserMapper.update(platUserDto);
|
if(!reginfo.getPosId().equals(platUserDto.getPosId())){
|
platUserMapper.deletePositionUserByUser(platUserDto.getUserId());
|
platUserMapper.insertPositionUser(new OtherUser(platUserDto.getPosId(), platUserDto.getUserId()));
|
}
|
}
|
|
UserApplyHistory userApplyHistory = new UserApplyHistory();
|
userApplyHistory.setPlatUserId(platUserDto.getUserId());
|
userApplyHistory.setProcessFlag(ProcessFlag.REG.getValue());
|
userApplyHistory.setApplyResult(1);
|
userApplyHistory.setCreateUser(platUserDto.getUserId());
|
historyMapper.insert(userApplyHistory);
|
|
//SysUsers sysUsers = StaffNoUtils.PlatoSys(platUserDto);
|
//platUserMapper.insertSysUser(sysUsers);
|
}
|
|
@Override
|
public Map<String,Object> checkuser(PlatUserDto platUserDto) {
|
Map<String,Object> map = new HashMap<>();
|
//根据openId获取platUser信息
|
MpRegisterInfoVo mpRegisterInfoVo = platUserMapper.queryByOpenId(platUserDto.getOpenId());
|
//判断是否审批完成
|
if(mpRegisterInfoVo==null){
|
map.put("regstatus",0); //新用户需要注册
|
return map;
|
}
|
|
if(mpRegisterInfoVo.getApplyFlag()==1){
|
map.put("regstatus",1); //已经审批完成
|
return map;
|
}
|
|
if(mpRegisterInfoVo.getApplyFlag()==0){
|
map.put("regstatus",2); //等待审核
|
return map;
|
}
|
|
if(mpRegisterInfoVo.getApplyFlag()==2){
|
map.put("regstatus",3); //审核未通过
|
map.put("reginfo",mpRegisterInfoVo);
|
List<ApplyHistory> applyHistories = platUserMapper.queryHistoryByUserId(mpRegisterInfoVo.getUserId());
|
map.put("applyRecord",applyHistories);
|
return map;
|
}
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> applyDetail(PlatUserDto platUserDto) {
|
Map<String,Object> map = new HashMap<>();
|
MpRegisterInfoVo mpRegisterInfoVo = platUserMapper.queryByUserId(platUserDto.getUserId());
|
map.put("reginfo",mpRegisterInfoVo);
|
List<ApplyHistory> applyHistories = platUserMapper.queryHistoryByUserId(mpRegisterInfoVo.getUserId());
|
map.put("applyRecord",applyHistories);
|
return map;
|
}
|
|
@Override
|
public List<ApplyListVo> applyList(PlatUserDto platUserDto) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
if(platUserDto==null) platUserDto = new PlatUserDto();
|
platUserDto.setCompanyId(userInfo.getCompanyId());
|
return platUserMapper.queryApplyList(platUserDto);
|
}
|
|
@Override
|
@Transactional
|
public void apply(UserApplyHistory userApplyHistory) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
userApplyHistory.setCreateUser(userInfo.getUserId());
|
if(userApplyHistory.getApplyResult()==1){
|
userApplyHistory.setProcessFlag(ProcessFlag.APPLY_PASS.getValue());
|
}else {
|
userApplyHistory.setProcessFlag(ProcessFlag.APPLY_NOPASS.getValue());
|
}
|
historyMapper.insert(userApplyHistory);
|
platUserMapper.updateApplyStatus(userApplyHistory.getUserId(), userApplyHistory.getApplyResult());
|
if(userApplyHistory.getApplyResult()==1){
|
PlatUserDto platUserDto = platUserMapper.queryForDtoByUserId(userApplyHistory.getUserId());
|
SysUsers sysUsers = StaffNoUtils.PlatoSys(platUserDto);
|
platUserMapper.insertSysUser(sysUsers);
|
platUserMapper.deleteDepartUserByUser(userApplyHistory.getUserId());
|
platUserMapper.insertDepartUser(new OtherUser(userApplyHistory.getDepartId(), platUserDto.getUserId()));
|
}
|
}
|
|
@Override
|
public void testFace(FaceDto faceDto) {
|
CopyOnWriteArraySet<ChannelHandlerContext> CTXS= NettyServerHandler.CTXS;
|
logger.info("netty链接个数"+CTXS.size());
|
faceDto.setOp(1);
|
/*CopyOnWriteArraySet<Session> SESSIONS = FaceServer.SESSIONS;
|
SESSIONS.forEach(session ->{
|
try {
|
if (session.isOpen()) {
|
session.getBasicRemote().sendText(JSON.toJSONString(faceDto));
|
logger.info("成功推送消息到局域网段"+session.getId()+"___"+session.getRequestURI().getHost());
|
}
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
});*/
|
CTXS.forEach(ctx ->{
|
if (!ctx.isRemoved()&&ctx.channel().isOpen()) {
|
ctx.write(JSON.toJSONString(faceDto));
|
ctx.flush();
|
//logger.info("成功推送消息到局域网段"+session.getId()+"___"+session.getRequestURI().getHost());
|
}
|
});
|
/*Map<String,Object> map = AcsMain.addFace(faceDto.getJobNum(),filePrefix+"/"+faceDto.getPhoto());
|
if(map.containsKey("code")){
|
if(Integer.parseInt(map.get("code").toString())!=0){
|
throw new BasicException(new BasicMessage(map.get("code").toString(),map.get("message").toString()));
|
}
|
}*/
|
}
|
|
@Override
|
public void addFace(FaceDto faceDto) {
|
faceDto.setOp(1);
|
FaceDto fd = platUserMapper.queryJobNumByUserId(faceDto.getUserId());
|
platUserMapper.updateFace(faceDto);
|
if(faceDto.getSyncToDevice()==1){
|
//下发
|
/*Map<String,Object> map = AcsMain.addFace(fd.getJobNum(),filePrefix+"/"+fd.getPhoto());
|
if(map.containsKey("code")){
|
if(Integer.parseInt(map.get("code").toString())!=0){
|
throw new BasicException(new BasicMessage(map.get("code").toString(),map.get("message").toString()));
|
}
|
}*/
|
/*CopyOnWriteArraySet<Session> SESSIONS = FaceServer.SESSIONS;
|
if(SESSIONS.size()<1){
|
throw new BasicException(new BasicMessage("99991","与门禁一体机失去链接"));
|
}
|
SESSIONS.forEach(session ->{
|
try {
|
if (session.isOpen()) {
|
faceDto.setPhoto(filePrefix+faceDto.getPhoto());
|
session.getBasicRemote().sendText(JSON.toJSONString(faceDto));
|
logger.info("成功推送消息到局域网段"+session.getId()+"___"+session.getRequestURI().getHost());
|
}
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
});*/
|
|
CopyOnWriteArraySet<ChannelHandlerContext> CTXS= NettyServerHandler.CTXS;
|
if(CTXS.size()<1){
|
throw new BasicException(new BasicMessage("99991","与门禁一体机失去链接"));
|
}
|
if(CTXS.size()>1){
|
logger.info("多个客户端"+CTXS.size());
|
}
|
CTXS.forEach(ctx ->{
|
if (!ctx.isRemoved()&&ctx.channel().isOpen()) {
|
logger.info("即将推送消息到局域网段");
|
faceDto.setJobNum(fd.getJobNum());
|
faceDto.setRealName(fd.getRealName());
|
ctx.write(JSON.toJSONString(faceDto));
|
ctx.flush();
|
logger.info("成功推送消息到局域网段");
|
}
|
});
|
}
|
}
|
|
@Override
|
@Transactional
|
public void delFace(FaceDto faceDto) {
|
faceDto.setOp(2);
|
String userIds = faceDto.getUserIds();
|
String[] userIdArray = new String[]{userIds};
|
if(userIds.contains(",")){
|
userIdArray = userIds.split(",");
|
}
|
for(String userId : userIdArray){
|
faceDto.setUserId(userId);
|
faceDto.setSyncToDevice(2);
|
platUserMapper.updateDelFace(faceDto);
|
|
|
FaceDto fd = platUserMapper.queryJobNumByUserId(faceDto.getUserId());
|
//删除下发
|
/*FaceDto fd = platUserMapper.queryJobNumByUserId(userId);
|
AcsMain.deleteFace(fd.getJobNum());*/
|
/*CopyOnWriteArraySet<Session> SESSIONS = FaceServer.SESSIONS;
|
if(SESSIONS.size()<1){
|
throw new BasicException(new BasicMessage("99991","与门禁一体机失去链接"));
|
}
|
SESSIONS.forEach(session ->{
|
try {
|
if (session.isOpen()) {
|
faceDto.setPhoto(filePrefix+faceDto.getPhoto());
|
session.getBasicRemote().sendText(JSON.toJSONString(faceDto));
|
logger.info("成功推送消息到局域网段"+session.getId()+"___"+session.getRequestURI().getHost());
|
}
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
});*/
|
|
CopyOnWriteArraySet<ChannelHandlerContext> CTXS= NettyServerHandler.CTXS;
|
if(CTXS.size()<1){
|
throw new BasicException(new BasicMessage("99991","与门禁一体机失去链接"));
|
}
|
CTXS.forEach(ctx ->{
|
if (!ctx.isRemoved()&&ctx.channel().isOpen()) {
|
faceDto.setJobNum(fd.getJobNum());
|
faceDto.setPhoto("https://pipe.thhy-tj.com/"+faceDto.getPhoto());
|
ctx.write(JSON.toJSONString(faceDto));
|
ctx.flush();
|
logger.info("删除人脸成功推送消息到局域网段");
|
}
|
});
|
}
|
}
|
|
@Override
|
public void doorhis(String eventLog) {
|
|
JSONObject jsonObject = JSONObject.parseObject(eventLog);
|
|
if(!jsonObject.containsKey("eventType")){
|
platUserMapper.addDoorHis(eventLog);
|
return;
|
}
|
String eventType = jsonObject.getString("eventType");
|
if(!"AccessControllerEvent".equals(eventType)){
|
platUserMapper.addDoorHis(eventLog);
|
return;
|
}
|
|
JSONObject control = jsonObject.getJSONObject("AccessControllerEvent");
|
|
String majorEventType = control.getString("majorEventType");
|
if(!"1".equals(majorEventType)&&!"5".equals(majorEventType)){
|
platUserMapper.addDoorHis(eventLog);
|
return;
|
}
|
|
DoorLis doorLis = new DoorLis();
|
doorLis.setOriStr(eventLog);
|
doorLis.setIpAddress(jsonObject.getString("ipAddress"));
|
doorLis.setMacAddress(jsonObject.getString("macAddress"));
|
doorLis.setNoticeType(Integer.parseInt(majorEventType));
|
if("5".equals(majorEventType)){
|
String subEventType = control.getString("subEventType");
|
if("75".equals(subEventType)){
|
doorLis.setVerify(1);
|
doorLis.setName(control.getString("name"));
|
doorLis.setEmployeeNoString(control.getString("employeeNoString"));
|
}else if("76".equals(subEventType)){
|
doorLis.setVerify(2);
|
}
|
screenMqUtils.sendFace("update");
|
}else{
|
String subEventType = control.getString("subEventType");
|
if("1038".equals(subEventType)){
|
//联动事件报警
|
|
}
|
}
|
platUserMapper.insertDoorLis(doorLis);
|
}
|
|
|
public static void main(String[] args) {
|
String eventLog = "{\n" +
|
"\t\"ipAddress\":\t\"192.168.1.12\",\n" +
|
"\t\"ipv6Address\":\t\"240e:345:129e:cf00:e2ca:3cff:fef0:d933\",\n" +
|
"\t\"portNo\":\t443,\n" +
|
"\t\"protocol\":\t\"HTTPS\",\n" +
|
"\t\"macAddress\":\t\"e0:ca:3c:f0:d9:33\",\n" +
|
"\t\"channelID\":\t1,\n" +
|
"\t\"dateTime\":\t\"2023-09-05T15:44:04+08:00\",\n" +
|
"\t\"activePostCount\":\t1,\n" +
|
"\t\"eventType\":\t\"AccessControllerEvent\",\n" +
|
"\t\"eventState\":\t\"active\",\n" +
|
"\t\"eventDescription\":\t\"Access Controller Event\",\n" +
|
"\t\"AccessControllerEvent\":\t{\n" +
|
"\t\t\"deviceName\":\t\"Access Controller\",\n" +
|
"\t\t\"majorEventType\":\t5,\n" +
|
"\t\t\"subEventType\":\t76,\n" +
|
"\t\t\"cardReaderKind\":\t1,\n" +
|
"\t\t\"cardReaderNo\":\t1,\n" +
|
"\t\t\"verifyNo\":\t233,\n" +
|
"\t\t\"serialNo\":\t437,\n" +
|
"\t\t\"currentVerifyMode\":\t\"cardOrFace\",\n" +
|
"\t\t\"frontSerialNo\":\t436,\n" +
|
"\t\t\"attendanceStatus\":\t\"undefined\",\n" +
|
"\t\t\"statusValue\":\t0,\n" +
|
"\t\t\"mask\":\t\"no\",\n" +
|
"\t\t\"helmet\":\t\"unknown\",\n" +
|
"\t\t\"picturesNumber\":\t1,\n" +
|
"\t\t\"purePwdVerifyEnable\":\ttrue,\n" +
|
"\t\t\"FaceRect\":\t{\n" +
|
"\t\t\t\"height\":\t0.116000,\n" +
|
"\t\t\t\"width\":\t0.065000,\n" +
|
"\t\t\t\"x\":\t0.546000,\n" +
|
"\t\t\t\"y\":\t0.634000\n" +
|
"\t\t}\n" +
|
"\t}\n" +
|
"}";
|
JSONObject jsonObject = JSONObject.parseObject(eventLog);
|
|
if(!jsonObject.containsKey("eventType")){
|
//platUserMapper.addDoorHis(eventLog);
|
return;
|
}
|
String eventType = jsonObject.getString("eventType");
|
if(!"AccessControllerEvent".equals(eventType)){
|
//platUserMapper.addDoorHis(eventLog);
|
return;
|
}
|
|
JSONObject control = jsonObject.getJSONObject("AccessControllerEvent");
|
|
String majorEventType = control.getString("majorEventType");
|
if(!"1".equals(majorEventType)&&!"5".equals(majorEventType)){
|
//platUserMapper.addDoorHis(eventLog);
|
return;
|
}
|
|
DoorLis doorLis = new DoorLis();
|
//doorLis.setOriStr(eventLog);
|
doorLis.setIpAddress(jsonObject.getString("ipAddress"));
|
doorLis.setMacAddress(jsonObject.getString("macAddress"));
|
doorLis.setNoticeType(Integer.parseInt(majorEventType));
|
if("5".equals(majorEventType)){
|
String subEventType = control.getString("subEventType");
|
if("75".equals(subEventType)){
|
doorLis.setVerify(1);
|
doorLis.setName(control.getString("name"));
|
doorLis.setEmployeeNoString(control.getString("employeeNoString"));
|
}else if("76".equals(subEventType)){
|
doorLis.setVerify(2);
|
}
|
}
|
|
}
|
|
@Override
|
public Map<String, Object> faceRecord(String token) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo(token);
|
int userCount = platUserMapper.queryPlatUser(userInfo.getCompanyId());
|
Map<String, Object> map = new HashMap<>();
|
map.put("mod","facerecord");
|
map.put("totalUserCount",userCount);
|
map.put("watchUserCount",0);
|
map.put("dangerUserCount",0);
|
List<DoorUserVo> list = platUserMapper.queryDoorUser();
|
map.put("doorUserList",list);
|
PlatUserFace platUserFace = platUserMapper.queryFaceUserByJobNum(list.get(0).getJobNum());
|
platUserFace.setPassTime(list.get(0).getCreateTime());
|
map.put("firstUserInfo",platUserFace);
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> todayWorkUser(String token) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo(token);
|
int totalUserCount = platUserMapper.queryPlatUser(userInfo.getCompanyId());
|
int workUserCount = platUserMapper.countInDoorUserToday();
|
|
Map<String,Object> map = new HashMap<>();
|
map.put("mod","todayAttendance");
|
map.put("totalUserCount",totalUserCount);
|
map.put("workUserCount",workUserCount);
|
BigDecimal rate = new BigDecimal(0);
|
if(totalUserCount!=0&&workUserCount!=0){
|
rate = new BigDecimal(workUserCount).divide(new BigDecimal(totalUserCount),2, RoundingMode.HALF_UP);
|
}
|
map.put("rate",rate);
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> groupUserWork(String token) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo(token);
|
List<GroupWorking> groupWorkingList = platUserMapper.groupUserWorking(userInfo.getCompanyId());
|
groupWorkingList.forEach(gl -> {
|
int count = platUserMapper.countFaceRecordByGroup(gl.getGroupId());
|
gl.setGroupWorkCount(count);
|
});
|
Map<String,Object> map = new HashMap<>();
|
map.put("mod","groupWork");
|
map.put("groupWork",groupWorkingList);
|
return map;
|
}
|
|
@Override
|
public void doorlisWithPic(DoorLisPic doorLisPic) {
|
|
if("5".equals(doorLisPic.getFirstType())){
|
if("4b".equals(doorLisPic.getSecType())){
|
doorLisPic.setVerify(1);
|
}else if("4c".equals(doorLisPic.getSecType())){
|
doorLisPic.setVerify(2);
|
}else if("15".equals(doorLisPic.getSecType())){
|
doorLisPic.setLockOp(1);
|
}else if("16".equals(doorLisPic.getSecType())){
|
doorLisPic.setLockOp(2);
|
}
|
}else if("3".equals(doorLisPic.getFirstType())){
|
|
}
|
platUserMapper.insertDoorListener(doorLisPic);
|
}
|
}
|