| | |
| | | |
| | | import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; |
| | | import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; |
| | | import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig; |
| | | import com.jcdm.main.da.paramCollection.domain.DaParamCollection; |
| | | import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService; |
| | | import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; |
| | | import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl; |
| | | import com.jcdm.main.plcserver.conf.OPCElement; |
| | | 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.text.Format; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | @Slf4j |
| | | @Component |
| | | public class OPCUaSubscription implements SubscriptionCallback { |
| | | |
| | |
| | | |
| | | public IDaParamCollectionService daParamCollectionService; |
| | | |
| | | public DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl; |
| | | |
| | | public List<DaOpcuaConfig> lists; |
| | | |
| | | public static final HashMap<String,Integer> map = new HashMap<>(); |
| | | |
| | | public OPCUaSubscription(MiloService miloService, |
| | | IDaCollectionParamConfService collectionParamConfService, |
| | | IDaParamCollectionService daParamCollectionService) { |
| | | IDaParamCollectionService daParamCollectionService, |
| | | DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl, |
| | | List<DaOpcuaConfig> lists) { |
| | | OPCUaSubscription.miloService = miloService; |
| | | this.collectionParamConfService = collectionParamConfService; |
| | | this.daParamCollectionService = daParamCollectionService; |
| | | this.passingStationCollectionServiceImpl = passingStationCollectionServiceImpl; |
| | | this.lists = lists; |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | String ecpStr = "";//异常记录标记 |
| | | try { |
| | | if(null != value) { |
| | | //1、检索SN号 |
| | | //2、过站参数采集 |
| | | //3、扫码枪数据回传 |
| | | List<String> collect1 = lists.stream().filter(x -> OPCElement.SN_CHECK.equals(x.getrFunction())) |
| | | .map(DaOpcuaConfig::getNode).collect(Collectors.toList()); |
| | | List<String> collect2 = lists.stream().filter(x -> OPCElement.SAVE_DATA.equals(x.getrFunction())) |
| | | .map(DaOpcuaConfig::getNode).collect(Collectors.toList()); |
| | | if (collect1.contains(identifier)){ |
| | | //sn |
| | | this.SNRetrieval(identifier,value.toString()); |
| | | if (identifier.equals(OPCElement.OP120_ZZ_CODE_CHECK) && "1".equals(value.toString())){ |
| | | //总装上线扫码传输数据 |
| | | log.info("-------监听到,{}的扫码枪扫码的CODE_CHECK的信号",identifier); |
| | | Integer i = map.getOrDefault(identifier + "的扫码枪扫码的CODE_CHECK的信号",0); |
| | | if (0==i){ |
| | | map.put(identifier + "的扫码枪扫码的CODE_CHECK的信号",i+1); |
| | | } |
| | | String[] parts = OPCElement.OP120_ZZ_CODE_CHECK.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code1").getValue(); |
| | | if (null != SNCodeObject){ |
| | | String SNCode = SNCodeObject.toString(); |
| | | passingStationCollectionServiceImpl.sendMessage(SNCode); |
| | | } |
| | | } |
| | | } |
| | | else if (collect2.contains(identifier)){ |
| | | //save |
| | | this.SaveData(identifier); |
| | | //返回plc保存成功 |
| | | String[] parts = identifier.split("[.]"); |
| | | if (parts.length==3){ |
| | | if ("SaveRequest".equals(parts[2])){ |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeed", 1); |
| | | log.info("-------监听到,{}的saveRequest的信号",identifier); |
| | | Integer i = map.getOrDefault(identifier + "的saveRequest的信号",0); |
| | | if (0==i){ |
| | | map.put(identifier + "的saveRequest的信号",i+1); |
| | | } |
| | | // miloService.writeToOpcByte(entity); |
| | | }else if ("SaveRequestLast".equals(parts[2])){ |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeedLast", 1); |
| | | log.info("-------监听到,{}的SaveRequestLast的信号",identifier); |
| | | Integer i = map.getOrDefault(identifier + "的SaveRequestLast的信号",0); |
| | | if (0==i){ |
| | | map.put(identifier + "的SaveRequestLast的信号",i+1); |
| | | } |
| | | // miloService.writeToOpcByte(entity); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | //OP010保存请求 |
| | | if (identifier.equals(OPCElement.OP010_SaveRequest) && "1".equals(value.toString())) { |
| | | //1、更新工单数据 |
| | | //2、保存过站采集数据 |
| | | //3、保存参数采集数据 |
| | | ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_MesSaveFeed, 1); |
| | | miloService.writeToOpcByte(entity); |
| | | } |
| | | //OP010请求检索条码 |
| | | else if (identifier.equals(OPCElement.OP010_CodeCheck) && "1".equals(value.toString())) { |
| | | ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_MesCodeCheckFeed, 1); |
| | | miloService.writeToOpcByte(entity); |
| | | } |
| | | // if (identifier.equals(OPCElement.OP120_SaveRequestLast) && "1".equals(value.toString())) { |
| | | // this.SaveData(OPCElement.OP120_SaveRequestLast); |
| | | // //1、更新工单数据 |
| | | // //2、保存过站采集数据 |
| | | // //3、保存参数采集数据 |
| | | // ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_MesSaveFeed, 1); |
| | | // miloService.writeToOpcByte(entity); |
| | | // } |
| | | // else if (identifier.equals(OPCElement.OP120_ZZ_CODE_CHECK) && "1".equals(value.toString())){ |
| | | // //总装上线扫码传输数据 |
| | | // String[] parts = OPCElement.OP120_ZZ_CODE_CHECK.split("[.]"); |
| | | // Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code1").getValue(); |
| | | // if (null != SNCodeObject){ |
| | | // String SNCode = SNCodeObject.toString(); |
| | | // passingStationCollectionServiceImpl.sendMessage(SNCode); |
| | | // } |
| | | // } |
| | | // //OP010请求检索条码 |
| | | // else if (identifier.equals(OPCElement.OP010_CodeCheck) && "1".equals(value.toString())) { |
| | | // ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_MesCodeCheckFeed, 1); |
| | | // miloService.writeToOpcByte(entity); |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | public void SNRetrieval(String Node, String value) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | if(value.equals("1")) { |
| | | //SN号检索 |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if(null != SNCodeObject) { |
| | | String SNCode=SNCodeObject.toString(); |
| | | String a=passingStationCollectionServiceImpl.SelectSN(SNCode,parts[1]); |
| | | // 1:OK可生产 2:NG不可生产 3:NG可返工 4:PC检索失败(无记录)5:PC检索失败(软件) |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0]+"."+parts[1]+".CodeCheckFeed", a); |
| | | log.info("-------监听到,{}的CodeCheck的信号",Node); |
| | | Integer i = map.getOrDefault(Node + "的CodeCheck的信号",0); |
| | | if (0==i){ |
| | | map.put(Node + "的CodeCheck的信号",i+1); |
| | | } |
| | | // miloService.writeToOpcByte(entity); |
| | | DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection(); |
| | | PassingStationCollection.setSfcCode(SNCode); |
| | | PassingStationCollection.setLocationCode(parts[1]); |
| | | PassingStationCollection.setInboundTime(new Date()); |
| | | passingStationCollectionServiceImpl.insertDaPassingStationCollection(PassingStationCollection); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public void SaveData(String Node) throws Exception { |
| | | /*String[] parts = Node.split("[.]"); |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code1").getValue(); |
| | | |
| | | if(null != SNCodeObject) |
| | |
| | | } |
| | | daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); |
| | | } |
| | | }*/ |
| | | } |
| | | } |
| | | } |