From 80324c33a1553aecf672a58f249207b7eb66dfdc Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期日, 26 一月 2020 00:45:28 +0800
Subject: [PATCH] 开发 道闸 开门接口 未开发完成

---
 Api/src/main/java/com/java110/api/listener/machineTranslate/MachineRoadGateOpenListener.java |  191 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 188 insertions(+), 3 deletions(-)

diff --git a/Api/src/main/java/com/java110/api/listener/machineTranslate/MachineRoadGateOpenListener.java b/Api/src/main/java/com/java110/api/listener/machineTranslate/MachineRoadGateOpenListener.java
index 6118793..e2bfd50 100644
--- a/Api/src/main/java/com/java110/api/listener/machineTranslate/MachineRoadGateOpenListener.java
+++ b/Api/src/main/java/com/java110/api/listener/machineTranslate/MachineRoadGateOpenListener.java
@@ -1,15 +1,24 @@
 package com.java110.api.listener.machineTranslate;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.smo.hardwareAdapation.ICarBlackWhiteInnerServiceSMO;
+import com.java110.core.smo.hardwareAdapation.ICarInoutInnerServiceSMO;
 import com.java110.core.smo.hardwareAdapation.IMachineInnerServiceSMO;
 import com.java110.dto.hardwareAdapation.CarBlackWhiteDto;
+import com.java110.dto.hardwareAdapation.CarInoutDto;
 import com.java110.dto.hardwareAdapation.MachineDto;
+import com.java110.entity.center.AppService;
 import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.ServiceCodeMachineTranslateConstant;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.api.machine.MachineResDataVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +27,7 @@
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -41,6 +51,9 @@
 
     @Autowired
     private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
+    @Autowired
+    private ICarInoutInnerServiceSMO carInoutInnerServiceSMOImpl;
 
     @Autowired
     private ICarBlackWhiteInnerServiceSMO carBlackWhiteInnerServiceSMOImpl;
@@ -86,9 +99,110 @@
 
         //杩涘叆
         if (MACHINE_DIRECTION_IN.equals(direction)) {
-            dealCarIn(context, reqJson, machineDtos.get(0), communityId, machineCode);
+            dealCarIn(event, context, reqJson, machineDtos.get(0), communityId);
+        } else {
+            dealCarOut(event, context, reqJson, machineDtos.get(0), communityId);
+        }
+    }
+
+    /**
+     * 杞﹁締鍑哄満
+     *
+     * @param event
+     * @param context
+     * @param reqJson
+     * @param machineDto
+     * @param communityId
+     */
+    private void dealCarOut(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson, MachineDto machineDto, String communityId) {
+
+        //棣栧厛鏌ヨ鏄惁杞﹁締鏈夎繘鍦�
+        CarInoutDto carInoutDto = new CarInoutDto();
+        carInoutDto.setStates(new String[]{"100300", "100400", "100600"});
+        carInoutDto.setCommunityId(communityId);
+        carInoutDto.setCarNum(reqJson.getString("carNum"));
+        List<CarInoutDto> carInoutDtos = carInoutInnerServiceSMOImpl.queryCarInouts(carInoutDto);
+
+        if (carInoutDtos == null || carInoutDtos.size() < 1) {//鏁版嵁鏈夐棶棰橈紝 鐩存帴鍑哄満
+            context.setResponseEntity(MachineResDataVo.getResData(MachineResDataVo.CODE_SUCCESS, "鏁版嵁鏈夐棶棰橈紝鏈煡鍒板叆鍦鸿褰曪紝鐩存帴鏀捐"));
+            return;
         }
 
+        CarInoutDto tmpCarInoutDto = carInoutDtos.get(0);
+        reqJson.put("inoutId", tmpCarInoutDto.getInoutId());
+
+        if (!"100400".equals(tmpCarInoutDto.getState())) {
+
+            dealCarOutIncomplete(event, context, reqJson, tmpCarInoutDto, machineDto);
+            return;
+        }
+
+        modifyCarInoutInfo(event, context, reqJson, tmpCarInoutDto, machineDto);
+        ResponseEntity<String> responseEntity = context.getResponseEntity();
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            context.setResponseEntity(MachineResDataVo.getResData(MachineResDataVo.CODE_ERROR, "鍚庡彴澶勭悊鏁版嵁寮傚父" + responseEntity.getBody()));
+            return;
+        }
+        context.setResponseEntity(MachineResDataVo.getResData(MachineResDataVo.CODE_SUCCESS, "鎴愬姛"));
+    }
+
+    /**
+     * 澶勭悊杞﹁締鏈畬鎴愭敮浠樺嚭鍦哄鐞�
+     *
+     * @param event
+     * @param context
+     * @param tmpCarInoutDto
+     * @param machineDto
+     */
+    private void dealCarOutIncomplete(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson, CarInoutDto tmpCarInoutDto, MachineDto machineDto) {
+        //鍒ゆ柇杞﹁締鏄惁鍦ㄧ櫧鍚嶅崟涓�
+        String carNum = reqJson.getString("carNum");
+        CarBlackWhiteDto carBlackWhiteDto = new CarBlackWhiteDto();
+        carBlackWhiteDto.setCommunityId(tmpCarInoutDto.getCommunityId());
+        carBlackWhiteDto.setCarNum(carNum);
+        carBlackWhiteDto.setBlackWhite(CAR_WHITE);
+        int count = carBlackWhiteInnerServiceSMOImpl.queryCarBlackWhitesCount(carBlackWhiteDto);
+        if (count > 0) {
+            modifyCarInoutInfo(event, context, reqJson, tmpCarInoutDto, machineDto);
+            context.setResponseEntity(MachineResDataVo.getResData(MachineResDataVo.CODE_SUCCESS, "鐧藉悕鍗曚腑鐩存帴鏀捐"));
+            return;
+        }
+
+        //鍒ゆ柇杞﹁締鍑虹鍜屽嚭鍞� 鏃堕棿鏄惁鍒版湡
+
+
+        context.setResponseEntity(MachineResDataVo.getResData(MachineResDataVo.CODE_ERROR, "杞﹁締鏈敮浠橈紝璇峰厛鏀粯"));
+    }
+
+    private void modifyCarInoutInfo(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson, CarInoutDto tmpCarInoutDto, MachineDto machineDto) {
+        HttpHeaders header = new HttpHeaders();
+        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+        AppService service = event.getAppService();
+        //娣诲姞鍗曞厓淇℃伅
+        businesses.add(modifyCarInout(reqJson, context, tmpCarInoutDto));
+        reqJson.put("inoutId", tmpCarInoutDto.getInoutId());
+        businesses.add(addCarInoutDetail(reqJson, context, tmpCarInoutDto.getCommunityId(), machineDto));
+        JSONObject paramInObj = super.restToCenterProtocol(businesses, context.getRequestCurrentHeaders());
+        //灏� rest header 淇℃伅浼犻�掑埌涓嬪眰鏈嶅姟涓幓
+        super.freshHttpHeader(header, context.getRequestCurrentHeaders());
+        ResponseEntity<String> responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
+        context.setResponseEntity(responseEntity);
+    }
+
+    private Object modifyCarInout(JSONObject reqJson, DataFlowContext context, CarInoutDto carInoutDto) {
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_CAR_INOUT);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessCarInout = new JSONObject();
+        businessCarInout.putAll(BeanConvertUtil.beanCovertMap(carInoutDto));
+        businessCarInout.put("state", "100500");
+        businessCarInout.put("outTime", DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_A));
+        //璁$畻 搴旀敹閲戦
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessCarInout", businessCarInout);
+        return business;
     }
 
     /**
@@ -97,9 +211,8 @@
      * @param reqJson
      * @param machineDto
      * @param communityId
-     * @param machineCode
      */
