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/TranslateOwnerToMachine.java | 107 ++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 84 insertions(+), 23 deletions(-)
diff --git a/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachine.java b/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachine.java
index 42e4812..c9218ac 100644
--- a/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachine.java
+++ b/HardwareAdapationService/src/main/java/com/java110/hardwareAdapation/thread/TranslateOwnerToMachine.java
@@ -1,10 +1,15 @@
package com.java110.hardwareAdapation.thread;
+import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
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.owner.IOwnerRoomRelInnerServiceSMO;
+import com.java110.core.smo.room.IRoomInnerServiceSMO;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.dto.RoomDto;
import com.java110.dto.hardwareAdapation.MachineDto;
import com.java110.dto.order.OrderDto;
import com.java110.hardwareAdapation.dao.IMachineTranslateServiceDao;
@@ -12,13 +17,12 @@
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.utils.util.Assert;
import com.java110.utils.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 浠庤鍗曚腑鍚屾涓氫富淇℃伅鑷宠澶囦腑闂磋〃
@@ -31,13 +35,18 @@
private IOrderInnerServiceSMO orderInnerServiceSMOImpl;
private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+ private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+ private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
private IMachineTranslateServiceDao machineTranslateServiceDaoImpl;
- public TranslateOwnerToMachine() {
- orderInnerServiceSMOImpl = ApplicationContextFactory.getBean("orderInnerServiceSMOImpl", IOrderInnerServiceSMO.class);
- ownerInnerServiceSMOImpl = ApplicationContextFactory.getBean("ownerInnerServiceSMOImpl", IOwnerInnerServiceSMO.class);
+ public TranslateOwnerToMachine(boolean state) {
+ TRANSLATE_STATE = state;
+ orderInnerServiceSMOImpl = ApplicationContextFactory.getBean(IOrderInnerServiceSMO.class.getName(), IOrderInnerServiceSMO.class);
+ ownerInnerServiceSMOImpl = ApplicationContextFactory.getBean(IOwnerInnerServiceSMO.class.getName(), IOwnerInnerServiceSMO.class);
+ ownerRoomRelInnerServiceSMOImpl = ApplicationContextFactory.getBean(IOwnerRoomRelInnerServiceSMO.class.getName(), IOwnerRoomRelInnerServiceSMO.class);
+ roomInnerServiceSMOImpl = ApplicationContextFactory.getBean(IRoomInnerServiceSMO.class.getName(), IRoomInnerServiceSMO.class);
machineInnerServiceSMOImpl = ApplicationContextFactory.getBean("machineInnerServiceSMOImpl", IMachineInnerServiceSMO.class);
machineTranslateServiceDaoImpl = ApplicationContextFactory.getBean("machineTranslateServiceDaoImpl", IMachineTranslateServiceDao.class);
@@ -68,16 +77,39 @@
List<OrderDto> orderDtos = orderInnerServiceSMOImpl.queryOwenrOrders(orderDto);
for (OrderDto tmpOrderDto : orderDtos) {
try {
- //鏍规嵁bId 鏌ヨ涓氫富淇℃伅
+ logger.debug("寮�濮嬪鐞嗚鍗�" + JSONObject.toJSONString(tmpOrderDto));
ownerDto = new OwnerDto();
- ownerDto.setbId(tmpOrderDto.getbId());
- List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+ if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())) {
+ //鍒ゆ柇鏄惁涓烘坊鍔犳埧灞�
+ OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+ ownerRoomRelDto.setbId(tmpOrderDto.getbId());
+ List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+ Assert.listOnlyOne(ownerRoomRelDtos, "鏁版嵁閿欒 涓氫富鎴垮眿鍏崇郴鏈壘鍒帮紝鎴栨壘鍒板鏉�" + JSONObject.toJSONString(tmpOrderDto));
+ ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
+ } else {
+ ownerDto.setbId(tmpOrderDto.getbId());
+ }
+
+ //鏍规嵁bId 鏌ヨ涓氫富淇℃伅
+
+ List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+
+ // 鎴垮眿淇℃伅
if (ownerDtos == null || ownerDtos.size() == 0) {
+ //鍒锋柊 鐘舵�佷负C1
+ orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
+ logger.debug("娌℃湁鏁版嵁鏁版嵁鐩存帴鍒蜂负C1" + JSONObject.toJSONString(tmpOrderDto));
continue;
}
- dealData(tmpOrderDto, ownerDtos.get(0));
+ RoomDto roomDto = new RoomDto();
+ roomDto.setOwnerId(ownerDtos.get(0).getOwnerId());
+ List<RoomDto> rooms = roomInnerServiceSMOImpl.queryRoomsByOwner(roomDto);
+
+ dealData(tmpOrderDto, ownerDtos, rooms);
//鍒锋柊 鐘舵�佷负C1
orderInnerServiceSMOImpl.updateBusinessStatusCd(tmpOrderDto);
+ logger.debug("澶勭悊璁㈠崟缁撴潫" + JSONObject.toJSONString(tmpOrderDto));
+
} catch (Exception e) {
logger.error("鎵ц璁㈠崟浠诲姟澶辫触", e);
}
@@ -88,33 +120,61 @@
* 灏嗕笟涓绘暟鎹悓姝ョ粰鎵�鏈夎灏忓尯璁惧
*
* @param tmpOrderDto
- * @param ownerDto
+ * @param ownerDtos
*/
- private void dealData(OrderDto tmpOrderDto, OwnerDto ownerDto) {
+ private void dealData(OrderDto tmpOrderDto, List<OwnerDto> ownerDtos, List<RoomDto> roomDtos) {
//鎷垮埌灏忓尯ID
- String communityId = ownerDto.getCommunityId();
-
+ String communityId = ownerDtos.get(0).getCommunityId();
//鏍规嵁灏忓尯ID鏌ヨ鐜版湁璁惧
MachineDto machineDto = new MachineDto();
machineDto.setCommunityId(communityId);
+ //String[] locationObjIds = new String[]{communityId};
+ List<String> locationObjIds = new ArrayList<>();
+ locationObjIds.add(communityId);
+ for (RoomDto roomDto : roomDtos) {
+ locationObjIds.add(roomDto.getUnitId());
+ locationObjIds.add(roomDto.getRoomId());
+ }
+ machineDto.setLocationObjIds(locationObjIds.toArray(new String[locationObjIds.size()]));
List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
- for (MachineDto tmpMachineDto : machineDtos) {
- if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
- saveMachineTranslate(tmpMachineDto, ownerDto);
- } else if (BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
- updateMachineTranslate(tmpMachineDto, ownerDto);
- } else if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
- deleteMachineTranslate(tmpMachineDto, ownerDto);
- } else {
+ for (OwnerDto ownerDto : ownerDtos) {
+ for (MachineDto tmpMachineDto : machineDtos) {
+ if("9996".equals(tmpMachineDto.getMachineTypeCd())){
+ continue;
+ }
+ if (BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())
+ || BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())
+ || BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
+ saveMachineTranslate(tmpMachineDto, ownerDto);
+// } else if (BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())) {
+// updateMachineTranslate(tmpMachineDto, ownerDto);
+ } else if (BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_INFO.equals(tmpOrderDto.getBusinessTypeCd())
+ || BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_ROOM_REL.equals(tmpOrderDto.getBusinessTypeCd())
+ ) {
+ deleteMachineTranslate(tmpMachineDto, ownerDto);
+ } else {
+
+ }
}
+
}
}
private void saveMachineTranslate(MachineDto tmpMachineDto, OwnerDto ownerDto) {
+ Map paramInfo = new HashMap();
+ paramInfo.put("machineId", tmpMachineDto.getMachineId());
+ paramInfo.put("objId", ownerDto.getMemberId());
+ paramInfo.put("statusCd", "0");
+
+ int count = machineTranslateServiceDaoImpl.queryMachineTranslatesCount(paramInfo);
+ 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
info.put("machineTranslateId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
@@ -137,6 +197,7 @@
info.put("objId", ownerDto.getMemberId());
info.put("state", "10000");
info.put("communityId", ownerDto.getCommunityId());
+ info.put("updateTime", new Date());
machineTranslateServiceDaoImpl.updateMachineTranslate(info);
}
--
Gitblit v1.8.0