| | |
| | | using System.Data; |
| | | using System.Data.SqlClient; |
| | | using MES.Service.Modes; |
| | | using NewPdaSqlServer.DB; |
| | | using NewPdaSqlServer.Dto.service; |
| | | using NewPdaSqlServer.entity; |
| | |
| | | /// 调拨出入库管理类 |
| | | /// 负责处理调拨出库相关的业务逻辑 |
| | | /// </summary> |
| | | public class TransferOutManager : Repository<TransferOut> |
| | | public class TransferOutManager : Repository<MesDbck> |
| | | { |
| | | /// <summary> |
| | | /// 获取未完成的调拨出库单号列表 |
| | |
| | | public List<string> GetTransferOutNoList() |
| | | { |
| | | // 先从数据库获取Transfer_Out_ETAIL表的数据 |
| | | var transferOutDetails = Db.Queryable<TransferOutDetail>().ToList(); |
| | | var transferOutDetails = Db.Queryable<MesDbckDetail>().ToList(); |
| | | |
| | | // 使用LINQ对获取的数据进行分组和筛选 |
| | | // 筛选条件:申请数量(sq)不等于已扫数量(ys)的记录 |
| | |
| | | .Select(g => new |
| | | { |
| | | pid = g.Key, |
| | | sq = g.Sum(x => x.ShNum), // 申请数量合计 |
| | | ys = g.Sum(x => x.YsNum) // 已扫数量合计 |
| | | sq = g.Sum(x => x.FQty), // 申请数量合计 |
| | | ys = g.Sum(x => x.SQty), // 调出已扫数量合计 |
| | | rs = g.Sum(x => x.RQty), // 调入已扫数量合计 |
| | | }) |
| | | .Where(x => (x.sq ?? 0) != (x.ys ?? 0)) |
| | | .Where(x => !((x.sq ?? 0) == (x.ys ?? 0) && (x.sq ?? 0) == (x.rs ?? 0))) |
| | | .Select(x => x.pid) |
| | | .ToList(); |
| | | |
| | | // 根据pid查询对应的出库单号 |
| | | var billNos = Db.Queryable<TransferOut>() |
| | | .Where(x => result.Contains(x.Guid)) |
| | | .Select(x => x.BillNo) |
| | | var billNos = Db.Queryable<MesDbck>() |
| | | .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1) |
| | | .Select(x => x.FBillNo) |
| | | .ToList(); |
| | | |
| | | return billNos; |
| | |
| | | /// </summary> |
| | | /// <param name="query">查询参数,包含单据号</param> |
| | | /// <returns>待处理的调拨出库明细列表</returns> |
| | | public List<TransferOutDetail> GetTransferOutDetailListByBillNo( |
| | | public List<TransferOutDetailModel> GetTransferOutDetailListByBillNo( |
| | | WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.billNo; |
| | |
| | | // 根据SQL查询条件获取待处理的出库明细 |
| | | // 关联查询TransferOutDetail、TransferOut和MesItems三张表 |
| | | // 筛选条件:未完成数量大于0且单据已审核 |
| | | var result = Db.Queryable<TransferOutDetail, TransferOut, MesItems>( |
| | | var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( |
| | | (b, a, s) => new JoinQueryInfos( |
| | | JoinType.Left, b.Pid == a.Guid, |
| | | JoinType.Left, b.ItemId == s.Id)) |
| | | JoinType.Left, b.Pid == a.Id, |
| | | JoinType.Left, b.FMaterialId == s.Id.ToString())) |
| | | .Where((b, a, s) => |
| | | (b.ShNum ?? 0) - (b.YsNum ?? 0) > 0 // 未完成数量大于0 |
| | | && a.BillNo == p_bill_no // 匹配单据号 |
| | | && a.Status == 1) // 单据已审核 |
| | | !((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 TransferOutDetail |
| | | .Select((b, a, s) => new TransferOutDetailModel |
| | | { |
| | | ItemNo = s.ItemNo, |
| | | ItemName = s.ItemName, |
| | | ItemModel = s.ItemModel, |
| | | ShNum = b.ShNum, // 申请数量 |
| | | YsNum = b.YsNum, // 已扫数量 |
| | | FQty = b.FQty, // 申请数量 |
| | | SQty = b.SQty, // 已扫数量 |
| | | RQty = b.RQty, // 已扫数量 |
| | | // 保留其他必要字段... |
| | | Pid = b.Pid, |
| | | ItemId = b.ItemId, |
| | | Guid = b.Guid |
| | | Pid = b.Pid.ToString(), |
| | | FMaterialId = b.FMaterialId, |
| | | Id = b.Id.ToString() |
| | | }) |
| | | .ToList(); |
| | | |
| | | if(result.Count < 1) throw new Exception("该调拨单不存在或已扫完,请重新扫描"); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | public List<TransferOutDetailModel> GetDBCKDetal( |
| | | WarehouseQuery query) |
| | | { |
| | | 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) > 0 // 未完成数量大于0 |
| | | && a.FBillNo == p_bill_no // 匹配单据号 |
| | | && a.FApproveStatus == 1) // 单据已审核 |
| | | .OrderBy((b, a, s) => s.ItemNo) |
| | | .Select((b, a, s) => new TransferOutDetailModel |
| | | { |
| | | ItemNo = s.ItemNo, |
| | | ItemName = s.ItemName, |
| | | ItemModel = s.ItemModel, |
| | | FQty = b.FQty, // 申请数量 |
| | | SQty = b.SQty, // 已扫数量 |
| | | // 保留其他必要字段... |
| | | Pid = b.Pid.ToString(), |
| | | FMaterialId = b.FMaterialId, |
| | | Id = b.Id.ToString() |
| | | }) |
| | | .ToList(); |
| | | |
| | |
| | | /// </summary> |
| | | /// <param name="query">包含单据号、用户名和条码信息的查询参数</param> |
| | | /// <returns>处理后的表单和待处理明细列表</returns> |
| | | public (WarehouseQuery form, List<TransferOutDetail> items) |
| | | public (WarehouseQuery form, List<TransferOutDetailModel> items) |
| | | ScanMoveBarcode(WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.billNo; |
| | |
| | | if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("请选取单据号!"); |
| | | |
| | | // 查询出库单并验证状态 |
| | | var transferOut = Db.Queryable<TransferOut>() |
| | | .Where(x => x.BillNo == p_bill_no && x.Status == 1) |
| | | var transferOut = Db.Queryable<MesDbck>() |
| | | .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1) |
| | | .First(); |
| | | if (transferOut == null) throw new Exception("未找到调拨申请单或者调拨申请单没审核"); |
| | | |
| | |
| | | query.Fum = Convert.ToDecimal(splitNum); |
| | | |
| | | // 返回更新后的表单和待处理明细 |
| | | return (query, GetTransferOutDetailListByBillNo(query)); |
| | | return (query, GetDBCKDetal(query)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | /// </summary> |
| | | /// <param name="query">包含单据号、用户名和条码信息的查询参数</param> |
| | | /// <returns>处理后的表单和待处理明细列表</returns> |
| | | public (WarehouseQuery form, List<TransferOutDetail> items) |
| | | public (WarehouseQuery form, List<TransferOutDetailModel> items) |
| | | ScanReceiveBarcode(WarehouseQuery query) |
| | | { |
| | | var p_bill_no = query.billNo; |
| | |
| | | query.Fum = Convert.ToDecimal(splitNum); |
| | | |
| | | // 返回更新后的表单和待处理明细 |
| | | return (query, GetTransferOutDetailListByBillNo(query)); |
| | | return (query, GetDBCKDetal(query)); |
| | | } |
| | | catch (Exception ex) |
| | | { |