新框架PDA后端(祈禧6月初版本)
南骏 池
4 天以前 fca0719af6948fe8fa1e4f094f8e7dba339c7428
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
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using SqlSugar;
 
namespace NewPdaSqlServer.service.Warehouse;
 
public class MesInvItemOutCDetailsManager : Repository<MesInvItemOutCDetails>
{
    //当前类已经继承了 Repository 增、删、查、改的方法
 
    //这里面写的代码不会给覆盖,如果要重新生成请删除 MesInvItemOutCDetailsManager.cs
 
 
    public MesInvItemOutCDetails GetOutList(WarehouseQuery query)
    {
        var mesInvItemBarcodes = Db.Queryable<MesInvItemBarcodes>()
            .Where(s => s.ItemBarcode == query.barcode).Count();
 
        if (mesInvItemBarcodes <= 0) throw new Exception("条码不存在");
 
        var mesInvItemOutCDetails = Db.Queryable<MesInvItemOutCDetails>()
            .Where(s => s.ItemBarcode == query.barcode && s.Receive == false)
            .Count();
 
 
        if (mesInvItemOutCDetails <= 0) throw new Exception("条码不符合接收条件,请检查!");
 
 
        var entity = Db
            .Queryable<MesInvItemOutCDetails, MesInvItemOuts, MesItems>(
                (a, b, c) =>
                    new JoinQueryInfos(JoinType.Left, a.ItemOutId == b.Guid,
                        JoinType.Left, a.ItemNo == c.ItemNo))
            .Where((a, b, c) => a.ItemBarcode == query.barcode)
            .Select((a, b, c) => new MesInvItemOutCDetails
            {
                PbillNo = b.ItemOutNo,
                WorkNo = a.WorkNo,
                ItemNo = a.ItemNo,
                ItemName = c.ItemName,
                Quantity = a.Quantity
            }).First();
 
        if (entity == null)
            throw new Exception("出库条码" + query.barcode + " 不存在,请确认!");
 
 
        return entity;
    }
 
 
    public MaterialReceipt GetFormList(WarehouseQuery query)
    {
        var mesInvItemBarcodes = Db.Queryable<MesInvItemBarcodes>()
            .Where(s => s.ItemBarcode == query.barcode).Count();
 
        if (mesInvItemBarcodes <= 0) throw new Exception("条码不存在");
 
        var mesInvItemOutCDetails = Db.Queryable<MesInvItemOutCDetails>()
            .Where(s => s.ItemBarcode == query.barcode).First();
 
        var entity = new MaterialReceipt
        {
            InvItemoutCDetails =
                GetMesInvItemOutCDetails(mesInvItemOutCDetails.PbillNo),
            ItemOuts = GetMesInvItemOuts(mesInvItemOutCDetails.PbillNo)
        };
 
        return entity;
    }
 
 
    public MesInvItemOutCDetails confirmReceipt(WarehouseQuery query)
    {
        if (string.IsNullOrWhiteSpace(query.barcode))
            throw new Exception("请扫出库条码!");
 
        if (string.IsNullOrWhiteSpace(query.billNo))
            throw new Exception("出库单据不能为空!");
 
 
        var barcodeInfo = GetBarcodeInfo(query.barcode);
 
 
        if (barcodeInfo.Receive.Value) throw new Exception("此条码已经接收,请检查!");
 
 
        UseTransaction(db =>
        {
            var count = db.Updateable<MesInvItemOutCDetails>()
                .SetColumns(s => s.Receive == true)
                .Where(s => s.ItemBarcode == barcodeInfo.ItemBarcode)
                .ExecuteCommand();
 
            return 1;
        });
 
        return barcodeInfo;
    }
 
 
    public List<MesInvItemOutCDetails> GetMesInvItemOutCDetails(string billno)
    {
        return Db.Queryable<MesInvItemOutCDetails>()
            .Where(s => s.PbillNo == billno).ToList();
    }
 
    public MesInvItemOuts GetMesInvItemOuts(string billno)
    {
        return Db.Queryable<MesInvItemOuts>()
            .Where(a => a.ItemOutNo == billno).Single();
    }
 
 
    private MesInvItemOutCDetails GetBarcodeInfo(string itemBarcode)
    {
        // Get barcode information
        return Db.Queryable<MesInvItemOutCDetails>()
            .First(b => b.ItemBarcode == itemBarcode);
    }
}