From 4e506fb732bc1c0c23d5996ffb8d81eb7e9b4b65 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期六, 02 八月 2025 08:55:47 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs |  710 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 396 insertions(+), 314 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 16cb84d..585aeea 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -1,14 +1,17 @@
 锘縰sing Model.InterFaceModel;
 using Model.ModelDto;
+using Model.ModelDto.BllAsnDto;
 using Model.ModelDto.SysDto;
 using Model.ModelVm;
 using Model.ModelVm.SysVm;
+using Newtonsoft.Json;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq.Expressions;
 using System.Threading.Tasks;
+using Utility.Tools;
 using WMS.BLL.LogServer;
 using WMS.DAL;
 using WMS.Entity.BllAsnEntity;
@@ -138,7 +141,7 @@
         }
 
         //鑾峰彇鍏ュ簱鍗曟槑缁嗗墿浣欐墦鍗版暟閲�
-        public string GetAsnDetailQtyList(int id)
+        public LabelPrintInfoDto GetAsnDetailQtyList(int id)
         {
             try
             {
@@ -147,14 +150,23 @@
                 {
                     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)
+                {
+                    labelQty = 0;
+                }
                 var qty = detail.Qty - labelQty;
                 if (qty<0)
                 {
                     qty = 0;
                 }
-                return qty.ToString();
+                data.Qty = qty.ToString();
+                return data;
             }
             catch (Exception e)
             {
@@ -297,6 +309,8 @@
                     };
 
                     List<BllArrivalNoticeDetail> details = new List<BllArrivalNoticeDetail>();
+                    var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList();
+
                     foreach (ArrivalNoticeDetailVm detailModel in model.AsnDetail)
                     {
                         if (string.IsNullOrEmpty(detailModel.SkuNo))
@@ -314,7 +328,7 @@
                             strMessage = "-1:鏁伴噺蹇呴』澶т簬0;";
                             continue;
                         }
-
+                        
                         if ( model.Type == "5" || model.Type == "6" || model.Type == "7")
                         {
                             if (!string.IsNullOrWhiteSpace(detailModel.LotNo))
@@ -347,12 +361,29 @@
                                 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("yyyyMM") == DateTime.Now.ToString("yyyyMM")).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;
                         }
 
                         // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
@@ -371,6 +402,33 @@
                         {
                             detailModel.Price = 0;
                         }
+                        var sku = skuList.FirstOrDefault(m => m.SkuNo == detailModel.SkuNo);
+                        if (sku == null)
+                        {
+                            throw new Exception("鏈煡璇㈠嚭鐗╂枡淇℃伅!");
+                        }
+                        string lot1 = detailModel.Lot1;
+                        string lot2 = detailModel.Lot2;
+                        if (sku.IsInspect == "0")//鏄惁鍏嶆锛�0锛氬惁 1锛氭槸
+                        {
+                            //涓嶅厤妫�鐗╂枡 鐢熶骇鏃ユ湡銆佹湁鏁堟湡涓嶈兘涓虹┖
+                            DateTime lot12;
+                            DateTime lot22;
+                            if (!DateTime.TryParse(detailModel.Lot1, out lot12))
+                            {
+                                throw new Exception("涓嶅厤妫�鐗╂枡鐢熶骇鏃ユ湡杞崲澶辫触");
+                            }
+                            if (!DateTime.TryParse(detailModel.Lot2, out lot22))
+                            {
+                                throw new Exception("涓嶅厤妫�鐗╂枡杩囨湡鏃ユ湡杞崲澶辫触");
+                            }
+                            lot1 = lot12.ToString();
+                            lot2 = lot22.ToString();
+                        }
+                        if (string.IsNullOrWhiteSpace(detailModel.PackagNo))
+                        {
+                            throw new Exception("鍖呰涓嶈兘涓虹┖");
+                        }
                         // 璁$畻鍑烘�婚噾棰�
                         detailModel.Money = detailModel.Price * detailModel.Qty;
                         BllArrivalNoticeDetail detail = new BllArrivalNoticeDetail()
@@ -379,7 +437,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,
@@ -393,6 +451,9 @@
                             Status = "0",
                             IsSampling = "0",
                             InspectStatus = "0",
+                            Lot1 = lot1, //鐢熶骇鏃ユ湡
+                            Lot2 = lot2, // 杩囨湡鏃ユ湡
+                            BoxCodeStr = detailModel.BoxCodeStr,
                             UDF1 = detailModel.UDF1,
                             UDF2 = detailModel.UDF2,
                             UDF3 = detailModel.UDF3,
@@ -439,38 +500,35 @@
             }
         }
 
-        //缂栬緫鍏ュ簱鍗曟嵁
+        /// <summary>
+        /// 缂栬緫鍏ュ簱鍗曟嵁
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
         public string EditArrivalNotice(ArrivalNoticeVm model)
         {
             string strMessage = "";
-            string sqlString = string.Empty;
-            string sqlDetailStr = string.Empty;
             try
             {
                 lock (AsnLock)
                 {
-                    //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
+                    // 鍒ゆ柇鍗曟嵁绫诲瀷鍙婃壒娆¤鍒欒鏄�
                     // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴� 8 鐢熶骇閫�鏂欏叆搴�
-                    //0銆�2銆�3銆�4 鎵规涓嶈兘涓虹┖
-                    //1銆佹坊鍔犲繀椤讳负绌恒�佺紪杈戜笉鍙负绌猴紝涓嶈兘鏇存敼
-                    //5銆�6 鎵规鍙负绌哄彲涓嶄负绌�
-                    //7 蹇呴』涓虹┖
-                    var TypeLot = " 5, 6, 7"; //鎵规涓虹敓鎴愭壒娆″崟鎹被鍨�
-                    
+                    var TypeLot = " 5, 6, 7"; // 鎵规涓虹敓鎴愭壒娆″崟鎹被鍨�
+
+                    // 楠岃瘉鍗曟嵁瀛樺湪鎬у拰鐘舵��
                     var asnInfo = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0");
-                    if (asnInfo == null) 
+                    if (asnInfo == null)
                     {
-                        strMessage = "-1:鍗曞彿涓嶅瓨鍦紝鎴栧凡鍒犻櫎!;";
-                        return strMessage;
+                        return "-1:鍗曞彿涓嶅瓨鍦紝鎴栧凡鍒犻櫎!;";
                     }
                     if (asnInfo.Status != "0")
                     {
-                        strMessage = "-1:鍗曟嵁鐘舵�佸彉鏇达紝涓嶅彲缂栬緫;";
-                        return strMessage;
+                        return "-1:鍗曟嵁鐘舵�佸彉鏇达紝涓嶅彲缂栬緫;";
                     }
 
                     var dateTime = DateTime.Now;
-                    // 缂栬緫鎬诲崟
+                    // 鏇存柊涓诲崟鎹俊鎭�
                     asnInfo.CustomerNo = model.CustomerNo;
                     asnInfo.CustomerName = model.CustomerName;
                     asnInfo.LotNo = model.LotNo;
@@ -479,222 +537,220 @@
                     asnInfo.UpdateUser = model.CreateUser;
 
                     var detailModels = model.AsnDetail;
-                    sqlDetailStr += $"SELECT * FROM BllArrivalNoticeDetail WHERE ASNNo = '{model.ASNNo}' and isDel = '0';";
-                    //var dbDetailModels = DataContext.Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sqlDetailStr);
-                    var dbDetailModels = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0").ToList();
+                    var dbDetailModels = Db.Queryable<BllArrivalNoticeDetail>()
+                        .Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0").ToList();
 
-                    sqlDetailStr = string.Empty;
                     // 澶勭悊宸插垹闄ょ殑鏄庣粏
-                    foreach (BllArrivalNoticeDetail dbDetailModel in dbDetailModels)
+                    foreach (var dbDetail in dbDetailModels)
                     {
-                        if (detailModels.Count(it => it.Id == dbDetailModel.Id) == 0)
+                        if (!detailModels.Any(it => it.Id == dbDetail.Id))
                         {
-                            dbDetailModel.IsDel = "1";
-                            dbDetailModel.UpdateTime = dateTime;
-                            dbDetailModel.UpdateUser = model.CreateUser;
+                            dbDetail.IsDel = "1";
+                            dbDetail.UpdateTime = dateTime;
+                            dbDetail.UpdateUser = model.CreateUser;
                         }
                     }
 
-                    // 澶勭悊淇敼鍜屾坊鍔犵殑鏄庣粏
+                    // 澶勭悊淇敼鍜屾柊澧炵殑鏄庣粏
                     string toDayTime = dateTime.ToString("yyyymmdd");
                     List<BllArrivalNoticeDetail> addDetails = new List<BllArrivalNoticeDetail>();
                     List<BllArrivalNoticeDetail> editDetails = new List<BllArrivalNoticeDetail>();
-                    var maxLotNo = "";
-                    foreach (ArrivalNoticeDetailVm detailModel in detailModels)
+
+                    foreach (var detailModel in detailModels)
                     {
+                        // 鍩虹楠岃瘉
                         if (string.IsNullOrEmpty(detailModel.SkuNo))
-                        {
-                            strMessage = "-1:鐗╂枡缂栫爜涓嶅彲涓虹┖;";
-                            return strMessage;
-                        }
+                            return "-1:鐗╂枡缂栫爜涓嶅彲涓虹┖;";
+
                         if (string.IsNullOrEmpty(detailModel.SkuName))
-                        {
-                            strMessage = "-1:鐗╂枡鍚嶇О涓嶅彲涓虹┖;";
-                            return strMessage;
-                        }
+                            return "-1:鐗╂枡鍚嶇О涓嶅彲涓虹┖;";
+
                         if (detailModel.Qty == null || detailModel.Qty <= 0)
+                            return "-1:鏁伴噺蹇呴』澶т簬0;";
+
+                        // 鍏抽敭閫昏緫锛氳幏鍙栫墿鏂欑殑鍙楁帶鐘舵��
+                        // 1. 鏍规嵁鐗╂枡缂栫爜鏌ヨ鐗╂枡淇℃伅 FirstOrDefault
+                        var material = Db.Queryable<SysMaterials>()
+                            .First(m => m.SkuNo == detailModel.SkuNo && m.IsDel == "0");
+                        if (material == null)
+                            return $"-1:鐗╂枡缂栫爜{detailModel.SkuNo}涓嶅瓨鍦ㄦ垨宸插垹闄�;";
+
+                        // 2. 灏嗗瓧绗︿覆绫诲瀷鐨処sControlled杞崲涓篵ool锛堟牴鎹疄闄呭彇鍊艰鍒欒皟鏁达級
+                        // 姣斿锛�"1"琛ㄧず鍙楁帶锛�"0"琛ㄧず涓嶅彈鎺э紱鎴�"True"/"False"锛涙垨"鏄�"/"鍚�"
+                        bool isControlled;
+                        if (!bool.TryParse(material.IsControlled, out isControlled))
                         {
-                            strMessage = "-1:鏁伴噺蹇呴』澶т簬0;";
-                            return strMessage;
-                        }
-                    
-                        if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
-                        {
-                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
-                            {
-                                throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
-                            }
+                            // 澶勭悊闈炴爣鍑嗘牸寮忥紙濡�"1"/"0"锛�
+                            isControlled = material.IsControlled == "1" ||
+                                           string.Equals(material.IsControlled, "鏄�", StringComparison.OrdinalIgnoreCase);
                         }
 
-                        if (TypeLot.Contains(model.Type)) 
+                        // 3. 鏍规嵁鍙楁帶鐘舵�侀獙璇佹棩鏈�
+                        if (isControlled)
                         {
-                            if (string.IsNullOrWhiteSpace(detailModel.Lot1)) 
-                            {
-                                throw new Exception("鐢熶骇鏃ユ湡涓嶅彲涓虹┖!");
-                            }
+                            // 鍙楁帶鐘舵�侊細鐢熶骇鏃ユ湡蹇呭~
+                            if (string.IsNullOrWhiteSpace(detailModel.Lot1))
+                                return $"-1:鐗╂枡{detailModel.SkuNo}涓哄彈鎺х墿鏂欙紝鐢熶骇鏃ユ湡涓嶅彲涓虹┖;";
+
+                            // 鍙楁帶鐘舵�侊細杩囨湡鏃ユ湡蹇呭~
                             if (string.IsNullOrWhiteSpace(detailModel.Lot2))
-                            {
+                                return $"-1:鐗╂枡{detailModel.SkuNo}涓哄彈鎺х墿鏂欙紝杩囨湡鏃ユ湡涓嶅彲涓虹┖;";
+
+                            // 楠岃瘉鏃ユ湡鏍煎紡鏈夋晥鎬�
+                            if (!DateTime.TryParse(detailModel.Lot1, out DateTime productionDate))
+                                return $"-1:鐗╂枡{detailModel.SkuNo}鐨勭敓浜ф棩鏈熸牸寮忛敊璇紝璇蜂娇鐢ㄦ湁鏁堟棩鏈熸牸寮�;";
+
+                            if (!DateTime.TryParse(detailModel.Lot2, out DateTime expiryDate))
+                                return $"-1:鐗╂枡{detailModel.SkuNo}鐨勮繃鏈熸棩鏈熸牸寮忛敊璇紝璇蜂娇鐢ㄦ湁鏁堟棩鏈熸牸寮�;";
+
+                            // 楠岃瘉杩囨湡鏃ユ湡涓嶈兘鏃╀簬鐢熶骇鏃ユ湡
+                            if (expiryDate <= productionDate)
+                                return $"-1:鐗╂枡{detailModel.SkuNo}鐨勮繃鏈熸棩鏈熶笉鑳芥棭浜庣敓浜ф棩鏈�;";
+                        }
+                        // 涓嶅彈鎺х姸鎬侊細鏃ユ湡闈炲繀濉紝鏃犻渶楠岃瘉
+
+                        // 鍘熸湁鎵规鐩稿叧楠岃瘉锛堜繚鐣欙級
+                        if (TypeLot.Contains(model.Type))
+                        {
+                            if (string.IsNullOrWhiteSpace(detailModel.Lot1))
+                                throw new Exception("鐢熶骇鏃ユ湡涓嶅彲涓虹┖!");
+
+                            if (string.IsNullOrWhiteSpace(detailModel.Lot2))
                                 throw new Exception("杩囨湡鏃ユ湡涓嶅彲涓虹┖!");
-                            }
                         }
 
-                        // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
-                        var com =  dbDetailModels.Where(m => m.SkuNo == detailModel.SkuNo 
-                        && m.LotNo == detailModel.LotNo && m.Id != detailModel.Id && m.IsDel == "0").Count();
-                        if (com > 0)
+                        // 楠岃瘉鐗╂枡鍜屾壒娆″彿鏄惁閲嶅
+                        if (dbDetailModels.Any(m => m.SkuNo == detailModel.SkuNo
+                                                  && m.LotNo == detailModel.LotNo
+                                                  && m.Id != detailModel.Id
+                                                  && m.IsDel == "0"))
                         {
-                            strMessage = "-1:鐗╂枡鍜屾壒娆″彿閲嶅;";
-                            return strMessage;
+                            return "-1:鐗╂枡鍜屾壒娆″彿閲嶅;";
                         }
 
-                        if (detailModel.Price == null)
-                        {
-                            detailModel.Price = 0;
-                        }
-                        //鐢熸垚鑷湁鎵规
+                        // 澶勭悊浠锋牸榛樿鍊�
+                        detailModel.Price ??= 0;
+
+                        // 鐢熸垚绠辩爜锛堣嚜鏈夋壒娆¢�昏緫锛�
                         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))
-                            {
-                                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("yyyyMM") == DateTime.Now.ToString("yyyyMM"))
+                                .Max(m => m.BoxCodeStr);
+
+                            detailModel.BoxCodeStr = string.IsNullOrWhiteSpace(maxBoxCodeStr)
+                                ? "BK" + toDayTime.Substring(2, 4) + "0001"
+                                : "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
                         }
 
+                        // 澶勭悊鏂板鏄庣粏
                         if (detailModel.Id == 0 || detailModel.Id == null)
                         {
-                            //if (model.Type == "1")
-                            //{
-                            //    strMessage = "-1:閲囪喘鍏ュ簱涓嶅彲鏇存敼鏄庣粏锛屽彧鍙紪杈戞暟閲�;";
-                            //    return strMessage;
-                            //}
-                            // 璁$畻鍑烘�婚噾棰�
                             detailModel.Money = detailModel.Price * detailModel.Qty;
-
-                            BllArrivalNoticeDetail addModel = new BllArrivalNoticeDetail() 
+                            addDetails.Add(new BllArrivalNoticeDetail
                             {
                                 ASNNo = model.ASNNo,
                                 SkuNo = detailModel.SkuNo,
                                 SkuName = detailModel.SkuName,
                                 Standard = detailModel.Standard,
-                                LotNo = detailModel.LotNo.Trim(),
+                                LotNo = detailModel.LotNo?.Trim() ?? "",
                                 LotText = detailModel.LotText,
                                 Qty = (decimal)detailModel.Qty,
                                 PackagNo = detailModel.PackagNo,
                                 Price = detailModel.Price,
                                 Money = detailModel.Money,
-                                FactQty = 0,                        // 宸茬粍鏁伴噺
-                                CompleteQty = 0,                    // 瀹屾垚鏁伴噺
+                                FactQty = 0,
+                                CompleteQty = 0,
                                 IsBale = detailModel.IsBale,
                                 IsBelt = detailModel.IsBelt,
                                 SupplierLot = detailModel.SupplierLot,
                                 Status = "0",
+                                IsSampling = "0",
+                                InspectStatus = "0",
                                 Lot1 = detailModel.Lot1,
                                 Lot2 = detailModel.Lot2,
+                                BoxCodeStr = detailModel.BoxCodeStr,
                                 UDF1 = detailModel.UDF1,
                                 UDF2 = detailModel.UDF2,
                                 UDF3 = detailModel.UDF3,
                                 UDF4 = detailModel.UDF4,
                                 UDF5 = detailModel.UDF5,
-                                CreateUser=(int)model.CreateUser
-                            };
-                            addDetails.Add(addModel);                     
+                                CreateUser = (int)model.CreateUser
+                            });
                         }
