From 6ee9d58d62dbbccf95ce809f358ec9f8d088b705 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期五, 17 十一月 2023 09:16:16 +0800
Subject: [PATCH] Changes15 websocket
---
mes-common/pom.xml | 6
/dev/null | 178 -----------------------------
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java | 3
mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketMessage.java | 128 +++++++++++++++++++++
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java | 3
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java | 19 +-
6 files changed, 148 insertions(+), 189 deletions(-)
diff --git a/mes-common/pom.xml b/mes-common/pom.xml
index 3c97df9..5ea547e 100644
--- a/mes-common/pom.xml
+++ b/mes-common/pom.xml
@@ -31,7 +31,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
-
+ <dependency>
+ <groupId>jakarta.websocket</groupId>
+ <artifactId>jakarta.websocket-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
diff --git a/mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketMessage.java b/mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketMessage.java
new file mode 100644
index 0000000..cb0f091
--- /dev/null
+++ b/mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketMessage.java
@@ -0,0 +1,128 @@
+package com.chinaztt.mes.common.server;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/11/16
+ */
+@Component
+@Slf4j
+@ServerEndpoint("/websocket/{userId}") // 鎺ュ彛璺緞 ws://ip:绔彛/webSocket/userId;
+public class WebSocketMessage {
+
+ //涓庢煇涓鎴风鐨勮繛鎺ヤ細璇濓紝闇�瑕侀�氳繃瀹冩潵缁欏鎴风鍙戦�佹暟鎹�
+ private Session session;
+ /**
+ * 鐢ㄦ埛ID
+ */
+ private String userId;
+
+ //concurrent鍖呯殑绾跨▼瀹夊叏Set锛岀敤鏉ュ瓨鏀炬瘡涓鎴风瀵瑰簲鐨凪yWebSocket瀵硅薄銆�
+ //铏界劧@Component榛樿鏄崟渚嬫ā寮忕殑锛屼絾springboot杩樻槸浼氫负姣忎釜websocket杩炴帴鍒濆鍖栦竴涓猙ean锛屾墍浠ュ彲浠ョ敤涓�涓潤鎬乻et淇濆瓨璧锋潵銆�
+ // 娉細搴曚笅WebSocket鏄綋鍓嶇被鍚�
+ private static CopyOnWriteArraySet<WebSocketMessage> webSockets =new CopyOnWriteArraySet<>();
+ // 鐢ㄦ潵瀛樺湪绾胯繛鎺ョ敤鎴蜂俊鎭�
+ private static ConcurrentHashMap<String,Session> sessionPool = new ConcurrentHashMap<String,Session>();
+
+ /**
+ * 閾炬帴鎴愬姛璋冪敤鐨勬柟娉�
+ */
+ @OnOpen
+ public void onOpen(Session session, @PathParam(value="userId")String userId) {
+ try {
+ this.session = session;
+ this.userId = userId;
+ webSockets.add(this);
+ sessionPool.put(userId, session);
+ log.info("銆恮ebsocket娑堟伅銆戞湁鏂扮殑杩炴帴锛屾�绘暟涓�:"+webSockets.size());
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * 閾炬帴鍏抽棴璋冪敤鐨勬柟娉�
+ */
+ @OnClose
+ public void onClose() {
+ try {
+ webSockets.remove(this);
+ sessionPool.remove(this.userId);
+ log.info("銆恮ebsocket娑堟伅銆戣繛鎺ユ柇寮�锛屾�绘暟涓�:"+webSockets.size());
+ } catch (Exception e) {
+ }
+ }
+ /**
+ * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
+ *
+ * @param message
+ */
+ @OnMessage
+ public void onMessage(String message) {
+ log.info("銆恮ebsocket娑堟伅銆戞敹鍒板鎴风娑堟伅:"+message);
+ }
+
+ /** 鍙戦�侀敊璇椂鐨勫鐞�
+ * @param session
+ * @param error
+ */
+ @OnError
+ public void onError(Session session, Throwable error) {
+
+ log.error("鐢ㄦ埛閿欒,鍘熷洜:"+error.getMessage());
+ error.printStackTrace();
+ }
+
+
+ // 姝や负骞挎挱娑堟伅
+ public void sendAllMessage(String message) {
+ log.info("銆恮ebsocket娑堟伅銆戝箍鎾秷鎭�:"+message);
+ for(WebSocketMessage webSocket : webSockets) {
+ try {
+ if(webSocket.session.isOpen()) {
+ webSocket.session.getAsyncRemote().sendText(message);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ // 姝や负鍗曠偣娑堟伅
+ public void sendOneMessage(String userId, String message) {
+ Session session = sessionPool.get(userId);
+ if (session != null&&session.isOpen()) {
+ try {
+ log.info("銆恮ebsocket娑堟伅銆� 鍗曠偣娑堟伅:"+message);
+ session.getAsyncRemote().sendText(message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ // 姝や负鍗曠偣娑堟伅(澶氫汉)
+ public void sendMoreMessage(String[] userIds, String message) {
+ for(String userId:userIds) {
+ Session session = sessionPool.get(userId);
+ if (session != null&&session.isOpen()) {
+ try {
+ log.info("銆恮ebsocket娑堟伅銆� 鍗曠偣娑堟伅:"+message);
+ session.getAsyncRemote().sendText(message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ }
+
+}
diff --git a/mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketServer.java b/mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketServer.java
deleted file mode 100644
index be5cbf0..0000000
--- a/mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketServer.java
+++ /dev/null
@@ -1,178 +0,0 @@
-//package com.chinaztt.mes.common.server;
-//import com.alibaba.fastjson.JSON;
-//import com.alibaba.fastjson.JSONObject;
-//import lombok.extern.slf4j.Slf4j;
-//import org.apache.commons.lang3.StringUtils;
-//import org.springframework.stereotype.Component;
-//
-//import javax.websocket.*;
-//import javax.websocket.server.PathParam;
-//import javax.websocket.server.ServerEndpoint;
-//import java.io.IOException;
-//import java.util.HashMap;
-//import java.util.Iterator;
-//import java.util.concurrent.ConcurrentHashMap;
-///**
-// * @Author 寮犲
-// * @Date 2023/11/13
-// * @Params: WebSocketServer.sendInfo(浣跨敤JSON,鐢ㄦ埛鍚�);
-// * @Return
-// */
-////@ServerEndpoint("/websocket/{userId}")
-//@Component
-//@Slf4j
-//public class WebSocketServer {
-//
-// /**闈欐�佸彉閲忥紝鐢ㄦ潵璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁般�傚簲璇ユ妸瀹冭璁℃垚绾跨▼瀹夊叏鐨勩��*/
-// private static int onlineCount = 0;
-// /**concurrent鍖呯殑绾跨▼瀹夊叏Set锛岀敤鏉ュ瓨鏀炬瘡涓鎴风瀵瑰簲鐨凪yWebSocket瀵硅薄銆�*/
-// private static ConcurrentHashMap<String, WebSocketServer> webSocketMap = new ConcurrentHashMap<>();
-// /**涓庢煇涓鎴风鐨勮繛鎺ヤ細璇濓紝闇�瑕侀�氳繃瀹冩潵缁欏鎴风鍙戦�佹暟鎹�*/
-// private Session session;
-// /**鎺ユ敹userId*/
-// private String userId="";
-//
-// /**
-// * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
-// * */
-// @OnOpen
-// public void onOpen(Session session, @PathParam("userId") String userId) {
-// this.session = session;
-// this.userId=userId;
-// if(webSocketMap.containsKey(userId)){
-// webSocketMap.remove(userId);
-// //鍔犲叆set涓�
-// }else{
-// webSocketMap.put(userId,this);
-// //鍔犲叆set涓�
-// addOnlineCount();
-// //鍦ㄧ嚎鏁板姞1
-// }
-//
-// log.info("鐢ㄦ埛杩炴帴:"+userId+",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
-//
-// try {
-// HashMap<Object, Object> map = new HashMap<>();
-// map.put("key","杩炴帴鎴愬姛");
-// sendMessage(JSON.toJSONString(map));
-// } catch (IOException e) {
-// log.error("鐢ㄦ埛:"+userId+",缃戠粶寮傚父!!!!!!");
-// }
-// }
-//
-// /**
-// * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
-// */
-// @OnClose
-// public void onClose() {
-// if(webSocketMap.containsKey(userId)){
-// webSocketMap.remove(userId);
-// //浠巗et涓垹闄�
-// subOnlineCount();
-// }
-// log.info("鐢ㄦ埛閫�鍑�:"+userId+",褰撳墠鍦ㄧ嚎浜烘暟涓�:" + getOnlineCount());
-// }
-//
-// /**
-// * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
-// *
-// * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅*/
-// @OnMessage
-// public void onMessage(String message, Session session) {
-// log.info("鐢ㄦ埛娑堟伅:"+userId+",鎶ユ枃:"+message);
-// //鍙互缇ゅ彂娑堟伅
-// //娑堟伅淇濆瓨鍒版暟鎹簱銆乺edis
-// if(StringUtils.isNotBlank(message)){
-// try {
-// //瑙f瀽鍙戦�佺殑鎶ユ枃
-// JSONObject jsonObject = JSONObject.parseObject(message);
-// //杩藉姞鍙戦�佷汉(闃叉涓叉敼)
-// jsonObject.put("fromUserId",this.userId);
-// String fromUserId=jsonObject.getString("fromUserId");
-// //浼犻�佺粰瀵瑰簲toUserId鐢ㄦ埛鐨剋ebsocket
-// if(StringUtils.isNotBlank(fromUserId) && webSocketMap.containsKey(fromUserId)){
-// webSocketMap.get(fromUserId).sendMessage(jsonObject.toJSONString());
-// //鑷畾涔�-涓氬姟澶勭悊
-//
-//// DeviceLocalThread.paramData.put(jsonObject.getString("group"),jsonObject.toJSONString());
-// }else{
-// log.error("璇锋眰鐨剈serId:"+fromUserId+"涓嶅湪璇ユ湇鍔″櫒涓�");
-// //鍚﹀垯涓嶅湪杩欎釜鏈嶅姟鍣ㄤ笂锛屽彂閫佸埌mysql鎴栬�卹edis
-// }
-// }catch (Exception e){
-// e.printStackTrace();
-// }
-// }
-// }
-//
-// /**
-// * 鍙戠敓閿欒鏃跺��
-// * @param session
-// * @param error
-// */
-// @OnError
-// public void onError(Session session, Throwable error) {
-// log.error("鐢ㄦ埛閿欒:"+this.userId+",鍘熷洜:"+error.getMessage());
-// error.printStackTrace();
-// }
-// /**
-// * 瀹炵幇鏈嶅姟鍣ㄤ富鍔ㄦ帹閫�
-// */
-// public void sendMessage(String message) throws IOException {
-// //鍔犲叆绾跨▼閿�
-// synchronized (session){
-// try {
-// //鍚屾鍙戦�佷俊鎭�
-// this.session.getBasicRemote().sendText(message);
-// } catch (IOException e) {
-// log.error("鏈嶅姟鍣ㄦ帹閫佸け璐�:"+e.getMessage());
-// }
-// }
-// }
-//
-//
-// /**
-// * 鍙戦�佽嚜瀹氫箟娑堟伅
-// * */
-// /**
-// * 鍙戦�佽嚜瀹氫箟娑堟伅
-// * @param message 鍙戦�佺殑淇℃伅
-// * @param toUserId 濡傛灉涓簄ull榛樿鍙戦�佹墍鏈�
-// * @throws IOException
-// */
-// public static void sendInfo(String message,String toUserId) throws IOException {
-// //濡傛灉userId涓虹┖锛屽悜鎵�鏈夌兢浣撳彂閫�
-// if(StringUtils.isEmpty(toUserId)) {
-// //鍚戞墍鏈夌敤鎴峰彂閫佷俊鎭�
-// Iterator<String> itera = webSocketMap.keySet().iterator();
-// while (itera.hasNext()) {
-// String keys = itera.next();
-// WebSocketServer item = webSocketMap.get(keys);
-// item.sendMessage(message);
-// }
-// }
-// //濡傛灉涓嶄负绌猴紝鍒欏彂閫佹寚瀹氱敤鎴蜂俊鎭�
-// else if(webSocketMap.containsKey(toUserId)){
-// WebSocketServer item = webSocketMap.get(toUserId);
-// item.sendMessage(message);
-// }else{
-// log.error("璇锋眰鐨剈serId:"+toUserId+"涓嶅湪璇ユ湇鍔″櫒涓�");
-// }
-// }
-//
-// public static synchronized int getOnlineCount() {
-// return onlineCount;
-// }
-//
-// public static synchronized void addOnlineCount() {
-// WebSocketServer.onlineCount++;
-// }
-//
-// public static synchronized void subOnlineCount() {
-// WebSocketServer.onlineCount--;
-// }
-//
-// public static synchronized ConcurrentHashMap<String, WebSocketServer> getWebSocketMap(){
-// return WebSocketServer.webSocketMap;
-// }
-//}
\ No newline at end of file
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java
index 7e50cb5..bb82473 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java
+++ b/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java
@@ -108,6 +108,9 @@
*/
@ApiModelProperty(value = "闆朵欢鍙凤細鐢ㄤ簬鐢熶骇鐨勯浂浠跺彿")
private String partNo;
+
+ @ApiModelProperty(value = "闆朵欢缂栧彿锛氱敤浜庣敓浜х殑闆朵欢鍙�")
+ private String partId;
/**
* 鏁伴噺
*/
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
index 348755a..01b4adc 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
+++ b/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
@@ -257,8 +257,9 @@
private void changeAudit(CustomerOrder customerOrder, String isAudit) {
//瀹℃牳鐘舵�� 閫氳繃 璁㈠崟鐘舵�佸緟璁″垝
if (isAudit.equals(AuditStateStringValues.ACCEPTED)) {
+ //TODO: 瑕佸姞闆朵欢id鍙傛暟
Document document = documentMapper.selectById(customerOrder.getTechnologyDocumentId());
- Part part = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getEngChgLevel, "1").eq(Part::getPartNo, customerOrder.getPartNo()));
+ Part part = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getEngChgLevel, "1").eq(Part::getId,customerOrder.getPartId() ));
if (null == part) {
throw new RuntimeException("鏍规嵁闆朵欢缂栧彿 = 銆�" + customerOrder.getPartNo() + "銆慚ES鏈湴鏌ユ棤鍖归厤闆朵欢瀵硅薄");
}
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java
index 426e82c..510d7b7 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java
+++ b/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java
@@ -20,10 +20,7 @@
import com.chinaztt.mes.common.oa.OAResult;
import com.chinaztt.mes.common.util.StateResult;
import com.chinaztt.mes.plan.dto.*;
-import com.chinaztt.mes.plan.entity.MasterProductionSchedule;
-import com.chinaztt.mes.plan.entity.MasterProductionScheduleTheoryQuantity;
-import com.chinaztt.mes.plan.entity.MpsStructureComponent;
-import com.chinaztt.mes.plan.entity.OperationTaskProduce;
+import com.chinaztt.mes.plan.entity.*;
import com.chinaztt.mes.plan.mapper.*;
import com.chinaztt.mes.plan.service.CustomerOrderService;
import com.chinaztt.mes.plan.service.MasterProductionScheduleService;
@@ -90,7 +87,7 @@
private StructureMapper structureMapper;
private StateMachineFactory<MasterProductionScheduleStates, MasterProductionScheduleEvents> masterproductionscheduleStateMachineFactory;
private StateMachinePersister<MasterProductionScheduleStates, MasterProductionScheduleEvents, MasterProductionSchedule> persister;
-
+ private MoStructureComponentMapper moStructureComponentMapper;
@Override
public IPage<List<MasterProductionScheduleDTO>> getMasterProductionSchedulePage(Page page, QueryWrapper<MasterProductionScheduleDTO> masterProductionScheduleDTO) {
@@ -474,10 +471,14 @@
Long technologyDocumentId = p.getTechnologyDocumentId();
Document document = documentMapper.selectById(technologyDocumentId);
Long firstPart = document.getPartId();
- String url="http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_INFO_STD&userId=7632&inAttr={\"LOCATION_NO\": \"1019\",\"PART_NO\":"+p+"}";
- String body = HttpRequest.get(url).execute().body();
- JSONObject partInfo = JSONObject.parseObject(body);
- log.info("搴撳瓨闆朵欢======>"+partInfo);
+ List<MoStructureComponent> moStructureComponents = moStructureComponentMapper.selectList(new QueryWrapper<MoStructureComponent>().lambda().eq(MoStructureComponent::getPlanManufacturingOrderId, p.getId()));
+ moStructureComponents.forEach(m->{
+ Part part = partMapper.selectById(m.getPartId());
+ String url="http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_INFO_STD&userId=7632&inAttr={\"LOCATION_NO\": \"1019\",\"PART_NO\":"+part.getPartNo()+"}";
+ String body = HttpRequest.get(url).execute().body();
+ JSONObject partInfo = JSONObject.parseObject(body);
+ log.info("搴撳瓨闆朵欢==================================>"+partInfo);
+ });
});
return false;
}
--
Gitblit v1.9.3