工步调配原料功能

mes-uat-changshu0609^2
jason 2 weeks ago
parent afdae0a8d2
commit 3a1a45777c

@ -0,0 +1,12 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext;
import java.util.List;
public interface IMesRawSnWeightRecordService {
void insertRawRemainWeightRecord(MesProductionAssemblyContext context, String organizeCode, String username);
void insertOutPartNoWeightRecord(MesProdRuleContext prodRuleContext, List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList, String organizeCode, String username);
}

@ -531,11 +531,6 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
containerPackageRDao.save(containerPackage);
}
if (!CollectionUtils.isEmpty(model.getPackageDetails())) {
// if (containerPackage != null) {
// for (MesContainerPackageDetail packageDetail : model.getPackageDetails()) {
// packageDetail.setPid(containerPackage.getId());
// }
// }
containerPackageDetailRDao.saveAll(model.getPackageDetails());
}
if (!CollectionUtils.isEmpty(model.getBindingList())) {

@ -0,0 +1,105 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesRawSnWeightRecordService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesRawMixCfgDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesRawSnWeightRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesRawWeightCfg;
import cn.estsh.i3plus.pojo.mes.repository.MesRawMixCfgDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesRawSnWeightRecordRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesRawWeightCfgRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
@Service
public class MesRawSnWeightRecordServiceImpl implements IMesRawSnWeightRecordService {
@Autowired
private MesRawSnWeightRecordRepository rawSnWeightRecordRDao;
@Autowired
private MesRawWeightCfgRepository rawWeightCfgRDao;
@Autowired
private MesRawMixCfgDetailRepository rawMixCfgDetailRDao;
@Autowired
private IMesPartService partService;
@Override
public void insertRawRemainWeightRecord(MesProductionAssemblyContext context, String organizeCode, String username) {
MesRawMixCfgDetail detail = rawMixCfgDetailRDao.getByProperty(
new String[]{"organizeCode", "isValid", "isDeleted", "outPartNo", "partNo"},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), context.getPartNo(), context.getAssemblyPartNo()});
if (detail == null) {
return;
}
MesRawWeightCfg weightCfg = rawWeightCfgRDao.getByProperty(new String[]{"organizeCode", "isValid", "isDeleted", "partNo"},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), context.getAssemblyPartNo()});
if (weightCfg == null) {
return;
}
double remainQty = getRemainQty(organizeCode, context.getAssemblyPartNo());
MesRawSnWeightRecord record = new MesRawSnWeightRecord();
record.setOrganizeCode(organizeCode);
record.setBarCode(context.getAssemblySn());
record.setPartNo(context.getAssemblyPartNo());
record.setPartName(context.getAssemblyPartName());
record.setNetWeight(remainQty - context.getQty());
record.setNetUnit(weightCfg.getNetUnit());
record.setRawType(detail.getRawType());
ConvertBean.serviceModelInitialize(record, username);
rawSnWeightRecordRDao.insert(record);
}
@Override
public void insertOutPartNoWeightRecord(MesProdRuleContext prodRuleContext, List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList, String organizeCode, String username) {
MesPart mesPart = partService.getMesPartByPartNo(prodRuleContext.getOutPartNo(), organizeCode);
if (mesPart == null) {
return;
}
double totalWeight = 0.0;
for (MesProductionAssemblyNosortContext context : productionAssemblyNosortContextList) {
if (Objects.equals(context.getMatchType(), MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_90.getValue())) {
totalWeight += context.getQty();
}
}
MesRawSnWeightRecord record = new MesRawSnWeightRecord();
record.setOrganizeCode(organizeCode);
record.setBarCode(prodRuleContext.getProductSn());
record.setPartNo(mesPart.getPartNo());
record.setPartName(mesPart.getPartName());
record.setNetWeight(totalWeight);
record.setRawType(MesExtEnumUtil.RAW_MIX_DETAIL_TYPE.RAW_MIX_DETAIL_TYPE_10.getValue());
ConvertBean.serviceModelInitialize(record, username);
rawSnWeightRecordRDao.insert(record);
}
private double getRemainQty(String organizeCode, String partNo) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
MesRawSnWeightRecord record = rawSnWeightRecordRDao.getByProperty(ddlPackBean);
if (record != null) {
return record.getNetWeight();
}
MesRawWeightCfg weightCfg = rawWeightCfgRDao.getByProperty(new String[]{"organizeCode", "isValid", "isDeleted", "partNo"},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), partNo});
if (weightCfg == null) {
return 0.0;
}
return weightCfg.getNetWeight();
}
}

@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
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.step.MesAssemblyShowNosortStepService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesWorkOrderCheckCompleteQtyStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext;
@ -44,9 +45,6 @@ public class MesFunctionDialogInputRawMixWeightService extends BaseSwsService im
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
private MesWorkOrderCheckCompleteQtyStepService workOrderCheckCompleteQtyStepService;
@Autowired
private IShippingDispatchService shippingDispatchService;
@Autowired
@ -57,7 +55,7 @@ public class MesFunctionDialogInputRawMixWeightService extends BaseSwsService im
@Autowired
private MesRawWeightCfgRepository rawWeightCfgRDao;
@Autowired
private IMesPartService partService;
private MesAssemblyShowNosortStepService assemblyShowNosortStepService;
@Override
public Boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) {
@ -103,24 +101,29 @@ public class MesFunctionDialogInputRawMixWeightService extends BaseSwsService im
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return false;
}
productionDispatchContextStepService.dispatchProdRuleDataContext(reqBean, prodRuleContextList);
boolean bOverCapacity = false;
if (isAllAssemblyMatchRawMix(workCenter, prodRuleContextList)) {
if (!checkRawMixWeight(organizeCode, workCenter, prodRuleContextList, reqBean.getUserInfo())) {
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()),
"输入数量超出了容差范围",
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return false;
bOverCapacity = true;
}
}
productionDispatchContextStepService.dispatchProdRuleDataContext(reqBean, prodRuleContextList);
if (bOverCapacity) {
assemblyShowNosortStepService.showProductionAssembly(reqBean, resultBean, productionProcessContext.getWorkCenter(), prodRuleContextList);
}
reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean));
reqBean.setInterfaceType(MesPcnConstWords.SHIPPING);
reqBean.setBusiType(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_DO_SCAN.getCode());
reqBean.setButtonCode(buttonDynamicModel.getButtonCode());
reqBean.setStepDialogStatus(true);
shippingDispatchService.sendScanQueueNextExec(reqBean);
return true;
return !bOverCapacity;
}
private MesProductionAssemblyContext getProductionAssemblyContext(String organizeCode, MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, String qty, StepResult stepResult) {
@ -184,7 +187,6 @@ public class MesFunctionDialogInputRawMixWeightService extends BaseSwsService im
if (CollectionUtils.isEmpty(rawMixCfgDetailList)) {
continue;
}
Map<String, MesRawMixCfgDetail> partCfgDetails = new HashMap<>();
Map<String, Map.Entry<Double, Double>> partWeightPercent = new HashMap<>();
for (MesRawMixCfgDetail rawMixCfgDetail : rawMixCfgDetailList) {
if (StringUtils.isEmpty(rawMixCfgDetail.getPartNo()) || rawMixCfgDetail.getPercent() == null) {
@ -193,9 +195,9 @@ public class MesFunctionDialogInputRawMixWeightService extends BaseSwsService im
double percent = rawMixCfgDetail.getPercent();
double rangeRate = rawMixCfgDetail.getRangeRate() != null ? rawMixCfgDetail.getRangeRate() : 0.0;
partWeightPercent.put(rawMixCfgDetail.getPartNo(), new AbstractMap.SimpleEntry<>(percent - rangeRate, percent + rangeRate));
partCfgDetails.put(rawMixCfgDetail.getPartNo(), rawMixCfgDetail);
}
boolean flag = true;
List<MesProductionAssemblyContext> productionAssemblyContextList = prodRuleContext.getAssemblyDataContext(workCenter);
double totalQty = productionAssemblyContextList.stream().mapToDouble(MesProductionAssemblyContext::getQty).sum();
for (MesProductionAssemblyContext productionAssemblyContext : productionAssemblyContextList) {
@ -207,49 +209,18 @@ public class MesFunctionDialogInputRawMixWeightService extends BaseSwsService im
double curPercent = productionAssemblyContext.getQty() / totalQty;
curPercent = curPercent * 100;
if (curPercent < rangeRate.getKey() || curPercent > rangeRate.getValue()) {
return false;
}
}
for (MesProductionAssemblyContext productionAssemblyContext : productionAssemblyContextList) {
MesRawMixCfgDetail detail = partCfgDetails.get(productionAssemblyContext.getAssemblyPartNo());
if (detail == null) {
continue;
}
MesRawWeightCfg weightCfg = rawWeightCfgRDao.getByProperty(new String[]{"organizeCode", "isValid", "isDeleted", "partNo"},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), productionAssemblyContext.getAssemblyPartNo()});
if (weightCfg == null) {
continue;
flag = false;
break;
}
double remainQty = getRemainQty(organizeCode, productionAssemblyContext.getAssemblyPartNo());
MesRawSnWeightRecord record = new MesRawSnWeightRecord();
record.setBarCode(productionAssemblyContext.getAssemblySn());
record.setPartNo(productionAssemblyContext.getAssemblyPartNo());
record.setPartName(productionAssemblyContext.getAssemblyPartName());
record.setNetWeight(remainQty - productionAssemblyContext.getQty());
record.setNetUnit(weightCfg.getNetUnit());
record.setRawType(detail.getRawType());
ConvertBean.serviceModelInitialize(record, userName);
rawSnWeightRecordRDao.insert(record);
}
MesPart mesPart = partService.getMesPartByPartNo(prodRuleContext.getOutPartNo(), organizeCode);
if (mesPart != null) {
MesRawWeightCfg weightCfg = rawWeightCfgRDao.getByProperty(new String[]{"organizeCode", "isValid", "isDeleted", "partNo"},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), mesPart.getPartNo()});
if (weightCfg != null) {
MesRawSnWeightRecord record = new MesRawSnWeightRecord();
record.setBarCode(prodRuleContext.getProductSn());
record.setPartNo(mesPart.getPartNo());
record.setPartName(mesPart.getPartName());
record.setNetWeight(weightCfg.getNetWeight());
record.setNetUnit(weightCfg.getNetUnit());
record.setRawType(MesExtEnumUtil.RAW_MIX_DETAIL_TYPE.RAW_MIX_DETAIL_TYPE_10.getValue());
ConvertBean.serviceModelInitialize(record, userName);
rawSnWeightRecordRDao.insert(record);
if (!flag) {
for (MesProductionAssemblyContext productionAssemblyContext : productionAssemblyContextList) {
productionAssemblyContext.setIsCheckedRawMix(null);
productionAssemblyContext.setQty(0.0);
productionAssemblyContext.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue());
}
prodRuleContext.assemblyDataJson(productionAssemblyContextList);
return false;
}
}
return true;

