Prechádzať zdrojové kódy

添加项目文件。

林豪 左 11 mesiacov pred
rodič
commit
c6deb65352
100 zmenil súbory, kde vykonal 6491 pridanie a 0 odobranie
  1. 61 0
      wms.api.sln
  2. 5 0
      wms.api/.config/dotnet-tools.json
  3. 192 0
      wms.api/Controllers/BaseController.cs
  4. 30 0
      wms.api/Controllers/DBInitController.cs
  5. 1432 0
      wms.api/Controllers/SxController.cs
  6. 70 0
      wms.api/Controllers/WmsController.cs
  7. 75 0
      wms.api/Filter/LogFilter.cs
  8. 104 0
      wms.api/Job/JobScheduler.cs
  9. 30 0
      wms.api/Job/PostJob.cs
  10. 76 0
      wms.api/Program.cs
  11. 31 0
      wms.api/Properties/launchSettings.json
  12. 8 0
      wms.api/appsettings.Development.json
  13. 75 0
      wms.api/appsettings.json
  14. 38 0
      wms.api/autofac/AutofacModuleRegister.cs
  15. 25 0
      wms.api/wms.api.csproj
  16. 11 0
      wms.dataservice/DataService/CPDataService.cs
  17. 12 0
      wms.dataservice/DataService/FJDataService.cs
  18. 119 0
      wms.dataservice/DataService/HJDataService.cs
  19. 99 0
      wms.dataservice/DataService/PTDataService.cs
  20. 11 0
      wms.dataservice/DataService/SXDataService.cs
  21. 10 0
      wms.dataservice/IDataSetvice/ICPDataService.cs
  22. 11 0
      wms.dataservice/IDataSetvice/IFJDataService.cs
  23. 22 0
      wms.dataservice/IDataSetvice/IHJDataService.cs
  24. 15 0
      wms.dataservice/IDataSetvice/IPTDataService.cs
  25. 10 0
      wms.dataservice/IDataSetvice/ISXDataService.cs
  26. 14 0
      wms.dataservice/wms.dataservice.csproj
  27. 11 0
      wms.dto/attribute/SwaggerIgnoreAttribute.cs
  28. 64 0
      wms.dto/const/Const.cs
  29. 1162 0
      wms.dto/const/EnumClass.cs
  30. 14 0
      wms.dto/request/cp/BoxBuildStockTransRequest.cs
  31. 26 0
      wms.dto/request/cp/ComPushApiResInfoRequest.cs
  32. 57 0
      wms.dto/request/cp/CpStockChangeRequest.cs
  33. 18 0
      wms.dto/request/cp/ErrorMaterialStockOutFeedBackRequest.cs
  34. 22 0
      wms.dto/request/cp/ErrorMaterialStockOutRequest.cs
  35. 26 0
      wms.dto/request/cp/MoveStockLocationFeedBackRequest.cs
  36. 18 0
      wms.dto/request/cp/SalesDocTransFeedBackRequest.cs
  37. 42 0
      wms.dto/request/cp/SalesDocTransRequest.cs
  38. 34 0
      wms.dto/request/cp/SalesLeftDocTransFeedBackRequest.cs
  39. 10 0
      wms.dto/request/cp/SpoolMaterialInfoTransRequest.cs
  40. 44 0
      wms.dto/request/cp/StockChangeFeedBackRequest.cs
  41. 34 0
      wms.dto/request/cp/StockOutRequest.cs
  42. 42 0
      wms.dto/request/cp/StockStateChangeRequest.cs
  43. 11 0
      wms.dto/request/cp/WcsMoveTaskRequest.cs
  44. 58 0
      wms.dto/request/cp/dto/WcsRequest.cs
  45. 26 0
      wms.dto/request/cp/dto/WebPdaRequest.cs
  46. 18 0
      wms.dto/request/fj/AllocationConveyorSortRequest.cs
  47. 11 0
      wms.dto/request/fj/AllocationWarehouseSortRequest.cs
  48. 28 0
      wms.dto/request/fj/BGradeMaterialStockOutFeedBackRequest.cs
  49. 31 0
      wms.dto/request/fj/BGradeMaterialStockOutRequest.cs
  50. 37 0
      wms.dto/request/fj/BomInfoTransRequest.cs
  51. 14 0
      wms.dto/request/fj/CurtainOrderStartCheckRequest.cs
  52. 115 0
      wms.dto/request/fj/CurtainProductionOrderRequest.cs
  53. 42 0
      wms.dto/request/fj/CurtainProductionStockOutFeedBackRequest.cs
  54. 34 0
      wms.dto/request/fj/CurtainProductionStockOutRequest.cs
  55. 39 0
      wms.dto/request/fj/ErrorMaterialStockOutFeedBackRequest.cs
  56. 37 0
      wms.dto/request/fj/FjErrorMaterialStockOutRequest.cs
  57. 81 0
      wms.dto/request/fj/FjProductionBackRequest.cs
  58. 54 0
      wms.dto/request/fj/FjStockChangeRequest.cs
  59. 35 0
      wms.dto/request/fj/GetFJCurStockListRequest.cs
  60. 75 0
      wms.dto/request/fj/ManualBuildStockTransRequest.cs
  61. 49 0
      wms.dto/request/fj/ProductionLeftFeedBackRequest.cs
  62. 74 0
      wms.dto/request/fj/SpoolMaterialInfoTransRequest.cs
  63. 40 0
      wms.dto/request/fj/StockChangeFeedBackRequest.cs
  64. 42 0
      wms.dto/request/fj/StockChangeStockInFeedBackRequest.cs
  65. 34 0
      wms.dto/request/fj/SyncMachineInfoRequest.cs
  66. 31 0
      wms.dto/request/fj/WetFormulaInfoRequest.cs
  67. 38 0
      wms.dto/request/fj/WetProductStockInFeedBackRequest.cs
  68. 46 0
      wms.dto/request/hj/AddJobRequest.cs
  69. 12 0
      wms.dto/request/hj/AddWcsMoveTaskRequest.cs
  70. 22 0
      wms.dto/request/hj/ApplyEmptySpoolRequest.cs
  71. 25 0
      wms.dto/request/hj/ApplyStockInLocRequest.cs
  72. 46 0
      wms.dto/request/hj/ApplyStockInRequest.cs
  73. 17 0
      wms.dto/request/hj/ApplyStockOutRequest.cs
  74. 40 0
      wms.dto/request/hj/ApplyStockOutTaskRequest.cs
  75. 62 0
      wms.dto/request/hj/CopperLineAgvTaskStockInToIWmsRequest.cs
  76. 82 0
      wms.dto/request/hj/CopperLineAgvTaskStockOutToIWmsRequest.cs
  77. 22 0
      wms.dto/request/hj/CopperLineAgvTaskToRcsRequest.cs
  78. 87 0
      wms.dto/request/hj/CopperLineRequest.cs
  79. 53 0
      wms.dto/request/hj/CopperLineStockInFeedBackRequest.cs
  80. 28 0
      wms.dto/request/hj/CreateMoveWcsTaskRequest.cs
  81. 40 0
      wms.dto/request/hj/CreateStockInWcsTaskRequest.cs
  82. 69 0
      wms.dto/request/hj/CreateStockOutWcsTaskRequest.cs
  83. 39 0
      wms.dto/request/hj/DetailCodeRequest.cs
  84. 11 0
      wms.dto/request/hj/DetailRequest2Str.cs
  85. 14 0
      wms.dto/request/hj/GetBarCodeInfoRequest.cs
  86. 35 0
      wms.dto/request/hj/GetCurStockListRequest.cs
  87. 16 0
      wms.dto/request/hj/GetSysJobListRequest.cs
  88. 10 0
      wms.dto/request/hj/GetTunnelEmptyConCountRequest.cs
  89. 24 0
      wms.dto/request/hj/GetTunnelListRequest.cs
  90. 104 0
      wms.dto/request/hj/HjMaterialStockInRequest.cs
  91. 40 0
      wms.dto/request/hj/MoveStockFeedBackRequest.cs
  92. 44 0
      wms.dto/request/hj/RfidCheckDiffRequest.cs
  93. 39 0
      wms.dto/request/hj/SpecialPickMaterApplyRequest.cs
  94. 29 0
      wms.dto/request/hj/SpecialPickMaterFeedBackRequest.cs
  95. 16 0
      wms.dto/request/hj/SrmPickOutCompletedRequest.cs
  96. 50 0
      wms.dto/request/hj/StockChangeFeedBackRequest.cs
  97. 63 0
      wms.dto/request/hj/StockChangeRequest.cs
  98. 11 0
      wms.dto/request/hj/SyncMaterRequest.cs
  99. 14 0
      wms.dto/request/hj/SysJobDto.cs
  100. 17 0
      wms.dto/request/hj/TunnelRequest.cs

+ 61 - 0
wms.api.sln

@@ -0,0 +1,61 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32317.152
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "wms.api", "wms.api\wms.api.csproj", "{1E7DF4AC-CBDC-403D-AAB4-9052B2E4F5A0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "wms.dto", "wms.dto\wms.dto.csproj", "{D5759FC4-E48E-44F7-8438-E310F8D85CB3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "wms.service", "wms.service\wms.service.csproj", "{992E7508-C77A-40D7-A2DE-73C3CB3BCA61}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "wms.sqlsugar", "wms.sqlsugar\wms.sqlsugar.csproj", "{55B67A19-AA9F-4C8E-9F5C-D66E4004A027}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "wms.util", "wms.util\wms.util.csproj", "{A9E41092-7425-4315-8744-84C655A0D45F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "wms.package", "wms.package\wms.package.csproj", "{9E536B81-F8CA-4E7E-AB6E-E0937F5A43F9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wms.dataservice", "wms.dataservice\wms.dataservice.csproj", "{74BDF377-75EA-4496-A848-5C5F0CAF0388}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1E7DF4AC-CBDC-403D-AAB4-9052B2E4F5A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E7DF4AC-CBDC-403D-AAB4-9052B2E4F5A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1E7DF4AC-CBDC-403D-AAB4-9052B2E4F5A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1E7DF4AC-CBDC-403D-AAB4-9052B2E4F5A0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D5759FC4-E48E-44F7-8438-E310F8D85CB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D5759FC4-E48E-44F7-8438-E310F8D85CB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D5759FC4-E48E-44F7-8438-E310F8D85CB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D5759FC4-E48E-44F7-8438-E310F8D85CB3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{992E7508-C77A-40D7-A2DE-73C3CB3BCA61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{992E7508-C77A-40D7-A2DE-73C3CB3BCA61}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{992E7508-C77A-40D7-A2DE-73C3CB3BCA61}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{992E7508-C77A-40D7-A2DE-73C3CB3BCA61}.Release|Any CPU.Build.0 = Release|Any CPU
+		{55B67A19-AA9F-4C8E-9F5C-D66E4004A027}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{55B67A19-AA9F-4C8E-9F5C-D66E4004A027}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{55B67A19-AA9F-4C8E-9F5C-D66E4004A027}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{55B67A19-AA9F-4C8E-9F5C-D66E4004A027}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A9E41092-7425-4315-8744-84C655A0D45F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A9E41092-7425-4315-8744-84C655A0D45F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A9E41092-7425-4315-8744-84C655A0D45F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A9E41092-7425-4315-8744-84C655A0D45F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9E536B81-F8CA-4E7E-AB6E-E0937F5A43F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9E536B81-F8CA-4E7E-AB6E-E0937F5A43F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9E536B81-F8CA-4E7E-AB6E-E0937F5A43F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9E536B81-F8CA-4E7E-AB6E-E0937F5A43F9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{74BDF377-75EA-4496-A848-5C5F0CAF0388}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{74BDF377-75EA-4496-A848-5C5F0CAF0388}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{74BDF377-75EA-4496-A848-5C5F0CAF0388}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{74BDF377-75EA-4496-A848-5C5F0CAF0388}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {5AD891A7-A985-4CBD-9C50-36F2E79D8E82}
+	EndGlobalSection
+EndGlobal

+ 5 - 0
wms.api/.config/dotnet-tools.json

@@ -0,0 +1,5 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {}
+}

+ 192 - 0
wms.api/Controllers/BaseController.cs

@@ -0,0 +1,192 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System.Diagnostics;
+using wms.dto.request;
+using wms.dto.response;
+using wms.service;
+using wms.service.IService;
+using wms.util.Check;
+using wms.util.Ext;
+using wms.util.Http;
+
+namespace wms.api.Controllers
+{
+    [Route("api/[controller]/[action]")]
+    [ApiController]
+    public class BaseController : ControllerBase
+    {
+        private readonly ISXService _sxService;
+        private readonly ILogger<BaseController> _logger;
+        public BaseController(ISXService sxService, ILogger<BaseController> logger)
+        {
+            _sxService = sxService;
+            _logger = logger;
+        }
+        public BaseController(ISXService sxService)
+        {
+            _sxService = sxService;
+        }
+
+        /// <summary>
+        /// 发送ESB请求统一出口 (同步)
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        internal string WmsServiceExportApi(object strReqBody)
+        {
+            var res = new SRes();
+            //var aa = (new StackTrace()).GetFrame(0).GetMethod().Name;//当前方法名
+            var methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;//调用的方法名称                                                 
+            string methodcode = "";
+            if (_sxService != null)
+            {
+                methodcode = _sxService.GetSysConfigContentByCode(methodName);
+            }
+
+            if (string.IsNullOrEmpty(methodcode))
+            {
+                return new SRes() { ResCode = 0, ResMsg = "数据表没有配置" }.ToCamelCaseString();
+            }
+            methodcode = RedisHelper.Get("sys_config" + methodName);
+            var reqid = Guid.NewGuid().ToString();
+            var req = new EsbReq() { headers = new HeadersReq() { serviceCode = methodcode.Split("|")[0],requestId = reqid,TrackId = reqid } };
+            //req.Body = strReqBody;
+            //string sysname = methodcode.Split("|")[1];
+            var apiurl = wms.util.AppSettings.GetConfig("EsbMesPushUrl");
+
+            var strEsbRes = HttpUtil.PostRequest(apiurl, JsonConvert.SerializeObject(strReqBody), 30000, "UTF-8", "application/json", reqid, req.headers.sourceCode, req.headers.serviceCode);
+            if (!string.IsNullOrEmpty(strEsbRes))
+            {
+                //res = JsonConvert.DeserializeObject<SRes>(strEsbRes);
+                return strEsbRes;
+            }
+            else
+            {
+                res = new SRes() { ResMsg = "MES没有返回任务数据",ResCode = 500,Memo1 = apiurl,Memo2 = req.ToJsonString(),Memo3 = strEsbRes };
+            }
+            return res.ToCamelCaseString();
+        }
+        /// <summary>
+        /// 并发管控
+        /// </summary>
+        /// <typeparam name="T">方法请求参数类型</typeparam>
+        /// <typeparam name="U">方法响应参数类型</typeparam>
+        /// <param name="lockobj">方法锁</param>
+        /// <param name="key">并发管控关键key</param>
+        /// <param name="equNo">管控设备号</param>
+        /// <param name="reqparam">请求参数</param>
+        /// <param name="fun">管控方法</param>
+        /// <returns></returns>
+        public U ConcurrencyReqControl<T, U>(object lockobj, string key, string equNo, BaseRequest reqparam, Func<T, U> fun) where T : BaseRequest where U : SRes, new()
+        {
+            var res = new U();
+            try
+            {
+                lock (lockobj)
+                {
+                    //并发管控
+                    var sign = RedisHelper.Get(key);
+                    if (!string.IsNullOrEmpty(sign) && sign == "1")
+                    {
+                        //不可通行
+                        res.ResCode = 0;
+                        res.ResMsg = equNo + "并发重复请求";
+                        return res;
+                    }
+                    //加状态
+                    RedisHelper.Set(key, "1",180);
+                }
+                var resulttemp = fun((T)reqparam);
+                RedisHelper.Set(key, "0", 180);
+                return resulttemp;
+            }
+            catch (Exception ex)
+            {
+                RedisHelper.Set(key, "0", 180);
+                res.ResCode = 500;
+                res.ResMsg = ex.Message;
+                return res;
+            }
+        }
+
+        /// <summary>
+        /// 发送ESB请求统一出口 (异步)
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        internal string WmsServiceExportApiMq(object strReqBody)
+        {
+            var res = new SRes();
+            //var aa = (new StackTrace()).GetFrame(0).GetMethod().Name;//当前方法名
+            var methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;//调用的方法名称                                                 
+            string methodcode = "";
+            if (_sxService != null)
+            {
+                methodcode = _sxService.GetSysConfigContentByCode(methodName);
+            }
+
+            if (string.IsNullOrEmpty(methodcode))
+            {
+                return new SRes() { ResCode = 0, ResMsg = "数据表没有配置" }.ToCamelCaseString();
+            }
+            methodcode = RedisHelper.Get("sys_config" + methodName);
+            var reqid = Guid.NewGuid().ToString();
+            var req = new EsbReq() { headers = new HeadersReq() { serviceCode = methodcode.Split("|")[0], requestId = reqid, TrackId = reqid } };
+            //req.Body = strReqBody;
+            //string sysname = methodcode.Split("|")[1];
+            var apiurl = wms.util.AppSettings.GetConfig("EsbMesPushUrlMq");
+
+            var strEsbRes = HttpUtil.PostRequest(apiurl, JsonConvert.SerializeObject(strReqBody), 30000, "UTF-8", "application/json", reqid, req.headers.sourceCode, req.headers.serviceCode);
+            if (!string.IsNullOrEmpty(strEsbRes))
+            {
+                //res = JsonConvert.DeserializeObject<SRes>(strEsbRes);
+                return strEsbRes;
+            }
+            else
+            {
+                res = new SRes() { ResMsg = "MES没有返回任务数据", ResCode = 500, Memo1 = apiurl, Memo2 = req.ToJsonString(), Memo3 = strEsbRes };
+            }
+            return res.ToCamelCaseString();
+        }
+        /// <summary>
+        /// 发送ESB请求统一出口 (分发)
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        internal string WmsServiceExportApiPubMq(object strReqBody)
+        {
+            var res = new SRes();
+            //var aa = (new StackTrace()).GetFrame(0).GetMethod().Name;//当前方法名
+            var methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;//调用的方法名称                                                 
+            string methodcode = "";
+            if (_sxService != null)
+            {
+                methodcode = _sxService.GetSysConfigContentByCode(methodName);
+            }
+
+            if (string.IsNullOrEmpty(methodcode))
+            {
+                return new SRes() { ResCode = 0, ResMsg = "数据表没有配置" }.ToCamelCaseString();
+            }
+            methodcode = RedisHelper.Get("sys_config" + methodName);
+            var reqid = Guid.NewGuid().ToString();
+            var req = new EsbReq() { headers = new HeadersReq() { serviceCode = methodcode.Split("|")[0], requestId = reqid, TrackId = reqid } };
+            //req.Body = strReqBody;
+            //string sysname = methodcode.Split("|")[1];
+            var apiurl = wms.util.AppSettings.GetConfig("EsbMesPushUrlPubMq");
+
+            var strEsbRes = HttpUtil.PostRequest(apiurl, JsonConvert.SerializeObject(strReqBody), 30000, "UTF-8", "application/json", reqid, req.headers.sourceCode, req.headers.serviceCode);
+            if (!string.IsNullOrEmpty(strEsbRes))
+            {
+                //res = JsonConvert.DeserializeObject<SRes>(strEsbRes);
+                return strEsbRes;
+            }
+            else
+            {
+                res = new SRes() { ResMsg = "MES没有返回任务数据", ResCode = 500, Memo1 = apiurl, Memo2 = req.ToJsonString(), Memo3 = strEsbRes };
+            }
+            return res.ToCamelCaseString();
+        }
+    }
+}

+ 30 - 0
wms.api/Controllers/DBInitController.cs

@@ -0,0 +1,30 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using wms.service;
+using wms.service.IService;
+
+namespace wms.api.Controllers
+{
+    [Route("api/[controller]/[action]")]
+    [ApiController]
+    public class DBInitController : ControllerBase
+    {
+        private readonly IDBService _dBService;
+        public DBInitController(IDBService dBService)
+        {
+            _dBService = dBService;
+        }
+       
+        /// <summary>
+        /// 初始化时效库
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet(Name = "InitSxDB")]
+        public string InitSxDB()
+        {
+             _dBService.InitSxDB();
+            return "";
+        }
+     
+    }
+}

+ 1432 - 0
wms.api/Controllers/SxController.cs

@@ -0,0 +1,1432 @@
+using AutoMapper;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Ocsp;
+using wms.api.Job;
+using wms.dto;
+using wms.dto.request;
+using wms.dto.request.fj;
+using wms.dto.request.cp;
+using wms.dto.request.hj;
+using wms.dto.request.hj.dto;
+using wms.dto.request.share;
+using wms.dto.request.sx;
+using wms.dto.response;
+using wms.dto.response.cp;
+using wms.service.IService;
+using wms.sqlsugar.model.sx;
+using wms.util.Ext;
+using wms.util.Http;
+using wms.dto.response.sx;
+using wms.service.Service;
+using Castle.Core.Internal;
+using wms.util.Check;
+using Autofac.Core;
+
+namespace wms.api.Controllers
+{
+    [Route("api/[controller]/[action]")]
+    [ApiController]
+    public class SxController : BaseController
+    {
+        private readonly ISXService _sxService;
+        private readonly ILogger<SxController> _logger;
+        private readonly IMapper _mapper;
+        static object lockerCurtainProductionOrder = new object();
+        static object lockerSpoolMaterialInfoTrans = new object();
+        static object lockerlockerStockChange = new object();
+        static object lockerManualBuildStockTrans = new object();
+        static object lockerBomInfoTrans = new object();
+        static object lockerCompleteTask = new object();
+        static object lockerApplyStockInLoc = new object();
+        static object lockerSKUInfoTrans = new object();
+        static object lockerPackInfoTrans = new object();
+        
+        static object lockerTorsChkComplete = new object();
+        static object lockerGetTunnelPriorityList = new object();
+        static object lockerApplyFloor = new object();
+        static object lockerTorsChkStockOut = new object();
+        static object lockerCancelOrComplet = new object();
+        static object lockerCarryTask = new object();
+        static object lockerPalletizingLayerPackStockOut = new object();
+        static object lockerTorsChkValue = new object();
+        static object lockerSrmPickOutCompleted = new object();
+        static object lockerTorsChkFloor = new object();
+        static object lockerPalletizingPatchWheel = new object();
+        static object lockerPalletizingForceknot = new object();
+        static object lockerPalletizinginfobinde = new object();
+        static object lockerCompletePalletizingTask = new object();
+        static object lockerSxMoveTask = new object();
+        static object lockerPalletizingSpcPackStockOut = new object();
+        static object lockerPalletizingSpcPackPreALL = new object();
+        
+        static object lockerPalletizingSpcNotPackStockOut = new object();
+        static object lockerTorsChkStationbinde = new object();
+        static object lockerTorsChkErrorinfo = new object();
+        static object lockerTorsChkinfo = new object();
+        static object lockerPalletizingPackBStockOut = new object();
+        static object lockerSolderErrorStockOut = new object();
+        static object lockerChongraoPackStockOut = new object();
+        static object lockerForceCancelTask = new object();
+        static object lockerDeleteStockInfo = new object();
+        static object lockerUpdateStockState = new object();
+        static object lockerUpdateCellState = new object();
+        static object lockerDataSwapCell = new object();
+        static object lockerDataBasePatch = new object();
+        static object lockerUpdatePuchState = new object();
+        static object lockerDataMoveCell = new object();
+        static object lockerTaskRepeatSend = new object();
+        static object lockerUpdateTaskState = new object();
+        static object lockerCancelPreStockinfo = new object();
+        static object lockerErrorDateclearJob = new object();
+        static object lockerFlowDataMoveJob = new object();
+
+        
+        public SxController(ISXService sxService, ILogger<SxController> logger, IMapper mapper) : base(sxService, logger)
+        {
+            _sxService = sxService;
+            _logger = logger;
+            _mapper = mapper;
+        }
+
+        /// <summary>
+        /// 物料主数据推送接口(帘线)
+        /// </summary>
+        /// <param name="reqBody"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes SyncMaterInfoListForLX(SxSyncMaterInfoListRequest reqBody)
+        {
+            var res = new SRes();
+            if (reqBody.ListInfo == null || !reqBody.ListInfo.Any())
+            {
+                res.ResCode = ResponseStatusCodeEnum.DocDetailNotExist.GetHashCode();
+                res.ResMsg = ResponseStatusCodeEnum.DocDetailNotExist.GetDescription();
+                RedisHelper.Set("Sx:WMSErrorInfo:MESEquip3", new RedisErrorInfo() { Equip = "MESEquip3", Con = "MES推送物料主数据时" + ResponseStatusCodeEnum.DocDetailNotExist.GetDescription(), Time = DateTime.Now });
+                return res;
+            }
+            try
+            {
+                HttpUtil.PostRequest("http://10.30.44.4:8066/api/Fj/SyncMaterInfoListForLX", JsonConvert.SerializeObject(reqBody), 30000, "UTF-8", "application/json");
+            }
+            catch (Exception ex)
+            {
+                _logger.LogInformation("物料主数据推送接口(帘线)异常:" + ex.ToString());
+            }
+            _sxService.SyncMaterInfo(reqBody.ListInfo);
+
+            return res;
+        }
+        /// <summary>
+        /// 帘线生产工单信息传输接口
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes CurtainProductionOrder(CurtainProductionOrderRequest reqDto)
+        {
+            lock (lockerCurtainProductionOrder)
+            {
+                return _sxService.CurtainProductionOrder(reqDto);
+            }
+            //return ConcurrencyReqControl<CurtainProductionOrderRequest, SRes>(lockerCurtainProductionOrder, "CurtainProductionOrder", reqDto.BillCode, reqDto, _sxService.CurtainProductionOrder);
+        }
+
+        /// <summary>
+        /// 帘线工字轮信息传输接口(mes调用)
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost(Name = "SpoolMaterialInfoTrans")]
+        public SRes SpoolMaterialInfoTrans(SxSpoolMaterialInfoTransRequest reqDto)
+        {
+            lock (lockerSpoolMaterialInfoTrans)
+            {
+               return _sxService.SpoolMaterialInfoTrans(reqDto);
+            }
+            //return ConcurrencyReqControl<SxSpoolMaterialInfoTransRequest, SRes>(lockerSpoolMaterialInfoTrans, "SxSpoolMaterialInfoTrans", reqDto.SpoolCode, reqDto, _sxService.SpoolMaterialInfoTrans);
+        }
+
+        /// <summary>
+        /// SKU信息传输接口
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost(Name = "SKUInfoTrans")]
+        public SRes SKUInfoTrans(SKUInfoTransRequest reqDto)
+        {
+            return ConcurrencyReqControl<SKUInfoTransRequest, SRes>(lockerSKUInfoTrans, "SKUInfoTrans", reqDto.SkuCode, reqDto, _sxService.SKUInfoTrans);
+        }
+
+        /// <summary>
+        /// 包装信息传输接口
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost(Name = "PackInfoTrans")]
+        public SRes PackInfoTrans(PackInfoTrans reqDto)
+        {
+            return ConcurrencyReqControl<PackInfoTrans, SRes>(lockerPackInfoTrans, "SKUInfoTrans", reqDto.PackCode, reqDto, _sxService.PackInfoTrans);
+        }
+
+
+        /// <summary>
+        /// 扭转出库完成
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]  
+        public SRes<int> TorsChkComplete(TorsChkCompleteRequest request)
+        {
+            return ConcurrencyReqControl<TorsChkCompleteRequest, SRes<int>>(lockerTorsChkComplete, "TorsChkComplete", request.TaskNo, request, _sxService.TorsChkComplete);
+        }
+        /// <summary>
+        /// 扭转入库分配楼层接口
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<int> TorsChkFloor(TorsChkFloorRequest reqDto)
+        {
+            lock (lockerTorsChkFloor)
+            {
+                return _sxService.TorsChkFloor(reqDto);
+            }
+        }
+        /// <summary>
+        /// 扭转出库申请
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes TorsChkStockOut(TorsChkStockOutRequest request)
+        {
+            return ConcurrencyReqControl<TorsChkStockOutRequest, SRes>(lockerTorsChkStockOut, "TorsChkStockOut", request.Equip, request, _sxService.TorsChkStockOut);
+        }
+        /// <summary>
+        /// 接收扭转值
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes TorsChkValue(TorsChkValueRequest request)
+        {
+            lock (lockerTorsChkValue)
+            {
+                return _sxService.TorsChkValue(request);
+            }
+        }
+        /// <summary>
+        /// 扭转工位产品绑定接口
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes TorsChkStationbinde(TorsChkStationbindeRequest request)
+        {
+            lock (lockerTorsChkStationbinde)
+            {
+                return _sxService.TorsChkStationbinde(request);
+            }
+        }
+        /// <summary>
+        /// 扭转异常信息上传
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes TorsChkErrorinfo(TorsChkErrorinfoRequest request)
+        {
+            lock (lockerTorsChkErrorinfo)
+            {
+                return _sxService.TorsChkErrorinfo(request);
+            }
+        }
+        /// <summary>
+        /// 扭转获取基础信息
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public TorsChkResponse GetTorsChkinfo(GetTorsChkinfoRequest request)
+        {
+            lock (lockerTorsChkinfo)
+            {
+                return _sxService.GetTorsChkinfo(request);
+            }
+
+        }
+        [HttpPost]
+        public SRes CellInfo(string code)
+        {
+            return _sxService.CellInfo(code);
+        }
+        /// <summary>
+        /// 码垛层配装箱
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingLayerPackStockOut(PalletizingPackStockOutRequest request)
+        {
+            return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingLayerPackStockOut, "PalletizingLayerPackStockOut", request.Equip, request, _sxService.PalletizingLayerPackStockOut);
+        }
+       
+        /// <summary>
+        /// 码垛SPC非控制装箱(缓存托盘)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcNotPackStockOut2(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+                return _sxService.PalletizingSpcNotPackStockOut2(request);
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcNotPackStockOut);
+        }
+       
+        /// <summary>
+        /// 码垛SPC控制装箱(缓存托盘)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcPackStockOut2(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+                return _sxService.PalletizingSpcPackStockOut2(request);
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+
+        /// <summary>
+        /// 码垛SPC装箱(控制非控制一起执行)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcPackStockOutALL(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+                var timesign = IdFactory.NewId();
+
+                var temp3 =  _sxService.PalletizingPackBStockOut(request);
+
+                //var temp1 = _sxService.PalletizingSpcPackStockOut3(request);//控制箱根据新逻辑已经合并到非控制箱中
+               
+                var temp2 = _sxService.PalletizingSpcNotPackStockOut3(request);
+
+
+                temp2.ResMsg = "非控制箱执行结果:" + temp2.ResMsg  + ";B质量码垛:"+ temp3.ResMsg;
+                return temp2;
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+
+
+
+        /// <summary>
+        /// 码垛SPC装箱库存程序
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcPackRulePreAll(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackPreALL)
+            {
+                //var temp1 = _sxService.PalletizingSpcPackRulePre(request);
+                //var temp2 = _sxService.PalletizingSpcNotPackRulePre(request);//控制箱根据新逻辑已经合并到非控制箱中
+                var temp2 = _sxService.PalletizingSpcNotPackRulePre2(request);
+                temp2.ResMsg = "非控制箱预占库存执行结果:" + temp2.ResMsg; //+ ";控制箱预占库存执行结果:"+ temp1.ResMsg;
+                return temp2;
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+
+        /// <summary>
+        ///  码垛SPC非控制装箱计算预占箱号-去掉黑盘和批次限制
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcNotPackRulePre2(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackPreALL)
+            {
+                
+                var temp2 = _sxService.PalletizingSpcNotPackRulePre2(request);
+                temp2.ResMsg = "非控制箱预占库存执行结果:" + temp2.ResMsg ;
+                return temp2;
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+
+        /// <summary>
+        /// 码垛SPC装箱控制预占库存程序
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcNotPackRulePre(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackPreALL)
+            {
+                var temp2 = _sxService.PalletizingSpcNotPackRulePre(request);
+                return temp2;
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+        /// <summary>
+        /// 码垛SPC装箱控制预占库存程序
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcPackRulePre(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackPreALL)
+            {
+                var temp2 = _sxService.PalletizingSpcPackRulePre(request);
+                return temp2;
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+
+
+        /// <summary>
+        /// 码垛SPC非控制箱出预占库存
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcNotPackStockOut3(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackPreALL)
+            {
+                var temp2 = _sxService.PalletizingSpcNotPackStockOut3(request);
+                return temp2;
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+        /// <summary>
+        /// 码垛SPC控制箱出预占库存
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingSpcPackStockOut3(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackPreALL)
+            {
+                var temp2 = _sxService.PalletizingSpcPackStockOut3(request);
+                return temp2;
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
+        }
+
+
+
+        /// <summary>
+        /// B质量码垛装箱
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingPackBStockOut(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+                return _sxService.PalletizingPackBStockOut(request);
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingPackBStockOut, "PalletizingPackBStockOut", request.Equip, request, _sxService.PalletizingPackBStockOut);
+        }
+        /// <summary>
+        /// 重绕盘超时装箱码垛
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes ChongraoPackStockOut(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+                return _sxService.ChongraoPackStockOut(request);
+            }
+        }
+        /// <summary>
+        /// 焊点不符合异常排出
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes SolderErrorStockOut(PalletizingPackStockOutRequest request)
+        {
+            return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerSolderErrorStockOut, "SolderErrorStockOut", request.Equip, request, _sxService.SolderErrorStockOut);
+        }
+        /// <summary>
+        /// 特殊码垛出库(超时)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes SpecialStockOut(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+               return _sxService.SpecialStockOut(request);
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.SpecialStockOut);
+        }
+        /// <summary>
+        /// 手动码垛
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes ManualPalletizingStockOut(ManualPalletizingStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+                return _sxService.ManualPalletizingStockOut(request);
+            }
+            //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.SpecialStockOut);
+        }
+        /// <summary>
+        /// C级品码垛出库
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes CGrageStockOut(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerPalletizingSpcPackStockOut)
+            {
+                return _sxService.CGrageStockOut(request);
+
+            }
+        }
+        /// <summary>
+        /// 清理库存 (码垛)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes OnePackStock(PalletizingPackStockOutRequest request)
+        {
+            return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.OnePackStock);
+        }
+        /// <summary>
+        /// 完成码垛任务(自动入库)
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<int> CompletePalletizingTask(SxPalletizingCompleteRequest reqDto)
+        {
+            lock (lockerCompletePalletizingTask)
+            {
+                return _sxService.CompletePalletizingTask(reqDto);
+            }
+        }
+        /// <summary>
+        /// 码垛补工字轮接口
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingPatchWheel(PalletizingPatchWheelRequest request)
+        {
+            return ConcurrencyReqControl<PalletizingPatchWheelRequest, SRes>(lockerPalletizingPatchWheel, "PalletizingPatchWheel", request.Equip, request, _sxService.PalletizingPatchWheel);
+        }
+        /// <summary>
+        /// 码垛强制结盘
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes PalletizingForceknot(PalletizingForceknotRequest request)
+        {
+            lock (lockerPalletizingForceknot)
+            {
+                return _sxService.PalletizingForceknot(request);
+            }
+        }
+        /// <summary>
+        /// 码垛信息绑定(抓取完成)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes Palletizinginfobinde(PalletizinginfobindeRequest request)
+        {
+            lock (lockerPalletizinginfobinde)
+            {
+                return _sxService.Palletizinginfobinde(request);
+            }
+        }
+        /// <summary>
+        /// 手动出库
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes ManualTask(DetailCodeStrdtoRequest request)
+        {
+            lock (lockerSKUInfoTrans)
+            {
+                return _sxService.Manaler(request);
+            }
+        }
+
+        /// <summary>
+        /// 手动出库(mes调用)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes MesManualTask(MesManualTaskRequest request)
+        {
+            lock (lockerSKUInfoTrans)
+            {
+                var cell = _sxService.GetLocationInfo(new DetailCodeRequest() { Code = request.BarCode });
+                if (string.IsNullOrEmpty(cell.ResData))
+                {
+                    return new SRes()
+                    {
+                        ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode(),
+                        ResMsg = "该条码不在时效库中" + request.BarCode
+                    };
+                }
+                var newreq = new DetailCodeStrdtoRequest()
+                {
+                    Location = new List<string>() { cell.ResData },
+                    EndPoint = 5,
+                    User = request.User
+                };
+                return _sxService.Manaler(newreq);
+            }
+        }
+        /// <summary>
+        /// CD级品自动出库
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes CGradeAutoTask(DetailCodeStrdtoRequest request)
+        {
+            var list = _sxService.GetCGradeList();
+            if (list.ResDataList.Any())
+            {
+                return  ManualTask(new DetailCodeStrdtoRequest() { Location = new List<string>() {list.ResDataList.First() } , EndPoint = 5, User = "WMS自动触发CD排出" });
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// B质量超时自动出库
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes BGradeTimeOutAutoTask(DetailCodeStrdtoRequest request)
+        {
+            var list = _sxService.GetBGradeTimeOutList();
+            if (list.ResDataList.Any())
+            {
+                return ManualTask(new DetailCodeStrdtoRequest() { Location = new List<string>() { list.ResDataList.First() }, EndPoint = 5, User = "B质量超时自动排出" });
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 移库任务申请
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<WcsMoveTaskResponse> WcsMoveTask(WcsMoveTaskRequest request)
+        {
+            lock (lockerSxMoveTask)
+            {
+                return _sxService.WcsMoveTask(request);
+            }
+        }
+
+        /// <summary>
+        /// 分配楼层(扫码分配)
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost(Name = "ApplyFloor")]
+        public SRes<ApplyFloorResponse> ApplyFloor(ApplyFloorRequest reqDto)
+        {
+            lock (lockerApplyFloor)
+            {
+                var res = _sxService.ApplyFloor(reqDto);
+                if (res.ResCode == ResponseStatusCodeEnum.StockNotExist.GetHashCode() || res.ResCode == ResponseStatusCodeEnum.WcsTaskNotExist.GetHashCode())//组盘数据不存在时,主动从mes同步一下
+                {
+                    try
+                    {
+                        _logger.LogInformation("触发主动拉取工字轮信息:" + reqDto.Code);
+                        ApplyHunrRequest push = new ApplyHunrRequest() { SpoolNr = reqDto.Code };
+                        var str = WmsServiceExportApi(push);
+                        _logger.LogInformation("触发主动拉取工字轮返回:" + str);
+                        var spoolMaterialInfo = JsonConvert.DeserializeObject<SxSpoolMaterialInfoTransRequest>(str);
+                        if (!string.IsNullOrEmpty(spoolMaterialInfo.SpoolCode))
+                        {
+                            var temp = SpoolMaterialInfoTrans(spoolMaterialInfo);
+                            if (temp.ResCode == 200)
+                            {
+                                res = _sxService.ApplyFloor(reqDto);
+                            }
+                            else
+                            {
+                                _logger.LogInformation("SpoolMaterialInfoTrans返回报错:" + temp.ResMsg + ",工字轮" + reqDto.Code);
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        _logger.LogInformation("触发主动拉取工字轮信息异常" + reqDto.Code);
+                    }
+                   
+                }
+                return res;
+            }
+
+        }
+
+        /// <summary>
+        /// 获取巷道
+        /// </summary>
+        /// <param name="reqEntity"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<string> GetTunnelPriorityList(GetSxTunnelPriorityListRequest reqEntity)
+        {
+            lock (lockerGetTunnelPriorityList)
+            {
+                //如果不存在任务,则拉取一下条码信息(环线下面异常口回库情况)
+                if (!_sxService.IsExistTask(new DetailCodeRequest() { Code = reqEntity.Code }).ResData)
+                {
+                    DataBasePatch2(new DataBasePatchRequest() { Code = reqEntity.Code });
+                }
+                //先判断有没有条码信息
+                return _sxService.GetTunnelPriorityList(reqEntity);
+            }
+
+        }
+        /// <summary>
+        /// 分配货位
+        /// </summary>
+        /// <param name="reqEntity"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<List<dto.response.hj.ApplyStockInLocResponse>> ApplyStockInLoc(SxApplyStockInLocRequest reqEntity)
+        {
+            return ConcurrencyReqControl<SxApplyStockInLocRequest, SRes<List<dto.response.hj.ApplyStockInLocResponse>>>(lockerApplyStockInLoc, "SxApplyStockInLoc" + reqEntity.TunnelNum + reqEntity.Floor, "分配货位" + reqEntity.TunnelNum + reqEntity.Floor, reqEntity, _sxService.ApplyStockInLoc);
+        }
+        /// <summary>
+        /// 完成出库任务
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<int> CompleteTask(SxCompleteTaskRequest reqDto)
+        {
+            lock (lockerCompleteTask)
+            {
+                return _sxService.CompleteTask(reqDto);
+            }
+        }
+        /// <summary>
+        /// 堆垛机完成
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<int> SrmCompleted(SxCompleteTaskRequest reqDto)
+        {
+            lock (lockerSrmPickOutCompleted)
+            {
+                return _sxService.SrmCompleted(reqDto);
+            }
+        }
+        /// <summary>
+        /// 取消/完成任务验证(只验证不做业务处理,开放wcs系统调用)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes CancelTaskVerify(CancelTaskRequest request)
+        {
+            lock (lockerCancelOrComplet)
+            {
+                return _sxService.CancelTaskVerify(request);
+            }
+        }
+        /// <summary>
+        /// 执行任务(开放wcs调用,前端不调用)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes CarryTaskInfo(CancelTaskRequest request)
+        {
+            lock (lockerCarryTask)
+            {
+                return _sxService.CarryTaskInfo(request);
+            }
+        }
+
+        [HttpPost]
+        public SRes CancelTaskInfo(CancelTaskRequest request)
+        {
+            lock (lockerCarryTask)
+            {
+                var verifyres = _sxService.CancelTaskVerify(request);
+                if (verifyres.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode())
+                {
+                    return verifyres;
+                }
+                foreach (var item in request.TaskNo)
+                {
+                    var calres = _sxService.CancelTask(new CompleteTaskRequest() { TaskNum = item, WCSUpdateName ="wms"  });
+                    if (calres.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode())
+                    {
+                        return calres;
+                    }
+                    var forres =  _sxService.ForceCancelTask(new ErrorTaskRequest() { TaskNo = item.ToString(), WareHouse = Const.SxWareHouse });
+                    if (forres.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode())
+                    {
+                        return calres;
+                    }
+                }
+                return new SRes();              
+            }
+        }
+
+
+
+
+        /// <summary>
+        /// 帘线工字轮入库反馈接口
+        /// </summary>
+        /// <param name="billcode"></param>
+        /// <returns></returns>
+        [HttpPost(Name = "CurtainLineStockInFeedBack")]
+        public PushResponse CurtainLineStockInFeedBack(PushDate request)
+        {
+            var result = new PushResponse();
+
+            request.Type = SxFackbeekType.InterfaceType_SX_CurtainStockIn.ToString();
+            var list = _sxService.GetPushDatelistAuto(request);
+            if (!list.Any())
+            {
+                return new PushResponse() { ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode(), ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription() };
+            }
+
+            if (list.Where(p => p.TypeCode == SxFackbeekType.InterfaceType_SX_CurtainStockIn.ToString()).ToList().Any())
+            {
+                var onefloor = list.Where(p => p.TypeCode == SxFackbeekType.InterfaceType_SX_CurtainStockIn.ToString()).ToList();
+                SpoolPushRequest push = new SpoolPushRequest();
+                var info = _mapper.Map<List<ListInfo>>(onefloor);
+                push.list = info;
+                push.STORE_CODE = "sxhouse";
+                push.STORE_NAME = "时效立库";
+                WmsServiceExportApiMq(push);
+                var ids = onefloor.Select(p => p.Id).ToList();
+                _sxService.UpdatePushModelColumns(new sqlsugar.model.UpdateModelColumns<BillPushinfo>()
+                {
+                    Columns = it => new BillPushinfo { PostResult = 1, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
+                    WhereExpression = it => ids.Contains(it.Id)
+                });
+            }
+            return result;
+        }
+
+        /// <summary>
+        /// 时效库出库装箱工字轮信息反馈接口
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public PushResponse EnchaseStockOutFeedBack(PushDate request)
+        {
+            var res = new PushResponse();
+
+            request.Type = SxFackbeekType.InterfaceType_SX_CurtainStockOut.ToString();
+            var list = _sxService.GetPushDatelistAuto(request);
+            ////if (!list.Any())
+            ////{
+            ////    return new PushResponse() { ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode(), ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription() };
+            ////}
+
+            if (list.Where(p => p.TypeCode == SxFackbeekType.InterfaceType_SX_CurtainStockOut.ToString()).ToList().Any())
+            {
+                var onefloor = list.Where(p => p.TypeCode == SxFackbeekType.InterfaceType_SX_CurtainStockOut.ToString()).ToList();
+                SXProductStockInFeedBackRequest push = new SXProductStockInFeedBackRequest();
+                var info = _mapper.Map<List<SXProductStockInFeedBackRequestItem>>(onefloor);
+                push.ListInfo = info;
+                push.WareCode = onefloor.FirstOrDefault().WarehouseCode;
+                push.WareName = "时效库";
+                push.Type = "1";
+                var resbody = JsonConvert.DeserializeObject<PushResponse>(WmsServiceExportApiMq(push));
+                var ids = onefloor.Select(p => p.Id).ToList();
+                //if (resbody.success == true)
+                //{
+                    _sxService.UpdatePushModelColumns(new sqlsugar.model.UpdateModelColumns<BillPushinfo>()
+                    {
+                        Columns = it => new BillPushinfo { PostResult = 1, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
+                        WhereExpression = it => ids.Contains(it.Id)
+                    });
+                //}
+                //else
+                //{
+                //    _sxService.UpdatePushModelColumns(new sqlsugar.model.UpdateModelColumns<BillPushinfo>()
+                //    {
+                //        Columns = it => new BillPushinfo { PostResult = 2, PostQty = it.PostQty + 1, EditTime = DateTime.Now },
+                //        WhereExpression = it => ids.Contains(it.Id)
+                //    });
+                //}
+            }
+
+
+            request.Type = SxFackbeekType.InterfaceType_SX_ErrorStockOut.ToString();
+            var list1 = _sxService.GetPushDatelistAuto(request);
+            ////if (!list.Any())
+            ////{
+            ////    return new PushResponse() { ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode(), ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription() };
+            ////}
+
+            if (list1.Where(p => p.TypeCode == SxFackbeekType.InterfaceType_SX_ErrorStockOut.ToString()).ToList().Any())
+            {
+                var onefloor = list1.Where(p => p.TypeCode == SxFackbeekType.InterfaceType_SX_ErrorStockOut.ToString()).ToList();
+                SXProductStockInFeedBackRequest push = new SXProductStockInFeedBackRequest();
+                var info = _mapper.Map<List<SXProductStockInFeedBackRequestItem>>(onefloor);
+                push.ListInfo = info;
+                push.WareCode = onefloor.FirstOrDefault().WarehouseCode;
+                push.WareName = "时效库";
+                push.Type = "2";
+                var resbody = JsonConvert.DeserializeObject<PushResponse>(WmsServiceExportApiMq(push));
+                var ids = onefloor.Select(p => p.Id).ToList();
+                //if (resbody.success == true)
+                //{
+                    _sxService.UpdatePushModelColumns(new sqlsugar.model.UpdateModelColumns<BillPushinfo>()
+                    {
+                        Columns = it => new BillPushinfo { PostResult = 1, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
+                        WhereExpression = it => ids.Contains(it.Id)
+                    });
+                //}
+                //else
+                //{
+                //    _sxService.UpdatePushModelColumns(new sqlsugar.model.UpdateModelColumns<BillPushinfo>()
+                //    {
+                //        Columns = it => new BillPushinfo { PostResult = 2, PostQty = it.PostQty + 1, EditTime = DateTime.Now },
+                //        WhereExpression = it => ids.Contains(it.Id)
+                //    });
+                //}
+            }
+
+
+            return res;
+        }
+        /// <summary>
+        /// 工字轮装箱位置信息上传接口
+        /// </summary>
+        /// <param name="billcode"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes EnchaseCoordPosFeedBack(string doccode)
+        {
+            //var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
+            //var dtolist = _mapper.Map<List<EnchaseCoordPosFeedBackRequestItem>>(list);
+            //var dto = new EnchaseCoordPosFeedBackRequest() { ListInfo = dtolist };
+            //SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
+            //return resbody;
+            return null;
+        }
+
+        /// <summary>
+        /// 库存改判
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes StockChange(SxStockChangeRequest reqDto)
+        {
+            lock (lockerlockerStockChange)
+            {
+                return _sxService.StockChange(reqDto);
+            }
+            //return ConcurrencyReqControl<SxStockChangeRequest, SRes>(lockerlockerStockChange, "SxStockChange", reqDto.BillCode, reqDto, _sxService.StockChange);
+        }
+        /// <summary>
+        /// 改判反馈接口
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes StockChangeFeedBack(string doccode)
+        {
+            //var list = _sxService.GetBillFeedbackList(p => p.BillCode == doccode);
+            //var dtolist = _mapper.Map<List<StockChangeFeedBackRequestItem>>(list);
+            //var dto = new StockChangeFeedBackRequest() { ListInfo = dtolist };
+            //SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
+            //return resbody;
+            return null;
+        }
+        /// <summary>
+        /// 实时库存查询接口
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public CurStockListResponse GetCurStockList(CurStockListRequest request)
+        {
+            return _sxService.GetCurStockList(request);
+        }
+        /// <summary>
+        /// 移库货位上报MES接口
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes MoveStockLocationFeedBack(PushDate request)
+        {
+            var res = new PushResponse();
+            request.Type = SxFackbeekType.InterfaceType_SX_CellMove.ToString();
+            var list = _sxService.GetPushDatelistAuto(request);
+            if (!list.Any())
+            {
+                return new PushResponse() { ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode(), ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription() };
+            }
+            var onefloor = list.Where(p => p.TypeCode == SxFackbeekType.InterfaceType_SX_CellMove.ToString()).ToList();
+            dto.request.sx.MoveStockLocationFeedBackRequest push = new dto.request.sx.MoveStockLocationFeedBackRequest();
+            var info = _mapper.Map<List<MoveStockLocationFeedBackRequestItem>>(onefloor);
+            push.ListInfo = info;
+            push.WareCode = onefloor.FirstOrDefault().WarehouseCode;
+            var resbody = JsonConvert.DeserializeObject<PushResponse>(WmsServiceExportApi(push));
+            var ids = onefloor.Select(p => p.Id).ToList();
+            if (resbody.success == true)
+            {
+                _sxService.UpdatePushModelColumns(new sqlsugar.model.UpdateModelColumns<BillPushinfo>()
+                {
+                    Columns = it => new BillPushinfo { PostResult = 1, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
+                    WhereExpression = it => ids.Contains(it.Id)
+                });
+            }
+            else
+            {
+                _sxService.UpdatePushModelColumns(new sqlsugar.model.UpdateModelColumns<BillPushinfo>()
+                {
+                    Columns = it => new BillPushinfo { PostResult = 2, PostQty = it.PostQty + 1, EditTime = DateTime.Now },
+                    WhereExpression = it => ids.Contains(it.Id)
+                });
+            }
+            return res;
+        }
+        [HttpPost]
+        public SRes InitWareCell(int row, int col, int deot, int rowcount, int tun)
+        {
+            return _sxService.InitWareCell(row, col, deot, rowcount, tun);
+        }
+
+        [HttpPost]
+        public string StartJob(AutoDetailRequest req)
+        {
+            var res = new SRes();
+            var sysjob = _sxService.GetJobEntityByid(req.Id);
+            if (sysjob == null)
+            {
+                res.ResCode = 0;
+                res.ResMsg = "没有找到对应的定时任务";
+                return res.ToCamelCaseString();
+            }
+            JobScheduler.Start(sysjob.Code, Type.GetType("wms.api.Job.PostJob"), sysjob.CronExpression);
+            return res.ToCamelCaseString();
+        }
+        [HttpPost]
+        public string ExecuteJob(DetailCodeStrRequest reqEntity)
+        {
+            var res = new SRes();
+            if (string.IsNullOrEmpty(reqEntity.Code))
+            {
+                res.ResCode = 0;
+                res.ResMsg = "参数错误";
+                return res.ToCamelCaseString();
+            }
+            var jobEntity = _sxService.GetJobEntityByCode(reqEntity.Code);
+            if (jobEntity == null)
+            {
+                res.ResCode = 0;
+                res.ResMsg = "没有找到该编码";
+                return res.ToCamelCaseString();
+            }
+            var jobapilist = _sxService.GetJobapilist(jobEntity.Id);
+            if (jobapilist.Any())
+            {
+                foreach (var item in jobapilist)
+                {
+                    Task.Run(() => { HttpUtil.PostRequest(item.ApiUrl, item.RequestBody); });
+                }
+            }
+            return res.ToCamelCaseString();
+        }
+        /// <summary>
+        /// 分页Job列表
+        /// </summary>
+        /// <param name="reqEntity"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public List<dto.response.hj.SysJobDto> GetSysJobList(wms.dto.request.hj.GetSysJobListRequest reqEntity)
+        {
+            var list = _sxService.GetJobList();
+            var listdto = _mapper.Map<List<dto.response.hj.SysJobDto>>(list);
+            if (listdto != null && listdto.Any())
+            {
+                for (int i = 0; i < list.Count; i++)
+                {
+                    listdto[i].JobExecuteStatus = GetExecuteStatus(new DetailCodeRequest() { Code = listdto[i].Code });
+                }
+                return listdto;
+            }
+            return new List<dto.response.hj.SysJobDto>();
+        }
+        /// <summary>
+        /// 获取执行状态
+        /// </summary>
+        /// <param name="reqEntity"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public string GetExecuteStatus(DetailCodeRequest reqEntity)
+        {
+            var jobInfo = _sxService.GetJobEntityByCode(reqEntity.Code);
+            var jobs = JobScheduler.GetJobList(Const.JobGroupName).Result;
+            if (jobs != null)
+            {
+                var temp = jobs.Where(p => p.JobName == jobInfo.Code);
+                if (temp.Any())
+                {
+                    return temp.First().JobStatus;
+                }
+                else
+                {
+                    return "Stop";
+                }
+            }
+            else
+            {
+                return "Stop";
+            }
+        }
+        /// <summary>
+        /// 异常信息传输接口
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes GetMesErrorInfo(SxErrorinfoRequest request)
+        {
+            return _sxService.GetMesErrorInfo(request);
+        }
+        /// <summary>
+        /// 更新箱号
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes UpdateBoxNo(UpdateBoxNoRequest request)
+        {
+            return _sxService.UpdateBoxNo(request);
+        }
+
+        /// <summary>
+        /// 更新黑盘数量(MES调用)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes UpdateBlackCount(UpdateBlackCountReq request)
+        {
+            return _sxService.UpdateBlackCount(request);
+        }
+
+        /// <summary>
+        /// 更新箱号
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes test(UpdateBoxNoRequest request)
+        {
+   
+
+            return null; ;
+        }
+        #region 异常处理
+        /// <summary>
+        /// 强制取消任务
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes ForceCancelTask(ErrorTaskRequest request)
+        {
+            lock (lockerForceCancelTask)
+            {
+                return _sxService.ForceCancelTask(request);
+            }
+        }
+        /// <summary>
+        /// 删除库存信息
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DeleteStockInfo(DetailCodeStrRequest request)
+        {
+            lock (lockerDeleteStockInfo)
+            {
+                return _sxService.DeleteStockInfo(request);
+            }
+        }
+        /// <summary>
+        /// 修改库存状态
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes UpdateStockState(DetailCodeStr1Requestdto request)
+        {
+            lock (lockerUpdateStockState)
+            {
+                return _sxService.UpdateStockState(request);
+            }
+        }
+        /// <summary>
+        /// 修改货位状态
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes UpdateCellState(DetailCodeStr1Requestdto request)
+        {
+            lock (lockerUpdateCellState)
+            {
+                return _sxService.UpdateCellState(request);
+            }
+        }
+        /// <summary>
+        /// 货位数据互换
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DataSwapCell(DataSwapCellStrRequest request)
+        {
+            lock (lockerDataSwapCell)
+            {
+                return _sxService.DataSwapCell(request);
+            }
+        }
+        /// <summary>
+        /// 补数据
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DataBasePatch(DataBasePatchRequest request)
+        {
+            lock (lockerDataBasePatch)
+            {
+                return _sxService.DataBasePatch(request);
+            }
+        }
+        /// <summary>
+        /// 补数据(异常排出口回库使用)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DataBasePatch2(DataBasePatchRequest request)
+        {
+            lock (lockerDataBasePatch)
+            {
+                ApplyHunrRequest push = new ApplyHunrRequest() { SpoolNr = request.Code };
+                var spoolMaterialInfo = JsonConvert.DeserializeObject<SxSpoolMaterialInfoTransRequest>(WmsServiceExportApi(push));
+                if (!string.IsNullOrEmpty(spoolMaterialInfo.SpoolCode))
+                {
+                    var temp = SpoolMaterialInfoTrans(spoolMaterialInfo);
+                    if (temp.ResCode == 200)
+                    {
+                        return _sxService.DataBasePatch2(request);
+                    }
+                    else
+                    {
+                        return temp;
+                    }
+                }
+                return null;
+            }
+        }
+        /// <summary>
+        /// 补数据
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DataBasePatch3(DataBasePatchRequest request)
+        {
+            lock (lockerDataBasePatch)
+            {
+                return _sxService.DataBasePatch3(request);
+            }
+        }
+        [HttpPost]
+        public SRes UpdatePurchState(UpdatePurchStateRequestdto request)
+        {
+            lock (lockerUpdatePuchState)
+            {
+                return _sxService.UpdatePurchState(request);
+            }
+        }
+        /// <summary>
+        /// 货位数据转移
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DataMoveCell(DataSwapCellStrRequest request)
+        {
+            lock (lockerDataMoveCell)
+            {
+                return _sxService.DataMoveCell(request);
+            }
+        }
+        /// <summary>
+        /// 机器人任务重复下发
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes TaskRepeatSend(TaskRepeatRequest request)
+        {
+            lock (lockerTaskRepeatSend)
+            {
+                return _sxService.TaskRepeatSend(request);
+            }
+        }
+        /// <summary>
+        /// 修改任务状态
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes UpdateTaskState(UpdateTaskStateRequest request)
+        {
+            lock (lockerUpdateTaskState)
+            {
+                return _sxService.UpdateTaskState(request);
+            }
+        }
+
+        /// <summary>
+        /// 取消预锁库存(用于出库)
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes CancelPreStockinfo(CancelPreStockinfoRequest request)
+        {
+            lock (lockerCancelPreStockinfo)
+            {
+                return _sxService.CancelPreStockinfo(request);
+            }
+        }
+        /// <summary>
+        /// 获取扭转值范围
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes<GetTorsRangeRes> GetTorsRange(DetailCodeRequest request)
+        {
+             return _sxService.GetTorsRange(request);
+        }
+
+        /// <summary>
+        /// 删除扭转绑定信息
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DeleteTorsBind(DetailCodeStrRequest request)
+        {
+            lock (lockerDeleteStockInfo)
+            {
+                return _sxService.DeleteTorsBind(request);
+            }
+        }
+        /// <summary>
+        /// 解锁工字轮锁定
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes DeleteHwPre(DetailCodeStrRequest request)
+        {
+            lock (lockerDeleteStockInfo)
+            {
+                return _sxService.DeleteHwPre(request);
+            }
+        }
+
+
+        [HttpPost]
+        public SRes test1()
+        {
+            var sysconfcon = int.Parse(_sxService.GetSysConfigByCode("TaskRemoveHours").SContent) * (-1);
+                
+            return new SRes() { ResMsg = sysconfcon.ToString() };
+        }
+        #endregion
+        [HttpPost]
+        public SRes ErrorDateclearJob()
+        {
+            lock (lockerErrorDateclearJob)
+            {
+                return _sxService.ErrorDateclearJob();
+            }
+        }
+        /// <summary>
+        /// 流水数据归档
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes FlowDataMoveJob(PalletizingPackStockOutRequest request)
+        {
+            lock (lockerFlowDataMoveJob)
+            {
+                _sxService.RemoveTaskData(request);
+                return _sxService.FlowDataMoveJob(request);
+            }
+        }
+
+
+
+        //public SRes<List<SBoxInfoRes>> GetSBoxInfoResList()
+        //{
+        //    var res = new SRes<List<SBoxInfoRes>>() { ResDataList = new List<List<SBoxInfoRes>>() };
+
+        //    return res;
+        //}
+    }
+}

+ 70 - 0
wms.api/Controllers/WmsController.cs

@@ -0,0 +1,70 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System.Diagnostics;
+using wms.dto.request;
+using wms.dto.request.hj;
+using wms.dto.response;
+using wms.dto.response.hj;
+using wms.service;
+using wms.service.IService;
+using wms.util.Ext;
+using wms.util.Http;
+
+namespace wms.api.Controllers
+{
+    [Route("api/[controller]/[action]")]
+    [ApiController]
+    public class WmsController : ControllerBase
+    {
+        static object lockerCopperLineReceiveInstr = new object();
+        private readonly IHJService _hJService;
+        public WmsController(IHJService hJService)
+        {
+            _hJService = hJService;
+        }
+        /// <summary>
+        /// 接收ESB请求统一入口
+        /// </summary>
+        /// <param name="reqDto"></param>
+        /// <returns></returns>
+        [HttpPost(Name = "WmsServiceEntrance")]
+        public EsbRes WmsServiceEntrance(EsbReq reqDto)
+        {
+            var result = new EsbRes() { HTTPResponseHeader = new HeadersRes() };
+            //var methodname = RedisHelper.Get("ESBServiceCode" + reqDto.headers.serviceCode);
+            //if (string.IsNullOrEmpty(methodname))
+            //{
+            //    var conf = _hJService.GetSysConfigByExpression(p => p.SContent == reqDto.headers.serviceCode);
+            //    if (conf == null)
+            //    {
+            //        throw new Exception("没有找到该编码的配置信息"+ reqDto.headers.serviceCode);
+            //    }
+            //    methodname = conf.Code;
+            //    RedisHelper.Set("ESBServiceCode" + reqDto.headers.serviceCode, methodname);
+            //}
+            //switch (methodname)
+            //{
+            //    case "CopperLineReceiveInstr"://镀铜补空/取满指令接收接口(包含550工字轮)
+            //        var req = JsonConvert.DeserializeObject<CopperLineRequest>(reqDto.Body);
+            //        result.Body = ConcurrencyReqControl<CopperLineRequest>(lockerCopperLineReceiveInstr, "CopperLineReceiveInstr"+ req.WbCode, req.WbCode, req, _hJService.CopperLineReceiveInstr) .ToCamelCaseString();
+            //        break;
+            //    case "StockChange"://库存改判
+            //        result.Body = _hJService.StockChange(JsonConvert.DeserializeObject<StockChangeRequest>(reqDto.Body)).ToCamelCaseString();
+            //        break;
+            //    case "GetCurStockList"://实时库存查询接口
+            //        result.Body = _hJService.GetCurStockList(JsonConvert.DeserializeObject<GetCurStockListRequest>(reqDto.Body)).ToCamelCaseString();
+            //        break;
+            //    case "SpecialPickMaterApply"://特殊出库领料申请接口
+            //        result.Body = _hJService.SpecialPickMaterApply(JsonConvert.DeserializeObject<SpecialPickMaterApplyRequest>(reqDto.Body)).ToCamelCaseString();
+            //        break;
+            //    default:
+            //        break;
+            //}
+         
+            return result;
+        }
+      
+      
+    }
+}

+ 75 - 0
wms.api/Filter/LogFilter.cs

@@ -0,0 +1,75 @@
+using Microsoft.AspNetCore.Mvc.Abstractions;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Claims;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using Newtonsoft.Json;
+
+namespace wms.api.Filter
+{
+    /// <summary>
+    /// 日志
+    /// </summary>
+    public class LogFilter : ActionFilterAttribute
+    {
+
+        public override void OnActionExecuting(ActionExecutingContext context)
+        {
+            ILogger _logUtil = context.HttpContext.RequestServices.GetRequiredService<ILogger<LogFilter>>();
+            var requestParam = context.ActionArguments;
+            object methodname = "";
+            var method = context.ActionDescriptor.DisplayName;
+            var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
+            var actionName = controllerActionDescriptor.ActionName;
+            if (actionName.Equals("GetTunnelPriorityList") || actionName.Equals("GetTorsChkinfo") || !actionName.StartsWith("Get"))
+            {
+                if (actionName == "I_WCS_PutTaskStep" || actionName == "I_WCS_PutDevInfo" || actionName == "ExecuteJob" || actionName == "StartJob")
+                {
+                    //_logUtil.Debug(method + "请求参数:" + JilH.JilToJson(requestParam));
+                }
+                else
+                {
+                    _logUtil.LogInformation(method + context.HttpContext.Connection.RemoteIpAddress.ToString()+ "请求参数:{@requestParam}",requestParam);
+                    
+                }
+            }
+            base.OnActionExecuting(context);
+
+        }
+        public override void OnActionExecuted(ActionExecutedContext context)
+        {
+            string resContent = "";
+            if (context.Result is ObjectResult result)
+                resContent = JsonConvert.SerializeObject(result.Value);
+            ILogger _logUtil = context.HttpContext.RequestServices.GetRequiredService<ILogger<LogFilter>>();
+            var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
+            var actionName = controllerActionDescriptor.ActionName;
+            if (actionName.Equals("GetTunnelPriorityList") || actionName.Equals("GetTorsChkinfo") || !actionName.StartsWith("Get"))
+            {
+                if (actionName == "I_WCS_PutTaskStep" || actionName == "I_WCS_PutDevInfo" || actionName == "ExecuteJob" || actionName == "StartJob")
+                {
+                    //_logUtil.Debug(context.ActionDescriptor.DisplayName + "响应结果:" + resContent.JilToJson());
+                }
+                else
+                {
+                  
+                       _logUtil.LogInformation(context.ActionDescriptor.DisplayName + "响应结果:{@resContent}" , resContent);
+                    
+                }
+            }
+            base.OnActionExecuted(context);
+        }
+
+        public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
+        {
+            return base.OnResultExecutionAsync(context, next);
+        }
+
+  
+    }
+}

+ 104 - 0
wms.api/Job/JobScheduler.cs

@@ -0,0 +1,104 @@
+using wms.dto.request.hj;
+using wms.dto;
+using Quartz;
+using Quartz.Impl;
+using Quartz.Impl.Matchers;
+using Quartz.Impl.Triggers;
+
+namespace wms.api.Job
+{
+    /// <summary>
+    /// 任务调度器
+    /// </summary>
+    public class JobScheduler
+    {
+        public static IScheduler InitScheduler()
+        {
+            //创建调度器工厂
+            ISchedulerFactory factory = new StdSchedulerFactory();
+            //创建调度器对象
+            IScheduler scheduler = factory.GetScheduler().Result;
+            ////创建任务
+            //IJobDetail job = JobBuilder.Create<PostJob>().Build();
+            ////创建触发器
+            //ITrigger trigger = TriggerBuilder.Create().WithIdentity("TimeTrigger", "TimeGroup").WithSimpleSchedule(p => p.WithIntervalInMinutes(1).RepeatForever()).Build();
+            ////任务、触发器添至调度器对象
+            //scheduler.ScheduleJob(job, trigger);
+            //scheduler.Start();
+            return scheduler;
+        }
+
+        public static void Start(string jobName, Type jobType, string timeCorn)
+        {
+            var sched = InitScheduler();
+            var jobList = GetJobList(Const.JobGroupName).Result;
+            var job = jobList.Where(p => jobName == p.JobName);
+            if (job.Count() > 0)
+            {
+                //if (job.First().JobStatus == "Stop")
+                {
+                    sched.DeleteJob(new JobKey(jobName, Const.JobGroupName));
+                    StartJob(jobName, jobType, timeCorn);
+                }
+                //else
+                //{
+                //    ResumeAsync(jobName, Const.JobGroupName);
+                //}
+            }
+            else
+            {
+                StartJob(jobName, jobType, timeCorn);
+            }
+        }
+        public static async Task<List<SysJobDto>> GetJobList(string jobGroup)
+        {
+            var result = new List<SysJobDto>();
+            try
+            {
+                var group = await InitScheduler().GetJobGroupNames();
+                var currentlyExecutingJobs = await InitScheduler().GetCurrentlyExecutingJobs();
+
+
+                var matcher = GroupMatcher<JobKey>.GroupEquals(jobGroup);
+                var jobs = await InitScheduler().GetJobKeys(matcher);
+                foreach (var item in jobs)
+                {
+                    var triggers = await InitScheduler().GetTriggersOfJob(item);
+                    var state = await InitScheduler().GetTriggerState(triggers.First().Key);
+
+                    var job = InitScheduler().GetJobDetail(item).Result;
+                    result.Add(new SysJobDto()
+                    {
+                        JobName = job.Key.Name,
+                        JobDesc = job.Description,
+                        JobStatus = state.ToString(),
+                        JobGroup = job.Key.Group
+                    });
+                }
+                return result;
+            }
+            catch (Exception ex)
+            { return result; }
+        }
+        public static void StartJob(string jobName, Type jobType, string timeCorn)
+        {
+            var scheduler = InitScheduler(); //获取对象
+            //创建任务
+            JobDetailImpl jobDetail = new JobDetailImpl();
+            jobDetail.Name = jobName;
+            jobDetail.JobType = jobType;
+            jobDetail.Group = Const.JobGroupName;
+            //创建触发器
+            CronTriggerImpl trigger = new CronTriggerImpl();
+            trigger.Name = jobName;
+            trigger.Group = Const.TiggerGroupName;
+            trigger.CronExpressionString = timeCorn;
+            //任务、触发器添至调度器对象
+            scheduler.ScheduleJob(jobDetail, trigger);
+            if (!scheduler.IsShutdown)
+            {
+                scheduler.Start();
+            }
+        }
+    }
+}

+ 30 - 0
wms.api/Job/PostJob.cs

@@ -0,0 +1,30 @@
+using Newtonsoft.Json;
+using Quartz;
+using wms.dto.request.hj;
+using wms.util;
+using wms.util.Http;
+
+namespace wms.api.Job
+{
+    /// <summary>
+    /// 创建任务
+    /// </summary>
+    public class PostJob : IJob
+    {
+        public Task Execute(IJobExecutionContext context)
+        {
+            string jobCode = context.JobDetail.Key.Name;
+            Action<string> action = new Action<string>(PostRequest);
+            return Task.Run(() =>
+            {
+                PostRequest(jobCode);
+            });
+        }
+        public void PostRequest(string jobCode)
+        {
+
+            var webBaseUrl = AppSettings.GetConfig("webapi");
+            HttpUtil.PostRequest(webBaseUrl + "/api/Sx/ExecuteJob", JsonConvert.SerializeObject(new DetailCodeRequest { Code = jobCode }));
+        }
+    }
+}

+ 76 - 0
wms.api/Program.cs

@@ -0,0 +1,76 @@
+using Autofac;
+using Autofac.Extensions.DependencyInjection;
+using CSRedis;
+using Microsoft.OpenApi.Models;
+using Serilog;
+using wms.api.autofac;
+using wms.api.Filter;
+using wms.service.mapper;
+
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+
+builder.Services.AddControllers();
+// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
+builder.Services.AddEndpointsApiExplorer();
+builder.Services.AddCors(options =>
+{
+    options.AddPolicy(name: "cors", builders => builders.AllowAnyOrigin().AllowAnyHeader().WithMethods("GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS"));
+});
+builder.Services.AddSwaggerGen(c =>
+{
+    c.SwaggerDoc("v1", new OpenApiInfo
+    {
+        Title = "WMS接口文档",
+        Version = "1.0",
+        Description = "WMS接口文档"
+    });
+    var file = Path.Combine(AppContext.BaseDirectory, "wms.api.xml");  // xml文档绝对路径
+    var file1 = Path.Combine(AppContext.BaseDirectory, "wms.dto.xml");
+    var path = Path.Combine(AppContext.BaseDirectory, file); 
+    var path1 = Path.Combine(AppContext.BaseDirectory, file1);
+    c.IncludeXmlComments(path, true); // true : 显示控制器层注释
+    c.IncludeXmlComments(path1, true); // true : 显示dto注释
+    c.OrderActionsBy(o => o.RelativePath);
+
+});
+builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
+
+builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder =>
+{
+    containerBuilder.RegisterModule(new AutofacModuleRegister());
+});
+builder.Host.UseSerilog((context, logger) =>
+{
+    logger.ReadFrom.Configuration(context.Configuration);
+    logger.Enrich.FromLogContext();
+});
+
+builder.Services.AddControllersWithViews(options =>
+{
+    options.Filters.Add<LogFilter>();
+});
+
+builder.Services.AddSingleton(new wms.util.AppSettings(builder.Configuration));
+RedisHelper.Initialization(new CSRedisClient(builder.Configuration.GetConnectionString("CSRedisConnectString")));
+builder.Services.AddAutoMapper(typeof(WmsPrifile));
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (app.Environment.IsDevelopment())
+{
+    
+}
+app.UseSwagger();
+app.UseSwaggerUI();
+
+//app.UseHttpsRedirection();
+app.UseCors("cors");
+app.UseRouting();
+app.UseAuthorization();
+
+app.MapControllers();
+
+app.Run();
+

+ 31 - 0
wms.api/Properties/launchSettings.json

@@ -0,0 +1,31 @@
+{
+  "$schema": "https://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:10539",
+      "sslPort": 44314
+    }
+  },
+  "profiles": {
+    "wms.api": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "launchUrl": "swagger",
+      "applicationUrl": "https://localhost:7044;http://localhost:5044",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "launchUrl": "swagger",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}

+ 8 - 0
wms.api/appsettings.Development.json

@@ -0,0 +1,8 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}

+ 75 - 0
wms.api/appsettings.json

@@ -0,0 +1,75 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*",
+  "ConnectionConfigs": [
+    {
+      //"ConnectionString": "Data Source=10.30.44.50;User ID=sa;Password=P@ssw0rd;Initial Catalog=WMS_ZT_01SX",
+      //"ConnectionString": "Data Source=.;User ID=sa;Password=Aa123456;Initial Catalog=WMS_ZT_01HJ",
+      "ConnectionString": "Data Source=118.178.107.197;User ID=bz;Password=123456;Initial Catalog=WMS_ZT_01SX",
+      "DbType": 1,
+      "ConfigId": "sx",
+      "IsAutoCloseConnection": true
+    }
+   ],
+  "CSRedisConnectString": "127.0.0.1[:6379],password=123456,defaultDatabase=0",
+  "Serilog": {
+    "MinimumLevel": {
+      "Default": "Debug", //最小记录日志级别
+      "Override": {
+        "Default": "Warning",
+        "System": "Warning",
+        "Microsoft": "Warning"
+      }
+    },
+    "Enrich": [ "FromLogContext", "WithThreadId" ],
+    "WriteTo": [
+      {
+        "Name": "Console",
+        "Args": {
+          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {SourceContext} {ThreadId} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
+        }
+      },
+      {
+        "Name": "Debug",
+        "Args": {
+          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {SourceContext} {ThreadId} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
+        }
+      },
+      {
+        "Name": "File",
+        "Args": {
+          "path": "Logs/log.txt",
+          "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter",
+          "rollingInterval": "Day",
+          "outputTemplate": "{ClientIP}{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {SourceContext} {ThreadId} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
+          "shared": true,
+          "rollOnFileSizeLimit": true,
+          "fileSizeLimitBytes": 102400000,
+          "retainedFileCountLimit": 365
+        }
+      }
+    ]
+  },
+  "EsbMesPushUrl": "http://esb.zt.net.cn:18080/esb/comm/api",
+  //“EsbMesPushUrlM”: “”,
+  "EsbMesPushUrlMq": "http://esb.zt.net.cn:18080/esb/comm/mq",
+  "EsbMesPushUrlPubMq": "http://esb.zt.net.cn:18080/esb/pub/mq",
+  "RcsCreateTaskPushUrl": "",
+  "RcsContinuePushUrl": "",
+  "MaterInfo": "62103902,62100305,62101201,62102103,62100801,62102402,62102506,62101804,62100701,62101803,62101202,62100101,62102301,62100201,62102204,62100203,62102203,62100104,62101601,62100902",
+  "TorTaskCount": "54",//68
+  "IWmsStockInPushUrl": "databus/publish/zhongTianOutStock",
+  "IWmsStockOutPushUrl": "databus/publish/zhongTianIntoStock",
+  "MoveReservedLocationCount": "1",
+  "CopperLineToEmptyAreaCode": "21",
+  "webapi": "http://10.30.44.3:8011",
+  "maxweight": "950",
+  "TimeOutHoldHours": "72",
+  "ForbidLayer": "",
+  "FloorCount": "72"
+}

+ 38 - 0
wms.api/autofac/AutofacModuleRegister.cs

@@ -0,0 +1,38 @@
+using Autofac;
+using Autofac.Extras.Quartz;
+using System.Reflection;
+using wms.api.Job;
+
+namespace wms.api.autofac
+{
+    public class AutofacModuleRegister : Autofac.Module
+    {
+        //重写Autofac管道Load方法,在这里注册注入
+        protected override void Load(ContainerBuilder builder)
+        {
+            builder.RegisterAssemblyTypes(GetAssemblyByName("wms.service")).Where(a => a.Name.EndsWith("Service")).AsImplementedInterfaces().PropertiesAutowired();
+            builder.RegisterAssemblyTypes(GetAssemblyByName("wms.dataservice")).Where(a => a.Name.EndsWith("DataService")).AsImplementedInterfaces().PropertiesAutowired();
+
+            //builder.RegisterModule(new QuartzAutofacFactoryModule());
+            builder.RegisterModule(new QuartzAutofacJobsModule(typeof(PostJob).Assembly));
+            ////单一注册
+
+            //builder.RegisterType<NlogUtil>().Named<ILogUtil>(typeof(NlogUtil).Name);
+
+
+            //var controllersTypesInAssembly = typeof(Startup).Assembly.GetExportedTypes()
+            //.Where(type => typeof(Microsoft.AspNetCore.Mvc.ControllerBase).IsAssignableFrom(type)).ToArray();
+            //builder.RegisterTypes(controllersTypesInAssembly).PropertiesAutowired();
+
+        }
+        /// <summary>
+          /// 根据程序集名称获取程序集
+          /// </summary>
+          /// <param name="AssemblyName">程序集名称</param>
+        public static Assembly GetAssemblyByName(String AssemblyName)
+        {
+            return Assembly.Load(AssemblyName);
+        }
+    }
+
+}

+ 25 - 0
wms.api/wms.api.csproj

@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <GenerateDocumentationFile>True</GenerateDocumentationFile>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Autofac.Extras.Quartz" Version="8.2.0" />
+    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
+    <PackageReference Include="Quartz" Version="3.6.2" />
+    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\wms.dto\wms.dto.csproj" />
+    <ProjectReference Include="..\wms.package\wms.package.csproj" />
+    <ProjectReference Include="..\wms.service\wms.service.csproj" />
+    <ProjectReference Include="..\wms.util\wms.util.csproj" />
+  </ItemGroup>
+
+</Project>

+ 11 - 0
wms.dataservice/DataService/CPDataService.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using wms.dataservice.IDataSetvice;
+
+namespace wms.dataservice.DataService
+{
+    public class CPDataService: ICPDataService
+    {
+    }
+}

+ 12 - 0
wms.dataservice/DataService/FJDataService.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using wms.dataservice.IDataSetvice;
+
+namespace wms.dataservice.DataService
+{
+    public class FJDataService: IFJDataService
+    {
+
+    }
+}

+ 119 - 0
wms.dataservice/DataService/HJDataService.cs

@@ -0,0 +1,119 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using wms.dataservice.IDataSetvice;
+using wms.dto;
+using wms.dto.request;
+using wms.dto.request.hj.dto;
+using wms.sqlsugar;
+using wms.sqlsugar.model.hj;
+
+namespace wms.dataservice.DataService
+{
+    public class HJDataService: IHJDataService
+    {
+        Repository<hjBaseWareLocation> _baseWareLocationrepository => new Repository<hjBaseWareLocation>();
+        Repository<hjBillDocument> _billDocument => new Repository<hjBillDocument>();
+
+        /// <summary>
+        /// 二升位有出库任务的一升位有货(无任务)货位
+        /// </summary>
+        /// <param name="reqEntity"></param>
+        /// <returns></returns>
+        public List<hjBaseWareLocation> GetLocationDept1WithDept2Stock(ApplyStockOutRequest reqEntity)
+        {
+            //var list = _baseWareLocationrepository.Context.Queryable<hjBaseWareLocation, hjBaseWareLocation, hjBaseEquipment>((location1, location2, equipment) => new object[] {
+            //     JoinType.Inner,location1.ShelfCode == location2.ShelfCode && location1.LogicCol == location2.LogicCol && location1.LogicLayer == location2.LogicLayer && location1.ZoneId == location2.ZoneId,
+            //     JoinType.Inner,house.Id  == equipment.WarehouseId && location1.Tunnel == equipment.Tunnel && equipment.EquipType == BaseDictionaryConst.EquipType_PlierCode
+            //     })
+            //   .Where((location1, zone, house, location2, equipment) => location1.Status == 1 && location1.IsDelete == 0 && location2.Status == 1 && location2.IsDelete == 0 && zone.IsDelete == 0 && zone.Status == 1 && house.IsDelete == 0 && house.Status == 1)
+            //   .Where((location1, zone, house, location2, equipment) => location1.LocationType == DictionaryConst.LocationTypeStorageCode && location1.LocationState == DictionaryConst.LocationStateStockCode && (string.IsNullOrEmpty(location1.LocationLock) || location1.LocationLock == DictionaryConst.LocationLockNoneCode))
+            //   .Where((location1, zone, house, location2, equipment) => location2.LocationType == DictionaryConst.LocationTypeStorageCode && location2.LocationState == DictionaryConst.LocationStateStockCode && location2.LocationLock == DictionaryConst.LocationLockStockOutCode)
+            //   .WhereIF(!string.IsNullOrEmpty(reqEntity.LocationType), (location1, zone, house, location2, equipment) => reqEntity.LocationType == location1.LocationType)
+            //   .WhereIF(!string.IsNullOrEmpty(reqEntity.Tunnel), (location1, zone, house, location2, equipment) => location1.Tunnel == reqEntity.Tunnel)
+            //   .WhereIF(!string.IsNullOrEmpty(reqEntity.Size), (location1, zone, house, location2, equipment) => int.Parse(location1.Size) >= int.Parse(reqEntity.Size))
+            //   .WhereIF(reqEntity.ZoneId > 0, (location1, zone, house, location2, equipment) => zone.Id == reqEntity.ZoneId)
+            //   .WhereIF(reqEntity.WarehouseId > 0, (location1, zone, house, location2, equipment) => zone.WarehouseId == reqEntity.WarehouseId)
+            //   .WhereIF(reqEntity.LocationId > 0, (location1, zone, house, location2, equipment) => location1.Id == reqEntity.LocationId)
+            //   .WhereIF(!string.IsNullOrEmpty(reqEntity.ShelfCode), (location1, zone, house, location2, equipment) => location1.ShelfCode == reqEntity.ShelfCode)
+            //   .WhereIF(reqEntity.IsExceptErrorPlier, (location1, zone, house, location2, equipment) => equipment.EquipState != BaseDictionaryConst.PlierRuningState_ErrorCode)
+            //.Select((location1, zone, house, location2, equipment) => location1);
+            // return list.ToList();
+            return null;
+        }
+        public (List<DocumentsResponse>, int) GetPageDocumentsList(DocumentsRequest request)
+        {
+            int count = 0;
+            var list = _billDocument.Context.Queryable<BillDocsinfo, BaseWarehouse>((document, house) => new object[]
+            {
+                JoinType.Left, document.WarehouseId == house.Id
+            })
+            .WhereIF(!string.IsNullOrEmpty(request.DocsNo), (document, house) => document.DocsNo.Contains(request.DocsNo))
+            .WhereIF(!string.IsNullOrEmpty(request.ReqNo), (document, house) => document.ReqNo.Contains(request.ReqNo))
+            .WhereIF(!string.IsNullOrEmpty(request.StateCode), (document, house) => document.StateNum == int.Parse(request.StateCode))
+            .WhereIF(!string.IsNullOrEmpty(request.TypeCode), (document, house) => document.TypeNum == int.Parse(request.TypeCode))
+            .Select((document, house) => new DocumentsResponse()
+            {
+                Id = document.Id,
+                WarehouseCode = house.Code,
+                DocNo = document.DocsNo,
+                ReqNo = document.ReqNo,
+                TypeCode = document.TypeNum.ToString(),
+                StateCode = document.StateNum.ToString(),
+                DownQty = document.DownQty,
+                //DownErrReason = document.DownErrReason,
+                //Remark = document.Remark,
+                AddWho = document.AddWho,
+                EditWho = document.EditWho,
+                AddTime = document.AddTime,
+                EditTime = document.EditTime
+            })
+            .ToPageList(request.PageIndex, request.PageSize, ref count);
+            //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
+            return (list.ToList(), count);
+        }
+        public List<string> GetStockByEquip(string code)
+        {
+            var list = _baseWareLocationrepository.Context.Queryable<hjBaseWareLocation, hjBillContainer>((location, stock) => new object[]
+            {
+                JoinType.Inner, stock.ContGrpId == location.ContGrpID,
+            })
+            .Where((location, stock) => stock.ExecState == InvState.InvEcecState_BuildUp.GetHashCode())
+            .WhereIF(!string.IsNullOrEmpty(code), (location, stock) => location.Code.Contains(code))
+            .Select((location, stock) => stock.HWBarCode).ToList();
+            return list;
+        }
+        public (List<DocumentsdetailList>, int) GetDocumentDetailListByDocsNo(DocumentsRequest request)
+        {
+            int count = 0;
+            var list = _billDocument.Context.Queryable<hjBillDocument, hjBillBarcode, hjBaseMater, hjBillContainer, hjBaseWareLocation>((document, barcode, mater, container, location) => new object[]
+            {
+                JoinType.Inner, document.DocNo == barcode.InDocsNo,
+                JoinType.Inner, barcode.MatId == mater.Id,
+                JoinType.Inner, barcode.RFIDBarCode == container.RFIDBarCode,
+                JoinType.Inner, container.ContGrpId == location.ContGrpID
+            })
+            .Where((document, barcode, mater, container, location) => container.ExecState == InvState.InvEcecState_In.GetHashCode() && location.LocationState == LocationState.LocationState_Full.GetHashCode()
+             )
+            .WhereIF(!string.IsNullOrEmpty(request.DocsNo), (document, barcode, mater, container, location) => document.DocNo.Contains(request.DocsNo))
+            .WhereIF(!string.IsNullOrEmpty(request.Rfid), (document, barcode, mater, container, location) => container.RFIDBarCode.Contains(request.Rfid))
+            .WhereIF(!string.IsNullOrEmpty(request.location), (document, barcode, mater, container, location) => location.Code.Contains(request.location))
+            .Select((document, barcode, mater, container, location) => new DocumentsdetailList()
+            {
+                WarehouseCode = location.WareCode,
+                MatCode = mater.Code,
+                MatName = mater.Name,
+                Location = location.Code,
+                RFIDBarCode = barcode.RFIDBarCode,
+                HWSpec = barcode.HWSpec,
+                IsFast = barcode.IsFast,
+                Grade = barcode.Grade
+            })
+            .ToPageList(request.PageIndex, request.PageSize, ref count);
+            //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
+            return (list.ToList(), count);
+        }
+    }
+}

+ 99 - 0
wms.dataservice/DataService/PTDataService.cs

@@ -0,0 +1,99 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using wms.dataservice.IDataSetvice;
+using wms.sqlsugar.model.pt;
+using wms.sqlsugar;
+using SqlSugar;
+using wms.dto.request.pt.dto;
+using wms.dto.response.pt.dto;
+using wms.dto;
+using System.Linq;
+
+namespace wms.dataservice.DataService
+{
+    public class PTDataService: IPTDataService
+    {
+        Repository<ptBaseWareLocation> _baseWareLocationrepository => new Repository<ptBaseWareLocation>();
+        Repository<ptBillDocsinfo> _billDocument => new Repository<ptBillDocsinfo>();
+
+        public List<string> GetStockByEquip(string code)
+        {
+            var list = _baseWareLocationrepository.Context.Queryable<ptBaseWareLocation, ptBillInvnow>((location, stock) => new object[]
+            {
+                JoinType.Inner, stock.ContGrpId == location.ContGrpId,
+            })
+            .Where((location, stock) => stock.InvStateCode == InvState.InvEcecState_BuildUp.ToString())
+            .WhereIF(!string.IsNullOrEmpty(code), (location, stock) => location.Code.Contains(code))
+            .Select((location, stock) => stock.HWBarCode).ToList();
+            return list;
+        }
+        public (List<PtDocumentsResponse>, int) GetPageDocumentsList(PtDocumentsRequest request)
+        {
+            int count = 0;
+            var list = _billDocument.Context.Queryable<ptBillDocsinfo, ptBaseWarehouse>((document, house) => new object[]
+            {
+                JoinType.Left, document.WarehouseId == house.Id
+            })
+            .WhereIF(!string.IsNullOrEmpty(request.DocsNo), (document, house) => document.DocsNo.Contains(request.DocsNo))
+            .WhereIF(!string.IsNullOrEmpty(request.ReqNo), (document, house) => document.ReqNo.Contains(request.ReqNo))
+            .WhereIF(!string.IsNullOrEmpty(request.StateCode), (document, house) => document.StateNum == int.Parse(request.StateCode))
+            .WhereIF(!string.IsNullOrEmpty(request.TypeCode), (document, house) => document.Type == request.TypeCode)
+            .Select((document, house) => new PtDocumentsResponse()
+            {
+                Id = document.Id,
+                WarehouseCode = house.Code,
+                DocNo = document.DocsNo,
+                ReqNo = document.ReqNo,
+                TypeCode = document.Type.ToString(),
+                StateCode = document.StateNum.ToString(),
+                DownQty = document.DownQty,
+                //DownErrReason = document.DownErrReason,
+                //Remark = document.Remark,
+                AddWho = document.AddWho,
+                EditWho = document.EditWho,
+                AddTime = document.AddTime,
+                EditTime = document.EditTime
+            })
+            .ToPageList(request.PageIndex, request.PageSize, ref count);
+            //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
+            return (list.ToList(), count);
+        }
+        public (List<PtDocumentsdetailList>, int) GetDocumentDetailListByDocsNo(PtDocumentsRequest request)
+        {
+            int count = 0;
+            var list = _billDocument.Context.Queryable<ptBillDocument, ptBillBarcode, ptBaseMater, ptBillInvnow, ptBaseWareLocation>((document, barcode, mater, container, location) => new object[]
+            {
+                JoinType.Inner, document.DocNo == barcode.InDocsNo,
+                JoinType.Inner, barcode.MatId == mater.Id,
+                JoinType.Inner, barcode.RFIDBarCode == container.RFIDBarCode,
+                JoinType.Inner, container.ContGrpId == location.ContGrpId
+            })
+            .Where((document, barcode, mater, container, location) => container.InvStateCode == InvState.InvEcecState_In.ToString() && location.StateNum == LocationState.LocationState_Full.GetHashCode()
+            )
+            .WhereIF(!string.IsNullOrEmpty(request.DocsNo), (document, barcode, mater, container, location) => document.DocNo.Contains(request.DocsNo))
+            .WhereIF(!string.IsNullOrEmpty(request.Rfid), (document, barcode, mater, container, location) => container.RFIDBarCode.Contains(request.Rfid))
+            .WhereIF(!string.IsNullOrEmpty(request.location), (document, barcode, mater, container, location) => location.Code.Contains(request.location))
+            .Select((document, barcode, mater, container, location) => new PtDocumentsdetailList()
+            {
+                WarehouseCode = location.WarehouseCode,
+                MatCode = mater.Code,
+                MatName = mater.Name,
+                Location = location.Code,
+                RFIDBarCode = barcode.RFIDBarCode,
+                RodBarCode = container.RodBarCode,
+                IsFast = barcode.IsFast,
+                InvBarCode = container.InvBarCode,
+                BoilerNo = container.BoilerNo,
+                PackNo = container.PackNo,
+                ProductTime = barcode.ProductTime,
+                CaQty = barcode.CaQty,
+                State = container.ExecStateCode,
+                Qty = barcode.TotalWtQty
+            })
+            .ToPageList(request.PageIndex, request.PageSize, ref count);
+            //list = list.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize).ToList();
+            return (list.ToList(), count);
+        }
+    }
+}

+ 11 - 0
wms.dataservice/DataService/SXDataService.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using wms.dataservice.IDataSetvice;
+
+namespace wms.dataservice.DataService
+{
+    public class SXDataService: ISXDataService
+    {
+    }
+}

+ 10 - 0
wms.dataservice/IDataSetvice/ICPDataService.cs

@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dataservice.IDataSetvice
+{
+    public interface ICPDataService
+    {
+    }
+}

+ 11 - 0
wms.dataservice/IDataSetvice/IFJDataService.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dataservice.IDataSetvice
+{
+    public interface IFJDataService
+    {
+
+    }
+}

+ 22 - 0
wms.dataservice/IDataSetvice/IHJDataService.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using wms.dto.request;
+using wms.dto.request.hj.dto;
+using wms.sqlsugar.model.hj;
+
+namespace wms.dataservice.IDataSetvice
+{
+    public interface IHJDataService
+    {
+        public List<hjBaseWareLocation> GetLocationDept1WithDept2Stock(ApplyStockOutRequest reqEntity);
+        /// <summary>
+        /// 获取单据集合
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        (List<DocumentsResponse>, int) GetPageDocumentsList(DocumentsRequest request);
+        List<string> GetStockByEquip(string code);
+        (List<DocumentsdetailList>, int) GetDocumentDetailListByDocsNo(DocumentsRequest request);
+    }
+}

+ 15 - 0
wms.dataservice/IDataSetvice/IPTDataService.cs

@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using wms.dto.request.pt.dto;
+using wms.dto.response.pt.dto;
+
+namespace wms.dataservice.IDataSetvice
+{
+    public interface IPTDataService
+    {
+        List<string> GetStockByEquip(string code);
+        (List<PtDocumentsResponse>, int) GetPageDocumentsList(PtDocumentsRequest request);
+        (List<PtDocumentsdetailList>, int) GetDocumentDetailListByDocsNo(PtDocumentsRequest request);
+    }
+}

+ 10 - 0
wms.dataservice/IDataSetvice/ISXDataService.cs

@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dataservice.IDataSetvice
+{
+    public interface ISXDataService
+    {
+    }
+}

+ 14 - 0
wms.dataservice/wms.dataservice.csproj

@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>netstandard2.1</TargetFramework>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\wms.dto\wms.dto.csproj" />
+    <ProjectReference Include="..\wms.package\wms.package.csproj" />
+    <ProjectReference Include="..\wms.sqlsugar\wms.sqlsugar.csproj" />
+  </ItemGroup>
+
+</Project>

+ 11 - 0
wms.dto/attribute/SwaggerIgnoreAttribute.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.attribute
+{
+    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
+    public class SwaggerIgnoreAttribute : Attribute
+    {
+    }
+}

+ 64 - 0
wms.dto/const/Const.cs

@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto
+{
+    public class Const
+    {
+        /// <summary>
+        /// MES基础数据数据同步增量类型-物料
+        /// </summary>
+        public const string MESMaterialInitIncrement = "MESMaterialInitIncrement";
+        /// <summary>
+        /// 任务组名
+        /// </summary>
+        public static readonly string JobGroupName = "DefaultGroup";
+        /// <summary>
+        /// 触发器组名
+        /// </summary>
+        public static readonly string TiggerGroupName = "DefaultGroupTrigger";
+
+
+        /// <summary>
+        /// 合金库接驳口类型
+        /// </summary>
+        public const string HJLocPortType = "HJLocPortType";
+        public const int Zero = 0;
+        public const int One = 1;
+        public const int MinOne = -1;
+        /// <summary>
+        /// 合金仓库
+        /// </summary>
+        public const string HjWareHouse = "";
+        /// <summary>
+        /// 盘条仓库
+        /// </summary>
+        public const string PtWareHouse = "pthouse";
+        /// <summary>
+        /// 成品仓库
+        /// </summary>
+        public const string CpWareHouse = "cphouse";
+        public const string SxWareHouse = "sxhouse";
+        /// <summary>
+        /// 二楼出库站台设备号,手动出库使用,用于区分一、二楼任务
+        /// </summary>
+        public static readonly string[] FloorEquip = { "1022", "1024", "1026" };
+        /// <summary>
+        /// 生产叫料区6个缓存架
+        /// </summary>
+        public const string Type = "Pt_6_Production";
+        /// <summary>
+        /// 成品库请求生成入库任务设备常量
+        /// </summary>
+        public static readonly string[] CpTaskInEquip = { "1011", "1012" };
+        /// <summary>
+        /// 成品人工出库口
+        /// </summary>
+        public static readonly string[] SouthOutEquip = { "1", "2" };
+        /// <summary>
+        /// 时效扫码器分楼层
+        /// </summary>
+        public static readonly string[] SxFloorEquip = { "2134", "2258", "2419" };
+    }
+}

+ 1162 - 0
wms.dto/const/EnumClass.cs

@@ -0,0 +1,1162 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Text;
+
+namespace wms.dto
+{
+    public class EnumClass
+    { 
+
+    
+    }
+    /// <summary>
+    /// 货位类型
+    /// </summary>
+    public enum LocationType
+    {
+        /// <summary>
+        /// 立库货位
+        /// </summary>
+        LocationType_StorageLocation = 1,
+        /// <summary>
+        /// 平库货位
+        /// </summary>
+        LocationType_GroudLocation = 2,
+        /// <summary>
+        /// 虚拟货位
+        /// </summary>
+        LocationType_VirtualLocation1 = 3,
+    }
+    /// <summary>
+    /// 货位是否启用
+    /// </summary>
+    public enum LocationStop
+    {
+        /// <summary>
+        /// 启用
+        /// </summary>
+        LocationInvoke = 0,
+        /// <summary>
+        /// 停用
+        /// </summary>
+        LocationStopped = 1
+    }
+    /// <summary>
+    /// 货位状态
+    /// </summary>
+    public enum LocationState
+    {
+        /// <summary>
+        /// 货位空
+        /// </summary>
+        LocationState_Empty = 1,
+        /// <summary>
+        /// 货位有货
+        /// </summary>
+        LocationState_Full = 2,
+        /// <summary>
+        /// 入库锁
+        /// </summary>
+        LocationState_StockIn = 3,
+        /// <summary>
+        /// 出库锁
+        /// </summary>
+        LocationState_StockOut = 4,
+        /// <summary>
+        /// 移库锁
+        /// </summary>
+        LocationState_StockMove = 5,
+    }
+
+
+    public enum ResponseStatusCodeEnum
+    {
+        /// <summary>
+        /// 成功
+        /// </summary>
+        [Description("成功")]
+        Sucess = 200,
+
+        /// <summary>
+        /// 已存在
+        /// </summary>
+        [Description("已存在")]
+        Exist = 201,
+
+        /// <summary>
+        /// 执行成功但未取得任何数据
+        /// </summary>
+        [Description("执行成功但未取得任何数据")]
+        NoResult = 202,
+
+        /// <summary>
+        /// 参数错误
+        /// </summary>
+        [Description("参数错误")]
+        ErrParam = 203,
+        /// <summary>
+        /// 语法异常
+        /// </summary>
+        [Description("语法异常")]
+        InnerServerErr = 204,
+
+        /// <summary>
+        /// 参数不可为空
+        /// </summary>
+        [Description("参数不可为空")]
+        ErrParamNotNull = 205,
+
+        /// <summary>
+        /// 失败
+        /// </summary>
+        [Description("失败")]
+        Fail = 206,
+        /// <summary>
+        /// 账号密码错误或账号不存在
+        /// </summary>
+        [Description("账号密码错误或账号不存在")]
+        AccountError = 1001,
+
+        /// <summary>
+        /// 数据保存失败
+        /// </summary>
+        [Description("数据保存失败")]
+        DataSaveErr = 1002,
+
+        /// <summary>
+        /// 没有传过账凭证号
+        /// </summary>
+        [Description("没有传过账凭证号")]
+        NotReqId = 1003,
+
+
+        /// <summary>
+        /// 仓库编码不存在
+        /// </summary>
+        [Description("仓库编码不存在")]
+        WarehouseCodeNotExist = 2001,
+        /// <summary>
+        /// 容器码不能为空
+        /// </summary>
+        [Description("容器码不能为空")]
+        ContainerCodeNotEmpty = 2002,
+        /// <summary>
+        /// 该托盘号已在库中,请检查托盘号是否贴重复
+        /// </summary>
+        [Description("该托盘号已在库中,请检查托盘号是否贴重复")]
+        BarcodeContainerRepeat = 2003,
+        /// <summary>
+        /// 物料条码重复组盘
+        /// </summary>
+        [Description("物料条码重复组盘")]
+        GroupStockDetailMaterialBarCodeExist = 2004,
+        /// <summary>
+        /// 物料编码信息不存在
+        /// </summary>
+        [Description("物料编码信息不存在")]
+        MaterInfoNotExist = 2005,
+        /// <summary>
+        /// 不存在该任务
+        /// </summary>
+        [Description("不存在该任务")]
+        WcsTaskNotExist = 2006,
+        /// <summary>
+        /// 组盘信息不存在
+        /// </summary>
+        [Description("组盘信息不存在")]
+        StockNotExist = 2007,
+        /// <summary>
+        /// 没有可用库位
+        /// </summary>
+        [Description("没有可用库位")]
+        NotEnoughLocation = 2008,
+        /// <summary>
+        /// 库区编码不存在
+        /// </summary>
+        [Description("库区编码不存在")]
+        WareZoneCodeNotExist = 2009,
+        /// <summary>
+        /// 货位编码不存在
+        /// </summary>
+        [Description("货位编码不存在")]
+        WareLocationCodeNotExist = 2010,
+        /// <summary>
+        /// 物料编码不存在
+        /// </summary>
+        [Description("物料编码不存在")]
+        BaseMaterCodeNotExist = 2011,
+        /// <summary>
+        /// 单位编码不存在
+        /// </summary>
+        [Description("单位编码不存在")]
+        BaseUnitCodeNotExist = 2012,
+        /// <summary>
+        /// 条码不存在
+        /// </summary>
+        [Description("条码不存在")]
+        BaseBarcodeNotExist = 2013,
+        /// <summary>
+        /// 明细数据必须传参
+        /// </summary>
+        [Description("明细数据必须传参")]
+        DocDetailNotExist = 2014,
+     
+        /// <summary>
+        /// 当前组盘状态不是已组盘,不允许取消
+        /// </summary>
+        [Description("当前组盘状态不是已组盘,不允许取消")]
+        StockStateNotBuildUp = 2015,
+        /// <summary>
+        /// 当前任务是已完成或已取消状态
+        /// </summary>
+        [Description("当前任务是已完成或已取消状态")]
+        WcsTaskStateIsComplete = 2016,
+        /// <summary>
+        /// 组盘状态是已出库或已入库
+        /// </summary>
+        [Description("组盘状态是已出库或已入库")]
+        StockStateFail = 2017,
+        /// <summary>
+        /// 当前入库任务还未分配货位,不允许完成
+        /// </summary>
+        [Description("当前入库任务还未分配货位,不允许完成")]
+        InTaskNotLocation = 2018,
+        /// <summary>
+        /// 当前任务不是新建状态,只能取消新建状态的任务
+        /// </summary>
+        [Description("当前任务不是新建状态,只能取消新建状态的任务")]
+        WcsTaskStateNotCreate = 2019,
+        /// <summary>
+        /// 单据不存在
+        /// </summary>
+        [Description("单据不存在")]
+        DocNoCodeNotExist = 2019,
+        /// <summary>
+        /// 单据状态不是新增或执行,不允许结单
+        /// </summary>
+        [Description("单据状态不是新增或执行,不允许结单")]
+        DocumentStateNotFinish = 2020,
+        /// <summary>
+        /// 单据存在新建或执行中的任务,不允许结单
+        /// </summary>
+        [Description("单据存在新建或执行中的任务,不允许结单")]
+        IsTaskNotFinish = 2021,
+        /// <summary>
+        /// 存在进行中任务,不允许解绑
+        /// </summary>
+        [Description("存在进行中任务,不允许解绑")]
+        IsTaskNotUnbounding = 2022,
+        /// <summary>
+        /// 没有当前设备信息,请进行维护
+        /// </summary>
+        [Description("没有当前设备信息,请进行维护")]
+        EquipInfoNotExist = 2023,
+        /// <summary>
+        /// 存在当前任务
+        /// </summary>
+        [Description("存在当前任务")]
+        WcsTaskExist = 2024,
+        /// <summary>
+        /// 组盘状态不对,请检查当前的组盘状态
+        /// </summary>
+        [Description("组盘状态不对,请检查当前的组盘状态")]
+        RFIDStockStateFail = 2025,
+
+        /// <summary>
+        /// 该接口只允许出库任务调用
+        /// </summary>
+        [Description("该接口只允许出库任务调用")]
+        OnlyStockOutAvil = 2026,
+        /// <summary>
+        /// 当前单据状态不支持修改
+        /// </summary>
+        [Description("当前状态不支持修改")]
+        StateNotUpdate = 2027,
+        /// <summary>
+        /// 库存不足
+        /// </summary>
+        [Description("库存不足")]
+        NotEnoughStock = 2028,
+        /// <summary>
+        /// 没有传巷道号
+        /// </summary>
+        [Description("没有传巷道号")]
+        NotTunnelNum = 2029,
+        /// <summary>
+        /// 不存在装箱规则数据
+        /// </summary>
+        [Description("不存在装箱规则数据")]
+        NotBoxRule = 2030,
+    }
+    /// <summary>
+    /// 单据类型
+    /// </summary>
+    public enum DocType
+    {
+        /// <summary>
+        /// 合金满轮入库
+        /// </summary>
+        [Description("合金镀铜满轮入库单")]
+        DocType_HJ_CopperProductStockIn = 1,
+        /// <summary>
+        /// 湿拉产线领料
+        /// </summary>
+        [Description("湿拉产线领料")]
+        DocType_HJ_WetLinePickMaterApply= 2,
+        /// <summary>
+        /// 湿拉产线退料
+        /// </summary>
+        [Description("湿拉产线退料单")]
+        DocType_HJ_WetLineBack = 3,
+        /// <summary>
+        /// 湿拉产线余料
+        /// </summary>
+        [Description("湿拉产线余料单")]
+        DocType_HJ_WetLineLeft = 4,
+        /// <summary>
+        /// 合金库库存改判
+        /// </summary>
+        [Description("合金库库存改判")]
+        DocType_HJ_WetLineStockChange = 5,
+        /// <summary>
+        /// 特殊出库领料
+        /// </summary>
+        [Description("特殊出库领料")]
+        DocType_HJ_SpecialStockOut = 6,
+
+        /// <summary>
+        /// 湿拉入库单
+        /// </summary>
+        [Description("湿拉入库单")]
+        DocType_FJ_WetStockIn = 7,
+        /// <summary>
+        /// 合金空轮初始化入库单
+        /// </summary>
+        [Description("合金空轮初始化入库单")]
+        DocType_HJ_EmptyContStockIn = 8,
+
+
+        /// <summary>
+        /// 帘线领料单
+        /// </summary>
+        [Description("帘线领料单")]
+        DocType_FJ_CurtainProductionStockOut = 11,
+        /// <summary>
+        /// 帘线工序工单
+        /// </summary>
+        [Description("帘线工序工单")]
+        DocType_FJ_CurtainProduction = 12,
+
+    }
+    /// <summary>
+    /// 盘条单据类型
+    /// </summary>
+    public enum PtDocType
+    {
+        /// <summary>
+        /// 采购到货单
+        /// </summary>
+        [Description("采购到货单")]
+        Purchase = 1,
+        /// <summary>
+        /// 采购退货单
+        /// </summary>
+        [Description("采购退货单")]
+        PurReturn = 2,
+        /// <summary>
+        /// 到货重挂清单
+        /// </summary>
+        [Description("到货重挂清单")]
+        PurError = 3,
+        /// <summary>
+        /// 生产领料单
+        /// </summary>
+        [Description("生产领料单")]
+        DocType_PT_ProductionStockOut = 4,
+        /// <summary>
+        /// 生产退料入库单
+        /// </summary>
+        [Description("生产退料入库单")]
+        DocType_PT_ProductionBackStockIn = 5,
+        /// <summary>
+        /// 库存改判单
+        /// </summary>
+        [Description("库存改判单")]
+        DocType_PT_StateTrans = 6,
+    }
+    /// <summary>
+    /// 单据状态
+    /// </summary>
+    public enum DocState
+    {
+        /// <summary>
+        /// 新增
+        /// </summary>
+        [Description("新增")]
+        DocState_Create = 1,
+        /// <summary>
+        /// 执行中
+        /// </summary>
+        [Description("执行中")]
+        DocState_Execute = 2,
+        /// <summary>
+        /// 完成
+        /// </summary>
+        [Description("完成")]
+        DocState_Complete = 3,
+        /// <summary>
+        /// 停止
+        /// </summary>
+        [Description("停止")]
+        DocState_Stop = 4,
+    }
+    /// <summary>
+    /// 容器类型
+    /// </summary>
+    public enum ContainerType
+    {
+        /// <summary>
+        /// RFID
+        /// </summary>
+        [Description("RFID")]
+        ContainerType_RFID = 1,
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        [Description("Spool")]
+        ContainerType_Spool = 2,
+        /// <summary>
+        /// 托盘条码
+        /// </summary>
+        [Description("Pallet")]
+        ContainerType_Pallet = 3,
+    }
+
+
+    /// <summary>
+    /// 任务类型
+    /// </summary>
+    public enum TaskType
+    {
+        /// <summary>
+        /// 组盘
+        /// </summary>
+        [Description("组盘")]
+        SetPlate = 0,
+
+        /// <summary>
+        /// 入库
+        /// </summary>
+        [Description("入库")]
+        EnterDepot = 1,
+
+        /// <summary>
+        /// 出库
+        /// </summary>
+        [Description("出库")]
+        OutDepot = 2,
+
+        /// <summary>
+        /// 移库
+        /// </summary>
+        [Description("移库")]
+        TransferDepot = 3,
+
+     
+        /// <summary>
+        /// 输送
+        /// </summary>
+        [Description("输送")]
+        Delivery = 5,
+        /// <summary>
+        ///  空轮初始化
+        /// </summary>
+        [Description("空轮初始化")]
+        EmptyInit = 6,
+    }
+
+    /// <summary>
+    /// 任务状态
+    /// </summary>
+    public enum TaskStatus
+    {
+        /// <summary>
+        /// 新建
+        /// </summary>
+        [Description("新建")]
+        NewBuild = 0,
+
+        /// <summary>
+        /// 待执行
+        /// </summary>
+        [Description("待执行")]
+        WaitingToExecute = 1,
+
+        /// <summary>
+        /// 帘线扫码
+        /// </summary>
+        [Description("帘线扫码")]
+        帘线扫码 = 9,
+
+        /// <summary>
+        /// 输送机执行中
+        /// </summary>
+        [Description("输送机执行中")]
+        ConveyorExecution = 10,
+
+        /// <summary>
+        /// 堆垛机执行
+        /// </summary>
+        [Description("堆垛机执行")]
+        StackerExecution = 20,
+
+        /// <summary>
+        /// 堆垛机完成
+        /// </summary>
+        [Description("堆垛机完成")]
+        StackerCompleted = 30,
+
+        /// <summary>
+        /// 出库扫码
+        /// </summary>
+        [Description("出库扫码")]
+        出库扫码 = 40,
+
+        /// <summary>
+        /// 码垛合流
+        /// </summary>
+        [Description("码垛合流")]
+        码垛合流 = 50,
+
+        /// <summary>
+        /// 码垛缓存扫码
+        /// </summary>
+        [Description("码垛缓存扫码")]
+        码垛缓存扫码 = 51,
+
+        /// <summary>
+        /// 码垛缓存放行
+        /// </summary>
+        [Description("码垛缓存放行")]
+        码垛缓存放行 = 52,
+
+        /// <summary>
+        /// 码垛抓取扫码
+        /// </summary>
+        [Description("码垛抓取扫码")]
+        码垛抓取扫码 = 53,
+        /// <summary>
+        /// 码垛抓取中
+        /// </summary>
+        [Description("码垛抓取中")]
+        码垛抓取中 = 54,
+        /// <summary>
+        /// 码垛抓取完成
+        /// </summary>
+        [Description("码垛抓取完成")]
+        码垛抓取完成 = 55,
+
+        /// <summary>
+        /// 已完成
+        /// </summary>
+        [Description("已完成")]
+        Finish = 99,
+
+        /// <summary>
+        /// 异常
+        /// </summary>
+        [Description("异常")]
+        Error = 100,
+        /// <summary>
+        /// 已取消
+        /// </summary>
+        [Description("已取消")]
+        Cancel = 106
+    }
+    ///// <summary>
+    ///// 任务类型
+    ///// </summary>
+    //public enum TaskType
+    //{
+    //    /// <summary>
+    //    /// 入库任务
+    //    /// </summary>
+    //    [Description("入库任务")]
+    //    TaskType_StockIn = 1,
+    //    /// <summary>
+    //    /// 出库任务
+    //    /// </summary>
+    //    [Description("出库任务")]
+    //    TaskType_StockOut = 2,
+    //    /// <summary>
+    //    /// 移库任务
+    //    /// </summary>
+    //    [Description("移库任务")]
+    //    TaskType_StockTrans = 3,
+    //    /// <summary>
+    //    /// 移动任务
+    //    /// </summary>
+    //    [Description("移动任务")]
+    //    TaskType_Move = 4,
+    //}
+    ///// <summary>
+    ///// 任务状态
+    ///// </summary>
+    //public enum TaskStateEnum
+    //{
+    //    /// <summary>
+    //    /// 新建
+    //    /// </summary>
+    //    [Description("新建")]
+    //    TaskState_Create = 1,
+    //    /// <summary>
+    //    /// 执行中
+    //    /// </summary>
+    //    [Description("执行中")]
+    //    TaskState_Execute = 2,
+    //    /// <summary>
+    //    /// 已完成
+    //    /// </summary>
+    //    [Description("已完成")]
+    //    TaskState_Complete = 3,
+    //    /// <summary>
+    //    /// 已取消
+    //    /// </summary>
+    //    [Description("已取消")]
+    //    TaskState_Cancel = 4,
+    //}
+
+    /// <summary>
+    /// 库存状态
+    /// </summary>
+    public enum InvState
+    {
+        /// <summary>
+        /// 已组盘
+        /// </summary>
+        [Description("已组盘")]
+        InvEcecState_BuildUp = 1,
+        ///// <summary>
+        ///// 入库中
+        ///// </summary>
+        //[Description("入库中")]
+        //InvEcecState_InGoing = 2,
+        /// <summary>
+        /// 已入库
+        /// </summary>
+        [Description("已入库")]
+        InvEcecState_In = 3,
+        /// <summary>
+        /// 出库中
+        /// </summary>
+        [Description("出库中")]
+        InvEcecState_OutGoing = 4,
+        /// <summary>
+        /// 已出库
+        /// </summary>
+        [Description("已出库")]
+        InvEcecState_Out = 5,
+    }
+    /// <summary>
+    ///  出库任务类型
+    /// </summary>
+    public enum OutTypeEnum
+    {
+        /// <summary>
+        ///  自动出库任务
+        /// </summary>
+        自动出库任务 = 0,
+
+        /// <summary>
+        ///  全自动手动出库任务
+        /// </summary>
+        全自动手动出库任务 = 1,
+
+        /// <summary>
+        ///  半自动手动出库任务
+        /// </summary>
+        半自动手动出库任务 = 2
+    }
+    /// <summary>
+    /// 库存锁定状态
+    /// </summary>
+    public enum InvLockState
+    {
+        /// <summary>
+        /// 正常
+        /// </summary>
+        [Description("正常")]
+        InvState_Normal,
+        /// <summary>
+        /// 锁定
+        /// </summary>
+        [Description("锁定")]
+        InvState_Lock,
+    }
+
+    /// <summary>
+    /// 任务业务类型
+    /// </summary>
+    public enum TaskBusType
+    {
+        /// <summary>
+        /// 默认
+        /// </summary>
+        [Description("默认")]
+        TaskBusType_HJ_Def = 0,
+        /// <summary>
+        /// 镀铜一楼取满
+        /// </summary>
+        [Description("镀铜一楼取满")]
+        TaskBusType_HJ_OneFloorLineStockIn = 1,
+        /// <summary>
+        /// 一楼立库出空轮
+        /// </summary>
+        [Description("一楼立库出空轮")]
+        TaskBusType_HJ_OneFloorEmptySpoolOut = 2,
+        /// <summary>
+        /// 镀铜线补空轮
+        /// </summary>
+        [Description("镀铜线补空轮")]
+        TaskBusType_HJ_OneFloorEmptySpoolToLine = 3,
+        /// <summary>
+        /// 手动出库
+        /// </summary>
+        [Description("手动出库")]
+        TaskBusType_HJ_ManualOut = 4,
+        /// <summary>
+        /// 二楼空轮初始化入库
+        /// </summary>
+        [Description("二楼空轮初始化入库")]
+        TaskBusType_HJ_EmptySpoolStockIn = 5,
+        /// <summary>
+        /// 二楼湿拉线退料回立库
+        /// </summary>
+        [Description("二楼湿拉线退料回立库")]
+        TaskBusType_HJ_WetBack = 6,
+        /// <summary>
+        /// 二楼湿拉线余料回立库
+        /// </summary>
+        [Description("二楼湿拉线余料回立库")]
+        TaskBusType_HJ_WetLeft = 7,
+        /// <summary>
+        /// 二楼湿拉空轮回立库
+        /// </summary>
+        [Description("二楼湿拉空轮回立库")]
+        TaskBusType_HJ_WetEmpty = 8,
+
+        /// <summary>
+        /// 二楼湿拉自动叫料出库
+        /// </summary>
+        [Description("二楼湿拉自动叫料出库")]
+        TaskBusType_HJ_TwoFloorStockOut = 9,
+
+        /// <summary>
+        /// 质检回库
+        /// </summary>
+        [Description("质检回库")]
+        TaskBusType_HJ_QualityStockIn = 10,
+        /// <summary>
+        /// 其他入库
+        /// </summary>
+        [Description("其他入库")]
+        TaskBusType_HJ_OtherStockIn = 11,
+        /// <summary>
+        /// 采购550工字轮入库
+        /// </summary>
+        [Description("采购550工字轮入库")]
+        TaskBusType_HJ_PurchaseSpoolStockIn = 11,
+        /// <summary>
+        /// 重挂入库
+        /// </summary>
+        [Description("重挂入库")]
+        TaskBusType_HJ_AnewStockIn = 12,
+        /// <summary>
+        /// 质检领料
+        /// </summary>
+        [Description("质检领料")]
+        TaskBusType_HJ_QualityOut = 13,
+        /// <summary>
+        /// 呆滞料出库
+        /// </summary>
+        [Description("呆滞料出库")]
+        TaskBusType_HJ_DullMaterOut = 14,
+        /// <summary>
+        /// 重挂出库
+        /// </summary>
+        [Description("重挂出库")]
+        TaskBusType_HJ_AnewOut = 15,
+        /// <summary>
+        /// PDA指定出库
+        /// </summary>
+        [Description("PDA指定出库")]
+        TaskBusType_HJ_PdaManualOut = 15,
+
+        /// <summary>
+        /// 一楼空轮初始化入库
+        /// </summary>
+        [Description("一楼空轮初始化入库")]
+        TaskBusType_HJ_OneFloorEmptySpoolStockIn = 16,
+
+        /// <summary>
+        /// 移库
+        /// </summary>
+        [Description("移库")]
+        TaskBusType_HJ_Move = 100,
+    }
+    public enum PtTaskBusType
+    {
+        /// <summary>
+        /// 质检回库
+        /// </summary>
+        [Description("质检回库")]
+        TaskBusType_PT_QualityStockIn = 1,
+        /// <summary>
+        /// 其他入库
+        /// </summary>
+        [Description("其他入库")]
+        TaskBusType_PT_OtherStockIn = 2,
+        /// <summary>
+        /// 采购入库单
+        /// </summary>
+        [Description("采购入库单")]
+        TaskBusType_PT_PurchaseStockIn = 3,
+        /// <summary>
+        /// 重挂入库
+        /// </summary>
+        [Description("重挂入库")]
+        TaskBusType_PT_AnewStockIn = 4,
+        /// <summary>
+        /// 生产领料
+        /// </summary>
+        [Description("生产领料")]
+        TaskBusType_PT_ProductionStockOut = 5,
+        /// <summary>
+        /// 生产退料
+        /// </summary>
+        [Description("生产退料")]
+        TaskBusType_PT_ProductionBackStockIn = 6,
+    }
+
+    /// <summary>
+    /// 时效库任务业务类型
+    /// </summary>
+    public enum SxTaskBusType
+    {
+        /// <summary>
+        /// 帘线工字轮入库
+        /// </summary>
+        [Description("帘线工字轮入库")]
+        TaskBusType_SX_LineStockIn = 1,
+        /// <summary>
+        /// 扭转回库
+        /// </summary>
+        [Description("扭转回库")]
+        TaskBusType_SX_TorCheckStockIn = 2,
+        /// <summary>
+        /// 扭转检测
+        /// </summary>
+        [Description("扭转检测")]
+        TaskBusType_SX_TorCheckStockOut = 3,
+        /// <summary>
+        /// 装箱码垛
+        /// </summary>
+        [Description("装箱码垛")]
+        TaskBusType_SX_StackStockOut = 4,
+        /// <summary>
+        /// 异常出库
+        /// </summary>
+        [Description("异常出库")]
+        TaskBusType_SX_ErrorStockOut = 5,
+        /// <summary>
+        /// 空托输送
+        /// </summary>
+        [Description("生产退料")]
+        TaskBusType_SX_ConterTrans = 6,
+    }
+    /// <summary>
+    /// 成品任务业务类型
+    /// </summary>
+    public enum CpTaskBusType
+    {
+        /// <summary>
+        /// 空托盘入库
+        /// </summary>
+        [Description("空托盘入库")]
+        TaskBusType_CP_TrayStockIn = 1,
+        /// <summary>
+        /// 成品入库
+        /// </summary>
+        [Description("成品入库")]
+        TaskBusType_CP_ProductStockIn = 2,
+        /// <summary>
+        /// 间隔板入库
+        /// </summary>
+        [Description("间隔板入库")]
+        TaskBusType_CP_SpacingBoardStockIn = 3,
+        /// <summary>
+        /// 空托盘出库
+        /// </summary>
+        [Description("空托盘出库")]
+        TaskBusType_CP_TrayStockOut = 4,
+        /// <summary>
+        /// 间隔板出库
+        /// </summary>
+        [Description("间隔板出库")]
+        TaskBusType_CP_SpacingBoardStockOut = 5,
+        /// <summary>
+        /// 移库
+        /// </summary>
+        [Description("移库")]
+        TaskBusType_CP_Move = 100,
+    }
+    public enum FackbeekType
+    {
+        /// <summary>
+        /// 合金一楼满轮入库反馈
+        /// </summary>
+        [Description("合金一楼满轮入库反馈")]
+        InterfaceType_HJ_1F_StockIn,
+        /// <summary>
+        /// 合金二楼退料入库反馈
+        /// </summary>
+        [Description("合金二楼退料入库反馈")]
+        InterfaceType_HJ_2F_BackStockIn,
+        /// <summary>
+        /// 合金二楼余料入库反馈
+        /// </summary>
+        [Description("合金二楼余料入库反馈")]
+        InterfaceType_HJ_2F_LeftStockIn,
+        /// <summary>
+        /// 改判反馈
+        /// </summary>
+        [Description("改判反馈")]
+        InterfaceType_HJ_StockChanage,
+    }
+
+    public enum PtFackbeekType
+    {
+        /// <summary>
+        /// 采购到货单入库反馈
+        /// </summary>
+        [Description("采购到货单入库反馈")]
+        InterfaceType_PT_PurchaseStockIn,
+        /// <summary>
+        /// 采购退货出库反馈
+        /// </summary>
+        [Description("采购退货出库反馈")]
+        InterfaceType_PT_PurchaseBack,
+        /// <summary>
+        /// 重挂反馈接口
+        /// </summary>
+        [Description("重挂反馈接口")]
+        InterfaceType_PT_AnewStockIn,
+        /// <summary>
+        /// 改判反馈
+        /// </summary>
+        [Description("改判反馈")]
+        StateTrans,
+        /// <summary>
+        /// 生产领料反馈
+        /// </summary>
+        [Description("生产领料反馈")]
+        PickMat,
+        /// <summary>
+        /// 退料反馈
+        /// </summary>
+        [Description("退料反馈")]
+        ReturnMat,
+    }
+    public enum fjFackbeekType
+    {
+        /// <summary>
+        /// 湿拉满轮入库反馈
+        /// </summary>
+        [Description("湿拉满轮入库反馈")]
+        InterfaceType_FJ_StockIn,
+
+        /// <summary>
+        /// 叫料信息出库反馈
+        /// </summary>
+        [Description("叫料信息出库反馈")]
+        InterfaceType_FJ_StockOut,
+
+        /// <summary>
+        /// 余料入库反馈
+        /// </summary>
+        [Description("余料入库反馈")]
+        InterfaceType_FJ_LeftStockIn,
+
+        /// <summary>
+        /// 异常料出库反馈
+        /// </summary>
+        [Description("异常料出库反馈")]
+        InterfaceType_FJ_ErrStockOut,
+
+        /// <summary>
+        /// B级品出库反馈
+        /// </summary>
+        [Description("B级品出库反馈")]
+        InterfaceType_FJ_BGradeStockOut,
+
+        /// <summary>
+        /// 库存改判反馈
+        /// </summary>
+        [Description("库存改判反馈")]
+        InterfaceType_FJ_StockChanage,
+
+        /// <summary>
+        /// 库存改判回库反馈
+        /// </summary>
+        [Description("库存改判回库反馈")]
+        InterfaceType_FJ_ChanageBack,
+    }
+
+    public enum SxFackbeekType
+    {
+        /// <summary>
+        /// 帘线工字轮入库反馈
+        /// </summary>
+        [Description("帘线工字轮入库反馈")]
+        InterfaceType_SX_CurtainStockIn,
+        /// <summary>
+        /// 出库装箱反馈
+        /// </summary>
+        [Description("出库装箱反馈")]
+        InterfaceType_SX_CurtainStockOut,
+        /// <summary>
+        /// 称重上传
+        /// </summary>
+        [Description("称重上传")]
+        InterfaceType_SX_WeightUp,
+        /// <summary>
+        /// 改判反馈
+        /// </summary>
+        [Description("改判反馈")]
+        InterfaceType_SX_StockChanage,
+        /// <summary>
+        /// 移库货位变更反馈
+        /// </summary>
+        [Description("移库货位变更反馈")]
+        InterfaceType_SX_CellMove,
+
+        /// <summary>
+        /// 异常出库反馈
+        /// </summary>
+        [Description("异常出库反馈")]
+        InterfaceType_SX_ErrorStockOut,
+    }
+    public enum InvInOutType
+    {
+        /// <summary>
+        /// 入库
+        /// </summary>
+        [Description("入库")]
+        In = 1,
+
+        /// <summary>
+        /// 出库
+        /// </summary>
+        [Description("出库")]
+        Out = 2,
+    }
+    public enum ContGrpType
+    {
+        /// <summary>
+        /// 物料盘
+        /// </summary>
+        [Description("入库")]
+        Material = 1,
+
+        /// <summary>
+        /// 空盘
+        /// </summary>
+        [Description("出库")]
+        EmptyCon = 2,
+    }
+    /// <summary>
+    /// 移库返回
+    /// </summary>
+    public enum WcsContractWcsMoveTaskEnum
+    {
+        /// <summary>
+        /// 失败
+        /// </summary>
+        [Description("失败")]
+        失败 = 0,
+        /// <summary>
+        /// 允许2升位执行
+        /// </summary>
+        [Description("允许2升位执行")]
+        允许2升位执行 = 1,
+        /// <summary>
+        /// 执行移库任务
+        /// </summary>
+        [Description("执行移库任务")]
+        执行移库任务 = 2,
+
+        /// <summary>
+        /// 一深位有出库任务
+        /// </summary>
+        [Description("一深位有出库任务")]
+        一深位有出库任务 = 3,
+    }
+
+    public enum CurtainBillState
+    {
+        /// <summary>
+        /// 初始化
+        /// </summary>
+        [Description("初始化")]
+        初始化 = 1,
+
+        /// <summary>
+        /// 已排产
+        /// </summary>
+        [Description("已排产")]
+        已排产 = 2,
+
+        /// <summary>
+        /// 生产中
+        /// </summary>
+        [Description("生产中")]
+        生产中 = 3,
+
+        /// <summary>
+        /// 生产结束
+        /// </summary>
+        [Description("生产结束")]
+        生产结束 = 4,
+
+        /// <summary>
+        /// 计划关闭
+        /// </summary>
+        [Description("计划关闭")]
+        计划关闭 = 5,
+    }
+
+    /// <summary>
+    ///  出入库类型
+    /// </summary>
+    public enum SXInvInOutType
+    {
+        /// <summary>
+        ///  默认
+        /// </summary>
+        [Description("默认")]
+        Default = 0,
+
+        /// <summary>
+        /// 入库
+        /// </summary>
+        [Description("入库")]
+        In = 1,
+
+        /// <summary>
+        /// 出库
+        /// </summary>
+        [Description("出库")]
+        Out = 2,
+    }
+}

+ 14 - 0
wms.dto/request/cp/BoxBuildStockTransRequest.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class BoxBuildStockTransRequest:BaseRequest
+    {
+        /// <summary>
+        /// 箱号
+        /// </summary>
+        public string BoxCode { get; set; }
+    }
+}

+ 26 - 0
wms.dto/request/cp/ComPushApiResInfoRequest.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class ComPushApiResInfoRequest:BaseRequest
+    {
+        /// <summary>
+        /// 接口编号
+        /// </summary>
+        public string ApiId { get; set; }
+        /// <summary>
+        /// 凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 处理结果编码
+        /// </summary>
+        public string ResCode { get; set; }
+        /// <summary>
+        /// 描述(失败原因)
+        /// </summary>
+        public string ResMsg { get; set; }
+    }
+}

+ 57 - 0
wms.dto/request/cp/CpStockChangeRequest.cs

@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class CpStockChangeRequest:BaseRequest
+    {
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 改判信息列表
+        /// </summary>
+        public List<CpStockChangeRequestItem> ListInfo { get; set; }
+    }
+    public class CpStockChangeRequestItem
+    {
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 改判状态(锁定/放行/快投/取消快投:Lock/Normal/Fast/UnFast)
+        /// </summary>
+        public string State { get; set; }
+        /// <summary>
+        /// 原因
+        /// </summary>
+        public string Reason { get; set; }
+        /// <summary>
+        /// 箱号
+        /// </summary>
+        public string BoxNo { get; set; }
+    }
+}

