| | |
| | | // 根据pid查询对应的出库单号 |
| | | var billNos = Db.Queryable<MesDbck>() |
| | | .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1) |
| | | .OrderBy(x => x.FCreateDate) |
| | | .Select(x => x.FBillNo) |
| | | .ToList(); |
| | | |
| | |
| | | /// </summary> |
| | | /// <param name="query">查询参数,包含单据号</param> |
| | | /// <returns>待处理的调拨出库明细列表</returns> |
| | | public List<ItemDetailModel> GetTransferOutDetailListByBillNo( |
| | | public ProductionPickDto GetTransferOutDetailListByBillNo( |
| | | WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.billNo; |
| | | if (string.IsNullOrEmpty(query.billNo)) throw new Exception("调拨单号为空"); |
| | | |
| | | // 根据SQL查询条件获取待处理的出库明细 |
| | | // 关联查询TransferOutDetail、TransferOut和MesItems三张表 |
| | | // 筛选条件:未完成数量大于0且单据已审核 |
| | | var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( |
| | | (b, a, s) => new JoinQueryInfos( |
| | | JoinType.Left, b.Pid == a.Id, |
| | | JoinType.Left, b.FMaterialId == s.Id.ToString())) |
| | | .Where((b, a, s) => |
| | | !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) |
| | | && a.FBillNo == p_bill_no // 匹配单据号 |
| | | && a.FApproveStatus == 1) // 单据已审核 |
| | | .OrderBy((b, a, s) => s.ItemNo) |
| | | .Select((b, a, s) => new ItemDetailModel |
| | | { |
| | | ItemNo = s.ItemNo, |
| | | ItemName = s.ItemName, |
| | | ItemModel = s.ItemModel, |
| | | FQty = b.FQty, // 申请数量 |
| | | SQty = b.SQty, // 已扫数量 |
| | | RQty = b.RQty, // 已扫数量 |
| | | // 保留其他必要字段... |
| | | Pid = b.Pid.ToString(), |
| | | FMaterialId = b.FMaterialId, |
| | | Id = b.Id.ToString() |
| | | }) |
| | | .ToList(); |
| | | var sql1 = string.Format(@"SELECT * FROM MES_DBCK WHERE FDocumentStatus = 'C' AND FBillNo = '{0}'", query.billNo); |
| | | |
| | | if(result.Count < 1) throw new Exception("该调拨单不存在或已扫完,请重新扫描"); |
| | | var dbck = Db.Ado.SqlQuery<ItemDetailModel>(sql1); |
| | | |
| | | return result; |
| | | if (dbck.Count < 1) throw new Exception("调拨单号不存在或未审核!"); |
| | | |
| | | var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.FQty - b.SQty DSQty , |
| | | dbo.F_QX_GETRECODEPOTSE(B.FMATERIALID,'','','') as RecoKw |
| | | FROM MES_DBCK_DETAIL B |
| | | LEFT JOIN MES_DBCK A ON A.ID = B.pid |
| | | LEFT JOIN MES_ITEMS C ON B.FMATERIALID = C.item_id |
| | | LEFT JOIN WOMCAB D ON B.erpid = D.ERPID |
| | | WHERE A.FBillNo = '{0}' ORDER BY FSEQ", query.billNo); |
| | | |
| | | var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql2); |
| | | |
| | | |
| | | var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); |
| | | |
| | | var YS_list = womdabs.Where(s => s.SQty > 0).ToList(); |
| | | |
| | | //var p_bill_no = query.billNo; |
| | | |
| | | //// 根据SQL查询条件获取待处理的出库明细 |
| | | //// 关联查询TransferOutDetail、TransferOut和MesItems三张表 |
| | | //// 筛选条件:未完成数量大于0且单据已审核 |
| | | //var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( |
| | | // (b, a, s) => new JoinQueryInfos( |
| | | // JoinType.Left, b.Pid == a.Id, |
| | | // JoinType.Left, b.FMaterialId == s.Id.ToString())) |
| | | // .Where((b, a, s) => |
| | | // !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) |
| | | // && a.FBillNo == p_bill_no // 匹配单据号 |
| | | // && a.FApproveStatus == 1) // 单据已审核 |
| | | // .OrderBy((b, a, s) => s.ItemNo) |
| | | // .Select((b, a, s) => new ItemDetailModel |
| | | // { |
| | | // ItemNo = s.ItemNo, |
| | | // ItemName = s.ItemName, |
| | | // ItemModel = s.ItemModel, |
| | | // FQty = b.FQty, // 申请数量 |
| | | // SQty = b.SQty, // 已扫数量 |
| | | // RQty = b.RQty, // 已扫数量 |
| | | // // 保留其他必要字段... |
| | | // Pid = b.Pid.ToString(), |
| | | // FMaterialId = b.FMaterialId, |
| | | // Id = b.Id.ToString() |
| | | // }) |
| | | // .ToList(); |
| | | |
| | | //if(result.Count < 1) throw new Exception("该调拨单不存在或已扫完,请重新扫描"); |
| | | |
| | | var dto = new ProductionPickDto |
| | | { |
| | | items = DS_list, |
| | | Ysitems = YS_list |
| | | // yisao = mesInvItemOutCDetailsList |
| | | }; |
| | | |
| | | return dto; |
| | | } |
| | | |
| | | public List<ItemDetailModel> GetDBCKDetal( |
| | |
| | | /// </summary> |
| | | /// <param name="query">包含单据号、用户名和条码信息的查询参数</param> |
| | | /// <returns>处理后的表单和待处理明细列表</returns> |
| | | public (WarehouseQuery form, List<ItemDetailModel> items) |
| | | public ProductionPickDto |
| | | ScanMoveBarcode(WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.billNo; |
| | |
| | | // 查询条码库存信息并验证 |
| | | var stock = Db.Queryable<MesInvItemStocks>() |
| | | .Where(x => x.ItemBarcode == p_item_barcode |
| | | && x.Quantity > 0 |
| | | && !string.IsNullOrEmpty(x.DepotsCode)) |
| | | && x.Quantity > 0) |
| | | .First(); |
| | | if (stock == null) throw new Exception($"库存中无此条码,请核对!{p_item_barcode}"); |
| | | |
| | |
| | | query.Fum = Convert.ToDecimal(splitNum); |
| | | |
| | | // 返回更新后的表单和待处理明细 |
| | | return (query, GetDBCKDetal(query)); |
| | | //return (query, GetDBCKDetal(query)); |
| | | var dto = new ProductionPickDto |
| | | { |
| | | itemNo = item.ItemNo, |
| | | barcodeNum = barcodeNum, |
| | | splitNum = splitNum, |
| | | barcode = query.barcode, |
| | | strMsg = _strMsg, |
| | | result = _intSum |
| | | }; |
| | | |
| | | return dto; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | //调拨出库拆分 prc_pda_DBCK_CF |
| | | public string SplitBarcode(WarehouseQuery query) |
| | | public ProductionPickDto ScanCodeCF(WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.daa001; |
| | | var p_item_barcode = query.barcode; |
| | | |
| | | var barinfo = Db.Queryable<MesInvItemStocks>() |
| | | .Where(x => x.ItemBarcode == p_item_barcode) |
| | | .First(); |
| | | |
| | | // 验证单据号 |
| | | if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("请选取单据号!"); |
| | | |
| | | // 查询出库单并验证状态 |
| | | var transferOut = Db.Queryable<MesDbck>() |
| | | .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1) |
| | | .First(); |
| | | if (transferOut == null) throw new Exception("未找到调拨申请单或者调拨申请单没审核"); |
| | | |
| | | // 查询条码库存信息并验证 |
| | | var stock = Db.Queryable<MesDbckDetail>() |
| | | .Where(x => x.FMaterialId == barinfo.ItemId.ToString() |
| | | && x.FQty > 0 |
| | | && !string.IsNullOrEmpty(x.FStockInId) |
| | | && !string.IsNullOrEmpty(x.FOwnerInId)) |
| | | .First(); |
| | | if (stock == null) throw new Exception($"调拨明细中 【物料】或 【调入仓库】或【调入货主】信息不存在,请核对!{p_item_barcode}"); |
| | | |
| | | // 查询物料信息 |
| | | var item = Db.Queryable<MesItems>() |
| | | .Where(x => x.Id.ToString() == stock.FMaterialId) |
| | | .First(); |
| | | if (item == null) throw new Exception("未找到物料"); |
| | | |
| | | var _strMsg = ""; |
| | | var _intSum = ""; |
| | | var _cfBar = ""; |
| | | using (var conn = new SqlConnection(DbHelperSQL.strConn)) |
| | | { |
| | | using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn)) |
| | | using (var cmd = new SqlCommand("[prc_pda_DBCK_CF]", conn)) |
| | | { |
| | | try |
| | | { |
| | |
| | | cmd.CommandType = CommandType.StoredProcedure; |
| | | SqlParameter[] parameters = |
| | | { |
| | | new("@outMsg", SqlDbType.NVarChar, 300), |
| | | new("@outMsg", SqlDbType.NVarChar, 2000), |
| | | new("@outSum", SqlDbType.NVarChar, 300), |
| | | new("@c_user", query.userName), |
| | | new("@p_bill_no", query.billNo), |
| | | new("@outCfBar", SqlDbType.NVarChar, 300), |
| | | new("@c_User", query.userName), |
| | | new("@p_biLL_no", query.daa001), |
| | | new("@p_item_barcode", query.barcode), |
| | | new("@NUM", query.Fum), |
| | | new("@num", query.Num) |
| | | }; |
| | | |
| | | parameters[0].Direction = ParameterDirection.Output; |
| | | parameters[1].Direction = ParameterDirection.Output; |
| | | |
| | | parameters[2].Direction = ParameterDirection.Output; |
| | | foreach (var parameter in parameters) |
| | | cmd.Parameters.Add(parameter); |
| | | cmd.ExecuteNonQuery(); |
| | | _strMsg = parameters[0].Value.ToString(); |
| | | _intSum = parameters[1].Value.ToString(); |
| | | |
| | | _cfBar = parameters[2].Value.ToString(); |
| | | |
| | | |
| | | var result = Convert.ToInt32(_intSum); |
| | | if (result <= 0) throw new Exception(_strMsg); |
| | | |
| | | return _strMsg; |
| | | |
| | | var dto = new ProductionPickDto |
| | | { |
| | | daa001 = query.daa001, |
| | | barcode = query.barcode,//原条码 |
| | | cfBarcode = _cfBar//拆分后条码 |
| | | }; |
| | | |
| | | return dto; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |