Tjiny
2025-05-29 d471478f1b3373a9001ab9ebc4eb7f52384a4ec3
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
using System;
using HH.WCS.Mobox3.RiDong.dto;
using HH.WCS.Mobox3.RiDong.generalMethod;
using HH.WCS.Mobox3.RiDong.models;
using HH.WCS.Mobox3.RiDong.util;
 
namespace HH.WCS.Mobox3.RiDong.wms;
 
/// <summary>
/// 容器帮助类
/// </summary>
internal static class ContainerHelper
{
    /// <summary>
    /// enable 让托盘允许被出库计算到,同时增加量表数据
    /// </summary>
    /// <param name="cntr"></param>
    /// <param name="loc"></param>
    internal static void Enable(string cntr, string loc)
    {
        var db = new SqlHelper<object>().GetInstance();
 
        var cntrInfo = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First();
 
        //获取仓库量表
        //获取物理库区
        //获取逻辑库区
        if (cntrInfo != null)
        {
            var querySqlSugarClient = AdoSqlMethod<object>.QuerySqlSugarClient();
 
            try
            {
                querySqlSugarClient.BeginTran();
 
                //防止接口重复调用,量表重复增加
                if (cntrInfo.C_ENABLE == 'N')
                {
                    cntrInfo.C_ENABLE = 'Y';
                    AdoSqlMethod<Container>.UpdateFirstTran(querySqlSugarClient, cntrInfo,
                        p => new { p.C_ENABLE, p.T_MODIFY });
 
                    var cirList = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == cntr).ToList();
 
                    if (cirList.Count > 0)
                    {
                        var moBoxInputDto = new MoBoxInputDto();
                        moBoxInputDto.op_type = 5;
 
                        var moBoxInputDto2 = new MoBoxInputDto();
                        moBoxInputDto2.op_type = 6;
 
                        cirList.ForEach(a =>
                        {
                            var moBoxInputDetailDto = new MoBoxInputDetailDto();
                            var moBoxInputDetailDto2 = new MoBoxInputDetailDto();
 
                            moBoxInputDetailDto.item_code = a.S_ITEM_CODE;
                            moBoxInputDetailDto.item_name = a.S_ITEM_NAME;
                            moBoxInputDetailDto.qty = Convert.ToInt32(a.F_QTY);
                            moBoxInputDetailDto.wh_code = Settings.WHCode;
                            moBoxInputDetailDto.area_code = Settings.AreaCode;
 
                            moBoxInputDetailDto2.item_code = a.S_ITEM_CODE;
                            moBoxInputDetailDto2.item_name = a.S_ITEM_NAME;
                            moBoxInputDetailDto2.qty = Convert.ToInt32(a.F_QTY);
                            moBoxInputDetailDto2.area_code = Settings.AreaCode;
                            moBoxInputDetailDto2.wh_code = Settings.WHCode;
 
                            moBoxInputDto.item_info.Add(moBoxInputDetailDto);
                            moBoxInputDto2.item_info.Add(moBoxInputDetailDto2);
                        });
 
                        // 调用第三方接口
                        ThirdlyPortMethod.CallMoboxWMSAddChange("/api/wms/inventory/AddChange", moBoxInputDto);
 
                        ThirdlyPortMethod.CallMoboxWMSAddChange("/api/wms/inventory/AddChange", moBoxInputDto2);
 
                    }
                }
                querySqlSugarClient.CommitTran();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                querySqlSugarClient.RollbackTran();
            }
        }
    }
 
    /// <summary>
    /// 根据容器号获取容器信息
    /// </summary>
    /// <param name="cntr"></param>
    /// <param name="type"></param>
    /// <returns></returns>
    internal static Container GetCntr(string cntr, string type)
    {
        // 查询托盘是否存在
        var container = AdoSqlMethod<Container>.QueryFirst(p => p.S_CODE == cntr);
 
        // 判断容器是否存在
        if (container == null)
        {
            var model = new Container { S_CODE = cntr, S_TYPE = type };
 
            // 判断是否创建成功
            if (AdoSqlMethod<Container>.AddFirst(model))
            {
                container = model;
                LogHelper.Info($"根据托盘号:{cntr},查询容器表中数据,未查询到数据,新键容器数据为:【容器编号:{cntr},容器类型:{type}】,时间点:{DateTime.Now}",
                    "入库流程日志");
            }
        }
        else
        {
            LogHelper.Info(
                $"根据托盘号:{cntr},查询容器表中数据,查询到的数据为:【容器编码:{container.S_CODE},容器状态('Y'- 可用,'N'- 不可用):{container.C_ENABLE}," +
                $"容器数量:{container.N_DETAIL_COUNT}】,容器的锁状态1(0 - 无锁,1 - 入库锁,2 - 出库锁,3 - 其他锁):{container.N_LOCK_STATE}," +
                $"容器的锁状态2:{container.S_LOCK_STATE}】,时间点:{DateTime.Now}", "入库流程日志");
        }
 
        // 返回托盘(容器)信息
        return container;
    }
}