+ 18 - 0
wms.dto/request/cp/ErrorMaterialStockOutFeedBackRequest.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class ErrorMaterialStockOutFeedBackRequest
+    {
+        /// <summary>
+        /// 发货单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 箱号清单
+        /// </summary>
+        public List<string> BoxList { get; set; }
+    }
+}

+ 22 - 0
wms.dto/request/cp/ErrorMaterialStockOutRequest.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class ErrorMaterialStockOutRequest:BaseRequest
+    {
+        /// <summary>
+        /// 发货单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 箱号清单
+        /// </summary>
+        public List<string> BoxList { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+    }
+}

+ 26 - 0
wms.dto/request/cp/MoveStockLocationFeedBackRequest.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class MoveStockLocationFeedBackRequest
+    {
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 箱号
+        /// </summary>
+        public string BoxNo { get; set; }
+        /// <summary>
+        /// 起点货位
+        /// </summary>
+        public string StartLoc { get; set; }
+        /// <summary>
+        /// 目标货位
+        /// </summary>
+        public string EndLoc { get; set; }
+    }
+}

+ 18 - 0
wms.dto/request/cp/SalesDocTransFeedBackRequest.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class SalesDocTransFeedBackRequest
+    {
+        /// <summary>
+        /// 发货单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 箱号清单
+        /// </summary>
+        public List<string> BoxList { get; set; }
+    }
+}

