From 225d11e2ddaa55d1d482201cb4d89c9486cdba69 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 20 六月 2025 12:27:52 +0800
Subject: [PATCH] 更新代码

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs |  375 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 364 insertions(+), 11 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index 252b4b0..3613253 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -3,12 +3,17 @@
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Newtonsoft.Json;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using Org.BouncyCastle.Asn1.Ocsp;
 using SqlSugar;
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Dynamic;
+using System.Globalization;
 using System.Linq;
 using System.Linq.Expressions;
+using System.Reflection;
 using System.Reflection.Metadata;
 using System.Text;
 using System.Threading.Tasks;
@@ -72,6 +77,39 @@
             _invokeERPService = invokeERPService;
             _warehouseService = warehouseService;
             _palletTypeInfoRepository = palletTypeInfoRepository;
+        }
+        public override object GetDetailPage(PageDataOptions pageData)
+        {
+            Type t = typeof(Dt_InboundOrder);
+
+            if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
+            string keyName = t.GetKeyName();
+            ////鐢熸垚鏌ヨ鏉′欢
+            //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
+            int totalCount = 0;
+            PropertyInfo propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
+            if (propertyInfo != null)
+            {
+                Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
+                Navigate navigate = propertyInfo.GetCustomAttribute<Navigate>();
+                List<Dt_InboundOrderDetail> list = BaseDal.Db.Queryable<Dt_InboundOrderDetail>().Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+                decimal sum = 0;
+                list.ForEach(x =>
+                {
+                    sum += Convert.ToDecimal(x.OrderQuantity);
+                });
+                PageGridData<Dt_InboundOrderDetail> pageGridData = new PageGridData<Dt_InboundOrderDetail>()
+                {
+                    Total= totalCount,
+                    Rows=list,
+                    Summary=new
+                    {
+                        OrderQuantity = Math.Round(sum, 3),
+                    }
+                };
+                return pageGridData;
+            }
+            return new PageGridData<object>(total: 0, null);
         }
         /// <summary>
         /// 鍏朵粬鍏ュ簱鍗曟帴鏀�(璋冩嫈鍏ヤ粨,瀹緵鍥炴敹,鐗╂枡閿�鍞��璐�)
@@ -239,11 +277,11 @@
                 List<Dt_InboundOrder> dt_ReceiveOrders = new List<Dt_InboundOrder>();
                 if (string.IsNullOrEmpty(orderNo))
                 {
-                    dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderStatus < InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 5);
+                    dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderStatus < InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId).Includes(x=>x.Details).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 10);
                 }
                 else
                 {
-                    dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => (x.InboundOrderNo.Contains(orderNo)) && x.OrderStatus < InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 5);
+                    dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => (x.InboundOrderNo.Contains(orderNo)) && x.OrderStatus < InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId).Includes(x => x.Details).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 10);
                 }
 
                 content.OK(data: dt_ReceiveOrders);
@@ -690,6 +728,12 @@
                     return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅");
                 }
                 List<MatSerNumAnalysisModel> models = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNums);
+                //楠岃瘉鍒ゆ柇鏃堕棿鏍煎紡
+                WebResponseContent IsValidContent = IsValidMCDates(models);
+                if (!IsValidContent.Status)
+                {
+                    return content.Error(IsValidContent.Message);
+                }
                 //闄ら噰璐叆搴撳崟浠ュ鍏朵粬鍏ュ簱鍗曠粍鐩樻暟鎹鐞�
                 if (inboundOrder.OrderType != InOrderTypeEnum.Purchase.ObjToInt())
                 {
@@ -706,7 +750,6 @@
                 }
 
                 List<string> purchaseOrderNos = receiveOrder.Details.Select(x => x.PurchaseOrderNo).ToList();
