mes-common/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketMessage.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketServer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> 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ï¼ç¨æ¥åæ¾æ¯ä¸ªå®¢æ·ç«¯å¯¹åºçMyWebSocket对象ã //è½ç¶@Componenté»è®¤æ¯å便¨¡å¼çï¼ä½springbootè¿æ¯ä¼ä¸ºæ¯ä¸ªwebsocketè¿æ¥åå§åä¸ä¸ªbeanï¼æä»¥å¯ä»¥ç¨ä¸ä¸ªéæsetä¿åèµ·æ¥ã // 注ï¼åºä¸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("ãwebsocketæ¶æ¯ãææ°çè¿æ¥ï¼æ»æ°ä¸º:"+webSockets.size()); } catch (Exception e) { } } /** * 龿¥å ³éè°ç¨çæ¹æ³ */ @OnClose public void onClose() { try { webSockets.remove(this); sessionPool.remove(this.userId); log.info("ãwebsocketæ¶æ¯ãè¿æ¥æå¼ï¼æ»æ°ä¸º:"+webSockets.size()); } catch (Exception e) { } } /** * æ¶å°å®¢æ·ç«¯æ¶æ¯åè°ç¨çæ¹æ³ * * @param message */ @OnMessage public void onMessage(String message) { log.info("ãwebsocketæ¶æ¯ãæ¶å°å®¢æ·ç«¯æ¶æ¯:"+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("ãwebsocketæ¶æ¯ãå¹¿ææ¶æ¯:"+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("ãwebsocketæ¶æ¯ã åç¹æ¶æ¯:"+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("ãwebsocketæ¶æ¯ã åç¹æ¶æ¯:"+message); session.getAsyncRemote().sendText(message); } catch (Exception e) { e.printStackTrace(); } } } } } mes-common/src/main/java/com/chinaztt/mes/common/server/WebSocketServer.java
ÎļþÒÑɾ³ý 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; /** * æ°é */ 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() + "ãMESæ¬å°æ¥æ å¹é é¶ä»¶å¯¹è±¡"); } 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; }