+ 42 - 0
wms.dto/request/cp/SalesDocTransRequest.cs

@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class SalesDocTransRequest:BaseRequest 
+    {
+        /// <summary>
+        /// 发货单号/退货单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 客户编码
+        /// </summary>
+        public string CustCode { get; set; }
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public string CustName { get; set; }
+        /// <summary>
+        /// 发货日期/退货时间
+        /// </summary>
+        public DateTime Date { get; set; }
+        /// <summary>
+        /// 箱号清单
+        /// </summary>
+        public List<string> BoxList { get; set; }
+        /// <summary>
+        /// 凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 是否返工
+        /// </summary>
+        public bool IsReWork { get; set; }
+    }
+}

+ 34 - 0
wms.dto/request/cp/SalesLeftDocTransFeedBackRequest.cs

@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class SalesLeftDocTransFeedBackRequest
+    {
+        /// <summary>
+        /// 发货单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 箱号清单
+        /// </summary>
+        public List<string> BoxList { get; set; }
+        /// <summary>
+        /// 凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 仓库名称
+        /// </summary>
+        public string WareName { get; set; }
+        /// <summary>
+        /// 货位编码
+        /// </summary>
+        public string LocCode { get; set; }
+    }
+}

+ 10 - 0
wms.dto/request/cp/SpoolMaterialInfoTransRequest.cs

