wbc
2025-05-28 b9349673f1610970530db34ed8ed9b26e8e1e239
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
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using SqlSugar;
 
namespace MES.Service.service;
 
public class WomdaaManager : Repository<Womdaa>
{
    //当前类已经继承了 Repository 增、删、查、改的方法
    //这里面写的代码不会给覆盖,如果要重新生成请删除 WomdaaManager.cs
 
    //获取工单号
    public List<string> GetProductionPickDaa001(WarehouseQuery query)
    {
        string sql =
            "SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID                     FROM WOMDAB                    WHERE DAB006 > DAB007                   GROUP BY PID) B ON A.ID = B.PID WHERE DAA001 LIKE '%" +
            query.daa001 +
            "%' and DAA018 != '完工' AND DAA022 = 1 AND UN_NUM > 0 AND ROWNUM <= 10 order by a.id desc";
 
        return Db.Ado.SqlQuery<string>(sql);
    }
 
    //根据工单号返回产品型号和待领物料
    public ProductionPickDto GetItemsByDaa001(WarehouseQuery query)
    {
        if (string.IsNullOrEmpty(query.daa001))
        {
            throw new Exception("工单号为空");
        }
 
        var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) =>
                new JoinQueryInfos(JoinType.Left,
                    a.Daa002 == i.ItemId.ToString()))
            .Where((a, i) => a.Daa001 == query.daa001)
            .Select((a, i) => new
            {
                i.ItemModel
            }).First();
 
        if (womdaa?.ItemModel == null)
        {
            throw new Exception("工单号不存在");
        }
 
        var dto = new ProductionPickDto
        {
            ItemModel = womdaa.ItemModel
        };
 
        var womdabs = Db.Queryable<Womdaa, Womdab, MesItems>((a, b, c) =>
                new JoinQueryInfos(
                    JoinType.Left,
                    a.Id == b.Pid, // LEFT JOIN WOMDAB B ON A.ID = B.PID
                    JoinType.Inner,
                    c.Id.ToString() ==
                    b.Dab003 // INNER JOIN MES_ITEMS C ON C.ID = B.DAB003
                ))
            .Where((a, b, c) =>
                a.Daa001 == query.daa001) // WHERE DAA001 = 'SCDD003681-1'
            .Select((a, b, c) => new Womdab()
            {
                Pid = b.Pid,
                Dab003 = b.Dab003,
                Dab006 = b.Dab006,
                Dab007 = b.Dab007,
                wNum = b.Dab006 - b.Dab007, // 计算字段 W_NUM
                ItemName = c.ItemName, // 动态字段 ITEM_NAME
                ItemNo = c.ItemNo // 动态字段 ITEM_NO
            })
            .ToList();
 
        dto.Womdabs = womdabs;
        return dto;
    }
}