cl
2024-05-23 ba1a7a9ef126296e2798e313dc5b43f775a1123c
guns-vip-main/src/main/java/cn/stylefeng/guns/plcserver/callback/OP010Callback.java
@@ -34,7 +34,6 @@
import cn.stylefeng.guns.modular.sc.serialNumbersConf.service.SerialNumbersConfService;
import cn.stylefeng.guns.plcserver.opc.GlobalVariable;
import cn.stylefeng.guns.plcserver.opc.OPCElement;
import cn.stylefeng.guns.plcserver.opc.unit.OPCUnit;
import cn.stylefeng.guns.plcserver.opc.unit.SFCCodeTool;
import cn.stylefeng.guns.plcserver.tool.DateTool;
import cn.stylefeng.guns.plcserver.tool.LogUtil;
@@ -52,7 +51,7 @@
import java.util.List;
@Component
public class OP010Callback implements SubscriptionCallback {
public class OP010Callback {
    public MiloService miloService;
@@ -136,52 +135,6 @@
        this.productionOrderRecordsService = productionOrderRecordsService;
        this.productionOrderBatchInfoService = productionOrderBatchInfoService;
    }
    @Override
    public void onSubscribe(String identifier, Object value) {
        String ecpStr = "";//异常记录标记
        try {
            //心跳
            if(null != value && identifier.equals(OPCElement.OP010_F_HEART_BEAT)){
                if( "false".equals(value.toString()))
                {
                    ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_F_HEART_BEAT,true);
                    miloService.writeToOpcUa(entity);
                }
            }
            //PLC进站
            else if(null != value && identifier.equals(OPCElement.OP010_J_PLC_START)){
                if("true".equals(value.toString())){
                    String isRepair = miloService.
                            readFromOpcUa(OPCElement.OP010_P_REPAIR)
                            .getValue().toString();//是否返修
                    if(isRepair.equals("true")){
                        handleRepair();
                    }else{
                        handleOrder();
                    }
                    handleOrder();
                }
            }
            //PLC出站
            else if(null != value && identifier.equals(OPCElement.OP010_J_PLC_FINISH)){
                if("true".equals(value.toString())){
                    handleFinsh();
                    handleMaterial();
                }
            }else{
                System.out.println("值没有变");
            }
        } catch (Exception e) {
            ecpStr ="出现异常:" + logUtil.getTrace(e);
        }finally {
            if(!"".equals(ecpStr)){
                logger.info(ecpStr+"\r\n");
            }
            System.out.println("finally" +ecpStr);
        }
    }
    //PC读工单
    public void handleOrder() throws Exception{
@@ -247,14 +200,15 @@
            productionOrderRecordsParam.setProductNo(S_SFC_CODE);
            productionOrderRecordsParam.setMaterialCode(S_PRODUCT_CODE);
            productionOrderRecordsParam.setStartTime(DateTool.getLocalTimeForDate());
            productionOrderRecordsParam.setWhetherPass("true");
            productionOrderRecordsParam.setMaterialName(result.getMaterialName());
            productionOrderRecordsParam.setWhetherPass("合格");
            productionOrderRecordsService.add(productionOrderRecordsParam);
            List<ReadWriteEntity> lists = new ArrayList<>();
            lists.add(new ReadWriteEntity(OPCElement.OP010_S_ORDER_CODE,S_ORDER_CODE));
            lists.add(new ReadWriteEntity(OPCElement.OP010_S_PRODUCT_CODE,S_PRODUCT_TYPE));
            lists.add(new ReadWriteEntity(OPCElement.OP010_S_PRODUCT_CODE,Short.parseShort(S_PRODUCT_TYPE)));
            lists.add(new ReadWriteEntity(OPCElement.OP010_S_SFC_CODE,S_SFC_CODE));
            lists.add(new ReadWriteEntity(OPCElement.OP010_S_NUMBER,result.getPlanQty().toString()));
            lists.add(new ReadWriteEntity(OPCElement.OP010_S_NUMBER,Short.parseShort(result.getPlanQty().toString())));
            lists.add(new ReadWriteEntity(OPCElement.OP010_J_PC_WRITE_ORDER,true));
            miloService.writeToOpcUa(lists);
            logger.info("OP010工位,handleOrder PC处理完成!^--------------------------------------------");
@@ -269,6 +223,8 @@
                readFromOpcUa(OPCElement.OP010_S_PRODUCT_STATE_CODE)
                .getValue().toString();
        ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_J_PC_FINISH,true);
        miloService.writeToOpcUa(entity);//写PC完成
        if("2".equals(S_PRODUCT_STATE_CODE)){
            ProductionOrderRecordsParam productionOrderRecordsParam = new ProductionOrderRecordsParam();
            productionOrderRecordsParam.setWorkOrderNo(S_ORDER_CODE);
@@ -277,7 +233,7 @@
            if(!list.isEmpty()){
                ProductionOrderRecordsResult productionOrderRecordsResult = list.get(0);
                productionOrderRecordsParam.setId(productionOrderRecordsResult.getId());
                productionOrderRecordsParam.setWhetherPass(S_PRODUCT_STATE_CODE);
                productionOrderRecordsParam.setWhetherPass("不合格");
                productionOrderRecordsService.update(productionOrderRecordsParam);
            }
        }
