From 2c7661d0bca739a9b403cdd420d2b91eb77470e6 Mon Sep 17 00:00:00 2001 From: admin <15939171744@163.com> Date: 星期一, 29 四月 2024 19:48:32 +0800 Subject: [PATCH] - --- jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java | 7 jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java | 14 jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java | 84 ++++ jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java | 4 jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java | 18 + jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java | 5 jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue | 835 ++++++++++++++++++++++++++++++++++++++++++++++ jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java | 3 jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java | 17 jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java | 36 + jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java | 5 jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js | 20 + jcdm-admin/src/main/resources/application-druid.yml | 2 13 files changed, 1,038 insertions(+), 12 deletions(-) diff --git a/jcdm-admin/src/main/resources/application-druid.yml b/jcdm-admin/src/main/resources/application-druid.yml index af3fb75..51f6d02 100644 --- a/jcdm-admin/src/main/resources/application-druid.yml +++ b/jcdm-admin/src/main/resources/application-druid.yml @@ -23,6 +23,8 @@ # password: JCDM@2023 password: admin@123 # password: 1!deshine +# password: 123456 + # 浠庡簱鏁版嵁婧� slave: diff --git a/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java b/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java index 7cabfb5..94e0f6c 100644 --- a/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java +++ b/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java @@ -111,11 +111,12 @@ // 杩囨护璇锋眰 .authorizeRequests() // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶 - .antMatchers("/login", "/register", "/captchaImage","/websocket/**","/postWebsocket/**","/em/inspectionPlanTask/**","/em/inspectionPlanItemsProject/**","/jcdmMes/**").permitAll() + .antMatchers("/login", "/register", "/captchaImage","/websocket/**","/postWebsocket/**","/em/inspectionPlanTask/**","/em/inspectionPlanItemsProject/**").permitAll() // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂� .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/sendDemo/push").permitAll() + .antMatchers("/jcdmMes/deviceResultFeedback").permitAll() // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇� .anyRequest().authenticated() .and() diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java index 40ddd9b..e8acbcc 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java @@ -106,6 +106,15 @@ } /** + * 鎵爜纭 + */ + @GetMapping("/yzUpdateResults") + public AjaxResult yzUpdateResults(BsFormulaChildInfo bsFormulaChildInfo) + { + return bsFormulaChildInfoService.yzUpdateResults(bsFormulaChildInfo); + } + + /** * 鏀捐璇风┖鐘舵�� */ @GetMapping("/workpieceRelease") @@ -124,6 +133,15 @@ } /** + * 鎷х揣鍚庢洿鏂板搴旀暟鎹� + */ + @GetMapping("/yzUpdateTighteningFormula") + public AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo) + { + return bsFormulaChildInfoService.yzUpdateTighteningFormula(bsFormulaChildInfo); + } + + /** * 瀵煎嚭閰嶆柟閰嶇疆瀛愪俊鎭垪琛� */ @PreAuthorize("@ss.hasPermi('bs:formulaChild:export')") diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java index e83c15d..9de6261 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java @@ -76,8 +76,7 @@ public BsFormulaChildInfo getCount(String productCode,String processesCode); + AjaxResult yzUpdateResults(BsFormulaChildInfo bsFormulaChildInfo); - - - + AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo); } diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java index 9fea30c..cd0b658 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java @@ -145,6 +145,90 @@ } @Override + public AjaxResult yzUpdateResults(BsFormulaChildInfo bsFormulaChildInfo) { + String result = ""; + List<BsFormulaChildInfo> bsFormulaChildInfos = new ArrayList<>(); + List<BsFormulaChildInfo> infos = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>() + .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getLocationCode()) + .eq(BsFormulaChildInfo::getProductCode, bsFormulaChildInfo.getProductCode()) + .eq(BsFormulaChildInfo::getOperationType, "2") + ); + for (BsFormulaChildInfo formulaChildInfo : infos) { + if(bsFormulaChildInfo.getScanBarcode().contains(formulaChildInfo.getMaterialCode())){ + bsFormulaChildInfos.add(formulaChildInfo); + break; + } + } + if(bsFormulaChildInfos.size()>0){ + String spareField4 = bsFormulaChildInfos.get(0).getSpareField4(); + bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getScanBarcode()); + bsFormulaChildInfos.get(0).setResults("OK"); + bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0)); + bsFormulaChildInfo.setParamValue(bsFormulaChildInfo.getScanBarcode()); + bsFormulaChildInfo.setParamCode(bsFormulaChildInfos.get(0).getParamCode()); + bsFormulaChildInfo.setSfcBarcode(bsFormulaChildInfo.getSfcBarcode()); + addParameterCollection(bsFormulaChildInfo); + if (spareField4 != null && !spareField4.isEmpty()) { + // 鎵ц鎿嶄綔 + if(bsFormulaChildInfos.get(0).getSpareField4().equals("1")){ + try { + result = "3"; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + }else { + result = "1"; + } + return AjaxResult.success(result); + } + + @Override + public AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo) { + String result = "1"; + BsFormulaChildInfo getMaterTwo = new BsFormulaChildInfo(); + getMaterTwo.setProcessesCode(bsFormulaChildInfo.getLocationCode()); + getMaterTwo.setOperationType("2"); + List<BsFormulaChildInfo> operationType = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(getMaterTwo); + List<String> collect = operationType.stream().map(BsFormulaChildInfo::getResults).collect(Collectors.toList()); + for (String s : collect) { + if(s.equals("")){ + return AjaxResult.error("鎵弿鏈畬鎴愶紝绂佹鎷х揣鎿嶄綔锛�"); + } + } + BsFormulaChildInfo listQuery = new BsFormulaChildInfo(); + listQuery.setParamCode(bsFormulaChildInfo.getParamCode()); + String paramCode = bsFormulaChildInfo.getTightenTheArray(); + if(paramCode.contains("N")){ + List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(listQuery); + bsFormulaChildInfos.get(0).setResults("NG"); + bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getTightenTheArray()); + bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0)); + return AjaxResult.error("鎵弿缁撴灉NG,璇烽噸鏂版壂鎻忥紒"); + }else { + List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(listQuery); + bsFormulaChildInfos.get(0).setResults("OK"); + bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getTightenTheArray()); + bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0)); + String spareField4 = bsFormulaChildInfos.get(0).getSpareField4(); + if (spareField4 != null && !spareField4.isEmpty()) { + // 鎵ц鎿嶄綔 + if(bsFormulaChildInfos.get(0).getSpareField4().equals("1")){ + try { +// WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), "OUT"); + result = "2"; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + } + return AjaxResult.success(result); + } + + @Override public BsFormulaChildInfo releaseCheck(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoMapper.releaseCheck(bsFormulaChildInfo); } diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java index c4d4395..802b6e6 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java +++ b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java @@ -273,12 +273,11 @@ @Override public void replaceAssemblyCode(DaParamCollection daParamCollection) { List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>() - .eq(DaParamCollection::getSfcCode, daParamCollection.getSfcCode()) - .eq(DaParamCollection::getLocationCode, daParamCollection.getLocationCode()) + .eq(DaParamCollection::getSfcCode, daParamCollection.getYzSfcCode()) ); if(list.size() > 0){ for (DaParamCollection paramCollection : list) { - paramCollection.setSfcCode(daParamCollection.getYzSfcCode()); + paramCollection.setSfcCode(daParamCollection.getSfcCode()); daParamCollectionService.saveOrUpdate(paramCollection); } } diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java index 22f1bcf..c9bdf04 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java @@ -61,8 +61,10 @@ lists.add(OPCElement.PACK_OP230_RecordData);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP240_RecordData);//璇锋眰璁板綍鏁版嵁. lists.add(OPCElement.PACK_OP240_AngleResult);//璇锋眰璁板綍鏁版嵁 - lists.add(OPCElement.PACK_OP2502_RecordData);//璇锋眰璁板綍鏁版嵁. +// lists.add(OPCElement.PACK_OP2502_RecordData);//璇锋眰璁板綍鏁版嵁. + lists.add(OPCElement.PACK_OP2501_AngleResult);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP2502_AngleResult);//璇锋眰璁板綍鏁版嵁 + lists.add(OPCElement.PACK_OP2503_AngleResult);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP260_RecordData);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP260_AngleResult);//璇锋眰璁板綍鏁版嵁 lists.add(OPCElement.PACK_OP270_RecordData);//璇锋眰璁板綍鏁版嵁 diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java index e222755..f11841d 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java @@ -19,8 +19,11 @@ public static final String PACK_OP240_RecordData = "PACK.OP240.RecordData";//璇锋眰璁板綍鏁版嵁 public static final String PACK_OP240_AngleResult = "PACK.OP240.AngleResult";//璇锋眰鎷х揣鏁版嵁 - public static final String PACK_OP2502_RecordData = "PACK.OP250-2.RecordData";//璇锋眰璁板綍鏁版嵁 - public static final String PACK_OP2502_AngleResult = "PACK.OP2502-2.AngleResult";//璇锋眰鎷х揣鏁版嵁 +// public static final String PACK_OP2502_RecordData = "PACK.OP250-2.RecordData";//璇锋眰璁板綍鏁版嵁 + public static final String PACK_OP2501_AngleResult = "PACK.OP250-1.AngleResult";//璇锋眰鎷х揣鏁版嵁 + public static final String PACK_OP2502_AngleResult = "PACK.OP250-2.AngleResult";//璇锋眰鎷х揣鏁版嵁 + public static final String PACK_OP2503_AngleResult = "PACK.OP250-3.AngleResult";//璇锋眰鎷х揣鏁版嵁 + /** * OP260 diff --git a/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java b/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java index 139641f..b362bc1 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java +++ b/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java @@ -1,13 +1,45 @@ package com.jcdm.main.restful.factoryMes.controller; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; import com.jcdm.main.restful.factoryMes.service.RestfulService; +import com.jcdm.main.restful.qingYan.doman.ChildVO; +import com.jcdm.main.restful.qingYan.doman.ParentVO; import java.text.SimpleDateFormat; import java.util.*; public class TestClass { public static void main(String[] args) { -// System.out.println(RestfulService.getProductionWorkOrderRequest("0RSPA001111111E4T0000003","POP010")); - System.out.println(RestfulService.getWorkReportResultFeedback("0RSPA001111111E4T0000003","POP010","2024-04-26 09:38:03")); + String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback"; + +// System.out.println(RestfulService.getProductionWorkOrderRequest("0RSPA001111111E4T0000007","POP230")); +// System.out.println(RestfulService.getWorkReportResultFeedback("0RSPB001139E3AE4X0000007","POP230","2024-04-26 09:38:03")); + List<ChildVO> childVOList = new ArrayList<>(); + ParentVO vo = new ParentVO(); + ChildVO childVO = new ChildVO(); + childVO.setItemCode("XTSX_XTID"); + childVO.setItemType("1"); + childVO.setItemText("绠变綋鐮�"); + childVO.setItemValue("GLTEST02883333240429"); + childVO.setCheckResult("1"); + childVO.setCheckTime("2024-04-29 15:15:00"); +// ChildVO childVO1 = new ChildVO(); +// childVO1.setItemCode("XTSX_XTQXJG"); +// childVO1.setItemType("3"); +// childVO1.setItemText("绠变綋娓呮礂缁撴灉"); +// childVO1.setItemValue("S"); +// childVO1.setCheckResult("1"); +// childVO1.setCheckTime("2024-04-29 15:15:00"); +// childVOList.add(childVO1); + childVOList.add(childVO); + vo.setSiteCode("3983"); + vo.setRecordId("100000004"); + vo.setStationCode("POP230"); + vo.setProductNum("0RSPB001139E3AE4X0000007"); + vo.setTotalResult("1"); + vo.setCheckList(childVOList); + System.out.println(HttpRequest.post(url).body(JSONUtil.toJsonStr(vo)).execute()); + } } diff --git a/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java new file mode 100644 index 0000000..abd1e46 --- /dev/null +++ b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java @@ -0,0 +1,14 @@ +package com.jcdm.main.restful.qingYan.doman; + +import lombok.Data; + +@Data +public class ChildVO { + + private String itemCode; + private String itemType; + private String itemText; + private String itemValue; + private String checkResult; + private String checkTime; +} diff --git a/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java new file mode 100644 index 0000000..3c210cb --- /dev/null +++ b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java @@ -0,0 +1,17 @@ +package com.jcdm.main.restful.qingYan.doman; + +import lombok.Data; + +import java.util.List; + +@Data +public class ParentVO { + + private String siteCode; + private String recordId; + private String stationCode; + private String productNum; + private String totalResult; + private List<ChildVO> checkList; + +} diff --git a/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js b/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js index 9b7d04f..f46fea0 100644 --- a/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js +++ b/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js @@ -38,6 +38,16 @@ } // 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� +export function yzUpdateResults(query) { + return request({ + url: '/bs/formulaChild/yzUpdateResults', + method: 'get', + params: query + + }) +} + +// 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� export function workpieceRelease(query) { return request({ url: '/bs/formulaChild/workpieceRelease', @@ -48,6 +58,16 @@ } // 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� +export function yzUpdateTighteningFormula(query) { + return request({ + url: '/bs/formulaChild/yzUpdateTighteningFormula', + method: 'get', + params: query + + }) +} + +// 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� export function updateTighteningFormula(query) { return request({ url: '/bs/formulaChild/updateTighteningFormula', diff --git a/jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue b/jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue new file mode 100644 index 0000000..66292a4 --- /dev/null +++ b/jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue @@ -0,0 +1,835 @@ +<template> + <div class="app-container"> + <el-row :gutter="5"> + <el-col :span="7"> + <el-card shadow="never"> + <span class="head-font">宸ヤ綅缂栧彿 : {{headContent.processesCode}}</span> + </el-card> + </el-col> + <el-col :span="7"> + <el-card shadow="never"> + <span class="head-font">宸ヤ綅鍚嶇О : {{headContent.processesName}}</span> + </el-card> + </el-col> + <el-col :span="10"> + <el-card shadow="never"> + <span class="head-font">浜у搧搴忓垪鍙� : {{headContent.sfcCode}}</span> +<!-- <el-input v-model="content" style="float: right;width: 150px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>--> +<!-- <el-button @click="scanCompleted" style="float: right" type="primary">鎵爜瀹屾垚</el-button>--> + <el-button type="primary" style="float: right" icon="el-icon-search" size="mini" @click="serialLink">涓插彛杩炴帴</el-button> + <el-button @click="clearClick" style="float: right" type="danger" size="mini">娓呴櫎</el-button> + </el-card> + </el-col> + + </el-row> + <el-row :gutter="5" style="margin-top: 5px"> + <el-col :span="24"> + <el-tabs type="border-card" style="height: 600px" v-model="activeName" @tab-click="changeMenu"> + <el-tab-pane name="first"> + <span slot="label"> <a class="el-icon-date"></a>棣栭〉</span> + <el-col :span="24"> + <el-table height="500" :cell-style="rowStyle" :data="formulaChildList"> + <el-table-column label="鎺掑簭" width="60" align="center" type="index"> + </el-table-column> + <el-table-column label="鎿嶄綔鍐呭" :show-overflow-tooltip='true' align="center" prop="operationSteps"> + </el-table-column> + <el-table-column label="浜у搧缂栧彿" align="center" prop="productCode"> + </el-table-column> + <el-table-column label="鐗╂枡缂栫爜" align="center" prop="materialCode"> + </el-table-column> + <el-table-column label="閲囬泦鍊�" align="center" prop="collectData"> + </el-table-column> + <el-table-column label="缁撴灉" align="center" prop="results"> + </el-table-column> + </el-table> + </el-col> +<!-- <el-col :span="14">--> +<!-- <el-image style="height: 520px;width: 100%" :src="imgSrc"></el-image>--> +<!-- </el-col>--> + </el-tab-pane> +<!-- <el-tab-pane name="second">--> +<!-- <span slot="label"> <b class="el-icon-date"></b>鐗╂枡BOM</span>--> +<!-- <el-empty>--> +<!-- <span slot="description">鏆傛棤鏁版嵁</span>--> +<!-- </el-empty>--> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane name="third">--> +<!-- <span slot="label"> <b class="el-icon-date"></b>閲囬泦娓呭崟</span>--> +<!-- <el-empty>--> +<!-- <span slot="description">鏆傛棤鏁版嵁</span>--> +<!-- </el-empty>--> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane name="fourth">--> +<!-- <span slot="label"> <b class="el-icon-date"></b>瀹夌伅鐘舵��</span>--> +<!-- <el-empty>--> +<!-- <span slot="description">鏆傛棤鏁版嵁</span>--> +<!-- </el-empty>--> +<!-- </el-tab-pane>--> +<!-- <el-tab-pane name="fifth">--> +<!-- <span slot="label"> <b class="el-icon-date"></b>宸ヨ壓閰嶆柟</span>--> +<!-- <el-empty>--> +<!-- <span slot="description">鏆傛棤鏁版嵁</span>--> +<!-- </el-empty>--> +<!-- </el-tab-pane>--> + </el-tabs> + </el-col> + </el-row> + <el-dialog v-dialogpop-up :title="title" :visible.sync="open1" width="1000" append-to-body> + <el-row + type="flex" + class="row-bg" + justify="center" + v-show="portsList.length === 0" + > + <el-col :span="7"> + <div style="margin-top: 400px"> + <span style="display: block"> + 浠呮敮鎸丆hrome 89+鎴栬�匛dge 89+娴忚鍣�(瀹夊叏涓婁笅鏂囷紙HTTPS锛変腑鍙敤) + </span> + <el-button type="primary" @click="obtainAuthorization">鎺堟潈</el-button> + </div> + </el-col> + </el-row> + <el-form + v-show="portsList.length > 0" + ref="form1" + :model="form1" + label-width="100px"> + <el-row> + <el-col :span="24" + ><div> + <el-form-item label="涓插彛"> + <el-select + v-model="form1.port" + filterable + placeholder="璇烽�夋嫨涓插彛" + :disabled="isDisable" + > + <el-option + v-for="item in portsList" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label="娉㈢壒鐜�"> + <el-autocomplete + popper-class="my-autocomplete" + v-model="form1.baudRate" + :fetch-suggestions="querySearch" + placeholder="璇疯緭鍏ユ尝鐗圭巼" + :disabled="isDisable" + > + <i class="el-icon-edit el-input__icon" slot="suffix"> </i> + <template slot-scope="{ item }"> + <div class="name">{{ item.value }}</div> + <span class="addr">{{ item.address }}</span> + </template> + </el-autocomplete> + </el-form-item> + <el-form-item label="鏁版嵁浣�"> + <el-select + v-model="form1.dataBits" + placeholder="璇烽�夋嫨鏁版嵁浣�" + :disabled="isDisable" + > + <el-option label="7" value="7"></el-option> + <el-option label="8" value="8"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鍋滄浣�"> + <el-select + v-model="form1.stopBits" + placeholder="璇烽�夋嫨鍋滄浣�" + :disabled="isDisable" + > + <el-option label="1" value="1"></el-option> + <el-option label="2" value="2"></el-option> + </el-select> + </el-form-item> + + <el-form-item label="鏍¢獙浣�"> + <el-select + v-model="form1.parity" + placeholder="璇烽�夋嫨鏍¢獙浣�" + :disabled="isDisable" + > + <el-option label="None" value="none"></el-option> + <el-option label="Even" value="even"></el-option> + <el-option label="Odd" value="odd"></el-option> + </el-select> + </el-form-item> + + <el-form-item label="娴佹帶鍒�"> + <el-select + v-model="form1.flowControl" + placeholder="璇烽�夋嫨娴佹帶鍒�" + :disabled="isDisable" + > + <el-option label="None" value="none"></el-option> + <el-option label="HardWare" value="hardware"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鏄剧ず鍘嗗彶"> + <el-switch + v-model="form1.isShowHistory" + @change="loadHistory" + ></el-switch> + <el-button + type="danger" + icon="el-icon-delete" + circle + title="娓呯┖鍘嗗彶" + @click="clearHistory" + ></el-button> + </el-form-item> + <el-form-item label="鍙戦�佸尯璁剧疆" v-show="isShowSendArea"> + <el-form-item label="鍙戦�佹牸寮�"> + <el-radio-group v-model="form1.type"> + <el-radio label="1">ASCII</el-radio> + <el-radio label="2">HEX</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="鍙戦�佷俊鎭�"> + <el-input type="textarea" v-model="form1.sendMsg"></el-input> + </el-form-item> + <el-button type="primary" @click="sendCommon">鍙戦��</el-button> + </el-form-item> + + <el-form-item> + <el-button :type="btnType" @click="connectBtn">{{ + btnText + }}</el-button> + <el-button type="info" @click="obtainAuthorization" + >鏂板鎺堟潈</el-button + > + </el-form-item> + </div> + </el-col> + </el-row> + </el-form> + </el-dialog> + </div> +</template> +<script> +import {listWorkReport} from "@/api/main/om/workReport/workReport"; +import {listStationConf,getIpv4} from "@/api/main/sc/stationConf"; +import { + listFormulaChild, + noPageListFormulaChild, + releaseCheck, + updateResults, + updateTighteningFormula, + workpieceRelease, yzUpdateResults, yzUpdateTighteningFormula +} from "@/api/main/bs/formulaChild/formulaChild"; +import MySerialPort from "@/utils/MySerialPort"; +import USBDevice from "@/utils/usb.json"; +import {listProductionOrde} from "@/api/main/om/productionOrde/productionOrde"; +import {addPassingStationCollection} from "@/api/main/da/passingStationCollection/passingStationCollection"; +import { + addBasicParameters, + addParamCollection, + addTighteningParameters, + saveCampaignTimeParameters, + replaceAssemblyCode, +} from "@/api/main/da/paramCollection/paramCollection"; + +export default { + name: "stationTerminal", + data() { + return { + showInput: true, + serialPortContent: '', + // 鏌ヨ鍙傛暟 + formulaChildParams: { + pageNum: 1, + pageSize: 10, + productCode: null, + processesCode: null, + }, + // 閰嶆柟閰嶇疆瀛愪俊鎭〃鏍兼暟鎹� + formulaChildList: [], + ipAddress: '', + imgSrc: '', + headContent: { + processesCode: 'OP1010', + processesName: '璐存爣鏈�-璐寸爜', + sfcCode: '', + yzSfcCode: '', + }, + workpieceInformation: { + workOrderNo: null, + productCode: null, + productModel: null, + productName: null, + beat: null, + }, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + sfcCode: null, + }, + // 鏌ヨ鍙傛暟 + StationConfQueryParams: { + pageNum: 1, + pageSize: 10, + ipAddress: null, + }, + cakeLamp: { + plcState: 1, //plc + scannerState: 1, //鎵爜鏋� + InPlace: 0, //宸ヤ欢鍒颁綅 + scanFinish: 0, + startWork: 0, + release: 0 //鍏佽鏀捐 + }, + content: '', + activeName: 'first', + url: "ws://192.168.2.248:8080/websocket/message/", + message: "", + text_content: "", + ws: null, + inputValue: '9', + + open1: false, + input: "", + keepReading: true, + form1: { + baudRate: "115200", + dataBits: "8", + stopBits: "1", + parity: "none", + flowControl: "none", + desc: "", + type: "1", + isShowHistory: false, + }, + btnType: "primary", + btnText: "杩炴帴涓插彛", + restaurants: [], + portsList: [], + isShowSendArea: false, + readType: 1, + title: "", + + passingStationForm: {}, + originalArray: [], + } + }, + beforeDestroy() { + this.exit(); + }, + created() { + this.initStation(); + // this.getStationConfList(); + // setTimeout(() => { + // this.connectWebsocket(); + // }, 3000); + }, + mounted() { + if ("serial" in navigator) { + this.myserialport = new MySerialPort(); + this.getPorts(); + navigator.serial.addEventListener("connect", (e) => { + this.$message.success("璁惧宸茶繛鎺�"); + this.getPorts(); + }); + navigator.serial.addEventListener("disconnect", (e) => { + this.$message.error("璁惧宸叉柇寮�"); + }); + this.restaurants = this.loadAll(); + } else { + this.$message.error( + "褰撳墠涓篐TTP妯″紡鎴栬�呮祻瑙堝櫒鐗堟湰杩囦綆锛屼笉鏀寔缃戦〉杩炴帴涓插彛" + ); + } + }, + computed: { + isDisable() { + return this.btnType === "danger"; + }, + }, + methods: { + serialLink() { + this.open1 = true + }, + bindYzSfc(){ + if(this.headContent.sfcCode!==""&&this.headContent.yzSfcCode!==""){ + let param = { + sfcCode: this.headContent.sfcCode, + locationCode: this.headContent.processesCode, + yzSfcCode: this.headContent.yzSfcCode + } + this.$message('鍙互缁戝畾锛�'); + replaceAssemblyCode(param).then(response => { + + }); + } + }, + Release(){ + // this.$message('portsList锛�'+this.portsList.length); + if(this.btnType === "danger"){ + this.$message('杩炴帴浜嗭紒'); + + }else { + this.$message('mei杩炴帴浜嗭紒'); + + } + + }, + serialPortMethod(value){ + let formulaChildParams = { + scanBarcode: value, + sfcBarcode: this.headContent.sfcCode, + workOrderNo: this.workpieceInformation.workOrderNo, + productCode: "1P102S", + locationCode: this.headContent.processesCode, + collectionTime: new Date() + } + yzUpdateResults(formulaChildParams).then(response => { + this.getListFormulaChild() + }); + }, + rowStyle({ row }) { + if (row.results === 'OK') { + return 'background-color: PaleGreen'; + } else if (row.results === 'NG') { + return 'background-color: LightSalmon'; + } + return ''; + }, + /** 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� */ + getListFormulaChild() { + this.formulaChildParams.productCode = "1P102S" + this.formulaChildParams.processesCode = this.headContent.processesCode + console.log(this.formulaChildParams) + noPageListFormulaChild(this.formulaChildParams).then(response => { + this.formulaChildList = response.rows; + }); + }, + endClear(){ + + }, + changeMenu(tab, event) { + console.log(tab, event); + }, + clearClick(){ + this.$message('杩欐槸涓�鏉℃竻闄ゆ秷鎭彁绀�'); + this.headContent.sfcCode = null + }, + scanCompleted(){ + this.$message('鎵爜瀹屾垚'+this.content); + this.headContent.sfcCode = this.content + this.queryParams.sfcCode = this.content + this.getList() + this.getListFormulaChild() + this.cakeLamp.scanFinish = 1 + this.cakeLamp.startWork = 1 + + }, + /** 鏌ヨ宸ュ崟鍒楄〃 */ + async getList() { + this.getListFormulaChild() + // this.addOverStationCollection() + }, + + /** 鍏ョ珯澧炲姞杩囩珯閲囬泦璁板綍 **/ + addOverStationCollection(){ + this.passingStationForm = { + id: null, + workOrderNo: this.workpieceInformation.workOrderNo, + productCode: this.workpieceInformation.productCode, + locationCode: this.headContent.processesCode, + model: this.workpieceInformation.productModel, + productBarcode: this.headContent.sfcCode, + sfcCode: this.headContent.sfcCode, + inboundTime: new Date() + } + addPassingStationCollection(this.passingStationForm).then(response => {}); + addBasicParameters(this.passingStationForm).then(response => {}); + }, + exit() { + if (this.ws) { + this.ws.close(); + this.ws = null; + } + }, + send() { + if (this.ws) { + this.ws.send(this.message); + } else { + alert("鏈繛鎺ュ埌鏈嶅姟鍣�"); + } + }, + + initStation: async function () { + await getIpv4().then(response => { + this.StationConfQueryParams.ipAddress = response.msg + console.log('鏌ヨ鍒版湰宸ヤ綅IP涓�' + this.StationConfQueryParams.ipAddress) + }); + await listStationConf(this.StationConfQueryParams).then(response => { + let rows = response.rows[0] + if (response.rows.length === 0) { + this.$message('璇ュ伐浣嶆病鏈夐厤缃甀P锛岃鑱旂郴绠$悊鍛橀厤缃甀P'); + return + } + this.headContent.processesName = rows.processesName + this.headContent.processesCode = rows.processesCode + console.log('璁剧疆宸ヤ綅缂栫爜' + this.headContent.processesCode) + + }); + this.conCom() + console.log('websocket杩炴帴宸ヤ綅涓�' + this.headContent.processesCode) + const wsuri = this.url + this.headContent.processesCode; + this.ws = new WebSocket(wsuri); + const self = this; + this.ws.onopen = function (event) { + this.$message('websocket杩炴帴鎴愬姛锛�'); + }; + this.ws.onmessage = function (event) { + if (event.data === "IN") { + self.cakeLamp.InPlace = 1; + } else if (event.data === "IN0") { + self.cakeLamp.InPlace = 0; + } else if (event.data === "OUT") { + console.log("out") + + const param = { + workOrderNo: self.workpieceInformation.workOrderNo, + productCode: "1P102S", + locationCode: self.headContent.processesCode, + productBarcode: self.headContent.sfcCode, + } + // saveCampaignTimeParameters(param).then(response => {}); + // self.cakeLamp.release = 1; + workpieceRelease(param).then(response => {}); + self.formulaChildList = []; + self.headContent.sfcCode = ''; + console.log(self.formulaChildList) + } else if (event.data === "END") { + // const param = { + // workOrderNo: self.workpieceInformation.workOrderNo, + // productCode: self.workpieceInformation.productCode, + // locationCode: self.headContent.processesCode, + // productBarcode: self.headContent.sfcCode, + // } + // saveCampaignTimeParameters(param).then(response => {}); + // self.endClear() + // workpieceRelease(param).then(response => {}); + } else if (event.data.includes("[")) { + let formulaChilds = ""; + self.formulaChildList.sort((a, b) => a.stepSort - b.stepSort); + self.formulaChildList + .filter((formulaChild) => formulaChild.operationType === '1'); + for (let i = 0; i < self.formulaChildList.length; i++) { + let formulaChild = self.formulaChildList[i]; + let results = formulaChild.results; + if (results === '' || results === null || results === 'NG') { + formulaChilds = formulaChild; + break; + } + } + const param = { + tightenTheArray: event.data, + paramCode: formulaChilds.paramCode, + workOrderNo: self.workpieceInformation.workOrderNo, + productCode: self.workpieceInformation.productCode, + locationCode: self.headContent.processesCode, + productBarcode: self.headContent.sfcCode, + } + addTighteningParameters(param).then(response => {}); + yzUpdateTighteningFormula(param).then(response => { + // self.getListFormulaChild() + // }).catch(error =>{ + // self.getListFormulaChild() + console.log(response.msg) + if(response.msg === "1"){ + self.getListFormulaChild() + + }else { + const param = { + workOrderNo: self.workpieceInformation.workOrderNo, + productCode: "1P102S", + locationCode: self.headContent.processesCode, + productBarcode: self.headContent.sfcCode, + } + saveCampaignTimeParameters(param).then(response => {}); + workpieceRelease(param).then(response => {}); + self.formulaChildList = []; + self.headContent.sfcCode = ''; + } + }); + } + }; + }, + + + + //鎺ュ彈鏁版嵁鐨勫洖璋� + callBack(value) { + if (this.form1.isShowHistory) this.form1.desc = this.readLi().join(""); + else { + const scanValue = this.myserialport.hex2atostr(value).replace(/[\r\n]/g, ''); + console.log("涓插彛鏀跺埌鏁版嵁-------------------"+scanValue) + + if(this.headContent.sfcCode !== ''){ + this.$message('鎵弿鐗╂枡缂栫爜'+scanValue); + console.log(scanValue) + this.serialPortMethod(scanValue) + } else { + this.headContent.sfcCode = scanValue; + this.getList() + } + + } + }, + clearHistory() { + this.form1.desc = ""; + this.myserialport.state.readValue = []; + }, + loadHistory() { + if (this.form1.isShowHistory) this.form1.desc = this.readLi().join(""); + else { + let temp = this.readLi(); + if (temp.length > 0) this.form1.desc = temp[temp.length - 1].join(""); + } + }, + readLi() { + let readType = this.readType; + return this.myserialport.state.readValue.map((items, index) => { + const item = items.value; + const type = items.type; // 1鎺ユ敹锛�2鍙戦�� + let body = []; + if (item !== undefined) { + let strArr = []; + for (let hex of Array.from(item)) { + strArr.push(hex.toString(16).toLocaleUpperCase()); + } + if (strArr.includes("D") && strArr.includes("A")) { + if (strArr.indexOf("A") - strArr.indexOf("D") === 1) { + strArr.splice(strArr.indexOf("D"), 1); + strArr.splice(strArr.indexOf("A"), 1, <br key={0} />); + } + } + strArr = strArr.map((item) => { + if (typeof item === "string") { + if (readType === 1) { + return this.myserialport.hex2a(parseInt(item, 16)); + } else if (readType === 2) { + return item + " "; + } + } + return item; + }); + if (typeof strArr[strArr.length - 1] === "string") { + strArr.push("\r\n"); + } + body.push(strArr.join("")); + } + return body; + }); + }, + conCom(){ + try { + this.myserialport.state.baudRate = this.form1.baudRate; + this.myserialport.state.dataBits = this.form1.dataBits; + this.myserialport.state.stopBits = this.form1.stopBits; + this.myserialport.state.parity = this.form1.parity; + this.myserialport.state.flowControl = this.form1.flowControl; + this.myserialport.openPort(0, true, this.callBack); + console.log(this.form1.port) + } catch (error) { + this.$message.error("涓插彛杩炴帴澶辫触锛佽妫�鏌ヤ覆鍙f槸鍚﹀凡琚崰鐢�"); + } + if (this.myserialport.state.isOpen) { + this.$message.success("涓插彛杩炴帴鎴愬姛"); + } + }, + //杩炴帴 + async connectBtn() { + if (this.btnType === "primary") { + try { + this.myserialport.state.baudRate = this.form1.baudRate; + this.myserialport.state.dataBits = this.form1.dataBits; + this.myserialport.state.stopBits = this.form1.stopBits; + this.myserialport.state.parity = this.form1.parity; + this.myserialport.state.flowControl = this.form1.flowControl; + await this.myserialport.openPort(this.form1.port, true, this.callBack); + console.log(this.form1.port) + } catch (error) { + this.$message.error("涓插彛杩炴帴澶辫触锛佽妫�鏌ヤ覆鍙f槸鍚﹀凡琚崰鐢�"); + } + if (this.myserialport.state.isOpen) { + this.$message.success("涓插彛杩炴帴鎴愬姛"); + this.open1 = false + this.btnType = "danger"; + this.btnText = "鍏抽棴涓插彛"; + } + } else { + this.myserialport.openPort(this.form1.port, false, this.callBack); + this.$message.success("涓插彛鍏抽棴鎴愬姛"); + this.btnType = "primary"; + this.btnText = "杩炴帴涓插彛"; + } + }, + //鎺堟潈 + async obtainAuthorization() { + if ("serial" in navigator) { + console.log("The Web Serial API is supported."); + if (!this.myserialport) this.myserialport = new MySerialPort(); + try { + await this.myserialport.handleRequestPort(); + this.$message.success("涓插彛鎺堟潈鎴愬姛"); + this.getPortInfo(this.myserialport.state.ports); + } catch (error) { + this.$message.warning("鏈�夋嫨鏂颁覆鍙f巿鏉冿紒"); + } + } else { + this.$message.error( + "褰撳墠涓篐TTP妯″紡鎴栬�呮祻瑙堝櫒鐗堟湰杩囦綆锛屼笉鏀寔缃戦〉杩炴帴涓插彛" + ); + } + }, + //涓插彛鍒楄〃鍒濆鍖� + getPortInfo(portList) { + this.portsList = []; + portList.map((port, index) => { + const { usbProductId, usbVendorId } = port.getInfo(); + if (usbProductId === undefined || usbVendorId === undefined) { + this.portsList.push({ label: "鏈煡璁惧" + index, value: index }); + } else { + const usbVendor = USBDevice.filter( + (item) => parseInt(item.vendor, 16) === usbVendorId + ); + let usbProduct = []; + if (usbVendor.length === 1) { + usbProduct = usbVendor[0].devices.filter( + (item) => parseInt(item.devid, 16) === usbProductId + ); + } + this.portsList.push({ label: usbProduct[0].devname, value: index }); + } + }); + }, + // 鍙戦�� + async sendCommon() { + if (this.myserialport.state.isOpen) { + if (this.form1.sendMsg.length !== 0) { + const writeType = this.form1.type; + let value = this.form1.sendMsg; + let arr = []; + if (writeType === 1) { + // ASCII + for (let i = 0; i < value.length; i++) { + arr.push(this.myserialport.a2hex(value[i])); + } + } else if (writeType === 2) { + // HEX + if (/^[0-9A-Fa-f]+$/.test(value) && value.length % 2 === 0) { + for (let i = 0; i < value.length; i = i + 2) { + arr.push(parseInt(value.substring(i, i + 2), 16)); + } + } else { + this.$message.error("鏍煎紡閿欒"); + return; + } + } + this.myserialport.writeText(arr); + } else { + this.$message.warning("璇疯緭鍏ュ彂閫佺殑淇℃伅"); + } + } else { + this.$message.warning("涓插彛澶勪簬鍏抽棴鐘舵�侊紝璇疯繛鎺ヤ覆鍙�"); + } + }, + async getPorts() { + await this.myserialport.getPorts(); + this.getPortInfo(this.myserialport.state.ports); + }, + querySearch(queryString, cb) { + var restaurants = this.restaurants; + var results = queryString + ? restaurants.filter(this.createFilter(queryString)) + : restaurants; + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb(results); + }, + createFilter(queryString) { + return (restaurant) => { + return ( + restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === + 0 + ); + }; + }, + loadAll() { + return [ + { value: "110" }, + { value: "300" }, + { value: "600" }, + { value: "1200" }, + { value: "2400" }, + { value: "4800" }, + { value: "7200" }, + { value: "9600" }, + { value: "14400" }, + { value: "19200" }, + { value: "28800" }, + { value: "38400" }, + { value: "56000" }, + { value: "57600" }, + { value: "76800" }, + { value: "115200" }, + { value: "230400" }, + { value: "460800" }, + ]; + }, + } +} + +</script> +<style scoped> +.bottom-card{ + height: 600px; +} +.circle-button{ + height: 30px; + width: 30px; +} +.circle-red { + background-color: #e01a4f; +} +.circle-green { + background-color: green; +} +.circle-green-animate { + background-color: green; + animation: circle-green-animate 2s infinite; +} + @keyframes circle-green-animate { + 50% { + opacity: 0.6; + } + 0% { + opacity: 0.2; + } + } +.head-font{ + /*font-weight: bold;*/ + /*font-size: 25px;*/ +} +span{ + font-size: 15px; +} +.el-table .warning-row { + background: oldlace; +} + +.el-table .success-row { + background: #f0f9eb; +} +</style> + -- Gitblit v1.9.3