-
                 if (models.Select(x => x.MaterielCode).Distinct().Count() > 1)
                 {
                     return WebResponseContent.Instance.Error($"鐗╂枡涓嶅彲娣锋斁");
@@ -822,7 +865,17 @@
 
                     stockInfoDetails.Add(stockInfoDetail);
 
-                    notGroupDetail.ReceiptQuantity += model.Quantity;
+                    decimal decimalReceiptQuantity = Convert.ToDecimal(notGroupDetail.ReceiptQuantity);
+                    decimal decimalModelQuantity = Convert.ToDecimal(model.Quantity);
+                    decimal decimalOrderQuantity = Convert.ToDecimal(notGroupDetail.OrderQuantity);
+                    decimalReceiptQuantity += decimalModelQuantity;
+                    // 妫�鏌ユ槸鍚﹁秴鍑鸿鍗曟暟閲�
+                    if (decimalReceiptQuantity > decimalOrderQuantity)
+                    {
+                        return WebResponseContent.Instance.Error($"缁勭洏鏁伴噺婧㈠嚭{decimalReceiptQuantity - decimalOrderQuantity}");
+                    }
+                    // 杞洖float绫诲瀷瀛樺偍锛屼絾姣旇緝鍜岃绠楅兘浣跨敤decimal瀹屾垚
+                    notGroupDetail.ReceiptQuantity = Convert.ToSingle(decimalReceiptQuantity);
                     if (notGroupDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
                     {
                         notGroupDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
@@ -855,6 +908,232 @@
             }
             return content;
         }
+        public WebResponseContent MaterielPPorGM(string materielBoxCode = "")
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string SerNum = "";
+                if (materielBoxCode.LastIndexOf("SC:")<0)
+                {
+                    SerNum = materielBoxCode;
+                }
+                else
+                {
+                    SerNum = materielBoxCode.Substring(0, materielBoxCode.LastIndexOf("SC:") - 1);
+                }
+                MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, SerNum);
+                //楠岃瘉鍒ゆ柇鏃堕棿鏍煎紡
+                WebResponseContent IsValidContent = IsValidMCDates(new List<MatSerNumAnalysisModel>() { model });
+                if (!IsValidContent.Status)
+                {
+                    return content.Error(IsValidContent.Message);
+                }
+                string result = "";
+                if (materielBoxCode.LastIndexOf("SC:") > 0)
+                {
+                    result = materielBoxCode.Substring(materielBoxCode.LastIndexOf("SC:") + 3);
+                }
+                //鑾峰彇鍏ュ簱鍗曟槑缁�
+                Dt_InboundOrderDetail inboundOrderDetail = _inboundRepository.InboundOrderDetailRepository.QueryFirst(x=>x.BatchNo== model.LotNo && x.MaterielCode== model.MaterielCode);
+                if (inboundOrderDetail == null)
+                {
+                    return InOtherGMOrPP(model, result);
+                }
+                Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().First(x => x.Id == inboundOrderDetail.OrderId);
+
+                if (inboundOrder == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟淇℃伅");
+                }
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == inboundOrder.WarehouseId);
+                //闄ら噰璐叆搴撳崟浠ュ鍏朵粬鍏ュ簱鍗曠粍鐩樻暟鎹鐞�
+                if (inboundOrder.OrderType != InOrderTypeEnum.Purchase.ObjToInt())
+                {
+                    return OtherInGroup(inboundOrder, model.LotNo, 0, warehouse, new List<MatSerNumAnalysisModel>() { model });
+                }
+                Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == inboundOrder.UpperOrderNo).Includes(x => x.Details).First();
+                if (receiveOrder == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑鏀惰揣鍗�");
+                }
+                if (receiveOrder.Details == null || receiveOrder.Details.Count <= 0)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑鏀惰揣鍗曟槑缁�");
+                }
+
+                List<string> purchaseOrderNos = receiveOrder.Details.Select(x => x.PurchaseOrderNo).ToList();
+
+                string materielCode = model?.MaterielCode ?? "";
+                Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode);
+                if (materielInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�");
+                }
+
+                float beforeQuantity = 0;
+                
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == model.LotNo).Includes(x => x.Details).First();
+                if (stockInfo == null)
+                {
+                    stockInfo = new Dt_StockInfo()
+                    {
+                        PalletCode = model.LotNo,
+                        StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
+                        WarehouseId = inboundOrder.WarehouseId,
+                        PalletType = GetPalletTypeGMOrPP(warehouse, result.IsNullOrEmpty() ? "" : result.Split("*")[0]),
+                        StockLength = result.IsNullOrEmpty() ? 0 : result.Split("*")[0].ObjToInt(),
+                        Details = new List<Dt_StockInfoDetail>()
+                    };
+                }
+                else
+                {
+                    if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt())
+                    {
+                        return WebResponseContent.Instance.Error($"鎵樼洏鍙烽噸澶�");
+                    }
+                }
+                if (stockInfo.PalletType==-1)
+                {
+                    return WebResponseContent.Instance.Error($"鎵樼洏绫诲瀷涓嶅瓨鍦�");
+                }
+                List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
+                if (purchaseOrderNos.FirstOrDefault(x => x == model.PurchaseOrderNo) == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈湪鏀惰揣鏄庣粏涓壘鍒拌閲囪喘鍗�");
+                }
+
+                if (inboundOrderDetail.OrderDetailStatus > OrderDetailStatusEnum.Inbounding.ObjToInt() || inboundOrderDetail.OrderQuantity == inboundOrderDetail.ReceiptQuantity)
+                {
+                    return WebResponseContent.Instance.Error($"璇ョ墿鏂欏湪璇ュ叆搴撳崟涓凡鍏ㄩ儴缁勭洏瀹屾垚");
+                }
+                Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
+                {
+                    BatchNo = model.LotNo,
+                    MaterielCode = materielInfo.MaterielCode,
+                    MaterielName = materielInfo.MaterielName,
+                    MaterielSpec = materielInfo.MaterielSpec,
+                    OrderNo = inboundOrder.InboundOrderNo,
+                    SerialNumber = model.SerialNumber,
+                    StockQuantity = model.Quantity,
+                    OutboundQuantity = 0,
+                    Unit = materielInfo.MaterielUnit,
+                    Status = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
+                    ProductionDate = model.ProductionDate,
+                    EffectiveDate = model.EffectiveDate,
+                    InboundOrderRowNo = inboundOrderDetail.RowNo,
+                };
+
+                stockInfo.Details.Add(stockInfoDetail);
+
+                stockInfoDetails.Add(stockInfoDetail);
+
+                inboundOrderDetail.ReceiptQuantity += model.Quantity;
+                if (inboundOrderDetail.ReceiptQuantity > inboundOrderDetail.OrderQuantity)
+                {
+                    return WebResponseContent.Instance.Error($"缁勭洏鏁伴噺婧㈠嚭{inboundOrderDetail.ReceiptQuantity - inboundOrderDetail.OrderQuantity}");
+                }
+                if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
+                {
+                    inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
+                }
+                float totalQuantity = stockInfo.Details.Sum(x => x.StockQuantity);
+                if (inboundOrder.OrderStatus == InOrderStatusEnum.鏈紑濮�.ObjToInt())
+                {
+                    inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
+                }
+                _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail);
+                _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
+                _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfoDetails, beforeQuantity, totalQuantity, StockChangeTypeEnum.MaterielGroup);
+                content.OK(data: stockInfo);
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        public WebResponseContent InOtherGMOrPP(MatSerNumAnalysisModel model,string request = "")
+        {
+            string materielCode = model?.MaterielCode ?? "";
+            Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode);
+            if (materielInfo == null)
+            {
+                return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�");
+            }
+            float beforeQuantity = 0;
+            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == materielInfo.WarehouseId);
+            Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == model.LotNo).Includes(x => x.Details).First();
+            if (stockInfo == null)
+            {
+                stockInfo = new Dt_StockInfo()
+                {
+                    PalletCode = model.LotNo,
+                    StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
+                    WarehouseId = warehouse.WarehouseId,
+                    PalletType = GetPalletTypeGMOrPP(warehouse, request.IsNullOrEmpty() ?"":request.Split("*")[0]),
+                    StockLength = request.IsNullOrEmpty()?0:request.Split("*")[0].ObjToInt(),
+                    Details = new List<Dt_StockInfoDetail>()
+                };
+            }
+            else
+            {
+                if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt())
+                {
+                    return WebResponseContent.Instance.Error($"鎵樼洏鍙烽噸澶�");
+                }
+            }
+            if (stockInfo.PalletType == -1)
+            {
+                return WebResponseContent.Instance.Error($"鎵樼洏绫诲瀷涓嶅瓨鍦�");
+            }
+            List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
+            Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
+            {
+                BatchNo = model.LotNo,
+                MaterielCode = materielInfo.MaterielCode,
+                MaterielName = materielInfo.MaterielName,
+                MaterielSpec = materielInfo.MaterielSpec,
+                OrderNo = "",
+                SerialNumber = model.SerialNumber,
+                StockQuantity = model.Quantity,
+                OutboundQuantity = 0,
+                Unit = materielInfo.MaterielUnit,
+                Status = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
+                ProductionDate = model.ProductionDate,
+                EffectiveDate = model.EffectiveDate,
+                InboundOrderRowNo = 0,
+            };
+
+            stockInfo.Details.Add(stockInfoDetail);
+
+            stockInfoDetails.Add(stockInfoDetail);
+            float totalQuantity = stockInfo.Details.Sum(x => x.StockQuantity);
+            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfoDetails, beforeQuantity, totalQuantity, StockChangeTypeEnum.MaterielGroup);
+            return WebResponseContent.Instance.OK(data: stockInfo);
+        }
+        public int GetPalletTypeGMOrPP(Dt_Warehouse warehouse, string boxWidth)
+        {
+            if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString())
+            {
+
+                if (boxWidth.ObjToInt() <= 690 && boxWidth.ObjToInt()>=520)
+                {
+                    return 15;
+                }
+                else if (boxWidth.ObjToInt() > 690 && boxWidth.ObjToInt() <= 1400)
+                {
+                    return 16;
+                }
+
+            }
+            else if (warehouse.WarehouseCode == WarehouseEnum.HA58.ToString())
+            {
+                Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.WarehouseId == warehouse.WarehouseId);
+                return palletTypeInfo.PalletType;
+            }
+            return -1;
+        }
         public WebResponseContent OtherInGroup(Dt_InboundOrder inboundOrder,string? palletCode,int Initiallife,Dt_Warehouse warehouse,List<MatSerNumAnalysisModel> models)
         {
             WebResponseContent content = new WebResponseContent();
@@ -864,7 +1143,12 @@
                 {
                     return content.Error($"鐗╂枡涓嶅彲娣锋斁");
                 }
-
+                //楠岃瘉鍒ゆ柇鏃堕棿鏍煎紡
+                WebResponseContent IsValidContent = IsValidMCDates(models);
+                if (!IsValidContent.Status)
+                {
+                    return content.Error(IsValidContent.Message);
+                }
                 string materielCode = models.FirstOrDefault()?.MaterielCode ?? "";
                 Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode);
                 if (materielInfo == null)
