| | |
| | | { |
| | | if (ExistsBatch(workorder, lineCode, batchNo)) |
| | | { |
| | | return WoBatchDic.FirstOrDefault(q => q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode && (batchNo.IsNullOrEmpty() || q.Value.Batch.BATCH_NO == batchNo)).Value; |
| | | return WoBatchDic.FirstOrDefault(q => !q.Value.Batch.IsNullOrEmpty() && q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode && (batchNo.IsNullOrEmpty() || q.Value.Batch.BATCH_NO == batchNo)).Value; |
| | | } |
| | | return null; |
| | | } |
| | |
| | | /// <param name="labelPVs">过程变量列表</param> |
| | | /// <param name="lv">标签模板变量</param> |
| | | /// <returns></returns> |
| | | public string GetPrintProcessValue(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_VAR lv, List<BAS_LABEL_VAR> lvars, IWorkAction action) |
| | | public string GetPrintProcessValue(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_VAR lv, List<BAS_LABEL_VAR> lvars, IWorkAction curAction) |
| | | { |
| | | var pv = labelPVs.FirstOrDefault(q => q.VAR_CODE == lv.VAR_VALUE); |
| | | if (!pv.IsNullOrEmpty()) |
| | |
| | | case "GetPackNumber": |
| | | return GetLabelVarWo(lv, WorkBatch.WO.ORDER_NO); |
| | | case "GetBoxQR": |
| | | return action is PackingAction ? GetBoxCode(lvars, action as PackingAction) : ""; |
| | | return curAction is PackingAction ? GetBoxCode(lvars, curAction as PackingAction) : ""; |
| | | case "GetCardQR": |
| | | return action is PackingAction ? GetCardOrBoxQR(GetCardCode(lvars), lvars, action as PackingAction) : ""; |
| | | return curAction is PackingAction ? GetCardOrBoxQR(GetCardCode(lvars), lvars, curAction as PackingAction) : ""; |
| | | case "GetCardSN": |
| | | List<string> minPkgList = new List<string>(); |
| | | var _pkaction = action is PackingAction ? action as PackingAction : null; |
| | | var _pkaction = curAction is PackingAction ? curAction as PackingAction : null; |
| | | if (_pkaction != null) |
| | | { |
| | | minPkgList = GetMinPkgList(_pkaction); |
| | |
| | | return GetLabelVarWo(lv, WorkBatch.WO.Customer?.CUST_NAME_CN); |
| | | case "GetHWDate": |
| | | List<string> list = new List<string>(); |
| | | var _action = action is PackingAction ? action as PackingAction : null; |
| | | var _action = curAction is PackingAction ? curAction as PackingAction : null; |
| | | if (_action != null) |
| | | { |
| | | list = GetMinPkgList(_action); |
| | |
| | | return GetHuaWeiWeek(WorkBatch.Batch.ORDER_NO, list); |
| | | case "GetQty": |
| | | List<string> qtylist = new List<string>(); |
| | | var _qtyAction = action is PackingAction ? action as PackingAction : null; |
| | | var _qtyAction = curAction is PackingAction ? curAction as PackingAction : null; |
| | | if (_qtyAction != null) |
| | | { |
| | | qtylist = GetMinPkgList(_qtyAction); |
| | |
| | | return GetLabelVarWo(lv, ""); |
| | | case "GetLOTNO": |
| | | string _lotnos = ""; |
| | | var _orderAction = action is PackingAction ? action as PackingAction : null; |
| | | var _orderAction = curAction is PackingAction ? curAction as PackingAction : null; |
| | | if (_orderAction != null) |
| | | { |
| | | var snList = _orderAction.GetMinPackageList(_orderAction.CurPkg.Item).Select(q => q.FLOW_SN).ToList(); |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | #region 条码规则方法 |
| | | /// <summary> |
| | | /// 获取根据条码规则生成条码 |
| | | /// </summary> |
| | | /// <param name="ruleCode"></param> |
| | | /// <param name="curAction"></param> |
| | | /// <returns></returns> |
| | | public string GenerateSN(string ruleCode, IWorkAction curAction) |
| | | { |
| | | var rule = Biz.CodeRule[ruleCode ?? ""]; |
| | | if (!rule.IsNullOrEmpty()) |
| | | { |
| | | switch (rule.RULE_CODE) |
| | | { |
| | | case "WhiteBoxNo": |
| | | return rule.Generate("W", $"{WorkBatch.Batch.BATCH_NO}-{WorkBatch.Batch.PLAN_QTY}-").Data.ToString() ?? ""; |
| | | case "CartonNo": |
| | | return rule.Generate("B", $"{WorkBatch.Batch.BATCH_NO}-{WorkBatch.Batch.PLAN_QTY}-").Data.ToString() ?? ""; |
| | | default: |
| | | return rule.Generate().Data.ToString() ?? ""; |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | #endregion |
| | | #region 包装专用方法 |
| | | /// <summary> |
| | | /// 根据传入的包装对象返回所有的包装实体列表 |
| | |
| | | PKG_LEVEL = max.PKG_LEVEL, |
| | | PKG_QTY = max.PKG_QTY, |
| | | LABEL_CODE = LabelDic.Count > max.PKG_LEVEL ? LabelDic[max.PKG_LEVEL]?.LABEL_CODE : null, |
| | | SN = CurPosition.GenerateSN(max.SN_RULE, this), |
| | | } |
| | | }; |
| | | WipPkgItem child = null; |
| | |
| | | PKG_LEVEL = dtl.PKG_LEVEL, |
| | | PKG_QTY = dtl.PKG_QTY, |
| | | LABEL_CODE = LabelDic.Count > dtl.PKG_LEVEL ? LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE : null, |
| | | SN = CurPosition.GenerateSN(dtl.SN_RULE, this), |
| | | }; |
| | | if (!child.IsNullOrEmpty()) |
| | | { |
| | |
| | | PKG_LEVEL = dtl.PKG_LEVEL, |
| | | PKG_QTY = dtl.PKG_QTY, |
| | | LABEL_CODE = LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, |
| | | SN = CurPosition.GenerateSN(dtl.SN_RULE, this).IsNullOrEmpty(pInput.PkgSN), |
| | | IsFinished = true, |
| | | }; |
| | | |
| | | CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == pInput.PkgSN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() |
| | | CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPkgItem.SN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() |
| | | { |
| | | AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, |
| | | AUTH_PROD = CurPosition.CurLine.LINE_CODE, |
| | | SN = pInput.PkgSN, |
| | | SN = CurPkgItem.SN, |
| | | }; |
| | | CurPkgItem.Package.WIP_ID = CurPosition.CurWipSNs.Count == 1 ? CurPosition.CurWipSNs.First().ID : null; |
| | | CurPkgItem.Package.PKG_TYPE = dtl.PkgType.PKG_NAME; |
| | |
| | | { |
| | | AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, |
| | | AUTH_PROD = CurPosition.CurLine.LINE_CODE, |
| | | SN = pInput.PkgSN, |
| | | SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN), |
| | | PKG_TYPE = dtl.PkgType.PKG_NAME, |
| | | ITEM_CODE = CurPkgItem.Items.First().Package.ITEM_CODE, |
| | | QTY = CurPkgItem.Items.Sum(q => q.Package.QTY), |
| | |
| | | { |
| | | AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, |
| | | AUTH_PROD = CurPosition.CurLine.LINE_CODE, |
| | | SN = pInput.PkgSN, |
| | | SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN), |
| | | PKG_TYPE = dtl.PkgType.PKG_NAME, |
| | | ITEM_CODE = CurPosition.CurWipSNs.First().ITEM_CODE, |
| | | QTY = CurPkgItem.Items.Sum(q => q.Package.QTY), |
| | |
| | | PKG_LEVEL = nextDtl.PKG_LEVEL, |
| | | PKG_QTY = nextDtl.PKG_QTY, |
| | | LABEL_CODE = LabelDic[nextDtl.PKG_LEVEL]?.LABEL_CODE, |
| | | SN = CurPosition.GenerateSN(nextDtl.SN_RULE, this), |
| | | }; |
| | | curItem.Items.Add(next); |
| | | } |
| | |
| | | /// <param name="parent"></param> |
| | | /// <returns></returns> |
| | | public List<MES_WIP_PKG> GetPackageList(WipPkgItem parent); |
| | | /// <summary> |
| | | /// 获取根据条码规则生成条码 |
| | | /// </summary> |
| | | /// <param name="ruleCode"></param> |
| | | /// <param name="curAction"></param> |
| | | /// <returns></returns> |
| | | public string GenerateSN(string ruleCode, IWorkAction curAction); |
| | | #endregion Functions |
| | | } |
| | | } |
| | |
| | | |
| | | namespace Tiger.Model |
| | | { |
| | | /// <summary> |
| | | /// 实体:包装数量明细 |
| | | /// </summary> |
| | | [Description("Primary:ID")] |
| | | [Serializable] |
| | | [SugarTable("BAS_PKG_DTL")] |
| | | public class BAS_PKG_DTL : DbEntityWithAuth |
| | | { |
| | | #region 构造函数 |
| | | /// <summary> |
| | | /// 实体:包装数量明细 |
| | | /// </summary> |
| | | public BAS_PKG_DTL() {} |
| | | #endregion |
| | | /// <summary> |
| | | /// 实体:包装数量明细 |
| | | /// </summary> |
| | | [Description("Primary:ID")] |
| | | [DisplayName("包装数量明细")] |
| | | [Serializable] |
| | | [SugarTable("BAS_PKG_DTL")] |
| | | public class BAS_PKG_DTL : DbEntityWithAuth |
| | | { |
| | | #region 构造函数 |
| | | /// <summary> |
| | | /// 实体:包装数量明细 |
| | | /// </summary> |
| | | public BAS_PKG_DTL() { } |
| | | #endregion |
| | | |
| | | #region 公共属性 |
| | | /// <summary> |
| | | /// 包装规则ID |
| | | /// </summary> |
| | | public string PKG_RULE_ID { get; set; } |
| | | /// <summary> |
| | | /// 包装/载具编码 |
| | | /// </summary> |
| | | public string PKG_CODE { get; set; } |
| | | /// <summary> |
| | | /// 包装层级 |
| | | /// </summary> |
| | | public int PKG_LEVEL { get; set; } |
| | | /// <summary> |
| | | /// 包装数量 |
| | | /// </summary> |
| | | public int PKG_QTY { get; set; } |
| | | #region 公共属性 |
| | | /// <summary> |
| | | /// 包装规则ID |
| | | /// </summary> |
| | | [DisplayName("包装规则ID")] |
| | | public string PKG_RULE_ID { get; set; } |
| | | /// <summary> |
| | | /// 包装/载具编码 |
| | | /// </summary> |
| | | [DisplayName("包装/载具编码")] |
| | | public string PKG_CODE { get; set; } |
| | | /// <summary> |
| | | /// 包装层级 |
| | | /// </summary> |
| | | [DisplayName("包装层级")] |
| | | public int PKG_LEVEL { get; set; } |
| | | /// <summary> |
| | | /// 包装数量 |
| | | /// </summary> |
| | | [DisplayName("包装数量")] |
| | | public int PKG_QTY { get; set; } |
| | | /// <summary> |
| | | /// 标签模板编码 |
| | | /// </summary> |
| | | [DisplayName("标签模板编码")] |
| | | public string LABEL_CODE { get; set; } |
| | | /// <summary> |
| | | /// 包装条码规则编码 |
| | | /// </summary> |
| | | [DisplayName("包装条码规则编码")] |
| | | public string SN_RULE { get; set; } |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | [DisplayName("备注")] |
| | | public string REMARK { get; set; } |
| | | #endregion |
| | | |
| | |
| | | public int PKG_LEVEL { get; set; } |
| | | public int PKG_QTY { get; set; } |
| | | public string LABEL_CODE { get; set; } |
| | | public string SN { get; set; } |
| | | public MES_WIP_PKG Package { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public List<WipPkgItem> Items { get; set; } = new List<WipPkgItem>(); |