dengjunjie
2024-12-16 81cfbb34ad9092b19a2e3692786ee97f3646014b
Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
已删除13个文件
已修改52个文件
已添加11个文件
1621 ■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/48209466-174f-415e-a834-4bc50f2d98fd.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/System/VueDictionaryDTO.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/ISys_MenuRepository.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Log.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Menu.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Role.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_User.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_MenuRepository.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_MenuService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_RoleService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2890c663-d711-4602-bdad-56852b6a51bc.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/433da193-e6b4-48ed-bdc6-2332b099c9c2.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5b6089c5-1619-43fe-9608-d5b598449936.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5e0bd2ed-63f0-464e-b65d-6e328058f9ca.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/719780bf-fe87-4572-8100-bc81ec4f7f74.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/776b31ca-b3d0-487d-8a56-85a65dead3f1.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7c6138bc-3140-4505-80bf-ce7e49063d2e.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7f936e8e-287c-47e4-a8cd-003d0971fc1d.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8ec046b0-40f2-4e27-acac-8986b42cfae0.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/90452a76-738e-47ca-a3e0-da8f36d31ada.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/993667d3-2068-4ea5-8fda-e1b10b53b187.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9b53cffc-065b-40ee-a779-a99d0cdd29b8.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9ec6694e-5882-4f4c-83dc-d548cd406f48.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b6698150-4fc6-4ad0-a0c8-f0d9b263a855.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c1efb1e4-a109-49ce-9975-1c6c4061c161.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ApprovalService/ApprovalTaskService.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/WIDESEA_CheckService.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/ERPInvokeService.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IERPInvokeService.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/InvokeERPService.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPBaseModel.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPCheckModel.cs 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPInboundModel.cs 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReceiveModel.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/WIDESEA_External.csproj 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IApprovalService/IApprovalTaskService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReceiveOrderService.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderController.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/ReceiveOrderController.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/48209466-174f-415e-a834-4bc50f2d98fd.vsidx
Binary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/System/VueDictionaryDTO.cs
@@ -13,5 +13,7 @@
        public string Config { get; set; }
        public object Data {  get; set; }
        public bool SaveCache { get; set; } = true;
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj
@@ -7,11 +7,11 @@
    </PropertyGroup>
    <ItemGroup>
        <ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
      <Folder Include="BasicInfo\" />
    </ItemGroup>
    <ItemGroup>
      <Folder Include="BasicInfo\" />
      <ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
    </ItemGroup>
</Project>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj
@@ -6,8 +6,4 @@
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\WIDESEAWCS_BasicInfoRepository\WIDESEAWCS_BasicInfoRepository.csproj" />
  </ItemGroup>
</Project>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/ISys_MenuRepository.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_DTO.System;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Model.Models;
@@ -11,7 +12,7 @@
{
    public interface ISys_MenuRepository : IRepository<Sys_Menu>
    {
        List<Sys_Menu> GetAllMenu();
        List<MenuDTO> GetAllMenu();
        object GetSuperAdminMenu();
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_DTO.System;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Model.Models;
@@ -14,9 +15,9 @@
        object GetCurrentMenuActionList();
        object GetMenuActionList(int roleId);
        List<Sys_Menu> GetUserMenuList(int roleId);
        List<MenuDTO> GetUserMenuList(int roleId);
        List<Sys_Actions> GetActions(int menuId, List<Sys_Actions> menuActions, List<Permissions> permissions, int roleId);
        List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId);
        object GetMenu();
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Log.cs
@@ -8,7 +8,7 @@
namespace WIDESEAWCS_Model.Models
{
    [MultiTenant]
    [SugarTable, MultiTenant]
    public class Sys_Log
    {
        /// <summary>
@@ -44,13 +44,13 @@
        /// <summary>
        /// è¯·æ±‚参数
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "请求参数")]
        [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "请求参数")]
        public string RequestParam { get; set; }
        /// <summary>
        /// å“åº”参数
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "响应参数")]
        [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "响应参数")]
        public string ResponseParam { get; set; }
        /// <summary>
@@ -75,12 +75,12 @@
        /// ç”¨æˆ·åç§°
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "用户名称")]
        public string UserName { get; set; }
        public string? UserName { get; set; }
        /// <summary>
        /// ç”¨æˆ·ä¸»é”®
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "用户主键")]
        public int? User_Id { get; set; }
        public int? UserId { get; set; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Menu.cs
@@ -77,11 +77,5 @@
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "菜单类型")]
        public int? MenuType { get; set; }
        [Navigate(NavigateType.OneToMany, nameof(ParentId), nameof(MenuId)), SugarColumn(IsIgnore = true, IsNullable = true)]
        public List<Sys_Menu> Menus { get; set; }
        [SugarColumn(IsIgnore = true)]
        public List<Sys_Actions> Actions { get; set; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_Role.cs
@@ -48,7 +48,7 @@
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "角色名称")]
        public string RoleName { get; set; }
        [Navigate(NavigateType.OneToMany, nameof(ParentId), nameof(RoleId)), SugarColumn(IsIgnore = true, IsNullable = true)]
        public List<Sys_Role> Roles { get; set; }
        //[Navigate(NavigateType.OneToMany, nameof(ParentId), nameof(RoleId)), SugarColumn(IsIgnore = true, IsNullable = true)]
        //public List<Sys_Role> Roles { get; set; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_User.cs
@@ -41,12 +41,6 @@
        public string RoleName { get; set; }
        /// <summary>
        /// ç”µè¯
        /// </summary>
        [SugarColumn(Length = 11, IsNullable = true, ColumnDescription = "电话")]
        public string PhoneNo { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "备注")]
@@ -65,34 +59,10 @@
        public string UserTrueName { get; set; }
        /// <summary>
        /// éƒ¨é—¨
        /// </summary>
        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "部门")]
        public string DeptName { get; set; }
        /// <summary>
        /// éƒ¨é—¨ID
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "部门ID")]
        public int? Dept_Id { get; set; }
        /// <summary>
        /// é‚®ç®±
        /// </summary>
        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "邮箱")]
        public string Email { get; set; }
        /// <summary>
        /// æ˜¯å¦å¯ç”¨
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "是否可用")]
        public byte Enable { get; set; }
        /// <summary>
        /// æ€§åˆ«
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "性别")]
        public int? Gender { get; set; }
        /// <summary>
        /// å¤´åƒ
@@ -105,36 +75,6 @@
        /// </summary>
        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "最后密码修改时间")]
        public DateTime? LastModifyPwdDate { get; set; }
        /// <summary>
        /// åœ°å€
        /// </summary>
        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "地址")]
        public string Address { get; set; }
        /// <summary>
        /// å®¡æ ¸æ—¶é—´
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "审核时间")]
        public DateTime? AuditDate { get; set; }
        /// <summary>
        /// å®¡æ ¸çŠ¶æ€
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "审核状态")]
        public int? AuditStatus { get; set; }
        /// <summary>
        /// å®¡æ ¸äºº
        /// </summary>
        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "审核人")]
        public string Auditor { get; set; }
        /// <summary>
        /// ä»¤ç‰Œ
        /// </summary>
        [SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "令牌")]
        public string Token { get; set; }
        /// <summary>
        /// ç§Ÿæˆ·ID
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
@@ -22,6 +22,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.Attributes;
using WIDESEAWCS_Core.DB.Models;
namespace WIDESEAWCS_Model.Models
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
@@ -8,7 +8,7 @@
    <ItemGroup>
        <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
        <PackageReference Include="WIDESEAWCS_Core" Version="1.0.5" />
        <PackageReference Include="WIDESEAWCS_Core" Version="1.0.7" />
    </ItemGroup>
    <ItemGroup>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln
