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()<bySpec.getPlanQty()) {
|
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
|
String condition = "SYS" + format.format(new Date());
|
List<PassingStationCollectionResult> 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<ProductionOrdeInfo> list = orderService.list(new QueryWrapper<ProductionOrdeInfo>().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<ProductionOrdeInfo> list = orderService.list(new QueryWrapper<ProductionOrdeInfo>().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);
|
}
|
}
|