@ -3,15 +3,18 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
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.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
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.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,9 +22,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
/**
* @Description :
@ -38,6 +39,8 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
private IMesNumberRuleMatchDispatchService numberRuleMatchDispatchService;
@Autowired
private MesAssemblyShowNosortStepService assemblyShowNosortStepService;
@Autowired
private MesProduceSnRepository produceSnRDao;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -84,10 +87,10 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
if (result) {
productionDispatchContextStepService.dispatchProdRuleDataContext(reqBean, prodRuleContextList);
assemblyShowNosortStepService.showProductionAssembly(reqBean, resultBean, productionProcessContext.getWorkCenter(), prodRuleContextList);
return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "请输入原料重量!");
return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "请输入原料重量!");
}
return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), "当前不存在装配件条码!");
return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), StringUtils.isEmpty(stepResult.getMsg()) ? "当前不存在装配件条码!" : stepResult.getMsg());
}
private boolean isAllAssemblyMatchRawMix(MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList) {
@ -118,7 +121,7 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
//获取非排序装配件清单
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext();
Boolean flag = false;
boolean flag = false;
//遍历装配件清单
LOOP:
@ -130,13 +133,18 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedCustomStepMatch(productionAssemblyNosortContext.getMatchType()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("当前工序模版不支持匹配[%s]确认方式的装配件信息!", MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfDescription(productionAssemblyNosortContext.getMatchType())));
//匹配规则
Map<String, Object> result = numberRuleMatchDispatchService.matchNumberRule(reqBean.getOrganizeCode(), barcode, productionAssemblyNosortContext);
Map<String, Object> result;
// 未维护匹配规则,则按自制件进行校验。
if (StringUtils.isEmpty(productionAssemblyNosortContext.getMatchRule())) {
result = checkProductSnRule(reqBean.getOrganizeCode(), barcode);
} else {
//匹配规则
result = numberRuleMatchDispatchService.matchNumberRule(reqBean.getOrganizeCode(), barcode, productionAssemblyNosortContext);
}
//匹配失败
if (!(Boolean) result.get(MesPcnExtConstWords.RESULT)) {
if (!Objects.equals(result.get(MesPcnExtConstWords.RESULT), true)) {
String msg = (String) result.get(MesPcnExtConstWords.MESSAGE);
stepResult.obj(String.format("%s%s", StringUtils.isEmpty(stepResult.getObj()) ? MesPcnExtConstWords.EMPTY : stepResult.getObj(), StringUtils.isEmpty(msg) ? MesPcnExtConstWords.EMPTY : msg));
stepResult.setMsg(msg);
continue;
}
@ -144,7 +152,10 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? barcode : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN);
MesProductionAssemblyNosortContext filter = (MesProductionAssemblyNosortContext) result.get(MesPcnExtConstWords.DATA);
//装配件清单该数据标记已装配 (如果是自制件赋值productSnId)
productionAssemblyNosortContext.assemblyStatus(assemblySn).productSnId(filter.getProductSnId());
productionAssemblyNosortContext.assemblyStatus(assemblySn);
if (filter != null) {
productionAssemblyNosortContext.productSnId(filter.getProductSnId());
}
flag = true;
break;
}
@ -157,6 +168,33 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
}
return false;
}
private Map<String, Object> checkProductSnRule(String organizeCode, String barcode) {
Map<String, Object> result = new HashMap<>();
result.put(MesPcnExtConstWords.RESULT, false);
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(), barcode});
if (produceSn == null) {
result.put(MesPcnExtConstWords.MESSAGE, String.format("扫描条码【%s】在条码表不存在, 请检查数据!", barcode));
return result;
}
if (!Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()) &&
!Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue())) {
result.put(MesPcnExtConstWords.MESSAGE, String.format("扫描条码【%s】的条码状态必须为“创建”或“已完成”, 请检查数据!", barcode));
return result;
}
if (!Objects.equals(produceSn.getQcStatus(), MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) &&
!Objects.equals(produceSn.getQcStatus(), MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS_TO_QUALIFIED.getValue())) {
result.put(MesPcnExtConstWords.MESSAGE, String.format("扫描条码【%s】的质量状态必须为“合格”或“可疑转正常”, 请检查数据!", barcode));
return result;
}
result.put(MesPcnExtConstWords.RESULT, true);
return result;
}
}

@ -56,6 +56,9 @@ public class MesAssemblySaveStepService extends BaseStepService {
@Autowired
private IMesStationContainerSnExtService stationContainerSnExtService;
@Autowired
private IMesRawSnWeightRecordService rawSnWeightRecordService;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -129,12 +132,15 @@ public class MesAssemblySaveStepService extends BaseStepService {
//容器匹配, 一个装配件信息可能对应多条原料条码
if (productionAssemblyNosortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_80.getValue()) == 0) {
insertMesProductionAssembly80(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
} else if (productionAssemblyNosortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_90.getValue()) == 0) {
insertMesProductionAssembly90(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
} else {
//一对一
insertProductionAssembly(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
}
}
//写入调配产出物重量记录
rawSnWeightRecordService.insertOutPartNoWeightRecord(prodRuleContext, productionAssemblyNosortContextList, reqBean.getOrganizeCode(), reqBean.getUserInfo());
}
//保存装配件绑定记录
@ -216,4 +222,13 @@ public class MesAssemblySaveStepService extends BaseStepService {
}
//调配原料, 记录原料的剩余数量及胶水总重量。
private void insertMesProductionAssembly90(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext,
MesProdRuleContext prodRuleContext, MesProductionPsOutContext productionPsOutContext,
MesProductionAssemblyNosortContext productionAssemblyNosortContext, MesScanMonitorContext scanMonitorContext, List<Long> productSnIdList) {
//保存装配件绑定记录
insertProductionAssembly(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
//写入调配原料剩余数量
rawSnWeightRecordService.insertRawRemainWeightRecord(productionAssemblyNosortContext, reqBean.getOrganizeCode(), reqBean.getUserInfo());
}
}

Loading…
Cancel
Save