StandardPda/MES.Service/Dto/webApi/ItemStockQueryDto.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ namespace MES.Service.Dto.webApi; /// <summary> /// ç©æåºåæ¥è¯¢è¯·æ±DTO /// </summary> public class ItemStockQueryDto { /// <summary> /// ç¨æ·ç¼ç /// </summary> public string? UserCode { get; set; } /// <summary> /// å符串éå(妿¡ç ãç©æç¼å·ç) /// </summary> public List<string>? ItemBarcodes { get; set; } } StandardPda/MES.Service/Dto/webApi/ReturnableStockDto.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,87 @@ namespace MES.Service.Dto.webApi; /// <summary> /// å¯éè´§ç©æåºåDTO /// </summary> public class ReturnableStockDto { /// <summary> /// è¯åç¶æ (0=ä¸è¯å, 1=è¯å) /// </summary> public string? IqcStatus { get; set; } /// <summary> /// æ¯å¦æå (0=éæå, 1=æå) /// </summary> public string? ItemType { get; set; } /// <summary> /// æ¯æçç¼å· /// </summary> public string? StackCode { get; set; } /// <summary> /// ä»åº /// </summary> public string? DepotCode { get; set; } /// <summary> /// ä»åºåç§° /// </summary> public string? DepotName { get; set; } /// <summary> /// èæåºä½ /// </summary> public string? DepotSectionsCode { get; set; } /// <summary> /// ç©æç¼å· /// </summary> public string? ItemNo { get; set; } /// <summary> /// ç©æåç§° /// </summary> public string? ItemName { get; set; } /// <summary> /// ç©æè§æ ¼ /// </summary> public string? ItemModel { get; set; } /// <summary> /// ç©ææ°é /// </summary> public decimal? Quantity { get; set; } /// <summary> /// ç©æåä½ /// </summary> public string? ItemUnit { get; set; } /// <summary> /// ç©æåä½ä¸æåç§° /// </summary> public string? ItemUnitName { get; set; } /// <summary> /// å ¥åºæ¶é´ /// </summary> public DateTime? IndepDate { get; set; } /// <summary> /// ç»ç»ç¼ç /// </summary> public string? OrgCode { get; set; } /// <summary> /// ç»ç»åç§° /// </summary> public string? OrgName { get; set; } /// <summary> /// ç©ææ¡ç /// </summary> public string? ItemBarcode { get; set; } } StandardPda/MES.Service/Modes/MesInvItemStocks.cs
@@ -200,4 +200,82 @@ /// </summary> [SugarColumn(ColumnName = "LINE_K3ID")] public decimal? LineK3id { get; set; } /// <summary> /// ç©æID /// </summary> [SugarColumn(ColumnName = "ITEM_ID")] public decimal? ItemId { get; set; } /// <summary> /// æ¯å¦å ç¨ /// </summary> [SugarColumn(ColumnName = "IS_ZY")] public decimal? IsZy { get; set; } /// <summary> /// éå®è®¢å /// </summary> [SugarColumn(ColumnName = "SALES_ORDER")] public string? SalesOrder { get; set; } /// <summary> /// å¯è§æ§(0-å¯è§ï¼1-ä¸å¯è§) /// </summary> [SugarColumn(ColumnName = "VISABLE")] public short? Visable { get; set; } /// <summary> /// æ¯å¦ååº /// </summary> [SugarColumn(ColumnName = "IS_JC")] public decimal? IsJc { get; set; } /// <summary> /// ååºåå· /// </summary> [SugarColumn(ColumnName = "JC_BILL_NO")] public string? JcBillNo { get; set; } /// <summary> /// 计åè·è¸ªå· /// </summary> [SugarColumn(ColumnName = "FMTONO")] public string? Fmtono { get; set; } /// <summary> /// ä¸ç®±ç /// </summary> [SugarColumn(ColumnName = "MEDIUMBOXCODE")] public string? MediumBoxCode { get; set; } /// <summary> /// æ æ¿ç /// </summary> [SugarColumn(ColumnName = "STACKCODE")] public string? StackCode { get; set; } /// <summary> /// ä»åºID /// </summary> [SugarColumn(ColumnName = "DEPOT_ID")] public decimal? DepotId { get; set; } /// <summary> /// ç©ææ¡ç D /// </summary> [SugarColumn(ColumnName = "ITEM_BARCODE_D")] public string? ItemBarcodeD { get; set; } /// <summary> /// ç©ææ¡ç Z /// </summary> [SugarColumn(ColumnName = "ITEM_BARCODE_Z")] public string? ItemBarcodeZ { get; set; } /// <summary> /// æ¯å¦æ¨é /// </summary> [SugarColumn(ColumnName = "IS_TS")] public decimal? IsTs { get; set; } } StandardPda/MES.Service/Modes/MesItems.cs
@@ -534,4 +534,10 @@ /// </summary> [SugarColumn(ColumnName = "WAREHOUSEKEEPER")] public string? WarehouseKeeper { get; set; } /// <summary> /// 客æ·ç©æç¼ç /// </summary> [SugarColumn(ColumnName = "KHWLBM")] public string? Khwlbm { get; set; } } StandardPda/MES.Service/Modes/MesUnit.cs
@@ -9,7 +9,7 @@ public class MesUnit { /// <summary> /// BASEINFO /// 主é®ID /// </summary> [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)] public decimal Id { get; set; } @@ -63,11 +63,13 @@ public string? LastupdateBy { get; set; } /// <summary> /// å ¬å¸ç¼å· /// </summary> [SugarColumn(ColumnName = "COMPANY")] public string? Company { get; set; } /// <summary> /// å·¥åç¼å· /// </summary> [SugarColumn(ColumnName = "FACTORY")] public string? Factory { get; set; } StandardPda/MES.Service/Modes/MessageCenter.cs
@@ -130,6 +130,12 @@ [SugarColumn(ColumnName = "UPDATE_DATE")] public string? UpdateDate { get; set; } /// <summary> /// æªè½¬ç json /// </summary> [SugarColumn(ColumnName = "DATA_INSERTED")] public string? DataInserted { get; set; } [SugarColumn(IsIgnore = true)] public int? isShow { get; set; } StandardPda/MES.Service/Modes/XbRackingTaskSyxtLog.cs
@@ -121,4 +121,16 @@ /// </summary> [SugarColumn(ColumnName = "LOCCODECHINESE")] public string? LocCodeChinese { get; set; } /// <summary> /// è´¨æ£ç¶æ /// </summary> [SugarColumn(ColumnName = "QCSTATUS")] public decimal? QcStatus { get; set; } /// <summary> /// ç©ææ¡ç /// </summary> [SugarColumn(ColumnName = "ITEM_BARCODE")] public string? ItemBarcode { get; set; } } StandardPda/MES.Service/obj/Debug/net8.0/MES.Service.AssemblyInfo.cs
@@ -13,7 +13,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("MES.Service")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2f4699ff377f0e5ea3640bb3670b2fbfbd56e3fb")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+03013bae1636497e8ea1946eb44831d8794fa055")] [assembly: System.Reflection.AssemblyProductAttribute("MES.Service")] [assembly: System.Reflection.AssemblyTitleAttribute("MES.Service")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] StandardPda/MES.Service/service/Warehouse/MesInvItemOutsManager.cs
@@ -16,6 +16,11 @@ return UseTransaction(db => { // æ ¹æ®Typeæ§è¡ä¸åçé»è¾ switch (itemOutFrom.Type) { case "1": { // æ ¹æ®AsnNoåMesNo对æç»è¿è¡åç» var groupedItems = itemOutLists .GroupBy(item => new { item.AsnNo, item.MesNo, item.SqNo }) @@ -24,11 +29,6 @@ var result = 1; foreach (var group in groupedItems) { // if (group.Key.AsnNo == null) // { // throw new NotImplementedException("AsnNoä¸è½ä¸ºç©º"); // } if (group.Key.MesNo == null) throw new NotImplementedException("å ¥åºååå·ä¸è½ä¸ºç©º"); @@ -50,11 +50,6 @@ SupperId = itemOutFrom.SupperId }; // æ ¹æ®Typeæ§è¡ä¸åçé»è¾ switch (tempItemOutFrom.Type) { case "1": { var mesInvItemOuts = Db.Queryable<MesInvItemOuts>() .Where(s => s.BillTypeId == BILL_TYPE_ID && s.TransactionNo == TRANSACTION_NO @@ -71,21 +66,17 @@ // 为å½ååç»ä¿åæ°æ® var groupResult = Save(tempItemOutFrom, group.ToList()); if (!groupResult) result = 0; break; } case "4": var removeResult = Remove(tempItemOutFrom); if (!removeResult) result = 0; break; default: result = 0; break; } } return result; } case "4": // å 餿ä½ä¸éè¦åç»ï¼ç´æ¥æ ¹æ®RtnNoå é¤å³å¯ var removeResult = Remove(itemOutFrom); return removeResult ? 1 : 0; default: return 0; } }) > 0; } StandardPda/MES.Service/service/Warehouse/MesInvItemStocksManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,287 @@ using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; using SqlSugar; using Newtonsoft.Json; using System.Text; namespace MES.Service.service.Warehouse; public class MesInvItemStocksManager : Repository<MesInvItemStocks> { /// <summary> /// æ¥è¯¢å¯ä»¥éè´§çç©æ /// </summary> /// <returns>å¯éè´§ç©æåºåå表</returns> public List<ReturnableStockDto> GetReturnableStocks() { // 1. æ¥è¯¢XB_RACKING_TASK_SYXT_LOG䏿æçæ¡ç å¹¶å»é var distinctBarcodes = Db.Queryable<XbRackingTaskSyxtLog>() .Where(x => !string.IsNullOrEmpty(x.ItemBarcode)) .Select(x => x.ItemBarcode) .Distinct() .ToList(); if (distinctBarcodes == null || !distinctBarcodes.Any()) { return new List<ReturnableStockDto>(); } // 2. ä½¿ç¨æ¡ç æ¥è¯¢MES_INV_ITEM_STOCKSä¸çæ°æ®,å ³èMES_ITEMSãMES_DEPOTSãORGANIZEãMES_UNIT表 var queryResult = Db.Queryable<MesInvItemStocks>() .LeftJoin<MesItems>((stock, item) => stock.ItemId == item.Id) .LeftJoin<MesDepots>((stock, item, depot) => stock.DepotsCode == depot.DepotCode) .LeftJoin<Organize>((stock, item, depot, org) => item.UseOrg == org.Id.ToString()) .LeftJoin<MesUnit>((stock, item, depot, org, unit) => item.ItemUnit == unit.Id.ToString()) .Where((stock, item, depot, org, unit) => distinctBarcodes.Contains(stock.ItemBarcode) && stock.Quantity > 0) .Select((stock, item, depot, org, unit) => new { IqcStatus = stock.IqcStatus, StackCode = stock.StackCode, DepotCode = stock.DepotsCode, DepotName = depot.DepotName, DepotSectionsCode = stock.DepotSectionsCode, ItemNo = item.ItemNo, ItemName = item.ItemName, ItemModel = item.ItemModel, Quantity = stock.Quantity, ItemUnit = item.ItemUnit, ItemUnitName = unit.Fname, IndepDate = stock.IndepDate, OrgCode = org.Fnumber, OrgName = org.Fname, ItemBarcode = stock.ItemBarcode }) .ToList(); // 3. å¨å åä¸è¿è¡æ°æ®è½¬æ¢ var result = queryResult.Select(x => new ReturnableStockDto { IqcStatus = x.IqcStatus == "å·²æ£" ? "1" : "0", ItemType = x.DepotName == "åææä»" ? "0" : "1", StackCode = x.StackCode, DepotCode = x.DepotCode, DepotName = x.DepotName, DepotSectionsCode = x.DepotSectionsCode, ItemNo = x.ItemNo, ItemName = x.ItemName, ItemModel = x.ItemModel, Quantity = x.Quantity, ItemUnit = x.ItemUnit, ItemUnitName = x.ItemUnitName, IndepDate = x.IndepDate, OrgCode = x.OrgCode, OrgName = x.OrgName, ItemBarcode = x.ItemBarcode }).ToList(); return result; } /// <summary> /// æ ¹æ®ç¨æ·ç¼ç åå符串çæéæè¯·æ±å /// </summary> /// <param name="dto">æ¥è¯¢åæ°DTO</param> /// <returns>æ¯å¦æå</returns> public bool CreateReturnMaterialRequest(ItemStockQueryDto dto) { // 请æ±å°å: http://172.20.5.5:50080/Services/Wmcs/RetrieveTask // åæ°æ ¼å¼: [{"taskCode":"xxx", "taskType":"1", "palletCode":"xxx", "widthType":"180", "station":"3"}] if (dto?.ItemBarcodes == null || !dto.ItemBarcodes.Any()) { return false; } try { // 对æ¯ä¸ªæ¡ç åç¬å¤ç foreach (var barcode in dto.ItemBarcodes) { decimal messageId = 0; string taskCode = ""; try { // 1. æ¥è¯¢è¯¥æ¡ç 对åºçåºåä¿¡æ¯ï¼æç©æåæ¹å·æ±æ» var stockItems = Db.Queryable<MesInvItemStocks>() .LeftJoin<MesItems>((stock, item) => stock.ItemId == item.Id) .Where((stock, item) => stock.ItemBarcode == barcode && stock.Quantity > 0) .GroupBy((stock, item) => new { stock.ItemId, stock.LotNo }) .Select((stock, item) => new { ItemNo = SqlFunc.AggregateMax(item.ItemNo), ItemName = SqlFunc.AggregateMax(item.ItemName), LotNo = stock.LotNo ?? "", Quantity = SqlFunc.AggregateSum(stock.Quantity), StackCode = SqlFunc.AggregateMax(stock.DepotSectionsCode) }) .ToList(); if (!stockItems.Any()) { continue; // è·³è¿æ²¡æåºåçæ¡ç } // 2. çæä»»å¡å· taskCode = Db.Ado.GetString( "SELECT getbillcode1(1000, 1000, 'LKRK') FROM DUAL"); // 3. è·åç¬¬ä¸æ¡è®°å½ç¨äºä¸»è¡¨ var firstStock = stockItems.First(); // 4. æå»ºè¯·æ±åæ°ï¼æ°ç»æ ¼å¼ï¼ var requestData = new { taskCode = taskCode, taskType = "1", palletCode = firstStock.StackCode ?? "", widthType = "180", station = "3" }; var requestList = new[] { requestData }; var jsonRequest = JsonConvert.SerializeObject(requestList); // 5. è®°å½å°MessageCenter表(请æ±å) var messageCenter = new MessageCenter { TableName = "XB_RACKING_TASK_SYXT_LOG", Url = "http://172.20.5.5:50080/Services/Wmcs/RetrieveTask", Method = "POST", Status = 1, CreateBy = dto.UserCode, CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Title = "ç«åºåºåºä»»å¡", PageName = taskCode, Data = jsonRequest, DataInserted = jsonRequest }; messageId = Db.Insertable(messageCenter).ExecuteReturnIdentity(); // 6. è°ç¨HTTPæ¥å£ var apiUrl = "http://172.20.5.5:50080/Services/Wmcs/RetrieveTask"; using var http = new HttpClient(); http.Timeout = TimeSpan.FromSeconds(30); var content = new StringContent(jsonRequest, Encoding.UTF8, "application/json"); var response = http.PostAsync(apiUrl, content).Result; var responseStr = response.Content.ReadAsStringAsync().Result; //æ¥å£çååºæ¯ {"Code":"200","JsonMessage":null,"CodeMessage":null,"Data":null} //åªæå½Code为200æ¶ï¼ææå ¥XbRackingTaskSyxtLog表 ä¸ç¶å°±æ¯æåºå¼å¸¸ï¼å¼å¸¸çå 容为JsonMessageä¸çå 容 // 6. è§£æååºJSON dynamic responseJson = null; try { responseJson = JsonConvert.DeserializeObject<dynamic>(responseStr); } catch { throw new Exception($"è§£æååºå¤±è´¥: {responseStr}"); } var code = responseJson?.Code?.ToString(); var jsonMessage = responseJson?.JsonMessage?.ToString(); // 7. æ ¹æ®Code夿æåæå¤±è´¥ if (code == "200") { // æåï¼æå ¥ä»»å¡è®°å½å°XB_RACKING_TASK_SYXT_LOG表 var taskLog = new XbRackingTaskSyxtLog { CreateBy = dto.UserCode, CreateDate = DateTime.Now, TaskCode = taskCode, TaskType = "ç«åºåºåºè¯·æ±", PalletCode = firstStock.StackCode, WidthType = 180, MaterialName = firstStock.ItemName, MaterialCode = firstStock.ItemNo, BatchNo = firstStock.LotNo, Quantity = firstStock.Quantity, WarehousingJson = responseStr, QcStatus = 2, ItemBarcode = barcode, Code = "200", JsonMessage = jsonMessage ?? "æå" }; Db.Insertable(taskLog).ExecuteCommand(); // æ´æ°MessageCenter表为æåç¶æ var successMessage = "ç«åºä»»å¡ä¸åæåï¼ä»»å¡å·ä¸º" + taskCode; Db.Updateable<MessageCenter>() .SetColumns(it => it.Result == 1) .SetColumns(it => it.ResultData == successMessage) .SetColumns(it => it.DealWith == 1) .Where(it => it.Id == messageId) .ExecuteCommand(); } else { // å¤±è´¥ï¼æ´æ°MessageCenterè¡¨ä¸ºå¤±è´¥ç¶æ var errorMessage = string.IsNullOrEmpty(jsonMessage) ? "ä»»å¡è¯·æ±å¤±è´¥" : jsonMessage; var failureMessage = (string)("ç«åºä»»å¡ä¸å失败: " + errorMessage); Db.Updateable<MessageCenter>() .SetColumns(it => it.Result == 0) .SetColumns(it => it.ResultData == failureMessage) .SetColumns(it => it.DealWith == 0) .Where(it => it.Id == messageId) .ExecuteCommand(); // æåºå¼å¸¸ï¼å¼å¸¸å 容为JsonMessage throw new Exception(errorMessage); } } catch (Exception ex) { // å¼å¸¸æ¶ä¹è¦æ´æ°MessageCenter表 if (messageId > 0) { var exceptionMessage = (string)("ç«åºä»»å¡å¼å¸¸: " + ex.Message); Db.Updateable<MessageCenter>() .SetColumns(it => it.Result == 0) .SetColumns(it => it.ResultData == exceptionMessage) .SetColumns(it => it.DealWith == 0) .Where(it => it.Id == messageId) .ExecuteCommand(); } // ç»§ç»æåºå¼å¸¸ throw; } } return true; } catch (Exception ex) { // è®°å½æ¥å¿å¹¶éæ°æåºå¼å¸¸ï¼è®©Controllerå±è·åå ·ä½éè¯¯ä¿¡æ¯ Console.WriteLine($"çæéæè¯·æ±å失败: {ex.Message}"); throw; } } } StandardPda/MESApplication/Controllers/Warehouse/MesInvItemStocksController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,75 @@ using System.Dynamic; using MES.Service.Dto.webApi; using MES.Service.Modes; using MES.Service.service.Warehouse; using MES.Service.util; using Microsoft.AspNetCore.Mvc; namespace MESApplication.Controllers.Warehouse; [ApiController] [Route("api/[controller]")] public class MesInvItemStocksController : ControllerBase { private readonly MesInvItemStocksManager m = new(); /// <summary> /// è·åå¯éè´§ç©æåºå /// </summary> /// <returns></returns> [HttpPost("GetReturnableStocks")] public ResponseResult GetReturnableStocks() { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = m.GetReturnableStocks(); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// <summary> /// çæéæè¯·æ±å /// </summary> /// <param name="dto">éæè¯·æ±åæ°</param> /// <returns></returns> [HttpPost("CreateReturnMaterialRequest")] public ResponseResult CreateReturnMaterialRequest([FromBody] ItemStockQueryDto dto) { try { var result = m.CreateReturnMaterialRequest(dto); if (result) { return new ResponseResult { status = 0, message = "éæè¯·æ±åçææå", data = null }; } else { return new ResponseResult { status = 1, message = "éæè¯·æ±åçæå¤±è´¥", data = null }; } } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } } StandardPda/MESApplication/obj/Debug/net8.0/MESApplication.AssemblyInfo.cs
@@ -13,7 +13,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("MESApplication")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2f4699ff377f0e5ea3640bb3670b2fbfbd56e3fb")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+03013bae1636497e8ea1946eb44831d8794fa055")] [assembly: System.Reflection.AssemblyProductAttribute("MESApplication")] [assembly: System.Reflection.AssemblyTitleAttribute("MESApplication")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]