kazelee
2025-05-09 24180a4a19e29ad39ccf61f4b31f03d0f594c99c
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
using System.Web.Http;
 
using HH.WCS.Mobox3.DSZSH.Consts;
using HH.WCS.Mobox3.DSZSH.Helpers;
using HH.WCS.Mobox3.DSZSH.Models;
using HH.WCS.Mobox3.DSZSH.Services;
 
using Newtonsoft.Json;
 
using static HH.WCS.Mobox3.DSZSH.Dtos.Request.MoboxRequest;
using static HH.WCS.Mobox3.DSZSH.Dtos.Response.MoboxResponse;
using static HH.WCS.Mobox3.DSZSH.Helpers.ResultHelper;
 
namespace HH.WCS.Mobox3.DSZSH.Controllers {
    /// <summary>
    /// Mobox3 调用,脚本中调用(包括 PDA 的接口)
    /// </summary>
    [RoutePrefix("api")]
    public class MoboxController : ApiController {
 
        #region PDA 接口
        /// <summary>
        /// 好运箱-满托下线入库(PDA)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("GoodpackOffline")]
        public SimpleResult GoodpackOffline(GoodpackOfflineInfo model) {
            LogHelper.InfoApi("好运箱-满托下线入库(PDA)", model);
            return MoboxService.GoodpackOffline(model);
        }
 
        /// <summary>
        /// 空托/空箱绑定
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SimpleResult EmptyBind(EmptyBindInfo model) {
            LogHelper.InfoApi("空托/空箱绑定", model);
 
            if (model.CntrType == "托盘") {
                //LogHelper.Info($"触发API:空托绑定 " + JsonConvert.SerializeObject(model), "API");
                return MoboxService.EmptyBindPallet(model);
            }
            else if (model.CntrType == "好运箱") {
                //LogHelper.Info($"触发API:空箱绑定 " + JsonConvert.SerializeObject(model), "API");
                return MoboxService.EmptyBindGoodpack(model);
            }
            else {
                return BuildSimpleResult(-1, $"不合法的容器类型:'{model.CntrType}'");
            }
        }
 
        /// <summary>
        /// 空托/空箱入库(PDA)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SimpleResult EmptyInbound(EmptyInboundInfo model) {
            LogHelper.InfoApi("空托/空箱入库", model);
 
            var db = DbHelper.GetDbClient();
            var locCntrRel = db.Queryable<TN_Loc_Container>()
                .Where(lc => lc.S_LOC_CODE == model.LocCode).First();
 
            if (locCntrRel == null) {
                return BuildSimpleResult(-1, $"不存在已绑定容器的货位号:'{model.LocCode}'");
            }
 
            if (locCntrRel.S_CNTR_TYPE == "托盘") {
 
                return MoboxService.EmptyInboundPallet(new EmptyInboundDetailInfo {
                    StartLoc = locCntrRel.S_LOC_CODE,
                    CntId = locCntrRel.S_CNTR_TYPE
                });
            }
            else if (locCntrRel.S_CNTR_TYPE == "好运箱") {
 
                return MoboxService.EmptyInboundGoodpack(new EmptyInboundDetailInfo {
                    StartLoc = locCntrRel.S_LOC_CODE,
                    CntId = locCntrRel.S_CNTR_TYPE
                });
            }
            else {
                return BuildSimpleResult(-2, $"不合法的容器类型:'{locCntrRel.S_CNTR_CODE}'");
            }
        }
 
        /// <summary>
        /// 空托/空箱上线(PDA)
        /// </summary>
        /// <returns>
        /// 人工使用PDA扫码,根据物料类型判断上线空托/空箱
        /// </returns>
        public SimpleResult EmptyOnline(EmptyOnlineInfo model) {
            var db = DbHelper.GetDbClient();
            var locCntrRel = db.Queryable<TN_Loc_Container>()
                .LeftJoin<TN_CG_Detail>((lc, cd) => lc.S_CNTR_CODE == cd.S_CNTR_CODE)
                .Where((lc, cd) => cd.S_CG_ID == model.CgId)
                .First();
 
            if (locCntrRel.S_CNTR_TYPE == "托盘") {
 
                return MoboxService.EmptyOnlinePallet(new EmptyOnlinePalletInfo {
                    CntId = locCntrRel.S_CNTR_CODE,
                    EndLoc = model.EndLoc
                });
            }
            else if (locCntrRel.S_CNTR_TYPE == "好运箱") {
 
                return MoboxService.EmptyOnlineGoodpack(new EmptyOnlineGoodpackInfo {
                    CntId = locCntrRel.S_CNTR_CODE,
                    EndLoc = model.EndLoc
                });
            }
            else {
                return BuildSimpleResult(-1, $"不合法的容器类型:'{locCntrRel.S_CNTR_CODE}'");
            }
        }
 
        /// <summary>
        /// 创建抽检单(可能由PDA/WMS自行完成)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) { 
            return MoboxService.CreateCheckOrder(model);
        }
 
        #endregion
 
        #region Mobox 接口
        /// <summary>
        /// 成品胶出库(WMS)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SimpleResult FinishedOutbound(FinishedOutboundInfo model) {
            LogHelper.InfoApi("成品胶出库(WMS)", model);
            if (model.Forced) {
                return MoboxService.FinishedOutboundForce(model);
            }
            return MoboxService.FinishedOutbound(model);
        }
        #endregion
    }
}