@@ -1016,7 +1300,12 @@
                 {
                     return WebResponseContent.Instance.Error($"鐗╂枡涓嶅彲娣锋斁");
                 }
-
+                //楠岃瘉鍒ゆ柇鏃堕棿鏍煎紡
+                WebResponseContent IsValidContent = IsValidMCDates(models);
+                if (!IsValidContent.Status)
+                {
+                    return content.Error(IsValidContent.Message);
+                }
                 string materielCode = models.FirstOrDefault()?.MaterielCode ?? "";
                 Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode);
                 if (materielInfo == null)
@@ -1276,6 +1565,8 @@
             try
             {
                 List<ERPProItemsItem> proItemsItems = new List<ERPProItemsItem>();
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseId==mesProInOrder.WarehouseId);
+                string batchNoRemark = "";
                 foreach (var item in mesProInOrder.Details)
                 {
                     ERPProItemsItem proItemsItem = new ERPProItemsItem()
@@ -1283,7 +1574,7 @@
                         PartNum = item.ProductCode,
                         Rev=item.ProductVersion,
                         DateCode=item.DateCode,
-                        BatchNumber= item.BagNo,
+                        BatchNumber= item.ProductCode,
                         XLocation=item.XSite,
                         Xqty=item.XQty,
                         QtySet=item.SETQty,
@@ -1299,6 +1590,7 @@
                             }
                         }
                     };
