chengsc
2024-11-03 5ce969ed34e91c931cce38e2feb5d2c208633a96
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
@@ -15,6 +15,7 @@
using WMS.Entity.Context;
using WMS.Entity.SysEntity;
using WMS.IBLL.IBllAsnServer;
using ZXing;
namespace WMS.BLL.BllAsnServer
{
@@ -296,6 +297,7 @@
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                    })
                    .OrderByDescending(a=>a.BoxNo)
                    .OrderByDescending(a => a.CreateTime)
                    .ToOffsetPage(model.Page, model.Limit, ref total);
                count = total;
@@ -463,7 +465,7 @@
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                    }).OrderByDescending(a => a.CreateTime).OrderBy(a => a.BoxNo).ToOffsetPage(model.Page, model.Limit, ref total);
                    }).OrderBy(a => a.BoxNo).OrderByDescending(a => a.CreateTime).ToOffsetPage(model.Page, model.Limit, ref total);
                count = total;
                return data;
            }
@@ -532,14 +534,47 @@
        public List<BllBoxInfo> AddLabelBox(int imId, string isReset, decimal arriveQty, string productionTime, string expirationTime, string storeTime,string supplierLot, int userId)
        {
            try
            {
            {
                #region 单据、物料、包装、标签信息获取
                if (string.IsNullOrWhiteSpace(productionTime))
                {
                    throw new Exception("生产日期不能为空");
                }
                if (!string.IsNullOrWhiteSpace(expirationTime) && !string.IsNullOrWhiteSpace(storeTime))
                {
                    throw new Exception("有效期和储存期不能同时填写");
                }
                if (isReset != "0")
                {
                    throw new Exception("不可重置批次");
                }
                DateTime proTime;
                DateTime expTime;
                DateTime stoTime;
                var bl1= DateTime.TryParse(productionTime, out proTime);
                var bl2= DateTime.TryParse(expirationTime, out expTime);
                var bl3= DateTime.TryParse(storeTime, out stoTime);
                if (!bl1)
                {
                    throw new Exception("生产日期转换失败");
                }
                if (!bl2 && !string.IsNullOrWhiteSpace(expirationTime))
                {
                    throw new Exception("有效期转换失败");
                }
                if (!bl3 && !string.IsNullOrWhiteSpace(storeTime))
                {
                    throw new Exception("储存期转换失败");
                }
                var asnList = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == imId && m.IsDel == "0");
                if (asnList == null)
                {
                    throw new Exception("未查询到单据明细信息");
                }
                if (asnList.LotNo.Length != 10)
                {
                    throw new Exception("单据进厂编号位数长度错误");
                }
                var asn = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0");
                if (asn == null)
@@ -676,24 +711,24 @@
                        }
                        else
                        {
                            var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList();
                            if (labelCount.Count <= 0)
                            {
                                throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;");
                            }
                            maxLotNoStr = labelCount.Max(a => a.LotNo);
                            if (string.IsNullOrWhiteSpace(maxLotNoStr))
                            {
                                maxLotNoStr = toDayTime.Substring(2, 6) + "0001";
                            }
                            //var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList();
                            //if (labelCount.Count <= 0)
                            //{
                            //    throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;");
                            //}
                            //maxLotNoStr = labelCount.Max(a => a.LotNo);
                            maxLotNoStr = asnList.LotNo;
                            //if (string.IsNullOrWhiteSpace(maxLotNoStr))
                            //{
                            //    maxLotNoStr = toDayTime.Substring(2, 6) + "0001";
                            //}
                            maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
                        }
                        
                    }
                    else
                    {
                        var maxCode = Db.Queryable<BllBoxInfo>().Where(m=>m.Origin == "WMS生成").Max(a => a.LotNo);                        // 获取今天最大批次号
                        var maxCode = Db.Queryable<BllBoxInfo>().Where(m=>m.Origin == "WMS生成").Max(a => a.LotNo); // 获取今天最大批次号 20241013
                        if (string.IsNullOrWhiteSpace(maxCode))
                        {
                            maxLotNoStr = toDayTime.Substring(2, 6) + "0001";
@@ -757,7 +792,7 @@
                            ASNNo = asnList.ASNNo,
                            ASNDetailNo = asnList.Id,
                            BoxNo = maxBoxCode, 
                            Qty = int.Parse(boxQty.ToString()),
                            Qty = boxQty,
                            FullQty = bNum,
                            Status = "0",
                            SkuNo = asnList.SkuNo,
@@ -770,15 +805,20 @@
                            BitBoxMark = bNum > boxQty ? "1":"0",
                            InspectStatus = "0",
                            ProductionTime = DateTime.Parse(productionTime),
                            StoreTime = DateTime.Parse(storeTime),
                            ExpirationTime = DateTime.Parse(expirationTime),
                            ProductionTime = proTime,
                            Origin = "WMS生成",
                            CreateUser = userId,
                            CreateTime = DateTime.Now,
                        };
                        if (bl2)
                        {
                            labelModel.ExpirationTime = expTime;
                        }
                        if (bl3)
                        {
                            labelModel.StoreTime = stoTime;
                        }
                        Db.Insertable(labelModel).ExecuteCommand();
                        modelList.Add(labelModel);
                    }
