| | |
| | | private List<BIZ_U9_ASN_SN> CurSn = new(); |
| | | List<string> SnList = new(); |
| | | private string rcvDocType = "RCV03"; //默认无单 |
| | | private string CurReqType = "0"; |
| | | private string CurReqType = "0"; |
| | | #endregion |
| | | |
| | | #region Functions |
| | |
| | | var _Sns = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(s => SqlFunc.StartsWith(s.UPDATE_USER, $"GenerateASN_{UserCode}")).Select(s => s.ORDER_NO)).ToList(); |
| | | CurSn.AddRange(_Sns); |
| | | OrderList = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.RECEIVER == $"{UserCode}_NoSource" && SqlFunc.Subqueryable<BIZ_U9_ASN>().Where(s => s.ORDER_NO == q.ORDER_NO && s.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()).Any()).Select(q => q.ORDER_NO).ToList(); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前所有单据信息 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | /// 获取当前所有单据信息 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async Task<ApiAction<List<BIZ_U9_ASN>>> GetOrderList() |
| | | { |
| | | var action = new ApiAction<List<BIZ_U9_ASN>>(); |
| | |
| | | action.Data.Data = CurOrder; |
| | | return action; |
| | | } |
| | | if (CurSn.Any(q=> q.ORDER_NO == AsnSn.ORDER_NO && q.LINE_NO == AsnSn.LINE_NO)) |
| | | if (CurSn.Any(q => q.ORDER_NO == AsnSn.ORDER_NO && q.LINE_NO == AsnSn.LINE_NO)) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"扫描的条码的ASN单[{AsnSn.ORDER_NO}]的行号[{AsnSn.LINE_NO}]已经存在,请先完成未完成的操作"); |
| | | return action; |
| | | } |
| | | if (!CurSn.Any(q=>q.SN == AsnSn.SN)) |
| | | if (!CurSn.Any(q => q.SN == AsnSn.SN)) |
| | | { |
| | | CurSn.Add(AsnSn); |
| | | } |
| | |
| | | { |
| | | var reqType = input.Options["reqType"].ToString(); |
| | | //如果类型不一样,则清除CurOrder |
| | | if (CurReqType != reqType) { |
| | | if (CurReqType != reqType) |
| | | { |
| | | CurOrder = null; |
| | | CurReqType = reqType; |
| | | } |
| | |
| | | { |
| | | CurOrder = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(s => SqlFunc.StartsWith(s.UPDATE_USER, $"GenerateASN_{UserCode}_Sample")).Select(s => s.ORDER_NO)).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); |
| | | } |
| | | CurOrder = CurOrder??new() { |
| | | ORDER_NO= $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}", |
| | | CurOrder = CurOrder ?? new() |
| | | { |
| | | ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}", |
| | | SUPP_CODE = dtl.SUPP_CODE, |
| | | DELIVERY_DATE = DateTime.Now, |
| | | PLANARRIVED_DATE = DateTime.Now, |
| | |
| | | return action; |
| | | } |
| | | //如果没有供应商名称,则从供应商表中获取 |
| | | if (CurOrder.SUPP_NAME.IsNullOrEmpty()) { |
| | | if (CurOrder.SUPP_NAME.IsNullOrEmpty()) |
| | | { |
| | | CurOrder.SUPP_NAME = MainDB.Queryable<BAS_SUPPLIER>().Where(q => q.SUPP_CODE == CurOrder.SUPP_CODE).First()?.SUPP_NAME_CN; |
| | | } |
| | | //if (!CurOrder.ORDER_NO.IsNullOrEmpty() && CurOrder.ORDER_NO.StartsWith("WASN") && CurOrder.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()) |
| | |
| | | // return action; |
| | | //} |
| | | |
| | | dtl.UPDATE_USER = CurReqType == "2" ? $"GenerateASN_{UserCode}_Sample": $"GenerateASN_{UserCode}"; |
| | | dtl.REMARK = CurReqType == "1"? CurSn.Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO).FirstOrDefault()?.SN: dtl.REMARK; |
| | | dtl.UPDATE_USER = CurReqType == "2" ? $"GenerateASN_{UserCode}_Sample" : $"GenerateASN_{UserCode}"; |
| | | dtl.REMARK = CurReqType == "1" ? CurSn.Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO).FirstOrDefault()?.SN : dtl.REMARK; |
| | | dtl.ORDER_NO = CurOrder.ORDER_NO; |
| | | BIZ_U9_ASN Asn = new() |
| | | { |
| | |
| | | if (reqType == "2") |
| | | { |
| | | db.Updateable<BIZ_U9_ASN_DTL>() |
| | | .SetColumns( it => it.LINE_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(q=>q.ORDER_NO == _dtl.ORDER_NO).Select(q => (SqlFunc.AggregateMax(SqlFunc.ToInt32(q.LINE_NO)) + 10).ToString())) |
| | | .Where(q=>q.ORDER_NO == _dtl.ORDER_NO && q.LINE_NO == _dtl.LINE_NO) |
| | | .SetColumns(it => it.LINE_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(q => q.ORDER_NO == _dtl.ORDER_NO).Select(q => (SqlFunc.AggregateMax(SqlFunc.ToInt32(q.LINE_NO)) + 10).ToString())) |
| | | .Where(q => q.ORDER_NO == _dtl.ORDER_NO && q.LINE_NO == _dtl.LINE_NO) |
| | | .ExecuteCommand(); |
| | | } |
| | | }); |
| | |
| | | var reqType = input.Options["reqType"].ToString(); |
| | | var dtl = input.Options["record"].ToString().JsonToObject<BIZ_U9_ASN_DTL>(); |
| | | action.LocaleMsg = Biz.L($"成功提交ASN单[{dtl.ORDER_NO}]行数据,请点击打印按钮打印标签"); |
| | | |
| | | if (snlist.Count == 0) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"数据不存在!"); |
| | | return action; |
| | | } |
| | | if (CurOrder.IsNullOrEmpty()) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = Biz.L($"数据不存在!"); |
| | | return action; |
| | | } |
| | | var asnSn = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO && (q.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).ToList(); |
| | | if (asnSn.Count>0 && asnSn.Sum(q => q.QTY) == dtl.QTY) |
| | | if (asnSn.Count > 0 && asnSn.Sum(q => q.QTY) == dtl.QTY) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = dtl.ORDER_NO.IsNullOrEmpty() ? Biz.L($"数据不存在!") : Biz.L($"ASN单[{dtl.ORDER_NO}]行[{dtl.LINE_NO}]数据已全部提交完成,如果未打印标签请点击打印按钮打印标签"); |
| | | SnList.AddRange(asnSn.Select(q=>q.SN)); |
| | | SnList.AddRange(asnSn.Select(q => q.SN)); |
| | | return action; |
| | | } |
| | | List<BIZ_U9_ASN_SN> sns = new(); |
| | |
| | | foreach (var sn in snlist) |
| | | { |
| | | var strs = sn.SN.Split('/'); |
| | | var metaSn = reqType == "2" ? $"{DI.Resolve<ICodeRuleCache>()["SampleBarcode"]?.Generate(strs[0],"/", strs[1], "/").Data.ToString() ?? ""}" : DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; |
| | | var metaSn = reqType == "2" ? $"{DI.Resolve<ICodeRuleCache>()["SampleBarcode"]?.Generate(strs[0], "/", strs[1], "/").Data.ToString() ?? ""}" : DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; |
| | | SnList.Add(metaSn); |
| | | var barcode = new Barcode(metaSn); |
| | | BIZ_U9_ASN_SN info = new() |
| | |
| | | //使用统一的事务DB对象 |
| | | var db = GetCommitDB(); |
| | | //数据保存逻辑 |
| | | db.Updateable<BIZ_U9_ASN>(UserCode).SetColumns(q => q.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()).Where(q => q.ORDER_NO == dtl.ORDER_NO).ExecuteCommand(); |
| | | db.Updateable<BIZ_U9_ASN>(UserCode).SetColumns(q => new BIZ_U9_ASN() { STATUS = BIZ_U9_ASN.STATUSs.Counting.GetValue(), COMMIT_JSON = $"{reqType}" }).Where(q => q.ORDER_NO == dtl.ORDER_NO).ExecuteCommand(); |
| | | db.Storageable(sns, UserCode).ExecuteCommand(); |
| | | if (reqType == "2") |
| | | { |
| | | db.Updateable<BIZ_U9_ASN_SN>() |
| | | .SetColumns(q => q.LINE_NO == SqlFunc.Subqueryable<BIZ_U9_ASN_DTL>().Where(t1 => t1.ID == dtl.ID).Select(t1 => t1.LINE_NO)) |
| | | .Where(q=>sns.Select(s=>s.ID).Contains(q.ID)) |
| | | .Where(q => sns.Select(s => s.ID).Contains(q.ID)) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | |
| | | public async Task<ApiAction> GenerateReceipt(BaseInput input) |
| | | { |
| | | var action = new ApiAction(); |
| | | var orderNo = CurOrder.ORDER_NO; |
| | | var orderNo = input.Data.ToString(); //CurOrder.ORDER_NO; |
| | | try |
| | | { |
| | | var reqType = input.Options["reqType"].ToString(); |
| | | var order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == orderNo).Includes(q => q.Details, d => d._ItemInfos, e=> e.ExtInfo).IncludesAllFirstLayer().FirstAsync(); |
| | | var order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == orderNo).Includes(q => q.Details, d => d._ItemInfos, e => e.ExtInfo).IncludesAllFirstLayer().FirstAsync(); |
| | | if (order.IsNullOrEmpty()) |
| | | { |
| | | action.IsSuccessed = false; |
| | |
| | | //如果是随单赠品或者样品 |
| | | if (reqType.ToInt32() > 0) |
| | | { |
| | | rcvDocType = reqType == "2" ? "RCV03" : "RCV01"; |
| | | var iInput = new CreateReceivementInput |
| | | { |
| | | userId = UserCode, |
| | |
| | | Supplier = new() { m_code = order.SUPP_CODE }, |
| | | BusinessDate = DateTime.Now, |
| | | RcvDocType = new() { m_code = rcvDocType }, |
| | | RcvLines = finishNotSubmit.Select(q=> new RcvLine |
| | | RcvLines = finishNotSubmit.Select(q => new RcvLine |
| | | { |
| | | ItemInfo = new() { m_itemCode = q.ITEM_CODE}, |
| | | ItemInfo = new() { m_itemCode = q.ITEM_CODE }, |
| | | Wh = new() { m_code = "10101" }, |
| | | RcvLineLocations = new(){ |
| | | RcvLineLocations = new(){ |
| | | new(){ |
| | | Location = new(){ m_code= q.ItemInfo.DEFAULT_LOCATION??""}, |
| | | LocationQtyTU = q.QTY, |
| | |
| | | EyeballingQtyTU = q.QTY, |
| | | RcvProcedure = q.ItemInfo.ExtInfo.ReceiptMode, |
| | | RcvLotCode = q.SUPP_LOTNO, |
| | | InvLotCode = q.LOTNO, |
| | | InvLotCode = q.LOTNO, |
| | | }).ToList(), |
| | | } |
| | | }, |
| | |
| | | { |
| | | ASNLineKey = q.ID, |
| | | TransQty = new() { m_amount1 = q.QTY }, |
| | | BinInfoList = new() { new() { Bin = new() { m_code = q.ItemInfo.DEFAULT_LOCATION }, LocationQtySU = q.QTY, LocationQtyTU = q.QTY } }, |
| | | BinInfoList = new() { new() { Bin = new() { m_code = q.ItemInfo?.DEFAULT_LOCATION ?? "" }, LocationQtySU = q.QTY, LocationQtyTU = q.QTY } }, |
| | | }).ToList(), |
| | | } |
| | | }; |
| | |
| | | |
| | | foreach (var item in list) |
| | | { |
| | | var asnDtl = finishNotSubmit.First(q => q.ID == item.SrcASNDocLineId.ToString()); |
| | | var asnDtl = finishNotSubmit.First(q => q.ID == item.SrcASNDocLineId.ToString() || (item.SrcASNDocLineId.ToString()=="0" && q.ITEM_CODE == item.ItemCode && q.QTY==item.RcvQtyTU)); |
| | | BIZ_U9_RECEIPT_DTL receiptDt = new() |
| | | { |
| | | ID = item.RcvLineId.ToString(), |