啊鑫
2025-01-08 ff6a0b066a84dee4ba1b11512f6f34896a3c7dc7
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
using System.Data;
using System.Data.SqlClient;
using Masuit.Tools;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using SqlSugar;
 
namespace NewPdaSqlServer.service.Warehouse;
 
public class MesCgthSqManager : Repository<MesCgthSq>
{
    public List<MesCgthSq> GetMesCgthSq()
    {
        return Db.Queryable<MesCgthSq>()
            .Where(s => s.Status == true)
            .ToList();
    }
 
    public OutItemDto GetSumItem(WarehouseQuery query)
    {
        var mesInvItemOuts = base.GetSingle(it => it.BillNo == query.billNo);
        if (mesInvItemOuts == null) throw new Exception("采购退货申请单不存在");
 
        var dto = new OutItemDto();
        dto.SumItem = GetItems(query);
 
        var mesInvItemStocks = Db.Queryable<MesInvItemStocks>()
            .Where(a => a.ItemBarcode == query.barcode).Single();
 
        if (mesInvItemStocks == null) return dto;
 
        var mesItems = Db.Queryable<MesItems>()
            .Where(s => s.Id == mesInvItemStocks.ItemId).Single();
 
        dto.ItemNo = mesItems.ItemNo;
        dto.Quantity = mesInvItemStocks.Quantity;
 
        return dto;
    }
 
    public List<MesCgthSqDetail> GetItems(WarehouseQuery query)
    {
        // 尝试将query.id转换为Guid类型,如果转换失败,则抛出异常
        var parsedGuid = Guid.Empty;
        if (string.IsNullOrEmpty(query.id))
            return new List<MesCgthSqDetail>(); // 如果query.id为空,则返回空列表
 
        var isValid = Guid.TryParse(query.id, out parsedGuid);
        if (!isValid)
            throw new ApplicationException("GUID转换错误"); // 如果转换失败,则抛出异常
 
        // 使用SqlSugar框架查询MesInvItemOutItems和MesItems表,根据ItemId进行内连接
        var mesInvItemOutItemsList = Db.Queryable<MesCgthSqDetail, MesItems>(
                (c, s) => new object[]
                {
                    JoinType.Inner, c.ItemId == s.Id // 内连接条件
                }).Where((c, s) => c.Mid == parsedGuid) // 根据ItemOutId过滤
            .Select<MesCgthSqDetail>((c, s) =>
                new MesCgthSqDetail // 选择并映射到MesInvItemOutItems对象
                {
                    Id = c.Id,
                    Mid = c.Mid,
                    InvBillNo = c.InvBillNo,
                    InvWorkLine = c.InvWorkLine,
                    Ebeln = c.Ebeln,
                    Eid = c.Eid,
                    Erpid = c.Erpid,
                    SqNum = c.SqNum,
                    YsNum = c.YsNum,
                    RkmxGuid = c.RkmxGuid,
                    Remark = c.Remark,
                    ItemNo = s.ItemNo, // 从MesItems表中获取ItemNo
                    ItemName = s.ItemName, // 从MesItems表中获取ItemName
                    ItemModel = s.ItemModel, // 从MesItems表中获取ItemModel
                    ItemId = c.ItemId
                }).ToList(); // 将查询结果转换为列表 
 
        return mesInvItemOutItemsList; // 返回处理后的列表
    }
 
    public ProductionPickDto ScanCode(WarehouseQuery query)
    {
        var _strMsg = "";
        var _intSum = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
            if (query.billNo.IsNullOrEmpty()) throw new Exception("领料单号不允许为空");
            if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
 
            using (var cmd = new SqlCommand("[prc_pda_CGTH]", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@outMsg", SqlDbType.NVarChar, 300),
                        new("@outSum", SqlDbType.NVarChar, 300),
                        new("@barcode_num", SqlDbType.NVarChar, 300),
                        new("@split_num", SqlDbType.NVarChar, 300),
                        new("@c_User", query.userName),
                        new("@p_biLL_no", query.billNo),
                        new("@p_item_barcode", query.barcode)
                    };
                    parameters[0].Direction = ParameterDirection.Output;
                    parameters[1].Direction = ParameterDirection.Output;
                    parameters[2].Direction = ParameterDirection.Output;
                    parameters[3].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 barcodeNum = parameters[2].Value.ToString();
                    var splitNum = parameters[3].Value.ToString();
 
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
 
                    var dto = new ProductionPickDto
                    {
                        daa001 = query.daa001,
                        barcodeNum = barcodeNum,
                        splitNum = splitNum,
                        barcode = query.barcode
                    };
 
                    return dto;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
}