hdy
6 天以前 b9df2fc5c64a1d989991655a9e42e4d1f2ec4075
修改
已修改16个文件
已添加5个文件
1171 ■■■■ 文件已修改
billion-admin/src/main/resources/application-druid.yml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/api/RestfulAPI.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/api/domain/WorkOrdersInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/api/domain/WorkOrdersInfoChild.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/api/service/IWorkOrdersInfoService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/api/service/impl/WorkOrdersInfoServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/constant/Constants.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/om/mapper/OmProductionOrderInfoMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/om/service/IOmProductionOrderInfoService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java 209 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sys/domain/SysCount.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sys/mapper/SysCountMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sys/service/ISysCountService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sys/service/impl/SysCountServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/resources/mapper/om/OmOrderSchedulingMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/resources/mapper/sys/SysCountMapper.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-admin/src/main/resources/application-druid.yml
@@ -6,9 +6,12 @@
            # ä¸»åº“数据源
            master:
                driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
                url: jdbc:sqlserver://183.134.244.158:1433;DatabaseName=billion-db
#                url: jdbc:sqlserver://183.134.244.158:1433;DatabaseName=billion-db
#                username: sa
#                password: JCDM@2023
                url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=billion-db
                username: sa
                password: JCDM@2023
                password: 123456
#                password: admin@123
            # åˆå§‹è¿žæŽ¥æ•°
            initialSize: 10