@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class SpoolMaterialInfoTransRequest
+    {
+    }
+}

+ 44 - 0
wms.dto/request/cp/StockChangeFeedBackRequest.cs

@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class StockChangeFeedBackRequest
+    {
+
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 单号
+        /// </summary>
+        public string BillCode { get; set; }
+
+        public List<StockChangeFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class StockChangeFeedBackRequestItem
+    {
+        /// <summary>
+        /// 箱号
+        /// </summary>
+        public string BoxNo { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 改判结果
+        /// </summary>
+        public string ResState { get; set; }
+        /// <summary>
+        /// 原因
+        /// </summary>
+        public string ResDesc { get; set; }
+    }
+}

+ 34 - 0
wms.dto/request/cp/StockOutRequest.cs

@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class StockOutRequest
+    {
+        /// <summary>
+        /// 单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 托盘类型
+        /// </summary>
+        public int TrayType { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 设备号
+        /// </summary>
+        public string Equip { get; set; }
+    }
+}

+ 42 - 0
wms.dto/request/cp/StockStateChangeRequest.cs

@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class StockStateChangeRequest:BaseRequest
+    {
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 改判信息列表
+        /// </summary>
+        public List<StockStateChangeRequestItem> ListInfo { get; set; }
+    }
+    public class StockStateChangeRequestItem
+    {
+
+        /// <summary>
+        /// 1放行/2冻结
+        /// </summary>
+        public string State { get; set; }
+        /// <summary>
+        /// 箱号
+        /// </summary>
+        public string BoxNo { get; set; }
+    }
+}

