jt
2021-06-10 5d0d028456874576560552f5a5c4e8b801786f11
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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
 
using HH.MData;
using HH.WMS.DAL;
using HH.WMS.Entitys.Algorithm;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
using HW.Utility.Data;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
 
namespace HW.DAL
{
    /// <summary>
    /// 物料表数据处理层
    /// </summary>
    /// <returns></returns>
    /// <history>[HanHe(XDL)] CREATED 2018/06/19</history>
    public class TN_AB_ITEMDAL : BaseDAL
    {
        #region 获取物料表集合
        /// <summary>
        /// 根据表名获取物料表集合
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <returns>物料集合</returns>
        /// <history>[HanHe(XDL)] CREATED 2018/06/14</history>
        public List<AutoBomItemEntity> GetItemList(string tableName)
        {
            string sql = @"SELECT  TOP 200  CN_S_ITEM_NAME
                                            ,CN_S_ITEM_CODE
                                            ,CN_S_MODIFY_BY
                                            ,CN_T_MODIFY
                                            ,CN_S_MODIFY
                                            ,CN_S_CREATOR
                                            ,CN_S_CREATOR_BY
                                            ,S.CN_T_CREATE
                                            ,CN_GUID
                                            ,CN_S_MODEL
                                            ,CN_S_ITEM_NOTE
                                            ,CN_S_MEASURE_UNIT
                                            ,CN_S_MIN_PACKWEIGHT/case when CN_F_MIN_PACK_QTY=0 then 1 else CN_F_MIN_PACK_QTY end  CN_F_TW
                                            ,CN_F_NW
                                            ,CN_F_NW
                                            ,CN_S_VOLUME_SIZE
                                            ,CN_S_ITEM_TYPE
                                            ,CN_S_MAJOR_TYPE
                                            ,CN_S_MINOR_TYPE
                                            ,CN_S_SALE_TYPE
                                            ,CN_S_TYPE_GROUP
                                            ,CN_S_VENDOR_BRAND
                                            ,CN_F_MIN_PACK_QTY
                                            ,CN_S_PACK_UNIT
                                            ,CN_S_FIGURE_NO
                                            ,CN_C_IS_WARRNTY_PARTS
                                            ,CN_S_FEATURE
                                            ,CN_F_SAFETY_STOCK
                                            ,CN_S_PACKING_TYPE
                                            ,CN_F_WARRNTY_PARTS
                                            ,CN_C_IS_LOT_OUT
                                            ,CN_C_IS_SN
                                            ,CN_S_CONERSION
                                            ,CN_S_STORE_TYPE
                                            ,CN_S_BOOK_CODE
                                            ,CN_S_BOOK_NAME
                                            ,CN_S_SPEC
                                            ,CN_S_STATUS
                              FROM TN_AB_B_SYNCH_LOG L LEFT  JOIN TN_AB_ITEM S
                              ON L.CN_S_GUID=S.CN_GUID
                              WHERE L.CN_S_TABLE_NAME='" + tableName + "' AND L.CN_N_OP_FLAG IN  (1,2) AND CN_S_ITEM_CODE!='' ";
            DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
            List<AutoBomItemEntity> list = DataAccessExtensive.ExecuteListEntity<AutoBomItemEntity>(this.DataAccess, cmd, SetEntity);
            return list;
        }
 