@@ -842,17 +882,18 @@
                        }
                        else
                        {
                            var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList();
                            if (labelCount.Count <= 0)
                            {
                                throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;");
                            }
                            maxCodestr2 = labelCount.Max(a => a.LotNo); ;
                            //var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList();
                            //if (labelCount.Count <= 0)
                            //{
                            //    throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;");
                            //}
                            //maxCodestr2 = labelCount.Max(a => a.LotNo); ;
                            maxCodestr2 = asnList.LotNo;
                            
                            if (string.IsNullOrWhiteSpace(maxCodestr2))
                            {
                                maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
                            }
                            //if (string.IsNullOrWhiteSpace(maxCodestr2))
                            //{
                            //    maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
                            //}
                            maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);//箱号;
                            maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//支号;
                        }
@@ -962,8 +1003,8 @@
                                maxboxcode3 = maxboxcode3.Substring(0, 11) + (int.Parse(maxboxcode3.Substring(11, 4)) + 1).ToString().PadLeft(4, '0'); 
                            }
                            var ssss = d.ToString("0");
                            var sss = int.Parse(ssss);
                            //var ssss = d.ToString("0");
                            //var sss = int.Parse(ssss);
                            // 将条码保存到原料条码表
                            var labelModel = new BllBoxInfo()
@@ -972,7 +1013,7 @@
                                ASNDetailNo = asnList.Id,
                                BoxNo = maxboxcode2,
                                BoxNo3 = maxboxcode3,
                                Qty = sss,
                                Qty = d,
                                FullQty = bNum,
                                Status = "0",
                                SkuNo = asnList.SkuNo,
@@ -980,20 +1021,25 @@
                                LotNo = maxCodestr2,
                                Standard = asnList.Standard,
                                PackageStandard = packStr,
                                SupplierLot = asnList.SupplierLot,
                                SupplierLot = supplierLot,
                                InspectMark = "0",
                                BitBoxMark = bNum > boxQty ? "1" : "0",
                                InspectStatus = "0",
                                ProductionTime = DateTime.Parse(productionTime),
                                StoreTime = DateTime.Parse(storeTime),
                                ExpirationTime = DateTime.Parse(expirationTime),
                                ProductionTime = proTime,
                                Origin = "WMS生成",
                                CreateUser = userId,
                                CreateTime = DateTime.Now,
                            };
                            if (bl2)
                            {
                                labelModel.ExpirationTime = expTime;
                            }
                            if (bl3)
                            {
                                labelModel.StoreTime = stoTime;
                            }
                            Db.Insertable(labelModel).ExecuteCommand();
                            modelList.Add(labelModel);
                        }
@@ -1653,17 +1699,17 @@
                        throw new Exception("当前单据批次的标签已有已使用,不能删除");
                    }
                    foreach (var item in asnList)
                    {
                        if (string.IsNullOrWhiteSpace(item.LotNo))
                        {
                            continue;
                        }
                    //foreach (var item in asnList)
                    //{
                    //    if (string.IsNullOrWhiteSpace(item.LotNo))
                    //    {
                    //        continue;
                    //    }
                        item.LotNo = "";
                        Db.Updateable(item).ExecuteCommand();
                    //    item.LotNo = "";
                    //    Db.Updateable(item).ExecuteCommand();
                    }
                    //}
                    Db.Deleteable(labelList).ExecuteCommand();
                }
                else  //删除固定批次标签
@@ -1674,37 +1720,37 @@
                        throw new Exception("当前单据批次的标签已有已使用,不能删除");
                    }
                    foreach (var item in asnList)
                    {
                        if (string.IsNullOrWhiteSpace(item.LotNo) || item.LotNo!=lotNo)
                        {
                            continue;
                        }
                    //foreach (var item in asnList)
                    //{
                    //    if (string.IsNullOrWhiteSpace(item.LotNo) || item.LotNo!=lotNo)
                    //    {
                    //        continue;
                    //    }
                        var strList = item.LotNo.Split(";");
                        var updateLotNo = "";
                        foreach (var str in strList)
                        {
                            if (string.IsNullOrWhiteSpace(str) || str == lotNo)
                            {
                                continue;
                            }
                    //    var strList = item.LotNo.Split(";");
                    //    var updateLotNo = "";
                    //    foreach (var str in strList)
                    //    {
                    //        if (string.IsNullOrWhiteSpace(str) || str == lotNo)
                    //        {
                    //            continue;
                    //        }
                            if (string.IsNullOrWhiteSpace(updateLotNo))
                            {
                                updateLotNo = str;
                            }
                            else
                            {
                                updateLotNo += ";" + str;
                            }
                    //        if (string.IsNullOrWhiteSpace(updateLotNo))
                    //        {
                    //            updateLotNo = str;
                    //        }
                    //        else
                    //        {
                    //            updateLotNo += ";" + str;
                    //        }
                             
                        }
                    //    }
                        item.LotNo = updateLotNo;
                        Db.Updateable(item).ExecuteCommand();
                    //    item.LotNo = updateLotNo;
                    //    Db.Updateable(item).ExecuteCommand();
                    }
                    //}
                    Db.Deleteable(labelList).ExecuteCommand();
                }
@@ -1726,5 +1772,54 @@
            }
        }
        //编辑标签数量
        public void EditLabelQty(int id, string qty, int userId)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(qty))
                {
                    throw new Exception("编辑数量不可为空");
                }
                var qtyData = 0m;
                var isOk = decimal.TryParse(qty, out qtyData);
                var boxInfo = Db.Queryable<BllBoxInfo>().First(m => m.IsDel == "0" && m.Id == id);
                if (boxInfo == null)
                {
                    throw new Exception("未查询到该标签信息");
                }
                if (isOk)
                {
                    if (qtyData <= 0)
                    {
                        throw new Exception("数量不能小于等于0");
                    }
                    boxInfo.Qty = qtyData;
                    Db.Updateable(boxInfo).ExecuteCommand();
                }
                else
                {
                    throw new Exception("数量转换失败");
                }
                var msg = $"编辑了箱号:{boxInfo.BoxNo}";
                if (!string.IsNullOrWhiteSpace(boxInfo.BoxNo3))
                {
                    msg += $"、支号:{boxInfo.BoxNo3}";
                }
                msg += "的标签数量信息";
                new OperationASNServer().AddLogOperationAsn("入库作业", "物料标签", boxInfo.BoxNo, "编辑", msg, userId);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
    }
}