Browse Source

完成剩余出库接口逻辑开发工作

master
taoleite 3 weeks ago
parent
commit
206f31a560
  1. 107
      Controllers/OutputRequestController.cs
  2. 1
      Data/MichelinDbContext.cs
  3. 2
      Entities/MANAGE_DETAIL.cs
  4. 8
      Entities/STORAGE_MAIN.cs
  5. 43
      Entities/V_STORAGE_LIST.cs
  6. 2
      Models/CancelOutputRequest.cs
  7. 4
      Repositories/Implement/ManageMainRepository.cs
  8. 6
      Repositories/Implement/StorageMainRepository.cs

107
Controllers/OutputRequestController.cs

@ -8,6 +8,7 @@ using WMS_GIRAF_Interface.Entities;
using WMS_GIRAF_Interface.Models;
using WMS_GIRAF_Interface.Repositories.Interface;
using WMS_GIRAF_Interface.TaskServices;
using Newtonsoft.Json;
namespace WMS_GIRAF_Interface.Controllers
{
@ -34,6 +35,8 @@ namespace WMS_GIRAF_Interface.Controllers
{
bool bResult = true;
string sResult = string.Empty;
Log.Information($"{nameof(OutputRequestByProductIds)} Received new request:{JsonConvert.SerializeObject(outputRequest)}");
OutputRequestByProductIdsReturn returnJsonString = new OutputRequestByProductIdsReturn();
if (outputRequest!=null)
{
@ -171,11 +174,12 @@ namespace WMS_GIRAF_Interface.Controllers
{
bool bResult = true;
string sResult = string.Empty;
Log.Information($"{nameof(OutputRequestBySku)} Received new request:{JsonConvert.SerializeObject(outputRequest)}");
OutputRequestBySkuReturn returnJsonString = new OutputRequestBySkuReturn();
if (outputRequest!=null)
{
//先判断当前sku是否有可用库存,然后筛选出库,如果没有的话就就启用备用sku的库存出库
if (context.V_StorageList.FromSqlRaw($"SELECT TOP 1 STOCK_BARCODE FROM V_STORAGE_LIST WHERE requestNumber = '{outputRequest.outputRequestId}'").ToList().Count>0)
if (context.V_StorageList.FromSqlRaw($"SELECT TOP 1 * FROM V_STORAGE_LIST WHERE requestNumber = '{outputRequest.outputRequestId}'").ToList().Count>0)
{
returnJsonString.status = "0";
returnJsonString.evacuationPost = string.Empty;
@ -200,7 +204,7 @@ namespace WMS_GIRAF_Interface.Controllers
//无需筛选巷道状态,直接选择可用轮胎,只需考虑availableEvacuationPosts即可,筛选lane_way
#region outlevel 4/3/2/1/0
var poolNumber = string.Empty;
string queryStringForLevel1234 = $@"SELECT TOP 1 STORAGE_ID,WAREHOUSE_CODE FROM V_STORAGE_LIST
string queryStringForLevel1234 = $@"SELECT TOP 1 * FROM V_STORAGE_LIST
WHERE RUN_STATUS = 'Enable'
AND (requestNumber IS NULL OR requestNumber = '')
AND IsBlocked = {(outputRequest.productIsBlocked ? 1 : 0)}
@ -218,7 +222,7 @@ namespace WMS_GIRAF_Interface.Controllers
poolNumber = checkHighPriorityTire[0].WAREHOUSE_CODE;
if (storageId != 0 && storageId !=null)
{
var getStorageMain = storageMainRepository.GetStorageMain("StorageId", storageId.ToString());
var getStorageMain = storageMainRepository.GetStorageMain("storageId", storageId.ToString());
if (getStorageMain != null)
{
@ -255,7 +259,7 @@ namespace WMS_GIRAF_Interface.Controllers
{
//未找到当前库存信息
//查看level为0的库存信息
var checkLowPriorityTire = $@"SELECT STORAGE_ID,WAREHOUSE_CODE FROM V_STORAGE_LIST
var checkLowPriorityTire = $@"SELECT * FROM V_STORAGE_LIST
WHERE RUN_STATUS = 'Enable'
AND OutLevel = 0
AND IsBlocked = 0
@ -273,7 +277,7 @@ namespace WMS_GIRAF_Interface.Controllers
if (storageId!=0 && storageId!=null)
{
var storageMain = storageMainRepository.GetStorageMain("ID", storageId.ToString());
var storageMain = storageMainRepository.GetStorageMain("storageId", storageId.ToString());
if (storageMain != null)
{
storageMain.requestNumber = outputRequest.outputRequestId;
@ -323,6 +327,13 @@ namespace WMS_GIRAF_Interface.Controllers
KeepRequestInMemoryEvenIfLackOfProductIssue = true
};
context.Manage_Detail.Add(manageDetail);
context.SaveChanges();
bResult = true;
returnJsonString.status = "1";
returnJsonString.evacuationPost = outputRequest.evacuationPost;
returnJsonString.estimatedExitTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
returnJsonString.errorDetails = string.Empty;
Log.Information($" Create manage_detail task completed! the detail list :{JsonConvert.SerializeObject(manageDetail)} ");
}
@ -340,16 +351,96 @@ namespace WMS_GIRAF_Interface.Controllers
return returnJsonString;
}
/// <summary>
/// 修改任务信息
/// </summary>
/// <param name="updateOutputRequest"></param>
[HttpPut]
public void UpdateOutputRequest(UpdateOutputRequest.RootObjectForUpdateOutputRequest updateOutputRequest)
public UpdateOutputRequestReturn UpdateOutputRequest(UpdateOutputRequest.RootObjectForUpdateOutputRequest? updateOutputRequest)
{
Log.Information($"{nameof(UpdateOutputRequest)} Received new request:{JsonConvert.SerializeObject(updateOutputRequest)}");
if (updateOutputRequest!=null)
{
if (!string.IsNullOrEmpty(updateOutputRequest.outputRequestId) )
{
var checkTask =
manageMainRepository.GetManageMain("requestId", updateOutputRequest.outputRequestId);
if (checkTask!=null)
{
//更新信息
checkTask.TargetOutputDateInUtc = updateOutputRequest.expectedCompletionDate;
manageMainRepository.UpdateManageMain(checkTask);
Log.Information($"update output request : TargetOutputDateInUtc new is {updateOutputRequest.expectedCompletionDate};");
return new UpdateOutputRequestReturn
{
status = "1",
errorDetails = null
};
}
else
{
//无任务情况下,
return new UpdateOutputRequestReturn
{
status = "5",
errorDetails = "OutputRequestAlreadyPerformed"
};
}
}
else
{
//任务ID为空
return new UpdateOutputRequestReturn()
{
status = "2",
errorDetails = "UnknownOutputRequestId"
};
}
}
else
{
//报错,入参为空
return new UpdateOutputRequestReturn()
{
status = "0",
errorDetails = "RefusedBecauseEmptyInputParameter"
};
}
}
}
/// <summary>
/// 取消任务
/// </summary>
/// <param name="cancelOutputRequest"></param>
[HttpPost("Cancel")]
public void CancelOutputRequest(CancelOutputRequest.RootObjectForCancelOutputRequest cancelOutputRequest)
public CancelOutputRequestReturn CancelOutputRequest(CancelOutputRequest.RootObjectForCancelOutputRequest? cancelOutputRequest)
{
Log.Information($"{nameof(CancelOutputRequest)} Received new request:{JsonConvert.SerializeObject(cancelOutputRequest)}");
if (cancelOutputRequest!=null)
{
if (!string.IsNullOrEmpty(cancelOutputRequest.ouputRequestId))
{
}
else
{
//requestID 为空
return new CancelOutputRequestReturn
{
status = "2",
errorDetails = "RefusedBecauseEmptyOutputRequestID"
};
}
}
else
{
return new CancelOutputRequestReturn
{
status = "0",
errorDetails = "RefusedBecauseEmptyInputParameter"
};
}
}
}
}

1
Data/MichelinDbContext.cs

@ -39,6 +39,7 @@ public class MichelinDbContext : DbContext
modelBuilder.Entity<V_MANAGE_IN_COUNT>().HasNoKey();
modelBuilder.Entity<V_WH_CELL_ENABLE>().HasNoKey();
modelBuilder.Entity<V_STORAGE_LIST>().HasNoKey();
modelBuilder.Entity<V_STORAGE_LIST>(x => x.Property(e => e.MANAGE_LIST_QUANTITY).HasColumnType("decimal"));
}
}

2
Entities/MANAGE_DETAIL.cs

@ -8,7 +8,7 @@ namespace WMS_GIRAF_Interface.Entities;
public class MANAGE_DETAIL
{
[Column("requestNumber")]
[Key]
public string? requestNumber { get; set; }
[Column("poolNumber")]

8
Entities/STORAGE_MAIN.cs

@ -24,13 +24,13 @@ public class STORAGE_MAIN
[Column("PopulationNumber")]
public string? PopulationNumber { get; set; }
[Column("FabricationDateTimeInUtc")]
public string? FabricationDateTimeInUtc { get; set; }
public DateTime? FabricationDateTimeInUtc { get; set; }
[Column("DryDateTimeInUtc")]
public string? DryDateTimeInUtc { get; set; }
public DateTime? DryDateTimeInUtc { get; set; }
[Column("OldDateTimeInUtc")]
public string? OldDateTimeInUtc { get; set; }
public DateTime? OldDateTimeInUtc { get; set; }
[Column("HdvDateTimeInUtc")]
public string? HdvDateTimeInUtc { get; set; }
public DateTime? HdvDateTimeInUtc { get; set; }
[Column("IsPriority")]
public bool? IsPriority { get; set; }
[Column("IsBlocked")]

43
Entities/V_STORAGE_LIST.cs

@ -6,7 +6,7 @@ namespace WMS_GIRAF_Interface.Entities;
public class V_STORAGE_LIST
{
[Column("PRIORITY")]
public string? PRIORITY { get; set; }
public int? PRIORITY { get; set; }
[Column("CELL_ID")]
public int CELL_ID { get; set; }
@ -31,9 +31,6 @@ public class V_STORAGE_LIST
[Column("CELL_CODE")]
public string? CELL_CODE { get; set; }
[Column("AREA_ID")]
public int? AREA_ID { get; set; }
[Column("AREA_CODE")]
public string? AreaCode { get; set; }
[Column("AREA_TYPE")]
@ -42,7 +39,7 @@ public class V_STORAGE_LIST
public string? LANE_WAY { get; set; }
[Column("MANAGE_LIST_QUANTITY")]
public int? MANAGE_LIST_QUANTITY { get; set; }
public decimal? MANAGE_LIST_QUANTITY { get; set; }
[Column("CELL_X")]
public int? CELL_X { get; set; }
@ -64,22 +61,22 @@ public class V_STORAGE_LIST
public string? LOTNUMBER { get; set; }
[Column("PopulationNumber")]
public string? PopulationNumber { get; set; }
[Column("DryDateTimeUtc")]
public DateTime? DryDateTimeUtc { get; set; }
[Column("DryDateTimeLoc")]
public DateTime? DryDateTimeLoc { get; set; }
[Column("OldDateTimeUtc")]
public DateTime? OldDateTimeUtc { get; set; }
[Column("OldDateTimeLoc")]
public DateTime? OldDateTimeLoc { get; set; }
[Column("HdvDateTimeUtc")]
public DateTime? HdvDateTimeUtc { get; set; }
[Column("HdvDateTimeLoc")]
public DateTime? HdvDateTimeLoc { get; set; }
[Column("FabricationDateTimeUtc")]
public DateTime? FabricationDateTimeUtc { get; set; }
[Column("FabricationDateTimeLoc")]
public DateTime? FabricationDateTimeLoc { get; set; }
[Column("DryDateTimeInUtc")]
public DateTime? DryDateTimeInUtc { get; set; }
[Column("DryDateTimeInLoc")]
public DateTime? DryDateTimeInLoc { get; set; }
[Column("OldDateTimeInUtc")]
public DateTime? OldDateTimeInUtc { get; set; }
[Column("OldDateTimeInLoc")]
public DateTime? OldDateTimeInLoc { get; set; }
[Column("HdvDateTimeInUtc")]
public DateTime? HdvDateTimeInUtc { get; set; }
[Column("HdvDateTimeInLoc")]
public DateTime? HdvDateTimeInLoc { get; set; }
[Column("FabricationDateTimeInUtc")]
public DateTime? FabricationDateTimeInUtc { get; set; }
[Column("FabricationDateTimeInLoc")]
public DateTime? FabricationDateTimeInLoc { get; set; }
[Column("IsBlocked")]
public bool? IsBlocked { get; set; }
[Column("IsPriority")]
@ -89,9 +86,9 @@ public class V_STORAGE_LIST
[Column("CELL_NAME")]
public string? CELL_NAME { get; set; }
[Column("EntryTime")]
public DateTime? EntryTime { get; set; }
public string? EntryTime { get; set; }
[Column("OutLevel")]
public string? OutLevel { get; set; }
public int? OutLevel { get; set; }
[Column("WAREHOUSE_CODE")]
public string? WAREHOUSE_CODE { get; set; }
[Column("AREA_NAME")]

2
Models/CancelOutputRequest.cs

@ -15,6 +15,6 @@ public class CancelOutputRequest
/// <summary>
/// Input request id
/// </summary>
public string inputRequestId { get; set; }
public string ouputRequestId { get; set; }
}
}

4
Repositories/Implement/ManageMainRepository.cs

@ -27,10 +27,10 @@ public class ManageMainRepository: IManageMainRepository
/// <returns></returns>
public MANAGE_MAIN? GetManageMain(string type, string filterInfo)
{
MANAGE_MAIN? manageMain = type switch
MANAGE_MAIN? manageMain = type.ToLower() switch
{
"barcode" => _context.Manage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo),
"requestNumber" => _context.Manage_Main.FirstOrDefault(x => x.requestNumber == filterInfo),
"requestnumber" => _context.Manage_Main.FirstOrDefault(x => x.requestNumber == filterInfo),
_ => _context.Manage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo)
};

6
Repositories/Implement/StorageMainRepository.cs

@ -21,11 +21,11 @@ public class StorageMainRepository:IStorageMainRepository
public STORAGE_MAIN? GetStorageMain(string type, string filterInfo)
{
STORAGE_MAIN? storageMain = type switch
STORAGE_MAIN? storageMain = type.ToLower() switch
{
"barcode" => _context.Storage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo),
"storageId" => _context.Storage_Main.FirstOrDefault(x => x.STORAGE_ID == Convert.ToInt32(filterInfo)),
"requestNumber" => _context.Storage_Main.FirstOrDefault(x => x.requestNumber == filterInfo),
"storageid" => _context.Storage_Main.FirstOrDefault(x => x.STORAGE_ID == Convert.ToInt32(filterInfo)),
"requestnumber" => _context.Storage_Main.FirstOrDefault(x => x.requestNumber == filterInfo),
_ => _context.Storage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo)
};

Loading…
Cancel
Save