forked from I3-YF/i3plus-mes-pcn-yfai
修改工步上料
parent
f51eb189e3
commit
42ef11c53c
@ -0,0 +1,64 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.containerbind;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesContainerPartsModel;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||||
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
// YFWHU|YFNSC901C241223042722|C901|401007574AAABN|9.0|EA|C901|20241223|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class MesContainerBindPackageSnService extends MesAbstractContainerBindDispatchService {
|
||||||
|
@Autowired
|
||||||
|
private MesProduceSnRepository produceSnRDao;
|
||||||
|
|
||||||
|
public MesContainerBindPackageSnService() {
|
||||||
|
super(null, MesExtEnumUtil.CONTAINER_PART_MATCH_TYPE.MATCH_TYPE_30);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> matchNumberRule(String organizeCode, String barcode, MesContainerPartsModel model) {
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
result.put(MesPcnExtConstWords.RESULT, true);
|
||||||
|
String[] splitBarcode = barcode.split("\\|");
|
||||||
|
if (splitBarcode.length < 8) {
|
||||||
|
MesPcnException.throwMesBusiException("自制件箱码【%s】格式不对, 请检查数据!", barcode);
|
||||||
|
}
|
||||||
|
String barOrganizeCode = splitBarcode[2];
|
||||||
|
if (!Objects.equals(barOrganizeCode, organizeCode)) {
|
||||||
|
MesPcnException.throwMesBusiException("自制件箱码【%s】的工厂代码【%s】与当前工厂不匹配, 请检查数据!", barcode, barOrganizeCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
String barProductSn = splitBarcode[3];
|
||||||
|
MesProduceSn produceSn = produceSnRDao.getByProperty(
|
||||||
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "productSn"},
|
||||||
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), barProductSn});
|
||||||
|
if (produceSn == null) {
|
||||||
|
MesPcnException.throwMesBusiException("自制件箱码【%s】的条码【%s】在条码表不存在, 请检查数据!", barcode, barProductSn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()) &&
|
||||||
|
!Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue())) {
|
||||||
|
MesPcnException.throwMesBusiException("扫描条码【%s】的条码状态必须为“创建”或“已完成”, 请检查数据!", barcode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Objects.equals(produceSn.getQcStatus(), MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) &&
|
||||||
|
!Objects.equals(produceSn.getQcStatus(), MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS_TO_QUALIFIED.getValue())) {
|
||||||
|
MesPcnException.throwMesBusiException("扫描条码【%s】的质量状态必须为“合格”或“可疑转正常”, 请检查数据!", barcode);
|
||||||
|
}
|
||||||
|
|
||||||
|
result.put(MesPcnExtConstWords.DATA_TYPE, MesExtEnumUtil.CONTAINER_BARCODE_DATA_TYPE.STATUS_10.getValue());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,86 +0,0 @@
|
|||||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
|
||||||
|
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService;
|
|
||||||
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.pojo.util.MesPcnExtConstWords;
|
|
||||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
|
||||||
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
||||||
import cn.estsh.i3plus.platform.common.util.MesConstWords;
|
|
||||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
||||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesConfig;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesContainerPackage;
|
|
||||||
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.MesContainerPackageRepository;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description : 容器上料扫描容器条码/扫描原料条码/扫描关箱工步
|
|
||||||
* @Author : jason.niu
|
|
||||||
**/
|
|
||||||
@Slf4j
|
|
||||||
@Service("mesStationFeedScanSnStepService")
|
|
||||||
public class MesStationFeedScanSnStepService extends BaseStepService {
|
|
||||||
@Autowired
|
|
||||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
|
||||||
@Autowired
|
|
||||||
private IMesProductionCustomContextStepService productionCustomContextStepService;
|
|
||||||
@Autowired
|
|
||||||
private IMesConfigService configService;
|
|
||||||
@Autowired
|
|
||||||
private MesContainerPackageRepository containerPackageRDao;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public StepResult guide(StationRequestBean reqBean) {
|
|
||||||
|
|
||||||
productionCustomContextStepService.sendStepContextMessage(reqBean);
|
|
||||||
|
|
||||||
return stepSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描上料条码!");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public StepResult execute(StationRequestBean reqBean) {
|
|
||||||
StationResultBean resultBean = new StationResultBean();
|
|
||||||
|
|
||||||
StepResult stepResult = StepResult.getSuccessComplete();
|
|
||||||
|
|
||||||
//扫描信息置空
|
|
||||||
String scanInfo = reqBean.resetScanInfo(reqBean.getScanInfo());
|
|
||||||
|
|
||||||
if (StringUtils.isEmpty(scanInfo)) stepSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描装配件条码!");
|
|
||||||
|
|
||||||
// 判断是否为关箱条码
|
|
||||||
MesConfig mesConfig = configService.getCfgValueByCode(reqBean.getOrganizeCode(), MesPcnExtConstWords.MATCH_STATION_FEED_CLOSE_PACKAGE);
|
|
||||||
if (mesConfig != null && Objects.equals(scanInfo, mesConfig.getCfgValue())) {
|
|
||||||
String containerSn = productionDispatchContextStepService.getMatchStationFeedContainerSnContext(reqBean);
|
|
||||||
if (StringUtils.isEmpty(containerSn)) {
|
|
||||||
stepSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "不存在需要关箱的容器条码!");
|
|
||||||
}
|
|
||||||
MesContainerPackage containerPackage = containerPackageRDao.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_VALID, MesConstWords.IS_DELETED, "containerSn"},
|
|
||||||
new Object[]{reqBean.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), containerSn});
|
|
||||||
if (containerPackage == null) {
|
|
||||||
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("容器条码【%s】未绑定零件!", containerSn));
|
|
||||||
}
|
|
||||||
assert containerPackage != null;
|
|
||||||
containerPackage.setPackageStatus(MesExtEnumUtil.CONTAINER_PACKAGE_STATUS.STATUS_20.getValue());
|
|
||||||
ConvertBean.serviceModelUpdate(containerPackage, reqBean.getUserInfo());
|
|
||||||
containerPackageRDao.update(containerPackage);
|
|
||||||
}
|
|
||||||
|
|
||||||
//保存扫描条码用于缺料时进行上料绑定
|
|
||||||
productionDispatchContextStepService.dispatchMatchStationFeedScanSnContext(reqBean, scanInfo);
|
|
||||||
|
|
||||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.SCAN.getValue()).scanInfo(scanInfo), stepResult,
|
|
||||||
String.format("当前扫描信息装配件条码[%s]", scanInfo));
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue