1
z8018
2025-06-10 e46aa927d231af83724683c7286d9db503e24cf7
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/OrderDetailsService.cs
@@ -40,8 +40,6 @@
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.BasicInfo;
using WIDESEAWCS_DTO.Enum;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_Model.Models;
@@ -50,21 +48,41 @@
{
    public class OrderDetailsService : ServiceBase<OrderDetails, IOrderDetailsRepository>, IOrderDetailsService
    {
        public OrderDetailsService(IOrderDetailsRepository BaseDal) : base(BaseDal)
        private readonly IOrderrowsRepository _orderrowsRepository;
        public OrderDetailsService(IOrderDetailsRepository BaseDal, IOrderrowsRepository orderrowsRepository) : base(BaseDal)
        {
            _orderrowsRepository = orderrowsRepository;
        }
        private static bool toggle = false;
        private static int lastStaion = 0;
        public int GetOrderDetails(string barcode, List<int> useableStations)
        public int GetOrderDetails(string barcode, List<int> useableStations, out ProductInfoDTO productInfo)
        {
            OrderDetails? orderDetails = BaseDal.QueryData(x => x.Orderdetails_outid == barcode).FirstOrDefault();
            if (orderDetails != null)
            {
                productInfo = new ProductInfoDTO()
                {
                    Code = barcode,
                    Height = Convert.ToInt32(orderDetails.Orderdetails_thickness),
                    Length = Convert.ToInt32(orderDetails.Orderdetails_length),
                    Width = Convert.ToInt32(orderDetails.Orderdetails_width),
                };
                int length = productInfo.Length;
                int width = productInfo.Width;
                if (length < width)
                {
                    length = productInfo.Width;
                    width = productInfo.Length;
                }
                useableStations = useableStations.OrderByDescending(x => x).ToList();
                if (orderDetails.Orderdetails_width <= 800 && orderDetails.Orderdetails_width >= 50)//1,2,3
                if (width < 100)
                    useableStations = useableStations.Where(x => x != 1).OrderByDescending(x => x).ToList();
                if (width <= 800 && width >= 50)//1,2,3
                {
                    if (lastStaion == 0)
                    {
@@ -74,7 +92,7 @@
                    else
                    {
                        int index = useableStations.IndexOf(lastStaion);
                        if(index + 1 < useableStations.Count)
                        if (index + 1 < useableStations.Count)
                        {
                            lastStaion = useableStations[index + 1];
                            return lastStaion;
@@ -86,7 +104,7 @@
                        }
                    }
                }
                else if (orderDetails.Orderdetails_width >= 800 && orderDetails.Orderdetails_width <= 1220)//1,2
                else if (width >= 800 && width <= 1220)//1,2
                {
                    useableStations = useableStations.Where(x => x != 3).ToList();
@@ -121,6 +139,7 @@
            }
            else
            {
                productInfo = new ProductInfoDTO();
                return -1;
            }
        }
@@ -140,6 +159,60 @@
            return toMesBarc;
        }
        public ToMesBarcRes? ToMes(string barcode, int processId)
        {
            try
            {
                object obj = new
                {
                    id = barcode,
                    processId
                };
                ToMesBarcRes? toMesBarc = JsonConvert.DeserializeObject<ToMesBarcRes>(HttpHelper.Post($"{ToMesScan_sync}", obj.Serialize()));
                return toMesBarc;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        public OrderInfo GetOrderInfoByBarcode(string barcode)
        {
            try
            {
                OrderDetails orderDetails = BaseDal.QueryFirst(x => x.Orderdetails_outid == barcode);
                if (orderDetails == null)
                {
                    throw new Exception($"【{barcode}】未找到条码对应订单信息");
                }
                Orderrows orderrows = _orderrowsRepository.QueryFirst(x => x.id == orderDetails.Orderrowsid);
                if (orderrows == null)
                {
                    throw new Exception($"【{barcode}】未找到对应订单头信息");
                }
                OrderInfo orderInfo = new OrderInfo()
                {
                    Barcode = barcode,
                    Length = orderDetails.Orderdetails_length,
                    OrderBatch = orderrows.Orderrows_batchid,
                    OrderHeadId = orderrows.id,
                    OrderNo = orderrows.Orderrows_orderid,
                    OrderRowNum = orderrows.Orderrows_id,
                    Quantity = Convert.ToInt32(orderrows.Orderrows_num),
                    Thickness = orderDetails.Orderdetails_thickness,
                    Width = orderDetails.Orderdetails_width,
                };
                return orderInfo;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}