dengjunjie
2025-03-13 90a0c4e0ab42a3574cfb6f9fd3b031dac9e7fb0d
空托出入库
已删除3个文件
已修改24个文件
已重命名3个文件
已添加3个文件
207 ■■■■■ 文件已修改
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2fbcc71c-e89f-4eaf-9e3e-5620623c5b7c.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/935e8d57-93ab-45b7-b509-2e1142bbe1c6.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f2619808-2276-4f7b-b10f-25bba5f2f2a7.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f555f070-9bec-4ac8-8eba-d2791e9e4182.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Line.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/04dfd08a-0df7-4984-8823-17863c140b0e.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1b491b5d-708a-47fa-8233-947a9dfe5dae.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3d7373a2-c833-48a2-84db-b4f90a14151a.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6c0962e3-1750-4e24-a425-5ec6cb7fd82e.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b930ac60-10e4-42f6-9dce-9d0b7f40fa57.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskEnumHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/Debug/net6.0/WIDESEA_Core.AssemblyInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/Debug/net6.0/WIDESEA_Core.AssemblyInfoInputs.cache 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderService.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ConveyorLine.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/芜湖三一PDA/pages/stash/InEmpty.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/芜湖三一PDA/pages/stash/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2fbcc71c-e89f-4eaf-9e3e-5620623c5b7c.vsidx
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/935e8d57-93ab-45b7-b509-2e1142bbe1c6.vsidx
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f2619808-2276-4f7b-b10f-25bba5f2f2a7.vsidx
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f555f070-9bec-4ac8-8eba-d2791e9e4182.vsidx
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs
@@ -22,7 +22,7 @@
            {
                return TaskTypeGroup.OutbondGroup;
            }
            else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskType.ToString()).ToString(), out result))
            else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(taskType.ToString()).ToString(), out result))
            {
                return TaskTypeGroup.InboundGroup;
            }
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -28,7 +28,12 @@
        /// è´¨æ£€å…¥åº“
        /// </summary>
        [Description("质检入库")]
        InQuality = 203
        InQuality = 203,
        /// <summary>
        /// å…¥ç©ºæ‰˜
        /// </summary>
        [Description("入空托")]
        PalletInbound = 204,
    }
    public enum TaskOutboundTypeEnum
