| 4 天以前 | chenyong | ![]() |
| 4 天以前 | huangxiaoqiang | ![]() |
| 4 天以前 | huangxiaoqiang | ![]() |
| 5 天以前 | chenyong | ![]() |
Code Management/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.dbBinary files differ
Code Management/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-shmBinary files differ
Code Management/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/CodeChunks.db-walBinary files differ
Code Management/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.dbBinary files differ
Code Management/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shmBinary files differ
Code Management/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-walBinary files differ
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs
@@ -146,4 +146,4 @@ app.MapHubs(); app.MapControllers(); app.Run(); app.Run(); Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -1,5 +1,5 @@ { "urls": "http://*:9291", //webæå¡ç«¯å£ï¼å¦æç¨IISé¨ç½²ï¼æè¿ä¸ªå»æ "urls": "http://*:9290", //webæå¡ç«¯å£ï¼å¦æç¨IISé¨ç½²ï¼æè¿ä¸ªå»æ "Logging": { "LogLevel": { "Default": "Information", @@ -12,7 +12,7 @@ "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿ é¡»ä¸ºtrue //è¿æ¥å符串 //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=WIDESEA_WCSDBB2F;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //è·¨å "Cors": { "PolicyName": "CorsIpAccess", //çç¥åç§° Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -448,7 +448,7 @@ { if (task.TaskType == (int)TaskOutboundTypeEnum.InToOut && taskDTO.RoadWay.Contains("CW")) { var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1017" && x.stationType == 10 && x.Roadway == taskDTO.RoadWay); var stationinfo = _stationManagerRepository.QueryFirst(x => (x.stationPLC == "1017" ||x.stationPLC=="1024")&& x.stationType == 10 && x.Roadway == taskDTO.RoadWay); task.TaskState = (int)TaskOutStatusEnum.OutNew; task.CurrentAddress = taskDTO.SourceAddress; task.NextAddress = stationinfo.stationChildCode; Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs
@@ -117,6 +117,8 @@ #region è·¯ç±æ¹å¼ List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); childDeviceCodes.Add("4000"); foreach (string childDeviceCode in childDeviceCodes) { @@ -147,7 +149,6 @@ MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); if (method != null) { //var strings = platform.Location.Split(',').ToList(); int count = 1; method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); } @@ -161,7 +162,6 @@ var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken"); if (tokenInfos == null || !tokenInfos.Any()) { //throw new Exception(conveyorLine.DeviceName + "ç¼å䏿ªæ¾å°Tokenç¼å"); continue; } var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList(); @@ -208,6 +208,13 @@ //_noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); WriteInfo(conveyorLine.DeviceName, log); if (childDeviceCode == "4000") { conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, Convert.ToInt16(1601), childDeviceCode); Thread.Sleep(100); conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTaskNum, 9999, childDeviceCode); } if (task == null) { @@ -313,20 +320,36 @@ /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> /// <param name="ProtocalDetailValue">线ä½å½åbool读ååç§»å°å</param> /// <summary> /// 触åè¾é线åºåºè¯·æ±å¤ç /// </summary> /// <param name="conveyorLine">è¾é线å®ä¾ï¼CommonConveyorLine_CWç±»åï¼ï¼å å«è¾é线设å¤åºç¡ä¿¡æ¯åæä½æ¹æ³</param> /// <param name="command">è¾éçº¿ä»»å¡æä»¤å¯¹è±¡ï¼åç»çæ¬ï¼ï¼ææªç´æ¥ä½¿ç¨ï¼é¢çæä»¤ä¸ä¸æ</param> /// <param name="childDeviceCode">å设å¤ç¼ç ï¼ç¨äºå®ä½è¾é线çå ·ä½å设å¤</param> public void RequestOutbound(CommonConveyorLine_CW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) { // æ ¹æ®ä¸»è¾é线设å¤ç¼ç åå设å¤ç¼ç ï¼æ¥è¯¢å¯¹åºçè¾éçº¿ä»»å¡ var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); // è¥æ¥è¯¢å°ææä»»å¡ï¼åæ§è¡åç»æä»¤åéåç¶ææ´æ°é»è¾ if (task != null) { // å°æ°æ®åºæ¥è¯¢å°çä»»å¡å¯¹è±¡æ å°ä¸ºæä»¤å¯¹è±¡ï¼éé æä»¤åéçæ°æ®ç»æï¼ ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); //conveyorLine.SendCommand(taskCommand, childDeviceCode); // åé任塿令尿å®è¾é线å设å¤ï¼å¹¶è·ååéç»æï¼å注éæçconveyorLine.SendCommandå·²æ¿æ¢ä¸ºå°è£ åçæ¹æ³ï¼ bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode); // è¥æä»¤åéæåï¼æ§è¡ç¶ææ´æ°æä½ if (sendFlag) { // æ´æ°è¾é线å设å¤çååºç¶æä¸º1ï¼1代表æä»¤å·²ååº/å¤çæåï¼å¯¹åºæ°æ®åºå段ConveyorLineDBName_After.ResponStateï¼ conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), childDeviceCode); // å°ä»»å¡ç¶ææ´æ°å°ä¸ä¸ä¸ªé¶æ®µï¼éç¨ä»»å¡ç¶ææµè½¬ï¼ _taskService.UpdateTaskStatusToNext(task); // ç¹æ®å¤çï¼è¥ä»»å¡ç±»åä¸ºåºæçï¼OutTrayï¼ï¼é¢å¤åæ§è¡ä¸æ¬¡ä»»å¡ç¶ææ´æ°ï¼éé åºæçä»»å¡çç¹æ®ç¶ææµè½¬é»è¾ï¼ if (task.TaskType == (int)TaskOutboundTypeEnum.OutTray) { _taskService.UpdateTaskStatusToNext(task); @@ -341,63 +364,103 @@ /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> /// <summary> /// å¤çè¾é线ä¸ä¸å°å请æ±ï¼æ ¸å¿é»è¾ï¼æ¥è¯¢æ§è¡ä¸ä»»å¡âè·åMOMé ç½®âè°ç¨MOMæ¥å£æ ¡éªâæ ¹æ®æ ¡éªç»æ/ä»»å¡ç¶æåéæä»¤å¹¶æ´æ°ä»»å¡ï¼ /// </summary> /// <param name="conveyorLine">è¾é线å®ä¾ï¼CommonConveyorLine_CWç±»åï¼ï¼å å«è¾é线设å¤åºç¡ä¿¡æ¯åæä½æ¹æ³</param> /// <param name="command">è¾éçº¿ä»»å¡æä»¤å¯¹è±¡ï¼åç»çæ¬ï¼ï¼æºå¸¦ä»»å¡ç¼å·ãæ¡ç ãå设å¤ç¼ç çå ³é®æä»¤åæ°</param> /// <param name="childDeviceCode">å设å¤ç¼ç ï¼ç¨äºå®ä½è¾é线çå ·ä½å设å¤</param> public void RequestOutNextAddress(CommonConveyorLine_CW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) { // 1. æ¥è¯¢æå®æ¡ä»¶ä¸æ£å¨æ§è¡çè¾é线任å¡ï¼ä»»å¡ç¼å·+å设å¤ç¼ç +è¾é线æ¡ç ï¼ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode, command.ConveyorLineBarcode); // ä» å½æ¥è¯¢å°æææ§è¡ä¸ä»»å¡æ¶ï¼æ§è¡åç»é»è¾ if (task != null) { // 2. è·åç³»ç»é ç½®ä¸ãIPå°åãåç±»ä¸çé 置项ï¼ç¨äºæ¼æ¥MOMæ¥å£å°åï¼ var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); // æåMOMåºç¡IPé ç½®å¼ var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.MOMIP_BASE)?.ConfigValue; // æåæçæ ¼å£ç¶ææ¥å£çIPè·¯å¾é ç½®å¼ var ipAddress = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.TrayCellsStatus)?.ConfigValue; // æ ¡éªMOM IPé ç½®å®æ´æ§ï¼ç¼ºå¤±åæåºå¼å¸¸ç»æ¢æµç¨ if (wmsBase == null || ipAddress == null) { throw new InvalidOperationException("MOM IP æªé ç½®"); } // 3. æ¥è¯¢å½åè¾é线设å¤+å设å¤å¯¹åºçå·¥ä½é 置信æ¯ï¼å ³èPLCç¼ç ãåç¼ç ä¸MOM设å¤ç¼ç ï¼ Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationPLC == conveyorLine.DeviceCode && x.stationChildCode == childDeviceCode); // 4. æå»ºæçæ ¼å£ç¶ææ ¡éªç请æ±DTOï¼éé MOMæ¥å£å ¥åæ ¼å¼ï¼ TrayCellsStatusDto trayCells = new TrayCellsStatusDto() { Software = "WMS", TrayBarcode = command.ConveyorLineBarcode, EquipmentCode = stationManager.stationEquipMOM, SessionId = Guid.NewGuid().ToString(), EmployeeNo = "MITest", SceneType = "1", RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ") Software = "WMS", // è°ç¨æ¹ç³»ç»æ è¯ï¼åºå®ä¸ºWMSï¼ TrayBarcode = command.ConveyorLineBarcode, // è¾é线æ¡ç ï¼æçæ¡ç ï¼ EquipmentCode = stationManager.stationEquipMOM, // MOMç³»ç»å¯¹åºç设å¤ç¼ç SessionId = Guid.NewGuid().ToString(), // å¯ä¸ä¼è¯IDï¼é²æ¢éå¤è¯·æ±ï¼ EmployeeNo = "MITest", // æä½åå·¥ç¼å·ï¼æµè¯åºå®å¼ï¼ SceneType = "1", // åºæ¯ç±»åï¼1ä»£è¡¨å ¥ç«æ ¡éªåºæ¯ï¼ RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ") // UTCæ ¼å¼è¯·æ±æ¶é´ }; // æ¼æ¥å®æ´çMOMæ¥å£å°åï¼åºç¡IP + æ¥å£è·¯å¾ï¼ var MOMIpAddress = wmsBase + ipAddress; // 5. è°ç¨MOMæ¥å£ï¼POST弿¥è¯·æ±ï¼åæ¥çå¾ ç»æï¼ var result = HttpHelper.PostAsync(MOMIpAddress, trayCells.Serialize()).Result; // è®°å½æ¥å£è°ç¨æ¥å¿ï¼è¯·æ±åæ°ãè¿ååæ°ï¼ï¼ä¾¿äºé®é¢ææ¥ WriteInfo("å ¥ç«æ ¡éª", $"ã{childDeviceCode}ãå ¥ç«æ ¡éªè¯·æ±åæ°ã{trayCells.Serialize()}ã"); WriteInfo("å ¥ç«æ ¡éª", ""); WriteInfo("å ¥ç«æ ¡éª", $"ã{childDeviceCode}ãå ¥ç«æ ¡éªè¿ååæ°ã{result}ã"); // 6. è§£æMOMæ¥å£è¿åç»æä¸ºå®ä½å¯¹è±¡ ResultTrayCellsStatus result1 = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(result); // 7. 忝1ï¼æ¥å£æ ¡éªæå æ ä»»å¡å¤æ³¨éNGï¼æ£å¸¸æµç¨ï¼ if (result1.Success || task.Remark != "NG") { // æ´æ°ä»»å¡çä½ç½®ä¿¡æ¯ï¼ä»»å¡ç¼å·+å½åå°åï¼ï¼è¿åæ´æ°åçä»»å¡å¯¹è±¡ Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); if (newTask != null) { // å°æ´æ°åçä»»å¡å¯¹è±¡æ å°ä¸ºè¾é线æä»¤å¯¹è±¡ï¼éé æä»¤åéç»æï¼ ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); //conveyorLine.SendCommand(taskCommand, childDeviceCode); // åéæä»¤å°è¾é线å设å¤ï¼è·ååéç»æï¼å°è£ åçSendCommandæ¹æ³ï¼ bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode); // æä»¤åéæååæ´æ°è®¾å¤ååºç¶æå任塿°æ® if (sendFlag) { // æ´æ°è¾é线å设å¤ååºç¶æä¸º1ï¼ä»£è¡¨æä»¤å¤çæåï¼ conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), childDeviceCode); // æä¹ åæ´æ°åç任塿°æ®å°æ°æ®åº _taskService.UpdateData(newTask); } } } // 8. 忝2ï¼æ¥å£æ ¡éªå¤±è´¥ ä¸ ä»»å¡å¤æ³¨ä¸ºNGï¼å¼å¸¸æµç¨ï¼åéNGå°åæä»¤ï¼ else { // å°åä»»å¡å¯¹è±¡æ å°ä¸ºè¾é线æä»¤å¯¹è±¡ ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); // 设置æä»¤çç®æ å°å为工ä½é ç½®ä¸çNGåç¼ç ï¼å¯¼åå¼å¸¸å¤çå·¥ä½ï¼ taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(stationManager.stationNGChildCode); //conveyorLine.SendCommand(taskCommand, childDeviceCode); // åéNGå°åæä»¤å°è¾é线å设å¤ï¼è·ååéç»æ bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode); // æä»¤åéæååæ´æ°è®¾å¤ååºç¶æåä»»å¡ç¶æ if (sendFlag) { // æ´æ°è¾é线å设å¤ååºç¶æä¸º1 conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, Convert.ToInt16(1), childDeviceCode); // å°ä»»å¡ç¶ææµè½¬å°ä¸ä¸ä¸ªé¶æ®µï¼éé NGä»»å¡çç¶æé»è¾ï¼ _taskService.UpdateTaskStatusToNext(task); } } Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -173,13 +173,13 @@ if (commonStackerCrane.DeviceCode.Contains("CW") && task.TaskType==(int)TaskOutboundTypeEnum.InToOut) { var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1017" && x.stationType == 10 && x.Roadway == commonStackerCrane.DeviceCode); var stationinfo = _stationManagerRepository.QueryFirst(x => (x.stationPLC == "1017"||x.stationPLC=="1024") && x.stationType == 10 && x.Roadway == commonStackerCrane.DeviceCode); IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationinfo.stationPLC); if (device != null) { CommonConveyorLine_CW conveyorLine = (CommonConveyorLine_CW)device; conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, Convert.ToInt16(1815), stationinfo.stationChildCode); conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, Convert.ToInt16(4000), stationinfo.stationChildCode); Thread.Sleep(100); conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTaskNum, 1000, stationinfo.stationChildCode); } @@ -334,24 +334,11 @@ else { IDevice? device = null; if (task.Roadway.Contains("GWSC3")) if (task.Roadway.Contains("GW")) { device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "2025"); if (device != null) { CommonConveyorLine_GW conveyorLine = (CommonConveyorLine_GW)device; if (conveyorLine.IsOccupied(task.TargetAddress))//åºåºç«å°æªè¢«å ç¨ { return task; } } else { _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°åºåºç«å°ã{task.TargetAddress}ã对åºçéè®¯å¯¹è±¡ï¼æ æ³å¤æåºåºç«å°æ¯å¦è¢«å ç¨"); } } else if (task.Roadway.Contains("GW")) { device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1015"); string targetDeviceCode = task.Roadway == "GWSC3" ? "2025" : "1015"; device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == targetDeviceCode); if (device != null) { CommonConveyorLine_GW conveyorLine = (CommonConveyorLine_GW)device; Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob_NewCW/CommonStackerCrane_NewCWJob.cs
@@ -173,13 +173,13 @@ if (commonStackerCrane.DeviceCode.Contains("CW") && task.TaskType==(int)TaskOutboundTypeEnum.InToOut) { var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1017" && x.stationType == 10 && x.Roadway == commonStackerCrane.DeviceCode); var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1024" && x.stationType == 10 && x.Roadway == commonStackerCrane.DeviceCode); IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationinfo.stationPLC); if (device != null) { CommonConveyorLine_NewCW conveyorLine = (CommonConveyorLine_NewCW)device; conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, Convert.ToInt16(1815), stationinfo.stationChildCode); conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, Convert.ToInt16(4000), stationinfo.stationChildCode); Thread.Sleep(100); conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTaskNum, 1000, stationinfo.stationChildCode); } Code Management/WMS/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/PalletWithDetailExportModel.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEA_Model.Models.BasicModel { public class PalletWithDetailExportModel { // 主表PalletInfoåæ®µï¼æééæ©ï¼ public int Id { get; set; } public string PalletCode { get; set; } public string LocationCode { get; set; } public bool IsFull { get; set; } public string Remark { get; set; } public string Creater { get; set; } public DateTime CreateDate { get; set; } public DateTime OutboundTime { get; set; } // å表PalletDetailçMaterielCodeåæ®µ public string MaterielCode { get; set; } } } Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.dbBinary files differ
Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shmBinary files differ
Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-walBinary files differ
Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.dbBinary files differ
Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shmBinary files differ
Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-walBinary files differ
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
@@ -1,4 +1,6 @@ using AngleSharp.Dom; using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Excel; using Mapster; using Masuit.Tools; using SqlSugar; @@ -10,6 +12,8 @@ using WIDESEA_Cache; using WIDESEA_Common; using WIDESEA_Core; using WIDESEA_IStorageBasicService; using WIDESEA_Model.Models.BasicModel; namespace WIDESEA_StorageBasicService; @@ -18,10 +22,12 @@ private readonly ISimpleCacheService _simpleCacheService; private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository; public StockInfoService(IStockInfoRepository BaseDal, ISimpleCacheService simpleCacheService, ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository) : base(BaseDal) private readonly IStockInfoDetailRepository _IStockInfoDetailRepository; public StockInfoService(IStockInfoRepository BaseDal, ISimpleCacheService simpleCacheService, ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository, IStockInfoDetailRepository stockInfoDetailService) : base(BaseDal) { _simpleCacheService = simpleCacheService; _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository; _IStockInfoDetailRepository = stockInfoDetailService; } /// <summary> @@ -151,6 +157,71 @@ .ToDictionary(x => x.Key, x => x.Count()); return result; } public override WebResponseContent Export(PageDataOptions options) { WebResponseContent content = new WebResponseContent(); try { // 1. æå»ºä¸»è¡¨æ¥è¯¢æ¡ä»¶åæåº string wheres = ValidatePageOptions(options); Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties); // 2. æ¥è¯¢ä¸»è¡¨æ°æ® List<DtStockInfo> mainList = BaseDal.QueryData(wheres, orderbyDic); if (!mainList.Any()) { return WebResponseContent.Instance.OK("æ æ°æ®å¯å¯¼åº"); } // 3. æ¹éæ¥è¯¢åè¡¨æ°æ®ï¼éè¿ä¸»è¡¨Idå ³èï¼ var mainIds = mainList.Select(m => m.Id).Distinct().ToList(); List<DtStockInfoDetail> detailList = _IStockInfoDetailRepository.Db .Queryable<DtStockInfoDetail>() .Where(d => mainIds.Contains(d.StockId)) .ToList(); // 4. å ³è主表ååè¡¨æ°æ®ï¼åªååè¡¨ç¬¬ä¸æ¡ï¼ var exportData = new List<PalletWithDetailExportModel>(); foreach (var main in mainList) { // åªåå½åä¸»è¡¨æ°æ®å ³èçåè¡¨ç¬¬ä¸æ¡ï¼å¯éè¿OrderByæå®æåºï¼ç¡®ä¿åå°æ³è¦çç¬¬ä¸æ¡ï¼ var firstDetail = detailList .Where(d => d.StockId == main.Id) .OrderBy(d => d.Id) // å¯éï¼æå表Idæåºï¼ç¡®ä¿ç»æç¨³å®ï¼å¯æ¿æ¢ä¸ºå ¶ä»åæ®µï¼ .FirstOrDefault(); var exportModel = new PalletWithDetailExportModel { Id = main.Id, PalletCode = main.PalletCode, LocationCode = main.LocationCode, IsFull = main.IsFull, Remark = main.Remark, Creater = main.Creater, CreateDate = main.CreateDate, OutboundTime = (DateTime)main.OutboundTime, // æåè¡¨æ°æ®ååç¬¬ä¸æ¡çç©æç¼ç ï¼æ å为空 MaterielCode = firstDetail?.MaterielCode ?? "" }; exportData.Add(exportModel); } // 5. å¯¼åºæ°æ®ï¼é»è¾ä¸åï¼ string savePath = AppDomain.CurrentDomain.BaseDirectory + "ExcelExport"; IExporter exporter = new ExcelExporter(); byte[] data = exporter.ExportAsByteArray(exportData).Result; string fileName = "æçåç©æç¼ç æ°æ®.xlsx"; FileHelper.WriteFile(savePath, fileName, data); content = WebResponseContent.Instance.OK(data: Path.Combine(savePath, fileName)); } catch (Exception ex) { content = WebResponseContent.Instance.Error(ex.Message); } return content; } //public override WebResponseContent UpdateData(DtStockInfo entity) //{ Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -665,10 +665,14 @@ { // æ¥è¯¢ä»»å¡ var task = await QueryTaskByPalletCode(input.PalletCode); if (task != null) if (task != null && (task.TaskState == (int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew)) { return CreateAndReturnWMSTaskDTO(task); } if(task != null && (task.TaskState != (int)TaskInStatusEnum.InNew || task.TaskState != (int)TaskOutStatusEnum.OutNew)) { return content.Error($"æç{input.PalletCode}åå¨ä»»å¡"); } // æ¥è¯¢åºåä¿¡æ¯ï¼è¿éåç»è¦å®åè´¨æ£ååºé»è¾ï¼ var stock = await QueryStockInfo(input.PalletCode); Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/Debug/net6.0/staticwebassets/msbuild.buildMultiTargeting.WIDESEA_WMSServer.props
ÎļþÒÑɾ³ý Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/Debug/net6.0/staticwebassets/msbuild.buildTransitive.WIDESEA_WMSServer.props
ÎļþÒÑɾ³ý