kazelee
2025-05-13 38a8b2931abd72ee04285794aacbea7ed7c49228
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
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_ITEM_CODE == model.ItemCode)
                .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>
        /// 创建抽检单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) {
            return MoboxService.CreateCheckOrder(model);
        }
 
        /// <summary>
        /// 合格回库/不合格移库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("CheckShift")]
        public SimpleResult CheckShift(CheckShiftInfo model) {
            LogHelper.InfoApi("合格回库/不合格移库", model);
 
            if (model.Qualified) {
                return MoboxService.QualifiedBack(model);
            }
            else {
                return MoboxService.UnqualifiedShift(model);
            }
        }
 
        ///// <summary>
        ///// 合格回库
        ///// </summary>
        ///// <returns></returns>
        //public SimpleResult QualifiedBack(QualifiedBackInfo model) {
        //    return new SimpleResult();
        //}
 
        ///// <summary>   
        ///// 不合格移库
        ///// </summary>
        ///// <returns></returns>
        //public SimpleResult UnqualifiedShift() {
        //    return new SimpleResult();
        //}
 
        #endregion
 
        #region Mobox 接口
        /// <summary>
        /// 成品胶出库(WMS)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SimpleResult FinishedOutbound(FinishedOutboundInfo model) {
            LogHelper.InfoApi("成品胶出库(WMS)", model);
            if (model.ForcedOut) {
                return MoboxService.FinishedOutboundForce(model);
            }
            return MoboxService.FinishedOutbound(model);
        }
        #endregion
    }
}