@@ -53,6 +58,12 @@
        /// </summary>
        [Description("质检出库")]
        OutQuality = 103,
        /// <summary>
        /// å‡ºç©ºæ‰˜
        /// </summary>
        [Description("出空托")]
        PalletOutbound = 104,
    }
    /// <summary>
    /// ç§»åº“
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Line.cs
@@ -60,6 +60,7 @@
                    task.TargetIsPickPlace = receiveWMSInfo.TargetIsPickPlace;
                    task.TargetAddress = receiveWMSInfo.TargetAddress;
                    task.NextAddress = task.TargetAddress;
                    task.ExceptionMessage = null;
                }
                else
                    task.ExceptionMessage = content.Message;
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -107,7 +107,8 @@
                        //暂不考虑多路径
                        if (routers.Count > 0)
                        {
                            task.TaskState = (int)TaskInStatusEnum.InNew;
                            if (task.TaskType != TaskInboundTypeEnum.PalletInbound.ObjToInt())
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = routers.FirstOrDefault().ChildPosi;
                        }
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -145,7 +145,7 @@
                                        //} 
                                        #endregion
                                    }
                                    else if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
                                    else if (/*task.TaskType == (int)TaskInboundTypeEnum.Inbound*/_taskService.TaskInboundTypes.Contains(task.TaskType))
                                    {
                                        var ShuttleCar = GetShuttleCarInfo(task.TargetAddress);//入库任务判断终点是否有穿梭车
                                        if (task.TargetIsPickPlace && ShuttleCar != null)//移走
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue
@@ -192,14 +192,14 @@
        width: 180,
        align: "left",
      },
      {
        field: "status",
        title: "库存明细状态",
        type: "string",
        width: 120,
        align: "left",
        bind: { key: "stockStatusEmun", data: [] },
      },
      // {
      //   field: "status",
      //   title: "库存明细状态",
      //   type: "string",
      //   width: 120,
      //   align: "left",
      //   bind: { key: "stockStatusEmun", data: [] },
      // },
      {
        field: "creater",
        title: "创建人",
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue
@@ -179,6 +179,13 @@
        align: "left",
      },
      {
        field: "operateType",
        title: "操作类型",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "wMSId",
        title: "WMS任务主键",
        type: "int",
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/04dfd08a-0df7-4984-8823-17863c140b0e.vsidx
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1b491b5d-708a-47fa-8233-947a9dfe5dae.vsidx
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3d7373a2-c833-48a2-84db-b4f90a14151a.vsidx
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6c0962e3-1750-4e24-a425-5ec6cb7fd82e.vsidx
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b930ac60-10e4-42f6-9dce-9d0b7f40fa57.vsidx
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs
@@ -77,20 +77,24 @@
        /// <returns></returns>
        public Dt_LocationInfo AssignLocation()
        {
            Dt_LocationInfo locationInfo = null;
            locationInfo = BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.Row == 3, _emptyAssignOrderBy);
            Dt_LocationInfo? locationInfo = null;
            string CarChargingStation = AppSettings.Configuration[nameof(CarChargingStation)];//获取穿梭车充电位置
            var ChargingStations = CarChargingStation.Split(",");
            locationInfo = BaseDal.QueryFirst(x => !ChargingStations.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.Row == 3, _emptyAssignOrderBy);
            if (locationInfo == null)
                locationInfo = BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.Row == 1), _emptyAssignOrderBy);
                locationInfo = BaseDal.QueryFirst(x => !ChargingStations.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.Row == 1), _emptyAssignOrderBy);
            if (locationInfo == null)
                locationInfo = BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.Row == 2), _emptyAssignOrderBy);
                locationInfo = BaseDal.QueryFirst(x => !ChargingStations.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.Row == 2), _emptyAssignOrderBy);
            return locationInfo;
        }
        public Dt_LocationInfo AssignLocation(string[] Stations)
        {
            Dt_LocationInfo? locationInfo = null;
            locationInfo = BaseDal.QueryData(x => Stations.Contains(x.LocationCode) && x.CurrentQty < x.MaxQty - 1, _emptyAssignOrderBy).First();
            var locationInfos = BaseDal.QueryData(x => Stations.Contains(x.LocationCode) && x.CurrentQty < x.MaxQty - 1, _emptyAssignOrderBy);
            if (locationInfos != null && locationInfos.Count > 0)
                locationInfo = locationInfos[0];
            return locationInfo;
        }
        /// <summary>
@@ -102,12 +106,16 @@
        /// <exception cref="Exception"></exception>
        public Dt_LocationInfo AssignLocation(int inboundOrderCount)
        {
            Dt_LocationInfo locationInfo = BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.CurrentQty < 1 && x.Row == (inboundOrderCount > 1 ? 1 : 3), _emptyAssignOrderBy);
            string CarChargingStation = AppSettings.Configuration[nameof(CarChargingStation)];//获取穿梭车充电位置
            var ChargingStations = CarChargingStation.Split(",");
            Dt_LocationInfo? locationInfo = null;
            var locationInfos = BaseDal.QueryData(x => !ChargingStations.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.CurrentQty < 1 && x.Row == (inboundOrderCount > 1 ? 1 : 3), _emptyAssignOrderBy);
            if (locationInfos.Count > 1 && locationInfos != null) locationInfo = locationInfos[0];
            if (locationInfo == null)
            {
                var locationInfos = BaseDal.QueryData(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.CurrentQty < 1), _emptyAssignOrderBy);
                if (locationInfos.Count > 1) locationInfo = locationInfos[0];//需预留一个货位移库
                locationInfos = BaseDal.QueryData(x => !ChargingStations.Contains(x.LocationCode) && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.CurrentQty < 1), _emptyAssignOrderBy);
                if (locationInfos.Count > 1 && locationInfos != null) locationInfo = locationInfos[0];//需预留一个货位移库
            }
            return locationInfo;
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskEnumHelper.cs
@@ -21,7 +21,7 @@
            {
                return TaskTypeGroup.OutbondGroup;
            }
            else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskType.ToString()).ToString(), out result))
            else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(taskType.ToString()).ToString(), out result))
            {
                return TaskTypeGroup.InboundGroup;
            }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs
@@ -28,7 +28,13 @@
        /// è´¨æ£€å…¥åº“
        /// </summary>
        [Description("质检入库")]
        InQuality = 203
        InQuality = 203,
        /// <summary>
        /// å…¥ç©ºæ‰˜
        /// </summary>
        [Description("入空托")]
        PalletInbound = 204,
    }
    public enum TaskOutboundTypeEnum
