1
huangxiaoqiang
2026-03-17 3fa25c0bcb790b64bc206211923099cc330c5086
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.Enums;
using WIDESEA_DTO;
using WIDESEA_Model.Models;
using WIDESEA_Repository;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_Model.Models;
 
namespace WIDESEA_StoragIntegrationServices
{
    public partial class WCSService
    {
        /// <summary>
        /// 请求入库巷道号
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        public WebResponseContent RequestEmptyInboundRoadWayNo(RequestTaskDto json)
        {
            WebResponseContent response = new WebResponseContent();
            try
            {
                var carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode);
 
                if (carInfo == null) throw new Exception("未知空撬信息,无法入库");
                //{
                //    Dt_CarBodyInfo _CarBodyInfo = new Dt_CarBodyInfo  //测试
                //    {
                //        PVI = "J25000660",
                //        RFID = json.PVI,
                //        BodyStatus = 0,
                //        CarType = 1,
                //    };
                //}
 
                var maxGroup = _locationRepository.QueryData(x => x.LocationType == 3 && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable)
                                .GroupBy(x => x.RoadwayNo)
                                .OrderByDescending(g => g.Count()) // 根据每个组的元素数量排序
                                .ToList(); // 取出数量最多的组
 
                Dictionary<string, int> result = new Dictionary<string, int>();
                foreach (var item in maxGroup)
                {
                    var number = _taskRepository.QueryData(x => x.TargetAddress == item.Key).Count();
                    if (item.Count() - number <= 0)
                    {
                        continue;
                    }
                    result.Add(item.Key, item.Count() - number);
                }
 
                string maxRoadwayNo = result.OrderByDescending(x => x.Value).FirstOrDefault().Key; // 数量最多的组的Key
 
                var station = _stationManagerRepository.QueryFirst(x => x.RoadwayNo == maxRoadwayNo && x.stationArea == json.area && x.stationType == 6);
 
                var newtask = new Dt_Task
                {
                    CurrentAddress = json.Position,
                    Grade = 1,
                    Roadway = station.Roadway,
                    TargetAddress = station.Roadway,
                    //Dispatchertime = DateTime.Now,
                    NextAddress = station.stationChildCode,
                    OrderNo = null,
                    PalletCode = json.PalletCode,
                    SourceAddress = json.Position,
                    TaskState = (int)TaskInStatusEnum.InNew,
                    TaskType = (int)TaskInboundTypeEnum.InTray,
                    TaskNum = _taskRepository.GetTaskNo().Result,
                    Creater = "Systeam",
                    PVI = json.PVI,
 
                };
                _unitOfWorkManage.BeginTran();
 
                _taskRepository.AddData(newtask);
                //location.LocationStatus = (int)LocationEnum.InStockDisable;
                //_locationRepository.UpdateData(location);
                _unitOfWorkManage.CommitTran();
 
                response.OK("空撬申请入库成功", data: newtask);
 
                //response.OK(data: maxRoadwayNo);
            }
            catch (Exception ex)
            {
                response.Error($"请求巷道号失败:{ex.Message}");
            }
            return response;
        }
    }
}