| 
					
				 | 
			
			
				@@ -1,5 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.steerinfo.dil.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.steerinfo.dil.feign.IMFeign; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.steerinfo.dil.feign.TmsTruckFeign; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.steerinfo.dil.mapper.QmsQueueListMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.steerinfo.dil.model.QmsQueueList; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -40,7 +41,7 @@ public class QmsQueueResultServiceImpl implements IQmsQueueResultService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private QueuingRulesServiceImpl queuingRulesService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private TmsTruckFeign tmsTruckFeign; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private IMFeign imFeign; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 新增进厂排队实绩 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -56,21 +57,6 @@ public class QmsQueueResultServiceImpl implements IQmsQueueResultService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String orderNumber = (String) map.get("orderNumber"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //查询实绩总表ID 运力Id  物资Id (OO-->OOM 一对多)  只有钢材会有多条数据 但都属于钢材类型 取第一个获取物资ID匹配 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         map.putAll(qmsQueueResultMapper.queryCIdAndTIdByOrderNumber(orderNumber).get(0)); //使用传进来的map将数据一路带到尾 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //判断是否销售订单 销售订单进厂时查询装车点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal orderType = DataChange.dataToBigDecimal(map.get("orderType")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (orderType.intValue() == 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //查询当前订单关联几种物资 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<Integer> materialIdList = queuingRulesService.getAllMaterialId(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //取得月台ID、以及对应的物资Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<Map<String, Object>> platIdList = queuingRulesService.getPlatId(materialIdList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<Map<String, Object>> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (Map<String, Object> map1 : platIdList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                map1.put("orderId", map.get("orderId")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                list.add(map1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //远程调用 修改装车点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            tmsTruckFeign.updateLoadResultList(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取网格Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal gridId = queuingRulesService.calculateGridId(DataChange.dataToBigDecimal(map.get("materialId"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         map.put("gridId", gridId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -85,39 +71,46 @@ public class QmsQueueResultServiceImpl implements IQmsQueueResultService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qmsQueueResult.setInsertTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qmsQueueResult.setInsertUsername("admin"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return qmsQueueResultMapper.insertSelective(qmsQueueResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int i = qmsQueueResultMapper.insertSelective(qmsQueueResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //推送数据 给司机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pushCGMesToWebsocket(DataChange.dataToBigDecimal(map.get("orderId")).intValue(), gridId.intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 推送消息到websocket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void pushCGMesToWebsocket(Integer orderId, Integer gridId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //通过运输订单ID查询推送给司机的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> mesMap = qmsQueueResultMapper.sendEnFactoryMesToWebSocket(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //通过网格Id查询门岗名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mesMap.putAll(qmsQueueResultMapper.queryGatepostNameByGridId(gridId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HashMap<String, Object> sendMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("messageType", 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("receivePerson", mesMap.get("capacityNumber")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("sendPerson", "system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("messageContent", mesMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //调用websocket接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imFeign.sendToUser(sendMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 新增仓库排队实绩 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param map orderNumber运输订单号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param map orderNumber运输订单号  loadingId 装车点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public int addQueueResultByCk(Map<String, Object> map){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         QmsQueueResult qmsQueueResult = new QmsQueueResult(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //生成主键 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qmsQueueResult.setId(qmsQueueResultMapper.selectMaxId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //查询当前订单下所有的装车作业点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> loadingIdList = qmsQueueResultMapper.getAllLoadingByOrderNumber((String) map.get("orderNumber")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //遍历所有装车点查询排队车辆数 选择最少的一个先进行排队 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int platId = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int num = 100; // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (Integer platformId : loadingIdList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int count = queuingRulesService.queueCountByPlatformId(new BigDecimal(platformId)).intValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(count == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                platId = platformId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(count < num){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                num = count; //取代比较数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                platId = platformId; //替换月台ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取添加网格Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        map.put("queueLocationId", platId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("queueLocationId", map.get("loadingId")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         map.put("gridType", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        qmsQueueResult.setGridId(queuingRulesService.getGridIdByGatepostIdAndGridType(map)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal gridId = queuingRulesService.getGridIdByGatepostIdAndGridType(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        qmsQueueResult.setGridId(gridId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //通过运输订单号查询实绩ID 等数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         map.putAll(qmsQueueResultMapper.queryCIdAndTIdByOrderNumber((String) map.get("orderNumber")).get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qmsQueueResult.setResultApplyforTime(new Date()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -128,9 +121,26 @@ public class QmsQueueResultServiceImpl implements IQmsQueueResultService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qmsQueueResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qmsQueueResult.setInsertTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qmsQueueResult.setInsertUsername("admin"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pushCKMesToWebSocket(DataChange.dataToBigDecimal(map.get("orderId")).intValue(), gridId.intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return qmsQueueResultMapper.insertSelective(qmsQueueResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 推送仓库排队消息到websocket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void pushCKMesToWebSocket(Integer orderId, Integer gridId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //通过运输订单ID查询推送给司机的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> mesMap = qmsQueueResultMapper.sendWarehouseMesToWebSocket(orderId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mesMap.putAll(qmsQueueResultMapper.queryWarehouseNameByPlatformId(gridId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HashMap<String, Object> sendMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("messageType", 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("receivePerson", mesMap.get("capacityNumber")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("sendPerson", "system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendMap.put("messageContent", mesMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //调用websocket接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imFeign.sendToUser(sendMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 查看排队转移界面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param map 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -162,7 +172,7 @@ public class QmsQueueResultServiceImpl implements IQmsQueueResultService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 指令接收 判断条件:是否有排队结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 查询指令接收 判断条件:是否有排队结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 |