@@ -7,8 +7,6 @@
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Tasks", "WIDESEAWCS_Tasks\WIDESEAWCS_Tasks.csproj", "{294E4915-0241-4C8C-BA99-7588B945863A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Model", "WIDESEAWCS_Model\WIDESEAWCS_Model.csproj", "{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_DTO", "WIDESEAWCS_DTO\WIDESEAWCS_DTO.csproj", "{C2D3D138-9109-481B-8BEB-A27597890B2C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Common", "WIDESEAWCS_Common\WIDESEAWCS_Common.csproj", "{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}"
@@ -24,8 +22,6 @@
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "System", "System", "{6295C9FB-DAC4-4C07-97C5-C0332ABDD13D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TaskInfo", "TaskInfo", "{D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ISystemRepository", "WIDESEAWCS_ISystemRepository\WIDESEAWCS_ISystemRepository.csproj", "{F302E6D6-5A95-4D22-8DC2-21BE2CB30275}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_SystemRepository", "WIDESEAWCS_SystemRepository\WIDESEAWCS_SystemRepository.csproj", "{5777BDEC-4726-4425-85F2-A090524F692D}"
EndProject
@@ -50,13 +46,13 @@
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BasicInfo", "BasicInfo", "{9CB2F821-BB23-48E5-88E8-C326477733C0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IBasicInfoRepository", "WIDESEAWCS_IBasicInfoRepository\WIDESEAWCS_IBasicInfoRepository.csproj", "{266D07B7-3648-4F3D-818A-89EDA7D84C58}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicInfoRepository", "WIDESEAWCS_BasicInfoRepository\WIDESEAWCS_BasicInfoRepository.csproj", "{206FDF79-9BF3-433A-B7FF-627287BBD760}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_IBasicInfoService", "WIDESEAWCS_IBasicInfoService\WIDESEAWCS_IBasicInfoService.csproj", "{8C2CC25B-DE5D-433E-A550-63864C7A716D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicInfoService", "WIDESEAWCS_BasicInfoService\WIDESEAWCS_BasicInfoService.csproj", "{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_Model", "WIDESEAWCS_Model\WIDESEAWCS_Model.csproj", "{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_ISystemRepository", "WIDESEAWCS_ISystemRepository\WIDESEAWCS_ISystemRepository.csproj", "{B778DFFD-A5BA-4CAF-805E-2630CF080CDC}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -72,10 +68,6 @@
        {294E4915-0241-4C8C-BA99-7588B945863A}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {294E4915-0241-4C8C-BA99-7588B945863A}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {294E4915-0241-4C8C-BA99-7588B945863A}.Release|Any CPU.Build.0 = Release|Any CPU
        {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}.Release|Any CPU.Build.0 = Release|Any CPU
        {C2D3D138-9109-481B-8BEB-A27597890B2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {C2D3D138-9109-481B-8BEB-A27597890B2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {C2D3D138-9109-481B-8BEB-A27597890B2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -84,10 +76,6 @@
        {9FBC654C-51DE-422D-9E1E-6A38268DE1E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {9FBC654C-51DE-422D-9E1E-6A38268DE1E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {9FBC654C-51DE-422D-9E1E-6A38268DE1E2}.Release|Any CPU.Build.0 = Release|Any CPU
        {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {F302E6D6-5A95-4D22-8DC2-21BE2CB30275}.Release|Any CPU.Build.0 = Release|Any CPU
        {5777BDEC-4726-4425-85F2-A090524F692D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {5777BDEC-4726-4425-85F2-A090524F692D}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {5777BDEC-4726-4425-85F2-A090524F692D}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -116,14 +104,6 @@
        {83F18A31-5983-4587-A0B2-414BF70E50B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {83F18A31-5983-4587-A0B2-414BF70E50B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {83F18A31-5983-4587-A0B2-414BF70E50B5}.Release|Any CPU.Build.0 = Release|Any CPU
        {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {266D07B7-3648-4F3D-818A-89EDA7D84C58}.Release|Any CPU.Build.0 = Release|Any CPU
        {206FDF79-9BF3-433A-B7FF-627287BBD760}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {206FDF79-9BF3-433A-B7FF-627287BBD760}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {206FDF79-9BF3-433A-B7FF-627287BBD760}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {206FDF79-9BF3-433A-B7FF-627287BBD760}.Release|Any CPU.Build.0 = Release|Any CPU
        {8C2CC25B-DE5D-433E-A550-63864C7A716D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {8C2CC25B-DE5D-433E-A550-63864C7A716D}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {8C2CC25B-DE5D-433E-A550-63864C7A716D}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -132,6 +112,14 @@
        {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}.Release|Any CPU.Build.0 = Release|Any CPU
        {9D2AC22C-9A86-41AE-AA02-553554A7B1D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {9D2AC22C-9A86-41AE-AA02-553554A7B1D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {9D2AC22C-9A86-41AE-AA02-553554A7B1D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {9D2AC22C-9A86-41AE-AA02-553554A7B1D7}.Release|Any CPU.Build.0 = Release|Any CPU
        {B778DFFD-A5BA-4CAF-805E-2630CF080CDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {B778DFFD-A5BA-4CAF-805E-2630CF080CDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {B778DFFD-A5BA-4CAF-805E-2630CF080CDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {B778DFFD-A5BA-4CAF-805E-2630CF080CDC}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
@@ -141,7 +129,6 @@
        {684035E2-174F-47CE-AA5C-36624C7E26F3} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
        {6295C9FB-DAC4-4C07-97C5-C0332ABDD13D} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
        {D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
        {F302E6D6-5A95-4D22-8DC2-21BE2CB30275} = {93EFF637-042E-4DD0-A74B-7F0CF998CF96}
        {5777BDEC-4726-4425-85F2-A090524F692D} = {93EFF637-042E-4DD0-A74B-7F0CF998CF96}
        {09D05F35-CEA2-48D9-86D0-FB95982BA511} = {684035E2-174F-47CE-AA5C-36624C7E26F3}
        {35054AA5-CF40-4F38-9414-C76742C29382} = {684035E2-174F-47CE-AA5C-36624C7E26F3}
@@ -151,10 +138,9 @@
        {83F18A31-5983-4587-A0B2-414BF70E50B5} = {D9CF90D0-AFB3-42AA-A2F1-BEE741E0AC0D}
        {5CC8AEFF-2F75-4053-9569-73419839875A} = {4FF30CF7-DA79-4EDD-9A6E-0B0BEAD72A1A}
        {9CB2F821-BB23-48E5-88E8-C326477733C0} = {A12315CA-9D81-412C-A09B-B23D95CFFE16}
        {266D07B7-3648-4F3D-818A-89EDA7D84C58} = {5CC8AEFF-2F75-4053-9569-73419839875A}
        {206FDF79-9BF3-433A-B7FF-627287BBD760} = {5CC8AEFF-2F75-4053-9569-73419839875A}
        {8C2CC25B-DE5D-433E-A550-63864C7A716D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
        {FFAB2C76-1C9E-4006-95C8-A0B2AA53139D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
        {B778DFFD-A5BA-4CAF-805E-2630CF080CDC} = {93EFF637-042E-4DD0-A74B-7F0CF998CF96}
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {C9A356D5-D4FE-414B-B982-6C97792BE6C6}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_MenuRepository.cs
@@ -1,10 +1,13 @@
using SqlSugar;
using AutoMapper;
using SqlSugar;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_DTO.System;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.Helper;
@@ -16,14 +19,16 @@
{
    public class Sys_MenuRepository : RepositoryBase<Sys_Menu>, ISys_MenuRepository
    {
        public Sys_MenuRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
        private readonly IMapper _mapper;
        public Sys_MenuRepository(IUnitOfWorkManage unitOfWorkManage, IMapper mapper) : base(unitOfWorkManage)
        {
            _mapper = mapper;
        }
        public List<Sys_Menu> GetAllMenu()
        public List<MenuDTO> GetAllMenu()
        {
            List<Sys_Menu> _menus = base.QueryData(x => x.Enable == 1 || x.Enable == 2).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList();
            List<Sys_Menu> menus = base.QueryData(x => x.Enable == 1 || x.Enable == 2).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList();
            List<MenuDTO> _menus = _mapper.Map<List<MenuDTO>>(menus);
            _menus.ForEach(x =>
            {
                x.MenuType ??= 0;
@@ -31,11 +36,11 @@
                {
                    try
                    {
                        x.Actions = x.Auth.DeserializeObject<List<Sys_Actions>>();
                        x.Actions = x.Auth.DeserializeObject<List<ActionDTO>>();
                    }
                    catch { }
                }
                x.Actions ??= new List<Sys_Actions>();
                x.Actions ??= new List<ActionDTO>();
            });
            string test = _menus.Serialize();
            return _menus;
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs
@@ -7,6 +7,7 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Caches;
@@ -39,7 +40,7 @@
            List<string> cacheDicNos = new List<string>();
            foreach (string n in dicNos)
            {
                string str = _cacheService.Get(n);
                string? str = _cacheService.Get(n);
                if (!string.IsNullOrEmpty(str))
                {
                    VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
@@ -75,14 +76,15 @@
                        {
                            Config = v.Config,
                            DicNo = v.DicNo,
                            Data = BaseDal.QueryDynamicDataBySql(v.DBSql)
                            Data = BaseDal.QueryDynamicDataBySql(v.DBSql),
                            SaveCache = false,
                        });
                    }
                }
                foreach (var item in selectDics)
                {
                    if (!_cacheService.Exists(item.DicNo))
                    if (!_cacheService.Exists(item.DicNo) && item.SaveCache)
                    {
                        _cacheService.Add(item.DicNo, item.Serialize());
                    }
@@ -90,25 +92,7 @@
                vueDictionaryDTOs.AddRange(selectDics);
            }
            //object GetSourceData(string dicNo, string dbSql, object data)
            //{
            //    if (string.IsNullOrEmpty(dbSql))
            //    {
            //        return data;
            //    }
            //    return BaseDal.QueryObjectDataBySql(dbSql, null);
            //}
            //List<VueDictionaryDTO> vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO
            //{
            //    DicNo = item.dicNo,
            //    Config = item.config,
            //    Data = GetSourceData(item.dicNo, item.dbSql, item.list)
            //}).ToList();
            return vueDictionaryDTOs;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_MenuService.cs
@@ -5,6 +5,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_DTO.System;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
@@ -61,7 +62,7 @@
        }
        public List<Sys_Menu> GetUserMenuList(int roleId)
        public List<MenuDTO> GetUserMenuList(int roleId)
        {
            if (App.User.IsRoleIdSuperAdmin(roleId))
            {
@@ -71,7 +72,7 @@
            return BaseDal.GetAllMenu().Where(x => menuIds.Contains(x.MenuId)).ToList();
        }
        public List<Sys_Actions> GetActions(int menuId, List<Sys_Actions> menuActions, List<Permissions> permissions, int roleId)
        public List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId)
        {
            if (App.User.IsRoleIdSuperAdmin(roleId))
            {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_RoleService.cs
@@ -107,7 +107,7 @@
            //获取用户权限
            List<Permissions> permissions = _MenuRepository.GetPermissions(roleId);
            //权限用户权限查询所有的菜单信息
            List<Sys_Menu> menus =  _MenuService.GetUserMenuList(roleId);
            List<MenuDTO> menus = _MenuService.GetUserMenuList(roleId);
            //获取当前用户权限如:(Add,Search)对应的显示文本信息如:Add:添加,Search:查询
            var data = menus.Select(x => new
            {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs
@@ -124,11 +124,11 @@
            {
                s.UserName,
                s.UserTrueName,
                s.Address,
                s.PhoneNo,
                s.Email,
                //s.Address,
                //s.PhoneNo,
                //s.Email,
                s.Remark,
                s.Gender,
                //s.Gender,
                s.RoleName,
                s.HeadImageUrl,
                s.CreateDate
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj
@@ -8,7 +8,6 @@
    <ItemGroup>
        <ProjectReference Include="..\WIDESEAWCS_ITaskInfoRepository\WIDESEAWCS_ITaskInfoRepository.csproj" />
        <ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
    </ItemGroup>
</Project>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -468,20 +468,20 @@
                    BaseDal.UpdateData(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
                    WMSTaskDTO taskDTO = new WMSTaskDTO()
                    {
                        TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                        Grade = 1,
                        PalletCode = task.PalletCode + "S",
                        RoadWay = "SC01",
                        SourceAddress = task.TargetAddress,
                        TargetAddress = "CLOutAreaA",
                        TaskState = (int)TaskOutStatusEnum.OutNew,
                        Id = 0,
                        TaskType = (int)TaskOutboundTypeEnum.Outbound
                    };
                    //WMSTaskDTO taskDTO = new WMSTaskDTO()
                    //{
                    //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                    //    Grade = 1,
                    //    PalletCode = task.PalletCode + "S",
                    //    RoadWay = "SC01",
                    //    SourceAddress = task.TargetAddress,
                    //    TargetAddress = "CLOutAreaA",
                    //    TaskState = (int)TaskOutStatusEnum.OutNew,
                    //    Id = 0,
                    //    TaskType = (int)TaskOutboundTypeEnum.Outbound
                    //};
                    content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                    //content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -133,7 +133,7 @@
            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
            {
                if (OutTaskStationIsOccupied(task) != null)
                if (OutTaskStationIsOccupied(task) != null || true)
                {
                    return task;
                }
@@ -203,12 +203,14 @@
            stackerCraneTaskCommand.TrayType = 1;
            if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//判断是否是入库任务
            {
                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
                if (routers.Count > 0)
                {
                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);
                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn);
                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer);
                //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
                //if (routers.Count > 0)
                //{
                string[] startCodes = task.CurrentAddress.Split("-");
                stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]);
                stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]);
                stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]);
                    string[] targetCodes = task.NextAddress.Split("-");
                    if (targetCodes.Length == 3)
@@ -223,21 +225,23 @@
                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"入库任务终点错误,起点:【{task.NextAddress}】");
                        return null;
                    }
                }
                else
                {
                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"未找到站台【{task.NextAddress}】信息,无法获取对应的堆垛机取货站台信息");
                    return null;
                }
                //}
                //else
                //{
                //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"未找到站台【{task.NextAddress}】信息,无法获取对应的堆垛机取货站台信息");
                //    return null;
                //}
            }
            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
            {
                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
                if (routers.Count > 0)
                //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
                //if (routers.Count > 0)
                {
                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);
                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn);
                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer);
                    string[] targetCodes = task.NextAddress.Split("-");
                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
                    string[] sourceCodes = task.CurrentAddress.Split("-");
                    if (sourceCodes.Length == 3)
@@ -253,11 +257,11 @@
                        return null;
                    }
                }
                else
                {
                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"未找到站台【{task.NextAddress}】信息,无法获取对应的堆垛机放货站台信息");
                    return null;
                }
                //else
                //{
                //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"未找到站台【{task.NextAddress}】信息,无法获取对应的堆垛机放货站台信息");
                //    return null;
                //}
            }
            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
            {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2890c663-d711-4602-bdad-56852b6a51bc.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/433da193-e6b4-48ed-bdc6-2332b099c9c2.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5b6089c5-1619-43fe-9608-d5b598449936.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5e0bd2ed-63f0-464e-b65d-6e328058f9ca.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/719780bf-fe87-4572-8100-bc81ec4f7f74.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/776b31ca-b3d0-487d-8a56-85a65dead3f1.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7c6138bc-3140-4505-80bf-ce7e49063d2e.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7f936e8e-287c-47e4-a8cd-003d0971fc1d.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8ec046b0-40f2-4e27-acac-8986b42cfae0.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/90452a76-738e-47ca-a3e0-da8f36d31ada.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/993667d3-2068-4ea5-8fda-e1b10b53b187.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9b53cffc-065b-40ee-a779-a99d0cdd29b8.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9ec6694e-5882-4f4c-83dc-d548cd406f48.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b6698150-4fc6-4ad0-a0c8-f0d9b263a855.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c1efb1e4-a109-49ce-9975-1c6c4061c161.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ApprovalService/ApprovalTaskService.cs
@@ -40,8 +40,11 @@
            _userRepository = userRepository;
        }
        /// <summary>
        /// å®¡æ‰¹åŒæ„
        /// </summary>
        /// <param name="sourceKey">源主键</param>
        /// <returns></returns>
        public WebResponseContent AuditAgree(int sourceKey)
        {
            try
@@ -149,6 +152,11 @@
            }
        }
        /// <summary>
        /// å®¡æ‰¹é©³å›ž
        /// </summary>
        /// <param name="sourceKey">源主键</param>
        /// <returns></returns>
        public WebResponseContent AuditReject(int sourceKey)
        {
            try
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs
@@ -31,27 +31,11 @@
            _unitOfWorkManage = unitOfWorkManage;
        }
        public override PageGridData<Dt_LocationInfo> GetPageData(PageDataOptions options)
        {
            return base.GetPageData(options);
        }
        public override WebResponseContent AddData(SaveModel saveModel)
        {
            Dt_LocationInfo locationInfo = saveModel.MainData.DicToModel<Dt_LocationInfo>();
            return base.AddData(locationInfo);
        }
        public override WebResponseContent UpdateData(SaveModel saveModel)
        {
            return base.UpdateData(saveModel);
        }
        public override WebResponseContent DeleteData(object[] keys)
        {
            return base.DeleteData(keys);
        }
        /// <summary>
        /// æ‰¹é‡å¯ç”¨è´§ä½
        /// </summary>
        /// <param name="keys">货位主键数组</param>
        /// <returns></returns>
        public WebResponseContent LocationEnableStatus(int[] keys)
        {
            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
@@ -64,6 +48,11 @@
            return WebResponseContent.Instance.OK();
        }
        /// <summary>
        /// æ‰¹é‡ç¦ç”¨è´§ä½
        /// </summary>
        /// <param name="keys">货位主键数组</param>
        /// <returns></returns>
        public WebResponseContent LocationDisableStatus(int[] keys)
        {
            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
@@ -76,16 +65,31 @@
            return WebResponseContent.Instance.OK();
        }
        /// <summary>
        /// å•个启用货位
        /// </summary>
        /// <param name="key">货位主键</param>
        /// <returns></returns>
        public WebResponseContent LocationEnableStatus(int key)
        {
            return LocationEnableStatus(new int[] { key });
        }
        /// <summary>
        /// å•个禁用货位
        /// </summary>
        /// <param name="key">货位主键</param>
        /// <returns></returns>
        public WebResponseContent LocationDisableStatus(int key)
        {
            return LocationDisableStatus(new int[] { key });
        }
        /// <summary>
        /// åˆå§‹åŒ–货位
        /// </summary>
        /// <param name="initializationLocationDTO"></param>
        /// <returns></returns>
        public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO)
        {
            try
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs
@@ -19,19 +19,5 @@
        public IMaterielInfoRepository Repository => BaseDal;
        public override WebResponseContent AddData(SaveModel saveModel)
        {
            return base.AddData(saveModel);
        }
        public override WebResponseContent UpdateData(SaveModel saveModel)
        {
            return base.UpdateData(saveModel);
        }
        public override WebResponseContent DeleteData(object[] keys)
        {
            return base.DeleteData(keys);
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs
@@ -22,22 +22,11 @@
        public IWarehouseRepository Repository => BaseDal;
        public override WebResponseContent AddData(SaveModel saveModel)
        {
            Dt_Warehouse warehouse = saveModel.MainData.DicToModel<Dt_Warehouse>();
            return base.AddData(warehouse);
        }
        public override WebResponseContent UpdateData(SaveModel saveModel)
        {
            return base.UpdateData(saveModel);
        }
        public override WebResponseContent DeleteData(object[] keys)
        {
            return base.DeleteData(keys);
        }
        /// <summary>
        /// æ‰¹é‡å¯ç”¨ä»“库
        /// </summary>
        /// <param name="keys">仓库主键数组</param>
        /// <returns></returns>
        public WebResponseContent WarehouseEnableStatus(int[] keys)
        {
            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
@@ -50,6 +39,11 @@
            return WebResponseContent.Instance.OK();
        }
        /// <summary>
        /// æ‰¹é‡ç¦ç”¨ä»“库
        /// </summary>
        /// <param name="keys">仓库主键数组</param>
        /// <returns></returns>
        public WebResponseContent WarehouseDisableStatus(int[] keys)
        {
            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
@@ -62,11 +56,21 @@
            return WebResponseContent.Instance.OK();
        }
        /// <summary>
        /// å•个启用仓库
        /// </summary>
        /// <param name="key">仓库主键</param>
        /// <returns></returns>
        public WebResponseContent WarehouseEnableStatus(int key)
        {
            return WarehouseEnableStatus(new int[] { key });
        }
        /// <summary>
        /// å•个禁用仓库
        /// </summary>
        /// <param name="key">仓库主键</param>
        /// <returns></returns>
        public WebResponseContent WarehouseDisableStatus(int key)
        {
            return WarehouseDisableStatus(new int[] { key });
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs
@@ -14,6 +14,9 @@
{
    public class BasicService : IBasicService
    {
        /// <summary>
        ///
        /// </summary>
        public ILocationInfoService LocationInfoService { get; }
        public IMaterielInfoService MaterielInfoService { get; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs
@@ -27,6 +27,13 @@
        private readonly static object _locker = new object();
        static List<LocationCache> locationCaches = new List<LocationCache>();
        /// <summary>
        /// è´§ä½åˆ†é…é€»è¾‘
        /// </summary>
        /// <param name="roadwayNo">巷道号</param>
        /// <param name="palletType">托盘类型</param>
        /// <returns></returns>
        public Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum palletType)
        {
            lock (_locker)
@@ -141,6 +148,12 @@
            return null;
        }
        /// <summary>
        /// ä¿®æ”¹è´§ä½çŠ¶æ€åŠç±»åž‹
        /// </summary>
        /// <param name="locationCode">货位编号</param>
        /// <param name="palletType">托盘类型</param>
        /// <param name="locationStatus">货位状态</param>
        public void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus)
        {
            Dt_LocationInfo location = Repository.QueryFirst(x => x.LocationCode == locationCode);
@@ -181,6 +194,12 @@
            Repository.UpdateData(locations);
        }
        /// <summary>
        /// ä¿®æ”¹è´§ä½çŠ¶æ€åŠç±»åž‹
        /// </summary>
        /// <param name="location">货位对象</param>
        /// <param name="palletType">托盘类型</param>
        /// <param name="locationStatus">货位状态</param>
        public void UpdateLocationStatus(Dt_LocationInfo location, PalletTypeEnum palletType, LocationStatusEnum locationStatus)
        {
            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs
@@ -17,16 +17,31 @@
{
    public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
    {
        /// <summary>
        /// åˆ¤æ–­ç‰©æ–™æ˜¯å¦å­˜åœ¨
        /// </summary>
        /// <param name="materielCode">物料编号</param>
        /// <returns></returns>
        public bool ExsitMateriel(string materielCode)
        {
            return BaseDal.QueryFirst(x => x.MaterielCode == materielCode) != null;
        }
        /// <summary>
        /// åˆ¤æ–­ç‰©æ–™æ˜¯å¦å­˜åœ¨
        /// </summary>
        /// <param name="materielCodes">物料编号集合</param>
        /// <returns></returns>
        public bool ExsitMateriels(List<string> materielCodes)
        {
            return BaseDal.QueryFirst(x => materielCodes.Contains(x.MaterielCode)) != null;
            return BaseDal.QueryData(x => materielCodes.Contains(x.MaterielCode)).Count == materielCodes.Count;
        }
        /// <summary>
        /// èŽ·å–ç‰©æ–™ä¿¡æ¯
        /// </summary>
        /// <param name="materielCode">物料编号</param>
        /// <returns></returns>
        public Dt_MaterielInfo GetMaterielInfo(string materielCode)
        {
            return BaseDal.QueryFirst(x => x.MaterielCode == materielCode);
@@ -35,13 +50,18 @@
        /// <summary>
        /// æŸ¥è¯¢ç‰©æ–™ä¿¡æ¯
        /// </summary>
        /// <param name="materielCodes"></param>
        /// <param name="materielCodes">物料编号</param>
        /// <returns></returns>
        public List<Dt_MaterielInfo> GetMaterielInfos(List<string> materielCodes)
        {
            return BaseDal.QueryData(x => materielCodes.Contains(x.MaterielCode));
        }
        /// <summary>
        /// æŽ¥æ”¶ERP物料信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public WebResponseContent ReceiveMaterial(MaterielInfoDTO model)
        {
            try
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs
@@ -23,6 +23,12 @@
            _checkOrderRepository = checkOrderRepository;
        }
        /// <summary>
        /// æäº¤è´¨æ£€ç»“æžœ
        /// </summary>
        /// <param name="checkOrderId">质检单主键</param>
        /// <param name="checkResult">质检结果对象</param>
        /// <returns></returns>
        public WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult)
        {
            try
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs
@@ -10,6 +10,8 @@
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Helper;
using WIDESEA_External.ERPService;
using WIDESEA_External.Model;
using WIDESEA_IApprovalRepository;
using WIDESEA_ICheckRepository;
using WIDESEA_ICheckService;
@@ -26,8 +28,9 @@
        private readonly IApprovalTaskRepository _approvalTaskRepository;
        private readonly ISys_UserRepository _userRepository;
        private readonly WebSocketServer _webSocketServer;
        private readonly IInvokeERPService _invokeERPService;
        public CheckOrderService(ICheckOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IApprovalFlowRepository approvalFlowRepository, IApprovalNodeRepository approvalNodeRepository, IApprovalTaskRepository approvalTaskRepository, ISys_UserRepository userRepository, WebSocketServer webSocketServer) : base(BaseDal)
        public CheckOrderService(ICheckOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IApprovalFlowRepository approvalFlowRepository, IApprovalNodeRepository approvalNodeRepository, IApprovalTaskRepository approvalTaskRepository, ISys_UserRepository userRepository, WebSocketServer webSocketServer, IInvokeERPService invokeERPService) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _approvalFlowRepository = approvalFlowRepository;
@@ -35,6 +38,7 @@
            _approvalTaskRepository = approvalTaskRepository;
            _userRepository = userRepository;
            _webSocketServer = webSocketServer;
            _invokeERPService = invokeERPService;
        }
        public WebResponseContent CommitAudit(int checkOrderId)
@@ -121,5 +125,65 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent FeedbackCheckResult(int id)
        {
            try
            {
                Dt_CheckOrder checkOrder = Db.Queryable<Dt_CheckOrder>().Where(x => x.CheckOrderId == id).Includes(x => x.Details).First();
                if (checkOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到质检单据");
                }
                if(checkOrder.AuditStatus != AuditStatusEnum.Agree.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"审批未通过");
                }
                List<ERPCheckResult> checkResults = new List<ERPCheckResult>();
                foreach (var item in checkOrder.Details)
                {
                    ERPCheckResult checkResult = new ERPCheckResult()
                    {
                        DefectCode = item.DefectCode,
                        Note = item.Note,
                        Quantity = item.Quantity.ToString(),
                        Result = item.Result
                    };
                    checkResults.Add(checkResult);
                }
                ERPCheckModel model = new ERPCheckModel()
                {
                    Code = checkOrder.CheckOrderNo,
                    CompanyId = "",
                    Result = checkOrder.Result,
                    CreatorCode = checkOrder.Creater,
                    DefectedNote = checkOrder.DefectedNote,
                    MaterialsCode = checkOrder.MaterielCode,
                    PlantsId = "",
                    QtyDefected = checkOrder.DefectedQuantity.GetValueOrDefault().ToString(),
                    QtyInspected = checkOrder.ReceivedQuantity.ToString(),
                    QtyQualified = checkOrder.QualifiedQuantity.GetValueOrDefault().ToString(),
                    QtyReturn = checkOrder.ReturnQuantity.GetValueOrDefault().ToString(),
                    QtyScrapped = checkOrder.ScrappedQuantity.GetValueOrDefault().ToString(),
                    ReceiptCode = checkOrder.ReceiveOrderNo,
                    ReceiveDate = "",
                    SerNo = checkOrder.ReceiveDetailRowNo.ToString(),
                    TestDate = "",
                    UniqueTag = checkOrder.CheckOrderId.ToString(),
                    Way = 1,
                    Details = checkResults
                };
                string response = _invokeERPService.InvokeCheckOrderApi(model);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/WIDESEA_CheckService.csproj
@@ -7,6 +7,7 @@
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\WIDESEA_External\WIDESEA_External.csproj" />
    <ProjectReference Include="..\WIDESEA_IApprovalRepository\WIDESEA_IApprovalRepository.csproj" />
    <ProjectReference Include="..\WIDESEA_ICheckService\WIDESEA_ICheckService.csproj" />
    <ProjectReference Include="..\WIDESEA_ISystemRepository\WIDESEA_ISystemRepository.csproj" />
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs
@@ -102,6 +102,10 @@
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
            }
            return null;
        }
    }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/ERPInvokeService.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs
@@ -3,6 +3,8 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.Helper;
using WIDESEA_External.Model;
namespace WIDESEA_External.ERPService
{
@@ -11,5 +13,67 @@
    /// </summary>
    public class InvokeERPService : IInvokeERPService
    {
        string serviceIp = "";
        /// <summary>
        /// ERP收货单接口调用
        /// </summary>
        /// <param name="receiveModel"></param>
        /// <returns></returns>
        public string InvokeMatReceiveApi(ERPReceiveModel receiveModel)
        {
            string serviceAddress = "";
            ERPBaseModel<ERPReceiveModel> model = new ERPBaseModel<ERPReceiveModel>()
            {
                Data = receiveModel,
                Desc = "收货单",
                Type = "toTCWMSReceive",
                SecurityCode = ""
            };
            string response = HttpHelper.Post(serviceIp + serviceAddress, model.Serialize());
            return response;
        }
        /// <summary>
        /// ERP物料IQC检验单接口调用
        /// </summary>
        /// <param name="checkModel"></param>
        /// <returns></returns>
        public string InvokeCheckOrderApi(ERPCheckModel checkModel)
        {
            string serviceAddress = "";
            ERPBaseModel<ERPCheckModel> model = new ERPBaseModel<ERPCheckModel>()
            {
                Data = checkModel,
                Desc = "收货单",
                Type = "toTCWMSIQCTest",
                SecurityCode = ""
            };
            string response = HttpHelper.Post(serviceIp + serviceAddress, model.Serialize());
            return response;
        }
        /// <summary>
        /// ERP物料入库单接口调用
        /// </summary>
        /// <param name="inboundModel"></param>
        /// <returns></returns>
        public string InvokeInboundOrderApi(ERPInboundModel inboundModel)
        {
            string serviceAddress = "";
            ERPBaseModel<ERPInboundModel> model = new ERPBaseModel<ERPInboundModel>()
            {
                Data = inboundModel,
                Desc = "收货单",
                Type = "toTCWMSMaterialWarehousing",
                SecurityCode = ""
            };
            string response = HttpHelper.Post(serviceIp + serviceAddress, model.Serialize());
            return response;
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IERPInvokeService.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/IInvokeERPService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_External.Model;
namespace WIDESEA_External.ERPService
{
    /// <summary>
    /// è°ƒç”¨ERP接口
    /// </summary>
    public interface IInvokeERPService : IDependency
    {
        /// <summary>
        /// ERP收货单接口调用
        /// </summary>
        /// <param name="receiveModel"></param>
        /// <returns></returns>
        string InvokeMatReceiveApi(ERPReceiveModel receiveModel);
        /// <summary>
        /// ERP物料IQC检验单接口调用
        /// </summary>
        /// <param name="checkModel"></param>
        /// <returns></returns>
        string InvokeCheckOrderApi(ERPCheckModel checkModel);
        /// <summary>
        /// ERP物料入库单接口调用
        /// </summary>
        /// <param name="inboundModel"></param>
        /// <returns></returns>
        string InvokeInboundOrderApi(ERPInboundModel inboundModel);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/IERPService/InvokeERPService.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPBaseModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_External.Model
{
    public class ERPBaseModel<T>
    {
        public string Type { get; set; }
        public string Desc { get; set; }
        public string SecurityCode { get; set; }
        public T Data { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPCheckModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_External.Model
{
    public class ERPCheckModel
    {
        /// <summary>
        /// æ“ä½œç±»åž‹
        /// </summary>
        public int Way { get; set; }
        /// <summary>
        /// ä¸»é”®å€¼
        /// </summary>
        public string UniqueTag { get; set; }
        /// <summary>
        /// æ£€éªŒå•号
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// å…¬å¸ä»£å·
        /// </summary>
        public string CompanyId { get; set; } = "HATC";
        /// <summary>
        /// å·¥åŽ‚ä»£å·
        /// </summary>
        public string PlantsId { get; set; } = "HA020";
        /// <summary>
        /// æ”¶è´§å•号
        /// </summary>
        public string ReceiptCode { get; set; }
        /// <summary>
        /// æ”¶è´§å•明细行号
        /// </summary>
        public string SerNo { get; set; }
        /// <summary>
        /// æ”¶è´§å•物料明细代码
        /// </summary>
        public string MaterialsCode { get; set; }
        /// <summary>
        /// æ”¶è´§æ—¥æœŸ
        /// </summary>
        public string ReceiveDate { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string Note { get; set; }
        /// <summary>
        /// åˆæ ¼æ•°é‡
        /// </summary>
        public string QtyQualified { get; set; }
        /// <summary>
        /// ç‰¹é‡‡æ•°é‡
        /// </summary>
        public string QtyDefected { get; set; }
        /// <summary>
        /// é€€è´§æ•°é‡
        /// </summary>
        public string QtyReturn { get; set; }
        /// <summary>
        /// æŠ¥åºŸæ•°é‡
        /// </summary>
        public string QtyScrapped { get; set; }
        /// <summary>
        /// æ£€éªŒæ€»æ•°ï¼ˆæ”¶è´§æ€»æ•°ï¼‰
        /// </summary>
        public string QtyInspected { get; set; }
        /// <summary>
        /// æ£€éªŒåˆ¤æ–­ç»“æžœ
        /// </summary>
        public string Result { get; set; }
        /// <summary>
        /// ç‰¹é‡‡è¯´æ˜Ž
        /// </summary>
        public string DefectedNote { get; set; }
        /// <summary>
        /// åˆ›å»ºäººä»£å·
        /// </summary>
        public string CreatorCode { get; set; }
        /// <summary>
        /// æ£€éªŒæ—¥æœŸ
        /// </summary>
        public string TestDate { get; set; }
        public List<ERPCheckResult> Details { get; set; }
    }
    public class ERPCheckResult
    {
        /// <summary>
        /// ç¼ºé™·ä»£ç 
        /// </summary>
        public string DefectCode { get; set; }
        /// <summary>
        /// ç»“æžœ
        /// </summary>
        public string Result { get; set; }
        /// <summary>
        /// æ•°é‡
        /// </summary>
        public string Quantity { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string Note { set; get; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPInboundModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_External.Model
{
    public class ERPInboundModel
    {
        /// <summary>
        /// æ“ä½œç±»åž‹
        /// </summary>
        public int Way { get; set; }
        /// <summary>
        /// ä¸»é”®å€¼
        /// </summary>
        public string UniqueTag { get; set; }
        /// <summary>
        /// å…¥åº“单号
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// å…¥åº“类型
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// ä¾›åº”商代号
        /// </summary>
        public string SuppliersId { get; set; }
        /// <summary>
        /// å…¬å¸ä»£å·
        /// </summary>
        public string CompanyId { get; set; } = "HATC";
        /// <summary>
        /// å·¥åŽ‚ä»£å·
        /// </summary>
        public string PlantsId { get; set; } = "HA020";
        /// <summary>
        /// å…¥åº“日期
        /// </summary>
        public string StockDate { get; set; }
        /// <summary>
        /// ä»“库代号
        /// </summary>
        public string WarehouseCode { get; set; }
        /// <summary>
        /// åˆ›å»ºäººä»£å·
        /// </summary>
        public string CreatorCode { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¥æœŸ
        /// </summary>
        public string EndDate { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string Note { get; set; }
        public List<ERPInboundDetailModel> Details { get; set; }
    }
    public class ERPInboundDetailModel
    {
        /// <summary>
        /// æŽ¥æ”¶å•号
        /// </summary>
        public string ReceiptCode { get; set; }
        /// <summary>
        /// æŽ¥æ”¶å•明细行号
        /// </summary>
        public string ReceiptSerNo { get; set; }
        /// <summary>
        /// æŽ¥æ”¶å•明细物料代码
        /// </summary>
        public string MaterialsCode { get; set; }
        /// <summary>
        /// å‚¨åŒºä»£å·(仓库代号)
        /// </summary>
        public string LocationCode { get; set; }
        /// <summary>
        /// è´§ä½
        /// </summary>
        public string Rack { get; set; }
        /// <summary>
        /// æ•°é‡
        /// </summary>
        public string Quantity { get; set; }
        /// <summary>
        /// æµ·å…³æŽ¥æ”¶æ•°é‡
        /// </summary>
        public string QtyCustoms { get; set; }
        /// <summary>
        /// åˆ¶é€ æ—¥æœŸ
        /// </summary>
        public string MfgDate { get; set; }
        /// <summary>
        /// è¿‡æœŸæ—¥æœŸ
        /// </summary>
        public string ExpiryDate { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReceiveModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_External.Model
{
    public class ERPReceiveModel
    {
        /// <summary>
        /// æ“ä½œç±»åž‹
        /// </summary>
        public int Way { get; set; }
        /// <summary>
        /// WMS主健值
        /// </summary>
        public string UniqueTag { get; set; }
        /// <summary>
        /// æ”¶è´§å•号
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// å•据类型
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// å…¬å¸ä»£å·
        /// </summary>
        public string CompanyId { get; set; } = "HATC";
        /// <summary>
        /// å·¥åŽ‚ä»£å·
        /// </summary>
        public string PlantsId { get; set; } = "HA020";
        /// <summary>
        /// å®¢æˆ·ä»£å·
        /// </summary>
        public string CustomerId { get; set; } = "";
        /// <summary>
        /// ä¾›åº”商代号
        /// </summary>
        public string SuppliersId { get; set; } = "";
        /// <summary>
        /// æ”¶è´§æ—¥æœŸ
        /// </summary>
        public DateTime ReceiveDate { get; set; }
        /// <summary>
        /// é€è´§å•号
        /// </summary>
        public string DeliveryCode { get; set; } = "/";
        /// <summary>
        /// ä»“库代号
        /// </summary>
        public string WarehouseCode { get; set; } = "";
        /// <summary>
        /// åˆ›å»ºäººä»£å·
        /// </summary>
        public string CreatorId { get; set; } = "";
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        public DateTime EndDate { get; set; }
        public List<RecevieOrderDetailModel> Details { get; set; }
    }
    public class RecevieOrderDetailModel
    {
        /// <summary>
        /// é‡‡è´­å•号
        /// </summary>
        public string PurchaseOrderCode { get; set; }
        /// <summary>
        /// é‡‡è´­æ˜Žç»†è¡Œå·
        /// </summary>
        public int PurchaseOrderSerno { get; set; }
        /// <summary>
        /// æ”¶è´§æ˜Žç»†è¡Œå·
        /// </summary>
        public int Serno { get; set; }
        /// <summary>
        /// ææ–™ç¼–码
        /// </summary>
        public string MaterialsId { get; set; }
        /// <summary>
        /// æ”¶è´§æ•°é‡
        /// </summary>
        public float QtyReceived { get; set; }
        /// <summary>
        /// æ”¶è´§æ‰¹æ¬¡
        /// </summary>
        public string Lotno { get; set; }
        /// <summary>
        /// ä¾›åº”商批次
        /// </summary>
        public string Supplotno { get; set; }
        /// <summary>
        /// æ˜¯å¦è¦æ£€éªŒ
        /// </summary>
        public int IfInspection { get; set; }
        /// <summary>
        /// å«ç¨Žä»·æ ¼
        /// </summary>
        public double PriceInTax { get; set; } = 0;
        /// <summary>
        /// ç¨Žçއ
        /// </summary>
        public string Taxrate { get; set; } = "";
        /// <summary>
        /// å¸åˆ«ç¼–码
        /// </summary>
        public string Currcode { get; set; } = "";
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/WIDESEA_External.csproj
@@ -8,11 +8,6 @@
  <ItemGroup>
    <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
    <ProjectReference Include="..\WIDESEA_InboundService\WIDESEA_InboundService.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Model\" />
  </ItemGroup>
</Project>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IApprovalService/IApprovalTaskService.cs
@@ -14,8 +14,18 @@
    {
        IApprovalTaskRepository Repository { get; }
        /// <summary>
        /// å®¡æ‰¹åŒæ„
        /// </summary>
        /// <param name="sourceKey">源主键</param>
        /// <returns></returns>
        WebResponseContent AuditAgree(int sourceKey);
        /// <summary>
        /// å®¡æ‰¹é©³å›ž
        /// </summary>
        /// <param name="sourceKey">源主键</param>
        /// <returns></returns>
        WebResponseContent AuditReject(int sourceKey);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
@@ -17,20 +17,63 @@
    {
        ILocationInfoRepository Repository { get; }
        /// <summary>
        /// æ‰¹é‡å¯ç”¨è´§ä½
        /// </summary>
        /// <param name="keys">货位主键数组</param>
        /// <returns></returns>
        WebResponseContent LocationEnableStatus(int[] keys);
        /// <summary>
        /// æ‰¹é‡ç¦ç”¨è´§ä½
        /// </summary>
        /// <param name="keys">货位主键数组</param>
        /// <returns></returns>
        WebResponseContent LocationDisableStatus(int[] keys);
        /// <summary>
        /// å•个启用货位
        /// </summary>
        /// <param name="key">货位主键</param>
        /// <returns></returns>
        WebResponseContent LocationEnableStatus(int key);
        /// <summary>
        /// å•个禁用货位
        /// </summary>
        /// <param name="key">货位主键</param>
        /// <returns></returns>
        WebResponseContent LocationDisableStatus(int key);
        /// <summary>
        /// åˆå§‹åŒ–货位
        /// </summary>
        /// <param name="initializationLocationDTO"></param>
        /// <returns></returns>
        WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO);
        /// <summary>
        /// è´§ä½åˆ†é…é€»è¾‘
        /// </summary>
        /// <param name="roadwayNo">巷道号</param>
        /// <param name="palletType">托盘类型</param>
        /// <returns></returns>
        Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum palletType);
        /// <summary>
        /// ä¿®æ”¹è´§ä½çŠ¶æ€åŠç±»åž‹
        /// </summary>
        /// <param name="locationCode">货位编号</param>
        /// <param name="palletType">托盘类型</param>
        /// <param name="locationStatus">货位状态</param>
        void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus);
        /// <summary>
        /// ä¿®æ”¹è´§ä½çŠ¶æ€åŠç±»åž‹
        /// </summary>
        /// <param name="location">货位对象</param>
        /// <param name="palletType">托盘类型</param>
        /// <param name="locationStatus">货位状态</param>
        void UpdateLocationStatus(Dt_LocationInfo location, PalletTypeEnum palletType, LocationStatusEnum locationStatus);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs
@@ -15,14 +15,39 @@
    {
        IMaterielInfoRepository Repository { get; }
        /// <summary>
        /// åˆ¤æ–­ç‰©æ–™æ˜¯å¦å­˜åœ¨
        /// </summary>
        /// <param name="materielCode">物料编号</param>
        /// <returns></returns>
        bool ExsitMateriel(string materielCode);
        /// <summary>
        /// åˆ¤æ–­ç‰©æ–™æ˜¯å¦å­˜åœ¨
        /// </summary>
        /// <param name="materielCodes">物料编号集合</param>
        /// <returns></returns>
        bool ExsitMateriels(List<string> materielCodes);
        /// <summary>
        /// èŽ·å–ç‰©æ–™ä¿¡æ¯
        /// </summary>
        /// <param name="materielCode">物料编号</param>
        /// <returns></returns>
        Dt_MaterielInfo GetMaterielInfo(string materielCode);
        /// <summary>
        /// æŸ¥è¯¢ç‰©æ–™ä¿¡æ¯
        /// </summary>
        /// <param name="materielCodes"></param>
        /// <returns></returns>
        List<Dt_MaterielInfo> GetMaterielInfos(List<string> materielCodes);
        /// <summary>
        /// æŽ¥æ”¶ERP物料信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        WebResponseContent ReceiveMaterial(MaterielInfoDTO model);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs
@@ -14,12 +14,32 @@
    {
        IWarehouseRepository Repository { get; }
        /// <summary>
        /// æ‰¹é‡å¯ç”¨ä»“库
        /// </summary>
        /// <param name="keys">仓库主键数组</param>
        /// <returns></returns>
        WebResponseContent WarehouseEnableStatus(int[] keys);
        /// <summary>
        /// æ‰¹é‡ç¦ç”¨ä»“库
        /// </summary>
        /// <param name="keys">仓库主键数组</param>
        /// <returns></returns>
        WebResponseContent WarehouseDisableStatus(int[] keys);
        /// <summary>
        /// å•个启用仓库
        /// </summary>
        /// <param name="key">仓库主键</param>
        /// <returns></returns>
        WebResponseContent WarehouseEnableStatus(int key);
        /// <summary>
        /// å•个禁用仓库
        /// </summary>
        /// <param name="key">仓库主键</param>
        /// <returns></returns>
        WebResponseContent WarehouseDisableStatus(int key);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs
@@ -11,6 +11,12 @@
{
    public interface ICheckOrderResultService : IService<Dt_CheckOrderResult>
    {
        /// <summary>
        /// æäº¤è´¨æ£€ç»“æžœ
        /// </summary>
        /// <param name="checkOrderId">质检单主键</param>
        /// <param name="checkResult">质检结果对象</param>
        /// <returns></returns>
        WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs
@@ -11,6 +11,18 @@
{
    public interface ICheckOrderService : IService<Dt_CheckOrder>
    {
        /// <summary>
        /// è´¨æ£€å®ŒæˆåŽæäº¤å®¡æ‰¹
        /// </summary>
        /// <param name="checkOrderId"></param>
        /// <returns></returns>
        WebResponseContent CommitAudit(int checkOrderId);
        /// <summary>
        /// è´¨æ£€ç»“果审批完成后回传ERP
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        WebResponseContent FeedbackCheckResult(int id);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs
@@ -20,5 +20,7 @@
        WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, string serNum);
        WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, List<string> serNums);
        WebResponseContent FeedbackInboundOrder(int id);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IReceiveOrderService.cs
@@ -11,7 +11,27 @@
{
    public interface IReceiveOrderService : IService<Dt_ReceiveOrder>
    {
        /// <summary>
        /// æ ¹æ®æ”¶è´§å•创建入库单
        /// </summary>
        /// <param name="receiveOrderId"></param>
        /// <returns></returns>
        WebResponseContent CreateInboundOrder(int receiveOrderId);
        /// <summary>
        /// æ”¶è´§å®Œæˆå›žä¼ ERP
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        WebResponseContent FeedbackReceiveOrder(int orderId);
        WebResponseContent GetReceiveOrders(SaveModel saveModel);
        /// <summary>
        ///
        /// </summary>
        /// <param name="purchaseOrderId"></param>
        /// <param name="lotNo"></param>
        /// <returns></returns>
        WebResponseContent ReceiveAllOrder(int purchaseOrderId, string lotNo);
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -21,6 +21,8 @@
using WIDESEA_DTO;
using WIDESEA_DTO.Basic;
using WIDESEA_DTO.Inbound;
using WIDESEA_External.ERPService;
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
using WIDESEA_IBasicService;
using WIDESEA_IInboundRepository;
@@ -42,10 +44,11 @@
        private readonly IBasicRepository _basicRepository;
        private readonly IStockRepository _stockRepository;
        private readonly IRecordService _recordService;
        private readonly IInvokeERPService _invokeERPService;
        public IInboundOrderRepository Repository => BaseDal;
        public InboundOrderService(IInboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, IStockRepository stockRepository, IRecordService recordService) : base(BaseDal)
        public InboundOrderService(IInboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, IStockRepository stockRepository, IRecordService recordService, IInvokeERPService invokeERPService) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
@@ -53,6 +56,7 @@
            _basicRepository = basicRepository;
            _stockRepository = stockRepository;
            _recordService = recordService;
            _invokeERPService = invokeERPService;
        }
        public WebResponseContent GetInboundOrders(SaveModel saveModel)
        {
@@ -152,7 +156,10 @@
                    SerialNumber = model.SerialNumber,
                    StockQuantity = model.Quantity,
                    OutboundQuantity = 0,
                    Status = StockStatusEmun.组盘暂存.ObjToInt()
                    Status = StockStatusEmun.组盘暂存.ObjToInt(),
                    ProductionDate = model.ProductionDate,
                    EffectiveDate = model.EffectiveDate,
                    InboundOrderRowNo = notGroupDetail.RowNo,
                };
                _stockRepository.StockInfoRepository.Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
@@ -265,7 +272,10 @@
                        SerialNumber = model.SerialNumber,
                        StockQuantity = model.Quantity,
                        OutboundQuantity = 0,
                        Status = StockStatusEmun.组盘暂存.ObjToInt()
                        Status = StockStatusEmun.组盘暂存.ObjToInt(),
                        ProductionDate = model.ProductionDate,
                        EffectiveDate = model.EffectiveDate,
                        InboundOrderRowNo = notGroupDetail.RowNo,
                    };
                    if (stockInfo.Id > 0)
@@ -306,5 +316,88 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent FeedbackInboundOrder(int id)
        {
            try
            {
                Dt_InboundOrder inboundOrder = Db.Queryable<Dt_InboundOrder>().Where(x => x.Id == id).Includes(x => x.Details).First();
                if (inboundOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到入库单信息");
                }
                if (inboundOrder.Details == null || inboundOrder.Details.Count == 0)
                {
                    return WebResponseContent.Instance.Error($"未找到入库单明细信息");
                }
                if (inboundOrder.OrderStatus != InOrderStatusEnum.入库完成.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"入库单据未完成");
                }
                if (inboundOrder.Details.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) != null)
                {
                    return WebResponseContent.Instance.Error($"入库明细未完成");
                }
                List<Dt_StockInfo> stockInfos = Db.Queryable<Dt_StockInfo>().Where(x => x.Details.Any(v => v.OrderNo == inboundOrder.InboundOrderNo)).Includes(x => x.Details).ToList();
                List<Dt_Warehouse> warehouses = Db.Queryable<Dt_Warehouse>().ToList();
                List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>();
                foreach (var item in inboundOrder.Details)
                {
                    Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(v => v.InboundOrderRowNo == item.RowNo && v.MaterielCode == item.MaterielCode));
                    if (stockInfo == null)
                    {
                        return WebResponseContent.Instance.Error($"未找到库存信息");
                    }
                    Dt_Warehouse? warehouse = warehouses.FirstOrDefault(x => x.WarehouseId == stockInfo.WarehouseId);
                    if (warehouse == null)
                    {
                        return WebResponseContent.Instance.Error($"未找到仓库信息");
                    }
                    ERPInboundDetailModel detailModel = new ERPInboundDetailModel()
                    {
                        ExpiryDate = stockInfo.Details.FirstOrDefault()?.EffectiveDate ?? "",
                        LocationCode = warehouse.WarehouseCode,
                        MaterialsCode = item.MaterielCode,
                        MfgDate = stockInfo.Details.FirstOrDefault()?.ProductionDate ?? "",
                        QtyCustoms = "0",
                        Quantity = stockInfo.Details.Sum(x => x.StockQuantity).ToString(),
                        Rack = stockInfo.LocationCode,
                        ReceiptCode = inboundOrder.UpperOrderNo,
                        ReceiptSerNo = item.RowNo.ToString()
                    };
                    detailModels.Add(detailModel);
                }
                Dt_Warehouse? warehouse2 = warehouses.FirstOrDefault(x => x.WarehouseId == inboundOrder.WarehouseId);
                if (warehouse2 == null)
                {
                    return WebResponseContent.Instance.Error($"未找到仓库信息");
                }
                ERPInboundModel model = new ERPInboundModel()
                {
                    Code = inboundOrder.InboundOrderNo,
                    CreatorCode = inboundOrder.Creater,
                    EndDate = inboundOrder.CreateDate.ToString(),
                    StockDate = inboundOrder.CreateDate.ToString(),
                    SuppliersId = inboundOrder.SupplierId,
                    Type = "S",
                    UniqueTag = inboundOrder.Id.ToString(),
                    WarehouseCode = warehouse2.WarehouseCode,
                    Way = 1,
                    Details = detailModels
                };
                string response = _invokeERPService.InvokeInboundOrderApi(model);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs
@@ -5,6 +5,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
@@ -134,7 +135,7 @@
                    _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder);
                    _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
                    if (materielInfo.IsCheck == WIDESEA_Common.CommonEnum.WhetherEnum.True)
                    if (materielInfo.IsCheck == WhetherEnum.True)
                    {
                        Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
                        checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs
@@ -1,4 +1,5 @@
using MailKit.Search;
using AutoMapper;
using MailKit.Search;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -7,8 +8,13 @@
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.Basic;
using WIDESEA_External.ERPService;
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
using WIDESEA_ICheckRepository;
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
@@ -18,13 +24,21 @@
{
    public class ReceiveOrderService : ServiceBase<Dt_ReceiveOrder, IReceiveOrderRepository>, IReceiveOrderService
    {
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IMapper _mapper;
        private readonly ICheckOrderRepository _checkOrderRepository;
        private readonly IInboundRepository _inboundRepository;
        private readonly IBasicRepository _basicRepository;
        private readonly IInvokeERPService _invokeERPService;
        public ReceiveOrderService(IReceiveOrderRepository BaseDal, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository) : base(BaseDal)
        public ReceiveOrderService(IReceiveOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService) : base(BaseDal)
        {
            _mapper = mapper;
            _unitOfWorkManage = unitOfWorkManage;
            _checkOrderRepository = checkOrderRepository;
            _inboundRepository = inboundRepository;
            _basicRepository = basicRepository;
            _invokeERPService = invokeERPService;
        }
        public override WebResponseContent AddData(SaveModel saveModel)
@@ -64,6 +78,74 @@
            }
            return base.AddData(saveModel);
        }
        public WebResponseContent FeedbackReceiveOrder(int orderId)
        {
            try
            {
                Dt_ReceiveOrder receiveOrder = BaseDal.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderId == orderId).Includes(x => x.Details).First();
                if (receiveOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到收货单");
                }
                if (receiveOrder.Details == null || receiveOrder.Details.Count == 0)
                {
                    return WebResponseContent.Instance.Error($"未找到收货单明细");
                }
                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == receiveOrder.WarehouseId);
                if (warehouse == null)
                {
                    return WebResponseContent.Instance.Error($"未找到仓库信息");
                }
                List<RecevieOrderDetailModel> recevieOrderDetails = new List<RecevieOrderDetailModel>();
                foreach (var item in receiveOrder.Details)
                {
                    RecevieOrderDetailModel recevieOrderDetail = new RecevieOrderDetailModel()
                    {
                        Currcode = "",
                        IfInspection = item.IfInspection,
                        Lotno = item.LotNo,
                        MaterialsId = item.MaterielCode,
                        PriceInTax = 0,
                        PurchaseOrderCode = item.PurchaseOrderNo,
                        PurchaseOrderSerno = item.PurchaseOrderDetailRowNo,
                        QtyReceived = item.ReceivedQuantity,
                        Serno = item.RowNo,
                        Supplotno = "",
                        Taxrate = ""
                    };
                    recevieOrderDetails.Add(recevieOrderDetail);
                }
                ERPReceiveModel receiveModel = new ERPReceiveModel()
                {
                    Code = receiveOrder.ReceiveOrderNo,
                    CompanyId = "",
                    DeliveryCode = receiveOrder.DeliveryCode,
                    CustomerId = receiveOrder.CustomerId,
                    CreatorId = receiveOrder.Creater,
                    EndDate = receiveOrder.CreateDate,
                    ReceiveDate = receiveOrder.CreateDate,
                    PlantsId = "",
                    SuppliersId = receiveOrder.SuppliersId,
                    Type = "PO",
                    UniqueTag = receiveOrder.ReceiveOrderId.ToString(),
                    WarehouseCode = warehouse.WarehouseCode,
                    Way = 1,
                    Details = recevieOrderDetails
                };
                string response = _invokeERPService.InvokeMatReceiveApi(receiveModel);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent GetReceiveOrders(SaveModel saveModel)
@@ -168,5 +250,163 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent ReceiveAllOrder(int purchaseOrderId, string lotNo)
        {
            try
            {
                Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().Where(x => x.Id == purchaseOrderId).Includes(x => x.Details).First();
                if (purchaseOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到该采购单");
                }
                if (purchaseOrder.Details == null || purchaseOrder.Details.Count == 0)
                {
                    return WebResponseContent.Instance.Error($"未找到采购单明细信息");
                }
                if (purchaseOrder.PurchaseOrderStatus == PurchaseOrderStatusEnum.Received.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"已收货完成");
                }
                if (purchaseOrder.Details.FirstOrDefault(x => x.PurchaseDetailStatus == PurchaseOrderStatusEnum.NotReceived.ObjToInt()) == null)
                {
                    return WebResponseContent.Instance.Error($"已收货完成");
                }
                List<Dt_CheckOrder> checkOrders = new List<Dt_CheckOrder>();
                List<Dt_MaterielInfo> materielInfos = new List<Dt_MaterielInfo>();
                List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>();
                Dt_ReceiveOrder receiveOrder = BaseDal.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.SuppliersId == purchaseOrder.SupplierCode && x.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt()).Includes(x => x.Details).First();
                if (receiveOrder == null)
                {
                    int rowNo = 0;
                    foreach (var item in purchaseOrder.Details)
                    {
                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode);
                        if (materielInfo == null)
                        {
                            materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterielCode);
                            if (materielInfo == null)
                            {
                                return WebResponseContent.Instance.Error($"未找到该物料的信息");
                            }
                            materielInfos.Add(materielInfo);
                        }
                        Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail()
                        {
                            PurchaseOrderNo = purchaseOrder.PurchaseOrderNo,
                            ReceivedQuantity = item.PurchaseDetailQuantity,
                            MaterielCode = item.MaterielCode,
                            LotNo = lotNo,
                            PurchaseOrderDetailRowNo = item.RowNo,
                            IfInspection = materielInfo.IsCheck.ObjToInt(),
                            CurrCode = "",
                            PriceInTax = 0,
                            TaxRate = "",
                            RowNo = rowNo + 1,
                            Unit = item.Unit
                        };
                        rowNo += 1;
                        receiveOrderDetails.Add(receiveOrderDetail);
                        if (materielInfo.IsCheck == WhetherEnum.True)
                        {
                            Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
                            checkOrder.ReceiveOrderNo = "";
                            checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity;
                            checkOrder.ScrappedQuantity = 0;
                            checkOrder.ReturnQuantity = 0;
                            checkOrder.DefectedQuantity = 0;
                            checkOrder.ReceiveDetailRowNo = rowNo;
                            checkOrders.Add(checkOrder);
                        }
                    }
                    receiveOrder = new Dt_ReceiveOrder()
                    {
                        ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(),
                        CustomerId = "",
                        DeliveryCode = "",
                        ReceiveDate = DateTime.Now,
                        ReceiveOrderType = ReceiveOrderTypeEnum.PO.ObjToInt(),
                        SuppliersId = purchaseOrder.SupplierCode,
                        WarehouseId = purchaseOrder.Details.FirstOrDefault()?.WarehouseId ?? 0,
                        UploadStatus = WhetherEnum.False.ObjToInt(),
                        Details = receiveOrderDetails
                    };
                }
                else
                {
                    int rowNo = receiveOrder.Details.Count > 0 ? receiveOrder.Details.Max(x => x.RowNo) : 0;
                    foreach (var item in purchaseOrder.Details)
                    {
                        Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode);
                        if (materielInfo == null)
                        {
                            materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterielCode);
                            if (materielInfo == null)
                            {
                                return WebResponseContent.Instance.Error($"未找到该物料的信息");
                            }
                            materielInfos.Add(materielInfo);
                        }
                        Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail()
                        {
                            PurchaseOrderNo = purchaseOrder.PurchaseOrderNo,
                            ReceivedQuantity = item.PurchaseDetailQuantity,
                            MaterielCode = item.MaterielCode,
                            LotNo = lotNo,
                            ReceiveOrderId = receiveOrder.ReceiveOrderId,
                            PurchaseOrderDetailRowNo = item.RowNo,
                            IfInspection = materielInfo.IsCheck.ObjToInt(),
                            CurrCode = "",
                            PriceInTax = 0,
                            TaxRate = "",
                            RowNo = rowNo + 1,
                            Unit = item.Unit,
                        };
                        rowNo += 1;
                        receiveOrderDetails.Add(receiveOrderDetail);
                        if (materielInfo.IsCheck == WhetherEnum.True)
                        {
                            Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
                            checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity;
                            checkOrder.ScrappedQuantity = 0;
                            checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo;
                            checkOrder.ReturnQuantity = 0;
                            checkOrder.DefectedQuantity = 0;
                            checkOrder.ReceiveDetailRowNo = rowNo;
                            checkOrders.Add(checkOrder);
                        }
                    }
                }
                purchaseOrder.Details.ForEach(x => x.PurchaseDetailStatus = PurchaseOrderStatusEnum.Received.ObjToInt());
                purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt();
                _unitOfWorkManage.BeginTran();
                if (receiveOrder.ReceiveOrderId > 0)
                {
                    Db.Insertable(receiveOrderDetails).ExecuteCommand();
                }
                else
                {
                    Db.InsertNav(receiveOrder).Include(x => x.Details).ExecuteCommand();
                    checkOrders.ForEach(x => x.ReceiveOrderNo = receiveOrder.ReceiveOrderNo);
                }
                _checkOrderRepository.AddData(checkOrders);
                _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder);
                _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrder.Details);
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/WIDESEA_InboundService.csproj
@@ -7,6 +7,7 @@
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\WIDESEA_External\WIDESEA_External.csproj" />
    <ProjectReference Include="..\WIDESEA_IBasicService\WIDESEA_IBasicService.csproj" />
    <ProjectReference Include="..\WIDESEA_ICheckRepository\WIDESEA_ICheckRepository.csproj" />
    <ProjectReference Include="..\WIDESEA_IInboundService\WIDESEA_IInboundService.csproj" />
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrderDetail.cs
@@ -38,6 +38,9 @@
        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "单位")]
        public string Unit { get; set; }
        /// <summary>
        /// æ”¶è´§å•明细行号
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDescription = "行号")]
        public int RowNo { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetail.cs
@@ -29,6 +29,12 @@
        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "批次号")]
        public string BatchNo { get; set; }
        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "生产日期")]
        public string ProductionDate { get; set; }
        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "有效期")]
        public string EffectiveDate { get; set; }
        [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "序列号")]
        public string SerialNumber { get; set; }
@@ -41,6 +47,9 @@
        [SugarColumn(IsNullable = false, ColumnDescription = "库存明细状态")]
        public int Status { get; set; }
        [SugarColumn(IsNullable = false, ColumnDescription = "入库单明细行号")]
        public int InboundOrderRowNo { get; set; }
        [SugarColumn(IsNullable = true, ColumnDescription = "备注")]
        public string Remark { get; set; }
    }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/CheckOrderController.cs
@@ -25,5 +25,16 @@
        {
            return Service.CommitAudit(checkOrderId);
        }
        /// <summary>
        /// è´¨æ£€ç»“果审批完成后回传ERP
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet, HttpPost, Route("FeedbackCheckResult")]
        public WebResponseContent FeedbackCheckResult(int id)
        {
            return Service.FeedbackCheckResult(id);
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundOrderController.cs
@@ -51,5 +51,16 @@
        {
            return Service.MaterielGroup(inboundOrderId, palletCode, serNums);
        }
        /// <summary>
        /// å…¥åº“完成后回传ERP
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("FeedbackInboundOrder")]
        public WebResponseContent FeedbackInboundOrder(int id)
        {
            return Service.FeedbackInboundOrder(id);
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/ReceiveOrderController.cs
@@ -27,6 +27,16 @@
        }
        /// <summary>
        /// æ”¶è´§å®Œæˆå›žä¼ ERP
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("FeedbackReceiveOrder")]
        public WebResponseContent FeedbackReceiveOrder(int orderId)
        {
            return Service.FeedbackReceiveOrder(orderId);
        }
        /// æŸ¥è¯¢æ”¶è´§å•信息
        /// </summary>
        /// <returns></returns>
@@ -35,5 +45,17 @@
        {
            return Service.GetReceiveOrders(saveModel);
        }
        /// <summary>
        /// æ”¶è´§
        /// </summary>
        /// <param name="purchaseOrderId"></param>
        /// <param name="lotNo"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("ReceiveAllOrder")]
        public WebResponseContent ReceiveAllOrder(int purchaseOrderId, string lotNo)
        {
            return Service.ReceiveAllOrder(purchaseOrderId, lotNo);
        }
    }
}