jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java
@@ -10,6 +10,8 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jcdm.main.constant.Constants; import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.service.MiloService; import org.springframework.security.access.prepost.PreAuthorize; @@ -43,6 +45,9 @@ { @Autowired private IBsFormulaChildInfoService bsFormulaChildInfoService; @Autowired private IOmProductionOrdeInfoService omProductionOrdeInfoService; @Autowired private MiloService miloService; @@ -113,11 +118,13 @@ String str = thoroughfare+"."+bsFormulaChildInfo.getProcessesCode()+".MESScrew"; miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(str).value(stepNumber).build());//拧紧步骤 if("OP230".equals(bsFormulaChildInfo.getProcessesCode())){ List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().like(OmProductionOrdeInfo::getProductNum, bsFormulaChildInfo.getSfcBarcode())); String sfcCode = list.get(0).getProductNum(); //所有进站将进站时间写给PLC SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String currentDate = dateFormat.format(new Date()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + bsFormulaChildInfo.getProcessesCode() + ".StartTime").value(currentDate).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + bsFormulaChildInfo.getProcessesCode() + ".SNCode").value(bsFormulaChildInfo.getSfcBarcode()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + bsFormulaChildInfo.getProcessesCode() + ".SNCode").value(sfcCode).build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + bsFormulaChildInfo.getProcessesCode() + ".RecordDataDone").value(11).build()); }else if("OP220".equals(bsFormulaChildInfo.getProcessesCode())){ miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + bsFormulaChildInfo.getProcessesCode() + ".RecordDataDone").value(11).build()); jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java
@@ -78,6 +78,17 @@ return getDataTable(list); } /** * 查询生产工单列表 */ @GetMapping("/listLoopLine") public TableDataInfo listLoopLine(OmProductionOrdeInfo omProductionOrdeInfo) { startPage(); List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.listLoopLine(omProductionOrdeInfo); return getDataTable(list); } @GetMapping("/checkCarCode") public AjaxResult checkCarCode(OmProductionOrdeInfo omProductionOrdeInfo) { jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java
@@ -64,4 +64,6 @@ public Integer getMaxStreamNumber(); OmProductionOrdeInfo getLastOrder(); List<OmProductionOrdeInfo> listLoopLine(OmProductionOrdeInfo omProductionOrdeInfo); } jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java
@@ -81,4 +81,6 @@ void updateOrderByProductNum(String status,String productNum,String stationCode); OmProductionOrdeInfo getLastOrder(); List<OmProductionOrdeInfo> listLoopLine(OmProductionOrdeInfo omProductionOrdeInfo); } jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java
@@ -240,4 +240,9 @@ public OmProductionOrdeInfo getLastOrder() { return omProductionOrdeInfoMapper.getLastOrder(); } @Override public List<OmProductionOrdeInfo> listLoopLine(OmProductionOrdeInfo omProductionOrdeInfo) { return omProductionOrdeInfoMapper.listLoopLine(omProductionOrdeInfo); } } jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -180,15 +180,17 @@ CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { updateOrderStatus(snCode, "3",housingCode);//OP010工位更新工单状态为执行中,并更新主物料壳体条码 reportFactoryMes(snCode, device, format.format(new Date()));//工厂MES报工 }); }); } } } if(Constants.OP230.equals(device)){ WebSocketUsers.sendMessageToUserByText(map.get(device), "twoHundredAndThirtyEND"); CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { updateOrderStatus(snCode, "5","");//OP230工位更新工单状态为已完成 reportFactoryMes(snCode, "OP240", format.format(new Date()));//工厂MES报工 //暂时 OP240工位还没有好,在230报240的工 }); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SNCode").value("").build()); } if(result == 21){ result = savePassingStation(thoroughfare, device, snCode, orderNumber, stationStatus);//保存过站 jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml
@@ -262,4 +262,12 @@ <select id="getLastOrder" resultMap="OmProductionOrdeInfoResult"> select top 1 * from om_production_orde_info order by id desc </select> <select id="listLoopLine" parameterType="OmProductionOrdeInfo" resultMap="OmProductionOrdeInfoResult"> <include refid="selectOmProductionOrdeInfoVo"/> <where> <if test="productNum != null and productNum != ''"> and product_num like concat('%', #{productNum}, '%')</if> </where> ORDER BY stream_number DESC </select> </mapper> jcdm-ui/src/api/main/om/productionOrde/productionOrde.js
@@ -10,6 +10,15 @@ } // 查询生产工单列表 export function listProductionOrdeLoopLine(query) { return request({ url: '/om/productionOrde/listLoopLine', method: 'get', params: query }) } // 查询生产工单列表 export function bindYzSfcFlag(query) { return request({ url: '/om/productionOrde/bindYzSfcFlag', jcdm-ui/src/views/main/kb/stationTerminal/index.vue
@@ -125,7 +125,7 @@ <span>最高转速:</span><span>12000rpm</span><br> </div> <div style="margin-top: 4px"> <span>防护等级:</span><span>IP68</span><br> <span>防护等级:</span><span>IP67</span><br> </div> <div style="margin-top: 4px"> <span>峰值工作电流:</span><span>230A</span><br> @@ -153,15 +153,15 @@ </div> <div style="margin-top: 4px"> <span style="font-size: 22px">993083</span><br> <span style="font-size: 22px">993983</span><br> </div> <div style="margin-top: 4px"> <span style="font-size: 22px">9900166410</span><br> <span style="font-size: 22px">9900200461</span><br> </div> <div style="margin-top: 4px"> <span style="font-size: 22px">2407190000002</span> <span style="font-size: 22px">{{headContent.sfcCode}}</span> </div> </div> @@ -172,7 +172,7 @@ </div> <div style="width: 70%;flex: 1;margin-top: 18px;margin-right: 29px"> <span style="margin-left: -80px;font-size: 20px;font-family: FangSong;letter-spacing: -0.8px"> P9900166410#T{{headContent.sfcCode}} P9900200461#T{{headContent.sfcCode}} </span><br> <span style="margin-left: -80px;font-size: 20px;font-family: FangSong;letter-spacing: -0.8px"> #V993983#SSW002.005#HHW001.001#NMCU @@ -187,7 +187,7 @@ </div> <div style="width: 70%;flex: 1;margin-top: 18px;margin-right: 29px"> <span style="margin-left: -80px;font-size: 20px;font-family: FangSong;letter-spacing: -0.8px"> P9900166410#T{{headContent.sfcCode}} P9900200461#T{{headContent.sfcCode}} </span><br> <span style="margin-left: -80px;font-size: 20px;font-family: FangSong;letter-spacing: -0.8px"> #V993983#SSW002.005#HHW001.001#NMCU @@ -266,7 +266,7 @@ bindYzSfcFlag, checkCarCode, checkYzSfcCode, findBytrolleyYardGetOne, listProductionOrde, mozuReceivingWorkOrders, listProductionOrde, listProductionOrdeLoopLine, mozuReceivingWorkOrders, receivingWorkOrders, trolleyYardBinDing } from "@/api/main/om/productionOrde/productionOrde"; @@ -344,7 +344,7 @@ release: 0 //允许放行 }, content: '', // url: "ws://10.103.210.248:8080/websocket/message/", // url: "ws://10.103.214.26:8080/websocket/message/", url: "ws://192.168.20.250:8080/websocket/message/", passingStationForm: {}, @@ -388,7 +388,7 @@ ){ if(this.materialCode.length>25){ let code = this.materialCode.substring(13,26); this.headContent.sfcCode = code; // this.headContent.sfcCode = code; this.queryParams.productNum = code; this.getList(); this.cakeLamp.scanFinish = 1 @@ -518,9 +518,19 @@ }, /** 查询工单列表 */ async getList() { await listProductionOrde(this.queryParams).then(response => { await listProductionOrdeLoopLine(this.queryParams).then(response => { let rowsData = response.rows[0]; if(rowsData){ if(this.headContent.processesCode === 'OP170' ||this.headContent.processesCode === 'OP180'|| this.headContent.processesCode === 'OP190'|| this.headContent.processesCode === 'OP200'|| this.headContent.processesCode === 'OP210'|| this.headContent.processesCode === 'OP220'|| this.headContent.processesCode === 'OP230' ){ this.headContent.sfcCode = rowsData.productNum } this.workpieceInformation.workOrderNo = rowsData.workOrderNo; this.workpieceInformation.productCode = rowsData.productCode; this.workpieceInformation.materialCode = rowsData.materialCode; @@ -642,6 +652,8 @@ unfinishedProcess({processesCode: self.headContent.processesCode,recordDataDone: 21}).then(response => {}); }else if (event.data === "IN") { self.cakeLamp.InPlace = 1; }else if(event.data === "twoHundredAndThirtyEND"){ self.endClear() } else if (event.data === "OUT") { self.cakeLamp.release = 1; } else if (event.data === "END") { @@ -680,7 +692,9 @@ } else if(event.data.includes("productNum")){//产品序列号 let productNum = event.data.split(',')[1]; if(self.headContent.processesCode === 'OP165'){ console.log("进去截取总成码方法165工站原始值是"+productNum+"截取之后的是"+productNum.substring(13,26)) self.headContent.sfcCode = productNum.substring(13,26) console.log("self.headContent.sfcCode"+self.headContent.sfcCode) }else { self.headContent.sfcCode = productNum; } @@ -702,7 +716,7 @@ if(self.headContent.processesCode === "OP165"){ // self.test1() // self.test2() self.text = 'P9900166410#T'+self.headContent.sfcCode+' #V993983#SSW002.005#HHW001.001#NMCU#' self.text = 'P9900200461#T'+self.headContent.sfcCode+' #V993983#SSW002.005#HHW001.001#NMCU#' } }else if (event.data.includes("[")) {//拧紧