heshaofeng
2025-12-04 1e8ca092e08494e78c398c6262aff94ac5a5bb22
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_CheckService/ReCheckOrderService.cs
@@ -1,17 +1,21 @@
锘縰sing HslCommunication.WebSocket;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_ICheckService;
using WIDESEA_IOutboundService;
using WIDESEA_Model.Models;
using WIDESEA_Model.Models.Check;
@@ -23,22 +27,25 @@
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly WebSocketServer _webSocketServer;
        private readonly ILogger<ReCheckOrderService> _logger;
        public readonly IOutboundService _outboundService;
        public IRepository<Dt_ReCheckOrder> Repository => BaseDal;
        public ReCheckOrderService(IRepository<Dt_ReCheckOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage, WebSocketServer webSocketServer, ILogger<ReCheckOrderService> logger) : base(BaseDal)
        public ReCheckOrderService(IRepository<Dt_ReCheckOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage, WebSocketServer webSocketServer, ILogger<ReCheckOrderService> logger, IOutboundService outboundService) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _webSocketServer = webSocketServer;
            _logger = logger;
            _outboundService = outboundService;
        }
        public WebResponseContent ReceiveReCheckOrder(Dt_ReCheckOrder models, int operateType)
        public async Task<WebResponseContent> ReceiveReCheckOrder(Dt_ReCheckOrder models, int operateType)
        {
            try
            {
                return operateType switch
                {
                    1 => AddReCheckOrder(models),
                    2 => UpdateReCheckOrder(models),
                    1 =>await AddReCheckOrder(models),
                    2 =>await UpdateReCheckOrder(models),
                    3 => DeleteReCheckOrder(models),
                    _ => WebResponseContent.Instance.OK(),
@@ -51,7 +58,7 @@
            }
        }
        public WebResponseContent AddReCheckOrder(Dt_ReCheckOrder model)
        public async Task<WebResponseContent> AddReCheckOrder(Dt_ReCheckOrder model)
        {
            try
            {
@@ -64,7 +71,9 @@
                model.Creater = "MES";
                model.CreateDate = DateTime.Now;
                BaseDal.AddData(model);
                var outboundOrders = ConvertToOutboundOrders(model);
                await _outboundService.OutboundOrderService.ReceiveOutboundOrder(outboundOrders, 1);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
@@ -73,7 +82,7 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent UpdateReCheckOrder(Dt_ReCheckOrder model)
        public async Task<WebResponseContent> UpdateReCheckOrder(Dt_ReCheckOrder model)
        {
            try
            {
@@ -83,6 +92,11 @@
                {
                    return WebResponseContent.Instance.Error($"鏈壘鍒板崟淇℃伅");
                }
                var isupdate = false;
                if (recheckOrder.SignSeq == model.SignSeq)
                {
                    isupdate = true;
                }
                recheckOrder.OrderNo = model.OrderNo;
                recheckOrder.MaterielCode = model.MaterielCode;
                recheckOrder.BatchNo = model.BatchNo;
@@ -91,15 +105,22 @@
                recheckOrder.InspectionNumber = model.InspectionNumber;
                recheckOrder.SignSeq = model.SignSeq;
                recheckOrder.Qty = model.Qty;
                recheckOrder.WarehouseCode= model.WarehouseCode;
                recheckOrder.WarehouseCode = model.WarehouseCode;
                recheckOrder.FactoryArea = model.FactoryArea;
                recheckOrder.Modifier = "MES";
                recheckOrder.ModifyDate = DateTime.Now;
                BaseDal.UpdateData(recheckOrder);
                if (isupdate)
                {
                    _outboundService.OutboundOrderService.Db.Deleteable<Dt_OutboundOrder>().Where(x => x.OrderNo == model.OrderNo).ExecuteCommand();
                    _outboundService.OutboundOrderDetailService.Db.Deleteable<Dt_OutboundOrderDetail>()
                     .Where(p => SqlFunc.Subqueryable<Dt_OutboundOrder>().Where(s => s.Id == p.OrderId && s.OrderNo == model.OrderNo).Any()).ExecuteCommand();
                    var outboundOrders = ConvertToOutboundOrders(model);
                    await _outboundService.OutboundOrderService.ReceiveOutboundOrder(outboundOrders, 1);
                }
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
@@ -119,9 +140,13 @@
                {
                    return WebResponseContent.Instance.Error($"鏈壘鍒板崟淇℃伅");
                }
                BaseDal.DeleteData(recheckOrder);
                BaseDal.DeleteData(recheckOrder);
                _outboundService.OutboundOrderService.Db.Deleteable<Dt_OutboundOrder>().Where(x => x.OrderNo == model.OrderNo).ExecuteCommand();
                _outboundService.OutboundOrderDetailService.Db.Deleteable<Dt_OutboundOrderDetail>()
                 .Where(p => SqlFunc.Subqueryable<Dt_OutboundOrder>().Where(s => s.Id == p.OrderId && s.OrderNo == model.OrderNo).Any()).ExecuteCommand();
                return WebResponseContent.Instance.OK();
            }
@@ -132,5 +157,49 @@
            }
        }
        public Dt_OutboundOrder ConvertToOutboundOrders(Dt_ReCheckOrder reCheckOrder)
        {
            var outboundOrder = new Dt_OutboundOrder()
            {
                WarehouseId = 0,
                OrderNo = reCheckOrder.OrderNo,
                UpperOrderNo = reCheckOrder.OrderNo,
                OrderType = InOrderTypeEnum.ReCheck.ObjToInt(),
                OrderStatus = 0,
                CreateType = 0,
                BusinessType = "",
                IsBatch = 0,
                FactoryArea = reCheckOrder.FactoryArea,
                Remark = "",
                DepartmentCode = "",
                DepartmentName = "",
                Details = new List<Dt_OutboundOrderDetail>()
            };
            outboundOrder.Details.Add(
                     new Dt_OutboundOrderDetail
                     {
                         OrderId = 0,
                         MaterielCode = reCheckOrder.MaterielCode,
                         MaterielName = "",
                         BatchNo = reCheckOrder.BatchNo,
                         OrderQuantity = reCheckOrder.Qty,
                         BarcodeQty = (decimal)reCheckOrder.Qty,
                         BarcodeUnit = reCheckOrder.Unit,
                         LockQuantity = 0,
                         lineNo = "",
                         OverOutQuantity = 0,
                         OrderDetailStatus = 0,
                         Unit = reCheckOrder.Unit,
                         RowNo = 0,
                         SupplyCode = "",
                         WarehouseCode = reCheckOrder.WarehouseCode,
                     }
                );
            return outboundOrder;
        }
    }
}