+                    batchNoRemark += item.BagNo + ",";
                     proItemsItems.Add(proItemsItem);
                 }
                 ERPProInboundModel proInboundModel = new ERPProInboundModel()
@@ -1308,13 +1600,20 @@
                     CreatorCode = "GSWMS",
                     CompanyCode = "HATC",
                     FactoryCode = "HA02",
-                    WarehouseCode = "HA71",
-                    LocationCode = "HA71",
+                    WarehouseCode = warehouse.WarehouseCode,
+                    LocationCode = warehouse.WarehouseCode,
                     StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                     StockFormType= "Production",
-                    StockFormItems= proItemsItems
+                    StockFormItems= proItemsItems,
+                    Remark=batchNoRemark
                 };
-                _invokeERPService.InvokeProInApi(proInboundModel);
+                string response = _invokeERPService.InvokeProInApi(proInboundModel);
+                ErpRequestContent requestContent = response.DeserializeObject<ErpRequestContent>();
+                if (requestContent.res != 1)
+                {
+                    return content.Error($"{requestContent.Data}");
+                }
+                content.OK();
             }
             catch (Exception ex)
             {
@@ -1505,7 +1804,61 @@
                 }
                 return palletTypeInfo.PalletType;
             }
+            else if (warehouse.WarehouseCode == WarehouseEnum.HA58.ObjToString())
+            {
+                Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 2));
+                if (palletTypeInfo == null)
+                {
+                    throw new Exception($"鎵樼洏鍙烽敊璇�");
+                }
+                return palletTypeInfo.PalletType;
+            }
             return -1;
         }