@@ -293,14 +249,16 @@
        param.setOutRsSign(S_PRODUCT_STATE_CODE);//出站是否合格
        passingStationCollectionService.add(param);
        ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_J_PC_FINISH,true);
        miloService.writeToOpcUa(entity);//写PC完成
        logger.info("handleFinsh PC处理完成!");
    }
    public void handleMaterial() {
        if(S_ORDER_CODE.isEmpty()){
            return;
        }
        //查询批次上料信息
        ProductionOrderBatchInfoParam productionOrderBatchInfoParam = new ProductionOrderBatchInfoParam();
        productionOrderBatchInfoParam.setWorkOrderNo(S_ORDER_CODE);
@@ -359,7 +317,7 @@
                    List<ReadWriteEntity> lists = new ArrayList<>();
                    lists.add(new ReadWriteEntity(OPCElement.OP010_S_ORDER_CODE,S_ORDER_CODE));
                    lists.add(new ReadWriteEntity(OPCElement.OP010_S_PRODUCT_CODE,S_PRODUCT_TYPE));
                    lists.add(new ReadWriteEntity(OPCElement.OP010_S_PRODUCT_CODE,Short.parseShort(S_PRODUCT_TYPE)));
                    lists.add(new ReadWriteEntity(OPCElement.OP010_S_SFC_CODE,S_SFC_CODE));
                    lists.add(new ReadWriteEntity(OPCElement.OP010_P_REPAIR_LOCATION,repairLocationNo));
                    lists.add(new ReadWriteEntity(OPCElement.OP010_J_PC_WRITE_ORDER,true));
@@ -379,42 +337,6 @@
            }
        }
    }
    //PC读参数信息
    public void handleInfo() throws Exception {
        logger.info("handleInfo START!");
        if(null == list){
            CollectionParamConfParam collectionParamConfParam = new CollectionParamConfParam();
            collectionParamConfParam.setLocationCode(LOCATION_CODE);
            list = collectionParamConfService.findListBySpec(collectionParamConfParam);
        }
        if(null != list && !list.isEmpty()) {
            for (int i = 0; i < list.size(); i++) {
                CollectionParamConfResult result = (CollectionParamConfResult) list.get(i);
                String value = miloService.
                        readFromOpcUa(result.getGatherAddress())
                        .getValue().toString();//读参数值
                ParamCollectionParam paramCollectionParam = new ParamCollectionParam();
                paramCollectionParam.setParamCode(result.getParamCode());
                paramCollectionParam.setParamName(result.getParamName());
                paramCollectionParam.setWorkOrderNo(S_ORDER_CODE);
                paramCollectionParam.setSfcCode(S_SFC_CODE);
                paramCollectionParam.setProductCode(S_PRODUCT_CODE);
                paramCollectionParam.setProductionLine(result.getProductionLine());
                paramCollectionParam.setLocationCode(result.getLocationCode());
                paramCollectionParam.setParamValue(value);
                paramCollectionParam.setParamLower(result.getParamLower());
                paramCollectionParam.setParamUpper(result.getParamUpper());
                paramCollectionParam.setParamStandard(result.getParamCentral());
                paramCollectionParam.setCollectionTime(DateTool.getLocalTimeForDate());
                paramCollectionParam.setUnit(result.getUnit());
                paramCollectionService.add(paramCollectionParam);
            }
        }
        logger.info("handleInfo END!");
    }
}