From 555a0ccd790cfd37fc0eb3d4e7f85897427a3583 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期一, 16 一月 2023 01:49:31 +0800
Subject: [PATCH] 加入 放行已办 待办查询接口

---
 service-common/src/main/java/com/java110/common/api/MachineApi.java |  199 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 186 insertions(+), 13 deletions(-)

diff --git a/service-common/src/main/java/com/java110/common/api/MachineApi.java b/service-common/src/main/java/com/java110/common/api/MachineApi.java
old mode 100644
new mode 100755
index 13761bc..2a42916
--- a/service-common/src/main/java/com/java110/common/api/MachineApi.java
+++ b/service-common/src/main/java/com/java110/common/api/MachineApi.java
@@ -1,24 +1,36 @@
 package com.java110.common.api;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.common.bmo.attrValue.IDeleteAttrValueBMO;
-import com.java110.common.bmo.attrValue.IGetAttrValueBMO;
-import com.java110.common.bmo.attrValue.ISaveAttrValueBMO;
-import com.java110.common.bmo.attrValue.IUpdateAttrValueBMO;
+import com.java110.common.bmo.machine.IMachineHeartbeatBMO;
 import com.java110.common.bmo.machine.IMachineOpenDoorBMO;
+import com.java110.common.bmo.machine.ISaveMachineRecordBMO;
+import com.java110.common.bmo.machine.IUpdateMachineTransactionStateBMO;
 import com.java110.common.bmo.machineTranslateError.IGetMachineTranslateErrorBMO;
+import com.java110.dto.machine.MachineDto;
+import com.java110.dto.machine.MachineRecordDto;
+import com.java110.dto.machine.MachineTranslateDto;
 import com.java110.dto.machineTranslateError.MachineTranslateErrorDto;
-import com.java110.po.attrValue.AttrValuePo;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import org.slf4j.Logger;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-
+/**
+ * 璁惧鐩稿叧鎺ュ彛绫�
+ * <p>
+ * add by 鍚村鏂� 2020-12-28
+ */
 @RestController
 @RequestMapping(value = "/machine")
 public class MachineApi {
+
+    private static Logger logger = LoggerFactory.getLogger(MachineApi.class);
+
+    private static final String USER_ROLE_OWNER = "owner";
 
     @Autowired
     private IMachineOpenDoorBMO machineOpenDoorBMOImpl;
@@ -26,8 +38,17 @@
     @Autowired
     private IGetMachineTranslateErrorBMO getMachineTranslateErrorBMOImpl;
 
+    @Autowired
+    private ISaveMachineRecordBMO saveMachineRecordBMOImpl;
+
+    @Autowired
+    private IUpdateMachineTransactionStateBMO updateMachineTransactionStateBMOImpl;
+
+    @Autowired
+    private IMachineHeartbeatBMO machineHeartbeatBMOImpl;
+
     /**
-     * 寰俊淇濆瓨娑堟伅妯℃澘
+     * 璁惧寮�闂ㄥ姛鑳�
      *
      * @param reqJson
      * @return
@@ -35,23 +56,96 @@
      * @path /app/machine/openDoor
      */
     @RequestMapping(value = "/openDoor", method = RequestMethod.POST)
-    public ResponseEntity<String> openDoor(@RequestBody JSONObject reqJson) {
-
+    public ResponseEntity<String> openDoor(@RequestBody JSONObject reqJson,
+                                           @RequestHeader(value = "user-id", required = false) String userId) {
         Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈灏忓尯淇℃伅");
         Assert.hasKeyAndValue(reqJson, "machineCode", "璇锋眰鎶ユ枃涓湭鍖呭惈璁惧淇℃伅");
-        Assert.hasKeyAndValue(reqJson, "userType", "璇锋眰鎶ユ枃涓湭鍖呭惈鐢ㄦ埛绫诲瀷");
+        Assert.hasKeyAndValue(reqJson, "userRole", "璇锋眰鎶ユ枃涓湭鍖呭惈鐢ㄦ埛瑙掕壊");
+        if (!USER_ROLE_OWNER.equals(reqJson.getString("userRole"))) { //杩欑涓� 鍛樺伐鐨勬儏鍐靛憿
+            reqJson.put("userId", userId);
+        }
         Assert.hasKeyAndValue(reqJson, "userId", "璇锋眰鎶ユ枃涓湭鍖呭惈鐢ㄦ埛淇℃伅");
-
         return machineOpenDoorBMOImpl.openDoor(reqJson);
+    }
+
+    /**
+     * 璁惧寮�闂ㄥ姛鑳�
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/closeDoor
+     * @path /app/machine/closeDoor
+     */
+    @RequestMapping(value = "/closeDoor", method = RequestMethod.POST)
+    public ResponseEntity<String> closeDoor(@RequestBody JSONObject reqJson,
+                                           @RequestHeader(value = "user-id", required = false) String userId) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈灏忓尯淇℃伅");
+        Assert.hasKeyAndValue(reqJson, "machineCode", "璇锋眰鎶ユ枃涓湭鍖呭惈璁惧淇℃伅");
+        Assert.hasKeyAndValue(reqJson, "userRole", "璇锋眰鎶ユ枃涓湭鍖呭惈鐢ㄦ埛瑙掕壊");
+        if (!USER_ROLE_OWNER.equals(reqJson.getString("userRole"))) { //杩欑涓� 鍛樺伐鐨勬儏鍐靛憿
+            reqJson.put("userId", userId);
+        }
+        Assert.hasKeyAndValue(reqJson, "userId", "璇锋眰鎶ユ枃涓湭鍖呭惈鐢ㄦ埛淇℃伅");
+        return machineOpenDoorBMOImpl.closeDoor(reqJson);
+    }
+
+
+
+    /**
+     * 璁惧浜岀淮鐮�
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/getQRcode
+     * @path /app/machine/getQRcode
+     */
+    @RequestMapping(value = "/getQRcode", method = RequestMethod.POST)
+    public ResponseEntity<String> getQRcode(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈灏忓尯淇℃伅");
+        Assert.hasKeyAndValue(reqJson, "userId", "璇锋眰鎶ユ枃涓湭鍖呭惈鐢ㄦ埛淇℃伅");
+        Assert.hasKeyAndValue(reqJson, "machineCode", "璇锋眰鎶ユ枃涓湭鍖呭惈璁惧淇℃伅");
+
+        return machineOpenDoorBMOImpl.getQRcode(reqJson);
+    }
+
+    /**
+     * 璁惧寮�闂ㄥ姛鑳�
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/restartMachine
+     * @path /app/machine/restartMachine
+     */
+    @RequestMapping(value = "/restartMachine", method = RequestMethod.POST)
+    public ResponseEntity<String> restartMachine(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈灏忓尯淇℃伅");
+        Assert.hasKeyAndValue(reqJson, "machineCode", "璇锋眰鎶ユ枃涓湭鍖呭惈璁惧淇℃伅");
+        return machineOpenDoorBMOImpl.restartMachine(reqJson);
     }
 
 
     /**
+     * 閲嶆柊閫佺墿鑱旂綉绯荤粺
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/resendIot
+     * @path /app/machine/resendIot
+     */
+    @RequestMapping(value = "/resendIot", method = RequestMethod.POST)
+    public ResponseEntity<String> resendIot(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "machineTranslateId", "鏈寘鍚悓姝D");
+        Assert.hasKeyAndValue(reqJson, "communityId", "鏈寘鍚皬鍖篒D");
+        return machineOpenDoorBMOImpl.resendIot(reqJson);
+    }
+
+    /**
      * 寰俊鍒犻櫎娑堟伅妯℃澘
-     * @serviceCode /machine/queryMachineTranslateError
-     * @path /app/machine/queryMachineTranslateError
+     *
      * @param communityId 灏忓尯ID
      * @return
+     * @serviceCode /machine/queryMachineTranslateError
+     * @path /app/machine/queryMachineTranslateError
      */
     @RequestMapping(value = "/queryMachineTranslateError", method = RequestMethod.GET)
     public ResponseEntity<String> queryMachineTranslateError(@RequestParam(value = "communityId") String communityId,
@@ -64,4 +158,83 @@
         return getMachineTranslateErrorBMOImpl.get(machineTranslateErrorDto);
     }
 
