diff --git a/zi-wms-boot/src/main/java/com/zi/mwms/solution/config/WebSocketConfig.java b/zi-wms-boot/src/main/java/com/zi/mwms/solution/config/WebSocketConfig.java
new file mode 100644
index 0000000..49ab2ef
--- /dev/null
+++ b/zi-wms-boot/src/main/java/com/zi/mwms/solution/config/WebSocketConfig.java
@@ -0,0 +1,18 @@
+package com.zi.mwms.solution.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+@Configuration
+public class WebSocketConfig {
+ /**
+ * 注入ServerEndpointExporter,
+ * 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint
+ */
+ @Bean
+ public ServerEndpointExporter serverEndpointExporter() {
+ return new ServerEndpointExporter();
+ }
+
+}
\ No newline at end of file
diff --git a/zi-wms-pda/pom.xml b/zi-wms-pda/pom.xml
index 2794845..fd856da 100644
--- a/zi-wms-pda/pom.xml
+++ b/zi-wms-pda/pom.xml
@@ -153,6 +153,10 @@
jackson-dataformat-xml
2.12.4
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
\ No newline at end of file
diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java
index 8e2f30f..63c5694 100644
--- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java
+++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/InvoiceServiceImpl.java
@@ -2482,6 +2482,7 @@ public class InvoiceServiceImpl implements InvoiceService {
" count(*) AS ZROL, \r\n" +
" m1.SHIPREQUESTDETAILNAME , \r\n" +
" t.ERPLOCATION, \r\n" +
+ " sum(t.FQTY) FQTY, \r\n" +
" sum(m.QTY)MATERIALQUANTITY \r\n" +
" FROM \r\n" +
" MATERIALPACKINGSUB m \r\n" +
@@ -2557,7 +2558,8 @@ public class InvoiceServiceImpl implements InvoiceService {
//实际发货卷数
item.put("Z_ROL", mm.get("ZROL"));
//实际发货平方米
- item.put("Z_SQUE", mm.get("MATERIALQUANTITY"));
+// item.put("Z_SQUE", mm.get("MATERIALQUANTITY"));
+ item.put("Z_SQUE", mm.get("FQTY"));
itemArray.add(item);
}
@@ -2574,7 +2576,8 @@ public class InvoiceServiceImpl implements InvoiceService {
//实际发货卷数
body.put("Z_ROL", mm.get("ZROL")); //COUNT
//实际发货平方米
- body.put("Z_SQUE", mm.get("MATERIALQUANTITY"));
+// body.put("Z_SQUE", mm.get("MATERIALQUANTITY"));
+ body.put("Z_SQUE", mm.get("FQTY"));
}
}
diff --git a/zi-wms-pda/src/main/java/com/cim/idm/utils/WsServerEndpoint.java b/zi-wms-pda/src/main/java/com/cim/idm/utils/WsServerEndpoint.java
new file mode 100644
index 0000000..1e250cd
--- /dev/null
+++ b/zi-wms-pda/src/main/java/com/cim/idm/utils/WsServerEndpoint.java
@@ -0,0 +1,148 @@
+package com.cim.idm.utils;
+
+import com.cim.idm.framework.IDMFrameServiceProxy;
+import lombok.extern.slf4j.Slf4j;
+import org.json.JSONObject;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.OnClose;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/***
+ * 监听websocket地址 /myWs
+ */
+@ServerEndpoint("/socket/{userId}")
+@Component
+@Slf4j
+@EnableScheduling
+public class WsServerEndpoint {
+
+ static Map map = new ConcurrentHashMap();
+ /***
+ * 连接建立时执行的操作
+ * @param session
+ */
+ @OnOpen
+ public void onOpen(@PathParam("userId") String userId, Session session)
+ {
+// map.put(session.getId(),session);
+ map.put(userId,session);
+
+ log.info("websocket is open session=" + session);
+ log.info("websocket is open userId=" + userId);
+
+ }
+
+ /***
+ * 收到客户端消息执行的操作
+ * @param
+ */
+// @OnMessage
+// public void onMessage(byte[] message) throws IOException{
+//// byte[] data = Arrays.copyOfRange(message, 50, message.length);
+//// String msg = new String(data, "utf-8");
+// log.info("webSocket后台收到消息:" + msg);
+// }
+ @OnMessage
+ public void onMessage(String message, Session session) throws IOException {
+ System.out.println("收到客户端消息:" + message);
+ session.getBasicRemote().sendText("服务器收到消息:" + message);
+ }
+
+ /***
+ * 连接关闭时执行的操作
+ * @param session
+ */
+ @OnClose
+ public void OnClose(Session session)
+ {
+ map.remove(session.getId());
+ log.info("连接关闭时执行的操作");
+ }
+
+ /***
+ * 向客户端发送信息
+ */
+ @Scheduled(fixedRate = 300000)
+ public void sendMsg() throws IOException {
+// log.info("map," + map);
+ String sql = "SELECT\n" +
+ "'1' RECEIVEREQUESTDETAILNAME,\n" +
+ "SUM(m.REQUESTQUANTITY) REQUESTQUANTITY,\n" +
+ "SUM(m.ASSIGNEDQUANTITY) RECEIVEDQUANTITY,\n" +
+ "SUM(m.REQUESTQUANTITY - m.ASSIGNEDQUANTITY) AS MINUSQTY,\n" +
+ "m3.DESC_CN ,\n" +
+ "m.UNIT ,\n" +
+ "m.SDK_ID ,\n" +
+ "ss.SPECNAME ,\n" +
+ "m.PHASE ,\n" +
+ "m.MATERIALSPECNAME,\n" +
+ "m.SITENAME,\n" +
+ "m.SHIPREQUESTNAME RECEIVEREQUESTNAME,\n" +
+ "be.LOCATION_USER,\n" +
+ "be.ERPLOCATIONNAME,\n" +
+ "m2.ERPLOCATION,\n" +
+ "TO_CHAR(SYSDATE,'YYYY-MM-DD') RECEIVETIME,\n" +
+ "TO_CHAR(SYSDATE,'YYYY-MM-DD') MAKEDATE\n" +
+ "FROM\n" +
+ "MATERIALSHIPREQUESTDETAIL m\n" +
+ "LEFT JOIN MATERIALSHIPREQUEST m2 ON\n" +
+ "m.SHIPREQUESTNAME = m2.SHIPREQUESTNAME\n" +
+ "LEFT JOIN MATERIALSPEC m3 ON\n" +
+ "m.MATERIALSPECNAME = m3.MATERIALSPECNAME\n" +
+ "LEFT JOIN SDK_SPEC ss ON\n" +
+ "m.SDK_ID = ss.SDK_ID\n" +
+ "--\\t\\t\\t\\tLEFT JOIN SUPPLIER S ON\n" +
+ "--\\t\\t\\t\\tm2.SUPPLIERNO = S.SUPPLIERNO\n" +
+ "LEFT JOIN MATERIALUNIT MM ON\n" +
+ "MM.FNUMBER = m.UNIT\n" +
+ "LEFT JOIN BS_ERPLOCATION be ON\n" +
+ "m2.ERPLOCATION = be.ERPLOCATIONNAME\n" +
+ "--\\t\\t\\t\\tLEFT JOIN ORG o ON\n" +
+ "--\\t\\t\\t\\to.ORGNO = m2.STOCKORGNO\n" +
+ "LEFT JOIN STORAGESPEC sss ON\n" +
+ "m.LOCATIONNAME = sss.STORAGENAME\n" +
+ "WHERE \n" +
+ "ORDERDATE >= SYSDATE - INTERVAL '5' MINUTE\n" +
+ "AND m2.ERPLOCATION IS NOT NULL\n" +
+ "AND be.LOCATION_USER = :LOCATION_USER\n" +
+ "GROUP BY\n" +
+ "m3.DESC_CN ,\n" +
+ "m.UNIT ,\n" +
+ "m.SDK_ID ,\n" +
+ "ss.SPECNAME ,\n" +
+ "m.PHASE ,\n" +
+ "m.MATERIALSPECNAME,\n" +
+ "m.SITENAME,\n" +
+ "m.SHIPREQUESTNAME,\n" +
+ "be.LOCATION_USER,\n" +
+ "be.ERPLOCATIONNAME,\n" +
+ "m2.ERPLOCATION";
+ Map bindMap = new HashMap();
+ bindMap.put("LOCATION_USER", map.keySet().iterator().next());
+ List