hdy
2025-03-29 1717a12c83db01e3b31ea9ed913e5bacaf9edbf3
修改
已修改3个文件
206 ■■■■■ 文件已修改
billion-main/src/main/java/com/billion/main/da/service/impl/DaMaterialCollectionServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/da/service/impl/DaMaterialCollectionServiceImpl.java
@@ -1,6 +1,7 @@
package com.billion.main.da.service.impl;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -71,15 +72,16 @@
    public void insertDaMaterialCollection(DaMaterialCollection daMaterialCollection)
    {
        String url = "http://172.40.161.71:8890/Interaction/CollectMT";
        CollectMT collectMT = new CollectMT();
        DaMaterialCollection  daMaterialCollection1 = new DaMaterialCollection();
        BsBomChildInfo bsBomChildInfo = new BsBomChildInfo();
        OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
        daMaterialCollection1.setSfcCode(daMaterialCollection.getSfcCode());
        daMaterialCollection1.setLocationCode(daMaterialCollection.getLocationCode());
        daMaterialCollection1.setParamValue(daMaterialCollection.getParamValue());
        daMaterialCollection1.setCollectTime(daMaterialCollection.getCollectTime());
        omOrderScheduling.setSfcCode(daMaterialCollection.getSfcCode());
        if(     Constants.PLC1.contains(daMaterialCollection.getLocationCode()) ||
                Constants.C005.equals(daMaterialCollection.getLocationCode()) ||
@@ -94,26 +96,20 @@
        {omOrderScheduling.setRemarks("Pre");}
        List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
        String OrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo();
        //要改!!!!
        if(Objects.equals(daMaterialCollection.getLocationCode(), "OP130") || Objects.equals(daMaterialCollection.getLocationCode(), "OP020")){
            daMaterialCollection1.setMaterialCode("0");
            daMaterialCollection1.setMaterialName("0");
            collectMT.setMaterial1("0");
        }else{
//            bsBomChildInfo.setLocationCode(daMaterialCollection.getLocationCode());
//            bsBomChildInfo.setBomCode(OrderNumber);
//            List<BsBomChildInfo> bsBomChildInfoList = bsBomChildInfoService.selectBsBomChildInfoList(bsBomChildInfo);
//            String MaterialCode = bsBomChildInfoList.get(0).getMaterialCode();
//            String MaterialName = bsBomChildInfoList.get(0).getMaterialName();
//            daMaterialCollection1.setMaterialCode(MaterialCode);
//            daMaterialCollection1.setMaterialName(MaterialName);
//            collectMT.setMaterial1(MaterialName);
            daMaterialCollection1.setMaterialCode("0");
            daMaterialCollection1.setMaterialName("0");
            collectMT.setMaterial1("0");
        }
            bsBomChildInfo.setLocationCode(daMaterialCollection.getLocationCode());
            bsBomChildInfo.setBomCode(OrderNumber);
            String[] parts = daMaterialCollection.getParamValue().split("#");
            String targetValue = parts[1]; // 取第二个元素(索引1)
            bsBomChildInfo.setMaterialCode(targetValue);
            List<BsBomChildInfo> bsBomChildInfoList = bsBomChildInfoService.selectBsBomChildInfoList(bsBomChildInfo);
            String MaterialCode = bsBomChildInfoList.get(0).getMaterialCode();
            String MaterialName = bsBomChildInfoList.get(0).getMaterialName();
            daMaterialCollection1.setMaterialCode(MaterialCode);
            daMaterialCollection1.setMaterialName(MaterialName);
        this.save(daMaterialCollection1);
        collectMT.setMaterial1(MaterialName);
        collectMT.setOrderNumber(OrderNumber);
        collectMT.setEngineNumber(daMaterialCollection.getSfcCode());
        collectMT.setStationName(daMaterialCollection.getLocationCode());
@@ -131,13 +127,53 @@
    }
//    @Override
//    public void insertDaMaterialCollectionOP020OP130(DaMaterialCollection DaMaterialCollection)
//    {
//
////        this.save(daMaterialCollection);
//    }
//
    @Override
    public void plusSave(DaMaterialCollection daMaterialCollection) {
        String url = "http://172.40.161.71:8890/Interaction/CollectMT";
        CollectMT collectMT = new CollectMT();
        DaMaterialCollection  daMaterialCollection1 = new DaMaterialCollection();
        BsBomChildInfo bsBomChildInfo = new BsBomChildInfo();
        OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
        daMaterialCollection1.setSfcCode(daMaterialCollection.getSfcCode());
        daMaterialCollection1.setLocationCode(daMaterialCollection.getLocationCode());
        daMaterialCollection1.setParamValue(daMaterialCollection.getParamValue());
        daMaterialCollection1.setCollectTime(daMaterialCollection.getCollectTime());
        omOrderScheduling.setSfcCode(daMaterialCollection.getSfcCode());
        omOrderScheduling.setSfcCode(daMaterialCollection.getSfcCode());
        if(     Constants.PLC1.contains(daMaterialCollection.getLocationCode()) ||
                Constants.C005.equals(daMaterialCollection.getLocationCode()) ||
                Constants.C060.equals(daMaterialCollection.getLocationCode()) )
        {omOrderScheduling.setRemarks("Head");}
        else if(
                Constants.PLC2.contains(daMaterialCollection.getLocationCode()) ||
                        Constants.OP005.equals(daMaterialCollection.getLocationCode()) ||
                        Constants.OP310.equals(daMaterialCollection.getLocationCode()))
        {omOrderScheduling.setRemarks("Body");}
        else if(Constants.P010.equals(daMaterialCollection.getLocationCode()))
        {omOrderScheduling.setRemarks("Pre");}
        List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
        String OrderNumber = omOrderSchedulingList.get(0).getWorkOrderNo();
        String[] parts = daMaterialCollection.getParamValue().split("#");
        String targetValue = parts[1]; // 取第二个元素(索引1)
        daMaterialCollection1.setMaterialCode(targetValue);
        daMaterialCollection1.setMaterialName(daMaterialCollection.getParamName());
        this.save(daMaterialCollection1);
        collectMT.setMaterial1(daMaterialCollection.getMaterialName());
        collectMT.setOrderNumber(OrderNumber);
        collectMT.setEngineNumber(daMaterialCollection.getSfcCode());
        collectMT.setStationName(daMaterialCollection.getLocationCode());
        collectMT.setPartsNumber(daMaterialCollection.getParamValue());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        collectMT.setInsertTime(sdf.format(daMaterialCollection.getCollectTime()));
        try {
            HttpResponse response = HttpRequest.post(url).body(JSONUtil.toJsonStr(collectMT)).execute();
            log.info("推送成功,响应报文: {}", response);
        } catch (Exception e) {
            // 记录日志
            log.error("推送失败");
        }
    }
    /**
     * 修改物料采集
@@ -175,8 +211,4 @@
        return daMaterialCollectionMapper.deleteDaMaterialCollectionById(id);
    }
    @Override
    public void plusSave(DaMaterialCollection daMaterialCollection) {
        this.save(daMaterialCollection);
    }
}
billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -132,7 +132,8 @@
                                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SerialNumber").value(SerialNumber).build());
                                }
                                //9L发动机涂胶轨迹下发
                                else if(Constants.OP080.equals(device) && Constants.PLC_4.equals(thoroughfare)){
                                 if(Constants.OP080.equals(device) ){
                                     if(Constants.PLC_4.equals(thoroughfare)){
                                    // 1. 初始化工单对象并查询工单信息
                                    String workOrderNo = resultList.get(0).getWorkOrderNo();
                                    OmProductionOrderInfo queryOrder = new OmProductionOrderInfo();
@@ -168,6 +169,8 @@
                                                }
                                            }
                                    }
                                     }
                                }
                                String getWorkOrderNo = resultList.get(0).getWorkOrderNo();
                                BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
@@ -282,56 +285,56 @@
                        if (Objects.equals(nowQty, getPreOrder2.getPlanQty().toString())){
                            omProductionOrderInfoService.updatePreStatus2();
                        }
//                    }else if (Constants.OP020.equals(device)){
//                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
//                        for (int i = 35; i <= 40; i++) {  // 修改循环范围
//                                // 构建OPC UA节点地址(例如:PLC1.OP020.MaterialCode35)
//                                String nodeId = "PLC2." + device + ".MaterialCode" + i;
//                                // 创建采集对象
//                                DaMaterialCollection materialCollection = new DaMaterialCollection();
//                                materialCollection.setSfcCode(SFCCode.toString());
//                                materialCollection.setLocationCode(device);
//                                // 设置参数名称(活塞1到活塞6)
//                                int pistonNumber = i - 34;  // 35→1, 36→2...40→6
//                                materialCollection.setParamName("活塞" + pistonNumber);
//                                // 通过OPC UA读取参数值
//                                ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
//                                if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), "                                                  ")) {
//                                    materialCollection.setParamValue(dataRead.getValue().toString());
//                                    Date collectTime = new Date();
//                                    ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
//                                    collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
//                                    materialCollection.setCollectTime( collectTime);
//                                    // 插入数据库
//                                    daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
//                                } else {
//                                    log.info("活塞号为空: {}",materialCollection.getParamName() );
//                                }
//                        }
//                    }else if (Constants.OP130.equals(device)){
//                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
//                            String nodeId = "PLC3." + device + ".MaterialCode35" ;
//                            // 创建采集对象
//                            DaMaterialCollection materialCollection = new DaMaterialCollection();
//                            materialCollection.setSfcCode(SFCCode.toString());
//                            materialCollection.setLocationCode(device);
//                            materialCollection.setParamName("缸盖码");
//                            // 通过OPC UA读取参数值
//                            ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
//                            if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), "                                                  ")) {
//                                materialCollection.setParamValue(dataRead.getValue().toString());
//                                Date collectTime = new Date();
//                                ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
//                                collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
//                                materialCollection.setCollectTime( collectTime);
//                                // 插入数据库
//                                daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
//                            } else {
//                                log.info("缸盖码为空: {}",materialCollection.getParamName() );
//                            }
                    }
                    else if (Constants.OP020.equals(device)){
                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
                        for (int i = 35; i <= 40; i++) {  // 修改循环范围
                                // 构建OPC UA节点地址(例如:PLC1.OP020.MaterialCode35)
                                String nodeId = "PLC2." + device + ".MaterialCode" + i;
                                // 创建采集对象
                                DaMaterialCollection materialCollection = new DaMaterialCollection();
                                materialCollection.setSfcCode(SFCCode.toString());
                                materialCollection.setLocationCode(device);
                                // 设置参数名称(活塞1到活塞6)
                                int pistonNumber = i - 34;  // 35→1, 36→2...40→6
                                materialCollection.setParamName("活塞" + pistonNumber);
                                // 通过OPC UA读取参数值
                                ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
                                if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), "                                                  ")) {
                                    materialCollection.setParamValue(dataRead.getValue().toString());
                                    Date collectTime = new Date();
                                    ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
                                    collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
                                    materialCollection.setCollectTime( collectTime);
                                    // 插入数据库
                                    daMaterialCollectionService.plusSave(materialCollection);
                                } else {
                                    log.info("活塞号为空: {}",materialCollection.getParamName() );
                                }
                        }
                    }else if (Constants.OP130.equals(device)){
                        final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        // 遍历 MaterialCode35 到 MaterialCode40 共6组数据
                            String nodeId = "PLC3." + device + ".MaterialCode35" ;
                            // 创建采集对象
                            DaMaterialCollection materialCollection = new DaMaterialCollection();
                            materialCollection.setSfcCode(SFCCode.toString());
                            materialCollection.setLocationCode(device);
                            materialCollection.setParamName("缸盖码");
                            // 通过OPC UA读取参数值
                            ReadWriteEntity dataRead = miloService.readFromOpcUa(nodeId);
                            if (dataRead != null && dataRead.getValue() != null && !Objects.equals(dataRead.getValue(), "                                                  ")) {
                                materialCollection.setParamValue(dataRead.getValue().toString());
                                Date collectTime = new Date();
                                ReadWriteEntity collectTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//进站时间
                                collectTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(collectTimeRead.getValue().toString())));
                                materialCollection.setCollectTime( collectTime);
                                // 插入数据库
                                daMaterialCollectionService.plusSave(materialCollection);
                            } else {
                                log.info("缸盖码为空: {}",materialCollection.getParamName() );
                            }
                    }
                    //出站保存
                    DaStationCollection daStationCollection = new DaStationCollection();
@@ -355,7 +358,6 @@
                    daCollectionParamConf1.setDescriptive("1");
                    List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                    for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                        String index = String.valueOf(daCollectionParamConfList1.indexOf(conf));
                        String gatherAddress = conf.getGatherAddress();
                        String valueObj = null;
                        ReadWriteEntity entity = miloService.readFromOpcUa(gatherAddress);
@@ -365,7 +367,7 @@
                                valueObj = value.toString();  // 最终赋值
                                if (!Objects.equals(valueObj, "                                                  ")) {
                                    DaMaterialCollection materialCollection = new DaMaterialCollection();
                                    materialCollection.setRemark(index);
                                    materialCollection.setSfcCode(SFCCode.toString());
                                    materialCollection.setLocationCode(device);
                                    materialCollection.setParamName(conf.getParameterSetName());
billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml
@@ -33,7 +33,10 @@
    </resultMap>
    <sql id="selectOmProductionOrderInfoVo">
        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
        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,engine_type,engine_name,flag from om_production_order_info
    </sql>
    <!-- 查询 order_status 为 1 且 plan_start_time 最早的一条记录 -->
@@ -128,6 +131,7 @@
            <if test="salesOrderCode != null  and salesOrderCode != ''"> and sales_order_code = #{salesOrderCode}</if>
            <if test="productCode != null  and productCode != ''"> and product_code = #{productCode}</if>
            <if test="orderStatus != null  and orderStatus != ''"> and order_status = #{orderStatus}</if>
            <if test="engineName != null  and engineName != ''"> and engine_name = #{engineName}</if>
            and del_flag = 0
        </where>
    </select>