+    /**
+     * 閲嶆柊閫佺墿鑱旂綉绯荤粺
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/openDoorLog
+     * @path /app/machine/openDoorLog
+     */
+    @RequestMapping(value = "/openDoorLog", method = RequestMethod.POST)
+    public ResponseEntity<String> openDoorLog(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "userId", "鏈寘鍚敤鎴蜂俊鎭�");
+        Assert.hasKeyAndValue(reqJson, "userName", "鏈寘鍚敤鎴峰悕绉�");
+        Assert.hasKeyAndValue(reqJson, "machineCode", "鏈寘鍚澶囩紪鐮�");
+        Assert.hasKeyAndValue(reqJson, "openTypeCd", "鏈寘鍚紑闂ㄦ柟寮�");
+        Assert.hasKeyAndValue(reqJson, "similar", "鏈寘鍚紑闂ㄧ浉浼煎害");
+        //Assert.hasKeyAndValue(reqJson, "photo", "鏈寘鍚姄鎷嶇収鐗�");
+        Assert.hasKeyAndValue(reqJson, "dateTime", "鏈寘鍚紑闂ㄦ椂闂�");
+        Assert.hasKeyAndValue(reqJson, "extCommunityId", "鏈寘鍚皬鍖轰俊鎭�");
+        Assert.hasKeyAndValue(reqJson, "recordTypeCd", "鏈寘鍚褰曠被鍨�");
+        MachineRecordDto machineRecordDto = BeanConvertUtil.covertBean(reqJson, MachineRecordDto.class);
+        machineRecordDto.setCommunityId(reqJson.getString("extCommunityId"));
+        machineRecordDto.setName(reqJson.getString("userName"));
+        if (reqJson.containsKey("idNumber")) {
+            machineRecordDto.setIdCard(reqJson.getString("idNumber"));
+        } else {
+            machineRecordDto.setIdCard("-1");
+        }
+        if (reqJson.containsKey("tel")) {
+            machineRecordDto.setTel(reqJson.getString("tel"));
+        } else {
+            machineRecordDto.setTel("-1");
+        }
+        return saveMachineRecordBMOImpl.saveRecord(machineRecordDto);
+    }
+
+    /**
+     * 鐗╄仈缃戠郴缁熸寚浠ゆ墽琛屾儏鍐�
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/cmdResult
+     * @path /app/machine/cmdResult
+     */
+    @RequestMapping(value = "/cmdResult", method = RequestMethod.POST)
+    public ResponseEntity<String> cmdResult(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "taskId", "鏈寘鍚换鍔′俊鎭�");
+        Assert.hasKeyAndValue(reqJson, "code", "鏈寘鍚粨鏋滅紪鐮�");
+        Assert.hasKeyAndValue(reqJson, "msg", "鏈寘鍚粨鏋滆鏄�");
+        MachineTranslateDto machineRecordDto = new MachineTranslateDto();
+        machineRecordDto.setMachineTranslateId(reqJson.getString("taskId"));
+        machineRecordDto.setState(reqJson.getIntValue("code") == 0
+                ? MachineTranslateDto.STATE_SUCCESS : MachineTranslateDto.STATE_ERROR);
+        machineRecordDto.setRemark(reqJson.getString("msg"));
+        return updateMachineTransactionStateBMOImpl.update(machineRecordDto);
+    }
+
+    /**
+     * 鐗╄仈缃戠郴缁熻澶囧績璺�
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/heartbeat
+     * @path /app/machine/heartbeat
+     */
+    @RequestMapping(value = "/heartbeat", method = RequestMethod.POST)
+    public ResponseEntity<String> heartbeat(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "taskId", "鏈寘鍚换鍔′俊鎭�");
+        Assert.hasKeyAndValue(reqJson, "machineCode", "鏈寘鍚澶囩紪鐮�");
+        Assert.hasKeyAndValue(reqJson, "heartbeatTime", "鏈寘鍚績璺虫椂闂�");
+        Assert.hasKeyAndValue(reqJson, "extCommunityId", "鏈寘鍚皬鍖篒D");
+        MachineDto machineDto = new MachineDto();
+        machineDto.setMachineCode(reqJson.getString("machineCode"));
+        machineDto.setCommunityId(reqJson.getString("extCommunityId"));
+        //machineDto.setHeartbeatTime(reqJson.getString("heartbeatTime"));
+        machineDto.setHeartbeatTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));//杩欓噷鑷繁鐢熸垚 涓嶈幏鍙栦紶閫掓椂闂� 鍥犱负鍙兘鏃堕挓涓嶄竴鑷� 瀵艰嚧鍓嶅彴鐘舵�佹樉绀轰笉姝e父
+
+        return machineHeartbeatBMOImpl.heartbeat(machineDto);
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.8.0