+                        // 澶勭悊缂栬緫鏄庣粏
                         else
                         {
-                            //鍒ゆ柇鏄惁鏇存敼
-                            int rowNum = dbDetailModels
-                                .Count(it => it.Id == detailModel.Id
-                                             && it.Qty == detailModel.Qty
-                                             && it.LotNo == detailModel.LotNo
-                                             && it.LotText == detailModel.LotText
-                                             && it.SupplierLot == detailModel.SupplierLot
-                                             && it.IsBale == detailModel.IsBale
-                                             && it.IsBelt == detailModel.IsBelt
-                                             && it.Lot1 == detailModel.Lot1                                 // 鐢熶骇鏃ユ湡
-                                             && it.Lot2 == detailModel.Lot2                                 // 杩囨湡鏃ユ湡
-                                             && it.UDF1 == detailModel.UDF1
-                                             && it.UDF2 == detailModel.UDF2
-                                             && it.UDF3 == detailModel.UDF3
-                                             && it.UDF4 == detailModel.UDF4
-                                             && it.UDF5 == detailModel.UDF5);
-                            if (rowNum > 0)
+                            // 妫�鏌ユ槸鍚︽湁瀹為檯淇敼
+                            var existingDetail = dbDetailModels.First(m => m.Id == detailModel.Id);
+                            if (existingDetail.Qty == detailModel.Qty
+                                && existingDetail.LotNo == detailModel.LotNo
+                                && existingDetail.LotText == detailModel.LotText
+                                && existingDetail.SupplierLot == detailModel.SupplierLot
+                                && existingDetail.IsBale == detailModel.IsBale
+                                && existingDetail.IsBelt == detailModel.IsBelt
+                                && existingDetail.Lot1 == detailModel.Lot1
+                                && existingDetail.Lot2 == detailModel.Lot2
+                                && existingDetail.BoxCodeStr == detailModel.BoxCodeStr
+                                && existingDetail.UDF1 == detailModel.UDF1
+                                && existingDetail.UDF2 == detailModel.UDF2
+                                && existingDetail.UDF3 == detailModel.UDF3
+                                && existingDetail.UDF4 == detailModel.UDF4
+                                && existingDetail.UDF5 == detailModel.UDF5)
                             {
                                 continue;
                             }
 
-                            var dbDetail = dbDetailModels.First(m => m.Id == detailModel.Id);
-                            if (TypeLot.Contains(model.Type))
+                            // 鎵规涓嶅彲鏇存敼楠岃瘉
+                            if (TypeLot.Contains(model.Type)
+                                && !string.IsNullOrWhiteSpace(existingDetail.LotNo)
+                                && existingDetail.LotNo != detailModel.LotNo)
                             {
-                                if (!string.IsNullOrWhiteSpace(dbDetail.LotNo))
-                                {
-                                    if (dbDetail.LotNo != detailModel.LotNo)
-                                    {
-                                        strMessage = "-1:褰撳墠鍗曟嵁绫诲瀷涓嶅彲鏇存敼鎵规;";
-                                        continue;
-                                    }
-                                }
-                                
+                                return "-1:褰撳墠鍗曟嵁绫诲瀷涓嶅彲鏇存敼鎵规;";
                             }
-                            // 璁$畻鍑烘�婚噾棰�
-                            detailModel.Money = detailModel.Price * detailModel.Qty;
 
-                            dbDetail.Qty = (decimal)detailModel.Qty;
-                            dbDetail.LotNo = detailModel.LotNo;
-                            dbDetail.Money = detailModel.Money;
-                            dbDetail.LotText = detailModel.LotText;
-                            dbDetail.SupplierLot = detailModel.SupplierLot;
-                            dbDetail.IsBale = detailModel.IsBale;
-                            dbDetail.Lot1 = detailModel.Lot1;
-                            dbDetail.Lot2 = detailModel.Lot2;
-                            dbDetail.UDF1 = detailModel.UDF1;
-                            dbDetail.UDF2 = detailModel.UDF2;
-                            dbDetail.UDF3 = detailModel.UDF3;
-                            dbDetail.UDF4 = detailModel.UDF4;
-                            dbDetail.UDF5 = detailModel.UDF5;
-                            dbDetail.UpdateTime = dateTime;
-                            dbDetail.UpdateUser = model.CreateUser;
+                            // 鏇存柊鏄庣粏淇℃伅
+                            existingDetail.Qty = (decimal)detailModel.Qty;
+                            existingDetail.LotNo = detailModel.LotNo?.Trim() ?? "";
+                            existingDetail.Money = detailModel.Price * detailModel.Qty;
+                            existingDetail.LotText = detailModel.LotText;
+                            existingDetail.SupplierLot = detailModel.SupplierLot;
+                            existingDetail.IsBale = detailModel.IsBale;
+                            existingDetail.Lot1 = detailModel.Lot1;
+                            existingDetail.Lot2 = detailModel.Lot2;
+                            existingDetail.BoxCodeStr = detailModel.BoxCodeStr;
+                            existingDetail.UDF1 = detailModel.UDF1;
+                            existingDetail.UDF2 = detailModel.UDF2;
+                            existingDetail.UDF3 = detailModel.UDF3;
+                            existingDetail.UDF4 = detailModel.UDF4;
+                            existingDetail.UDF5 = detailModel.UDF5;
+                            existingDetail.UpdateTime = dateTime;
+                            existingDetail.UpdateUser = model.CreateUser;
 
-                            editDetails.Add(dbDetail);
+                            editDetails.Add(existingDetail);
                         }
                     }
 
+                    // 浜嬪姟澶勭悊
                     Db.Ado.BeginTran();
 
                     Db.Updateable(dbDetailModels).ExecuteCommand();
                     int rowCount = Db.Updateable(asnInfo).ExecuteCommand();
-                    var rowDetailCount = 1;
-                    if (addDetails.Count > 0) 
-                    {
-                        rowDetailCount = Db.Insertable(addDetails).ExecuteCommand();
-                    }
-                    if (editDetails.Count > 0) 
-                    {
-                        rowDetailCount += Db.Updateable(editDetails).ExecuteCommand();
-                    }
+                    int rowDetailCount = 1;
 
-                    Db.Ado.CommitTran();
+                    if (addDetails.Any())
+                        rowDetailCount = Db.Insertable(addDetails).ExecuteCommand();
+
+                    if (editDetails.Any())
+                        rowDetailCount += Db.Updateable(editDetails).ExecuteCommand();
+
                     if (rowCount > 0 && rowDetailCount > 0)
                     {
-                        new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", model.ASNNo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕model.ASNNo}鐨勫崟鎹俊鎭�", Convert.ToInt32(model.CreateUser));
+                        Db.Ado.CommitTran();
+                        new OperationASNServer().AddLogOperationAsn(
+                            "鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", model.ASNNo, "缂栬緫",
+                            $"缂栬緫浜嗗崟鎹彿涓簕model.ASNNo}鐨勫崟鎹俊鎭�", Convert.ToInt32(model.CreateUser));
                         return strMessage;
                     }
                     else
@@ -709,6 +765,7 @@
                 throw ex;
             }
         }
+
         //鍒犻櫎鍏ュ簱鍗�
         public string DelArrivalNotice(ArrivalNoticeVm model)
         {
@@ -904,108 +961,108 @@
                     return "-1:鍏冲崟澶辫触锛�";
                 }
                 #region 閲囪喘璁″垝锛岃嫢鏄噰璐鍗曟牴鎹噰璐鍒掑崟鑷姩鐢熸垚鍏ュ簱鍗曚俊鎭�
-                if (notice.Type == "1" && !string.IsNullOrEmpty(notice.OrderCode))
-                {
-                    // 鑾峰彇閲囪喘鎬诲崟淇℃伅
-                    var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0");
-                    //鍏ュ簱鍗曟槑缁�
-                    var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>()
-                        .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList();
-                    foreach (var item in noticeDetailList)
-                    {
-                        //閲囪喘鍗曟槑缁�
-                        var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>()
-                            .First(it => it.ParentId == planOrd.Id && it.SkuNo == item.SkuNo && it.IsDel == "0");
-                        planDetail.CompleteQty += item.CompleteQty;
-                        if (planDetail.CompleteQty >= planDetail.Qty)
-                        {
-                            planDetail.Status = "2";
-                            planDetail.CompleteTime = comTime;
-                        }
-                        else
-                        {
-                            planDetail.Status = "1";
-                        }
-                        Db.Updateable(planDetail).ExecuteCommand();
-                    }
-                    // 缁存姢閲囪喘鎬诲崟淇℃伅
-                    var planDetailNum = Db.Queryable<BllProcurePlanNoticeDetail>().Count(m => m.IsDel == "0" && m.ParentId == planOrd.Id && m.Status != "2");
-                    if (planDetailNum == 0)
-                    {
-                        planOrd.Status = "2";
-                        planOrd.CompleteTime = comTime;
-                        Db.Updateable(planOrd).ExecuteCommand();
-                    }
-                    else
-                    {
-                        if (planOrd.Status == "0")
-                        {
-                            planOrd.Status = "1";
-                            Db.Updateable(planOrd).ExecuteCommand();
-                        }
-                    }
-                    //閲囪喘鍗曟槑缁�
-                    var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>()
-                        .Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList();
-                    foreach (var item in planDetailList)
-                    {
-                        //鍒ゆ柇鏈夋棤姝e湪鎵ц鐨�
-                        var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(it => it.OrderDetailCode == item.OrderDetailCode && it.IsDel == "0" && it.Status == "0");
-                        if (noticeDetail != null)
-                        {
-                            continue;
-                        }
-                        // 鑾峰彇鐗╂枡璇︾粏淇℃伅
-                        var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == item.SkuNo && it.IsDel == "0");
-                        if (skuModel == null)
-                        {
-                            continue;
-                        }
-                        // 楠岃瘉鍖呰淇℃伅鏄惁瀛樺湪
-                        var packagModel = Db.Queryable<SysPackag>().First(it => it.PackagNo == item.PackagNo && it.IsDel == "0");
-                        if (packagModel == null)
-                        {
-                            continue;
-                        }
-                        // 鍏ュ簱鎬昏〃淇℃伅
-                        string asnNo = new Common().GetMaxNo("ASN");
-                        var asnModel1 = new BllArrivalNotice()
-                        {
-                            ASNNo = asnNo,
-                            Status = "0",//鎵ц鐘舵�侊紝0锛氱瓑寰呮墽琛�
-                            Type = "1",//鍗曟嵁绫诲瀷锛�1锛氶噰璐叆搴�
-                            Origin = "閲囪喘鍗�",
-                            CustomerNo = item.CustomerNo,
-                            CustomerName = item.CustomerName,
-                            OrderCode = planOrd.OrderCode,
-                            CreateUser = 0
-                        };
-                        // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
-                        Db.Insertable(asnModel1).ExecuteCommand();
-                        //鍏ュ簱鍗曟槑缁�
-                        var arrDetailModel = new BllArrivalNoticeDetail()
-                        {
-                            ASNNo = asnNo,
-                            SkuNo = skuModel.SkuNo,
-                            SkuName = skuModel.SkuName,
-                            Standard = skuModel.Standard,
-                            LotNo = "",
-                            LotText = "",
-                            Qty = 0,
-                            FactQty = 0,
-                            CompleteQty = 0,
-                            PackagNo = packagModel.PackagNo,
-                            SupplierLot = "",
-                            Status = "0",
-                            IsSampling = "0",
-                            InspectStatus = "0",
-                            OrderDetailCode = item.OrderDetailCode,
-                            CreateUser = 0
-                        };
-                        // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
-                        Db.Insertable(arrDetailModel).ExecuteCommand();
-                    }
-                }
+                //if (notice.Type == "1" && !string.IsNullOrEmpty(notice.OrderCode))
+                //{
+                //    // 鑾峰彇閲囪喘鎬诲崟淇℃伅
+                //    var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0");
+                //    //鍏ュ簱鍗曟槑缁�
+                //    var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>()
+                //        .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList();
+                //    foreach (var item in noticeDetailList)
+                //    {
+                //        //閲囪喘鍗曟槑缁�
+                //        var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>()
+                //            .First(it => it.ParentId == planOrd.Id && it.SkuNo == item.SkuNo && it.IsDel == "0");
+                //        planDetail.CompleteQty += item.CompleteQty;
+                //        if (planDetail.CompleteQty >= planDetail.Qty)
+                //        {
+                //            planDetail.Status = "2";
+                //            planDetail.CompleteTime = comTime;
+                //        }
+                //        else
+                //        {
+                //            planDetail.Status = "1";
+                //        }
+                //        Db.Updateable(planDetail).ExecuteCommand();
+                //    }
+                //    // 缁存姢閲囪喘鎬诲崟淇℃伅
+                //    var planDetailNum = Db.Queryable<BllProcurePlanNoticeDetail>().Count(m => m.IsDel == "0" && m.ParentId == planOrd.Id && m.Status != "2");
+                //    if (planDetailNum == 0)
+                //    {
+                //        planOrd.Status = "2";
+                //        planOrd.CompleteTime = comTime;
+                //        Db.Updateable(planOrd).ExecuteCommand();
+                //    }
+                //    else
+                //    {
+                //        if (planOrd.Status == "0")
+                //        {
+                //            planOrd.Status = "1";
+                //            Db.Updateable(planOrd).ExecuteCommand();
+                //        }
+                //    }
+                //    //閲囪喘鍗曟槑缁�
+                //    var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>()
+                //        .Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList();
+                //    foreach (var item in planDetailList)
+                //    {
+                //        //鍒ゆ柇鏈夋棤姝e湪鎵ц鐨�
+                //        var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(it => it.OrderDetailCode == item.OrderDetailCode && it.IsDel == "0" && it.Status == "0");
+                //        if (noticeDetail != null)
+                //        {
+                //            continue;
+                //        }
+                //        // 鑾峰彇鐗╂枡璇︾粏淇℃伅
+                //        var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == item.SkuNo && it.IsDel == "0");
+                //        if (skuModel == null)
+                //        {
+                //            continue;
+                //        }
+                //        // 楠岃瘉鍖呰淇℃伅鏄惁瀛樺湪
+                //        var packagModel = Db.Queryable<SysPackag>().First(it => it.PackagNo == item.PackagNo && it.IsDel == "0");
+                //        if (packagModel == null)
+                //        {
+                //            continue;
+                //        }
+                //        // 鍏ュ簱鎬昏〃淇℃伅
+                //        string asnNo = new Common().GetMaxNo("ASN");
+                //        var asnModel1 = new BllArrivalNotice()
+                //        {
+                //            ASNNo = asnNo,
+                //            Status = "0",//鎵ц鐘舵�侊紝0锛氱瓑寰呮墽琛�
+                //            Type = "1",//鍗曟嵁绫诲瀷锛�1锛氶噰璐叆搴�
+                //            Origin = "閲囪喘鍗�",
+                //            CustomerNo = item.CustomerNo,
+                //            CustomerName = item.CustomerName,
+                //            OrderCode = planOrd.OrderCode,
+                //            CreateUser = 0
+                //        };
+                //        // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
+                //        Db.Insertable(asnModel1).ExecuteCommand();
+                //        //鍏ュ簱鍗曟槑缁�
+                //        var arrDetailModel = new BllArrivalNoticeDetail()
+                //        {
+                //            ASNNo = asnNo,
+                //            SkuNo = skuModel.SkuNo,
+                //            SkuName = skuModel.SkuName,
+                //            Standard = skuModel.Standard,
+                //            LotNo = "",
+                //            LotText = "",
+                //            Qty = 0,
+                //            FactQty = 0,
+                //            CompleteQty = 0,
+                //            PackagNo = packagModel.PackagNo,
+                //            SupplierLot = "",
+                //            Status = "0",
+                //            IsSampling = "0",
+                //            InspectStatus = "0",
+                //            OrderDetailCode = item.OrderDetailCode,
+                //            CreateUser = 0
+                //        };
+                //        // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
+                //        Db.Insertable(arrDetailModel).ExecuteCommand();
+                //    }
+                //}
                 #endregion
 
                 Db.Ado.CommitTran();
