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) 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"); 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,9 +129,27 @@ if (ObjectUtil.isNull(productTypeObjcet)) { return AjaxResult.error("接单失败,PLC未传输生产类型,请联系管理员!"); } String productType = productTypeObjcet.toString();//产品类型 String materialCode = Constants.materialMap.get(productType); //先查询表中是否有剩余工单 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); @@ -147,7 +166,7 @@ OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum")); omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum")); omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode")); omProductionOrdeInfo.setStationCode(paramOrder.getLineCode());//工位 omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode")); omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity"))); omProductionOrdeInfo.setOnlineCompletionMark("0"); @@ -157,6 +176,7 @@ omProductionOrdeInfo.setCreateUser("工厂MES"); omProductionOrdeInfoService.save(omProductionOrdeInfo); paramProductNum = dataObject.getStr("productNum"); //写PLC 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()); @@ -169,7 +189,9 @@ }else { return AjaxResult.error("接单失败,请联系管理员"); } return AjaxResult.success(dataObject.getStr("productNum")); } return AjaxResult.success(paramProductNum); } @GetMapping(value = "/jieBang/{id}") 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,保存到数据库,并且将工单传给PLC //接收工单,保存到数据库,并且将工单传给PLC 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 {