billion-main/src/main/java/com/billion/main/constant/Constants.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,73 @@ package com.billion.main.constant; import java.util.ArrayList; import java.util.List; public class Constants { public static final String ONE= "1"; public static final String ZERO= "0"; public static final String TWO= "2"; public static final String RecordData= "RecordData"; public static final String WorkOrderRequest= "WorkOrderRequest"; public static final List<String> PLC = new ArrayList<>(); public static final String C005= "C005"; public static final String C010= "C010"; public static final String C020= "C020"; public static final String C030= "C030"; public static final String C060= "C060"; public static final String C070= "C070"; public static final String P010= "P010"; public static final String P020= "P020"; public static final String P030= "P030"; public static final String OP005= "OP005"; public static final String OP010= "OP010"; public static final String OP020= "OP020"; public static final String OP040= "OP040"; public static final String OP045= "OP045"; public static final String OP060= "OP060"; public static final String OP075= "OP075"; public static final String OP080= "OP080"; public static final String OP090= "OP090"; public static final String OP095= "OP095"; public static final String OP100= "OP100"; public static final String OP120= "OP120"; public static final String OP130= "OP130"; public static final String OP145= "OP145"; public static final String OP150= "OP150"; public static final String OP160= "OP160"; public static final String OP165= "OP165"; public static final String OP170= "OP170"; public static final String OP180= "OP180"; public static final String OP190= "OP190"; public static final String OP200= "OP200"; public static final String OP210= "OP210"; public static final String OP220= "OP220"; public static final String OP230= "OP230"; public static final String OP240= "OP240"; public static final String OP250= "OP250"; public static final String OP260= "OP260"; public static final String OP270= "OP270"; public static final String OP275= "OP275"; public static final String OP280= "OP280"; public static final String OP290= "OP290"; public static final String OP295= "OP295"; public static final String OP300= "OP300"; public static final String OP310= "OP310"; public static final String C040= "C040"; public static final String OP030= "OP030"; public static final String OP050= "OP050"; public static final String OP070= "OP070"; public static final String OP110= "OP110"; public static final String OP140= "OP140"; } billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java
@@ -56,7 +56,7 @@ /** å¤æ³¨ */ @Excel(name = "å¤æ³¨") private String remarks; private Long remarks; /** åå¨æºåå· */ @Excel(name = "åå¨æºåå·") billion-main/src/main/java/com/billion/main/om/mapper/OmProductionOrderInfoMapper.java
@@ -14,6 +14,19 @@ */ public interface OmProductionOrderInfoMapper extends BaseMapper<OmProductionOrderInfo> { // æ¥è¯¢ order_status 为 1 ä¸ plan_start_time ææ©çä¸æ¡è®°å½ public OmProductionOrderInfo selectEarliestOrder(); public OmProductionOrderInfo selectEarliestOrder2(); public OmProductionOrderInfo getSerialNumber(); public OmProductionOrderInfo updateSerialNumber(); public OmProductionOrderInfo updateYear(); public OmProductionOrderInfo updateOrderStatus5(); public OmProductionOrderInfo updateOrderStatus2(); /** * æ¥è¯¢ç产工å * @@ -61,4 +74,6 @@ * @return ç»æ */ public int deleteOmProductionOrderInfoByIds(Long[] ids); } billion-main/src/main/java/com/billion/main/om/service/IOmProductionOrderInfoService.java
@@ -14,6 +14,16 @@ */ public interface IOmProductionOrderInfoService extends IService<OmProductionOrderInfo> { public OmProductionOrderInfo getEarliestOrder(); public OmProductionOrderInfo getEarliestOrder2(); public OmProductionOrderInfo getSerialNumber(); public OmProductionOrderInfo updateSerialNumber(); public OmProductionOrderInfo updateYear(); public OmProductionOrderInfo updateOrderStatus5(); public OmProductionOrderInfo updateOrderStatus2(); /** * æ¥è¯¢ç产工å * billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java
@@ -27,6 +27,36 @@ @Resource private OmProductionOrderInfoMapper OmProductionOrderInfoMapper; @Override public OmProductionOrderInfo getEarliestOrder() { return OmProductionOrderInfoMapper.selectEarliestOrder(); } @Override public OmProductionOrderInfo getEarliestOrder2() {return OmProductionOrderInfoMapper.selectEarliestOrder2();} @Override public OmProductionOrderInfo getSerialNumber() { return OmProductionOrderInfoMapper.getSerialNumber(); } @Override public OmProductionOrderInfo updateSerialNumber() {return OmProductionOrderInfoMapper.updateSerialNumber();} @Override public OmProductionOrderInfo updateYear() {return OmProductionOrderInfoMapper.updateYear();} @Override public OmProductionOrderInfo updateOrderStatus5() { return OmProductionOrderInfoMapper.updateOrderStatus5(); } @Override public OmProductionOrderInfo updateOrderStatus2() { return OmProductionOrderInfoMapper.updateOrderStatus2(); } /** * æ¥è¯¢ç产工å * billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java
@@ -1,27 +1,100 @@ package com.billion.main.plcServer; import com.billion.main.bs.service.IBsBomChildInfoService; import com.billion.main.constant.Constants; import com.billion.main.da.service.IDaParamCollectionService; import com.billion.main.da.service.IDaStationCollectionService; import com.billion.main.om.service.IOmOrderSchedulingService; import com.billion.main.om.service.IOmProductionOrderInfoService; import com.billion.main.plcServer.sub.OPCUaSubscription; import com.kangaroohy.milo.service.MiloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Component public class CustomRunner implements ApplicationRunner { @Autowired private MiloService miloService; @Autowired public IDaParamCollectionService daParamCollectionService; @Autowired public IDaStationCollectionService daStationCollectionService; @Autowired public IOmProductionOrderInfoService omProductionOrderInfoService; @Autowired public IOmOrderSchedulingService omOrderSchedulingService; @Autowired public IBsBomChildInfoService bomChildInfoService; @Override public void run(ApplicationArguments args) throws Exception { //第ä¸æ¹è®¾å¤ Constants.PLC.add(Constants.C040); Constants.PLC.add(Constants.OP030); Constants.PLC.add(Constants.OP050); Constants.PLC.add(Constants.OP070); Constants.PLC.add(Constants.OP110); Constants.PLC.add(Constants.OP140); //PLC1è®¾å¤ Constants.PLC.add(Constants.C010); Constants.PLC.add(Constants.C020); Constants.PLC.add(Constants.C030); Constants.PLC.add(Constants.C060); Constants.PLC.add(Constants.C070); //PLC2è®¾å¤ Constants.PLC.add(Constants.P010); Constants.PLC.add(Constants.P020); Constants.PLC.add(Constants.P030); Constants.PLC.add(Constants.OP005); Constants.PLC.add(Constants.OP010); Constants.PLC.add(Constants.OP020); Constants.PLC.add(Constants.OP040); Constants.PLC.add(Constants.OP045); Constants.PLC.add(Constants.OP060); Constants.PLC.add(Constants.OP075); Constants.PLC.add(Constants.OP080); Constants.PLC.add(Constants.OP090); Constants.PLC.add(Constants.OP095); Constants.PLC.add(Constants.OP100); Constants.PLC.add(Constants.OP120); //PLC3è®¾å¤ Constants.PLC.add(Constants.OP130); Constants.PLC.add(Constants.OP145); Constants.PLC.add(Constants.OP150); Constants.PLC.add(Constants.OP160); Constants.PLC.add(Constants.OP165); Constants.PLC.add(Constants.OP170); Constants.PLC.add(Constants.OP180); Constants.PLC.add(Constants.OP190); Constants.PLC.add(Constants.OP200); Constants.PLC.add(Constants.OP210); Constants.PLC.add(Constants.OP220); Constants.PLC.add(Constants.OP230); Constants.PLC.add(Constants.OP240); Constants.PLC.add(Constants.OP250); Constants.PLC.add(Constants.OP260); Constants.PLC.add(Constants.OP270); Constants.PLC.add(Constants.OP275); Constants.PLC.add(Constants.OP280); Constants.PLC.add(Constants.OP290); Constants.PLC.add(Constants.OP295); Constants.PLC.add(Constants.OP300); // OPCUaSubscription OPCUaSubscription = new OPCUaSubscription(miloService, daParamCollectionService); daParamCollectionService, daStationCollectionService, omProductionOrderInfoService, omOrderSchedulingService, bomChildInfoService); List<String> lists = getList(); System.out.println("订é å 容ï¼"+lists); @@ -31,18 +104,11 @@ public List<String> getList(){ List<String> lists = new ArrayList<>(); lists.add("CFL4CVT.BCOP010.RecordData");//请æ±ä¿å lists.add("CFL4CVT.BCOP040.RecordData");//请æ±ä¿å lists.add("CFL4CVT.BCOP060.RecordData");//请æ±ä¿å lists.add("CFL4CVT.BCOP100.RecordData");//请æ±ä¿å lists.add("CFL4CVT.BP020.RecordData");//请æ±ä¿å lists.add("CFL4CVT.OP220.RecordData");//请æ±ä¿å lists.add("CFL4CVT.BCOP010.MesRecordDataDone");//请æ±ä¿å lists.add("CFL4CVT.BCOP040.MesRecordDataDone");//请æ±ä¿å lists.add("CFL4CVT.BCOP060.MesRecordDataDone");//请æ±ä¿å lists.add("CFL4CVT.BCOP100.MesRecordDataDone");//请æ±ä¿å lists.add("CFL4CVT.BP020.MesRecordDataDone");//请æ±ä¿å lists.add("CFL4CVT.OP220.MesRecordDataDone");//请æ±ä¿å lists.add("PLC1.C005.RecordData");//请æ±ä¿å lists.add("PLC1.C005.WorkOrderRequest");//请æ±ä¿å lists.add("PLC1.OP010.RecordData");//请æ±ä¿å lists.add("PLC1.A1.RecordData");//请æ±ä¿å return lists; } } billion-main/src/main/java/com/billion/main/plcServer/conf/OPCElement.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.billion.main.plcServer.conf; /** * @ClassName: OPCElement * @Description: PCåPLCé信使ç¨çOPCserverä¸çæ è®°å称å表 */ public class OPCElement { /** * C005 */ public static final String PLC1_C005_RecordData = "PLC1.C005.RecordData";//请æ±è®°å½æ°æ® public static final String PLC1_C005_WorkOrderRequest = "PLC1.C005.WorkOrderRequest";//请æ±æ§ç´§æ°æ® } billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -1,31 +1,238 @@ package com.billion.main.plcServer.sub; import com.billion.main.bs.domain.BsBomChildInfo; import com.billion.main.bs.service.IBsBomChildInfoService; import com.billion.main.constant.Constants; import com.billion.main.da.service.IDaParamCollectionService; import com.billion.main.da.service.IDaStationCollectionService; import com.billion.main.om.domain.OmOrderScheduling; import com.billion.main.om.domain.OmProductionOrderInfo; import com.billion.main.om.service.IOmOrderSchedulingService; import com.billion.main.om.service.IOmProductionOrderInfoService; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; import com.kangaroohy.milo.service.MiloService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; @Slf4j @Component public class OPCUaSubscription implements SubscriptionCallback { public static MiloService miloService; public IDaParamCollectionService daParamCollectionService; public IDaStationCollectionService daStationCollectionService; public IOmProductionOrderInfoService omProductionOrderInfoService; public IOmOrderSchedulingService omOrderSchedulingService; public IBsBomChildInfoService bomChildInfoService; public OPCUaSubscription(MiloService miloService, IDaParamCollectionService daParamCollectionService) { IDaParamCollectionService daParamCollectionService, IDaStationCollectionService daStationCollectionService, IOmProductionOrderInfoService omProductionOrderInfoService, IOmOrderSchedulingService omOrderSchedulingService, IBsBomChildInfoService bomChildInfoService ) { OPCUaSubscription.miloService = miloService; this.daParamCollectionService = daParamCollectionService; this.daStationCollectionService = daStationCollectionService; this.omProductionOrderInfoService = omProductionOrderInfoService; this.omOrderSchedulingService = omOrderSchedulingService; this.bomChildInfoService = bomChildInfoService; } @Override public void onSubscribe(String identifier, Object value) { log.info("å°åï¼"+identifier+"å¼ï¼"+value); try { if(null != value ) { String[] nodes = identifier.split("[.]"); String thoroughfare = nodes[0];//éé String device = nodes[1];//è®¾å¤ String tab = nodes[2];//æ è®° String valueString = value.toString();//å°åå¼ CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { onSubscribe(thoroughfare,device,tab,valueString); plackWorkOrder(thoroughfare,device,tab,valueString); }); } } catch (Exception e) { log.error(e.getMessage()); } } public void onSubscribe(String thoroughfare,String device,String tab,String valueString) { try { if (Constants.RecordData.equals(tab)){ //å·¥ç«äº¤äºåå§å if (Constants.ZERO.equals(valueString)){ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("0").build()); //请æ±è¿ç« } else if (Constants.ONE.equals(valueString)){ //é¦å·¥ç« if(Constants.C005.equals(device)){ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build()); } //é¤é¦å·¥ç«ææå·¥ç« else if(Constants.PLC.contains(device) && Constants.OP310.contains(device)){ //æ ¡éªSFCCodeæ¯å¦åå¨ Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue(); Object PalletID = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue(); if (SFCCode == null ) { miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("23").build()); } else { OmOrderScheduling omOrderScheduling = new OmOrderScheduling(); omOrderScheduling.setRemarks(PalletID.toString()); List<OmOrderScheduling> resultList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling); log.info("æ¥è¯¢ç»ææ°é: {}", resultList); BsBomChildInfo bsbomChildInfo= new BsBomChildInfo(); bsbomChildInfo.setLocationCode(device); bsbomChildInfo.setBomCode(resultList.get(0).getWorkOrderNo()); //ä¸åé æ¹ formula(thoroughfare, device, bsbomChildInfo); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build()); } } // // //åºç«ä¿åæ°æ® } else if (Constants.TWO.equals(valueString)) { //é¦åç« if(Constants.C005.equals(device)){ // å¤ææ¥åæ¯å¦æå OmOrderScheduling omOrderScheduling = new OmOrderScheduling(); List<OmOrderScheduling> omOrderSchedulinglist = new ArrayList<>(); Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue(); Object PalletID = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue(); Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue(); //æçç»å®SFCCodeåå·¥å omOrderScheduling.setWorkOrderNo(workOrderNumber.toString()); omOrderScheduling.setRemarks(PalletID.toString()); omOrderScheduling.setSfcCode(SFCCode.toString()); omOrderSchedulinglist.add(omOrderScheduling); omOrderSchedulingService.saveBatch(omOrderSchedulinglist); // 缺å°ä¿åæ°æ®çæ¹æ³ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("21").build()); }else if(Constants.PLC.contains(device) && Constants.OP310.contains(device)){ } } } } catch (Exception e) { log.error(e.getMessage()); } } //é¦å·¥ç«ä¸åå·¥å,并çæSNç private static final String[] MONTH = {"A","B","C","D","E","F","G","H","I","J","K","L"}; public void plackWorkOrder(String thoroughfare, String device, String tab, String valueString) { try { if (Constants.WorkOrderRequest.equals(tab)) { if (Constants.ZERO.equals(valueString)) { miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("0").build()); } else if (Constants.ONE.equals(valueString)) { // æ¥è¯¢æ°æ®åºè·å符åæ¡ä»¶ç订åä¿¡æ¯ OmProductionOrderInfo getEarliestOrder = omProductionOrderInfoService.getEarliestOrder(); if (getEarliestOrder != null) { //å¤æå½åä¸åæ°é if(getEarliestOrder.getRemarks() >= getEarliestOrder.getPlanQty()){ //æ´æ°å·¥åç¶æ omProductionOrderInfoService.updateOrderStatus5(); //æ¥è¯¢æ°æ»¡è¶³çå·¥å OmProductionOrderInfo getEarliestOrder2 = omProductionOrderInfoService.getEarliestOrder(); if (getEarliestOrder2 != null) { // å°æ°æ®åå ¥å°å°ååä¸ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getEarliestOrder2.getWorkOrderNo()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getEarliestOrder2.getPlanQty())).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getEarliestOrder2.getEngineType()).build()); //çæsnç OmProductionOrderInfo serialNumber = omProductionOrderInfoService.getSerialNumber(); String A3 = String.valueOf(LocalDateTime.now().getYear()).substring(2); if(A3.equals(String.valueOf(serialNumber.getRemarks()))){ String A1 = getEarliestOrder2.getEngineType();//è·å产ååå· String A2 = "3"; String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// è·åå½åæ份ï¼1-12ï¼ String A5 = String.format("%05d", serialNumber.getPlanQty()); String SFCCode = A1 + A2 + A3+ A4 + A5; miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build()); omProductionOrderInfoService.updateSerialNumber(); }else{ OmProductionOrderInfo newNumber = omProductionOrderInfoService.updateYear(); String A1 = getEarliestOrder2.getEngineType();//è·å产ååå· String A2 = "3"; String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// è·åå½åæ份ï¼1-12ï¼ String A5 = String.format("%05d", newNumber.getPlanQty()); String SFCCode = A1 + A2 + A3+ A4 + A5; miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build()); omProductionOrderInfoService.updateSerialNumber(); } // æ´æ° WorkOrderRequestDone å°åå miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build()); BsBomChildInfo bsbomChildInfo= new BsBomChildInfo(); bsbomChildInfo.setLocationCode(device); bsbomChildInfo.setBomCode(getEarliestOrder2.getWorkOrderNo()); //åä¸å·¥èºé æ¹ formula(thoroughfare, device, bsbomChildInfo); omProductionOrderInfoService.updateOrderStatus2(); } } else if (getEarliestOrder.getRemarks() < getEarliestOrder.getPlanQty()) { //æ´æ°å·¥åç¶æ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getEarliestOrder.getWorkOrderNo()).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getEarliestOrder.getPlanQty())).build()); miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getEarliestOrder.getEngineType()).build()); //çæsnç OmProductionOrderInfo serialNumber = omProductionOrderInfoService.getSerialNumber(); String A3 = String.valueOf(LocalDateTime.now().getYear()).substring(2); if(A3.equals(String.valueOf(serialNumber.getRemarks()))){ String A1 = getEarliestOrder.getEngineType();//è·å产ååå· String A2 = "3"; String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// è·åå½åæ份ï¼1-12ï¼ String A5 = String.format("%05d", serialNumber.getPlanQty()); String SFCCode = A1 + A2 + A3+ A4 + A5; miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build()); omProductionOrderInfoService.updateSerialNumber(); }else{ OmProductionOrderInfo newNumber = omProductionOrderInfoService.updateYear(); String A1 = getEarliestOrder.getEngineType();//è·å产ååå· String A2 = "3"; String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// è·åå½åæ份ï¼1-12ï¼ String A5 = String.format("%05d", newNumber.getPlanQty()); String SFCCode = A1 + A2 + A3+ A4 + A5; miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build()); omProductionOrderInfoService.updateSerialNumber(); } // æ´æ° WorkOrderRequestDone å°åå miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build()); BsBomChildInfo bsbomChildInfo= new BsBomChildInfo(); bsbomChildInfo.setLocationCode(device); bsbomChildInfo.setBomCode(getEarliestOrder.getWorkOrderNo()); //åä¸å·¥èºé æ¹ formula(thoroughfare, device, bsbomChildInfo); omProductionOrderInfoService.updateOrderStatus2(); } } } } } catch (Exception e) { log.error(e.getMessage()); } } //åä¸å·¥èºé æ¹æ¹æ³ private void formula(String thoroughfare, String device, BsBomChildInfo bsbomChildInfo) throws Exception { List<BsBomChildInfo> bomChildList = bomChildInfoService.selectBsBomChildInfoList(bsbomChildInfo); for (int i = 1; i <= bomChildList.size(); i++) { // çæ MaterialCode èç¹ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Code"+ i).value(bomChildList.get(i-1).getMaterialCode()).build()); // çæ MaterialNumber èç¹ miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Number"+ i).value(bomChildList.get(i-1).getCostQty()).build()); } } } // billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml
@@ -26,6 +26,61 @@ select id, work_order_no, sales_order_code, product_code, line_code, plan_qty, plan_start_time, plan_end_time, order_status, create_time, update_time, create_by, update_by, remarks, del_flag from om_production_order_info </sql> <!-- æ¥è¯¢ order_status 为 1 ä¸ plan_start_time ææ©çä¸æ¡è®°å½ --> <select id="selectEarliestOrder" resultType="OmProductionOrderInfo"> SELECT TOP 1 * FROM om_production_order_info WHERE order_status IN (1, 2) ORDER BY plan_start_time ASC </select> <select id="selectEarliestOrder2" resultType="OmProductionOrderInfo"> SELECT TOP 1 * FROM om_production_order_info WHERE order_status IN (5) ORDER BY plan_start_time ASC </select> <select id="updateOrderStatus" resultType="OmProductionOrderInfo"> UPDATE om_production_order_info SET order_status = 5 WHERE id = ( SELECT TOP 1 id FROM om_production_order_info WHERE order_status IN (1, 2) ORDER BY plan_start_time ASC ); </select> <select id="updateOrderStatus2" resultType="OmProductionOrderInfo"> UPDATE om_production_order_info SET order_status = 2 WHERE id = ( SELECT TOP 1 id FROM om_production_order_info WHERE order_status IN (1, 2) ORDER BY plan_start_time ASC ); </select> <select id="getSerialNumber" resultType="OmProductionOrderInfo"> SELECT * FROM om_production_order_info WHERE id = 1 </select> <select id="updateSerialNumber" resultType="OmProductionOrderInfo"> UPDATE om_production_order_info SET plan_qty = plan_qty + 1 WHERE id = 1; </select> <select id="updateYear" resultType="OmProductionOrderInfo"> UPDATE om_production_order_info SET remarks = remarks + 1, qty = 1 WHERE id = 1; </select> <select id="selectOmProductionOrderInfoList" parameterType="OmProductionOrderInfo" resultMap="OmProductionOrderInfoResult"> <include refid="selectOmProductionOrderInfoVo"/> <where>