billion-main/src/main/java/com/billion/main/api/RestfulAPI.java
@@ -25,7 +25,7 @@
     * 1、工厂MES调用接收工单接口,将工单信息发送给产线MES
     * 2、产线MES将接收到的工单信息存入到工单表和BOM表
     */
    @GetMapping("/receiveWorkOrdersInfo")
    @PostMapping("/receiveWorkOrdersInfo")
    public ApiResponse receiveWorkOrdersInfo(@RequestBody WorkOrdersInfo workOrdersInfo) {
        try {
            // è°ƒç”¨service层保存数据
billion-main/src/main/java/com/billion/main/api/domain/WorkOrdersInfo.java
@@ -18,7 +18,7 @@
    private String startTime;
    private String description;
    private String state;
    private String fLAG;
    private String flag;
    private String bomName;
    private List<WorkOrdersInfoChild> data;
billion-main/src/main/java/com/billion/main/api/domain/WorkOrdersInfoChild.java
@@ -4,7 +4,7 @@
@Data
public class WorkOrdersInfoChild {
    private String BomName;  // æ·»åŠ BomName字段用于关联
    private String bomName;  // æ·»åŠ BomName字段用于关联
    private String stationName;
    private String material;
    private String count;
billion-main/src/main/java/com/billion/main/api/service/IWorkOrdersInfoService.java
@@ -2,6 +2,7 @@
import com.billion.main.api.domain.WorkOrdersInfo;
public interface IWorkOrdersInfoService {
    boolean saveWorkOrders(WorkOrdersInfo workOrdersInfo);
}
billion-main/src/main/java/com/billion/main/api/service/impl/WorkOrdersInfoServiceImpl.java
@@ -40,6 +40,9 @@
        try {
            //保存工单信息
            OmProductionOrderInfo omProductionOrderInfo = new OmProductionOrderInfo();
            omProductionOrderInfo.setBodyQty(Long.valueOf("0"));
            omProductionOrderInfo.setHeadQty(Long.valueOf("0"));
            omProductionOrderInfo.setPreQty(Long.valueOf("0"));
            omProductionOrderInfo.setWorkOrderNo(workOrdersInfo.getOrderNumber());
            omProductionOrderInfo.setSalesOrderCode(workOrdersInfo.getBatchNumber());
            omProductionOrderInfo.setProductCode(workOrdersInfo.getMaterialNumber());
@@ -49,17 +52,16 @@
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date startTime = sdf.parse(workOrdersInfo.getStartTime());
            omProductionOrderInfo.setPlanStartTime(startTime);
            omProductionOrderInfo.setRemarks(Long.valueOf(workOrdersInfo.getDescription()));
//            omProductionOrderInfo.setRemarks(Long.valueOf(workOrdersInfo.getDescription()));
            omProductionOrderInfo.setOrderStatus(workOrdersInfo.getState());
            omProductionOrderInfo.setFlag(workOrdersInfo.getFLAG());
            omProductionOrderInfoService.save(omProductionOrderInfo);
            omProductionOrderInfo.setFlag(workOrdersInfo.getFlag());
            omProductionOrderInfoService.insertOmProductionOrderInfo(omProductionOrderInfo);
            //保存BOM主表信息
            BsBomInfo bsBomInfo = new BsBomInfo();
            bsBomInfo.setBomCode(workOrdersInfo.getBomName());
            bsBomInfo.setBomName(workOrdersInfo.getBomName());
            bsBomInfo.setProductCode(workOrdersInfo.getMaterialNumber());
            bsBomInfo.setProductName(workOrdersInfo.getMaterialNumber());
            bsBomInfoService.save(bsBomInfo);
            bsBomInfoService.insertBsBomInfo(bsBomInfo);
            //保存BOM子表信息
            List<WorkOrdersInfoChild> childList = workOrdersInfo.getData();
            for (WorkOrdersInfoChild child : childList) {
@@ -73,7 +75,7 @@
                bsBomChildInfo.setCostQty(child.getCount());
                bsBomChildInfo.setChecked(child.getChecked());
                bsBomChildInfo.setMaterialName(child.getMaterialName());
                bsBomChildInfoService.save(bsBomChildInfo);
                bsBomChildInfoService.insertBsBomChildInfo(bsBomChildInfo);
            }
            return true;
        } catch (Exception e) {
billion-main/src/main/java/com/billion/main/constant/Constants.java
@@ -11,63 +11,85 @@
    public static final String RecordData= "RecordData";
    public static final String WorkOrderRequest= "WorkOrderRequest";
    public static final List<String> PLC = new ArrayList<>();
    public static final List<String> PLC1 = new ArrayList<>();
    public static final List<String> PLC2 = new ArrayList<>();
    public static final List<String> PLC3 = new ArrayList<>();
    public static final List<String> PLC4 = new ArrayList<>();
    public static final String C005= "C005";
    public static final List<String> ONLINE = new ArrayList<>();
    public static final List<String> OFFLINE = new ArrayList<>();
    //PLC1
    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 C050= "C050";
    public static final String C060= "C060";
    public static final String C070= "C070";
    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";
    //PLC2
    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 OP070= "OP070";
    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 OP095_1= "OP095-1";
    public static final String OP095_2= "OP095-2";
    public static final String OP100_1= "OP100-1";
    public static final String OP100_2= "OP100-2";
    public static final String OP120= "OP120";
    public static final String P010= "P010";//预装上线工位//预装下线工位
    //PLC3
    public static final String OP130= "OP130";
    public static final String OP145= "OP145";
    public static final String OP150= "OP150";
    public static final String OP145_1= "OP145-1";
    public static final String OP145_2= "OP145-2";
    public static final String OP150_1= "OP150-1";
    public static final String OP150_2= "OP150-2";
    public static final String OP160= "OP160";
    public static final String OP165= "OP165";
    public static final String OP170= "OP170";
    public static final String OP165_1= "OP165-1";
    public static final String OP165_2= "OP165-2";
    public static final String OP170_1= "OP170-1";
    public static final String OP170_2= "OP170-2";
    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 OP190_1= "OP190-1";
    public static final String OP190_2= "OP190-2";
    public static final String OP200_1= "OP200-1";
    public static final String OP200_2= "OP200-2";
    public static final String OP210_1= "OP210-1";
    public static final String OP210_2= "OP210-2";
    public static final String OP220_1= "OP220-1";
    public static final String OP220_2= "OP220-2";
    public static final String OP230_1= "OP230-1";
    public static final String OP230_2= "OP230-2";
    public static final String OP240_1= "OP240-1";
    public static final String OP240_2= "OP240-2";
    public static final String OP250_1= "OP250-1";
    public static final String OP250_2= "OP250-2";
    public static final String OP260_1= "OP260-1";
    public static final String OP260_2= "OP260-2";
    public static final String OP270_1= "OP270-1";
    public static final String OP270_2= "OP270-2";
    public static final String OP275= "OP275";
    public static final String OP280= "OP280";
    public static final String OP290= "OP290";
    public static final String OP290_1= "OP290-1";
    public static final String OP290_2= "OP290-2";
    public static final String OP295= "OP295";
    public static final String OP300= "OP300";
    public static final String OP310= "OP310";
    public static final String OP310= "OP310"; //缸体下线工位
    //PLC4
    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/OmOrderScheduling.java
@@ -55,4 +55,8 @@
    @Excel(name = "备注")
    private String remarks;
    /** å½“前订单已上线数量 */
    @Excel(name = "当前订单已上线数量")
    private Long nowQty;
}
billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java
@@ -39,6 +39,15 @@
    /** è®¡åˆ’数量 */
    @Excel(name = "计划数量")
    private Long planQty;
    /** è®¡åˆ’数量 */
    @Excel(name = "缸体数量")
    private Long bodyQty;
    /** è®¡åˆ’数量 */
    @Excel(name = "缸盖数量")
    private Long headQty;
    /** è®¡åˆ’数量 */
    @Excel(name = "预装数量")
    private Long preQty;
    /** è®¡åˆ’开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -54,9 +63,19 @@
    @Excel(name = "工单状态", readConverterExp = "1=未开始,2=生产中,3=已完成,4=已关闭")
    private String orderStatus;
    /** å·¥å•çŠ¶æ€ï¼ˆ1未开始2生产中3已完成4已关闭) */
    @Excel(name = "工单缸体状态", readConverterExp = "1=未开始,2=生产中,3=已完成,4=已关闭")
    private String bodyStatus;
    /** å·¥å•çŠ¶æ€ï¼ˆ1未开始2生产中3已完成4已关闭) */
    @Excel(name = "工单缸盖状态", readConverterExp = "1=未开始,2=生产中,3=已完成,4=已关闭")
    private String headStatus;
    /** å·¥å•çŠ¶æ€ï¼ˆ1未开始2生产中3已完成4已关闭) */
    @Excel(name = "工单预装状态", readConverterExp = "1=未开始,2=生产中,3=已完成,4=已关闭")
    private String preStatus;
    /** å¤‡æ³¨ */
    @Excel(name = "备注")
    private Long remarks;
    private String remarks;
    /** å‘动机型号 */
    @Excel(name = "发动机型号")
billion-main/src/main/java/com/billion/main/om/mapper/OmProductionOrderInfoMapper.java
@@ -15,15 +15,21 @@
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 getBodyOrder();
    public OmProductionOrderInfo updateOrderStatus2();
    public OmProductionOrderInfo updateBodyStatus2();
    public OmProductionOrderInfo updateBodyStatus1();
    public OmProductionOrderInfo getHeadOrder();
    public OmProductionOrderInfo updateHeadStatus2();
    public OmProductionOrderInfo updateHeadStatus1();
    public OmProductionOrderInfo getPreOrder();
    public OmProductionOrderInfo updatePreStatus2();
    public OmProductionOrderInfo updatePreStatus1();
billion-main/src/main/java/com/billion/main/om/service/IOmProductionOrderInfoService.java
@@ -14,13 +14,18 @@
 */
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();
    public OmProductionOrderInfo getBodyOrder();
    public OmProductionOrderInfo updateBodyStatus2();
    public OmProductionOrderInfo updateBodyStatus1();
    public OmProductionOrderInfo getHeadOrder();
    public OmProductionOrderInfo updateHeadStatus2();
    public OmProductionOrderInfo updateHeadStatus1();
    public OmProductionOrderInfo getPreOrder();
    public OmProductionOrderInfo updatePreStatus2();
    public OmProductionOrderInfo updatePreStatus1();
billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java
@@ -29,34 +29,49 @@
    @Override
    public OmProductionOrderInfo getEarliestOrder()
    public OmProductionOrderInfo getBodyOrder()
    {
        return OmProductionOrderInfoMapper.selectEarliestOrder();
        return OmProductionOrderInfoMapper.getBodyOrder();
    }
    @Override
    public OmProductionOrderInfo updateBodyStatus2() {return OmProductionOrderInfoMapper.updateBodyStatus2();}
    @Override
    public OmProductionOrderInfo updateBodyStatus1()
    {
        return OmProductionOrderInfoMapper.updateBodyStatus1();
    }
    @Override
    public OmProductionOrderInfo getEarliestOrder2() {return OmProductionOrderInfoMapper.selectEarliestOrder2();}
    @Override
    public OmProductionOrderInfo getSerialNumber()
    public OmProductionOrderInfo getHeadOrder()
    {
        return OmProductionOrderInfoMapper.getSerialNumber();
        return OmProductionOrderInfoMapper.getHeadOrder();
    }
    @Override
    public OmProductionOrderInfo updateHeadStatus2() {return OmProductionOrderInfoMapper.updateHeadStatus2();}
    @Override
    public OmProductionOrderInfo updateHeadStatus1()
    {
        return OmProductionOrderInfoMapper.updateHeadStatus1();
    }
    @Override
    public OmProductionOrderInfo updateSerialNumber() {return OmProductionOrderInfoMapper.updateSerialNumber();}
    @Override
    public OmProductionOrderInfo updateYear() {return OmProductionOrderInfoMapper.updateYear();}
    @Override
    public OmProductionOrderInfo updateOrderStatus5()
    public OmProductionOrderInfo getPreOrder()
    {
        return OmProductionOrderInfoMapper.updateOrderStatus5();
        return OmProductionOrderInfoMapper.getPreOrder();
    }
    @Override
    public OmProductionOrderInfo updateOrderStatus2()
    public OmProductionOrderInfo updatePreStatus2() {return OmProductionOrderInfoMapper.updatePreStatus2();}
    @Override
    public OmProductionOrderInfo updatePreStatus1()
    {
        return OmProductionOrderInfoMapper.updateOrderStatus2();
        return OmProductionOrderInfoMapper.updatePreStatus1();
    }
    /**
     * æŸ¥è¯¢ç”Ÿäº§å·¥å•
     * 
billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java
@@ -9,6 +9,7 @@
import com.billion.main.om.service.IOmOrderSchedulingService;
import com.billion.main.om.service.IOmProductionOrderInfoService;
import com.billion.main.plcServer.sub.OPCUaSubscription;
import com.billion.main.sys.service.ISysCountService;
import com.kangaroohy.milo.service.MiloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
@@ -38,62 +39,85 @@
    public IDaCollectionParamConfService daCollectionParamConfService;
    @Autowired
    public IDaMaterialCollectionService daMaterialCollectionService;
    @Autowired
    public ISysCountService sysCountService;
    @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);
        //
        //PLC1设备//排查上下线
        Constants.PLC1.add(Constants.C010);
        Constants.PLC1.add(Constants.C020);
        Constants.PLC1.add(Constants.C030);
        Constants.PLC1.add(Constants.C050);
        Constants.PLC1.add(Constants.C060);
        //PLC2设备//排查上下线
        Constants.PLC2.add(Constants.OP005);
        Constants.PLC2.add(Constants.OP010);
        Constants.PLC2.add(Constants.OP020);
        Constants.PLC2.add(Constants.OP040);
        Constants.PLC2.add(Constants.OP045);
        Constants.PLC2.add(Constants.OP060);
        Constants.PLC2.add(Constants.OP070);
        Constants.PLC2.add(Constants.OP075);
        Constants.PLC2.add(Constants.OP080);
        Constants.PLC2.add(Constants.OP090);
        Constants.PLC2.add(Constants.OP095_1);
        Constants.PLC2.add(Constants.OP095_2);
        Constants.PLC2.add(Constants.OP100_1);
        Constants.PLC2.add(Constants.OP100_2);
        Constants.PLC2.add(Constants.OP120);
        //PLC3设备//排查上下线
        Constants.PLC3.add(Constants.OP130);
        Constants.PLC3.add(Constants.OP145_1);
        Constants.PLC3.add(Constants.OP145_2);
        Constants.PLC3.add(Constants.OP150_1);
        Constants.PLC3.add(Constants.OP150_2);
        Constants.PLC3.add(Constants.OP160);
        Constants.PLC3.add(Constants.OP165_1);
        Constants.PLC3.add(Constants.OP165_2);
        Constants.PLC3.add(Constants.OP170_1);
        Constants.PLC3.add(Constants.OP170_2);
        Constants.PLC3.add(Constants.OP180);
        Constants.PLC3.add(Constants.OP190_1);
        Constants.PLC3.add(Constants.OP190_2);
        Constants.PLC3.add(Constants.OP200_1);
        Constants.PLC3.add(Constants.OP200_2);
        Constants.PLC3.add(Constants.OP210_1);
        Constants.PLC3.add(Constants.OP210_2);
        Constants.PLC3.add(Constants.OP220_1);
        Constants.PLC3.add(Constants.OP220_2);
        Constants.PLC3.add(Constants.OP230_1);
        Constants.PLC3.add(Constants.OP230_2);
        Constants.PLC3.add(Constants.OP240_1);
        Constants.PLC3.add(Constants.OP240_2);
        Constants.PLC3.add(Constants.OP250_1);
        Constants.PLC3.add(Constants.OP250_2);
        Constants.PLC3.add(Constants.OP260_1);
        Constants.PLC3.add(Constants.OP260_2);
        Constants.PLC3.add(Constants.OP270_1);
        Constants.PLC3.add(Constants.OP270_2);
        Constants.PLC3.add(Constants.OP275);
        Constants.PLC3.add(Constants.OP280);
        Constants.PLC3.add(Constants.OP290_1);
        Constants.PLC3.add(Constants.OP290_2);
        Constants.PLC3.add(Constants.OP295);
        Constants.PLC3.add(Constants.OP300);
        Constants.PLC3.add(Constants.OP310);
        //PLC4//排查上下线
        Constants.PLC4.add(Constants.C040);
        Constants.PLC4.add(Constants.OP030);
        Constants.PLC4.add(Constants.OP050);
        Constants.PLC4.add(Constants.OP110);
        Constants.PLC4.add(Constants.OP140);
        //上线工位
        Constants.ONLINE.add(Constants.C005);
        Constants.ONLINE.add(Constants.OP005);
        //下线工位
        Constants.OFFLINE.add(Constants.C070);
        Constants.OFFLINE.add(Constants.OP310);
        Constants.OFFLINE.add(Constants.P010);
        OPCUaSubscription OPCUaSubscription = new OPCUaSubscription(miloService,
                daParamCollectionService,
@@ -102,7 +126,8 @@
                omOrderSchedulingService,
                bsBomChildInfoService,
                daCollectionParamConfService,
                daMaterialCollectionService);
                daMaterialCollectionService,
                sysCountService);
        List<String> lists = getList();
        System.out.println("订阅内容:"+lists);
@@ -112,10 +137,80 @@
    public List<String> getList(){
        List<String> lists = new ArrayList<>();
        lists.add("PLC1.C005.RecordData");//请求保存
        lists.add("PLC1.C005.WorkOrderRequest");//请求保存
        lists.add("PLC1.OP010.RecordData");//请求保存
        lists.add("PLC1.A1.RecordData");//请求保存
        //PLC1
        lists.add("PLC1.C005.RecordData");
        lists.add("PLC1.C005.WorkOrderRequest");//请求工单
        lists.add("PLC1.C010.RecordData");
        lists.add("PLC1.C020.RecordData");
        lists.add("PLC1.C030.RecordData");
        lists.add("PLC1.C050.RecordData");
        lists.add("PLC1.C060.RecordData");
        lists.add("PLC1.C070.RecordData");
        //PLC2
        lists.add("PLC2.OP005.RecordData");
        lists.add("PLC2.OP010.WorkOrderRequest");//请求工单
        lists.add("PLC2.OP020.RecordData");
        lists.add("PLC2.OP040.RecordData");
        lists.add("PLC2.OP045.RecordData");
        lists.add("PLC2.OP060.RecordData");
        lists.add("PLC2.OP070.RecordData");
        lists.add("PLC2.OP075.RecordData");
        lists.add("PLC2.OP080.RecordData");
        lists.add("PLC2.OP090.RecordData");
        lists.add("PLC2.OP095-1.RecordData");
        lists.add("PLC2.OP095-2.RecordData");
        lists.add("PLC2.OP100-1.RecordData");
        lists.add("PLC2.OP100-2.RecordData");
        lists.add("PLC2.OP120.RecordData");
        lists.add("PLC2.P010.RecordData");
        lists.add("PLC2.P010.WorkOrderRequest");//请求工单
        //PLC3
        lists.add("PLC3.OP130.RecordData");
        lists.add("PLC3.OP145-1.RecordData");
        lists.add("PLC3.OP145-2.RecordData");
        lists.add("PLC3.OP150-1.RecordData");
        lists.add("PLC3.OP150-2.RecordData");
        lists.add("PLC3.OP160.RecordData");
        lists.add("PLC3.OP165-1.RecordData");
        lists.add("PLC3.OP165-2.RecordData");
        lists.add("PLC3.OP170-1.RecordData");
        lists.add("PLC3.OP170-2.RecordData");
        lists.add("PLC3.OP180.RecordData");
        lists.add("PLC3.OP190-1.RecordData");
        lists.add("PLC3.OP190-2.RecordData");
        lists.add("PLC3.OP200-1.RecordData");
        lists.add("PLC3.OP200-2.RecordData");
        lists.add("PLC3.OP210-1.RecordData");
        lists.add("PLC3.OP210-2.RecordData");
        lists.add("PLC3.OP220-1.RecordData");
        lists.add("PLC3.OP220-2.RecordData");
        lists.add("PLC3.OP230-1.RecordData");
        lists.add("PLC3.OP230-2.RecordData");
        lists.add("PLC3.OP240-1.RecordData");
        lists.add("PLC3.OP240-2.RecordData");
        lists.add("PLC3.OP250-1.RecordData");
        lists.add("PLC3.OP250-2.RecordData");
        lists.add("PLC3.OP260-1.RecordData");
        lists.add("PLC3.OP260-2.RecordData");
        lists.add("PLC3.OP270-1.RecordData");
        lists.add("PLC3.OP270-2.RecordData");
        lists.add("PLC3.OP275.RecordData");
        lists.add("PLC3.OP280.RecordData");
        lists.add("PLC3.OP290-1.RecordData");
        lists.add("PLC3.OP290-2.RecordData");
        lists.add("PLC3.OP295.RecordData");
        lists.add("PLC3.OP300.RecordData");
        lists.add("PLC3.OP310.RecordData");
        //PLC4
        lists.add("PLC4.C040.RecordData");
        lists.add("PLC4.OP030.RecordData");
        lists.add("PLC4.OP050.RecordData");
        lists.add("PLC4.OP070.RecordData");
        lists.add("PLC3.OP110.RecordData");
        lists.add("PLC3.OP140.RecordData");
        return lists;
    }
billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -1,4 +1,5 @@
package com.billion.main.plcServer.sub;
import com.billion.common.utils.StringUtils;
import com.billion.main.bs.domain.BsBomChildInfo;
import com.billion.main.bs.service.IBsBomChildInfoService;
@@ -15,15 +16,18 @@
import com.billion.main.om.domain.OmProductionOrderInfo;
import com.billion.main.om.service.IOmOrderSchedulingService;
import com.billion.main.om.service.IOmProductionOrderInfoService;
import com.billion.main.sys.domain.SysCount;
import com.billion.main.sys.service.ISysCountService;
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.Date;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
@Slf4j
@Component
@@ -36,6 +40,7 @@
    public IBsBomChildInfoService bsBomChildInfoService;
    public IDaCollectionParamConfService daCollectionParamConfService;
    public IDaMaterialCollectionService daMaterialCollectionService;
    public ISysCountService sysCountService;
    public OPCUaSubscription(MiloService miloService,
@@ -45,7 +50,8 @@
                             IOmOrderSchedulingService omOrderSchedulingService,
                             IBsBomChildInfoService bsBomChildInfoService,
                             IDaCollectionParamConfService daCollectionParamConfService,
                             IDaMaterialCollectionService daMaterialCollectionService
                             IDaMaterialCollectionService daMaterialCollectionService,
                             ISysCountService sysCountService
                             ) {
        OPCUaSubscription.miloService = miloService;
        this.daParamCollectionService = daParamCollectionService;
@@ -55,6 +61,7 @@
        this.bsBomChildInfoService = bsBomChildInfoService;
        this.daCollectionParamConfService = daCollectionParamConfService;
        this.daMaterialCollectionService = daMaterialCollectionService;
        this.sysCountService = sysCountService;
    }
    @Override
    public void onSubscribe(String identifier, Object value) {
@@ -84,12 +91,12 @@
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("0").build());
                //请求进站
                } else if (Constants.ONE.equals(valueString)){
                    //首工站
                    if(Constants.C005.equals(device)){
                    //1.1//首工站
                    if(Constants.C005.equals(device) || Constants.OP005.equals(device) || Constants.P010.equals(device)){
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build());
                    }
                    //除首工站所有工站
                    else if(Constants.PLC.contains(device) && Constants.OP310.contains(device)){
                    ///////除首工站所有工站
                    else if(Constants.PLC1.contains(device) && Constants.OP310.contains(device)){
                        //校验SFCCode是否存在
                        Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
                        Object PalletID = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
@@ -106,124 +113,129 @@
                            //下发配方
                            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<>();
                    OmProductionOrderInfo omProductionOrderInfo = new OmProductionOrderInfo();
                    OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
                    Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
                    //上线工位
                    if(Constants.ONLINE.contains(device)){
                        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和工单
                        Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
                        omOrderScheduling.setWorkOrderNo(workOrderNumber.toString());
                        omOrderScheduling.setRemarks(PalletID.toString());
                        omOrderScheduling.setNowQty((Long) nowQty);
                        omOrderScheduling.setSfcCode(SFCCode.toString());
                        omOrderSchedulinglist.add(omOrderScheduling);
                        omOrderSchedulingService.saveBatch(omOrderSchedulinglist);
                        //查询descriptive字段等于1的采集项保存到扫码保存到da_material_collection表里
                        DaCollectionParamConf daCollectionParamConf1 = new DaCollectionParamConf();
                        daCollectionParamConf1.setProcessesCode(device);
                        daCollectionParamConf1.setDescriptive("1");
                        List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                        for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                            String gatherAddress = conf.getGatherAddress();
                            Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // èŽ·å–原始值对象‌:ml-citation{ref="4" data="citationList"}
                            if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
                                log.warn("采集地址{}返回空值,跳过存储", gatherAddress);
                                continue; // ç»ˆæ­¢å½“前循环迭代‌:ml-citation{ref="1,2" data="citationList"}
                            }
                                DaMaterialCollection materialCollection = new DaMaterialCollection();
                                materialCollection.setSfcCode(SFCCode.toString());
                                materialCollection.setLocationCode(device);
                                materialCollection.setParamName(conf.getParameterSetName());
                                materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                                materialCollection.setCollectTime(new Date());
                                daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                        //托盘绑定SFCCode和工单和产线
                        if(Constants.OP005.equals(device)){
                            omOrderScheduling.setRemarks("Body");
                        }
                        //查询descriptive字段等于2的采集项保存到扫码保存到da_param_collection表里
                        DaCollectionParamConf daCollectionParamConf2 = new DaCollectionParamConf();
                        daCollectionParamConf2.setProcessesCode(device);
                        daCollectionParamConf2.setDescriptive("2");
                        List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2);
                        for (DaCollectionParamConf conf : daCollectionParamConfList2) {
                            String gatherAddress = conf.getGatherAddress();
                            Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // èŽ·å–原始值对象‌:ml-citation{ref="4" data="citationList"}
                            if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
                                log.warn("采集地址{}返回空值,跳过存储", gatherAddress);
                                continue; // ç»ˆæ­¢å½“前循环迭代‌:ml-citation{ref="1,2" data="citationList"}
                            }
                                DaParamCollection paramCollection = new DaParamCollection();
                                paramCollection.setSfcCode(SFCCode.toString());
                                paramCollection.setLocationCode(device);
                                paramCollection.setParamName(conf.getParameterSetName());
                                paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                                paramCollection.setCollectionTime(new Date());
                                daParamCollectionService.insertDaParamCollection(paramCollection);
                        if(Constants.C005.equals(device)){
                            omOrderScheduling.setRemarks("Head");
                        }
                        DaStationCollection daStationCollection = new DaStationCollection();
                        daStationCollection.setLocationCode(device);
                        daStationCollection.setSfcCode(SFCCode.toString());
                        daStationCollection.setInboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime").getValue());
                        daStationCollection.setOutboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime").getValue());
                        daStationCollectionService.insertDaStationCollection(daStationCollection);
                        omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling);
                    }else if(Constants.OFFLINE.contains(device)){
                        if(Constants.C070.equals(device)){
                            omOrderScheduling.setRemarks("Head");
                            omOrderScheduling.setSfcCode(SFCCode.toString());
                            List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
                            Object nowQty = omOrderSchedulingList.get(0).getNowQty();
                            Object WorkOrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo();
                            omProductionOrderInfo.setWorkOrderNo(WorkOrderNumber.toString());
                            List<OmProductionOrderInfo> omProductionOrderInfoList = omProductionOrderInfoService.selectOmProductionOrderInfoList(omProductionOrderInfo);
                            Object headQty = omProductionOrderInfoList.get(0).getHeadQty();
                            if (nowQty == headQty){
                                omProductionOrderInfoList.get(0).setHeadStatus("3");
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("21").build());
                    }else if(Constants.PLC.contains(device) && Constants.OP310.contains(device) ){
                        Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
                        //查询descriptive字段等于1的采集项保存到扫码保存到da_material_collection表里
                        DaCollectionParamConf daCollectionParamConf1 = new DaCollectionParamConf();
                        daCollectionParamConf1.setProcessesCode(device);
                        daCollectionParamConf1.setDescriptive("1");
                        List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                        for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                            String gatherAddress = conf.getGatherAddress();
                            Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // èŽ·å–原始值对象‌:ml-citation{ref="4" data="citationList"}
                            if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
                                log.warn("采集地址{}返回空值,跳过存储", gatherAddress);
                                continue; // ç»ˆæ­¢å½“前循环迭代‌:ml-citation{ref="1,2" data="citationList"}
                                omProductionOrderInfoService.updateOmProductionOrderInfo(omProductionOrderInfoList.get(0));
                            }
                            DaMaterialCollection materialCollection = new DaMaterialCollection();
                            materialCollection.setSfcCode(SFCCode.toString());
                            materialCollection.setLocationCode(device);
                            materialCollection.setParamName(conf.getParameterSetName());
                            materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                            materialCollection.setCollectTime(new Date());
                            daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                        }
                        //查询descriptive字段等于2的采集项保存到扫码保存到da_param_collection表里
                        DaCollectionParamConf daCollectionParamConf2 = new DaCollectionParamConf();
                        daCollectionParamConf2.setProcessesCode(device);
                        daCollectionParamConf2.setDescriptive("2");
                        List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2);
                        for (DaCollectionParamConf conf : daCollectionParamConfList2) {
                            String gatherAddress = conf.getGatherAddress();
                            Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // èŽ·å–原始值对象‌:ml-citation{ref="4" data="citationList"}
                            if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
                                log.warn("采集地址{}返回空值,跳过存储", gatherAddress);
                                continue; // ç»ˆæ­¢å½“前循环迭代‌:ml-citation{ref="1,2" data="citationList"}
                        } else if (Constants.OP310.equals(device)) {
                            omOrderScheduling.setRemarks("Body");
                            omOrderScheduling.setSfcCode(SFCCode.toString());
                            List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
                            Object nowQty = omOrderSchedulingList.get(0).getNowQty();
                            Object WorkOrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo();
                            omProductionOrderInfo.setWorkOrderNo(WorkOrderNumber.toString());
                            List<OmProductionOrderInfo> omProductionOrderInfoList = omProductionOrderInfoService.selectOmProductionOrderInfoList(omProductionOrderInfo);
                            Object bodyQty = omProductionOrderInfoList.get(0).getBodyQty();
                            if (nowQty == bodyQty){
                                omProductionOrderInfoList.get(0).setBodyStatus("3");
                                omProductionOrderInfoService.updateOmProductionOrderInfo(omProductionOrderInfoList.get(0));
                            }
                            DaParamCollection paramCollection = new DaParamCollection();
                            paramCollection.setSfcCode(SFCCode.toString());
                            paramCollection.setLocationCode(device);
                            paramCollection.setParamName(conf.getParameterSetName());
                            paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                            paramCollection.setCollectionTime(new Date());
                            daParamCollectionService.insertDaParamCollection(paramCollection);
                        }
                        DaStationCollection daStationCollection = new DaStationCollection();
                        daStationCollection.setLocationCode(device);
                        daStationCollection.setSfcCode(SFCCode.toString());
                        daStationCollection.setInboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime").getValue());
                        daStationCollection.setOutboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime").getValue());
                        daStationCollectionService.insertDaStationCollection(daStationCollection);
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("21").build());
                    } else if (Constants.P010.equals(device)) {
                        Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue();
                        Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
                        omOrderScheduling.setWorkOrderNo(workOrderNumber.toString());
                        omOrderScheduling.setNowQty((Long) nowQty);
                        omOrderScheduling.setSfcCode(SFCCode.toString());
                        omOrderScheduling.setRemarks("Pre");
                        omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling);
                        List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
                        Object WorkOrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo();
                        omProductionOrderInfo.setWorkOrderNo(WorkOrderNumber.toString());
                        List<OmProductionOrderInfo> omProductionOrderInfoList = omProductionOrderInfoService.selectOmProductionOrderInfoList(omProductionOrderInfo);
                        Object preQty = omProductionOrderInfoList.get(0).getPreQty();
                        if (nowQty == preQty){
                            omProductionOrderInfoList.get(0).setPreStatus("3");
                            omProductionOrderInfoService.updateOmProductionOrderInfo(omProductionOrderInfoList.get(0));
                        }
                    }
                    //查询descriptive字段等于1的采集项保存到扫码保存到da_material_collection表里
                    DaCollectionParamConf daCollectionParamConf1 = new DaCollectionParamConf();
                    daCollectionParamConf1.setProcessesCode(device);
                    daCollectionParamConf1.setDescriptive("1");
                    List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                    for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                        String gatherAddress = conf.getGatherAddress();
                        Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // èŽ·å–原始值对象‌:ml-citation{ref="4" data="citationList"}
                        if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
                            log.warn("采集地址{}返回空值,跳过存储", gatherAddress);
                            continue; // ç»ˆæ­¢å½“前循环迭代‌:ml-citation{ref="1,2" data="citationList"}
                        }
                        DaMaterialCollection materialCollection = new DaMaterialCollection();
                        materialCollection.setSfcCode(SFCCode.toString());
                        materialCollection.setLocationCode(device);
                        materialCollection.setParamName(conf.getParameterSetName());
                        materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                        materialCollection.setCollectTime(new Date());
                        daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                    }
                    //查询descriptive字段等于2的采集项保存到扫码保存到da_param_collection表里
                    DaCollectionParamConf daCollectionParamConf2 = new DaCollectionParamConf();
                    daCollectionParamConf2.setProcessesCode(device);
                    daCollectionParamConf2.setDescriptive("2");
                    List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2);
                    for (DaCollectionParamConf conf : daCollectionParamConfList2) {
                        String gatherAddress = conf.getGatherAddress();
                        Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // èŽ·å–原始值对象‌:ml-citation{ref="4" data="citationList"}
                        if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
                            log.warn("采集地址{}返回空值,跳过存储", gatherAddress);
                            continue; // ç»ˆæ­¢å½“前循环迭代‌:ml-citation{ref="1,2" data="citationList"}
                        }
                        DaParamCollection paramCollection = new DaParamCollection();
                        paramCollection.setSfcCode(SFCCode.toString());
                        paramCollection.setLocationCode(device);
                        paramCollection.setParamName(conf.getParameterSetName());
                        paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
                        paramCollection.setCollectionTime(new Date());
                        daParamCollectionService.insertDaParamCollection(paramCollection);
                    }
                    DaStationCollection daStationCollection = new DaStationCollection();
                    daStationCollection.setLocationCode(device);
                    daStationCollection.setSfcCode(SFCCode.toString());
                    daStationCollection.setInboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime").getValue());
                    daStationCollection.setOutboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime").getValue());
                    daStationCollectionService.insertDaStationCollection(daStationCollection);
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("21").build());
                }
            }
        }
@@ -236,96 +248,161 @@
    public void plackWorkOrder(String thoroughfare, String device, String tab, String valueString) {
    try {
        if (Constants.WorkOrderRequest.equals(tab)) {
            if(Constants.OP010.equals(device)){
                if (Constants.ZERO.equals(valueString)) {
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("0").build());
                } else if (Constants.ONE.equals(valueString)) {
            if (Constants.ZERO.equals(valueString)) {
                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("0").build());
            }else if (Constants.ONE.equals(valueString)){
                if (Constants.OP005.equals(device)){
                    // æŸ¥è¯¢æ•°æ®åº“获取符合条件的订单信息
                    OmProductionOrderInfo getEarliestOrder = omProductionOrderInfoService.getEarliestOrder();
                    if (getEarliestOrder != null) {
                        //判断当前下发数量
                        if(getEarliestOrder.getRemarks() >= getEarliestOrder.getPlanQty()){
                    OmProductionOrderInfo getBodyOrder = omProductionOrderInfoService.getBodyOrder();
                    if (getBodyOrder != null) {
                        //判断当前下发数量是否满足计划数量
                            //更新工单状态
                            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());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getBodyOrder.getWorkOrderNo()).build());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getBodyOrder.getPlanQty())).build());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getBodyOrder.getEngineType()).build());
                            //生成sn码
                            OmProductionOrderInfo serialNumber = omProductionOrderInfoService.getSerialNumber();
                            SysCount serialNumber = sysCountService.getSerialNumber();
                            String A3 = String.valueOf(LocalDateTime.now().getYear()).substring(2);
                            if(A3.equals(String.valueOf(serialNumber.getRemarks()))){
                                String A1 = getEarliestOrder.getEngineType();//获取产品型号
                                String A2 = "3";
                            //判断是否跨年
                            if(A3.equals(String.valueOf(serialNumber.getYear()))){
                                String A1 = getBodyOrder.getEngineType();//获取产品型号
                                String A2 = "3";//固定产线
                                String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// èŽ·å–当前月份(1-12)
                                String A5 = String.format("%05d", serialNumber.getPlanQty());
                                String A5 = String.format("%05d", serialNumber.getSerialNumber());
                                String SFCCode = A1 + A2 + A3+ A4 + A5;
                                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                                omProductionOrderInfoService.updateSerialNumber();
                                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
                                sysCountService.updateSerialNumber();
                            }else{
                                OmProductionOrderInfo newNumber = omProductionOrderInfoService.updateYear();
                                String A1 = getEarliestOrder.getEngineType();//获取产品型号
                                sysCountService.clean();
                                sysCountService.updateYear();
                                String A1 = getBodyOrder.getEngineType();//获取产品型号
                                String A2 = "3";
                                String newA3 = String.valueOf(LocalDateTime.now().getYear()).substring(2);
                                String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// èŽ·å–当前月份(1-12)
                                String A5 = String.format("%05d", newNumber.getPlanQty());
                                String SFCCode = A1 + A2 + A3+ A4 + A5;
                                String A5 = String.format("%05d", sysCountService.getSerialNumber().getSerialNumber());
                                String SFCCode = A1 + A2 + newA3+ A4 + A5;
                                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                                omProductionOrderInfoService.updateSerialNumber();
                                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
                                sysCountService.updateSerialNumber();
                            }
                            // æ›´æ–° WorkOrderRequestDone åœ°å€å—
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
                            BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
                            bsbomChildInfo.setLocationCode(device);
                            bsbomChildInfo.setBomCode(getEarliestOrder.getWorkOrderNo());
                            bsbomChildInfo.setBomCode(getBodyOrder.getWorkOrderNo());
                            //发下工艺配方
                            formula(thoroughfare, device, bsbomChildInfo);
                            omProductionOrderInfoService.updateOrderStatus2();
                            omProductionOrderInfoService.updateBodyStatus1();
                            //判断缸体工单完成
                            OmProductionOrderInfo getBodyOrder2 = omProductionOrderInfoService.getBodyOrder();
                            if (Objects.equals(getBodyOrder2.getBodyQty(), getBodyOrder2.getPlanQty())){
                                omProductionOrderInfoService.updateBodyStatus2();
                            }
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getBodyOrder2.getBodyQty()).build());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
                    }
                } else if (Constants.C005.equals(device)) {
                    // æŸ¥è¯¢æ•°æ®åº“获取符合条件的订单信息
                    OmProductionOrderInfo getHeadOrder = omProductionOrderInfoService.getHeadOrder();
                    if (getHeadOrder != null) {
                        //判断当前下发数量是否满足计划数量
                        //更新工单状态
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getHeadOrder.getWorkOrderNo()).build());
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getHeadOrder.getPlanQty())).build());
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getHeadOrder.getEngineType()).build());
                        //生成sn码
                        SysCount headNumber = sysCountService.getHeadNumber();
                        String A3 = String.valueOf(LocalDateTime.now().getYear()).substring(2);
                        //判断是否跨年
                        if(A3.equals(String.valueOf(headNumber.getYear()))){
                            String A1 = getHeadOrder.getEngineType();//获取产品型号
                            String A2 = "3";//固定产线
                            String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// èŽ·å–当前月份(1-12)
                            String A5 = String.format("%05d", headNumber.getHeadNumber());
                            String SFCCode = A1 + A2 + A3+ A4 + A5;
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
                            sysCountService.updateHeadNumber();
                        }else{
                            sysCountService.clean();
                            sysCountService.updateYear();
                            String A1 = getHeadOrder.getEngineType();//获取产品型号
                            String A2 = "3";
                            String newA3 = String.valueOf(LocalDateTime.now().getYear()).substring(2);
                            String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// èŽ·å–当前月份(1-12)
                            String A5 = String.format("%05d", sysCountService.getHeadNumber().getHeadNumber());
                            String SFCCode = A1 + A2 + newA3+ A4 + A5;
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
                            sysCountService.updateHeadNumber();
                        }
                        // æ›´æ–° WorkOrderRequestDone åœ°å€å—
                        BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
                        bsbomChildInfo.setLocationCode(device);
                        bsbomChildInfo.setBomCode(getHeadOrder.getWorkOrderNo());
                        //发下工艺配方
                        formula(thoroughfare, device, bsbomChildInfo);
                        omProductionOrderInfoService.updateHeadStatus1();
                        //判断缸体工单完成
                        OmProductionOrderInfo getHeadOrder2 = omProductionOrderInfoService.getHeadOrder();
                        if (Objects.equals(getHeadOrder2.getHeadQty(), getHeadOrder2.getPlanQty())){
                            omProductionOrderInfoService.updateHeadStatus2();
                        }
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getHeadOrder2.getHeadQty()).build());
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
                    }
                } else if (Constants.P010.equals(device)) {
                    // æŸ¥è¯¢æ•°æ®åº“获取符合条件的订单信息
                    OmProductionOrderInfo getPreOrder = omProductionOrderInfoService.getPreOrder();
                    if (getPreOrder != null) {
                        //判断当前下发数量是否满足计划数量
                        //更新工单状态
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getPreOrder.getWorkOrderNo()).build());
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getPreOrder.getPlanQty())).build());
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getPreOrder.getEngineType()).build());
                        //生成sn码
                        SysCount preNumber = sysCountService.getPreNumber();
                        String A3 = String.valueOf(LocalDateTime.now().getYear()).substring(2);
                        if(A3.equals(String.valueOf(preNumber.getYear()))){
                            String A1 = getPreOrder.getEngineType();//获取产品型号
                            String A2 = "3";
                            String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// èŽ·å–当前月份(1-12)
                            String A5 = String.format("%05d", preNumber.getPreNumber());
                            String SFCCode = A1 + A2 + A3+ A4 + A5;
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
                            sysCountService.updatePreNumber();
                        }else{
                            sysCountService.clean();
                            sysCountService.updateYear();
                            String A1 = getPreOrder.getEngineType();//获取产品型号
                            String A2 = "3";
                            String newA3 = String.valueOf(LocalDateTime.now().getYear()).substring(2);
                            String A4 = MONTH[LocalDateTime.now().getMonthValue() - 1];// èŽ·å–当前月份(1-12)
                            String A5 = String.format("%05d", sysCountService.getPreNumber().getPreNumber());
                            String SFCCode = A1 + A2 + newA3+ A4 + A5;
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
                            sysCountService.updateHeadNumber();
                        }
                        // æ›´æ–° WorkOrderRequestDone åœ°å€å—
                        BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
                        bsbomChildInfo.setLocationCode(device);
                        bsbomChildInfo.setBomCode(getPreOrder.getWorkOrderNo());
                        //发下工艺配方
                        formula(thoroughfare, device, bsbomChildInfo);
                        omProductionOrderInfoService.updatePreStatus1();
                        //判断缸体工单完成
                        OmProductionOrderInfo getPreOrder2 = omProductionOrderInfoService.getPreOrder();
                        if (Objects.equals(getPreOrder2.getPreQty(), getPreOrder2.getPlanQty())){
                            omProductionOrderInfoService.updatePreStatus2();
                        }
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getPreOrder2.getPreQty()).build());
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
                    }
                }
            } else if (Constants.C005.equals(device)) {
            }
        }
    } catch (Exception e) {
        log.error(e.getMessage());
billion-main/src/main/java/com/billion/main/sys/domain/SysCount.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.billion.main.sys.domain;
import com.billion.common.annotation.Excel;
import com.billion.common.core.domain.BaseEntity;
import lombok.Data;
/**
 *  sys_count
 *
 * @author Billion
 * @date 2024-11-20
 */
@Data
public class SysCount extends BaseEntity
{
    /** ID */
    private Long id;
    /** å·¥å•ç¼–号 */
    @Excel(name = "年份")
    private String year;
    /** æ€»æˆåºåˆ—号 */
    @Excel(name = "流水号")
    private Long serialNumber;
    /** æ€»æˆåºåˆ—号 */
    @Excel(name = "流水号")
    private Long headNumber;
    /** æ€»æˆåºåˆ—号 */
    @Excel(name = "流水号")
    private Long preNumber;
}
billion-main/src/main/java/com/billion/main/sys/mapper/SysCountMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.billion.main.sys.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.billion.main.sys.domain.SysCount;
/**
 * Mapper接口
 *
 * @author Billion
 * @date 2024-11-20
 */
public interface SysCountMapper extends BaseMapper<SysCount>
{
    public SysCount updateYear();
    public SysCount getSerialNumber();
    public SysCount getHeadNumber();
    public SysCount updateSerialNumber();
    public SysCount updateHeadNumber();
    public SysCount getPreNumber();
    public SysCount updatePreNumber();
    public SysCount clean();
}
billion-main/src/main/java/com/billion/main/sys/service/ISysCountService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.billion.main.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.billion.main.sys.domain.SysCount;
/**
 * ç”Ÿäº§å·¥å•Service接口
 *
 * @author Billion
 * @date 2024-11-20
 */
public interface ISysCountService extends IService<SysCount>
{
    public SysCount updateYear();
    public SysCount getSerialNumber();
    public SysCount getHeadNumber();
    public SysCount updateSerialNumber();
    public SysCount updateHeadNumber();
    public SysCount getPreNumber();
    public SysCount updatePreNumber();
    public SysCount clean();
}
billion-main/src/main/java/com/billion/main/sys/service/impl/SysCountServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.billion.main.sys.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.billion.main.sys.domain.SysCount;
import com.billion.main.sys.mapper.SysCountMapper;
import com.billion.main.sys.service.ISysCountService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * ç”Ÿäº§å·¥å•Service业务层处理
 *
 * @author Billion
 * @date 2024-11-20
 */
@Service
public class SysCountServiceImpl extends ServiceImpl<SysCountMapper, SysCount> implements ISysCountService
{
    @Resource
    private SysCountMapper SysCountMapper;
    @Override
    public SysCount updateYear() {return SysCountMapper.updateYear();}
    @Override
    public SysCount getSerialNumber()
    {
        return SysCountMapper.getSerialNumber();
    }
    @Override
    public SysCount getHeadNumber()
    {
        return SysCountMapper.getHeadNumber();
    }
    @Override
    public SysCount updateSerialNumber() {return SysCountMapper.updateSerialNumber();}
    @Override
    public SysCount updateHeadNumber() {return SysCountMapper.updateHeadNumber();}
    @Override
    public SysCount getPreNumber()
    {
        return SysCountMapper.getHeadNumber();
    }
    @Override
    public SysCount updatePreNumber() {return SysCountMapper.updateSerialNumber();}
    @Override
    public SysCount clean() {return SysCountMapper.clean();}
}
billion-main/src/main/resources/mapper/om/OmOrderSchedulingMapper.xml
@@ -18,10 +18,11 @@
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="remarks"    column="remarks"    />
        <result property="nowQty"    column="now_qty"    />
    </resultMap>
    <sql id="selectOmOrderSchedulingVo">
        select id, work_order_no, sfc_code, product_code, online_time, offline_time, quality_status, status, create_by, create_time, update_by, update_time, remarks from om_order_scheduling
        select id, now_qty,work_order_no, sfc_code, product_code, online_time, offline_time, quality_status, status, create_by, create_time, update_by, update_time, remarks from om_order_scheduling
    </sql>
    <select id="selectOmOrderSchedulingList" parameterType="OmOrderScheduling" resultMap="OmOrderSchedulingResult">
@@ -33,6 +34,7 @@
            <if test="params.beginOnlineTime != null and params.beginOnlineTime != '' and params.endOnlineTime != null and params.endOnlineTime != ''"> and online_time between #{params.beginOnlineTime} and #{params.endOnlineTime}</if>
            <if test="params.beginOfflineTime != null and params.beginOfflineTime != '' and params.endOfflineTime != null and params.endOfflineTime != ''"> and offline_time between #{params.beginOfflineTime} and #{params.endOfflineTime}</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
            <if test="nowQty != null  and nowQty != ''"> and now_qty = #{nowQty}</if>
        </where>
    </select>
    
billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml
@@ -23,62 +23,93 @@
    </resultMap>
    <sql id="selectOmProductionOrderInfoVo">
        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
        select id,body_status,head_status,pre_status,body_qty,head_qty,pre_qty,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 id="getBodyOrder" resultType="OmProductionOrderInfo">
            SELECT TOP 1 *
            FROM om_production_order_info
            WHERE order_status IN (1, 2)
            WHERE body_status IN (0,1)
            ORDER BY plan_start_time ASC
    </select>
    <select id="selectEarliestOrder2" resultType="OmProductionOrderInfo">
    <select id="updateBodyStatus1" resultType="OmProductionOrderInfo">
        UPDATE o
        SET body_status = 1, body_qty = body_qty + 1
            FROM om_production_order_info AS o
            INNER JOIN (
            SELECT TOP 1 id
            FROM om_production_order_info
        WHERE body_status IN (0, 1)
        ORDER BY plan_start_time ASC
        ) AS sub ON o.id = sub.id;
    </select>
    <select id="updateBodyStatus2" resultType="OmProductionOrderInfo">
        UPDATE om_production_order_info
        SET body_status = 2
        WHERE id = (
            SELECT TOP 1 id
            FROM om_production_order_info
            WHERE body_status IN (0, 1)
            ORDER BY plan_start_time ASC
        );
    </select>
    <select id="getHeadOrder" resultType="OmProductionOrderInfo">
        SELECT TOP 1 *
        FROM om_production_order_info
        WHERE order_status IN (5)
        WHERE head_status IN (0,1)
        ORDER BY plan_start_time ASC
    </select>
    <select id="updateOrderStatus" resultType="OmProductionOrderInfo">
    <select id="updateHeadStatus1" resultType="OmProductionOrderInfo">
        UPDATE o
        SET head_status = 1, head_qty = head_qty + 1
            FROM om_production_order_info AS o
            INNER JOIN (
            SELECT TOP 1 id
            FROM om_production_order_info
        WHERE head_status IN (0, 1)
        ORDER BY plan_start_time ASC
        ) AS sub ON o.id = sub.id;
    </select>
    <select id="updateHeadStatus2" resultType="OmProductionOrderInfo">
        UPDATE om_production_order_info
        SET order_status = 5
        SET head_status = 2
        WHERE id = (
            SELECT TOP 1 id
            FROM om_production_order_info
            WHERE order_status IN (1, 2)
            WHERE head_status IN (0, 1)
            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  *
    <select id="getPreOrder" resultType="OmProductionOrderInfo">
        SELECT TOP 1 *
        FROM om_production_order_info
        WHERE id = 1
        WHERE pre_status IN (0,1)
        ORDER BY plan_start_time ASC
    </select>
    <select id="updatePreStatus1" resultType="OmProductionOrderInfo">
        UPDATE o
        SET pre_status = 1, pre_qty = pre_qty + 1
            FROM om_production_order_info AS o
            INNER JOIN (
            SELECT TOP 1 id
            FROM om_production_order_info
        WHERE pre_status IN (0, 1)
        ORDER BY plan_start_time ASC
        ) AS sub ON o.id = sub.id;
    </select>
    <select id="updatePreStatus2" resultType="OmProductionOrderInfo">
        UPDATE om_production_order_info
        SET pre_status = 2
        WHERE id = (
            SELECT TOP 1 id
            FROM om_production_order_info
            WHERE pre_status IN (0, 1)
            ORDER BY plan_start_time ASC
        );
    </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">
billion-main/src/main/resources/mapper/sys/SysCountMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.billion.main.sys.mapper.SysCountMapper">
    <resultMap type="SysCount" id="SysCountResult">
        <result property="id"    column="id"    />
        <result property="year"    column="year"    />
        <result property="serialNumber"    column="serial_number"    />
        <result property="headNumber"    column="head_number"    />
    </resultMap>
    <select id="updateYear" resultType="SysCount">
        UPDATE sys_count
        SET year = year + 1,
            serial_number = 1
        WHERE id = 1;
    </select>
    <select id="getSerialNumber" resultType="SysCount">
        SELECT  *
        FROM sys_count
        WHERE id = 1
    </select>
    <select id="getHeadNumber" resultType="SysCount">
        SELECT  *
        FROM sys_count
        WHERE id = 1
    </select>
    <select id="updateSerialNumber" resultType="SysCount">
        UPDATE sys_count
        SET serial_number = serial_number + 1
        WHERE id = 1;
    </select>
    <select id="updateHeadNumber" resultType="SysCount">
        UPDATE sys_count
        SET head_number = head_number + 1
        WHERE id = 1;
    </select>
    <select id="getPreNumber" resultType="SysCount">
        SELECT  *
        FROM sys_count
        WHERE id = 1
    </select>
    <select id="updatePreNumber" resultType="SysCount">
        UPDATE sys_count
        SET pre_number = pre_number + 1
        WHERE id = 1;
    </select>
    <select id="clean" resultType="SysCount">
        UPDATE sys_count
        SET pre_number = 1,
            head_number = 1,
            serial_number = 1
        WHERE id = 1;
    </select>
</mapper>