工步开发

tags/yfai-pcn-ext-v1.0
微笑着面对明天 1 year ago
parent ba951ff29f
commit 1401cd8734

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.pcn.api.base;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ActorMessage;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import io.swagger.annotations.ApiOperation;
import java.util.List;
public interface IMesEquipmentLogService {
void saveEquipmentLogToRedis(ActorMessage actorMessage);
void saveEquipmentLogDetails();
}

@ -0,0 +1,44 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentLogService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import java.util.Map;
/**
* @author wangjie
* @version 1.0
* @date 2021/2/2 16:44
**/
@Slf4j
@DisallowConcurrentExecution
@ApiOperation("保存工艺参数job")
public class MesSaveVariableJob implements Job {
@Autowired
private IMesEquipmentLogService mesEquipmentLogService;
@Override
public void execute(JobExecutionContext jobExecutionContext) {
log.info("保存工艺参数job -- START ");
long startTime = System.currentTimeMillis();
mesEquipmentLogService.saveEquipmentLogDetails();
long endTime = System.currentTimeMillis();
log.info("保存工艺参数job --- END --- 耗时: {} ms", endTime - startTime);
}
}

@ -0,0 +1,37 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.actor;
import akka.actor.AbstractActor;
import akka.actor.UntypedAbstractActor;
import akka.japi.pf.ReceiveBuilder;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentLogService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ActorMessage;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.FsmRouteDataService;
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.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
public class MesHandlerEquipLogActor extends AbstractActor {
//定义日志,很重要
private static final Logger log = LoggerFactory.getLogger(MesHandlerEquipLogActor.class);
@Autowired
private IMesEquipmentLogService mesEquipmentLogService;
/**
* <p></p>
* @author hanchao 2018/4/16 21:31
**/
@Override
public Receive createReceive() {
return ReceiveBuilder.create().match(ActorMessage.class, o -> {
mesEquipmentLogService.saveEquipmentLogToRedis(o);
}).matchAny(o -> log.error("FiniteStateMachineActor--收到的意外的消息{}", o)).build();
}
}

@ -0,0 +1,128 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentLogService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog.MesEquipmentLogExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ActorMessage;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.util.ImppRedis;
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;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Slf4j
@Service
public class MesEquipmentLogService implements IMesEquipmentLogService {
public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG);
@Autowired
private MesEquipmentLogExtService mesEquipmentLogExtService;
@Autowired
private MesEquipmentExtService mesEquipmentExtService;
@Autowired
private MesEquipmentLogDetailRepository mesEquipmentLogDetailRepository;
@Autowired
private MesEquipmentRecordRepository mesEquipmentRecordRepository;
@Autowired
private SnowflakeIdMaker snowflakeIdMaker;
@Resource(name = "redisMesPcn")
private ImppRedis redisMesPcn;
@Override
public void saveEquipmentLogToRedis(ActorMessage actorMessage) {
// 获取设备变量属性
List<MesEquipmentVariable> equipmentVariableList = mesEquipmentExtService.getEquipmentVariableList(actorMessage.getOrganizeCode(), actorMessage.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue());
// 获取变量属性中的clientHandle 列表
List<Long> clientHandleList = equipmentVariableList.stream().filter(o -> o.getClientHandle() != null).map( o -> Long.valueOf(o.getClientHandle().longValue())).collect(Collectors.toList());
// 获取设备数据采集信息
List<MesEquipmentLog> equipmentLogList = mesEquipmentLogExtService.getEquipmentLogList(actorMessage.getOrganizeCode(), actorMessage.getEquipId());
// 筛选出该设备中设备变量属性对应的数据采集信息
equipmentLogList = equipmentLogList.stream().filter(mesEquipmentLog -> clientHandleList.contains(mesEquipmentLog.getId()) ).collect(Collectors.toList());
Long recordId = snowflakeIdMaker.nextId();
MesEquipmentRecord mesEquipmentRecord =new MesEquipmentRecord();
BeanUtils.copyProperties(actorMessage, mesEquipmentRecord);
mesEquipmentRecord.setRecordStatus(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue());
mesEquipmentRecord.setId(recordId);
ConvertBean.serviceModelInitialize(mesEquipmentRecord, actorMessage.getUserName());
String key = getKey(mesEquipmentRecord);
equipmentLogList.forEach(equipLog -> {
redisMesPcn.putList(key, equipLog);
});
mesEquipmentRecordRepository.save(mesEquipmentRecord);
LOGGER.info("产线【{}】,工位【{}】,设备【{}】下保存rediskey【{}】和记录成功", mesEquipmentRecord.getWorkCenterCode(),mesEquipmentRecord.getWorkCellCode(),mesEquipmentRecord.getEquipmentCode(),key);
}
private String getKey(MesEquipmentRecord mesEquipmentRecord){
return mesEquipmentRecord.getOrganizeCode() + ":" + mesEquipmentRecord.getWorkCenterCode() + ":" + mesEquipmentRecord.getWorkCellCode() + ":" + mesEquipmentRecord.getEquipmentCode () + ":" + mesEquipmentRecord.getId();
}
@Override
public void saveEquipmentLogDetails() {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue(), "recordStatus", ddlPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, ddlPackBean);
List<MesEquipmentRecord> mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(mesEquipmentRecords)) {
LOGGER.info("没有设备记录需要同步");
}
LOGGER.info("读取设备记录信息【{}】条", mesEquipmentRecords.size());
for (MesEquipmentRecord mesEquipmentRecord : mesEquipmentRecords) {
saveEquipmentLogDetail(mesEquipmentRecord);
}
}
private void saveEquipmentLogDetail(MesEquipmentRecord mesEquipmentRecord) {
String key = getKey(mesEquipmentRecord);
List<MesEquipmentLog> equipmentLogList = (List<MesEquipmentLog>)redisMesPcn.getList(key, 0, -1);
List<MesEquipmentLogDetail> mesEquipmentLogDetails = new ArrayList<>();
for (MesEquipmentLog mesEquipmentLog : equipmentLogList) {
MesEquipmentLogDetail mesEquipmentLogDetail = new MesEquipmentLogDetail();
BeanUtils.copyProperties(mesEquipmentLog, mesEquipmentLogDetail);
mesEquipmentLogDetail.setAreaCode(mesEquipmentRecord.getAreaCode());
mesEquipmentLogDetail.setCraftCode(mesEquipmentRecord.getCraftCode());
mesEquipmentLogDetail.setProcessCode(mesEquipmentRecord.getProcessCode());
mesEquipmentLogDetail.setWorkCenterCode(mesEquipmentRecord.getWorkCenterCode());
mesEquipmentLogDetail.setExtend(mesEquipmentRecord.getProduceSnJson());
mesEquipmentLogDetails.add(mesEquipmentLogDetail);
}
mesEquipmentLogDetailRepository.saveAll(mesEquipmentLogDetails);
// 修改状态
mesEquipmentRecord.setRecordStatus(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_20.getValue());
mesEquipmentRecordRepository.save(mesEquipmentRecord);
// 删除key
redisMesPcn.deleteKey(key);
}
}