        /// <summary>
        /// 设置实体的各列
        /// <summary>
        private void SetEntity(AutoBomItemEntity entity, IDataReader reader)
        {
            SetEntityUti(entity, "CN_S_ITEM_NAME", "CN_S_ITEM_NAME", reader);
            SetEntityUti(entity, "CN_S_ITEM_CODE", "CN_S_ITEM_CODE", reader);
            SetEntityUti(entity, "CN_S_MODIFY_BY", "CN_S_MODIFY_BY", reader);
            SetEntityUti(entity, "CN_T_MODIFY", "CN_T_MODIFY", reader);
            SetEntityUti(entity, "CN_S_MODIFY", "CN_S_MODIFY", reader);
            SetEntityUti(entity, "CN_S_CREATOR", "CN_S_CREATOR", reader);
            SetEntityUti(entity, "CN_S_CREATOR_BY", "CN_S_CREATOR_BY", reader);
            SetEntityUti(entity, "CN_T_CREATE", "CN_T_CREATE", reader);
            SetEntityUti(entity, "CN_GUID", "CN_GUID", reader);
            SetEntityUti(entity, "CN_S_MODEL", "CN_S_MODEL", reader);
            SetEntityUti(entity, "CN_S_ITEM_NOTE", "CN_S_ITEM_NOTE", reader);
            SetEntityUti(entity, "CN_S_MEASURE_UNIT", "CN_S_MEASURE_UNIT", reader);
            SetEntityUti(entity, "CN_F_TW", "CN_F_TW", reader);
            SetEntityUti(entity, "CN_F_NW", "CN_F_NW", reader);
            SetEntityUti(entity, "CN_S_VOLUME_SIZE", "CN_S_VOLUME_SIZE", reader);
            SetEntityUti(entity, "CN_S_ITEM_TYPE", "CN_S_ITEM_TYPE", reader);
            SetEntityUti(entity, "CN_S_MAJOR_TYPE", "CN_S_MAJOR_TYPE", reader);
            SetEntityUti(entity, "CN_S_MINOR_TYPE", "CN_S_MINOR_TYPE", reader);
            SetEntityUti(entity, "CN_S_SALE_TYPE", "CN_S_SALE_TYPE", reader);
            SetEntityUti(entity, "CN_S_TYPE_GROUP", "CN_S_TYPE_GROUP", reader);
            SetEntityUti(entity, "CN_S_VENDOR_BRAND", "CN_S_VENDOR_BRAND", reader);
            SetEntityUti(entity, "CN_F_MIN_PACK_QTY", "CN_F_MIN_PACK_QTY", reader);
            SetEntityUti(entity, "CN_S_PACK_UNIT", "CN_S_PACK_UNIT", reader);
            SetEntityUti(entity, "CN_S_FIGURE_NO", "CN_S_FIGURE_NO", reader);
            SetEntityUti(entity, "CN_C_IS_WARRNTY_PARTS", "CN_C_IS_WARRNTY_PARTS", reader);
            SetEntityUti(entity, "CN_S_FEATURE", "CN_S_FEATURE", reader);
            SetEntityUti(entity, "CN_F_SAFETY_STOCK", "CN_F_SAFETY_STOCK", reader);
            SetEntityUti(entity, "CN_S_PACKING_TYPE", "CN_S_PACKING_TYPE", reader);
            SetEntityUti(entity, "CN_F_WARRNTY_PARTS", "CN_F_WARRNTY_PARTS", reader);
            SetEntityUti(entity, "CN_C_IS_LOT_OUT", "CN_C_IS_LOT_OUT", reader);
            SetEntityUti(entity, "CN_C_IS_SN", "CN_C_IS_SN", reader);
            SetEntityUti(entity, "CN_S_CONERSION", "CN_S_CONERSION", reader);
            SetEntityUti(entity, "CN_S_STORE_TYPE", "CN_S_STORE_TYPE", reader);
            SetEntityUti(entity, "CN_S_BOOK_CODE", "CN_S_BOOK_CODE", reader);
            SetEntityUti(entity, "CN_S_BOOK_NAME", "CN_S_BOOK_NAME", reader);
            SetEntityUti(entity, "CN_S_SPEC", "CN_S_SPEC", reader);
            SetEntityUti(entity, "CN_S_STATUS", "CN_S_STATUS", reader);
        }
        #endregion
 
        public SqlExecuteResult RemoveSynchLogData(string ArrayGuids)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("DELETE  FROM  TN_AB_B_SYNCH_LOG WHERE CN_S_GUID in (" + ArrayGuids + ")");
            DbCommand cmd = DataAccess.GetSqlStringCommand(sb.ToString());
            return ExecuteCommand(cmd, null);
        }
 
        public List<MONGO_KEYTYPE_MAP> GetItemToMapList()
        {
            string sql = @"SELECT CN_S_ITEM_CODE 'Key','4' 'Type'  FROM TN_AB_ITEM ";
            DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
            List<MONGO_KEYTYPE_MAP> list = DataAccessExtensive.ExecuteListEntity<MONGO_KEYTYPE_MAP>(this.DataAccess, cmd, SetItemToMapEntity);
            return list;
        }
 
        /// <summary>
        /// 设置实体的各列
        /// <summary>
        private void SetItemToMapEntity(MONGO_KEYTYPE_MAP entity, IDataReader reader)
        {
            SetEntityUti(entity, "Key", "Key", reader);
            SetEntityUti(entity, "Type", "Type", reader);
        }
 
        public AutoBomItemEntity GetItemModelByAuxi(string guid)
        {
            try
            {
                AutoBomItemEntity entity = new AutoBomItemEntity();
                var query = Query.Matches("AuxiliaryUnitList.CN_GUID", guid);
                entity = MongoDBSingleton.Instance.FindOne<AutoBomItemEntity>(query, "TN_AB_ITEM");
                return entity;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        public AutoBomItemEntity GetItemEntity(string itemCode)
        {
            try
            {
                AutoBomItemEntity entity = new AutoBomItemEntity();
                var query = Query.EQ("CN_S_ITEM_CODE", itemCode);
                entity = MongoDBSingleton.Instance.FindOne<AutoBomItemEntity>(query, "TN_AB_ITEM");
                return entity;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
 
        public bool UpdateAuxiData(List<AuxiliaryEntity> newAuxiList, string itemCode)
        {
            var query = Query.EQ("CN_S_ITEM_CODE", itemCode);
            var update = Update.SetWrapped("AuxiliaryUnitList", newAuxiList);
            bool result = MongoDBSingleton.Instance.Update<AutoBomItemEntity>(query, update, "TN_AB_ITEM", UpdateFlags.Multi);
            return result;
        }
 
        public SqlExecuteResult UpdateUnitItemList(List<AutoBomItemEntity> itemList)
        {
            string sql = @"UPDATE TN_AB_B_AUXILIARY_UNIT SET CN_T_CREATE=CN_T_CREATE WHERE CN_S_ITEM_CODE=@CN_S_ITEM_CODE";
            List<DbCommand> cmds = new List<DbCommand>();
            foreach (AutoBomItemEntity entity in itemList)
            {
                DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
                DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.CHAR, entity.CN_S_ITEM_CODE);
                cmds.Add(cmd);
            }
            return ExecuteCommands(cmds, null);
        }
    }
}