南骏 池
8 天以前 1d976f52878c9f776146502037377310921e5a21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
using Masuit.Tools;
using MES.Service.Modes;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.entity.Base;
using NewPdaSqlServer.util;
using OracleInternal.Sharding;
using SqlSugar;
using SqlSugar.Extensions;
using System.Data;
using System.Data.SqlClient;
 
namespace NewPdaSqlServer.service.Warehouse;
 
public class MesXsthManager : Repository<MesItemBl>
{
    /// <summary>
    ///     获取销售退货申请列表
    /// </summary>
    /// <returns>销售退货申请列表</returns>
    public dynamic GetXsthBillNo(WarehouseQuery query,dynamic RequestInfo)
    {
        var orgId = RequestInfo.OrgId;
 
        if (orgId == null)
            throw new Exception("组织不存在!");
 
        // 获取未完成的退料单号列表
        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
        {
            // 返回单号字符串列表
            var blDetails = Db.Ado.SqlQuery<string>(
                "EXEC prc_pda_xsth_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
            return blDetails;
        }
        catch (Exception ex)
        {
            throw new Exception($"{ex.Message}");
        }
    }
 
    /// <summary>
    ///     根据单号获取MES物料表明细
    /// </summary>
    /// <param name="query">仓库查询参数</param>
    /// <returns>物料明细列表</returns>
    public dynamic GetMesItemDetailByBillNo(dynamic 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_xsth_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
            {
                items = items,
                ysitems = ysitems,
                Count = items.Count + ysitems.Count
            };
        }
        catch (Exception ex)
        {
            // 保留原有异常处理逻辑
            throw new Exception($"{ex.Message}");
        }
    }
 
    /// <summary>
    /// 销售退货入库
    /// </summary>
    /// <param name="unity"></param>
    /// <returns></returns>
    /// <exception cref="Exception"></exception>
    public string XsthScanBarcode(WarehouseQuery unity)
    {
        var _strMsg = "";
        var _intSum = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            if (unity.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
            if (unity.sectionCode.IsNullOrEmpty()) throw new Exception("库位编号不允许为空");
            if (unity.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
            if (unity.billNo.IsNullOrEmpty()) throw new Exception("申请单号不允许为空");
 
            using (var cmd = new SqlCommand("[prc_pda_inv_xsth]", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@po_outMsg", SqlDbType.NVarChar, 300),
                        new("@po_outSum", SqlDbType.NVarChar, 300),
                        //new("@po_womInBarSum", SqlDbType.NVarChar, 300),
                        new("@pi_user", unity.userName),
                        new("@pi_barcode", unity.barcode),
                        new("@pi_sectionCode", unity.sectionCode),
                        new("@pi_billno", unity.billNo),
 
                    };
                    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();
 
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
 
                    return _strMsg;
 
                    //return 0;
 
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
}