@@ -53,6 +59,12 @@
        /// </summary>
        [Description("质检出库")]
        OutQuality = 103,
        /// <summary>
        /// å‡ºç©ºæ‰˜
        /// </summary>
        [Description("出空托")]
        PalletOutbound = 104,
    }
    public enum TaskRelocationTypeEnum
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs
@@ -49,7 +49,7 @@
        [ImporterHeader(Name = "创建时间")]
        [ExporterHeader(DisplayName = "创建时间")]
        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "创建时间")]
        public DateTime CreateDate { get; set; }= DateTime.Now;
        public DateTime CreateDate { get; set; }
        #endregion
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/Debug/net6.0/WIDESEA_Core.AssemblyInfo.cs
@@ -15,7 +15,7 @@
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyDescriptionAttribute("dddddddddddddddddddddddddddddddddddd")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+58ebc83f3892b4d84d2cb07a388ac361268a4a19")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1")]
[assembly: System.Reflection.AssemblyProductAttribute("WIDESEA_Core")]
[assembly: System.Reflection.AssemblyTitleAttribute("WIDESEA_Core")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1.0")]
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Core/obj/Debug/net6.0/WIDESEA_Core.AssemblyInfoInputs.cache
@@ -1 +1 @@
5be948cc7d84038f5664f907cc9b5068af9b31c625e366a3c7e4d48129ec9d99
264e59f6345328726b244104627f6ef423db410c687b2b588086157df0b522f6
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs
@@ -74,16 +74,19 @@
                        Dispatchertime = DateTime.Now,
                    };
                    Db.Ado.BeginTran();
                    _stockService.StockInfoService.AddStockEmpty(barcode);
                    WebResponseContent content = _stockService.StockInfoService.AddStockEmpty(barcode);
                    if (!content.Status) throw new Exception(content.Message);
                    _taskRepository.AddData(task);
                    List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(new List<Dt_Task> { task });
                    var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>());
                    if (ResultData.Result == null) throw new Exception($"向WCS下发空托入库任务超时");
                    WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
                    content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
                    if (content == null) throw new Exception($"下发空托入库任务WCS无响应");
                    if (!content.Status) throw new Exception(content.Message);
                    Db.Ado.CommitTran();
                }
                else
                    throw new Exception($"托盘号【{barcode}】已存在任务");
                #endregion
                return WebResponseContent.Instance.OK();
            }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