+        /// <summary>
+        /// 鍒ゆ柇姝g‘鏃堕棿鏍煎紡
+        /// </summary>
+        public WebResponseContent IsValidMCDates(List<MatSerNumAnalysisModel> analysisModels)
+        {
+            string[] effDates = analysisModels.Select(x => x.EffectiveDate).Distinct().ToArray();
+            string[] ProDates = analysisModels.Select(x => x.ProductionDate).Distinct().ToArray();
+            foreach (string effDate in effDates)
+            {
+                string format = "yyyy-MM-dd"; // 鐩爣鏍煎紡
+                DateTime parsedDate;
+                // 瑙f瀽骞堕獙璇佹牸寮�
+                bool isValid = DateTime.TryParseExact(
+                    effDate,
+                    format,
+                    CultureInfo.InvariantCulture,
+                    DateTimeStyles.None,
+                    out parsedDate
+                );
+
+                if (!isValid)
+                {
+                    return WebResponseContent.Instance.Error("鏍煎紡鏃犳晥鎴栨棩鏈熶笉鍚堟硶");
+                }
+            }
+            foreach (string ProDate in ProDates)
+            {
+                string format = "yyyy-MM-dd"; // 鐩爣鏍煎紡
+                DateTime parsedDate;
+                // 瑙f瀽骞堕獙璇佹牸寮�
+                bool isValid = DateTime.TryParseExact(
+                    ProDate,
+                    format,
+                    CultureInfo.InvariantCulture,
+                    DateTimeStyles.None,
+                    out parsedDate
+                );
+
+                if (!isValid)
+                {
+                    return WebResponseContent.Instance.Error("鏍煎紡鏃犳晥鎴栨棩鏈熶笉鍚堟硶");
+                }
+            }
+            return WebResponseContent.Instance.OK();
+        }
     }
 }

--
Gitblit v1.9.3