kazelee
2025-07-03 736fb5782d375908a9097780743913193ffde494
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
using HH.WCS.Mobox3.DSZSH.models;
 
using static HH.WCS.Mobox3.DSZSH.Config;
 
namespace HH.WCS.Mobox3.DSZSH.util {
    /// <summary>
    /// 打印日志内容构造器
    /// </summary>
    public static class LogBuilder {
        /// <summary>
        /// 没有找到起点货位
        /// </summary>
        /// <remarks>
        /// <b>lockStated</b> - 锁状态,默认为0,小于0时忽略<br/>
        /// <b>curNum</b> - 当前数量,默认为-1,小于0时忽略<br/>
        /// <b>areas</b> - 所在库区列表,默认为null,为null或为空时忽略<br/>
        /// <b>name</b> - 货位名称,默认为null,为null或为空时忽略
        /// </remarks>
        /// <param name="lockState">锁状态,默认为0,小于0时忽略</param>
        /// <param name="curNum">当前数量,默认为-1,小于0时忽略</param>
        /// <param name="areas">所在库区列表,默认为null,为null或为空时忽略</param>
        /// <param name="name">货位名称,默认为null,为null或为空时忽略</param>
        /// <param name="pre"></param>
        /// <returns></returns>
        public static string StartLocNotFound(int lockState = 0, int curNum = -1, List<string> areas = null, string name = null, string pre = "") {
            var res = string.Empty;
            if (string.IsNullOrEmpty(name)) { res = $"没有找到合适的起点货位!"; }
            else { res = $"没有找到起点货位'{name}'!"; }
            res += "要求:";
            if (lockState >= 0) { res += $"锁状态='{GetLockStateStr(lockState)}';"; }
            if (curNum >= 0) { res += $"当前容器数量={curNum};"; }
            if (areas != null && areas.Count != 0) { res += $"所在库区=['{string.Join("','", areas)}'];"; }
 
            return pre + res;
        }
 
        /// <summary>
        /// 没有找到终点货位
        /// </summary>
        /// <remarks>
        /// <b>lockStated</b> - 锁状态,默认为0,小于0时忽略<br/>
        /// <b>curNum</b> - 当前数量,默认为-1,小于0时忽略<br/>
        /// <b>areas</b> - 所在库区列表,默认为null,为null或为空时忽略<br/>
        /// <b>name</b> - 货位名称,默认为null,为null或为空时忽略
        /// </remarks>
        /// <param name="lockState">锁状态,默认为0,小于0时忽略</param>
        /// <param name="curNum">当前数量,默认为-1,小于0时忽略</param>
        /// <param name="areas">所在库区列表,默认为null,为null或为空时忽略</param>
        /// <param name="name">货位名称,默认为null,为null或为空时忽略</param>
        /// <param name="pre"></param>
        /// <returns></returns>
        public static string EndLocNotFound(int lockState = 0, int curNum = -1, List<string> areas = null, string name = null, string pre = "") {
            var res = string.Empty;
            if (string.IsNullOrEmpty(name)) { res = $"没有找到合适的终点货位!"; }
            else { res = $"没有找到终点货位'{name}'!"; }
            res += "要求:";
            if (lockState >= 0) { res += $"锁状态='{GetLockStateStr(lockState)}';"; }
            if (curNum >= 0) { res += $"当前容器数量={curNum};"; }
            if (areas != null && areas.Count != 0) { res += $"所在库区=['{string.Join("','", areas)}'];"; }
 
            return pre + res;
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pre"></param>
        /// <returns></returns>
        public static string CreateTaskSuccess(TN_Task task, string pre = "") {
            var res = $"生成任务'{task.S_TYPE}'成功!" +
                $"任务号='{task.S_CODE}',容器号='{task.S_CNTR_CODE}',起点='{task.S_START_LOC}',终点='{task.S_END_LOC}'";
            return pre + res;
        }
 
        public static string CreateTaskFail(TN_Task task, string pre = "") {
            var res = $"生成任务'{task.S_TYPE}'失败!" +
                $"任务号={task.S_CODE},容器号={task.S_CNTR_CODE},起点={task.S_START_LOC},终点={task.S_END_LOC}";
            return pre + res;
        }
 
        private static string GetLockStateStr(int lockState) {
            var str = "";
            switch (lockState) {
                case 0: str = "无"; break;
                case 1: str = "入库锁"; break;
                case 2: str = "出库锁"; break;
                case 3: str = "其它锁"; break;
            }
            return str;
        }
    }
}