kazelee
2025-05-12 968d603a08117e7e6707ffe07c6da9c325e36c08
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
using System;
using System.Collections.Generic;
using System.Web.Http;
 
using HH.WCS.Mobox3.DSZSH.Helpers;
using HH.WCS.Mobox3.DSZSH.Models;
using HH.WCS.Mobox3.DSZSH.Services;
 
using static HH.WCS.Mobox3.DSZSH.Dtos.Request.AgvRequest;
using static HH.WCS.Mobox3.DSZSH.Dtos.Request.DebugRequest;
using static HH.WCS.Mobox3.DSZSH.Dtos.Response.AgvResponse;
using static HH.WCS.Mobox3.DSZSH.Dtos.Response.DebugResponse;
 
namespace HH.WCS.Mobox3.DSZSH.Controllers {
    /// <summary>
    /// 测试用:如果项目中要和设备对接,前期设备无法测试,用接口模拟
    /// </summary>
    [RoutePrefix("api")]
    public class DebugController : ApiController
    {
        /// <summary>
        /// 模拟 AGV 多次回报任务状态
        /// </summary>
        /// <param name="model">容器号</param>
        /// <returns></returns>
        [HttpPost]
        [Route("AgvSeriesReports")]
        public ReturnResults AgvSeriesReports(UpdateTaskState model)
        {
            return DebugService.AgvSeriesReports(model);
        }
 
        /// <summary>
        /// 初始化数据库
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("CreateDatabase")]
        public string CreateDatabase() {
            return DebugService.CreateDatabase();
        }
 
        [HttpPost]
        [Route("InsertLocation")]
        public string InsertLocation(InsertLocationInfo model) {
            try {
                var db = DbHelper.GetDbClient();
                
                var locList = new List<TN_Location>();
                locList.Add(new TN_Location { S_AREA_CODE = model.AreaCode, S_CODE = model.Code});
 
                if (db.Insertable<TN_Location>(locList).ExecuteCommand() <= 0) {
                    return "失败";
                }
 
            }
            catch (Exception ex) {
                LogHelper.Info($"发生了异常");
                return "添加货位错误" + ex.Message;
            }
            //return res ? "成功" : "失败";
            return "成功";
        }
 
        /// <summary>
        /// DEBUG:插入货位、容器、货品信息
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("InsertLocCntrCg")]
        public string InsertLocCntrCg() {
            return DebugService.InsertLocCntrCg();
        }
 
        public string AddCgCntrLocRel(CgInfo model) {
            var db = DbHelper.GetDbClient();
 
            try {
                using (var tran = db.Ado.UseTran()) {
                    var loc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.LocId);
                    if (loc == null) {
                        var newLoc = new TN_Location { S_CODE = model.LocId, N_CURRENT_NUM = 1 };
                        if (db.Insertable<TN_Location>(newLoc).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            return $"插入位置{model.LocId}失败";
                        }
                        loc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.LocId);
                    }
                    if (loc.N_CURRENT_NUM == 0) {
                        loc.N_CURRENT_NUM = 1;
                        if (db.Updateable<TN_Location>(loc).UpdateColumns(
                            it => new { it.N_CURRENT_NUM, it.T_MODIFY }).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            return $"修改位置{model.LocId}失败";
                        }
                    }
 
                    var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.LocId && a.S_CNTR_CODE == model.CntId);
                    if (locCntrRel == null) {
                        var locList = new List<TN_Loc_Container>();
                        locList.Add(new TN_Loc_Container { S_LOC_CODE = model.LocId, S_CNTR_CODE = model.CntId });
                        if (db.Insertable<TN_Loc_Container>(locList).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            return $"插入位置托盘关系{model.LocId}-{model.CntId}失败";
                        }
                    }
 
                    var cgDetail = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == model.CntId && a.S_CG_ID == model.CgId);
                    if (cgDetail == null) {
                        var locList = new List<TN_CG_Detail>();
                        locList.Add(new TN_CG_Detail { S_CNTR_CODE = model.CntId, S_CG_ID = model.CntId });
                        if (db.Insertable<TN_CG_Detail>(locList).ExecuteCommand() <= 0) {
                            tran.RollbackTran();
                            return $"插入托盘物料关系{model.CntId}-{model.CgId}失败";
                        }
                    }
 
                    tran.CommitTran();
                }
            }
            catch (Exception ex) {
                return $"出错:{ex}";
            }
 
            return "success";
        }
    }
 
    public class CgInfo {
        public string CgId { get; set; }
        public string CntId { get; set; }
        public string LocId { get; set; }
    }
 
    public class InsertLocationInfo {
        public string Code { set; get; } 
        public string AreaCode { set; get; }
    }
 
    public class UpdateTaskWeightInfo {
        public string TaskID { set; get; }
        public float Weight { set; get; }
    }
}