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
using HH.Redis.ReisModel;
using HH.WMS.BLL.Basic;
using HH.WMS.Common;
using HH.WMS.DAL;
using HH.WMS.DAL.InStock;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Entitys;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace HH.WMS.BLL.InStock
{
    public class TN_WM_ITEMBACK_MSTBLL : DapperBaseBLL
    {
        #region 保存还料数据
        /// <summary>
        /// 保存还料数据
        /// </summary>
        /// <param name="entity">还料实体</param>
        /// <param name="userEntity">用户实体</param>
        /// <returns></returns>
        public OperateResult SaveItemBack(ItemOnShelfEntity entity, RedisUserEntity userEntity)
        {
            OperateResult operateResult = new OperateResult();
            try
            {
                if (entity.row.Count > 0)
                {
                    TN_WM_ITEMBACK_MSTEntity mstEntity = new TN_WM_ITEMBACK_MSTEntity();
                    List<TN_WM_ITEMBACK_DTLEntity> dtlEntityList = new List<TN_WM_ITEMBACK_DTLEntity>();
 
 
                    string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.ItemBackNo + "\",\"orgId\":\"" + userEntity.CN_S_ORG_GUID + "\",\"orgFlag\":\"" + userEntity.CN_S_ORGFLAG + "\"}";
                    string opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
                    if (string.IsNullOrEmpty(opNo))
                    {
                        return OperateResult.Error("生成还料单号失败!");
                    }
                    Log.Info("===>生成还料单号:====>", opNo);
                    #region 拼接主表数据
                    mstEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
                    mstEntity.CN_S_OWNER = entity.row[0].CN_S_OWNER.ToString();
                    mstEntity.CN_S_OP_NO = opNo;
                    mstEntity.CN_S_STATE = Constants.State_New;
                    mstEntity.CN_S_CREATOR = userEntity.CN_S_LOGIN;
                    mstEntity.CN_S_CREATOR_BY = userEntity.CN_S_NAME;
                    mstEntity.CN_T_CREATE = DateTime.Now;
                    mstEntity.CN_S_MODIFY = userEntity.CN_S_LOGIN;
                    mstEntity.CN_S_MODIFY_BY = userEntity.CN_S_NAME;
                    mstEntity.CN_T_MODIFY = DateTime.Now;
                    #endregion
 
                    Log.Info("===>生成还料主表:====>", JsonConvert.SerializeObject(mstEntity));
 
                    int rowIndex = 1;
 
                    foreach (var item in entity.row)
                    {
                        #region 拼接子表数据
                        TN_WM_ITEMBACK_DTLEntity dtlEntity = new TN_WM_ITEMBACK_DTLEntity();
                        dtlEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
                        dtlEntity.CN_S_OP_NO = opNo;
                        dtlEntity.CN_N_ROW_NO = rowIndex;
                        dtlEntity.CN_S_UNIQUE_CODE = "";
                        dtlEntity.CN_S_LOT_NO = item.CN_S_LOT_NO;
                        dtlEntity.CN_S_SERIAL_NO = item.CN_S_SERIAL_NO;
                        dtlEntity.CN_S_PRODUCTION_BATCH = item.CN_S_PRODUCTION_BATCH;
                        dtlEntity.CN_S_ITEM_CODE = item.CN_S_ITEM_CODE;
                        dtlEntity.CN_S_ITEM_NAME = item.CN_S_ITEM_NAME;
                        dtlEntity.CN_S_ITEM_STATE = string.IsNullOrEmpty(item.CN_S_ITEM_STATE) ? Constants.ItemState_Qualified : item.CN_S_ITEM_STATE.ToString();
                        dtlEntity.CN_F_PURCHASE_PRICE = item.CN_F_PURCHASE_PRICE;
                        dtlEntity.CN_F_RETAIL_PRICE = item.CN_F_RETAIL_PRICE;
                        dtlEntity.CN_T_PRODUCTION = string.IsNullOrEmpty(item.CN_T_PRODUCTION.ToString()) ? Convert.ToDateTime("1970-01-01") : Convert.ToDateTime(item.CN_T_PRODUCTION);
                        dtlEntity.CN_T_EXPIRATION = string.IsNullOrEmpty(item.CN_T_EXPIRATION.ToString()) ? Convert.ToDateTime("1970-01-01") : Convert.ToDateTime(item.CN_T_EXPIRATION);
                        dtlEntity.CN_S_PACKING_UNIT = item.CN_S_PACKING_UNIT.ToString();
                        dtlEntity.CN_F_PACKING_QTY = Convert.ToDecimal(item.CN_F_PACKING_QTY);
                        dtlEntity.CN_F_QUANTITY = Convert.ToDecimal(item.CN_F_QUANTITY);
 
                        dtlEntity.CN_S_VENDOR_NO = item.CN_S_VENDOR_NO;
                        dtlEntity.CN_S_VENDOR_NAME = item.CN_S_VENDOR_NAME;
                        dtlEntity.CN_S_CREATOR = userEntity.CN_S_LOGIN;
                        dtlEntity.CN_S_CREATOR_BY = userEntity.CN_S_NAME;
                        dtlEntity.CN_T_CREATE = DateTime.Now;
                        dtlEntity.CN_S_MODIFY = userEntity.CN_S_LOGIN;
                        dtlEntity.CN_S_MODIFY_BY = userEntity.CN_S_NAME;
                        dtlEntity.CN_T_MODIFY = DateTime.Now;
 
                        dtlEntityList.Add(dtlEntity);
                        rowIndex++;
                        #endregion
                    }
 
                    Log.Info("===>生成还料子表:====>", JsonConvert.SerializeObject(dtlEntityList));
 
                    operateResult = UseTransaction(trans =>
                      {
                          if (mstEntity != null)
                          {
                              //新增还料主表
                              CreateDAL<DapperDAL<TN_WM_ITEMBACK_MSTEntity>>().Add(mstEntity, trans);
                          }
 
                          if (dtlEntityList.Any())
                          {
                              //新增还料子表
                              CreateDAL<DapperDAL<TN_WM_ITEMBACK_DTLEntity>>().AddRange(dtlEntityList, trans);
                          }
                      });
                    Log.Info("===>保存还料执行结果:====>", JsonConvert.SerializeObject(operateResult));
                }
            }
            catch (Exception ex)
            {
                return OperateResult.Error(ex.Message.ToString());
            }
 
            return operateResult;
 
 
 
        }
        #endregion
 
        /// <summary>
        /// 获取可还料单列表
        /// </summary>
        /// <param name="CN_S_OP_NO">模糊查询条件:还料单号</param>
        /// <returns></returns>
        public List<TN_WM_ITEMBACK_MSTEntity> GetItemBackList(string opNo)
        {
            return CreateDAL<TN_WM_ITEMBACK_MSTDAL>().GetItemBackList(opNo);
        }
 
        #region 根据单号获取主子表信息(PDA)
        /// <summary>
        /// 根据单号获取主子表信息
        /// </summary>
        /// <param name="CN_S_OP_NO">模糊查询条件:还料单号</param>
        /// <returns></returns>
        public TN_WM_ITEMBACK_MSTEntity GetItemBackMstAndDtl(string opNo)
        {
            TN_WM_ITEMBACK_MSTEntity mstEntity = CreateDAL<DapperDAL<TN_WM_ITEMBACK_MSTEntity>>().GetSingleEntity(new { CN_S_OP_NO = opNo });
            List<TN_WM_ITEMBACK_DTLEntity> dtlEntity = CreateDAL<DapperDAL<TN_WM_ITEMBACK_DTLEntity>>().GetList(new { CN_S_OP_NO = opNo });
            foreach (var item in dtlEntity)
            {
                AutoBomItemEntity itemEnity = BLLCreator.Create<TN_WMS_ITEMBLL>().GetItem(item.CN_S_ITEM_CODE);
                item.CN_S_MODEL = itemEnity == null ? "" : itemEnity.CN_S_MODEL;
            }
            mstEntity.DTLEntity = dtlEntity;
            return mstEntity;
        }
        #endregion
    }
}