kazelee
2025-05-09 62e3ff7506396fcb7f7737900806e838c2466aa3
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
using System;
using System.Collections.Generic;
using System.Linq;
 
using HH.WCS.Mobox3.DSZSH.Helpers;
using HH.WCS.Mobox3.DSZSH.Models;
 
using Newtonsoft.Json;
 
namespace HH.WCS.Mobox3.DSZSH.Helpers.Model {
    /// <summary>
    /// 容器帮助类(包含容器-货品关系的处理)
    /// </summary>
    internal class ContainerHelper 
    {
        /// <summary>
        /// 容器绑定货品
        /// </summary>
        /// <param name="cnt"></param>
        /// <param name="cGs"></param>
        /// <returns></returns>
        public static string BindingCG(string cnt, List<string> cGs)
        {
            var db = DbHelper.GetDbClient();
            var logs = $"容器:{cnt},货品:{JsonConvert.SerializeObject(cGs)}";
            try
            {
                var cntCgList = db.Queryable<TN_CG_Detail>().Where(a => cGs.Contains(a.S_CG_ID) && a.S_CNTR_CODE == cnt).ToList();
 
                if (cntCgList.Count > 0)
                {
                    cGs = cGs.Except(cntCgList.Select(a => a.S_CNTR_CODE).ToList()).ToList();
                }
 
                var bindCntCgList = new List<TN_CG_Detail>();
                foreach (var item in cGs)
                {
                    bindCntCgList.Add(new TN_CG_Detail() { S_CNTR_CODE = cnt, S_CG_ID = item });
                }
 
                var log = JsonConvert.SerializeObject(bindCntCgList);
                if (db.Insertable<TN_CG_Detail>(bindCntCgList).ExecuteCommand() > 0)
                {
                    LogHelper.Info($"插入容器货品关系表成功,{log}");
                }
                else
                {
                    LogHelper.Info($"插入容器货品关系表失败,{log}");
                    return "容器绑定货品失败," + logs;
                }
 
                var cntid = db.Queryable<TN_Container>().First(a => a.S_CODE == cnt);
 
                if (cntid != null)
                {
                    cntid.T_MODIFY = System.DateTime.Now;
                    log = JsonConvert.SerializeObject(cntid);
                    if (db.Updateable(cntid).UpdateColumns(it => new { it.T_MODIFY }).ExecuteCommand() > 0)
                    {
                        LogHelper.Info($"更新容器表成功,{log}");
                    }
                    else
                    {
                        LogHelper.Info($"更新容器表失败,{log}");
                        return "容器绑定货品失败," + logs;
                    }
                }
                else
                {
                    LogHelper.Info($"在数据库中未找到该容器,无需更新,容器:{cnt}");
                }
                return "容器绑定货品成功," + logs;
            }
            catch (Exception ex)
            {
                LogHelper.Info($"发生了异常,货位绑定容器失败,");
                return "容器绑定货品失败," + ex.Message;
            }
        }
 
        /// <summary>
        /// 容器解绑货品
        /// </summary>
        /// <param name="cnt"></param>
        /// <param name="cGs"></param>
        /// <returns></returns>
        public static string UnBindingCG(string cnt, List<string> cGs)
        {
            var db = DbHelper.GetDbClient();
            var logs = $"容器:{cnt},货品:{JsonConvert.SerializeObject(cGs)}";
            try
            {
                var cntCgList = db.Queryable<TN_CG_Detail>().Where(a => cGs.Contains(a.S_CG_ID) && a.S_CNTR_CODE == cnt).ToList();
                if (cntCgList.Count == 0)
                {
                    LogHelper.Info($"容器无需解绑货品,在数据库中未找到{JsonConvert.SerializeObject(cGs)}相关的容器货品关系表信息");
                    return "容器无需解绑货品,解绑成功" + logs;
                }
                cGs = cntCgList.Select(a => a.S_CG_ID).ToList();
 
                var log = JsonConvert.SerializeObject(cGs);
                if (db.Deleteable<TN_CG_Detail>().Where(it => cGs.Contains(it.S_CG_ID) && it.S_CNTR_CODE == cnt).ExecuteCommand() > 0)
                {
                    LogHelper.Info($"删除容器货品关系表成功,{log}");
                }
                else
                {
                    LogHelper.Info($"删除容器货品关系表失败,{log}");
                    return "容器绑定货品失败," + logs;
                }
 
                var CntId = db.Queryable<TN_Container>().First(a => a.S_CODE == cnt);
                if (CntId != null)
                {
                    CntId.T_MODIFY = System.DateTime.Now;
                    log = JsonConvert.SerializeObject(CntId);
                    if (db.Updateable(CntId).UpdateColumns(it => new { it.T_MODIFY }).ExecuteCommand() > 0)
                    {
                        LogHelper.Info($"更新容器表成功,{log}");
                    }
                    else
                    {
                        LogHelper.Info($"更新容器表失败,{log}");
                        return "容器绑定货品失败," + logs;
                    }
 
                }
                else
                {
                    LogHelper.Info($"在数据库中未找到该容器,无需更新,容器:{cnt}");
                }
                return "容器解绑货品成功," + logs;
            }
            catch (Exception ex)
            {
                LogHelper.Info($"发生了异常,货位解绑容器失败,{ex.Message}");
                return "容器解绑货品失败," + logs;
            }
        }
    }
}