From 1b3a14a25d8f5013158ef2842e9be0e24240f2b5 Mon Sep 17 00:00:00 2001 From: 张晓波 <bingbo1993@126.com> Date: 星期一, 30 十月 2023 08:52:26 +0800 Subject: [PATCH] 人脸 缓存同步菜单 --- hd/pipe/StaffManage/src/main/java/com/thhy/staff/modules/biz/face/service/impl/FaceServerImpl.java | 125 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 116 insertions(+), 9 deletions(-) diff --git a/hd/pipe/StaffManage/src/main/java/com/thhy/staff/modules/biz/face/service/impl/FaceServerImpl.java b/hd/pipe/StaffManage/src/main/java/com/thhy/staff/modules/biz/face/service/impl/FaceServerImpl.java index ed76fe7..a5ef6e8 100644 --- a/hd/pipe/StaffManage/src/main/java/com/thhy/staff/modules/biz/face/service/impl/FaceServerImpl.java +++ b/hd/pipe/StaffManage/src/main/java/com/thhy/staff/modules/biz/face/service/impl/FaceServerImpl.java @@ -4,19 +4,24 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.utils.StringUtils; -import com.thhy.general.utils.DeepCopyUtils; import com.thhy.staff.config.EmqxConfig; -import com.thhy.staff.config.EmqxProperties; +import com.thhy.staff.config.FaceConfig; import com.thhy.staff.modules.biz.face.entity.FaceDevice; import com.thhy.staff.modules.biz.face.entity.FaceResult; import com.thhy.staff.modules.biz.face.entity.UserFaceVo; import com.thhy.staff.modules.biz.face.mapper.FaceDeviceMapper; import com.thhy.staff.modules.biz.face.service.FaceServer; +import com.thhy.staff.modules.biz.platuser.entity.DoorLis; +import com.thhy.staff.modules.biz.platuser.entity.PlatUser; import com.thhy.staff.modules.biz.platuser.mapper.PlatUserMapper; +import com.thhy.staff.utils.MqUtils; +import org.checkerframework.checker.units.qual.A; 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 java.util.ArrayList; import java.util.List; @@ -33,6 +38,12 @@ @Autowired private EmqxConfig emqxConfig; + @Value("${file.vfprefix}") + private String vfPrefix; + + @Autowired + private FaceConfig faceConfig; + private Logger logger = LoggerFactory.getLogger(FaceServer.class); @Override @@ -48,6 +59,7 @@ } FaceResult faceResult = new FaceResult(true,faceDevice,emqxConfig.toString()); + logger.info("人脸设备返回:++++++++++"+JSON.toJSONString(faceResult)); return faceResult; } @@ -76,6 +88,10 @@ UserFaceVo userFaceVo = userMapper.queryUserFaceSingle(userId); + List<String> url = new ArrayList<>(); + url.add(vfPrefix+userFaceVo.getPhoto()); + userFaceVo.setTemplateImgUrl(url); + JSONObject jsonObject = new JSONObject(); jsonObject.put("code",0); jsonObject.put("msg","OK"); @@ -83,21 +99,24 @@ jsonObject.put("offset",0); List<UserFaceVo> faceVoList = new ArrayList<>(); faceVoList.add(userFaceVo); - jsonObject.put("person_list",JSONObject.parseObject(JSON.toJSONString(faceVoList))); + jsonObject.put("person_list",faceVoList); + logger.info("设备查询人员结果:"+JSON.toJSONString(faceVoList)); return jsonObject; } @Override public void personNotify(String mess) { JSONObject reqJson = JSONObject.parseObject(mess); + logger.info("接收设备下发结果通知################"+mess); if(reqJson.containsKey("success")&&reqJson.getBooleanValue("success")){ String userIds = reqJson.getString("successful"); if(!StringUtils.isEmpty(userIds)){ - String[] userIdArray = new String[]{userIds}; - if(userIds.contains(",")){ - userIdArray = userIds.split(","); - } - userMapper.syncResult(1,userIdArray); + JSONArray jsonArray = JSONArray.parseArray(userIds); + logger.info("成功通知结果解析数组"+jsonArray.toJSONString()); + + List<String> userIdList = JSONArray.parseArray(userIds,String.class); + + userMapper.syncResult(1,userIdList); } JSONArray failJsonArray = reqJson.getJSONArray("failed"); if(failJsonArray.size()>0){ @@ -105,10 +124,98 @@ JSONObject failUserInfo = JSON.parseObject(obj.toString()); String userId = failUserInfo.getString("person_id"); JSONArray failInfoArray = failUserInfo.getJSONArray("info"); - String failReason = failInfoArray.getJSONObject(0).getString("reason"); + String failReason = ""; + if(failInfoArray.size()>0) failReason = failInfoArray.getJSONObject(0).getString("reason"); userMapper.syncFail(userId,failReason); } } } } + + + @Override + public void record(String mess) { + logger.info("人脸通过记录"+mess); + JSONObject jsonObject = JSON.parseObject(mess); + DoorLis doorLis = new DoorLis(jsonObject); + userMapper.insertDoorLis(doorLis); + } + + @Override + public void queryPer(String perId) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("method","get_person"); + jsonObject.put("params",new JSONObject()); + JSONObject dataJson = new JSONObject(); + dataJson.put("path",faceConfig.getUrlPrefix()+"getPersonDetail"); + dataJson.put("person_id",perId); + jsonObject.put("data",dataJson); + List<String> sns = faceDeviceMapper.queryDevSn(); + String content = jsonObject.toJSONString(); + logger.info("查询人员"+perId+":"+content); + MqUtils.createClient(emqxConfig,sns,content); + } + + @Override + @Transactional + public void removeNotify(String mess) { + logger.info("删除人员通知"+mess); + JSONObject jsonObject = JSON.parseObject(mess); + if(jsonObject.containsKey("success")&&jsonObject.getBooleanValue("success")){ + JSONObject paramJson = jsonObject.getJSONObject("params"); + List<String> userIds = JSONArray.parseArray(paramJson.getString("userIds"),String.class); + userMapper.syncResult(3,userIds); + } + } + + @Override + public String queryOriStrById(String id) { + return userMapper.queryOriStrById(id); + } + + @Override + public void allPerson(String mess) { + JSONObject jsonObject = JSONObject.parseObject(mess); + JSONArray jsonArray = jsonObject.getJSONArray("person_list"); + for(Object obj : jsonArray){ + JSONObject personJson = JSON.parseObject(obj.toString()); + String faceId = personJson.getString("person_id"); + int count = userMapper.countByFaceId(faceId); + if(count>0)continue; + PlatUser platUser = new PlatUser(); + platUser.setFaceId(faceId); + platUser.setIdNo(personJson.getString("id_card")); + platUser.setRealName(personJson.getString("name")); + userMapper.insertSamplePlatUser(platUser); + } + } + + public static void main(String[] args) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("method","delete_person"); + jsonObject.put("notify","http://111.30.93.212:15002/staff/face/"+"deleteNotify"); + JSONObject userIdJSON = new JSONObject(); + String[] userIdArray = new String[]{"02e6d1c4ded41512d0ca3622"}; + userIdJSON.put("userIds",userIdArray); + + + jsonObject.put("params",userIdJSON); + JSONObject dataJson = new JSONObject(); + dataJson.put("person_list",userIdArray); + dataJson.put("person_type","4"); + jsonObject.put("data",dataJson); + String content = jsonObject.toJSONString(); + System.out.println("删除指令打印"+content); + + EmqxConfig emqxConfig = new EmqxConfig(); + emqxConfig.setHost("111.30.93.215"); + emqxConfig.setPort("1883"); + emqxConfig.setQos(1); + emqxConfig.setLogin("thhy"); + emqxConfig.setPassword("Thhy@123"); + + List<String> sns = new ArrayList<>(); + sns.add("0A:0C:E1:25:75:2C"); + MqUtils.createClient(emqxConfig,sns,content); + } } -- Gitblit v1.9.3