1
heshaofeng
2026-03-25 37454e625df68d40897112b2e8c2e3cf4d7163e3
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_CheckService/ReCheckOrderService.cs
@@ -2,9 +2,11 @@
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using SqlSugar;
using StackExchange.Profiling.Internal;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OrderEnum;
@@ -66,7 +68,11 @@
        {
            try
            {
                List<Dt_ReCheckOrder> reCheckOrders = BaseDal.Db.Queryable<Dt_ReCheckOrder>().Where(x => x.MaterielCode == model.MaterielCode && x.BatchNo == model.BatchNo).ToList();
                if (reCheckOrders.Count() == 3)
                {
                    return WebResponseContent.Instance.Error($"该物料和批次已经重检了三次,不允许再进行重检");
                }
                if (BaseDal.QueryFirst(x => x.OrderNo == model.OrderNo) != null)
                {
                    return WebResponseContent.Instance.Error($"{model.OrderNo}单号重复");
@@ -106,11 +112,7 @@
            try
            {
                List<Dt_ReCheckOrder> reCheckOrders = BaseDal.Db.Queryable<Dt_ReCheckOrder>().Where(x=>x.MaterielCode == model.MaterielCode && x.BatchNo == model.BatchNo).ToList();
                if(reCheckOrders.Count() == 3)
                {
                    return WebResponseContent.Instance.Error($"该物料和批次已经重检了三次,不允许再进行重检");
                }
                var recheckOrder = Db.Queryable<Dt_ReCheckOrder>().Where(x => x.OrderNo == model.OrderNo).First();
                if (recheckOrder == null)
                {
@@ -124,37 +126,47 @@
                if (model.Result == 1 && recheckOrder.SignSeq != model.SignSeq)
                {
                    var stockDetailIds = BaseDal.Db.Queryable<Dt_StockInfoDetail>()
                    .Where(x => x.MaterielCode == model.MaterielCode && x.BatchNo == model.BatchNo && x.ValidDate != null && x.Status == (int)StockStatusEmun.手动冻结)
                    .Where(x => x.MaterielCode == model.MaterielCode && x.BatchNo == model.BatchNo && x.ValidDate != null && (x.Status == (int)StockStatusEmun.手动冻结 ||x.Status == (int)StockStatusEmun.重检中))
                    .Select(x => x.Id)
                    .ToList();
                    if (stockDetailIds.Count > 0)
                    {
                        var datevaliDate = BaseDal.Db.Queryable<Dt_MaterialExpirationDate>().Where(x => x.MaterialCode.Contains(model.MaterielCode.Substring(0, 6))).First();
                        if(datevaliDate == null)
                        {
                            return WebResponseContent.Instance.Error($"该物料未找到MES推送的有效期数据,请先推送该物料的有效期数据");
                        }
                        BaseDal.Db.Updateable<Dt_StockInfoDetail>()
                            .SetColumns(x => x.Status == StockStatusEmun.入库完成.ObjToInt())
                            .Where(x => stockDetailIds.Contains(x.Id))
                            .Where(x => stockDetailIds.Contains(x.Id) && x.Status == (int)StockStatusEmun.手动冻结)
                            .ExecuteCommand();
                        //计算当前复检单据结果时间
                        DateTime newDate;
                        if (1 == reCheckOrders.Count())
                        {
                            //单据结果推送时间+物料复检延长时间与有效期做对比,谁大取谁
                            newDate = Convert.ToDateTime(DateTime.Now).AddDays(Convert.ToDouble(datevaliDate.OneExtensionDays));
                            BaseDal.Db.Updateable<Dt_StockInfoDetail>()
                            .SetColumns(x => x.ValidDate == Convert.ToDateTime(x.ValidDate).AddDays(Convert.ToDouble(datevaliDate.OneExtensionDays)))
                            .SetColumns(x => x.ValidDate == SqlFunc.IIF(x.ValidDate > newDate, x.ValidDate, newDate))
                            .Where(x => stockDetailIds.Contains(x.Id))
                            .ExecuteCommand();
                        }
                        else if (2 == reCheckOrders.Count())
                        {
                            newDate = Convert.ToDateTime(DateTime.Now).AddDays(Convert.ToDouble(datevaliDate.TwoExtensionDays));
                            BaseDal.Db.Updateable<Dt_StockInfoDetail>()
                            .SetColumns(x => x.ValidDate == Convert.ToDateTime(x.ValidDate).AddDays(Convert.ToDouble(datevaliDate.TwoExtensionDays)))
                            .SetColumns(x => x.ValidDate == SqlFunc.IIF(x.ValidDate > newDate, x.ValidDate, newDate))
                            .Where(x => stockDetailIds.Contains(x.Id))
                            .ExecuteCommand();
                        }
                        else if (3 == reCheckOrders.Count())
                        {
                            newDate = Convert.ToDateTime(DateTime.Now).AddDays(Convert.ToDouble(datevaliDate.ThreeExtensionDays));
                            BaseDal.Db.Updateable<Dt_StockInfoDetail>()
                            .SetColumns(x => x.ValidDate == Convert.ToDateTime(x.ValidDate).AddDays(Convert.ToDouble(datevaliDate.ThreeExtensionDays)))
                            .SetColumns(x => x.ValidDate == SqlFunc.IIF(x.ValidDate > newDate, x.ValidDate, newDate))
                            .Where(x => stockDetailIds.Contains(x.Id))
                            .ExecuteCommand();
                        }
@@ -241,6 +253,7 @@
                Remark = "",
                DepartmentCode = "",
                DepartmentName = "",
                ReturnToMESStatus = 5,
                Details = new List<Dt_OutboundOrderDetail>()
            };
            outboundOrder.Details.Add(