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
using System;
using System.Collections.Generic;
using System.Linq;
using HH.MData;
using System.Text;
using System.Threading.Tasks;
using HH.WMS.Entitys.Algorithm;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using HH.WMS.Entitys.Basic;
using MongoDB.Bson;
 
namespace HH.WMS.DAL.Basic
{
    /// <summary>
    /// 用户读取mongodb中的仓库数据
    /// </summary>
    public class TN_WMS_STAOCKDAL:BaseDAL
    {
 
        #region 所有仓库
        /// <summary>
        /// 所有仓库
        /// </summary>
        /// <returns></returns>
        public List<TN_AB_STOCKEntity> GetStockList()
        {
            return MongoDBSingleton.Instance.FindAll<TN_AB_STOCKEntity>("TN_AB_STOCK");
        }
        #endregion
 
        #region 根据库区编码返回仓库实体
        /// <summary>
        /// 根据库区编码返回仓库实体
        /// </summary>
        /// <param name="itemCode"></param>
        /// <returns></returns>
        ///  <history>[HanHe(LT)] CREATED 2018/5/21</history>
        public List<TN_AB_STOCKEntity> GetListStock(string stockCode, string pageSize, string pageIndex)
        {
            List<TN_AB_STOCKEntity> entity = new List<TN_AB_STOCKEntity>();
            SortByDocument sortBy = new SortByDocument();
            sortBy.Add("CN_S_STOCK_CODE", -1);
            IMongoQuery query = null;
            if (!string.IsNullOrEmpty(stockCode))
            {
                query = Query.Matches("CN_S_STOCK_CODE", stockCode);
            }
            entity = MongoDBSingleton.Instance.Find<TN_AB_STOCKEntity>(query, Convert.ToInt32(pageIndex), Convert.ToInt32(pageSize), sortBy, "TN_AB_STOCK");
            return entity;
        }
        #endregion   
 
        #region 根据仓库和库区编码获得库区结构
        /// <summary>
        /// 根据仓库和库区编码获得库区结构
        /// </summary>
        /// <param name="stockCode">仓库编号</param>
        /// <param name="areaCode">库区编号</param>
        /// <returns></returns>
        ///  <history>[HanHe(LT)] CREATED 2018/11/30</history>
        public List<AutoBomStockStructreEntity> GetStructList(string stockCode,string areaCode)
        {
            var query = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode), Query.EQ("CN_S_AREA_CODE", areaCode));
            //仓库结构
            List<AutoBomStockStructreEntity> lstStruct = MongoDBSingleton.Instance.Find<AutoBomStockStructreEntity>(query, "TN_AB_B_STOCK_STRUCTURE");
 
            return lstStruct;
        }
        #endregion
 
        public List<AutoBomStockAreaEntity> GetAreaList(int pageIndex, int pageSize, string areaName, out int total)
        {
            List<AutoBomStockAreaEntity> entity = new List<AutoBomStockAreaEntity>();
            SortByDocument sortBy = new SortByDocument();
            sortBy.Add("CN_S_AREA_CODE", -1);
            IMongoQuery query = null;
            if (!string.IsNullOrEmpty(areaName))
            {
                query = Query.Matches("CN_S_AREA_NAME", areaName);
            }
          //  query = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode));
 
            total = Convert.ToInt32(MongoDBSingleton.Instance.FindCount<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA"));
            entity = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, Convert.ToInt32(pageIndex), Convert.ToInt32(pageSize), sortBy, "TN_AB_B_STOCK_AREA");
            return entity;
        }
 
        public List<AutoBomStockAreaEntity> GetSHLocationArea(string areaClass)
        {
            List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
            var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
            listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
 
            return listLogic;
        }
 
        public List<AutoBomLocationEntity> GetSHLocation(List<string> arrAreaCode)
        {
            List<AutoBomLocationEntity> locationList = new List<AutoBomLocationEntity>();
            var arrLogic = arrAreaCode.ConvertAll<BsonValue>(x => x);
            var query = Query.In("CN_S_AREA_CODE", arrLogic);
            locationList = MongoDBSingleton.Instance.Find<AutoBomLocationEntity>(query, "TN_AB_STOCK_LOCATION");
            return locationList;
        }
 
        public List<AutoBomLocationEntity> GetLocationInfo(int pageIndex, int pageSize, string areaCode, string roadWay,
            string row, string locationNo, string state, out int total)
        {
            List<AutoBomLocationEntity> locationList = new List<AutoBomLocationEntity>();
            List<IMongoQuery> querys = new List<IMongoQuery>();
            if (!string.IsNullOrEmpty(areaCode))
            {
                querys.Add(Query.EQ("CN_S_AREA_CODE", areaCode));
            }
            if (!string.IsNullOrEmpty(state))
            {
                querys.Add(Query.EQ("CN_S_STATUS", state));
            }
            if (!string.IsNullOrEmpty(roadWay))
            {
                querys.Add(Query.Matches("CN_S_ROADWAY", "/^" + roadWay + "/"));
            }
 
            if (!string.IsNullOrEmpty(row))
            {
                querys.Add(Query.Matches("CN_S_ROW", "/^" + row + "/"));
            }
 
            if (!String.IsNullOrEmpty(locationNo))
            {
                querys.Add(Query.Matches("CN_S_LOCATION_CODE", "/" + locationNo + "/"));
            }
            SortByDocument sortBy = new SortByDocument();
            if (querys.Count > 0)
            {
                IMongoQuery query = Query.And(querys);
                sortBy.Add("CN_S_AREA_CODE", -1);
                sortBy.Add("CN_S_LOCATION_CODE", -1);
                total = Convert.ToInt32(
                    MongoDBSingleton.Instance.FindCount<AutoBomStockAreaEntity>(query,
                        "TN_AB_STOCK_LOCATION"));
                locationList = MongoDBSingleton.Instance.Find<AutoBomLocationEntity>(query, Convert.ToInt32(pageIndex),
                    Convert.ToInt32(pageSize), sortBy, "TN_AB_STOCK_LOCATION");
            }
            else
            {
                total = Convert.ToInt32(
                    MongoDBSingleton.Instance.FindCount<AutoBomStockAreaEntity>(null,
                        "TN_AB_STOCK_LOCATION"));
                sortBy.Add("CN_S_AREA_CODE", -1);
                sortBy.Add("CN_S_LOCATION_CODE", -1);
                locationList = MongoDBSingleton.Instance.Find<AutoBomLocationEntity>(null, Convert.ToInt32(pageIndex),
                    Convert.ToInt32(pageSize), sortBy, "TN_AB_STOCK_LOCATION");
 
            }
 
            return locationList;
        }
    }
}