cdk
2 天以前 02b26bfaca24386f7b4f4a5e9f336812370ed49b
service/Warehouse/TransferOutManager.cs
@@ -19,34 +19,33 @@
    ///     获取未完成的调拨出库单号列表
    /// </summary>
    /// <returns>未完成的调拨出库单号列表</returns>
    public List<string> GetTransferOutNoList()
    public List<string> GetTransferOutNoList(WarehouseQuery query, dynamic RequestInfo)
    {
        // 先从数据库获取Transfer_Out_ETAIL表的数据
        var transferOutDetails = Db.Queryable<MesDbckDetail>().ToList();
        var orgId = RequestInfo.OrgId;
        // 使用LINQ对获取的数据进行分组和筛选
        // 筛选条件:申请数量(sq)不等于已扫数量(ys)的记录
        var result = transferOutDetails
            .GroupBy(x => x.Pid)
            .Select(g => new
            {
                pid = g.Key,
                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) && (x.sq ?? 0) == (x.rs ?? 0)))
            .Select(x => x.pid)
            .ToList();
        if (orgId == null)
            throw new Exception("组织不存在!");
        // 根据pid查询对应的出库单号
        var billNos = Db.Queryable<MesDbck>()
            .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1)
            .OrderBy(x => x.FCreateDate)
            .Select(x => x.FBillNo)
            .ToList();
        return billNos;
        // 获取未完成的退料单号列表
        var parameters = new[]
        {
        new SugarParameter("@pi_orgId", orgId),
        new SugarParameter("@inP1", null),
        new SugarParameter("@inP2", null),
        new SugarParameter("@inP3", null),
        new SugarParameter("@inP4", null)
        };
        try
        {
            // 返回单号字符串列表Get_Qt_ck_List
            var list = Db.Ado.SqlQuery<string>(
                "EXEC prc_pda_dbck_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
            return list;
        }
        catch (Exception ex)
        {
            throw new Exception($"{ex.Message}");
        }
    }
    /// <summary>
@@ -54,7 +53,61 @@
    /// </summary>
    /// <param name="query">查询参数,包含单据号</param>
    /// <returns>待处理的调拨出库明细列表</returns>
    public ProductionPickDto GetTransferOutDetailListByBillNo(
    public dynamic GetTransferOutDetailListByBillNo(WarehouseQuery query, dynamic RequestInfo)
    {
        if (string.IsNullOrEmpty(query.billNo))
            throw new Exception("请选单据号!");
        if (query == null)
            throw new ArgumentNullException(nameof(query), "参数对象不能为null");
        if (string.IsNullOrEmpty(query.billNo?.ToString()))
            throw new ArgumentException("单据号不能为空", nameof(query.billNo));
        var orgId = RequestInfo.OrgId;
        if (orgId == null)
            throw new Exception("组织不存在!");
        // 获取未完成的发货通知单明细
        var parameters = new[]
{
        new SugarParameter("@billNo", query.billNo),
        new SugarParameter("@pi_orgId",orgId),
        new SugarParameter("@inP1", null),
        new SugarParameter("@inP2", null),
        new SugarParameter("@inP3", null),
        new SugarParameter("@inP4", null)
    };
        try
        {
            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
                "EXEC prc_pda_dbck_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // 待扫物料
            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // 已扫物料
            return new
            {
                //tbBillList = result,
                blDetails = blDetails.Where(x => x.DSQty > 0).ToList(),
                ysDetails = blDetails.Where(x => x.SQty > 0).ToList(),
                Count = items.Count + ysitems.Count
            };
        }
        catch (Exception ex)
        {
            // 保留原有异常处理逻辑
            throw new Exception($"{ex.Message}");
        }
    }
    /// <summary>
    ///     根据单据号获取待处理的调拨出库明细列表
    /// </summary>
    /// <param name="query">查询参数,包含单据号</param>
    /// <returns>待处理的调拨出库明细列表</returns>
    public ProductionPickDto GetTransferInDetailListByBillNo(
        WarehouseQuery query)
    {
        if (string.IsNullOrEmpty(query.billNo)) throw new Exception("调拨单号为空");
@@ -65,7 +118,7 @@
        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 ,
        var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.RQty RQty,b.SQty - b.RQty DSQty ,
       dbo.F_QX_GETRECODEPOTSE(B.FMATERIALID,'','','') as RecoKw
    FROM MES_DBCK_DETAIL B
    LEFT JOIN MES_DBCK A ON A.ID = B.pid
@@ -78,7 +131,7 @@
        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
        var YS_list = womdabs.Where(s => s.RQty > 0).ToList();
        //var p_bill_no = query.billNo;
@@ -270,14 +323,15 @@
            .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("未找到调拨申请单或者调拨申请单没审核");
        //// 验证单据号
        //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>()
@@ -309,7 +363,7 @@
                        new("@outMsg", SqlDbType.NVarChar, 300),
                        new("@outSum", SqlDbType.NVarChar, 300),
                        new("@barcode_num", SqlDbType.NVarChar, 300),
                        new("@split_num", SqlDbType.NVarChar, 300),
                        new("@outBillNo", SqlDbType.NVarChar, 300),
                        new("@c_user", query.userName),
                        new("@p_bill_no", p_bill_no),
                        new("@p_item_barcode", p_item_barcode),
@@ -326,14 +380,15 @@
                    _intSum = parameters[1].Value.ToString();
                    var barcodeNum = parameters[2].Value.ToString();
                    var splitNum = parameters[3].Value.ToString();
                    var outBillNo = parameters[3].Value.ToString();
                    
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
                    query.itemNo = item.ItemNo;
                    query.Num = Convert.ToDecimal(barcodeNum);
                    query.Fum = Convert.ToDecimal(splitNum);
                    //query.Fum = Convert.ToDecimal(splitNum);
                    query.billNo = outBillNo;
                    // 返回更新后的表单和待处理明细
                    return (query, GetDBCKDetal(query));