展示组件

tags/yfai-pcn-ext-v1.0
微笑着面对明天 1 year ago
parent 2438909a65
commit 02d5c0ed65

@ -0,0 +1,33 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Description :
* @Author : zxw
**/
public interface IWriteVariableService {
/**
*
* @param value
* @param equipmentVariable
* @param kepwareFlag
*/
MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index,Integer maxRetryTimes);
/**
*
* @param reqBean
* @param value
* @param foreignKey
* @param index
* @return
*/
String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index);
}

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.WriteVariableService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService;
import cn.estsh.i3plus.platform.common.tool.HttpClientTool;
@ -14,6 +15,8 @@ import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -29,6 +32,8 @@ import java.util.stream.Collectors;
@Service
public class MesEquipmentRwExtService implements IMesEquipVariableRwExtService {
public static final Logger LOGGER = LoggerFactory.getLogger(WriteVariableService.class);
@Autowired
private IConfigService configService;
@ -77,8 +82,10 @@ public class MesEquipmentRwExtService implements IMesEquipVariableRwExtService {
params.put(MesPcnExtConstWords.CLIENT_HANDLE, equipVariableRwModel.getClientHandle().toString());
params.put(MesPcnExtConstWords.CHANNEL, equipVariableRwModel.getChannel());
params.put(MesPcnExtConstWords.EQUIPMENT_ID, equipVariableRwModel.getEquipId().toString());
LOGGER.info("设备数据变量写值开始-> 地址:{}, params={}", equipVariableRwModel.getWriteRequestUrl(), params);
String data = HttpClientTool.doHttpUrl(CommonEnumUtil.HTTP_METHOD_TYPE.POST, false, equipVariableRwModel.getWriteRequestUrl(), params, null, null);
LOGGER.info("设备数据变量写值返回-> data:{} ", data);
if (!StringUtils.isEmpty(data)) return JsonUtilTool.decode(data, MesEquipVariableRwResult.class);
else return result.noSuccessed().message(String.format("设备数据变量写值失败! 数据信息:[%s]!", JSONObject.toJSONString(equipVariableRwModel)));

@ -0,0 +1,98 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWriteVariableService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* @Description :
* @Author : zxw
**/
@Service
public class WriteVariableService implements IWriteVariableService {
public static final Logger LOGGER = LoggerFactory.getLogger(WriteVariableService.class);
@Autowired
private IMesEquipVariableRwExtService equipVariableRwExtService;
@Autowired
private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService;
/**
*
* @param value
* @param equipmentVariable
* @param kepwareFlag
*/
public MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index, Integer maxTimes) {
// 需要不同的策略不同的转换方式
String newValue = transferValue(reqBean, value, foreignKey, index);
MesEquipVariableRwResult mesEquipVariableRwResult = equipVariableRwExtService.writeVariable(newValue, equipmentVariable, kepwareFlag);
if (!mesEquipVariableRwResult.getIsSuccessed() && mesEquipVariableRwResult.getIsNoCfg()) {
for (int i = 0;i < maxTimes; i++) {
mesEquipVariableRwResult = equipVariableRwExtService.writeVariable(newValue, equipmentVariable, kepwareFlag);
if (mesEquipVariableRwResult.getIsSuccessed()){
break;
}
}
}
return mesEquipVariableRwResult;
}
@Override
public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index) {
List<MesProductionPartContext> productionPartContextList = mesProductionDispatchContextStepService.getProductionPartContext(reqBean);
List<MesProductionPsOutContext> productionPsOutContexts = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
MesProductionPartContext mesProductionPartContext;
MesProductionPsOutContext productionPsOutSn;
if (!Objects.isNull(foreignKey)) {
mesProductionPartContext = productionPartContextList.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null);
productionPsOutSn = productionPsOutContexts.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null);
String newValue = "";
if (value.contains("%")) {
if (value.contains("partNo")) {
newValue = mesProductionPartContext.getPartNo();
} else if (value.contains("orderNo")) {
newValue = mesProductionPartContext.getWorkOrderNo();
} else if (value.contains("sn")) {
newValue = productionPsOutSn.getCustSn();
}
return newValue;
} else {
return value;
}
} else {
if (index != null && foreignKey == null) {
mesProductionPartContext = productionPartContextList.get(index);
if (mesProductionPartContext == null || Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), mesProductionPartContext.getIsFinishCode())) {
return null;
}
return value;
}
}
return null;
}
}

@ -129,8 +129,10 @@ public class MesProductionNoSortModuleService extends BaseModuleService {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getNumEqualPack(Long.parseLong(mesWorkCell.getFileId()), "id", packBean);
MesFile mesFile = mesFileRepository.getByProperty(packBean);
if (mesFile != null) {
url = mesFile.getFileUrl();
}
}
if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.HISTOGRAM.getValue(), mesWorkCell.getIsShowMsg())) {
dataType = MesPcnEnumUtil.STATION_DATA_TYPE.ECHART.getValue();
} else if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.PROD_VIDEO.getValue(), mesWorkCell.getIsShowMsg())) {

@ -23,10 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
@ -44,7 +41,8 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService {
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
private IWriteVariableService writeVariableService;
@Autowired
private MesEquipmentVariableRepository mesEquipmentVariableRepository;
@ -77,40 +75,22 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService {
}
List<MesEquipmentVariable> mesEquipmentVariableList = new ArrayList<>();
List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList = new ArrayList<>();
Map<Integer, List<MesEquipmentProdParamCfg>> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList);
// 获取加工参数 分排序和非排序
mesEquipmentProdParamCfgList = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList);
for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgList) {//
String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule());
AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass));
mesEquipmentVariableMap.forEach((k, v) -> {
v.stream().forEach(mesEquipmentProdParamCfg -> {
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean);
MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean);
if (mesEquipmentVariable == null) {
continue;
return;
}
mesEquipmentVariableList.add(mesEquipmentVariable);
mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg);
execSendEquipParamsCmd(equipVariableRwExtService, reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), null);
}
/* Map<String, List<MesEquipmentProdParamCfg>> map = mesEquipmentProdParamCfgList.stream().collect(Collectors.groupingBy(MesEquipmentProdParamCfg::getMatchRule));
Map<String, List<MesEquipmentVariable>> mapVariable = mesEquipmentVariableList.stream().collect(Collectors.groupingBy(mesEquipmentVariable -> mesEquipmentVariable.getId() + ""));
*/
/* map.forEach((k, v) -> {
String strategyClass = getStrateClass(k);
AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass));
v.stream().forEach(mesEquipmentProdParamCfg -> {
MesEquipmentVariable mesEquipmentVariable = mapVariable.get(mesEquipmentProdParamCfg.getEquipVariableId()+"").get(0);
execSendEquipParamsCmd(equipVariableRwExtService, reqBean, resultBean, stepParamMap, stepResult, cellEquipContext, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()));
execSendEquipParamsCmd(reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), k, stepParamMap);
});
});
equipVariableRwExtService.removeValue();
});*/
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "发送加工参数成功");
}
@ -122,20 +102,15 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService {
* @param mesEquipmentProdParamCfgList
* @return
*/
private List<MesEquipmentProdParamCfg> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList) {
private Map<Integer, List<MesEquipmentProdParamCfg>> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgList) {
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean);
Map<Integer, List<MesEquipmentProdParamCfg>> map = new HashMap<>();
for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) {
List<MesEquipmentProdParamCfg> mesEquipmentProdParamCfgs= new ArrayList<>();
//从上下文中取出生产线对象
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
//排序线 主条码验证工步
// 获取加工参数
if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()){
@ -154,19 +129,18 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService {
}
if (!CollectionUtils.isEmpty(mesEquipmentProdParamCfgs)) {
mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgs.stream().distinct().collect(Collectors.toList());
mesEquipmentProdParamCfgList.addAll(mesEquipmentProdParamCfgs);
}
map.put(mesProdRuleContext.getForeignKey(), mesEquipmentProdParamCfgs);
}
mesEquipmentProdParamCfgList = mesEquipmentProdParamCfgList.stream().distinct().collect(Collectors.toList());
return mesEquipmentProdParamCfgList;
return map;
}
private void execSendEquipParamsCmd(AbstractWriteVariableService equipVariableRwExtService, StationRequestBean reqBean,
String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey) {
equipVariableRwExtService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null);
private void execSendEquipParamsCmd(StationRequestBean reqBean,
String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Optional<Map<String, MesProdRouteOptParam>> stepParamMap) {
//最大重试次数[工步参数]
Integer maxRetryTimes = getMaxRetryTimes(stepParamMap);
writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes);
}
//最大重试次数[工步参数]
@ -176,19 +150,6 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService {
maxRetryTimes = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.MAX_RETRY_TIMES)) ? Integer.valueOf(stepParamMap.get().get(MesPcnExtConstWords.MAX_RETRY_TIMES).getParamValue()) : null;
} catch (NumberFormatException e) {
}
return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : MesPcnExtConstWords.MAX_RETRY_TIMES_DEFAULT;
}
private String getStrateClass(String value) {
String strategyClass = "commonWriteVariableService";
if (value.contains("orderNo")) {
strategyClass = "OrderWriteVariableService";
} else if (value.contains("partNo")) {
strategyClass = "PartWriteVariableService";
} else if (value.contains("sn")) {
strategyClass = "SnWriteVariableService";
}
return strategyClass;
return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : 3;
}
}

Loading…
Cancel
Save