From b09e1a8b036553d1e161d127aa738a504593490a Mon Sep 17 00:00:00 2001
From: mrzcc <121184950@qq.com>
Date: 星期三, 19 二月 2020 12:14:55 +0800
Subject: [PATCH] 优化巡检路线查询sql

---
 HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachineChangeMachine.java |   67 ++++++++++++++++++++++++++++-----
 1 files changed, 56 insertions(+), 11 deletions(-)

diff --git a/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachineChangeMachine.java b/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachineChangeMachine.java
index ed4239a..dfb2165 100644
--- a/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachineChangeMachine.java
+++ b/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachineChangeMachine.java
@@ -5,7 +5,9 @@
 import com.java110.core.smo.hardwareAdapation.IMachineInnerServiceSMO;
 import com.java110.core.smo.order.IOrderInnerServiceSMO;
 import com.java110.core.smo.owner.IOwnerInnerServiceSMO;
-import com.java110.dto.OwnerDto;
+import com.java110.core.smo.room.IRoomInnerServiceSMO;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.RoomDto;
 import com.java110.dto.hardwareAdapation.MachineDto;
 import com.java110.dto.order.OrderDto;
 import com.java110.hardwareAdapation.dao.IMachineTranslateServiceDao;
@@ -17,6 +19,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -27,12 +31,13 @@
  */
 public class TranslateOwnerToMachineChangeMachine implements Runnable {
     Logger logger = LoggerFactory.getLogger(TranslateOwnerToMachineChangeMachine.class);
-    public static final long DEFAULT_WAIT_SECOND = 5000 * 6; // 榛樿30绉掓墽琛屼竴娆�
+    public static final long DEFAULT_WAIT_SECOND = 1000 * 60; // 榛樿30绉掓墽琛屼竴娆�
     public static boolean TRANSLATE_STATE = false;
 
     private IOrderInnerServiceSMO orderInnerServiceSMOImpl;
     private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
     private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
 
     private IMachineTranslateServiceDao machineTranslateServiceDaoImpl;
 
@@ -40,6 +45,7 @@
         TRANSLATE_STATE = state;
         orderInnerServiceSMOImpl = ApplicationContextFactory.getBean(IOrderInnerServiceSMO.class.getName(), IOrderInnerServiceSMO.class);
         ownerInnerServiceSMOImpl = ApplicationContextFactory.getBean(IOwnerInnerServiceSMO.class.getName(), IOwnerInnerServiceSMO.class);
+        roomInnerServiceSMOImpl = ApplicationContextFactory.getBean(IRoomInnerServiceSMO.class.getName(), IRoomInnerServiceSMO.class);
         machineInnerServiceSMOImpl = ApplicationContextFactory.getBean("machineInnerServiceSMOImpl", IMachineInnerServiceSMO.class);
         machineTranslateServiceDaoImpl = ApplicationContextFactory.getBean("machineTranslateServiceDaoImpl", IMachineTranslateServiceDao.class);
 
@@ -69,6 +75,7 @@
         OrderDto orderDto = new OrderDto();
         List<OrderDto> orderDtos = orderInnerServiceSMOImpl.queryMachineOrders(orderDto);
         for (OrderDto tmpOrderDto : orderDtos) {
+            logger.debug("寮�濮嬪鐞嗚鍗�" + JSONObject.toJSONString(tmpOrderDto));
             try {
                 //鏍规嵁bId 鏌ヨ纭欢淇℃伅
                 machineDto = new MachineDto();
@@ -77,10 +84,13 @@
                 if (machineDtos == null || machineDtos.size() == 0) {
                     //鍒锋柊 鐘舵�佷负C1
                     orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
-                    logger.debug("娌℃湁鏁版嵁鏁版嵁鐩存帴鍒蜂负C1"+ JSONObject.toJSONString(tmpOrderDto));
+                    logger.debug("娌℃湁鏁版嵁鏁版嵁鐩存帴鍒蜂负C1" + JSONObject.toJSONString(tmpOrderDto));
                     continue;
                 }
-                dealData(tmpOrderDto, machineDtos.get(0));
+                if (!"9996".equals(machineDtos.get(0).getMachineTypeCd())) {
+                    dealData(tmpOrderDto, machineDtos.get(0));
+                }
+
                 //鍒锋柊 鐘舵�佷负C1
                 orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
             } catch (Exception e) {
@@ -103,13 +113,36 @@
         //鏍规嵁灏忓尯ID鏌ヨ鐜版湁璁惧
         OwnerDto ownerDto = new OwnerDto();
         ownerDto.setCommunityId(communityId);
-        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        List<OwnerDto> ownerDtos = null;
+        String locationTypeCd = machineDto.getLocationTypeCd();
 
+        if ("1000,1001,1002,1003".contains(locationTypeCd)) {//鏌ヨ鏁翠釜灏忓尯鐨勪笟涓�
+            ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        } else if ("2000".equals(locationTypeCd)) {//2000 鍗曞厓闂� 锛屽垯杩欎釜鍗曞厓涓嬬殑涓氫富鍚屾
+            //鍏堟牴鎹崟鍏冮棬ID 鏌ヨ 鎴垮眿
+            RoomDto roomDto = new RoomDto();
+            roomDto.setUnitId(machineDto.getLocationObjId());
+            roomDto.setCommunityId(machineDto.getCommunityId());
+            List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+            if (roomDtos == null || roomDtos.size() == 0) { // 鍗曞厓涓嬫病鏈夋埧灞�
+                return;
+            }
+            ownerDto.setRoomIds(getRoomIds(roomDtos));
+            ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        } else if ("3000".equals(locationTypeCd)) {// 3000 鎴垮眿闂�
+            ownerDto.setRoomId(machineDto.getLocationObjId());
+            ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        }
+
+        if (ownerDtos == null) {
+            return;
+        }
         for (OwnerDto tmpOwnerDto : ownerDtos) {
-            if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_MACHINE.equals(tmpOrderDto.getBusinessTypeCd())) {
+            if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_MACHINE.equals(tmpOrderDto.getBusinessTypeCd())
+                    || BusinessTypeConstant.BUSINESS_TYPE_UPDATE_MACHINE.equals(tmpOrderDto.getBusinessTypeCd())) {
                 saveMachineTranslate(machineDto, tmpOwnerDto);
-            } else if (BusinessTypeConstant.BUSINESS_TYPE_UPDATE_MACHINE.equals(tmpOrderDto.getBusinessTypeCd())) {
-                updateMachineTranslate(machineDto, tmpOwnerDto);
+//            } else if (BusinessTypeConstant.BUSINESS_TYPE_UPDATE_MACHINE.equals(tmpOrderDto.getBusinessTypeCd())) {
+//                updateMachineTranslate(machineDto, tmpOwnerDto);
             } else if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_MACHINE.equals(tmpOrderDto.getBusinessTypeCd())) {
                 deleteMachineTranslate(machineDto, tmpOwnerDto);
             } else {
@@ -119,15 +152,23 @@
 
     }
 
+    private String[] getRoomIds(List<RoomDto> roomDtos) {
+        List<String> roomIds = new ArrayList<String>();
+        for (RoomDto roomDto : roomDtos) {
+            roomIds.add(roomDto.getRoomId());
+        }
+        return roomIds.toArray(new String[roomIds.size()]);
+    }
+
     private void saveMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
         Map paramInfo = new HashMap();
         paramInfo.put("machineId", tmpMachineDto.getMachineId());
         paramInfo.put("objId", ownerDto.getMemberId());
 
         int count = machineTranslateServiceDaoImpl.queryMachineTranslatesCount(paramInfo);
-        if(count >0){
-            updateMachineTranslate(tmpMachineDto,ownerDto);
-            return ;
+        if (count > 0) {
+            updateMachineTranslate(tmpMachineDto, ownerDto);
+            return;
         }
         Map info = new HashMap();
         //machine_id,machine_code,status_cd,type_cd,machine_translate_id,obj_id,obj_name,state,community_id,b_id
@@ -151,7 +192,9 @@
         info.put("objId", ownerDto.getMemberId());
         info.put("state", "10000");
         info.put("communityId", ownerDto.getCommunityId());
+        info.put("updateTime", new Date());
         machineTranslateServiceDaoImpl.updateMachineTranslate(info);
+
 
     }
 
@@ -162,6 +205,8 @@
         info.put("objId", ownerDto.getMemberId());
         info.put("statusCd", StatusConstant.STATUS_CD_INVALID);
         info.put("communityId", ownerDto.getCommunityId());
+        info.put("updateTime", new Date());
+
         machineTranslateServiceDaoImpl.updateMachineTranslate(info);
 
     }

--
Gitblit v1.8.0