+ 11 - 0
wms.dto/request/cp/WcsMoveTaskRequest.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp
+{
+    public class WcsMoveTaskRequest
+    {
+        public int TaskNum { get; set; }
+    }
+}

+ 58 - 0
wms.dto/request/cp/dto/WcsRequest.cs

@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.cp.dto
+{
+    public class WcsRequest
+    {
+    }
+    /// <summary>
+    /// 分配货位
+    /// </summary>
+    public class CpApplyStockInLocRequest : BaseRequest
+    {
+        /// <summary>
+        /// WMS任务号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int TaskNum { get; set; }
+        /// <summary>
+        /// 巷道号
+        /// </summary>
+        public int TunnelNum { get; set; }
+        /// <summary>
+        /// 取货地点设备编号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string PickUpEquipmentNo { get; set; }
+    }
+    /// <summary>
+    /// 堆垛机出库放货完成
+    /// </summary>
+    public class CpSrmPickOutCompletedRequest
+    {
+        /// <summary>
+        /// WMS任务号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int TaskNum { get; set; }
+    }
+    public class CpApplyLocRequest
+    {
+        public long WarehuoseId { get; set; }
+        public int Size { get; set; }
+
+        public int TunnelNum { get; set; }
+        public long MaterialId { get; set; }
+        public string MaterialCode { get; set; }
+        public bool IsMove { get; set; } = false;
+    }
+    public class CpManualTaskRequest
+    {
+        public List<string> Location { get; set; }
+        public string EndPoint { get; set; }
+        public string? BusType { get; set; }
+    }
+}

