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 System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace HH.WMS.DAL.SysMgr
{
    public class TN_WM_B_STRATEGYDAL : DapperBaseDAL
    {
        #region 获取库区下所有策略
        /// <summary>
        /// 获取库区下所有策略
        /// </summary>
        /// <param name="areaCode">库区编码</param>
        /// <param name="tokenId">tokenId</param>
        /// <returns></returns>
        /// <history>[HanHe(xdl)] CREATED 2018/12/05</history>
        public DataTable GetStrategyList(string areaCode)
        {
            string sql = @"select stra.*,suse.CN_N_PRIORITY from tn_wm_b_strategy_use suse left join tn_wm_b_strategy stra on
suse.CN_STRATEGY_GUID=stra.CN_GUID where stra.CN_C_IS_USE='" + Constants.Y + "' AND suse.CN_S_STOCK_AREA='" + areaCode + "'";
 
            return ExecuteDataTable(sql);
        }
 
        /// <summary>
        /// 获取库区所有没设置的策略
        /// </summary>
        /// <param name="areaCode">库区编码</param>
        /// <returns></returns>
        public DataTable GetNoStrategyList(string areaCode)
        {
            string sql = @"select * from tn_wm_b_strategy where CN_C_IS_USE='" + Constants.Y + "' AND  CN_GUID not in(select CN_STRATEGY_GUID from tn_wm_b_strategy_use where CN_S_STOCK_AREA='" + areaCode + "')";
 
            return ExecuteDataTable(sql);
        }
        #endregion
 
        #region 根据库区编码和策略类型获取策略
        /// <summary>
        /// 根据库区编码和策略类型获取策略,策略类型选填(三生物料上架PDA接口)
        /// </summary>
        /// <param name="areaCode">库区编码</param>
        /// <param name="strategyType">策略类型</param>
        public DataTable GetStrategyType(string areaCode, string strategyType)
        {
            string sql = @"select stra.*,suse.CN_N_PRIORITY,suse.CN_S_STOCK_AREA from dbo.tn_wm_b_strategy_use suse left join dbo.tn_wm_b_strategy stra on
suse.CN_STRATEGY_GUID=stra.CN_GUID where stra.CN_C_IS_USE='" + Constants.Y + "' ";
 
            if (!string.IsNullOrEmpty(areaCode))
            {
                sql = sql + "  AND suse.CN_S_STOCK_AREA='" + areaCode + "' ";
            }
            if (!string.IsNullOrEmpty(strategyType))
            {
                sql = sql + "  AND STRA.CN_S_TYPE='" + strategyType + "' ";
            }
            return ExecuteDataTable(sql);
        }
        #endregion
 
        #region 更新优先级
        /// <summary>
        /// 更新优先级
        /// </summary>
        /// <param name="areaCode">库区编码</param>
        /// <param name="stockCode">仓库编码</param>
        /// <param name="strategyGuid">策略Guid</param>
        /// <param name="priority">优先级</param>
        /// <returns></returns>
        public OperateResult UpdatePriority(string areaCode, string stockCode, string strategyGuid, string priority)
        {
            string sq1 = "UPDATE TN_WM_B_STRATEGY_USE SET CN_N_PRIORITY=@CN_N_PRIORITY WHERE CN_STRATEGY_GUID=@CN_STRATEGY_GUID and CN_S_STOCK_AREA=@CN_S_STOCK_AREA and CN_S_STOCK_CODE=@CN_S_STOCK_CODE";
            OperateResult result = ExecuteTranSql(sq1, new
            {
                CN_N_PRIORITY = priority,
                CN_STRATEGY_GUID = strategyGuid,
                CN_S_STOCK_AREA = areaCode,
                CN_S_STOCK_CODE = stockCode
            }, null);
            return result;
        }
        #endregion
 
        public OperateResult DeleteAreaStrategy(string areaCode, string stockCode, string strategyGuid)
        {
 
            string sq1 = "DELETE FROM TN_WM_B_STRATEGY_USE WHERE CN_STRATEGY_GUID=@CN_STRATEGY_GUID and CN_S_STOCK_AREA=@CN_S_STOCK_AREA  and CN_S_STOCK_CODE=@CN_S_STOCK_CODE";
            OperateResult result = ExecuteTranSql(sq1, new
            {
                CN_STRATEGY_GUID = strategyGuid,
                CN_S_STOCK_AREA = areaCode,
                CN_S_STOCK_CODE = stockCode
            }, null);
            return result;
        }
 
        /// <summary>
        /// 保存库区策略关联
        /// </summary>
        /// <param name="stockCode">仓库编码</param>
        /// <param name="areaCode">库区编码</param>
        /// <param name="guidList">策略Guid</param>
        /// <returns></returns>
        public OperateResult SaveStrategyUse(string stockCode, string areaCode, List<string> guidList)
        {
            OperateResult result = new OperateResult();
            foreach (var item in guidList)
            {
                string sq1 = @"INSERT INTO tn_wm_b_strategy_use(CN_GUID,CN_STRATEGY_GUID,CN_S_STOCK_CODE,CN_S_STOCK_AREA,CN_N_PRIORITY,CN_N_RATIO,CN_N_MAX_SCALE)
     VALUES(@CN_GUID,@CN_STRATEGY_GUID,@CN_S_STOCK_CODE,@CN_S_STOCK_AREA,@CN_N_PRIORITY,@CN_N_RATIO,@CN_N_MAX_SCALE)";
                result = ExecuteTranSql(sq1, new
                {
                    CN_GUID = System.Guid.NewGuid().ToString(),
                    CN_STRATEGY_GUID = item,
                    CN_S_STOCK_CODE = stockCode,
                    CN_S_STOCK_AREA = areaCode,
                    CN_N_PRIORITY = "1",
                    CN_N_RATIO = "1",
                    CN_N_MAX_SCALE = "1"
                }, null);
                if (result.Status == ResultStatus.Error)
                    return result;
            }
            return result;
        }
 
    }
}