package cn.stylefeng.guns.modular.opcua.cert; import cn.hutool.extra.spring.SpringUtil; import cn.stylefeng.guns.modular.cm.passingStationCollection.model.params.PassingStationCollectionParam; import cn.stylefeng.guns.modular.cm.passingStationCollection.model.result.PassingStationCollectionResult; import cn.stylefeng.guns.modular.cm.passingStationCollection.service.PassingStationCollectionService; import cn.stylefeng.guns.modular.cm.passingStationCollection.service.impl.PassingStationCollectionServiceImpl; import cn.stylefeng.guns.modular.om.productionOrdeInfo.entity.ProductionOrdeInfo; import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.params.ProductionOrdeInfoParam; import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.result.ProductionOrdeInfoResult; import cn.stylefeng.guns.modular.om.productionOrdeInfo.service.ProductionOrdeInfoService; import cn.stylefeng.guns.modular.opcua.client.ClientHandler; import cn.stylefeng.guns.modular.opcua.config.BeanUtils; import cn.stylefeng.guns.modular.opcua.entity.NodeEntity; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Component; import oshi.util.StringUtil; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Random; @Slf4j public class MethodName { private PassingStationCollectionService service = BeanUtils.getBean(PassingStationCollectionService.class); private ProductionOrdeInfoService orderService = BeanUtils.getBean(ProductionOrdeInfoService.class); private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public void getSn(String Node, String value) { ClientHandler clientHandler=new ClientHandler(); if(value.equals("1")){ try { String snCode = ""; ProductionOrdeInfoResult bySpec = getOrder(); if(bySpec!=null){ if(bySpec.getActualQty() results = service.snCodeSize(condition); if (results.size() == 0) { snCode = condition + String.format("%04d", 1); } else { snCode = condition + String.format("%04d", results.size() + 1); } NodeEntity node = NodeEntity.builder().index(2).identifier("nbu01.OP1010.SNCode") .value(snCode).type("string").build(); Boolean out = clientHandler.write(node); log.info("节点:{},响应结果:{}", node.getIdentifier(), out); if (out) { NodeEntity node1 = NodeEntity.builder().index(2).identifier("nbu01.OP1010.RecordSNDone") .value("1").type("short").build(); Boolean out1 = clientHandler.write(node1); log.info("节点:{},响应结果:{}", node1.getIdentifier(), out1); } } } } catch (Exception e) { e.printStackTrace(); } }else{ try { NodeEntity node1= NodeEntity.builder().index(2).identifier("nbu01.OP1010.RecordSNDone") .value("0").type("short").build(); Boolean out1=clientHandler.write(node1); NodeEntity node = NodeEntity.builder().index(2).identifier("nbu01.OP1010.SNCode") .value("").type("string").build(); Boolean out=clientHandler.write(node); log.info("节点:{},响应结果:{}", node1.getIdentifier(),out1); log.info("节点:{},响应结果:{}", node.getIdentifier(),out); } catch (Exception e) { e.printStackTrace(); } } } public void Station(String Node, String value) throws Exception { ClientHandler clientHandler=new ClientHandler(); String[] parts = Node.split("[.]"); switch (value) { case "0": //初始 NodeEntity node1= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone") .value("0").type("short").build(); Boolean out=clientHandler.write(node1); log.info("节点:{},响应结果:{}", node1.getIdentifier(),out); break; case "1": //请求下发进站状态 //进站状态反馈 NodeEntity node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone") .value("11").type("short").build(); Boolean out1=clientHandler.write(node); log.info("节点:{},响应结果:{}", node.getIdentifier(),out1); break; case "2": //请求记录工位数据 String SNCode = ""; String WorkID = ""; String PalletID = ""; try{ if(parts[1].equals("OP1010")){ NodeEntity sncode = NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".StationSNCode").build(); SNCode=clientHandler.read(sncode); }else { NodeEntity sncode = NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".SNCode").build(); SNCode=clientHandler.read(sncode); } }catch (Exception e){ SNCode = ""; } NodeEntity grade = NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".Grade").build(); NodeEntity workid = NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".WorkID").build(); NodeEntity palletid = NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".PalletID").build(); NodeEntity stationStatus = NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".StationStatus").build(); NodeEntity inDataTime = NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".Date_And_Time").build(); String Grade=clientHandler.read(grade); try { WorkID=clientHandler.read(workid); }catch (Exception e){ WorkID = ""; } try { PalletID=clientHandler.read(palletid); }catch (Exception e){ PalletID = ""; } String StationStatus=clientHandler.read(stationStatus); String inDate = clientHandler.read(inDataTime); String ctsDate = DateConvert.getCtsDate(inDate); String WorkOrderNo = ""; String MaterialCode = ""; ProductionOrdeInfoResult order = getOrder(); if(order == null){ List list = orderService.list(new QueryWrapper().orderByDesc("create_time")); ProductionOrdeInfo info = list.get(0); WorkOrderNo = info.getWorkOrderNo(); MaterialCode = info.getMaterialCode(); }else { WorkOrderNo = order.getWorkOrderNo(); MaterialCode = order.getMaterialCode(); } PassingStationCollectionParam param = new PassingStationCollectionParam(); param.setWorkOrderNo(WorkOrderNo); param.setSfcCode(SNCode); param.setProductCode(MaterialCode); param.setLocationCode(parts[1]); param.setProductionLine("SOCKET"); param.setInboundTime(df.parse(ctsDate)); param.setOutboundTime(new Date()); String distanceTime = PassingStationCollectionServiceImpl.getDistanceTime(df.format(new Date()), ctsDate); param.setBeatTime(distanceTime); param.setOutRsSign(StationStatus); try { if(parts[1].equals("OP1160")){ // if(!SNCode.equals("")){ List list = orderService.list(new QueryWrapper().eq("order_status","3")); ProductionOrdeInfo productionOrdeInfo = list.get(0); int i = productionOrdeInfo.getActualQty() + 1; if(productionOrdeInfo.getPlanQty() == i){ productionOrdeInfo.setOrderStatus("5"); } productionOrdeInfo.setActualQty(i); orderService.saveOrUpdate(productionOrdeInfo); // } } }catch (Exception e){ } service.add(param); log.info("SN号:{},员工权限:{},员工ID:{},托盘号:{},站状态:{}",SNCode,Grade,WorkID,PalletID,StationStatus); NodeEntity node2= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone") .value("21").type("short").build(); Boolean out2=clientHandler.write(node2); log.info("节点:{},响应结果:{}", node2.getIdentifier(),out2); break; default: break; } } public ProductionOrdeInfoResult getOrder(){ ProductionOrdeInfoParam param = new ProductionOrdeInfoParam(); param.setOrderStatus("3"); return orderService.findBySpec(param); } }