+ 26 - 0
wms.dto/request/cp/dto/WebPdaRequest.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.cp.dto
+{
+    public class WebPdaRequest
+    {
+    }
+    public class SouthPdaRequest
+    {
+        public string BoxCode { get; set; }
+        public string ContGrpBarCode { get; set; }
+    }
+    public class TrayGroupOutRequest : BaseRequest
+    {
+        /// <summary>
+        /// 位置码
+        /// </summary>
+        public string Equip { get; set; }
+        /// <summary>
+        /// 托盘编码
+        /// </summary>
+        public string Code { get; set; }
+    }
+}

+ 18 - 0
wms.dto/request/fj/AllocationConveyorSortRequest.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class AllocationConveyorSortRequest
+    {
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string BarCode { get; set; }
+        /// <summary>
+        /// 扫码设备号
+        /// </summary>
+        public string EquNo { get; set; }
+    }
+}

+ 11 - 0
wms.dto/request/fj/AllocationWarehouseSortRequest.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class AllocationWarehouseSortRequest
+    {
+        public int TaskCount { get; set; }
+    }
+}

+ 28 - 0
wms.dto/request/fj/BGradeMaterialStockOutFeedBackRequest.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class BGradeMaterialStockOutFeedBackRequest
+    {
+
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+     
+        public List<BGradeMaterialStockOutFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class BGradeMaterialStockOutFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+    }
+}

+ 31 - 0
wms.dto/request/fj/BGradeMaterialStockOutRequest.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class BGradeMaterialStockOutRequest:BaseRequest
+    {
+        /// <summary>
+        /// 位置
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 单号
+        /// </summary>
+        public string BillCode { get; set; }
+    }
+   
+}

+ 37 - 0
wms.dto/request/fj/BomInfoTransRequest.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class BomInfoTransRequest:BaseRequest
+    {
+        /// <summary>
+        /// 总生产工单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 帘线物料编码
+        /// </summary>
+        public string ProMatCode { get; set; }
+        /// <summary>
+        /// BOM编码
+        /// </summary>
+        public string BomCode { get; set; }
+        /// <summary>
+        /// 湿拉物料信息列表
+        /// </summary>
+        public List<BomInfoTransRequestItem> MaterList { get; set; }
+    }
+    public class BomInfoTransRequestItem
+    {
+        /// <summary>
+        /// 湿拉物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 轮子个数
+        /// </summary>
+        public int Count { get; set; }
+    }
+}

+ 14 - 0
wms.dto/request/fj/CurtainOrderStartCheckRequest.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class CurtainOrderStartCheckRequest:BaseRequest
+    {
+        /// <summary>
+        /// 生产订单号
+        /// </summary>
+        public string BillCode { get; set; }
+    }
+}

+ 115 - 0
wms.dto/request/fj/CurtainProductionOrderRequest.cs

@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class CurtainProductionOrderRequest : BaseRequest
+    {
+        /// <summary>
+        /// 生产订单
+        /// </summary>
+        public string WorkOrder { get; set; }
+        /// <summary>
+        /// 帘线生产工序单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 产出物编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 投料信息编码
+        /// </summary>
+        public string FeedCode { get; set; }
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        public string StartTime { get; set; }
+        /// <summary>
+        /// 码垛总箱数
+        /// </summary>
+        public int BoxCount { get; set; }
+        /// <summary>
+        /// 机台号列表
+        /// </summary>
+        public List<string> WbList { get; set; }
+        /// <summary>
+        /// 帘线工字轮计划总数
+        /// </summary>
+        public int PlanQty { get; set; }
+        /// <summary>
+        /// 装箱规则(1:层配;2:SPC)
+        /// </summary>
+        public string PackRule { get; set; }
+        /// <summary>
+        /// 厂区编号
+        /// </summary>
+        public string FactoryNo { get; set; }
+        /// <summary>
+        /// 单据状态
+        /// </summary>
+        public string BillState { get; set; }
+        /// <summary>
+        /// 箱子信息列表
+        /// </summary>
+        public List<ListBoxInfoItem> ListBoxInfo { get; set; }
+        /// <summary>
+        /// sku编码
+        /// </summary>
+        public string? SkuCode { get; set; }
+
+
+        public List<ListPackagelnfoItem> ListPackagelnfo { get; set; }
+    }
+
+    public class ListBoxInfoItem
+    {
+        /// <summary>
+        /// 箱号
+        /// </summary>
+        public string? BoxNo { get; set; }
+
+        /// <summary>
+        /// 包装编码
+        /// </summary>
+        public string? PackCode { get; set; }
+
+        /// <summary>
+        /// 生产批号
+        /// <summary>
+        public string? Batch { get; set; }
+
+        /// <summary>
+        /// 满数量
+        /// </summary>
+        public int FullCount { get; set; }
+
+        /// <summary>
+        /// 空数量
+        /// </summary>
+        public int EmptyCount { get; set; }
+
+        /// <summary>
+        /// 是否允许焊点盘
+        /// </summary>
+        public string? IsSolder { get; set; }
+        /// <summary>
+        /// 绕向
+        /// </summary>
+        public string? Winding { get; set; }
+
+    }
+
+    public class ListPackagelnfoItem
+    {
+        public string MaterialCode { get; set; }
+        public string MaterialDesc { get; set; }
+        public decimal Quantity { get; set; }
+        public string PackagingCode { get; set; }
+        /// <summary>
+        /// 物料单重
+        /// </summary>
+        public decimal Weight { get; set; }
+    }
+}

+ 42 - 0
wms.dto/request/fj/CurtainProductionStockOutFeedBackRequest.cs

@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class CurtainProductionStockOutFeedBackRequest
+    {
+        /// <summary>
+        /// 帘线工单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 货位
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 仓库名称
+        /// </summary>
+        public string WareName { get; set; }
+        public List<CurtainProductionStockOutFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class CurtainProductionStockOutFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+    }
+}

+ 34 - 0
wms.dto/request/fj/CurtainProductionStockOutRequest.cs

@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class CurtainProductionStockOutRequest:BaseRequest
+    {
+        /// <summary>
+        /// 帘线工单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 机台编号
+        /// </summary>
+        public string WbCode { get; set; }
+        /// <summary>
+        /// 推荐消耗等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 快投标记
+        /// </summary>
+        public bool IsFast { get; set; }
+    }
+}

+ 39 - 0
wms.dto/request/fj/ErrorMaterialStockOutFeedBackRequest.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class ErrorMaterialStockOutFeedBackRequest
+    {
+      
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 货位
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 仓库名称
+        /// </summary>
+        public string WareName { get; set; }
+        public List<ErrorMaterialStockOutFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class ErrorMaterialStockOutFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+    }
+}

+ 37 - 0
wms.dto/request/fj/FjErrorMaterialStockOutRequest.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class FjErrorMaterialStockOutRequest:BaseRequest
+    {
+        /// <summary>
+        /// 出库货位
+        /// </summary>
+        public string FromLocCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 出库口
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 单号
+        /// </summary>
+        public string BillCode { get; set; }
+    }
+    public class FjErrorMaterialStockOutRequestItem
+    {
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+    }
+}

+ 81 - 0
wms.dto/request/fj/FjProductionBackRequest.cs

@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class FjProductionBackRequest:BaseRequest
+    {
+        /// <summary>
+        /// 退料单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 操作类型(1退料/2余料(退料不传工字轮信息,只传点位))
+        /// </summary>
+        public string BusType { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 机台号
+        /// </summary>
+        public string WbCode { get; set; }
+    }
+    public class FjProductionBackRequestItem
+    {
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 类型
+        /// </summary>
+        public string BusType { get; set; }
+        /// <summary>
+        /// 工字轮型号
+        /// </summary>
+        public string SpoolType { get; set; }
+        /// <summary>
+        /// 生产日期
+        /// </summary>
+        public DateTime ProductDate { get; set; }
+        /// <summary>
+        /// 时效期
+        /// </summary>
+        public decimal HoldDuration { get; set; }
+        /// <summary>
+        /// 等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public decimal Length { get; set; }
+        /// <summary>
+        /// 重量
+        /// </summary>
+        public decimal Weight { get; set; }
+        /// <summary>
+        /// 高度
+        /// </summary>
+        public decimal Height { get; set; }
+        /// <summary>
+        /// 是否快投
+        /// </summary>
+        public bool IsFast { get; set; }
+        /// <summary>
+        /// 单/双丝
+        /// </summary>
+        public string SilkType { get; set; }
+    }
+}

+ 54 - 0
wms.dto/request/fj/FjStockChangeRequest.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class FjStockChangeRequest:BaseRequest
+    {
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 改判信息列表
+        /// </summary>
+        public List<FjStockChangeRequestItem> ListInfo { get; set; }
+    }
+    public class FjStockChangeRequestItem
+    {
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 改判状态(锁定/放行/快投/取消快投:Lock/Normal/Fast/UnFast)
+        /// </summary>
+        public string State { get; set; }
+        /// <summary>
+        /// 原因
+        /// </summary>
+        public string Reason { get; set; }
+
+    }
+}

+ 35 - 0
wms.dto/request/fj/GetFJCurStockListRequest.cs

@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    /// <summary>
+    /// 实时库存查询请求实体
+    /// </summary>
+    public class GetFJCurStockListRequest
+    {
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 物料名称
+        /// </summary>
+        public string MatName { get; set; }
+        /// <summary>
+        /// 请求条数
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int ReqCount { get; set; }
+        /// <summary>
+        /// 当前页
+        /// </summary>
+        public int PageIndex { get; set; }
+        /// <summary>
+        /// 每页条数
+        /// </summary>
+        public int PageSize { get; set; }
+    }
+}

+ 75 - 0
wms.dto/request/fj/ManualBuildStockTransRequest.cs

@@ -0,0 +1,75 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class ManualBuildStockTransRequest:BaseRequest
+    {
+        /// <summary>
+        /// 托盘号
+        /// </summary>
+        public string PalletCode { get; set; }
+        /// <summary>
+        /// 货位
+        /// </summary>
+        public string LocCode { get; set; }
+        public List<ManualBuildStockTransRequestItem> ListInfo { get; set; }
+    }
+    public class ManualBuildStockTransRequestItem
+    { 
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 类型
+        /// </summary>
+        public string BusType { get; set; }
+        /// <summary>
+        /// 工字轮型号
+        /// </summary>
+        public string SpoolType { get; set; }
+        /// <summary>
+        /// 生产日期
+        /// </summary>
+        public DateTime ProductDate { get; set; }
+        /// <summary>
+        /// 时效期
+        /// </summary>
+        public decimal HoldDuration { get; set; }
+        /// <summary>
+        /// 等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public decimal Length { get; set; }
+        /// <summary>
+        /// 重量
+        /// </summary>
+        public decimal Weight { get; set; }
+        /// <summary>
+        /// 高度
+        /// </summary>
+        public decimal Height { get; set; }
+        /// <summary>
+        /// 是否快投
+        /// </summary>
+        public bool IsFast { get; set; }
+        /// <summary>
+        /// 单/双丝
+        /// </summary>
+        public string SilkType { get; set; }
+
+    }
+}

+ 49 - 0
wms.dto/request/fj/ProductionLeftFeedBackRequest.cs

@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class ProductionLeftFeedBackRequest
+    {
+        /// <summary>
+        /// 退料单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 操作类型(/2余料(退料不传工字轮信息,只传点位))
+        /// </summary>
+        public string BusType { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 仓库名称
+        /// </summary>
+        public string WareName { get; set; }
+        /// <summary>
+        /// 货位
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 集合
+        /// </summary>
+        public List<ProductionLeftFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class ProductionLeftFeedBackRequestItem
+    {
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+    }
+}

+ 74 - 0
wms.dto/request/fj/SpoolMaterialInfoTransRequest.cs

@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class SpoolMaterialInfoTransRequest:BaseRequest
+    {
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 类型(1:湿拉半成品;2:芯股)
+        /// </summary>
+        public string BusType { get; set; }
+        /// <summary>
+        /// 工字轮型号
+        /// </summary>
+        public string SpoolType { get; set; }
+        /// <summary>
+        /// 生产日期
+        /// </summary>
+        public DateTime ProductDate { get; set; }
+        /// <summary>
+        /// 时效期
+        /// </summary>
+        public decimal HoldDuration { get; set; }
+        /// <summary>
+        /// 等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public decimal Length { get; set; }
+        /// <summary>
+        /// 重量
+        /// </summary>
+        public decimal Weight { get; set; }
+        /// <summary>
+        /// 高度
+        /// </summary>
+        public decimal Height { get; set; }
+        /// <summary>
+        /// 是否快投
+        /// </summary>
+        public bool IsFast { get; set; }
+        /// <summary>
+        /// 是否退料
+        /// </summary>
+        public bool IsBack { get; set; }
+        /// <summary>
+        /// 单/双丝
+        /// </summary>
+        public string SilkType { get; set; }
+        /// <summary>
+        /// 湿拉工序工单号
+        /// </summary>
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 生产订单号
+        /// </summary>
+        public string WorkOrder { get; set; }
+    }
+}

+ 40 - 0
wms.dto/request/fj/StockChangeFeedBackRequest.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class StockChangeFeedBackRequest
+    {
+
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 单号
+        /// </summary>
+        public string BillCode { get; set; }
+     
+        public List<StockChangeFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class StockChangeFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+        /// <summary>
+        /// 改判结果
+        /// </summary>
+        public string ResState { get; set; }
+        /// <summary>
+        /// 原因
+        /// </summary>
+        public string ResDesc { get; set; }
+    }
+}

+ 42 - 0
wms.dto/request/fj/StockChangeStockInFeedBackRequest.cs

@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class StockChangeStockInFeedBackRequest
+    {
+        /// <summary>
+        /// 托盘号
+        /// </summary>
+        public string PalletCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        /// <summary>
+        /// 货位
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 仓库名称
+        /// </summary>
+        public string WareName { get; set; }
+        public List<StockChangeStockInFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class StockChangeStockInFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+    }
+}

+ 34 - 0
wms.dto/request/fj/SyncMachineInfoRequest.cs

@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class SyncMachineInfoRequest
+    {
+        /// <summary>
+        /// 机台编号
+        /// </summary>
+        public string MacCode { get; set; }
+        /// <summary>
+        /// 机台组号
+        /// </summary>
+        public string MacGroup { get; set; }
+        /// <summary>
+        /// 当前页
+        /// </summary>
+        public int PageIndex { get; set; }
+        /// <summary>
+        /// 每页条数
+        /// </summary>
+        public int PageSize { get; set; }
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        public DateTime StartTime { get; set; }
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        public DateTime EndTime { get; set; }
+    }
+}

+ 31 - 0
wms.dto/request/fj/WetFormulaInfoRequest.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    /// <summary>
+    /// 配方信息请求实体
+    /// </summary>
+    public class WetFormulaInfoRequest:BaseRequest
+    {
+        /// <summary>
+        /// 投料信息编码
+        /// </summary>
+        public string FeedCode { get; set; }
+        /// <summary>
+        /// 帘线工序物料编码
+        /// </summary>
+        public string MaterialCode { get; set; }
+        /// <summary>
+        /// 湿拉物料信息列表
+        /// </summary>
+        public List<WetFormulaInfoItem> FeedList { get; set; }
+    }
+
+    public class WetFormulaInfoItem
+    {
+        public string MatCode { get; set; }
+        public int Count { get; set; }
+    }
+}

+ 38 - 0
wms.dto/request/fj/WetProductStockInFeedBackRequest.cs

@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.fj
+{
+    public class WetProductStockInFeedBackRequest
+    {
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 仓库名称
+        /// </summary>
+        public string WareName { get; set; }
+        /// <summary>
+        /// 货位编码
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 过账凭证号
+        /// </summary>
+        public string ReqId { get; set; }
+        public List<WetProductStockInFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class WetProductStockInFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 工字轮条码
+        /// </summary>
+        public string SpoolCode { get; set; }
+    }
+}

+ 46 - 0
wms.dto/request/hj/AddJobRequest.cs

@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class AddJobRequest
+    {
+        public long Id { get; set; }
+        [Required(ErrorMessage = "{0} 必须填写")]
+        [MaxLength(200, ErrorMessage = "{0} 长度不可超过{1}")]
+        public string Code { get; set; }
+        [Required(ErrorMessage = "{0} 必须填写")]
+        [MaxLength(200, ErrorMessage = "{0} 长度不可超过{1}")]
+        public string Name { get; set; }
+        public string JobGroupName { get; set; }
+        [Required(ErrorMessage = "{0} 必须填写")]
+        [MaxLength(100, ErrorMessage = "{0} 长度不可超过{1}")]
+        public string JobType { get; set; }
+        public string JobDescription { get; set; }
+        public string TriggerName { get; set; }
+        public string TriggerGroupName { get; set; }
+        public string TriggerDescription { get; set; }
+        public string CronExpression { get; set; }
+        /// <summary>
+        /// 接口地址列
+        /// </summary>
+        public List<JobApiRelation> JobList { get; set; }
+    }
+    public class JobApiRelation
+    {
+        public long Id { get; set; }
+        public long JobId { get; set; }
+        /// <summary>
+        /// 接口地址
+        /// </summary>
+        [Required(ErrorMessage = "接口地址必须填写")]
+        public string ApiUrl { get; set; }
+        /// <summary>
+        /// 请求体
+        /// </summary>
+        [Required(ErrorMessage = "请求体必须填写")]
+        public string RequestBody { get; set; }
+    }
+}

+ 12 - 0
wms.dto/request/hj/AddWcsMoveTaskRequest.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class AddWcsMoveTaskRequest:BaseRequest
+    {
+
+        public int TaskNum { get; set; }
+    }
+}

+ 22 - 0
wms.dto/request/hj/ApplyEmptySpoolRequest.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 补空轮申请请求实体
+    /// </summary>
+    public class ApplyEmptySpoolRequest:BaseRequest
+    {
+        /// <summary>
+        /// 巷道
+        /// </summary>
+        public int Tunnel { get; set; }
+        /// <summary>
+        /// 出库位置
+        /// </summary>
+        public string OutEndPostion { get; set; }
+    }
+}

+ 25 - 0
wms.dto/request/hj/ApplyStockInLocRequest.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class ApplyStockInLocRequest:BaseRequest
+    {
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int TaskNum { get; set; }
+        /// <summary>
+        /// 巷道号
+        /// </summary>
+        public int TunnelNum { get; set; }
+        /// <summary>
+        /// 取货地点设备编号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string PickUpEquipmentNo { get; set; }
+    }
+}