@ -57,14 +57,19 @@ public class MesMouldRecordGenerateStepService extends BaseStepService {
StationResultBean resultBean = new StationResultBean();
//获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getEquipmentVariableList(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue());
// 获取条码信息
List<MesProduceSn> mesProduceSns = mesProductionDispatchContextStepService.getOutProduceSnDataContext(reqBean);
// 获取头道模具号
MesEquipVariableCollectContext mesFirstMouldNoCollectContext = mesProductionDispatchContextStepService.getFirstMouldNoContext(reqBean);
// 获取模具号
MesEquipVariableCollectContext mesMouldNoCollectContext = mesProductionDispatchContextStepService.getMouldNoContext(reqBean);
List<MesProdMouldRecord> mesProdMouldRecords = new ArrayList<>();
for (MesProduceSn mesProduceSn : mesProduceSns) {
// 获取工位设备信息
MesCellEquipContext mesCellEquipContext = productionProcessContext.getCurCellEquip();
String equipmentCode = mesCellEquipContext.getEquipmentCode();

@ -2,18 +2,18 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesSnProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesWorkOrderContext;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
@ -21,14 +21,17 @@ import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
@ -64,34 +67,75 @@ public class MesProductSnGenerateStepService extends BaseStepService {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
// 获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getEquipmentVariableList(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue());
MesWorkCell mesWorkCell = productionProcessContext.getWorkCell();
// 获取一模多腔信息
List<MesMouldMultiCavity> mesModelMultiCavities = mesProductionDispatchContextStepService.getMouldMultiCavityContext(reqBean);
// 获取工单号信息
List<MesWorkOrderContext> workOrderDataContext = mesProductionDispatchContextStepService.getWorkOrderDataContext(reqBean);
// 获取零件号,可能存在多个
List<String> partNoList = getPartNoList(mesModelMultiCavities, workOrderDataContext);
// 根据零件号组装产品条码信息
List<MesProduceSn> mesProduceSns = generateSn(reqBean, productionProcessContext, mesWorkCell, partNoList);
// 保存条码信息
mesProduceSnRepository.saveAll(mesProduceSns);
// 放到上下文
mesProductionDispatchContextStepService.saveOutProduceSnDataContext(reqBean, mesProduceSns);
MesEquipVariableCollectContext mesFirstMouldNoCollectContext = mesProductionDispatchContextStepService.getFirstMouldNoContext(reqBean);
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "生成零件条码成功");
}
List<MesMouldMultiCavity> mesModelMultiCavities = mesProductionDispatchContextStepService.getMouldMultiCavityContext(reqBean);
/**
*
* @param reqBean
* @param productionProcessContext
* @param mesWorkCell
* @param partNoList
* @return
*/
private List<MesProduceSn> generateSn(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesWorkCell mesWorkCell, List<String> partNoList) {
List<MesProduceSn> mesProduceSns = new ArrayList<>();
// todo 要判空
for (MesMouldMultiCavity modelMultiCavity : mesModelMultiCavities) {
for (String partNo : partNoList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(modelMultiCavity.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean);
MesPart mesPart = mesPartRepository.getByProperty(packBean);
if (mesPart == null) {
return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "零件号不存在");
MesPcnException.throwFlowException("零件号不存在");
}
// 根据条码规则生成条码
String sn = generateByRule(mesPart);
MesProduceSn mesProduceSn = generateMesProduceSn(mesPart, sn,mesWorkCell, productionProcessContext,reqBean);
// 组装条码信息
MesProduceSn mesProduceSn = generateMesProduceSn(mesPart, sn, mesWorkCell, productionProcessContext, reqBean);
ConvertBean.serviceModelInitialize(mesProduceSn, reqBean.getUserInfo());
mesProduceSns.add(mesProduceSn);
}
mesProduceSnRepository.saveAll(mesProduceSns);
MesSnProductionProcessContext mesSnProductionProcessContext = (MesSnProductionProcessContext) productionProcessContext;
mesSnProductionProcessContext.productSns(mesProduceSns);
return StepResult.getSuccessComplete();
return mesProduceSns;
}
/**
*
*
* @param mesModelMultiCavities
* @param workOrderDataContext
* @return
*/
private List<String> getPartNoList(List<MesMouldMultiCavity> mesModelMultiCavities, List<MesWorkOrderContext> workOrderDataContext) {
List<String> partNoList = new ArrayList<>();
if (!CollectionUtils.isEmpty(workOrderDataContext)) {
partNoList = workOrderDataContext.stream().map(MesWorkOrder::getPartNo).collect(Collectors.toList());
}
if (!CollectionUtils.isEmpty(mesModelMultiCavities)) {
partNoList = mesModelMultiCavities.stream().map(MesMouldMultiCavity::getPartNo).collect(Collectors.toList());
}
return partNoList;
}
/**
*
* @param mesPart
* @return
*/
private String generateByRule(MesPart mesPart) {
//生成工单号
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(ORDER_NO_JIS_SORT);
@ -124,6 +168,7 @@ public class MesProductSnGenerateStepService extends BaseStepService {
mesProduceSn.setCraftCode(productionProcessContext.getCraftCode());
mesProduceSn.setPrintCount(0);
mesProduceSn.setPrintStatus(10);
mesProduceSn.setOrganizeCode(reqBean.getOrganizeCode());
return mesProduceSn;
}

@ -1,14 +1,21 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.actor.MesHandlerEquipLogActor;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base.MesEquipmentExtService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog.MesEquipmentLogExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesSnProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ActorMessage;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.pcn.config.SpringExt;
import cn.estsh.i3plus.mes.pcn.config.SpringExtProvider;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
@ -24,18 +31,21 @@ import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.milo.opcua.stack.core.channel.messages.HelloMessage;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* @Description :
* @Author : wangjie
* @Author : zxw
**/
@Slf4j
@Service
@ -44,28 +54,19 @@ public class MesVariableWhenFinishedReadStepService extends BaseStepService {
private SnowflakeIdMaker snowflakeIdMaker;
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private MesPartRepository mesPartRepository;
private ActorSystem actorSystem;
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Autowired
private ISyncFuncService syncFuncService;
private MesEquipmentLogExtService mesEquipmentLogExtService;
private IMesProductionProcessContextStepService productionProcessContextStepService;
private MesEquipmentExtService mesEquipmentExtService;
private MesEquipmentLogDetailRepository mesEquipmentLogDetailRepository;
@Autowired
private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService;
public static final String ORDER_NO_JIS_SORT = "ORDER_NO_JIS_SORT";
private static final Map<String, ActorRef> refMap = new ConcurrentHashMap<>(200);
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -74,46 +75,34 @@ public class MesVariableWhenFinishedReadStepService extends BaseStepService {
StepResult stepResult = StepResult.getSuccessComplete();
// 获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean);
MesCellEquipContext curCellEquip = productionProcessContext.getCurCellEquip();
List<MesEquipmentLog> equipmentLogList = mesEquipmentLogExtService.getEquipmentLogList(reqBean.getOrganizeCode(), curCellEquip.getEquipId());
List<MesEquipmentVariable> equipmentVariableList = mesEquipmentExtService.getEquipmentVariableList(productionProcessContext.getOrganizeCode(), curCellEquip.getEquipmentCode(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue());
List<Long> clientHandleList = equipmentVariableList.stream().filter(o -> o.getClientHandle() != null).map( o -> Long.valueOf(o.getClientHandle().longValue())).collect(Collectors.toList());
equipmentLogList = equipmentLogList.stream().filter(mesEquipmentLog -> clientHandleList.contains(mesEquipmentLog.getId())).collect(Collectors.toList());
List<MesEquipmentLogDetail> mesEquipmentLogDetails = new ArrayList<>();
curCellEquip.setQuality(MesExtEnumUtil.EQUIP_LOG_QUALITY.defaultQuality());
Optional<MesEquipmentLog> optional = CollectionUtils.isEmpty(equipmentLogList) ? null : equipmentLogList.stream().filter(o -> (null != o && !mesEquipmentLogExtService.checkEquipQuality(o.getQuality()))).findFirst();
if (null != optional && optional.isPresent()) curCellEquip.setQuality(optional.get().getQuality());
MesEquipVariableCollectContext mesFirstMouldNoCollectContext = mesProductionDispatchContextStepService.getFirstMouldNoContext(reqBean);
mesProductionDispatchContextStepService.sendEquipQualityMessage(reqBean, curCellEquip);
MesSnProductionProcessContext mesSnProductionProcessContext = (MesSnProductionProcessContext) productionProcessContext;
for (MesEquipmentLog mesEquipmentLog : equipmentLogList) {
MesEquipmentLogDetail mesEquipmentLogDetail = new MesEquipmentLogDetail();
BeanUtils.copyProperties(mesEquipmentLog, mesEquipmentLogDetail);
mesEquipmentLogDetail.setAreaCode(reqBean.getAreaCode());
mesEquipmentLogDetail.setCraftCode(productionProcessContext.getCraftCode());
mesEquipmentLogDetail.setProcessCode(reqBean.getProcessCode());
mesEquipmentLogDetail.setWorkCenterCode(reqBean.getWorkCenterCode());
mesEquipmentLogDetail.setExtend(mesSnProductionProcessContext.getProduceSnJson());
mesEquipmentLogDetails.add(mesEquipmentLogDetail);
}
mesEquipmentLogDetailRepository.saveAll(mesEquipmentLogDetails);
// 获取条码信息
List<MesProduceSn> mesProduceSns = mesProductionDispatchContextStepService.getOutProduceSnDataContext(reqBean);
// 通过上下文获取工位设备信息
MesCellEquipContext curCellEquip = productionProcessContext.getCurCellEquip();
return StepResult.getSuccessComplete();
String mesProduceSnsStr = !CollectionUtils.isEmpty(mesProduceSns) ? JSONObject.toJSONString(mesProduceSns) : null;
ActorMessage actorMessage = ActorMessage.builder()
.equipmentCode(curCellEquip.getEquipmentCode())
.equipId(curCellEquip.getEquipId())
.organizeCode(reqBean.getOrganizeCode())
.organizeName(reqBean.getOrganizeName())
.workCellCode(reqBean.getWorkCellCode())
.workCenterCode(reqBean.getWorkCenterCode())
.areaCode(reqBean.getAreaCode())
.craftCode(productionProcessContext.getCraftCode())
.processCode(reqBean.getProcessCode())
.produceSnJson(mesProduceSnsStr)
.userName(reqBean.getUserInfo())
.build();
// 数据采集信息需要存放到 redis中
String key = this.getFsmBusikey(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.name());
ActorRef ref = refMap.computeIfAbsent(key,
k -> actorSystem.actorOf(SpringExtProvider.getInstance().get(actorSystem).create("mesHandlerEquipLogActor"), key));
ref.tell(actorMessage, ActorRef.noSender());
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存工艺参数成功");
}
}

@ -0,0 +1,33 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import io.swagger.annotations.ApiParam;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class ActorMessage {
@ApiParam("用户名称")
private String userName;
@ApiParam("组织代码")
private String organizeCode;
@ApiParam("组织名称")
private String organizeName;
@ApiParam("工作中心代码")
private String workCenterCode;
@ApiParam("工作单元代码")
private String workCellCode;
private String areaCode;
private String craftCode;
private String processCode;
private String produceSnJson;
private String equipmentCode;
private Integer equipId;
}
Loading…
Cancel
Save