From 6a53e63fa18c97232420ab58163a9b79fbb5a228 Mon Sep 17 00:00:00 2001 From: cl <418351270@qq.com> Date: 星期四, 25 七月 2024 18:27:05 +0800 Subject: [PATCH] 1、100工位报工前,先将工单状态改为3执行中 2、手动接收工单,修改为先查表中是否有剩余工单, 3、OP030电芯检测放开 4、接收工单时,将两个工位区分开存工单 --- jcdm-framework/src/main/java/com/jcdm/framework/websocket/WebSocketUsers.java | 2 jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java | 9 ++ jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java | 92 +++++++++++++++++++----------- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 66 ++++++++++----------- 4 files changed, 98 insertions(+), 71 deletions(-) diff --git a/jcdm-framework/src/main/java/com/jcdm/framework/websocket/WebSocketUsers.java b/jcdm-framework/src/main/java/com/jcdm/framework/websocket/WebSocketUsers.java index db0c715..de9c0d5 100644 --- a/jcdm-framework/src/main/java/com/jcdm/framework/websocket/WebSocketUsers.java +++ b/jcdm-framework/src/main/java/com/jcdm/framework/websocket/WebSocketUsers.java @@ -116,7 +116,7 @@ /** * 鍙戦�佹枃鏈秷鎭� * - * @param userName 鑷繁鐨勭敤鎴峰悕 + * @param session 鑷繁鐨勭敤鎴峰悕 * @param message 娑堟伅鍐呭 */ public static void sendMessageToUserByText(Session session, String message) 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 384eb56..0b93010 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 @@ -311,9 +311,16 @@ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("MOZU1."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build()); if(daParamCollection.getLocationCode().equals("M1OP100-1") || daParamCollection.getLocationCode().equals("M1OP100-2") ){ try{ + //鏇存柊宸ュ崟鐘舵�佷负宸叉墽琛� + LambdaUpdateWrapper<OmProductionOrdeInfo> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(OmProductionOrdeInfo::getOrderStatus,"3"); + updateWrapper.eq(OmProductionOrdeInfo::getProductNum,daParamCollection.getProductBarcode()); + omProductionOrdeInfoService.update(new OmProductionOrdeInfo(),updateWrapper); + + //涓婁紶宸ュ巶MES鎶ュ伐 CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { logger.info("OP100鎶ュ伐寮�濮�-宸ュ巶MES寮傛鏂规硶"); - String stationCode = "M1P100";//鍥犱负涓婂眰绯荤粺鍙敮鎸�6涓猴紝鎵�鏈夋姤宸ュ伐浣嶄负M1P100 + String stationCode = "M1P100";//鍥犱负涓婂眰绯荤粺鍙敮鎸�6浣嶏紝鎵�鏈夋姤宸ュ伐浣嶄负M1P100 String reportResult = RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(), stationCode, format.format(new Date())); JSONObject jsonObject = new JSONObject(reportResult); String code = jsonObject.getStr("code"); diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java index 93ac1dd..4ee78c6 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java +++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java @@ -6,6 +6,7 @@ import java.util.concurrent.CompletableFuture; import javax.servlet.http.HttpServletResponse; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -128,48 +129,69 @@ if (ObjectUtil.isNull(productTypeObjcet)) { return AjaxResult.error("鎺ュ崟澶辫触,PLC鏈紶杈撶敓浜х被鍨嬶紝璇疯仈绯荤鐞嗗憳!"); } + String productType = productTypeObjcet.toString();//浜у搧绫诲瀷 String materialCode = Constants.materialMap.get(productType); - OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder(); - String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode); - JSONObject jsonObject = new JSONObject(orderJsonString); - // 浠嶫SONObject涓幏鍙杁ata瀵硅薄 - JSONObject dataObject = jsonObject.getJSONObject("data"); - String code = jsonObject.getStr("code"); - // 鍒ゆ柇鎺ュ崟鏄惁鎴愬姛 - if(code.equals("success")){ - logger.info("璇锋眰宸ュ巶MES宸ュ崟锛氬叆鍙俻ack{}鍑哄弬pack锛歿}",paramProductNum,dataObject.getStr("productNum")); - List<OmProductionOrdeInfo> check = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum,dataObject.getStr("productNum"))); - if(check.isEmpty()){ - try { - log.info("璇锋眰宸ュ巶MES宸ュ崟锛氬叆鍙俻ack{}鍑哄弬pack锛歿}", paramProductNum, dataObject.getStr("productNum")); - OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); - omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum")); - omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum")); - omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode")); - omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode")); - omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity"))); - omProductionOrdeInfo.setOnlineCompletionMark("0"); - omProductionOrdeInfo.setSfResult("0"); - omProductionOrdeInfo.setProductModel(dataObject.getStr("model")); - omProductionOrdeInfo.setCreateTime(new Date()); - omProductionOrdeInfo.setCreateUser("宸ュ巶MES"); - omProductionOrdeInfoService.save(omProductionOrdeInfo); - //鍐橮LC - miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build()); - miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".ModuleCode").value(dataObject.getStr("productNum")).build()); - } catch (Exception e) { - throw new RuntimeException(e); + //鍏堟煡璇㈣〃涓槸鍚︽湁鍓╀綑宸ュ崟 + List<OmProductionOrdeInfo> orderList = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>() + .eq(OmProductionOrdeInfo::getOrderStatus, Constants.ONE) + .eq(OmProductionOrdeInfo::getStationCode,paramOrder.getLineCode())//宸ヤ綅 + .eq(OmProductionOrdeInfo::getProductCode,materialCode));//浜у搧绫诲瀷 + if (CollUtil.isNotEmpty(orderList)){ + Long id = orderList.get(0).getId(); + String productNum = orderList.get(0).getProductNum();//妯$粍鐮� + String orderNum = orderList.get(0).getWorkOrderNo(); + + paramProductNum = productNum; + //涓嬪彂浜у搧妯$粍鐮� + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".WorkOrderNumber").value(orderNum).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".ModuleCode").value(productNum).build()); + + }else{ + OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder(); + String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode); + JSONObject jsonObject = new JSONObject(orderJsonString); + // 浠嶫SONObject涓幏鍙杁ata瀵硅薄 + JSONObject dataObject = jsonObject.getJSONObject("data"); + String code = jsonObject.getStr("code"); + // 鍒ゆ柇鎺ュ崟鏄惁鎴愬姛 + if(code.equals("success")){ + logger.info("璇锋眰宸ュ巶MES宸ュ崟锛氬叆鍙俻ack{}鍑哄弬pack锛歿}",paramProductNum,dataObject.getStr("productNum")); + List<OmProductionOrdeInfo> check = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum,dataObject.getStr("productNum"))); + if(check.isEmpty()){ + try { + log.info("璇锋眰宸ュ巶MES宸ュ崟锛氬叆鍙俻ack{}鍑哄弬pack锛歿}", paramProductNum, dataObject.getStr("productNum")); + OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); + omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum")); + omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum")); + omProductionOrdeInfo.setStationCode(paramOrder.getLineCode());//宸ヤ綅 + omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode")); + omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity"))); + omProductionOrdeInfo.setOnlineCompletionMark("0"); + omProductionOrdeInfo.setSfResult("0"); + omProductionOrdeInfo.setProductModel(dataObject.getStr("model")); + omProductionOrdeInfo.setCreateTime(new Date()); + omProductionOrdeInfo.setCreateUser("宸ュ巶MES"); + omProductionOrdeInfoService.save(omProductionOrdeInfo); + + paramProductNum = dataObject.getStr("productNum"); + //鍐橮LC + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".ModuleCode").value(dataObject.getStr("productNum")).build()); + } catch (Exception e) { + throw new RuntimeException(e); + } + }else{ + return AjaxResult.error("宸ュ崟閲嶅,璇烽噸鏂版帴鏀�"); } - }else{ - return AjaxResult.error("宸ュ崟閲嶅,璇烽噸鏂版帴鏀�"); + }else { + return AjaxResult.error("鎺ュ崟澶辫触,璇疯仈绯荤鐞嗗憳"); } - }else { - return AjaxResult.error("鎺ュ崟澶辫触,璇疯仈绯荤鐞嗗憳"); } - return AjaxResult.success(dataObject.getStr("productNum")); + + return AjaxResult.success(paramProductNum); } @GetMapping(value = "/jieBang/{id}") diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java index d5288ca..5899843 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java @@ -130,13 +130,13 @@ String cellCode = value1.toString(); scanResult = 11; //鍙嶉鐢佃姱ocv妫�娴嬬粨鏋�,杩欓噷涓嶇敤鍐嶈繘琛屾娴嬶紝鍙鐮佹病闂灏卞彲浠ヤ簡 - /*boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//瀵规浛鎹㈢數鑺牎楠� + boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//瀵规浛鎹㈢數鑺牎楠� //鍥涗釜鐢佃姱鐨勭姸鎬� if (b){ scanResult = 11; }else { scanResult = 12; - }*/ + } }else { scanResult = 12; } @@ -181,7 +181,7 @@ if (ObjectUtil.isNotNull(productTypeObjcet)){ String productType = productTypeObjcet.toString();//浜у搧绫诲瀷 String materialCode = Constants.materialMap.get(productType); - //璋冪敤宸ュ巶MES锛屼繚瀛樺埌鏁版嵁搴�,骞朵笖灏嗗伐鍗曚紶缁橮LC + //鎺ユ敹宸ュ崟锛屼繚瀛樺埌鏁版嵁搴�,骞朵笖灏嗗伐鍗曚紶缁橮LC CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { receivingWorkOrders(thoroughfare, device,materialCode); }); @@ -326,7 +326,7 @@ OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum")); omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum")); - omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode")); + omProductionOrdeInfo.setStationCode(device); omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode")); omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity"))); omProductionOrdeInfo.setOnlineCompletionMark("0"); @@ -830,36 +830,6 @@ } /** - * 030宸ヤ綅杩斿洖ocv娴嬭瘯缁撴灉 - * @param thoroughfare - * @param device - * @param cellCode - * @throws Exception - */ - private boolean OCVResultFeedBack(String thoroughfare, String device,String cellCode) throws Exception { - boolean flag = true; - - List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() - .eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020") - .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode) - .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime) - ); - if (CollUtil.isNotEmpty(list)){ - DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0); - if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ - flag = true; - }else { - flag = false; - } - daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); - }else { - flag = false; - log.info("璇诲彇鍒板伐浣峽},娴嬭瘯璁惧杩斿洖鐨勬暟鎹煡璇笉鍒帮紝鐢佃姱鐮佷负锛歿}",device,cellCode); - } - return flag; - } - - /** * OP020鏍¢獙鐢佃姱鎸′綅 * @param thoroughfare * @param device @@ -898,6 +868,34 @@ * 030宸ヤ綅杩斿洖ocv娴嬭瘯缁撴灉 * @param thoroughfare * @param device + * @param cellCode + * @throws Exception + */ + private boolean OCVResultFeedBack(String thoroughfare, String device,String cellCode) throws Exception { + boolean flag = true; + List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>() + //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020") + .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode) + .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime) + ); + if (CollUtil.isNotEmpty(list)){ + DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0); + if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){ + flag = true; + }else { + flag = false; + } + //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode); + }else { + flag = false; + log.info("璇诲彇鍒板伐浣峽},娴嬭瘯璁惧杩斿洖鐨勬暟鎹煡璇笉鍒帮紝鐢佃姱鐮佷负锛歿}",device,cellCode); + } + return flag; + } + /** + * 030宸ヤ綅杩斿洖ocv娴嬭瘯缁撴灉 + * @param thoroughfare + * @param device * @throws Exception */ private boolean OCVResultFeedBack(String thoroughfare, String device) throws Exception { -- Gitblit v1.9.3