-    private void dealCarIn(DataFlowContext context, JSONObject reqJson, MachineDto machineDto, String communityId, String machineCode) {
+    private void dealCarIn(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson, MachineDto machineDto, String communityId) {
         //杞﹁締鏄惁榛戝悕鍗� 杞﹁締
         String carNum = reqJson.getString("carNum");
         CarBlackWhiteDto carBlackWhiteDto = new CarBlackWhiteDto();
@@ -112,8 +225,80 @@
             return;
         }
 
+        HttpHeaders header = new HttpHeaders();
+        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+
+        AppService service = event.getAppService();
+
+        //娣诲姞鍗曞厓淇℃伅
+        businesses.add(addCarInout(reqJson, context, communityId));
+        businesses.add(addCarInoutDetail(reqJson, context, communityId, machineDto));
+
+        JSONObject paramInObj = super.restToCenterProtocol(businesses, context.getRequestCurrentHeaders());
+
+        //灏� rest header 淇℃伅浼犻�掑埌涓嬪眰鏈嶅姟涓幓
+        super.freshHttpHeader(header, context.getRequestCurrentHeaders());
+
+        ResponseEntity<String> responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            context.setResponseEntity(MachineResDataVo.getResData(MachineResDataVo.CODE_ERROR, responseEntity.getBody()));
+            return;
+        }
+        context.setResponseEntity(MachineResDataVo.getResData(MachineResDataVo.CODE_SUCCESS, "鎴愬姛"));
+    }
 
 
+    /**
+     * 娣诲姞灏忓尯淇℃伅
+     *
+     * @param paramInJson     鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @param dataFlowContext 鏁版嵁涓婁笅鏂�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    private JSONObject addCarInout(JSONObject paramInJson, DataFlowContext dataFlowContext, String communityId) {
+
+        paramInJson.put("inoutId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_inoutId));
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_CAR_INOUT);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessCarInout = new JSONObject();
+        businessCarInout.put("carNum", paramInJson.getString("carNum"));
+        businessCarInout.put("inoutId", paramInJson.getString("inoutId"));
+        businessCarInout.put("communityId", communityId);
+        businessCarInout.put("state", "100300");
+        businessCarInout.put("inTime", DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_A));
+        //璁$畻 搴旀敹閲戦
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessCarInout", businessCarInout);
+        return business;
+    }
+
+    /**
+     * 娣诲姞灏忓尯淇℃伅
+     *
+     * @param paramInJson     鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+     * @param dataFlowContext 鏁版嵁涓婁笅鏂�
+     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+     */
+    private JSONObject addCarInoutDetail(JSONObject paramInJson, DataFlowContext dataFlowContext, String communityId, MachineDto machineDto) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_CAR_INOUT);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessCarInoutDetail = new JSONObject();
+        businessCarInoutDetail.put("carNum", paramInJson.getString("carNum"));
+        businessCarInoutDetail.put("inoutId", paramInJson.getString("inoutId"));
+        businessCarInoutDetail.put("communityId", communityId);
+        businessCarInoutDetail.put("machineId", machineDto.getMachineId());
+        businessCarInoutDetail.put("machineCode", machineDto.getMachineCode());
+        businessCarInoutDetail.put("carInout", machineDto.getDirection());
+        businessCarInoutDetail.put("detailId", "-1");
+        //璁$畻 搴旀敹閲戦
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessCarInoutDetail", businessCarInoutDetail);
+        return business;
     }
 
     @Override

--
Gitblit v1.8.0