+ 46 - 0
wms.dto/request/hj/ApplyStockInRequest.cs

@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request
+{
+    public class ApplyStockInRequestDto
+    {
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        public int TaskNum { get; set; }
+        /// <summary>
+        /// 巷道号
+        /// </summary>
+        public int TunnelNum { get; set; }
+        /// <summary>
+        /// 取货地点设备编号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string PickUpEquipmentNo { get; set; }
+
+    }
+
+    public class ApplyStockInRequest
+    {
+        public long MaterialId { get; set; }
+        public long MaterialGroupId { get; set; }
+        public LocationType LocationType { get; set; }
+        public int Tunnel { get; set; }
+        public int Size { get; set; }
+        public string Grade { get; set; }
+        public long BatchId { get; set; }
+        public string MaterialState { get; set; }
+        public long WarehouseId { get; set; }
+        /// <summary>
+        /// 是否移库
+        /// </summary>
+        public bool IsMove { get; set; } = false;
+
+        public int IsAlreadyProduct { get; set; } = 0;
+        public string ShelfCode { get; set; }
+        public decimal Diameter { get; set; }
+    }
+}

+ 17 - 0
wms.dto/request/hj/ApplyStockOutRequest.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+using wms.dto.attribute;
+
+namespace wms.dto.request
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ApplyStockOutRequest
+    {
+        
+
+    }
+}

+ 40 - 0
wms.dto/request/hj/ApplyStockOutTaskRequest.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class ApplyStockOutTaskRequest
+    {
+
+        /// <summary>
+        /// 出库位置
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string OutEndPostion { get; set; }
+        /// <summary>
+        /// 出库类型(0.无效参数;1.物料出库;2.空托盘出库;)
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int OutType { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WarehouseCode { get; set; }
+
+        /// <summary>
+        /// 巷道
+        /// </summary>
+        public string Tunnel { get; set; }
+        /// <summary>
+        /// 备用
+        /// </summary>
+        public string Memo1 { get; set; }
+        /// <summary>
+        /// 备用
+        /// </summary>
+        public string Memo2 { get; set; }
+    }
+}

+ 62 - 0
wms.dto/request/hj/CopperLineAgvTaskStockInToIWmsRequest.cs

@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class CopperLineAgvTaskStockInToIWmsRequest
+    {
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string matCode { get; set; }
+        /// <summary>
+        /// 工作站编号
+        /// </summary>
+        public string workAreaCode { get; set; }
+        /// <summary>
+        /// 空/满工字轮标记(满工字轮:1空工字轮:0)
+        /// </summary>
+        public string outSpoolFull { get; set; }
+        /// <summary>
+        /// 取空补满标记
+        /// </summary>
+        public bool intoEmpty { get; set; }
+        /// <summary>
+        /// 湿拉出库标记
+        /// </summary>
+        public string wetOut { get; set; }
+        /// <summary>
+        /// 湿拉退料出库标记
+        /// </summary>
+        public string wetOutReturn { get; set; }
+        /// <summary>
+        /// 改手盘标记
+        /// </summary>
+        public string isSurplus { get; set; }
+        /// <summary>
+        /// 返工标记
+        /// </summary>
+        public string isRework { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string matNo { get; set; }
+        /// <summary>
+        /// RFID号
+        /// </summary>
+        public string spoolNo { get; set; }
+        /// <summary>
+        /// 质量状态标记
+        /// </summary>
+        public string gradeCode { get; set; }
+        /// <summary>
+        /// 快投标记
+        /// </summary>
+        public string matFast { get; set; }
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        public string taskNo { get; set; }
+    }
+}

+ 82 - 0
wms.dto/request/hj/CopperLineAgvTaskStockOutToIWmsRequest.cs

@@ -0,0 +1,82 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class CopperLineAgvTaskStockOutToIWmsRequest
+    {
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string matCode { get; set; }
+        /// <summary>
+        /// 工作站编号(机台号、立库点位编号)
+        /// </summary>
+        public string wbCode { get; set; }
+        /// <summary>
+        /// 空/满工字轮入库标记(空工字轮:0,满工字轮:1,半工字轮:2)
+        /// </summary>
+        public string inSpoolFull { get; set; }
+        /// <summary>
+        /// 取满补空标记
+        /// </summary>
+        public bool getOutEmpty { get; set; }
+        /// <summary>
+        /// 湿拉上线标记
+        /// </summary>
+        public bool wetInto { get; set; }
+        /// <summary>
+        /// 湿拉特殊上线标记
+        /// </summary>
+        public bool wetIntoSpec { get; set; }
+        /// <summary>
+        /// 湿拉退料入库标记
+        /// </summary>
+        public bool wetIntoReturn { get; set; }
+        /// <summary>
+        /// 湿拉特殊上线点位号
+        /// </summary>
+        public string wetSpecWbCode { get; set; }
+        /// <summary>
+        /// 改手盘标记
+        /// </summary>
+        public string isSurplus { get; set; }
+        /// <summary>
+        /// 返工标记
+        /// </summary>
+        public string isRework { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string matNo { get; set; }
+        /// <summary>
+        /// RFID号
+        /// </summary>
+        public string spoolNo { get; set; }
+        /// <summary>
+        /// 质量状态标记
+        /// </summary>
+        public string gradeCode { get; set; }
+        /// <summary>
+        /// 快投标记
+        /// </summary>
+        public string matFast { get; set; }
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public string orderProcessLenOut { get; set; }
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        public string taskNo { get; set; }
+        /// <summary>
+        /// 退料原因
+        /// </summary>
+        public string returnDesc { get; set; }
+        /// <summary>
+        /// 是否锁定
+        /// </summary>
+        public string lockFlag { get; set; }
+    }
+}

+ 22 - 0
wms.dto/request/hj/CopperLineAgvTaskToRcsRequest.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class CopperLineAgvTaskToRcsRequest
+    {
+        /// <summary>
+        /// RFID
+        /// </summary>
+        public string RFID { get; set; }
+        /// <summary>
+        /// 起点位置
+        /// </summary>
+        public string StartPos { get; set; }
+        /// <summary>
+        /// 目标点位置
+        /// </summary>
+        public string EndPos { get; set; }
+    }
+}

+ 87 - 0
wms.dto/request/hj/CopperLineRequest.cs

@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request
+{
+    /// <summary>
+    /// 镀铜补空/取满指令请求实体(包含550工字轮)
+    /// </summary>
+    public class CopperLineRequest:BaseRequest
+    {
+        /// <summary>
+        /// 机台号(AGV站台号)
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WbCode { get; set; }
+        /// <summary>
+        /// 指令类型(1补空;2取满;3补空取满;4:550工字轮;5:空轮初始化)
+        /// </summary>
+        public int BusType { get; set; }
+        /// <summary>
+        /// 满轮RFID
+        /// </summary>
+        public string RFID { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string? MatBarCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WareCode { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string? MatCode { get; set; }
+        /// <summary>
+        /// 生产日期
+        /// </summary>
+        public string? ProductDate { get; set; }
+        /// <summary>
+        /// 是否快投
+        /// </summary>
+        public string? IsFast { get; set; }
+        /// <summary>
+        /// 工字轮类型
+        /// </summary>
+        public string? SpoolType { get; set; }
+        /// <summary>
+        /// 产线编码
+        /// </summary>
+        public string? ProductCode { get; set; }
+        /// <summary>
+        /// 订单号
+        /// </summary>
+        public string? OrderCode { get; set; }
+        /// <summary>
+        /// 工序订单号
+        /// </summary>
+        public string? WorkOrder { get; set; }
+        /// <summary>
+        /// 质量等级
+        /// </summary>
+        public string? Grade { get; set; }
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public decimal? Length { get; set; }
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        public string? UpdatedTime { get; set; }
+        /// <summary>
+        /// 返工标记
+        /// </summary>
+        public string? IsRework { get; set; }
+
+    }
+
+    public class CopperLineNewRequest
+    {
+        public List<CopperLineRequest> data { get; set; }
+    }
+}

+ 53 - 0
wms.dto/request/hj/CopperLineStockInFeedBackRequest.cs

@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 镀铜满轮入库/550工字轮入库反馈请求
+    /// </summary>
+    public class CopperLineStockInFeedBackRequest
+    {
+        public List<CopperLineStockInFeedBackItem> ListInfo { get; set; }
+    }
+    public class CopperLineStockInFeedBackItem
+    {
+        /// <summary>
+        /// 满轮RFID值
+        /// </summary>
+        public string RFID { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 总重量
+        /// </summary>
+        public decimal TolWeight { get; set; }
+        /// <summary>
+        /// 净重
+        /// </summary>
+        public decimal NetWeight { get; set; }
+        /// <summary>
+        /// 皮重
+        /// </summary>
+        public decimal TareWeight { get; set; }
+        /// <summary>
+        /// 货位编码
+        /// </summary>
+        public string LocCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 仓库名称
+        /// </summary>
+        public string WareName { get; set; }
+    }
+}

+ 28 - 0
wms.dto/request/hj/CreateMoveWcsTaskRequest.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class CreateMoveWcsTaskRequest
+    {
+        /// <summary>
+        /// 容器条码
+        /// </summary>
+        public string ContGrpBarCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WarehouseCode { get; set; }
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 目标点位
+        /// </summary>
+        public string EndCellNo { get; set; }
+        public string Tunnel { get; set; }
+        public string FromCellNo { get; set; }
+        public string BusType { get; set; }
+
+    }
+}

+ 40 - 0
wms.dto/request/hj/CreateStockInWcsTaskRequest.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request
+{
+    public class CreateStockInWcsTaskRequest
+    {
+        /// <summary>
+        /// 容器条码
+        /// </summary>
+        public string ContGrpBarCode { get; set; }
+        /// <summary>
+        /// 主盘主表ID
+        /// </summary>
+        public long ContGrpId { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WarehouseCode { get; set; }
+        public decimal Qty { get; set; }
+        /// <summary>
+        /// 单据号
+        /// </summary>
+        public string DocCode { get; set; }
+        public long DocId { get; set; }
+        /// <summary>
+        /// 设备编号
+        /// </summary>
+        public string EquCode { get; set; }
+        /// <summary>
+        /// 业务类型
+        /// </summary>
+        public string BusType { get; set; }
+        public int Floor { get; set; }
+        public string ProLine { get; set; }
+        public string MatCode { get; set; }
+        public string MaterialCode { get; set; }
+    }
+}

+ 69 - 0
wms.dto/request/hj/CreateStockOutWcsTaskRequest.cs

@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class CreateStockOutWcsTaskRequest
+    {
+        /// <summary>
+        /// 容器条码
+        /// </summary>
+        public string ContGrpBarCode { get; set; }
+        /// <summary>
+        /// 主盘主表ID
+        /// </summary>
+        public long ContGrpId { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WarehouseCode { get; set; }
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 设备编号
+        /// </summary>
+        public string EquCode { get; set; }
+        /// <summary>
+        /// 业务类型
+        /// </summary>
+        public TaskBusType BusType { get; set; }
+        public int Floor { get; set; }
+        public string ProLine { get; set; }
+        public string Tunnel { get; set; }
+        public string CellNo { get; set; }
+
+        public string WorkBench { get; set; }
+
+
+        /// <summary> 
+        /// MatCode
+        /// </summary> 
+        public string MatCode { get; set; }
+
+        /// <summary> 
+        /// InvBarCode
+        /// </summary> 
+        public string InvBarCode { get; set; }
+        /// <summary> 
+        /// IsFast
+        /// </summary> 
+        public bool IsFast { get; set; }
+        /// <summary> 
+        /// Grade
+        /// </summary> 
+        public string Grade { get; set; }
+        /// <summary> 
+        /// IsSurplus
+        /// </summary> 
+        public bool IsSurplus { get; set; }
+        /// <summary> 
+        /// IsRework
+        /// </summary> 
+        public bool IsRework { get; set; }
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        public int Priority { get; set; } = 0;
+    }
+}

+ 39 - 0
wms.dto/request/hj/DetailCodeRequest.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.CompilerServices;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class DetailCodeRequest
+    {
+        public string Code { get; set; }
+        public string? Cell { get; set; }
+    }
+    public class WebErrorRequest
+    {
+        public string TaskNo { get; set; }
+    }
+    public class DetailCodeRequestdto
+    {
+        public string Code { get; set; }
+        public int State { get; set; }
+    }
+    /// <summary>
+    /// 货位数据互换
+    /// </summary>
+    public class DataSwapCellRequest
+    {
+        /// <summary>
+        /// 起始货位
+        /// </summary>
+        [Required(ErrorMessage = "{0} 起始货位不可为空")]
+        public string StatEquip { get; set; }
+        /// <summary>
+        /// 目标货位
+        /// </summary>
+        [Required(ErrorMessage = "{0} 目标货位不可为空")]
+        public string EndEquip { get; set; }
+    }
+}

+ 11 - 0
wms.dto/request/hj/DetailRequest2Str.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class DetailRequest2Str
+    {
+        public string Id { get; set; } = "0";
+    }
+}

+ 14 - 0
wms.dto/request/hj/GetBarCodeInfoRequest.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 条码信息查询请求
+    /// </summary>
+    public class GetBarCodeInfoRequest
+    {
+        public List<string> BarCodeList { get; set; }
+    }
+}

+ 35 - 0
wms.dto/request/hj/GetCurStockListRequest.cs

@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 实时库存查询请求实体
+    /// </summary>
+    public class GetCurStockListRequest
+    {
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 物料名称
+        /// </summary>
+        public string MatName { get; set; }
+        /// <summary>
+        /// 请求条数
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int ReqCount { get; set; }
+        /// <summary>
+        /// 当前页
+        /// </summary>
+        public int PageIndex { get; set; }
+        /// <summary>
+        /// 每页条数
+        /// </summary>
+        public int PageSize { get; set; }
+    }
+}

+ 16 - 0
wms.dto/request/hj/GetSysJobListRequest.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class GetSysJobListRequest:BaseRequest
+    {
+        public string Code { get; set; } = "";
+        public string Name { get; set; } = "";
+        public string JobGroupName { get; set; } = "";
+        public string JobType { get; set; } = "";
+        public string TriggerName { get; set; } = "";
+        public string CronExpression { get; set; } = "";
+    }
+}

+ 10 - 0
wms.dto/request/hj/GetTunnelEmptyConCountRequest.cs

@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class GetTunnelEmptyConCountRequest
+    {
+    }
+}

+ 24 - 0
wms.dto/request/hj/GetTunnelListRequest.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class GetTunnelListRequest
+    {
+        /// <summary>
+        /// WMS任务号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int TaskNum { get; set; }
+        /// <summary>
+        /// 备用
+        /// </summary>
+        public string Memo1 { get; set; }
+        /// <summary>
+        /// 备用
+        /// </summary>
+        public string Memo2 { get; set; }
+    }
+}

+ 104 - 0
wms.dto/request/hj/HjMaterialStockInRequest.cs

@@ -0,0 +1,104 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class HjMaterialStockInRequest
+    {
+        /// <summary>
+        /// 楼层
+        /// </summary>
+        public int Floor { get; set; }
+
+        /// <summary>
+        /// 机台号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WbCode { get; set; }
+        /// <summary>
+        /// 指令类型(1补空;2取满;3补空取满;4:550工字轮)----镀铜入库
+        /// 指令类型 1退料2余料3空轮----湿拉退料
+        /// </summary>
+        public int BusType { get; set; }
+        /// <summary>
+        /// 满轮RFID
+        /// </summary>
+        public string RFID { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WareCode { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 生产日期
+        /// </summary>
+        public string ProductDate { get; set; }
+        /// <summary>
+        /// 是否快投
+        /// </summary>
+        public string IsFast { get; set; }
+        /// <summary>
+        /// 工字轮类型
+        /// </summary>
+        public string SpoolType { get; set; }
+        /// <summary>
+        /// 产线编码
+        /// </summary>
+        public string ProductCode { get; set; }
+        /// <summary>
+        /// 订单号
+        /// </summary>
+        public string OrderCode { get; set; }
+        /// <summary>
+        /// 工序订单号
+        /// </summary>
+        public string WorkOrder { get; set; }
+        /// <summary>
+        /// 质量等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public decimal Length { get; set; }
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        public string UpdatedTime { get; set; }
+        /// <summary>
+        /// 返工标记
+        /// </summary>
+        public string IsRework { get; set; }
+ 
+        /// <summary>
+        /// 起始点位 指令类型1,2时必传
+        /// </summary>
+        public string StartLoc { get; set; }
+ 
+        /// <summary>
+        /// 退料原因 连断/夹丝/锈蚀;指令类型1时必传
+        /// </summary>
+        public string Reason { get; set; }
+ 
+        /// <summary>
+        /// 是否锁定
+        /// </summary>
+        public string IsLock { get; set; }
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public decimal Qty { get; set; }
+
+    }
+}

+ 40 - 0
wms.dto/request/hj/MoveStockFeedBackRequest.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 移库货位上报MES请求
+    /// </summary>
+    public class MoveStockFeedBackRequest
+    {
+        /// <summary>
+        /// 列表
+        /// </summary>
+        public List<MoveStockFeedBackRequestItem> ListInfo { get; set; }
+        public string WareCode { get; set; }
+    }
+    public class MoveStockFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// RFID值
+        /// </summary>
+        public string RFID { get; set; }
+        /// <summary>
+        /// 起点货位
+        /// </summary>
+        public string StartLoc { get; set; }
+        /// <summary>
+        /// 目标货位
+        /// </summary>
+        public string EndLoc { get; set; }
+        public string WareCode { get; set; }
+
+
+    }
+}

+ 44 - 0
wms.dto/request/hj/RfidCheckDiffRequest.cs

@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 复核异常上报请求实体
+    /// </summary>
+    public class RfidCheckDiffRequest
+    {
+        /// <summary>
+        /// RFID
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string RFID { get; set; }
+        /// <summary>
+        /// OrgRFID
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string OrgRFID { get;set; }
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string TaskNo { get; set; }
+        /// <summary>
+        /// 异常信息
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string ErrMsg { get; set; }
+        /// <summary>
+        /// 异常点位
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string ErrLoc { get; set; }
+        /// <summary>
+        /// 起始点位
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string StartLoc { get; set; }
+    }
+}

+ 39 - 0
wms.dto/request/hj/SpecialPickMaterApplyRequest.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 特殊出库领料申请请求实体
+    /// </summary>
+    public class SpecialPickMaterApplyRequest:BaseRequest
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// RFID值
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string RFID { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string MatCode { get; set; }
+        /// <summary>
+        /// 目标位号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WbCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WareCode { get; set; }
+    }
+}

+ 29 - 0
wms.dto/request/hj/SpecialPickMaterFeedBackRequest.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 特殊出库领料反馈请求
+    /// </summary>
+    public class SpecialPickMaterFeedBackRequest
+    {
+       public List<SpecialPickMaterFeedBackRequestItem> ListInfo { get; set; }
+    }
+    public class SpecialPickMaterFeedBackRequestItem
+    {
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// RFID值
+        /// </summary>
+        public string RFID { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string MatCode { get; set; }
+    }
+}

+ 16 - 0
wms.dto/request/hj/SrmPickOutCompletedRequest.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class SrmPickOutCompletedRequest
+    {
+        /// <summary>
+        /// WMS任务号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public int TaskNum { get; set; }
+    }
+}

+ 50 - 0
wms.dto/request/hj/StockChangeFeedBackRequest.cs

@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 库存改判反馈请求实体
+    /// </summary>
+    public class StockChangeFeedBackRequest
+    {
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 改判结果列表
+        /// </summary>
+        public List<StockChangeRequestItem> ListInfo { get; set; } 
+    }
+    //public class ListInfoItem
+    //{
+    //    /// <summary>
+    //    /// RFID值
+    //    /// </summary>
+    //    public string RFID { get; set; }
+    //    /// <summary>
+    //    /// 材料号
+    //    /// </summary>
+    //    public string MatBarCode { get; set; }
+    //    /// <summary>
+    //    /// 改判状态
+    //    /// </summary>
+    //    public string State { get; set; }
+    //    /// <summary>
+    //    /// 等级
+    //    /// </summary>
+    //    public string Grade { get; set; }
+    //    /// <summary>
+    //    /// 原因
+    //    /// </summary>
+    //    public string Reason { get; set; }
+    //    /// <summary>
+    //    /// 仓库编码
+    //    /// </summary>
+    //    public string WareCode { get; set; }
+    //}
+}

+ 63 - 0
wms.dto/request/hj/StockChangeRequest.cs

@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    /// <summary>
+    /// 库存改判请求实体
+    /// </summary>
+    public class StockChangeRequest:BaseRequest
+    {
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string BillCode { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        [Required(ErrorMessage = "{0} 不可为空")]
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 改判信息列表
+        /// </summary>
+        public List<StockChangeRequestItem> ListInfo { get; set; } 
+    }
+    public class StockChangeRequestItem
+    {
+        /// <summary>
+        /// RFID值
+        /// </summary>
+        public string RFID { get; set; }
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string MatBarCode { get; set; }
+        /// <summary>
+        /// 改判状态
+        /// </summary>
+        public string State { get; set; }
+        /// <summary>
+        /// 等级
+        /// </summary>
+        public string Grade { get; set; }
+        /// <summary>
+        /// 原因
+        /// </summary>
+        public string Reason { get; set; }
+        /// <summary>
+        /// 仓库编码
+        /// </summary>
+        public string WareCode { get; set; }
+        /// <summary>
+        /// 改判结果(反馈时使用)
+        /// </summary>
+        public string ResState { get; set; }
+        /// <summary>
+        /// 原因 (反馈时使用)
+        /// </summary>
+        public string ResDesc { get; set; }
+    }
+}

+ 11 - 0
wms.dto/request/hj/SyncMaterRequest.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class SyncMaterRequest
+    {
+
+    }
+}

+ 14 - 0
wms.dto/request/hj/SysJobDto.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class SysJobDto
+    {
+        public string JobName { get; set; }
+        public string JobDesc { get; set; }
+        public string JobStatus { get; set; }
+        public string JobGroup { get; set; }
+    }
+}

+ 17 - 0
wms.dto/request/hj/TunnelRequest.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace wms.dto.request.hj
+{
+    public class TunnelRequest
+    {
+        public string WareHouse { get; set; }
+        public string Tunnel { get; set; }
+        public string type { get; set; }
+    }
+    public class UpdateTunStatu : TunnelRequest
+    {
+        public int statu { get; set; }
+    }
+}

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov