|
|
|
@ -316,17 +316,18 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
|
|
|
|
|
productSnList2Remain = productSnList.subList(needQty, productSnList.size());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//当前的实际打包数量 = 缓存的包装条码明细数量 + 当前满足标包的差额条码的个数
|
|
|
|
|
Integer curQty = cachedQty + productSnList2Cur.size();
|
|
|
|
|
|
|
|
|
|
MesPackage packageDb = null;
|
|
|
|
|
//判断是否存在缓存的包装条码明细信息,如果进行递归则已无包装条码, 则重新生成信息的包装条码
|
|
|
|
|
if (!CollectionUtils.isEmpty(packageDataContextList)) packageDb = getMesPackage(reqBean.getOrganizeCode(), packageDataContextList.get(0).getPackageId());
|
|
|
|
|
//缓存中的包装条码也可能在DB中已被删除, 所以这里直接判断 包装条码信息是否为空则生成包装条码信息
|
|
|
|
|
if (null == packageDb) packageDb = insertMesPackage(reqBean, packageRuleContext, isAsyn);
|
|
|
|
|
if (null == packageDb) packageDb = insertMesPackage(reqBean, packageRuleContext, curQty, isAsyn);
|
|
|
|
|
|
|
|
|
|
//如果包装条码未空, 说明上面生成包装条码的时候 根据编码规则生成出现问题, 则直接退出, 记录日志, 忽略当前零件的打包
|
|
|
|
|
if (null == packageDb) return null;
|
|
|
|
|
|
|
|
|
|
//当前的实际打包数量 = 缓存的包装条码明细数量 + 当前满足标包的差额条码的个数
|
|
|
|
|
Integer curQty = cachedQty + productSnList2Cur.size();
|
|
|
|
|
//判断当前是否满包, isAsyn=false代表是工位按钮零件打包触发,零头也直接封箱
|
|
|
|
|
Boolean isSealed = !isAsyn ? curQty >= packageRuleContext.getPackSpecQty().intValue() : true;
|
|
|
|
|
//判断包装条码是否存在ID进行新增或者更新操作, 如果满足标包则标记满包状态跟打印状态
|
|
|
|
@ -354,13 +355,16 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
|
|
|
|
|
public MesPackage getMesPackage(String organizeCode, Long packageId) { return packageExtService.getMesPackage(organizeCode, packageId); }
|
|
|
|
|
|
|
|
|
|
//生成包装条码信息
|
|
|
|
|
private MesPackage insertMesPackage(StationRequestBean reqBean, MesPackageRuleContext packageRuleContext, Boolean isAsyn) {
|
|
|
|
|
private MesPackage insertMesPackage(StationRequestBean reqBean, MesPackageRuleContext packageRuleContext, Integer curQty, Boolean isAsyn) {
|
|
|
|
|
|
|
|
|
|
//封装流水号入参对象
|
|
|
|
|
GenSerialNoModel serialNoModel = new GenSerialNoModel(packageRuleContext.getPackageBarcodeRule())
|
|
|
|
|
.putDataMap(MesPackageRuleContext.class.getSimpleName(), packageRuleContext)
|
|
|
|
|
.partNo(packageRuleContext.getPartNo()).basicInfo(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
|
|
|
|
|
|
|
|
|
|
//后面的savePackageDb那边只判断了跨天封箱情况下才会重新生成包装条码, 所以这里如果是正常工步创建则使用标包数量,如是是零件打包创建则使用实际数量生成包装条码,因为可能存在零头数量
|
|
|
|
|
if (isAsyn) serialNoModel.putDataMap(MesPcnExtConstWords.QTY, new Double(curQty));
|
|
|
|
|
|
|
|
|
|
//根据编码规则生成包装条码
|
|
|
|
|
String packageNo = doGereratePackageNo(reqBean, serialNoModel, isAsyn);
|
|
|
|
|
if (StringUtils.isEmpty(packageNo)) return null;
|
|
|
|
|