Browse Source

完成机具回仓库功能,待测试

lichunlei 4 năm trước cách đây
mục cha
commit
3c4771bbeb

+ 195 - 0
AppStart/ExcelHelper.cs

@@ -785,6 +785,201 @@ namespace MySystem
                                 }
                             }
                         }
+                        else if (_Kind == "4")
+                        {
+                            Dictionary<string, int> storeData = new Dictionary<string, int>();
+                            Dictionary<string, int> toStoreData = new Dictionary<string, int>();
+                            using (var tran = db.Database.BeginTransaction())
+                            {
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string BatchNo = dr[0].ToString(); // 业务批次号
+                                        string OldStoreNo = dr[1].ToString(); // 原仓库编号
+                                        string OldOperator = dr[2].ToString(); // 操作人
+                                        string SnNo = dr[3].ToString(); // SN编号
+                                        SnNo = SnNo.Replace(" ", "");
+                                        string StoreNo = dr[4].ToString(); // 退回仓库编号
+                                        string BrandIdString = dr[5].ToString(); // 产品类型
+                                        string OutNote = "";
+                                        if (list.Columns.Count > 6)
+                                        {
+                                            OutNote = dr[6].ToString(); // 出库备注
+                                        }
+
+                                        int BrandId = int.Parse(function.CheckInt(BrandIdString));
+
+                                        KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
+                                        if (kqProduct.Id > 0)
+                                        {
+                                            StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OldStoreNo) ?? new StoreForCode();
+                                            StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
+                                            if (store.Id > 0)
+                                            {
+                                                StoreForCode tostorefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
+                                                StoreHouse tostore = db.StoreHouse.FirstOrDefault(m => m.Id == tostorefor.StoreId) ?? new StoreHouse();
+                                                if (tostore.Id > 0)
+                                                {
+                                                    MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
+                                                    PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId > 0) ?? new PosMachinesTwo();
+                                                    if (machine.Id > 0)
+                                                    {
+                                                        function.WriteLog(DateTime.Now.ToString() + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(machine), "机具回仓库日志");
+                                                        machine.StoreId = tostorefor.StoreId;
+                                                        machine.BuyUserId = 0;
+                                                        machine.UserId = 0;
+                                                        machine.BindingState = 0;
+                                                        machine.ActivationState = 0;
+                                                        machine.BindingTime = null;
+                                                        machine.ActivationTime = null;
+                                                        machine.OrderId = 0;
+                                                        machine.RecycEndDate = null;
+                                                        machine.PosSnType = 0;
+                                                        machine.BindMerchantId=0;
+                                                        machine.ScanQrTrade = 0;
+                                                        machine.DebitCardTrade = 0;
+                                                        machine.CreditTrade = 0;
+                                                        machine.UserNav = null;
+                                                        machine.IsPurchase = 0;
+                                                        machine.LeaderUserId = 0;
+                                                        machine.PreUserId = 0;
+                                                        db.SaveChanges();
+                                                        if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
+                                                        {
+                                                            storeData.Add(storefor.StoreId + "_" + BrandId, 1);
+                                                        }
+                                                        else
+                                                        {
+                                                            storeData[storefor.StoreId + "_" + BrandId] += 1;
+                                                        }
+                                                        if (!toStoreData.ContainsKey(tostorefor.StoreId + "_" + BrandId))
+                                                        {
+                                                            toStoreData.Add(tostorefor.StoreId + "_" + BrandId, 1);
+                                                        }
+                                                        else
+                                                        {
+                                                            toStoreData[tostorefor.StoreId + "_" + BrandId] += 1;
+                                                        }
+                                                        SuccessCount += 1;
+                                                        RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
+                                                    }
+                                                    else
+                                                    {
+                                                        RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "已在仓库中");
+                                                    }
+                                                }
+                                                else
+                                                {
+                                                    RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的退回仓库编号不正确");
+                                                }
+                                            }
+                                            else
+                                            {
+                                                RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的原仓库编号不正确");
+                                            }
+                                            db.SaveChanges();
+                                        }
+                                        else
+                                        {
+                                            RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
+                                        }
+                                    }
+                                    DoCount += Size;
+                                    foreach (string key in storeData.Keys)
+                                    {
+                                        string[] keylist = key.Split('_');
+                                        int StoreId = int.Parse(keylist[0]);
+                                        int BrandId = int.Parse(keylist[1]);
+                                        int OpStoreNum = storeData[key];
+                                        StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
+                                        StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
+                                        {
+                                            CreateDate = DateTime.Now,
+                                            StoreId = StoreId, //仓库
+                                            TransType = 1, //交易类型
+                                            BrandId = BrandId, //产品类型
+                                            OpStoreNum = OpStoreNum, //操作库存数
+                                            OpSymbol = "-", //操作符
+                                            BeforeTotalNum = store.TotalNum, //操作前总库存数
+                                            AfterTotalNum = store.TotalNum, //操作后总库存数
+                                            BeforeLaveNum = store.LaveNum, //操作前剩余库存数
+                                            AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
+                                            BeforeOutNum = store.OutNum, //操作前出库数
+                                            AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
+                                        }).Entity;
+                                        db.SaveChanges();
+                                        string ChangeNo = "SC";
+                                        int StoreStockChangeId = balance.Id;
+                                        string StoreStockChangeIdString = StoreStockChangeId.ToString();
+                                        for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
+                                        {
+                                            StoreStockChangeIdString = "0" + StoreStockChangeIdString;
+                                        }
+                                        ChangeNo += StoreStockChangeIdString;
+                                        balance.TransRecordNo = ChangeNo; //交易流水编号
+                                        store.LaveNum -= OpStoreNum;
+                                        db.SaveChanges();
+                                    }
+                                    foreach (string key in toStoreData.Keys)
+                                    {
+                                        string[] keylist = key.Split('_');
+                                        int StoreId = int.Parse(keylist[0]);
+                                        int BrandId = int.Parse(keylist[1]);
+                                        int OpStoreNum = toStoreData[key];
+                                        StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
+                                        StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
+                                        {
+                                            CreateDate = DateTime.Now,
+                                            StoreId = StoreId, //仓库
+                                            TransType = 0, //交易类型
+                                            BrandId = BrandId, //产品类型
+                                            OpStoreNum = OpStoreNum, //操作库存数
+                                            OpSymbol = "+", //操作符
+                                            BeforeTotalNum = store.TotalNum, //操作前总库存数
+                                            AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
+                                            BeforeLaveNum = store.LaveNum, //操作前剩余库存数
+                                            AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
+                                            BeforeOutNum = store.OutNum, //操作前出库数
+                                            AfterOutNum = store.OutNum, //操作后出库数
+                                        }).Entity;
+                                        db.SaveChanges();
+                                        string ChangeNo = "SC";
+                                        int StoreStockChangeId = balance.Id;
+                                        string StoreStockChangeIdString = StoreStockChangeId.ToString();
+                                        for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
+                                        {
+                                            StoreStockChangeIdString = "0" + StoreStockChangeIdString;
+                                        }
+                                        ChangeNo += StoreStockChangeIdString;
+                                        balance.TransRecordNo = ChangeNo; //交易流水编号
+                                        store.LaveNum += OpStoreNum;
+                                        db.SaveChanges();
+                                    }
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
+                                    RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "BsServerAdminError");
+                                }
+                            }
+                        }
                         else if (_Kind == "UserCashRecord")
                         {
                             using (var tran = db.Database.BeginTransaction())

+ 1 - 0
Areas/Admin/Views/MainServer/StoreHouse/Index.cshtml

@@ -133,6 +133,7 @@
                     <button class="layui-btn" data-type="ImportMachine"><i class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>机具入库</button>
                     <button class="layui-btn" data-type="ImportChange"><i class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>仓库调拨</button>
                     <button class="layui-btn" data-type="ImportSend"><i class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>仓库发货至创客</button>
+                    <button class="layui-btn" data-type="ImportBack"><i class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>机具回仓库</button>
                     }
                     @if (RightInfo.Contains("," + right + "_sycn,"))
                     {

+ 47 - 0
wwwroot/layuiadmin/modules_main/StoreHouse_Admin.js

@@ -593,6 +593,53 @@ layui.config({
                         submit = layero.find('iframe').contents().find('#' + submitID);
 
 
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreHouse/ImportPost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        },
+        ImportBack: function () {
+            var perContent = layer.open({
+                type: 2,
+                title: '机具回仓库',
+                content: 'Import?ExcelKind=4',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
                     //监听提交
                     iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
                         var field = data.field; //获取提交的字段