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
using HH.WMS.Common;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Dto;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace HH.WMS.DAL.OutStock
{
    public class OutStockDAL : DapperBaseDAL
    {
        #region 发货通知单主表-分页
        /// <summary>
        /// 发货通知单主表-分页
        /// </summary>
        /// <param name="param"></param>
        /// <param name="total"></param>
        /// <returns></returns>
        public DataTable GetOutList(OutSearchDto param, out long total)
        {
            string sql = @" SELECT * FROM TN_WM_OUT_MST WHERE 1=1 ";
 
            sql += GetFilterField("CN_S_OP_NO", param.CN_S_OP_NO, "like");
            sql += GetFilterField("CN_S_STATE", param.CN_S_STATE, "in");
            sql += GetFilterField("CN_T_CREATE", param.CN_T_CREATE, "dateArray");
 
            sql = "(" + sql + ") t";
            int pageIndex = Convert.ToInt32(param.pageIndex);
            int pageSize = Convert.ToInt32(param.pageSize);
            string orderBy = Util.ToString(param.orderBy);
            return ExecutePagingData(sql, pageIndex, pageSize, out total, orderBy);
        }
        #endregion
 
        #region 修改库区分配量
        /// <summary>
        /// 修改库区分配量
        /// </summary>
        /// <param name="areaQtyList"></param>
        /// <returns></returns>
        public OperateResult UpdateAreaAlloc(TN_WM_B_AREA_QTYEntity areaQty, IDbTransaction trans)
        {
            if (areaQty.CN_F_QUANTITY == 0)
            {
                string sql = @"DELETE FROM TN_WM_B_AREA_QTY  WHERE CN_GUID=@CN_GUID  AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
                return ExecuteTranSql(sql, areaQty, trans);
            }
            else
            {
                string sql = @"UPDATE TN_WM_B_AREA_QTY SET CN_F_ALLOC_QTY=@CN_F_ALLOC_QTY,CN_F_QUANTITY=@CN_F_QUANTITY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
                sql = string.Format(sql, DateTime.Now.ToString("yyyyMMddHHmmssffff"));
                return ExecuteTranSql(sql, areaQty, trans);
            }
        }
        #endregion
 
        #region 修改库存分配量
        /// <summary>
        /// 修改库存分配量
        /// </summary>
        /// <param name="stockList"></param>
        /// <param name="trans"></param>
        /// <returns></returns>
        public OperateResult UpdateStockAllocQty(TN_WM_B_STOCK_QTYEntity stockQty, IDbTransaction trans, string timeStamp = "")
        {
            if (stockQty.CN_F_QUANTITY == 0)
            {
                string sql = @"DELETE FROM TN_WM_B_STOCK_QTY  WHERE CN_GUID=@CN_GUID  AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
                return ExecuteTranSql(sql, stockQty, trans);
            }
            else
            {
                string sql = "UPDATE TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY=@CN_F_ALLOC_QTY,CN_F_QUANTITY=@CN_F_QUANTITY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
                sql = string.Format(sql, string.IsNullOrEmpty(timeStamp) ? DateTime.Now.ToString("yyyyMMddHHmmssffff") : timeStamp);
                return ExecuteTranSql(sql, stockQty, trans);
            }
        }
        #endregion
 
        #region 修改托盘物料分配量
        /// <summary>
        /// 修改托盘物料分配量
        /// </summary>
        /// <param name="trayItemList"></param>
        /// <param name="trans"></param>
        /// <param name="timeStamp"></param>
        /// <returns></returns>
        public OperateResult UpdateTrayItemAllocQty(TN_WM_B_TRAY_ITEM_MSTEntity trayItem, IDbTransaction trans, string timeStamp = "")
        {
            if (trayItem.CN_F_QUANTITY == 0)
            {
                string sql = @"DELETE FROM TN_WM_B_TRAY_ITEM_MST  WHERE CN_GUID=@CN_GUID  AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
                var or = ExecuteTranSql(sql, trayItem, trans);
                if (or.AffectedRows == 0) return or;
                sql = @"DELETE FROM TN_WM_B_TRAY_ITEM_DTL WHERE CN_PARENT_GUID=@CN_GUID";
                return ExecuteTranSql(sql, trayItem, trans);
            }
            else
            {
                string sql = "UPDATE TN_WM_B_TRAY_ITEM_MST SET CN_F_ALLOC_QTY=@CN_F_ALLOC_QTY,CN_F_QUANTITY=@CN_F_QUANTITY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
                sql = string.Format(sql, string.IsNullOrEmpty(timeStamp) ? DateTime.Now.ToString("yyyyMMddHHmmssffff") : timeStamp);
                var or = ExecuteTranSql(sql, trayItem, trans);
                if (or.AffectedRows == 0) return or;
                sql = " UPDATE TN_WM_B_TRAY_ITEM_DTL SET CN_F_QUANTITY=@CN_F_QUANTITY WHERE CN_PARENT_GUID=@CN_GUID ";
                return ExecuteTranSql(sql, trayItem, trans);
            }
        }
        #endregion
 
        #region 取货位分拣中的物料
        /// <summary>
        /// 取货位分拣中的物料
        /// </summary>
        /// <param name="locationCode"></param>
        /// <returns></returns>
        public List<TN_WM_SORTING_LOCATIONEntity> GetSortingLocation(string locationCode)
        {
            string sql = @"SELECT * FROM TN_WM_SORTING_LIST A,
TN_WM_SORTING_LOCATION B 
WHERE A.CN_S_SORTING_NO = B.CN_S_SORTING_NO AND A.CN_S_STATE='分拣中' AND B.CN_S_LOCATION_CODE  IN(
SELECT TOP 1 CN_S_START_BIT FROM TN_WM_TASK WHERE CN_S_END_BIT=@CN_S_END_BIT ORDER BY CN_T_CREATE DESC)";
            return ExecuteQuery<TN_WM_SORTING_LOCATIONEntity>(sql, new
            {
                CN_S_END_BIT = locationCode
            });
        }
        #endregion
    }
}