Commit a1fd278764b3a7b2ddee44748ddc944fb0e80321

Authored by Min
1 parent c5fa7bbb

1.websoket增加问答模式,处理一段时间后,ws断连问题

src/mes/productionExec/productionExecMain/index.js
@@ -394,37 +394,33 @@ const ProductionExecMain = baseProps => { @@ -394,37 +394,33 @@ const ProductionExecMain = baseProps => {
394 const { app = {} } = baseProps; 394 const { app = {} } = baseProps;
395 395
396 const [refreshCount, setRefreshCount] = useState(0); 396 const [refreshCount, setRefreshCount] = useState(0);
  397 + const [sStatusNew, setStatusNew] = useState(undefined);
397 398
398 - // useEffect(() => {  
399 - // const getValue = () => {  
400 - // const changeExecInfo = commonUtils.getAppData("changeExecInfo");  
401 - // if (changeExecInfo.dReplyPalletERp === 1) {  
402 - // try {  
403 - // const { sId } = changeExecInfo;  
404 - // const url = `${commonConfig.server_host}mqtt/updateFlushmes/${sId}`;  
405 - // commonServices.postValueService(null, {}, url).then(() => {  
406 - // props.onRefresh();  
407 - // setRefreshCount(pre => pre + 1);  
408 - // })  
409 - // } catch (error) {  
410 - // console.log("=====updateFlushmes报错", {  
411 - // error, changeExecInfo,  
412 - // });  
413 - // props.onRefresh();  
414 - // setRefreshCount(pre => pre + 1);  
415 - // }  
416 - // }  
417 - // };  
418 - //  
419 - // getValue();  
420 - // const timer = setInterval(() => {  
421 - // getValue();  
422 - // }, 1000);  
423 - //  
424 - // return () => {  
425 - // clearInterval(timer);  
426 - // };  
427 - // }, []); 399 + useEffect(() => {
  400 + const getValue = () => {
  401 + const changeExecInfo = commonUtils.getAppData("changeExecInfo");
  402 + setStatusNew(changeExecInfo.sStatus);
  403 +
  404 + const refreshExecInfo = commonUtils.getAppData("refreshExecInfo");
  405 + if (refreshExecInfo.dReplyPalletERp === 1) {
  406 + commonUtils.setAppData("refreshExecInfo", {
  407 + ...refreshExecInfo,
  408 + dReplyPalletERp: 0
  409 + });
  410 + props.onRefresh();
  411 + setRefreshCount(pre => pre + 1);
  412 + }
  413 + };
  414 +
  415 + getValue();
  416 + const timer = setInterval(() => {
  417 + getValue();
  418 + }, 1000);
  419 +
  420 + return () => {
  421 + clearInterval(timer);
  422 + };
  423 + }, []);
428 424
429 const { bFinish } = props; 425 const { bFinish } = props;
430 const [collapsed, setCollapsed] = useState(false); 426 const [collapsed, setCollapsed] = useState(false);
@@ -500,6 +496,7 @@ const ProductionExecMain = baseProps => { @@ -500,6 +496,7 @@ const ProductionExecMain = baseProps => {
500 {...props} 496 {...props}
501 changeExecInfo={app.changeExecInfo} 497 changeExecInfo={app.changeExecInfo}
502 refreshCount={refreshCount} 498 refreshCount={refreshCount}
  499 + sStatusNew={sStatusNew}
503 /> 500 />
504 )} 501 )}
505 </div> 502 </div>
@@ -530,7 +527,8 @@ const ProductionExecContentByType = props =&gt; { @@ -530,7 +527,8 @@ const ProductionExecContentByType = props =&gt; {
530 deviceTargetInfoConfig = {}, 527 deviceTargetInfoConfig = {},
531 deviceTargetInfoData = [], 528 deviceTargetInfoData = [],
532 setPagesLoading, 529 setPagesLoading,
533 - refreshCount = 0 530 + refreshCount = 0,
  531 + sStatusNew
534 } = props; 532 } = props;
535 533
536 /** 534 /**
@@ -580,7 +578,7 @@ const ProductionExecContentByType = props =&gt; { @@ -580,7 +578,7 @@ const ProductionExecContentByType = props =&gt; {
580 578
581 return showValue[flag]; 579 return showValue[flag];
582 }, 580 },
583 - [deviceTargetInfoConfig, deviceTargetInfoData] 581 + [deviceTargetInfoConfig, deviceTargetInfoData, sStatusNew]
584 ); 582 );
585 583
586 props = { ...props, sStatusNameProcess }; 584 props = { ...props, sStatusNameProcess };
src/models/app.js
@@ -69,6 +69,7 @@ export default { @@ -69,6 +69,7 @@ export default {
69 "17484876300007863197993856505000" : "queryTracking" 69 "17484876300007863197993856505000" : "queryTracking"
70 }, 70 },
71 changeExecInfo: {}, 71 changeExecInfo: {},
  72 + refreshExecInfo: {},
72 }, 73 },
73 reducers: { 74 reducers: {
74 saveToken(state, { payload: token }) { 75 saveToken(state, { payload: token }) {
@@ -219,6 +220,12 @@ export default { @@ -219,6 +220,12 @@ export default {
219 } 220 }
220 return state; 221 return state;
221 }, 222 },
  223 + saveRefreshExecInfo(state, { payload }) {
  224 + if (['/indexMes/productionExec'].includes(state?.currentMesPane?.sModelType)) {
  225 + localStorage.setItem(`${config.prefix}refreshExecInfo`, JSON.stringify({ ...payload || {} }));
  226 + }
  227 + return state;
  228 + },
222 saveCounter(state, { payload }) { 229 saveCounter(state, { payload }) {
223 return { ...state, counterInfo: payload }; 230 return { ...state, counterInfo: payload };
224 }, 231 },
@@ -745,6 +752,31 @@ export default { @@ -745,6 +752,31 @@ export default {
745 const msgData = JSON.parse(msg.data); 752 const msgData = JSON.parse(msg.data);
746 dispatch({ type: 'app/changeMachineData', payload: { ...msgData.msg || {} } }); 753 dispatch({ type: 'app/changeMachineData', payload: { ...msgData.msg || {} } });
747 } 754 }
  755 + } else if (rtmsg.action === 'flushData') {
  756 + let sReqId = rtmsg.reqId;
  757 + const flag = 'ack';
  758 + // 检查WebSocket连接是否存在且状态为打开
  759 + if (ws && ws.readyState === WebSocket.OPEN) {
  760 + // 使用标准的 sendWebSocketMessage 函数发送消息
  761 + commonFunc.sendWebSocketMessage(
  762 + ws,
  763 + 'ack_'+sReqId, // key: 操作类型
  764 + flag, // flag: 操作标志
  765 + 'noAction', // showType: 显示类型
  766 + userinfo.sId, // currUserId: 当前用户ID
  767 + null, // msgInfo: 消息信息
  768 + '', // sId: 操作数据主表数据ID
  769 + null, // sendTo: 消息接收人
  770 + { reqId: sReqId } // param: 其他参数
  771 + );
  772 + } else {
  773 + console.log('WebSocket连接未就绪,无法发送flushData响应');
  774 + }
  775 +
  776 + if (window.bChangeMachineData) {
  777 + const msgData = JSON.parse(msg.data);
  778 + dispatch({ type: 'app/saveRefreshExecInfo', payload: { ...msgData.msg || {} } });
  779 + }
748 } 780 }
749 }; 781 };
750 ws.onmessage = (msg) => { 782 ws.onmessage = (msg) => {