@@ -1180,77 +1237,71 @@
         /// </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)
+                var asnModel = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.OrderCode == model.orderNo);
+                if (asnModel != null)
                 {
-                    resultModel.Message = "瀹㈡埛缂栧彿涓嶅瓨鍦�!";
+                    resultModel.Message = $"{model.orderNo}璇ュ崟鍙峰凡瀛樺湪鍏ュ簱鍗�!";
                     return resultModel;
                 }
 
                 // 鍏ュ簱鎬昏〃淇℃伅
                 string asnNo = new Common().GetMaxNo("ASN");
-                var asnModel = new BllArrivalNotice()
+                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 = "鏁伴噺搴斾负姝f暣鏁�!";
+                        resultModel.Message = "搴旀敹鐗╂枡鏁伴噺搴斿ぇ浜�0!";
                         return resultModel;
                     }
-                    if (string.IsNullOrEmpty(asnDetailModel.LotNo))
+                    if (string.IsNullOrEmpty(asnDetailModel.lotNo) && asnModel.Type != "1")
                     {
-                        resultModel.Message = "鎵规鍙蜂笉鍙负绌�!";
+                        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 = "涓嶅瓨鍦ㄥ綋鍓嶇墿鏂欎俊鎭�!";
@@ -1261,22 +1312,42 @@
 
                     var detailModel = new BllArrivalNoticeDetail()
                     {
+                        OrderDetailCode = asnDetailModel.lineNo,
                         ASNNo = asnNo,
-                        SkuNo = asnDetailModel.SkuNo,
+                        SkuNo = asnDetailModel.skuNo.ToString(),
                         SkuName = skuModel.SkuName,
                         Standard = skuModel.Standard,
-                        LotNo = asnDetailModel.LotNo,
+                        LotNo = asnDetailModel.lotNo,
                         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",
                         CreateUser = 0
                     };
+                    detailModel.BoxCodeStr = 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("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
+                        if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
+                        {
+                            maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
+                        }
+                        else
+                        {
+                            maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
+                        }
+                        detailModel.BoxCodeStr = maxBoxCodeStr;
+                    }
 
                     detailModels.Add(detailModel);
                 }