@@ -15,6 +15,7 @@
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Outbound;
using WIDESEA_IBasicRepository;
using WIDESEA_IBasicService;
using WIDESEA_IOutboundRepository;
using WIDESEA_IOutboundService;
@@ -31,16 +32,18 @@
        private readonly IStockInfoService _stockService;
        private readonly IStockInfoDetailService _stockDetailService;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IBasicRepository _basicRepository;
        private readonly ITaskRepository _taskRepository;
        private readonly SqlSugarClient _dbBase;
        public IOutboundOrderRepository Repository => BaseDal;
        public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IMaterielInfoService materielInfoService, IStockInfoDetailService stockDetailService, IStockInfoService stockInfoService, IUnitOfWorkManage unitOfWorkManage,ITaskRepository taskRepository) : base(BaseDal)
        public OutboundOrderService(IOutboundOrderRepository BaseDal, IBasicRepository basicRepository, IMapper mapper, IMaterielInfoService materielInfoService, IStockInfoDetailService stockDetailService, IStockInfoService stockInfoService, IUnitOfWorkManage unitOfWorkManage,ITaskRepository taskRepository) : base(BaseDal)
        {
            _mapper = mapper;
            _materielInfoService = materielInfoService;
            _stockDetailService = stockDetailService;
            _basicRepository = basicRepository;
            _stockService = stockInfoService;
            _dbBase = unitOfWorkManage.GetDbClient();
            _taskRepository = taskRepository;
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderService.cs
@@ -39,7 +39,7 @@
            {
                ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>();
                ISugarQueryable<Dt_StockInfoDetail> sugarQueryable2 = _dbBase.Queryable<Dt_StockInfoDetail>();
                List<StockViewDTO1> list = sugarQueryable1.InnerJoin(sugarQueryable2, (a, b) => a.Id == b.StockId && b.MaterielName.Contains("空托") && a.StockStatus == StockStatusEmun.已入库.ObjToInt()).Select((a, b) => new StockViewDTO1
                List<StockViewDTO1> list = sugarQueryable1.InnerJoin(sugarQueryable2, (a, b) => a.Id == b.StockId && b.MaterielName.Contains("空托盘") && a.StockStatus == StockStatusEmun.已入库.ObjToInt()).Select((a, b) => new StockViewDTO1
                {
                    LocationCode = a.LocationCode,
                    PalletCode = a.PalletCode,
@@ -52,20 +52,17 @@
                if (stockViewDTO == null) throw new Exception("未找到可出库空托");
                Dt_LocationInfo locationInfo = _dbBase.Queryable<Dt_LocationInfo>().Where(x => x.LocationCode == stockViewDTO.LocationCode).First();
                if (locationInfo == null) throw new Exception($"未找到货位【{stockViewDTO.LocationCode}】信息");
                Dt_StockInfo stockInfo = sugarQueryable1.Where(x => x.Id == stockViewDTO.StockId).Includes(x => x.Details).First();
                Dt_StockInfo stockInfo = _stockService.Repository.QueryFirst(a => a.Id == stockViewDTO.StockId);
                if (stockInfo == null) throw new Exception($"未找到空托库存信息");
                stockInfo.StockStatus = StockStatusEmun.出库中.ObjToInt();
                stockInfo.Details.ForEach(x =>
                {
                    x.Status = StockStatusEmun.出库中.ObjToInt();
                });
                locationInfo.CurrentQty--;
                Dt_Task _Task = new Dt_Task()
                {
                    CurrentAddress = locationInfo.LocationCode,
                    NextAddress = "SC01",
                    SourceAddress = locationInfo.LocationCode,
                    TargetAddress = "SC01",
                    SourceIsPickPlace = locationInfo.Row == 1 ? false : locationInfo.CurrentQty == locationInfo.MaxQty,
                    TargetIsPickPlace = false,
                    TargetAddress = "1008",
                    CreateDate = DateTime.Now,
                    Creater = "System",
                    PalletCode = stockViewDTO.PalletCode,
@@ -76,11 +73,11 @@
                    TaskType = TaskTypeEnum.PalletOutbound.ObjToInt(),
                    Dispatchertime = DateTime.Now,
                };
                List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(_Task);
                locationInfo.CurrentQty--;
                List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(new List<Dt_Task>() { _Task });
                Db.Ado.BeginTran();
                _dbBase.Updateable(locationInfo);
                _stockService.UpdateData(stockInfo);
                _stockDetailService.UpdateData(stockInfo.Details);
                _basicRepository.LocationInfoRepository.UpdateData(locationInfo);
                _stockService.Repository.UpdateData(stockInfo);
                _taskRepository.AddData(_Task);
                var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>());
                if (ResultData.Result == null) throw new Exception($"向WCS下发空托出库任务超时");
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ConveyorLine.cs
@@ -99,7 +99,14 @@
                //}
                var task = BaseDal.QueryFirst(x => x.PalletCode == lineDTO.Barcode);
                if (task == null) throw new Exception($"未找到托盘号[{lineDTO.Barcode}]的入库任务");
                if (task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt()) return content;
                if (task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt())
                {
                    task.NextAddress = "1004";
                    task.CurrentAddress = lineDTO.stationCode;
                    task.TaskState = (int)InTaskStatusEnum.Line_InExecuting;
                    BaseDal.UpdateData(task);
                    return content;
                }
                if (task.TaskType != TaskTypeEnum.Inbound.ObjToInt()) throw new Exception($"未找到托盘号[{lineDTO.Barcode}]的入库任务");
                //if (task.TaskState != (int)InTaskStatusEnum.AGV_InFinish) throw new Exception($"托盘号[{lineDTO.Barcode}]的入库任务状态不匹配");
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -303,7 +303,10 @@
                Dt_LocationInfo? locationInfo = null;
                string CarChargingStation = AppSettings.Configuration[nameof(CarChargingStation)];//获取穿梭车充电位置
                var ChargingStations = CarChargingStation.Split(",");
                Dt_StockInfoDetail instockInfoDetail = _stockService.StockInfoDetailService.Repository.QueryData(x => x.MaterielCode == stockInfoDetail.MaterielCode).OrderByDescending(x => x.CreateDate).First();
                Dt_StockInfoDetail? instockInfoDetail = null;
                var instockInfoDetails = _stockService.StockInfoDetailService.Repository.QueryData(x => x.MaterielCode == stockInfoDetail.MaterielCode && x.Status == StockStatusEmun.已入库.ObjToInt());
                if (instockInfoDetails != null && instockInfoDetails.Count > 0)
                    instockInfoDetail = instockInfoDetails.OrderByDescending(x => x.CreateDate).First();
                if (instockInfoDetail != null) instockInfo = _stockService.StockInfoService.Repository.GetStockInfo(instockInfoDetail.StockId);
                if (instockInfo != null)//无库存
                {
@@ -323,6 +326,12 @@
                }
                if (locationInfo == null) locationInfo = _basicService.LocationInfoService.AssignLocation(2);//重新分配货位
                if (locationInfo == null) throw new Exception($"无可入货位");
                Dt_LocationInfo? locationInfo1 = null;
                if (locationInfo.Row == 1)
                {
                    locationInfo1 = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == 2 && x.Layer == locationInfo.Layer && x.Column == locationInfo.Column);
                    locationInfo1.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
                }
                task.TaskState = (int)InTaskStatusEnum.SC_InExecuting;
                task.CurrentAddress = task.NextAddress;
@@ -343,6 +352,7 @@
                _stockService.StockInfoService.Repository.UpdateData(stockInfo);
                _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail);
                _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                if (locationInfo1 != null) _basicService.LocationInfoService.Repository.UpdateData(locationInfo1);
                Db.Ado.CommitTran();
                return WebResponseContent.Instance.OK(data: new ReceiveWMSInfo()
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -132,6 +132,8 @@
                            CurrentAddress = stockInfo.LocationCode,
                            Grade = 0,
                            PalletCode = stockInfo.PalletCode,
                            TargetIsPickPlace = false,
                            SourceIsPickPlace = locationInfo.Row == 1 ? false : stockInfo.SerialNumber == locationInfo.MaxQty,
                            NextAddress = "1008",
                            Roadway = locationInfo.RoadwayNo,
                            SourceAddress = stockInfo.LocationCode,
@@ -161,7 +163,7 @@
            {
                var locationInfo1 = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == 2 && x.Column == locationInfo.Column && x.Layer == locationInfo.Layer);
                stockInfos = _stockService.StockInfoService.Repository.QueryData(x => locationInfo1.LocationCode == x.LocationCode).OrderByDescending(x => x.SerialNumber).ToList();
                if (stockInfos == null|| stockInfos.Count < 1)
                if (stockInfos == null || stockInfos.Count < 1)
                {
                    return (dt_Tasks, locationInfos, stockInfos);
                }
@@ -178,7 +180,7 @@
                    {
                        CurrentAddress = item.LocationCode,
                        SourceIsPickPlace = item.SerialNumber == 12,
                        TargetIsPickPlace = i == 12,
                        TargetIsPickPlace = i == 12 ? locationInfo2.Row != 1 : false,
                        Grade = 0,
                        PalletCode = item.PalletCode,
                        NextAddress = locationInfo2.LocationCode,
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -262,7 +262,7 @@
            {
                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == WMStask.TaskNum && x.TaskType == WMStask.TaskType);
                if (task == null) return WebResponseContent.Instance.Error("未找到任务信息");
                if (task.TaskType == (int)TaskTypeEnum.Inbound)
                if (TaskEnumHelper.GetTaskTypeGroup(task.TaskType) == TaskTypeGroup.InboundGroup)
                {
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                    if (WMStask.TaskState != nextStatus) return WebResponseContent.Instance.Error($"该任务状态有误,任务号:【{task.TaskNum}】,任务状态:【{task.TaskState}】");
@@ -283,7 +283,7 @@
                            break;
                        //case (int)TaskOutStatusEnum.Line_OutFinish:
                            //break;
                        //break;
                        case (int)TaskOutStatusEnum.OutFinish:
                            UpdateTaskStatusOutFinish(task);
                            break;
@@ -327,7 +327,7 @@
                }
                if (Sourcelocation != null)
                {
                    Sourcelocation.CurrentQty--;
                    if (task.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt()) Sourcelocation.CurrentQty--;
                    if (Sourcelocation.CurrentQty == 0)
                    {
                        Sourcelocation.LocationStatus = LocationStatusEnum.Free.ObjToInt();
@@ -336,8 +336,9 @@
                    if (Sourcelocation.Row == 1 && Sourcelocation.LocationStatus == LocationStatusEnum.Free.ObjToInt())
                    {
                        Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == 2 && x.Column == Sourcelocation.Column && x.Layer == Sourcelocation.Layer);
                        if (locationInfo.CurrentQty == 0 && locationInfo.LocationStatus == LocationStatusEnum.Free.ObjToInt())
                        if (locationInfo.CurrentQty == 0 /*&& locationInfo.LocationStatus == LocationStatusEnum.Free.ObjToInt()*/)
                        {
                            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                            locationInfo.EnableStatus = EnableStatusEnum.Normal.ObjToInt();
                            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                        }
@@ -368,11 +369,11 @@
        {
            try
            {
                Dt_OutStockLockInfo outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryFirst(x => x.TaskNum == task.TaskNum);
                Dt_OutStockLockInfo? outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryFirst(x => x.TaskNum == task.TaskNum);
                Dt_OutboundOrder? outboundOrder = null;
                int overCount = 0;
                if (outStockLockInfo != null)
                {
                    Dt_OutboundOrder outboundOrder = null;
                    int overCount = 0;
                    Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == outStockLockInfo.OrderDetailId);
                    if (outboundOrderDetail != null)
                    {
@@ -387,17 +388,17 @@
                        }
                    }
                    outStockLockInfo.Status = OutLockStockStatusEnum.出库完成.ObjToInt();
                    Db.Ado.BeginTran();
                    if (outboundOrder != null && outboundOrder.Details.Count == overCount)
                    {
                        outboundOrder.OrderStatus = OutboundStatusEnum.出库完成.ObjToInt();
                        _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                        _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    }
                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    _outboundService.OutboundStockLockInfoService.Repository.UpdateData(outStockLockInfo);
                    Db.Ado.CommitTran();
                }
                Db.Ado.BeginTran();
                if (outboundOrder != null && outboundOrder.Details.Count == overCount)
                {
                    outboundOrder.OrderStatus = OutboundStatusEnum.出库完成.ObjToInt();
                    _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                }
                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                _outboundService.OutboundStockLockInfoService.Repository.UpdateData(outStockLockInfo);
                Db.Ado.CommitTran();
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
@@ -467,7 +468,23 @@
                if (stockInfo.StockStatus != StockStatusEmun.入库中.ObjToInt()) throw new Exception($"托盘[{task.PalletCode}],该组盘状态不可入库");
                Dt_StockInfoDetail stockInfoDetail = stockInfo.Details.FirstOrDefault(x => x.StockId == stockInfo.Id);
                if (task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt())
                {
                    stockInfo.SerialNumber = locationInfo.CurrentQty;
                    stockInfo.InDate = DateTime.Now;
                    stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
                    stockInfoDetail.Status = StockStatusEmun.已入库.ObjToInt();
                    locationInfo.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
                    task.CurrentAddress = task.NextAddress;
                    task.NextAddress = string.Empty;
                    Db.Ado.BeginTran();
                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
                    _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail);
                    Db.Ado.CommitTran();
                    return content;
                }
                #region å…¥åº“单
                Dt_InboundOrder inboundOrder = _inboundService.InbounOrderService.GetInboundOrder(stockInfoDetail.OrderNo);
                if (inboundOrder == null || inboundOrder.Details == null) throw new Exception($"未找到托盘[{task.PalletCode}]的入库单明细信息");
ÏîÄ¿´úÂë/ÎߺþÈýÒ»PDA/pages/stash/InEmpty.vue
@@ -58,7 +58,7 @@
                    res => {
                        if (res.status) {
                            this.$refs.uToast.show({
                                title: "成功",
                                title: "空托入库申请成功",
                                type: "success"
                            })
                            this.barcode = "";
ÏîÄ¿´úÂë/ÎߺþÈýÒ»PDA/pages/stash/index.vue
@@ -101,7 +101,7 @@
                }
            },
            PdaOutEmpty(){
                this.$u.post('/api/PDA/PdaOutEmpty').then(
                this.$u.post('/api/PDA/OutEmpty').then(
                    res => {
                        if (res.status) {
                            this.$refs.uToast.show({