tags/yfai-pcn-ext-v1.0
王杰 11 months ago
parent cf4b501bd0
commit 8cc88b9f1b

@ -1,134 +0,0 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService;
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.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.hutool.core.date.DateUtil;
import com.google.common.base.Objects;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service
public class MesProductionReocrdGenerateStepServiceBak extends BaseStepService {
@Autowired
private SnowflakeIdMaker snowflakeIdMaker;
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Autowired
private MesProductionRecordRepository mesProductionRecordRepository;
@Autowired
private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService;
@Autowired
private IMesProductionCustomContextStepService productionCustomContextStepService;
public static final String ORDER_NO_JIS_SORT = "ORDER_NO_JIS_SORT";
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
/**
*
*/
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getEquipmentVariableList(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue());
MesWorkCell mesWorkCell = productionProcessContext.getWorkCell();
MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode());
List<MesProductionPsOutContext> mesProduceSnContexts = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
List<MesProductionRecord> mesProductionRecords = new ArrayList<>();
mesProduceSnContexts.forEach(mesProductionPsOutContext -> {
MesProductionRecord mesProductionRecord = getMesProductionRecord(productionProcessContext, mesProductionPsOutContext,mesProdShiftKvBean, reqBean);
ConvertBean.serviceModelInitialize(mesProductionRecord, reqBean.getUserInfo());
mesProductionRecords.add(mesProductionRecord);
});
mesProductionRecordRepository.saveAll(mesProductionRecords);
if (Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),mesWorkCell.getIsCountFinish())) {
// 保存班次加工数量上下文
productionCustomContextStepService.addProductionStatisticsContext(reqBean,mesProduceSnContexts.size());
}
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "生成加工记录成功");
}
private MesProductionRecord getMesProductionRecord(MesProductionProcessContext productionProcessContext, MesProductionPsOutContext mesProduceSn,MesProdShiftContext mesProdShiftKvBean, StationRequestBean reqBean) {
MesProductionRecord mesProductionRecord = new MesProductionRecord();
mesProductionRecord.setSerialNumber(mesProduceSn.getSerialNumber());
mesProductionRecord.setAreaCode(mesProduceSn.getAreaCode());
mesProductionRecord.setCraftCode(mesProduceSn.getCraftCode());
mesProductionRecord.setCustSn(mesProduceSn.getCustSn());
mesProductionRecord.setProductSn(mesProduceSn.getCustSn());
mesProductionRecord.setEquipmentCode(productionProcessContext.getCurCellEquip().getEquipmentCode());
mesProductionRecord.setEquipmentName(productionProcessContext.getCurCellEquip().getEquipmentName());
mesProductionRecord.setPartNo(mesProduceSn.getPartNo());
mesProductionRecord.setPartName(mesProduceSn.getPartName());
mesProductionRecord.setIsComplete(MesEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
mesProductionRecord.setCompleteDateTime(DateUtil.formatDateTime(new Date()));
mesProductionRecord.setLotNo(mesProduceSn.getLotNo());
mesProductionRecord.setShiftGroup(mesProdShiftKvBean.getShiftGroup());
mesProductionRecord.setShiftCode(mesProdShiftKvBean.getShiftCode());
mesProductionRecord.setWorkOrderNo(mesProduceSn.getWorkOrderNo());
String mouldNo = "";
MesEquipVariableCollectContext mesFirstMouldNoCollectContext = mesProductionDispatchContextStepService.getFirstMouldNoContext(reqBean);
MesEquipVariableCollectContext mesMouldNoCollectContext = mesProductionDispatchContextStepService.getMouldNoContext(reqBean);
if (mesFirstMouldNoCollectContext != null) {
mouldNo = mesFirstMouldNoCollectContext.getEquipVariableValue();
} else if (mesFirstMouldNoCollectContext == null && mesMouldNoCollectContext != null) {
mouldNo = mesMouldNoCollectContext.getEquipVariableValue();
}
mesProductionRecord.setMouldNo(mouldNo);
// todo
// mesProductionRecord.setMouldRecordId();
mesProductionRecord.setProcessCode(mesProduceSn.getProcessCode());
mesProductionRecord.setReportPartNo(mesProduceSn.getPartNo());
mesProductionRecord.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue());
mesProductionRecord.setWorkOrderNo(mesProduceSn.getWorkOrderNo());
mesProductionRecord.setWorkCellCode(mesProduceSn.getWorkCellCode());
mesProductionRecord.setWorkCenterCode(mesProduceSn.getWorkCenterCode());
return mesProductionRecord;
}
}

@ -1,71 +0,0 @@
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.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : Castle
* @CreateDate : 2024/6/11 18:50
* @Modify:
**/
@Slf4j
@Service("mesWorkOrderSaveStepServiceBak")
public class MesWorkOrderSaveStepServiceBak extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//1. 获取上下文中的MesProductionPartContext 产出零件
List<MesProductionPartContext> productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean);
if (productionPartContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
// 判断为空腔 isFinishedCode = true 就是空腔
// stream 过滤 isFinishedCode = false 并且 foreignKey != null 并且 加工单code 为不为空;
List<MesProductionPartContext> filteredPartContext = productionPartContext.stream().filter(item -> item.getIsFinishCode() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() && item.getForeignKey() != null && item.getWorkOrderNo() != null).collect(Collectors.toList());
if (filteredPartContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "过滤后,没有可保存的加工单信息");
}
// 怎么判断条码生成过了? 看产出零件和入料in 要判端relateId有值也需要新增, out生成条码 上下文
// 如果没有in 需要加,
// 如果有out条码,则判断id是否为空不为空则是新生成的
//2. 判断是否为空,id是否为空如果没有则返回,id为工单id
List<MesProductionPartContext> collectContext = productionPartContext.stream().filter(item -> item.getId() != null).collect(Collectors.toList());
//3. 如果id不为空查询工单信息
if (collectContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
//4. 判断当前产出的零件MesProductionPsOutContext中是否有id如果有就是新生成的
List<MesProductionPsOutContext> productionPsOutContext = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
//过滤出新生成的条码没有条码id就是新生成的
List<MesProductionPsOutContext> produceSnList = productionPsOutContext.stream().filter(item -> item.getId() != null).collect(Collectors.toList());
if (produceSnList.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
// productionPsOutContext.stream().collect(Collectors.groupingBy(MesProductionPsOutContext::getId))
//5. 修改完成数量,完成数量大于计划数量,就需要修改工单的状态为完成
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存加工单信息成功");
}
}
Loading…
Cancel
Save