@@ -1324,36 +1395,47 @@
                 {
                     throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�");
                 }
-                var list = new List<AsnDetail>();
+                var list = new List<BackAsnDetail>();
                 foreach (var d in detail)
                 {
-                    var item = new AsnDetail()
+                    var mater = Db.Queryable<SysMaterials>().First(w => w.IsDel == "0" && w.SkuNo == d.SkuNo);
+                    if (mater == null)
                     {
-                        SkuNo = d.SkuNo,
-                        LotNo = d.LotNo,
-                        Qty = d.CompleteQty,
-                        PackagNo = d.PackagNo,
-                        SupplierLot = d.SupplierLot
+                        throw new Exception($"澶嶆牳澶辫触锛岀墿鏂欑紪鐮�:{d.SkuNo}鐨勭墿鏂欎俊鎭笉瀛樺湪");
+                    }
+                    var item = new BackAsnDetail()
+                    {
+                        POSNR=d.OrderDetailCode,
+                        MATNR = d.SkuNo,
+                        MAKTX=d.SkuName,
+                        LFIMG = d.CompleteQty.ToString(),
+                        MEINS= mater.UnitNo,
+                        CHARG = d.LotNo,
+                        HSDAT = d.Lot1,
+                        VFDAT = d.Lot2
                     };
                     list.Add(item);
                 }
-                var soInfo = new AsnInfo()
+                var soInfo = new BackAsnVm()
                 {
-                    OrderCode = notice.OrderCode,
-                    AsnDetails = list
+                    ZUUID = Guid.NewGuid().ToString(),
+                    VBELN = notice.OrderCode,
+                    LFART = notice.Type,
+                    WADAT_IST = Convert.ToDateTime(notice.CompleteTime).ToString("yyyy-MM-dd"),
+                    ITEM = list
                 };
 
                 #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp 
                 //绯荤粺瀵规帴鍚庢斁寮�
-                /*var jsonData = JsonConvert.SerializeObject(soInfo);
+                var jsonData = JsonConvert.SerializeObject(soInfo);
 
-                var response = HttpHelper.DoPost(url, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "ERP");
+                var response = HttpHelper.DoPost(url, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "SAP");
 
                 var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
                 if (obj.Success != 0)
                 {
                     throw new Exception("涓婁紶澶辫触" + obj.Message);
-                }*/
+                }
                 #endregion
 
                 notice.Status = "4";

--
Gitblit v1.8.0