wxw
2 天以前 2cafdd83b5173ca7e78dffcde63897b4be251179
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)
            {
@@ -364,7 +370,9 @@
                        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);
                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>()
                                .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK")
                                && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
                            if(string.IsNullOrWhiteSpace(maxBoxCodeStr))
                            {
                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
@@ -399,18 +407,18 @@
                        }
                        string lot1 = detailModel.Lot1;
                        string lot2 = detailModel.Lot2;
                        if (sku.IsPasteCode == "0")
                        if (sku.IsInspect == "0")//是否免检,0:否 1:是
                        {
                            //不贴标物料 生产日期、有效期不能为空
                            //不免检物料 生产日期、有效期不能为空
                            DateTime lot12;
                            DateTime lot22;
                            if (!DateTime.TryParse(detailModel.Lot1, out lot12))
                            {
                                throw new Exception("非贴标物料生产日期转换失败");
                                throw new Exception("不免检物料生产日期转换失败");
                            }
                            if (!DateTime.TryParse(detailModel.Lot2, out lot22))
                            {
                                throw new Exception("非贴标物料过期日期转换失败");
                                throw new Exception("不免检物料过期日期转换失败");
                            }
                            lot1 = lot12.ToString();
                            lot2 = lot22.ToString();
@@ -628,7 +636,9 @@
                            //    }
                            //}
                            //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);
                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>()
                                .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK")
                                && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
                            if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
                            {
                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
@@ -695,6 +705,7 @@
                                             && it.IsBelt == detailModel.IsBelt
                                             && it.Lot1 == detailModel.Lot1                                 // 生产日期
                                             && it.Lot2 == detailModel.Lot2                                 // 过期日期
                                             && it.BoxCodeStr == detailModel.BoxCodeStr
                                             && it.UDF1 == detailModel.UDF1
                                             && it.UDF2 == detailModel.UDF2
                                             && it.UDF3 == detailModel.UDF3
@@ -729,6 +740,7 @@
                            dbDetail.IsBale = detailModel.IsBale;
                            dbDetail.Lot1 = detailModel.Lot1;
                            dbDetail.Lot2 = detailModel.Lot2;
                            dbDetail.BoxCodeStr = detailModel.BoxCodeStr;
                            dbDetail.UDF1 = detailModel.UDF1;
                            dbDetail.UDF2 = detailModel.UDF2;
                            dbDetail.UDF3 = detailModel.UDF3;
@@ -1244,77 +1256,64 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ErpModel CreateAsn(AsnInfo model)
        public ErpModel CreateAsn(SendAsnVm model,string userName)
        {
            try
            {
                var resultModel = new ErpModel() { Success = -1, Message = "" };
                if (string.IsNullOrEmpty(model.AsnType))
                if (string.IsNullOrEmpty(model.billType.ToString()))
                {
                    resultModel.Message = "单据类型不可为空!";
                    return resultModel;
                }
                if (string.IsNullOrEmpty(model.Customer))
                {
                    resultModel.Message = "客户不可为空!";
                    return resultModel;
                }
                if (string.IsNullOrEmpty(model.OrderCode))
                if (string.IsNullOrEmpty(model.orderNo.ToString()))
                {
                    resultModel.Message = "上游系统单号不可为空!";
                    return resultModel;
                }
                if (model.AsnDetails.Count <= 0)
                if (model.orderDCmdList.Count <= 0)
                {
                    resultModel.Message = "入库单明细不可为空!";
                    return resultModel;
                }
                // 根据客户编号获取客户名称
                var CustomerModel = Db.Queryable<SysCustomer>().First(it => it.CustomerNo == model.Customer && it.IsDel == "0");
                if (CustomerModel == null)
                {
                    resultModel.Message = "客户编号不存在!";
                    return resultModel;
                }
                // 入库总表信息
                string asnNo = new Common().GetMaxNo("ASN");
                var asnModel = new BllArrivalNotice()
                {
                    ASNNo = asnNo,
                    Status = "0",//等待执行
                    Type = model.AsnType,
                    Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin,
                    CustomerNo = model.Customer,
                    CustomerName = CustomerModel.CustomerName,
                    OrderCode = model.OrderCode,
                    UserName = model.Username
                    Type = model.billType.ToString(),
                    Origin = "SAP",
                    CustomerNo = model.vendorNo,
                    CustomerName = model.vendorName,
                    OrderCode = model.orderNo.ToString(),
                    UserName = userName
                };
                // 入库明细表信息
                List<BllArrivalNoticeDetail> detailModels = new List<BllArrivalNoticeDetail>();
                foreach (AsnDetail asnDetailModel in model.AsnDetails)
                foreach (var asnDetailModel in model.orderDCmdList)
                {
                    if (string.IsNullOrEmpty(asnDetailModel.SkuNo))
                    if (string.IsNullOrEmpty(asnDetailModel.skuNo.ToString()))
                    {
                        resultModel.Message = "物料编码不可为空!";
                        return resultModel;
                    }
                    if (asnDetailModel.Qty <= 0)
                    if (Convert.ToDecimal(asnDetailModel.expectedQty) <= 0)
                    {
                        resultModel.Message = "数量应为正整数!";
                        resultModel.Message = "应收物料数量应大于0!";
                        return resultModel;
                    }
                    if (string.IsNullOrEmpty(asnDetailModel.LotNo))
                    if (string.IsNullOrEmpty(asnDetailModel.lotNo.ToString()))
                    {
                        resultModel.Message = "批次号不可为空!";
                        return resultModel;
                    }
                    // 获取物料详细信息
                    var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.SkuNo && it.IsDel == "0");
                    var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.skuNo.ToString() && it.IsDel == "0");
                    if (skuModel == null)
                    {
                        resultModel.Message = "不存在当前物料信息!";
@@ -1326,16 +1325,18 @@
                    var detailModel = new BllArrivalNoticeDetail()
                    {
                        ASNNo = asnNo,
                        SkuNo = asnDetailModel.SkuNo,
                        SkuNo = asnDetailModel.skuNo.ToString(),
                        SkuName = skuModel.SkuName,
                        Standard = skuModel.Standard,
                        LotNo = asnDetailModel.LotNo,
                        LotNo = asnDetailModel.lotNo.ToString(),
                        LotText = "",
                        Qty = (decimal)asnDetailModel.Qty,
                        FactQty=0,
                        CompleteQty=0,
                        Qty = Convert.ToDecimal(asnDetailModel.expectedQty),
                        FactQty = 0,
                        CompleteQty = 0,
                        PackagNo = skuModel.PackagNo,
                        SupplierLot = asnDetailModel.SupplierLot,
                        SupplierLot = asnDetailModel.supplyBatch,//生产日期
                        Lot1 = asnDetailModel.productionDate,//过期日期
                        Lot2 = asnDetailModel.expireDate,
                        Status = "0",
                        IsSampling = "0",
                        InspectStatus = "0",