Merge remote-tracking branch 'origin/dev-wuhan-temp' into dev-wuhan-temp

tags/yfai-pcn-ext-v2.3
jun 6 months ago
commit 5d48b239ff

@ -287,9 +287,13 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
} }
//【非排序线】获取产品加工规则对应的装配件信息 //【非排序线】获取产品加工规则对应的装配件信息
MesProdRuleContext prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext( MesProdRuleContext prodRuleContext = new MesProdRuleContext(
new MesProdRuleContext(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()) reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode())
.copy(filterList.get(0)).productSn(productionPsInContext.getProductSn()).foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey())); .copy(filterList.get(0)).productSn(productionPsInContext.getProductSn()).foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey());
if (!StringUtils.isEmpty(productionPsInContext.getWorkOrderNo())) prodRuleContext.workOrderNo(productionPsInContext.getWorkOrderNo());
prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext(prodRuleContext);
prodRuleContextList.add(prodRuleContext); prodRuleContextList.add(prodRuleContext);
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 设备:{} 进料零件条码:{} 产品加工规则:{} ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 设备:{} 进料零件条码:{} 产品加工规则:{} ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
@ -391,7 +395,11 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
MesProdRuleContext prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext( MesProdRuleContext prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()). reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()).
copy(innerfilterList.get(0)).workOrderNo(productionPartContext.getWorkOrderNo()).productSn(productSn.getProductSn())).foreignKey(productionPartContext.getForeignKey()); copy(innerfilterList.get(0)).productSn(productSn.getProductSn())).foreignKey(productionPartContext.getForeignKey());
if (!StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) prodRuleContext.workOrderNo(productionPartContext.getWorkOrderNo());
else if (!StringUtils.isEmpty(productSn.getWorkOrderNo())) prodRuleContext.workOrderNo(productSn.getWorkOrderNo());
prodRuleContextList.add(prodRuleContext); prodRuleContextList.add(prodRuleContext);
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 设备:{} 产出零件信息:{} 进料零件条码:{} 产品加工规则:{} ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 设备:{} 产出零件信息:{} 进料零件条码:{} 产品加工规则:{} ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),

@ -153,8 +153,8 @@ public class MesProductSnGenerateStepService extends BaseStepService {
//零件信息 //零件信息
MesPart part = partDataMap.get(prodRuleContext.getOutPartNo()); MesPart part = partDataMap.get(prodRuleContext.getOutPartNo());
//加工规则中进料零件与产出零件是否一致 //验证进料零件与产出零件是否一致
Boolean isSamePart = isSamePart(productionPsInContext, productionPartContext); Boolean isSamePart = isSamePart(productionPsInContext, productionPartContext, prodRuleContext);
//工位是否不累计工单完成数 //工位是否不累计工单完成数
Boolean isCellNoCalcQty = isCellNoCalcQty(workCell.getNoCalcOrderQty()); Boolean isCellNoCalcQty = isCellNoCalcQty(workCell.getNoCalcOrderQty());
@ -173,15 +173,18 @@ public class MesProductSnGenerateStepService extends BaseStepService {
produceSn.setCustSn(produceSn.getProductSn()); produceSn.setCustSn(produceSn.getProductSn());
} }
if (StringUtils.isEmpty(produceSn.getSerialNumber())) if (StringUtils.isEmpty(produceSn.getSerialNumber())) {
produceSn.setSerialNumber(doGererateSerialNo(reqBean, resultBean, produceSn.setSerialNumber(doGererateSerialNo(reqBean, resultBean, generateGenSerialNoModel(reqBean, resultBean, MesPcnExtConstWords.DEFAULT_SERIAL_NUMBER_RULE, part)));
generateGenSerialNoModel(reqBean, resultBean, MesPcnExtConstWords.DEFAULT_SERIAL_NUMBER_RULE, part))); }
produceSn.setQty(new Double(1)); produceSn.setQty(new Double(1));
produceSn.setWorkOrderNo((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getWorkOrderNo() : null); if (!StringUtils.isEmpty(prodRuleContext.getWorkOrderNo())) produceSn.setWorkOrderNo(prodRuleContext.getWorkOrderNo());
produceSn.setCustCode((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getCustCode() : null);
produceSn.setCustPartNo((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getCustPartNo() : null); if (null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) {
produceSn.setCustCode(productionPartContext.getCustCode());
produceSn.setCustPartNo(productionPartContext.getCustPartNo());
}
produceSn.setAreaCode(reqBean.getAreaCode()); produceSn.setAreaCode(reqBean.getAreaCode());
produceSn.setWorkCenterCode(reqBean.getWorkCenterCode()); produceSn.setWorkCenterCode(reqBean.getWorkCenterCode());
@ -219,7 +222,7 @@ public class MesProductSnGenerateStepService extends BaseStepService {
produceSn = produceSnExtService.insert(produceSn); produceSn = produceSnExtService.insert(produceSn);
} else produceSnExtService.updateNoSync(produceSn); } else produceSnExtService.updateNoSync(produceSn);
MesProductionPsOutContext productionPsOutContext = new MesProductionPsOutContext().copy(produceSn, prodRuleContext.getForeignKey()).isCalcCompleteQty(isCalcCompleteQty(isCellNoCalcQty, produceSn.getWorkOrderNo(), isSamePart, productionPartContext, productionPsInContext)); MesProductionPsOutContext productionPsOutContext = new MesProductionPsOutContext().copy(produceSn, prodRuleContext.getForeignKey()).isCalcCompleteQty(isCalcCompleteQty(isCellNoCalcQty, isSamePart, productionPartContext));
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- MesProduceSn:{} --- MesProductionPsOutContext:{}", log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- MesProduceSn:{} --- MesProductionPsOutContext:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
@ -253,13 +256,17 @@ public class MesProductSnGenerateStepService extends BaseStepService {
return part.getProductMatchRule(); return part.getProductMatchRule();
} }
//加工规则中进料零件与产出零件是否一致 //验证进料零件与产出零件是否一致
private Boolean isSamePart(MesProductionPsInContext productionPsInContext, MesProductionPartContext productionPartContext) { private Boolean isSamePart(MesProductionPsInContext productionPsInContext, MesProductionPartContext productionPartContext, MesProdRuleContext prodRuleContext) {
if (null == productionPsInContext) return false; if (null == productionPsInContext) return false;
if (StringUtils.isEmpty(productionPsInContext.getPartNo())) return false; if (StringUtils.isEmpty(productionPsInContext.getPartNo())) return false;
if (null == productionPartContext) return false; if (null != productionPartContext) {
if (!productionPsInContext.getPartNo().equals(productionPartContext.getPartNo())) return false; if (!productionPsInContext.getPartNo().equals(productionPartContext.getPartNo())) return false;
return true; else return true;
} else {
if (!productionPsInContext.getPartNo().equals(prodRuleContext.getOutPartNo())) return false;
else return true;
}
} }
//工位是否不累计工单完成数 //工位是否不累计工单完成数
@ -268,20 +275,12 @@ public class MesProductSnGenerateStepService extends BaseStepService {
} }
//判断是否累计工单完成数 //判断是否累计工单完成数
private Boolean isCalcCompleteQty(Boolean isCellNoCalcQty, String workOrderNo, Boolean isSamePart, MesProductionPartContext productionPartContext, MesProductionPsInContext productionPsInContext) { private Boolean isCalcCompleteQty(Boolean isCellNoCalcQty, Boolean isSamePart, MesProductionPartContext productionPartContext) {
//工位不消耗工单完成数
if (isCellNoCalcQty) return false; if (isCellNoCalcQty) return false;
if (StringUtils.isEmpty(workOrderNo)) return false; //未选工单场景
if (checkIsSameWorkOrder(isSamePart, productionPartContext, productionPsInContext)) return false; if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) return false;
return true; return isSamePart ? false : true;
}
//进出一致的情况下判断进出是否都存在工单
private Boolean checkIsSameWorkOrder(Boolean isSamePart, MesProductionPartContext productionPartContext, MesProductionPsInContext productionPsInContext) {
if (!isSamePart) return false;
//进出零件一致则无需验证进出的对象为空
if (StringUtils.isEmpty(productionPartContext.getWorkOrderNo()) || StringUtils.isEmpty(productionPsInContext.getWorkOrderNo())) return false;
//无需验证进出的工单是否一致,在匹配加工规则的时候已经验证了必须一致
return true;
} }
} }

Loading…
Cancel
Save