Bladeren bron

设备端播报语音方法

qzyReal 2 jaren geleden
bovenliggende
commit
43639a209f

+ 1 - 1
business-system/venues-system/src/main/java/com/pj/api/GateTerminalApi.java

@@ -25,7 +25,7 @@ public class GateTerminalApi {
     private TbGateTerminalService tbGateTerminalService;
 
     @RequestMapping("req")
-    public AjaxJson test(HttpServletRequest request, HttpServletResponse response) {
+    public AjaxJson req(HttpServletRequest request, HttpServletResponse response) {
         char[] lineChars = new char[1024 * 1024];
         char[] totalChars = new char[1024 * 1024];
         int readLen = 0;

+ 22 - 1
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java

@@ -191,11 +191,11 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         Socket socket = new Socket();
         socket.connect(new InetSocketAddress(tbGateTerminal.getIp(), myConfig.getGatePort()), 4000);
         String result = ZKTecoUtils.sendAndGetResult(socket, GateCommandUtils.openCommand());
+        socket.close();
         Integer code = JSONUtil.parseObj(result).getInt("state_code");
         if (code == null || code != 200) {
             throw new BusinessException("开闸失败");
         }
-        socket.close();
         TbGateCommandLog log = new TbGateCommandLog();
         String createBy = StpUserUtil.getAdminName();
         createBy = StrUtil.isEmpty(createBy) ? "系统下发" : createBy;
@@ -252,6 +252,26 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         cacheResult(carNo, now, tbGateTerminal.getVenuesId(), tbGateTerminal.getId(), carVisitRecord.getId());
     }
 
+
+    private void playVoice(String ip, String msg){
+        log.info("播放语音========:{}", msg);
+        Socket socket = new Socket();
+        try {
+            socket.connect(new InetSocketAddress(ip, myConfig.getGatePort()), 4000);
+            String result = ZKTecoUtils.sendAndGetResult(socket, GateCommandUtils.openCommand());
+            log.info("播放语音=回复=======:{}", result);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            try {
+                socket.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+
     /**
      * 离场车辆 直接放行
      *
@@ -268,6 +288,7 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         }
         saveRecord(carNo, base64Image, tbGateTerminal, 2, 1);
         try {
+            this.playVoice(tbGateTerminal.getIp(),"一路平安");
             this.open(tbGateTerminal.getId());
         } catch (Exception e) {
             log.error("抬杆失败:{}", e.getMessage());

+ 9 - 1
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java

@@ -15,6 +15,7 @@ import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.log.StaticLog;
@@ -131,10 +132,16 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
         if (!StrUtil.equals(t.getIdCard(), db.getIdCard())
                 || !StrUtil.equals(t.getName(), db.getName())) {
             //删除旧的
-            deleteTerminalWhilte(db.getPin());
+            deleteTerminalWhilte(db.getIdCard());
             //下发新的
             issued(t);
         }
+        //重新上传了人脸
+        if (!StrUtil.equals(t.getPhoto(), db.getPhoto())) {
+            //下发新的
+            issued(t);
+        }
+
         this.updateById(t);
     }
 
@@ -322,4 +329,5 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
         reader.finish();
         is.close();
     }
+
 }

+ 12 - 2
sp-core/src/main/java/com/pj/project/tb_person_visit_record/task/ConvertBase64ToImage.java

@@ -9,8 +9,10 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.pj.current.config.SystemObject;
 import com.pj.current.task.Task;
+import com.pj.current.task.TaskService;
 import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_person_filing.TbPersonFilingService;
+import com.pj.project.tb_person_filing.task.DelayIsuued;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
 import com.pj.project4sp.uploadfile.UploadConfig;
@@ -50,9 +52,17 @@ public class ConvertBase64ToImage extends Task {
         }
         // 对外暴露的http路径
         String httpUrl = SystemObject.config.getDomain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/" + fileName;
-        Base64.decodeToFile(base64,new File(imgFilePath + fileName));
+        Base64.decodeToFile(base64, new File(imgFilePath + fileName));
         record.setPicture(httpUrl);
         tbPersonVisitRecordService.updateById(record);
-
+        TbPersonFilingService tbPersonFilingService = SpringUtil.getBean(TbPersonFilingService.class);
+        TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(record.getIdCard());
+        if (tbPersonFiling != null&&StrUtil.isEmpty(tbPersonFiling.getPhoto())) {
+            tbPersonFiling.setPhoto(httpUrl);
+            tbPersonFilingService.updateById(tbPersonFiling);
+            //分发到其他设备
+            TaskService taskService  = SpringUtil.getBean(TaskService.class);
+            taskService.addTask(new DelayIsuued(RandomUtil.randomNumbers(11), 4000, tbPersonFiling.getId(), record.getSn()));
+        }
     }
 }

+ 5 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java

@@ -332,7 +332,9 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         if (StrUtil.isEmpty(checkBO.getSn())) {
             return AjaxJson.getError("设备编号不能为空");
         }
+        //核酸是否必须
         int acidLimit = SpCfgUtil.getAcidLimit();
+        //行程是否必须
         int tourLimit = SpCfgUtil.getTourLimit();
         String now = DateUtil.now();
         String idCard = checkBO.getIdentity_number();
@@ -366,11 +368,14 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         //体温是否异常
         double minTemperature = SpCfgUtil.getMinTemperature();
         if (minTemperature < checkBO.getTemperature()) {
+
             log.info("返回信息体温过高:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
             return AjaxJson.getSuccess(msg + "体温异常", checkDataDTO);
         }
         //健康码是否绿码
         if (!StrUtil.equals(TbPersonVisitRecord.HealthEnum.GREEN.getStatus(), checkBO.getHealth_status())) {
+            //将检验行程卡和核酸设置成必须校验
+            checkDataDTO.setTrip_restrict(1).setNucleic_restrict(1);
             log.info("返回信息健康码异常:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
             return AjaxJson.getSuccess(msg + checkBO.getHealth_status(), checkDataDTO);
         }

+ 25 - 0
sp-core/src/main/java/com/pj/utils/zkt/GateCommandUtils.java

@@ -1,8 +1,14 @@
 package com.pj.utils.zkt;
 
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+import java.nio.charset.Charset;
+
 
 public class GateCommandUtils {
     /**
@@ -21,4 +27,23 @@ public class GateCommandUtils {
         return "{\"cmd\":\"ioctl_resp\",\"io\" :0,\"value\":2,\"delay\":500}";
     }
 
+    /**
+     * 语音播放
+     * @param msg
+     * @return
+     */
+    public static String playVoice(String msg){
+        JSONObject body=new JSONObject();
+        body.set("type","ps_voice_play")
+                .set("voice", Base64.encode(msg, Charset.forName("UTF-8")))
+                .set("voice_interval",1)
+                .set("voice_volume",1)
+                .set("voice_male",1);
+        JSONObject result=new JSONObject();
+        result.set("cmd","playserver_json_request")
+                .set("body", JSONUtil.toJsonStr(body))
+                .set("id", RandomUtil.randomNumbers(5));
+        return JSONUtil.toJsonStr(result);
+    }
+
 }

+ 2 - 2
sp-start/src/main/resources/application-dev.yml

@@ -7,9 +7,9 @@ spring:
     # 数据源配置
     datasource: 
         type: com.alibaba.druid.pool.DruidDataSource
-        url: jdbc:mysql://127.0.0.1:3307/smart_face?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://127.0.0.1:3306/smart_face?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
         username: root
-        password: 1234
+        password: 123456
         # 是否打开sql监控台  (生产环境请务必关闭此选项) 
         druid: 
             stat-view-servlet: