wxw
14 小时以前 f3a9a3ad429d86028c884e3476dc0badcd8da966
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -1,5 +1,6 @@
using Model.InterFaceModel;
using Model.ModelDto;
using Model.ModelDto.BllAsnDto;
using Model.ModelDto.SysDto;
using Model.ModelVm;
using Model.ModelVm.SysVm;
@@ -138,7 +139,7 @@
        }
        //获取入库单明细剩余打印数量
        public string GetAsnDetailQtyList(int id)
        public LabelPrintInfoDto GetAsnDetailQtyList(int id)
        {
            try
            {
@@ -147,7 +148,11 @@
                {
                    throw new Exception("未查询到入库单明细");
                }
                var data = new LabelPrintInfoDto();
                data.ProductionTime = string.IsNullOrEmpty(detail.Lot1) ? "" : Convert.ToDateTime(detail.Lot1).ToString("yyyy-MM-dd");
                data.ExpirationTime = string.IsNullOrEmpty(detail.Lot2) ? "" : Convert.ToDateTime(detail.Lot2).ToString("yyyy-MM-dd");
                data.SupplierLot = detail.SupplierLot;
                var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty + (m.SamplingQty == null? 0: m.SamplingQty));
                if (labelQty == null)
                {
@@ -158,7 +163,8 @@
                {
                    qty = 0;
                }
                return qty.ToString();
                data.Qty = qty.ToString();
                return data;
            }
            catch (Exception e)
            {
@@ -353,12 +359,27 @@
                                detailModel.LotNo = maxLotNo;
                            }
                        }
                        if (model.Type == "0" || model.Type == "1" || model.Type == "2" || model.Type == "3" || model.Type == "4" && model.Type == "8")
                        //if (model.Type == "0" || model.Type == "1" || model.Type == "2" || model.Type == "3" || model.Type == "4" && model.Type == "8")
                        //{
                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                        //    {
                        //        throw new Exception("当前单据类型批次不可为空!");
                        //    }
                        //}
                        detailModel.BoxCodeStr = detailModel.LotNo;
                        if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                        {
                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                            string toDayTime = DateTime.Now.ToString("yyyyMM");
                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
                            if(string.IsNullOrWhiteSpace(maxBoxCodeStr))
                            {
                                throw new Exception("当前单据类型批次不可为空!");
                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                            }
                            else
                            {
                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
                            }
                            detailModel.BoxCodeStr = maxBoxCodeStr;
                        }
                        // 判断是否已存在当前明细
@@ -412,7 +433,7 @@
                            SkuNo = detailModel.SkuNo,
                            SkuName = detailModel.SkuName,
                            Standard = detailModel.Standard,
                            LotNo = detailModel.LotNo.Trim(),
                            LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                            LotText = detailModel.LotText,
                            Qty = (decimal)detailModel.Qty,
                            PackagNo = detailModel.PackagNo,
@@ -428,6 +449,7 @@
                            InspectStatus = "0",
                            Lot1 = lot1, //生产日期
                            Lot2 = lot2, // 过期日期
                            BoxCodeStr = detailModel.BoxCodeStr,
                            UDF1 = detailModel.UDF1,
                            UDF2 = detailModel.UDF2,
                            UDF3 = detailModel.UDF3,
@@ -553,13 +575,13 @@
                            return strMessage;
                        }
                    
                        if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
                        {
                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                            {
                                throw new Exception("当前单据类型批次不可为空!");
                            }
                        }
                        //if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
                        //{
                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                        //    {
                        //        throw new Exception("当前单据类型批次不可为空!");
                        //    }
                        //}
                        if (TypeLot.Contains(model.Type)) 
                        {
@@ -589,29 +611,39 @@
                        //生成自有批次
                        if (detailModel.Id == 0 || detailModel.Id == null || string.IsNullOrWhiteSpace(detailModel.LotNo))
                        {
                            var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
                            if (string.IsNullOrWhiteSpace(maxLotNo))
                            //var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
                            //if (string.IsNullOrWhiteSpace(maxLotNo))
                            //{
                            //    maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
                            //}
                            //if (string.IsNullOrWhiteSpace(maxLotNo))
                            //{
                            //    maxLotNo = toDayTime.Substring(2, 6) + "0001";
                            //}
                            //else
                            //{
                            //    var lotStr = maxLotNo.Substring(0, 6);
                            //    var timeStr = toDayTime.Substring(2, 6);
                            //    if (lotStr == timeStr)
                            //    {
                            //        maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
                            //    }
                            //    else
                            //    {
                            //        maxLotNo = timeStr + "0001";
                            //    }
                            //}
                            //detailModel.LotNo = maxLotNo;
                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
                            if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
                            {
                                maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
                            }
                            if (string.IsNullOrWhiteSpace(maxLotNo))
                            {
                                maxLotNo = toDayTime.Substring(2, 6) + "0001";
                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                            }
                            else
                            {
                                var lotStr = maxLotNo.Substring(0, 6);
                                var timeStr = toDayTime.Substring(2, 6);
                                if (lotStr == timeStr)
                                {
                                    maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
                                }
                                else
                                {
                                    maxLotNo = timeStr + "0001";
                                }
                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
                            }
                            detailModel.LotNo = maxLotNo;
                            detailModel.BoxCodeStr = maxBoxCodeStr;
                        }
                        if (detailModel.Id == 0 || detailModel.Id == null)
@@ -630,7 +662,7 @@
                                SkuNo = detailModel.SkuNo,
                                SkuName = detailModel.SkuName,
                                Standard = detailModel.Standard,
                                LotNo = detailModel.LotNo.Trim(),
                                LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                                LotText = detailModel.LotText,
                                Qty = (decimal)detailModel.Qty,
                                PackagNo = detailModel.PackagNo,
@@ -646,6 +678,7 @@
                                InspectStatus = "0",
                                Lot1 = detailModel.Lot1,
                                Lot2 = detailModel.Lot2,
                                BoxCodeStr = detailModel.BoxCodeStr,
                                UDF1 = detailModel.UDF1,
                                UDF2 = detailModel.UDF2,
                                UDF3 = detailModel.UDF3,
@@ -695,7 +728,7 @@
                            detailModel.Money = detailModel.Price * detailModel.Qty;
                            dbDetail.Qty = (decimal)detailModel.Qty;
                            dbDetail.LotNo = detailModel.LotNo;
                            dbDetail.LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim();
                            dbDetail.Money = detailModel.Money;
                            dbDetail.LotText = detailModel.LotText;
                            dbDetail.SupplierLot = detailModel.SupplierLot;