Commit c7825842 by pengjinyang

提交

parent eab87216
...@@ -6,6 +6,6 @@ namespace Domain.Domain.TakeStock.Repository ...@@ -6,6 +6,6 @@ namespace Domain.Domain.TakeStock.Repository
{ {
public interface ITakeStockScheduleRepository: IRepository<TakeStockSchedule> public interface ITakeStockScheduleRepository: IRepository<TakeStockSchedule>
{ {
bool CreateOrder(TakeStockSchedule order, List<TakeStockOrder> orders); int CreateOrder(TakeStockSchedule order, List<TakeStockOrder> orders);
} }
} }
...@@ -44,18 +44,19 @@ namespace Service.TakeStock ...@@ -44,18 +44,19 @@ namespace Service.TakeStock
{ {
return await Task.Run(() => return await Task.Run(() =>
{ {
bool isSuccess = scheduleRepository.CreateOrder(schedule, orders); int scheduleId = scheduleRepository.CreateOrder(schedule, orders);
if (isSuccess) if (scheduleId > 0)
{ BackgroundJob.Enqueue(() => ReTry(scheduleId));
foreach (var order in orders) return scheduleId > 0;
{
BackgroundJob.Enqueue(() => FreezeStockAsync(order.Id));
}
}
return isSuccess;
}); });
} }
/// <summary>
/// 根据计划Id添加盘点作业
/// </summary>
/// <param name="scheduleId"></param>
/// <returns></returns>
[DisplayName("添加盘点作业, 盘点计划Id:{0}")]
public async Task<bool> ReTry(int scheduleId) public async Task<bool> ReTry(int scheduleId)
{ {
var orders = orderRepository.GetAllList(o => !o.IsDeleted && o.State == TSOrderState.创建 && o.ScheduleId == scheduleId); var orders = orderRepository.GetAllList(o => !o.IsDeleted && o.State == TSOrderState.创建 && o.ScheduleId == scheduleId);
...@@ -68,9 +69,10 @@ namespace Service.TakeStock ...@@ -68,9 +69,10 @@ namespace Service.TakeStock
} }
isSuccess = true; isSuccess = true;
} }
catch(Exception ex) catch (Exception ex)
{ {
isSuccess = false; isSuccess = false;
BackgroundJob.Schedule(() => ReTry(scheduleId), DateTimeOffset.UtcNow.AddMinutes(delay));
} }
return isSuccess; return isSuccess;
} }
...@@ -102,12 +104,14 @@ namespace Service.TakeStock ...@@ -102,12 +104,14 @@ namespace Service.TakeStock
/// <param name="id"></param> /// <param name="id"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("冻结库存, 盘点单Id:{0}")] [DisplayName("冻结库存, 盘点单Id:{0}")]
//[Queue("FreezeStock")] [Queue("freezestock")]
public async Task<bool> FreezeStockAsync(int id) public async Task<bool> FreezeStockAsync(int id)
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TSOrderState.冻结库存 || order.State == TSOrderState.取消) if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.冻结库存)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -122,11 +126,13 @@ namespace Service.TakeStock ...@@ -122,11 +126,13 @@ namespace Service.TakeStock
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
string responseContent = await response.Content.ReadAsStringAsync(); string responseContent = await response.Content.ReadAsStringAsync();
isFreeze = Convert.ToBoolean(JObject.Parse(responseContent)["data"]); var resultObj = JObject.Parse(responseContent)["data"];
isFreeze = resultObj["IsFreeze"].ToObject<bool>();
Task<bool> logTask = null; Task<bool> logTask = null;
if (isFreeze) if (isFreeze)
{ {
order.State = TSOrderState.冻结库存; order.State = TSOrderState.冻结库存;
order.BeforeQuantity = resultObj["Quantity"].ToObject<int>();
order.LastModificationTime = DateTime.Now; order.LastModificationTime = DateTime.Now;
logTask = AddOrUpdateLog(id, TSOrderState.冻结库存, "冻结库存成功。"); logTask = AddOrUpdateLog(id, TSOrderState.冻结库存, "冻结库存成功。");
...@@ -160,12 +166,14 @@ namespace Service.TakeStock ...@@ -160,12 +166,14 @@ namespace Service.TakeStock
/// <param name="sku"></param> /// <param name="sku"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("回滚库存, 盘点单Id:{0}")] [DisplayName("回滚库存, 盘点单Id:{0}")]
//[Queue("RollbackStock")] [Queue("rollbackstock")]
public async Task<bool> RollbackStockAsync(int id) public async Task<bool> RollbackStockAsync(int id)
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TSOrderState.释放库存 || order.State == TSOrderState.取消) if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.释放库存)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -235,12 +243,14 @@ namespace Service.TakeStock ...@@ -235,12 +243,14 @@ namespace Service.TakeStock
/// <param name="sku"></param> /// <param name="sku"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("同步并启用库存, 盘点单Id:{0}")] [DisplayName("同步并启用库存, 盘点单Id:{0}")]
//[Queue("SyncAndEnabledStock")] [Queue("syncandenabledstock")]
public async Task<bool> SyncAndEnabledAsync(int id) public async Task<bool> SyncAndEnabledAsync(int id)
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TSOrderState.完成 || order.State == TSOrderState.取消) if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.完成)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -253,11 +263,13 @@ namespace Service.TakeStock ...@@ -253,11 +263,13 @@ namespace Service.TakeStock
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
var responseContent = await response.Content.ReadAsStringAsync(); var responseContent = await response.Content.ReadAsStringAsync();
isSuccess = Convert.ToBoolean(JObject.Parse(responseContent)["data"]); var resultObj = JObject.Parse(responseContent)["data"];
isSuccess = resultObj["IsSuccess"].ToObject<bool>();
Task<bool> logTask = null; Task<bool> logTask = null;
if (isSuccess) if (isSuccess)
{ {
order.State = TSOrderState.完成; order.State = TSOrderState.完成;
order.AfterQuantity = resultObj["Quantity"].ToObject<int>();
logTask = AddOrUpdateLog(id, TSOrderState.完成, "同步并启用库存,盘点完成。", responseContent); logTask = AddOrUpdateLog(id, TSOrderState.完成, "同步并启用库存,盘点完成。", responseContent);
} }
else else
...@@ -279,6 +291,13 @@ namespace Service.TakeStock ...@@ -279,6 +291,13 @@ namespace Service.TakeStock
return isSuccess; return isSuccess;
} }
/// <summary>
/// 检查是否完成计划
/// </summary>
/// <param name="scheduleId"></param>
/// <returns></returns>
[DisplayName("检查计划是否完成, 盘点计划Id:{0}")]
[Queue("checkcomplete")]
public async Task CheckComplete(int scheduleId) public async Task CheckComplete(int scheduleId)
{ {
bool isComplete = orderRepository.Count(o => o.ScheduleId == scheduleId && o.State != TSOrderState.完成 && o.State != TSOrderState.取消) <= 0; bool isComplete = orderRepository.Count(o => o.ScheduleId == scheduleId && o.State != TSOrderState.完成 && o.State != TSOrderState.取消) <= 0;
...@@ -337,12 +356,14 @@ namespace Service.TakeStock ...@@ -337,12 +356,14 @@ namespace Service.TakeStock
/// <param name="sku"></param> /// <param name="sku"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("修改并启用库存, 盘点单Id:{0}")] [DisplayName("修改并启用库存, 盘点单Id:{0}")]
//[Queue("ModifAndEnabledStock")] [Queue("modifandenabledstock")]
public async Task<bool> ModifAndEnabledAsync(int id) public async Task<bool> ModifAndEnabledAsync(int id)
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TSOrderState.完成 || order.State == TSOrderState.取消) if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.完成)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -428,7 +449,7 @@ namespace Service.TakeStock ...@@ -428,7 +449,7 @@ namespace Service.TakeStock
/// </summary> /// </summary>
/// <param name="scheduleId"></param> /// <param name="scheduleId"></param>
[DisplayName("报溢报损, 盘点计划Id:{0}")] [DisplayName("报溢报损, 盘点计划Id:{0}")]
//[Queue("ModifAndEnabledStock")] [Queue("modifandenabledstock")]
public void GainLoss(int scheduleId) public void GainLoss(int scheduleId)
{ {
var schedule = scheduleRepository.Get(scheduleId); var schedule = scheduleRepository.Get(scheduleId);
...@@ -472,7 +493,7 @@ namespace Service.TakeStock ...@@ -472,7 +493,7 @@ namespace Service.TakeStock
} }
[DisplayName("远程调用报溢报损,")] [DisplayName("远程调用报溢报损,")]
//[Queue("ModifAndEnabledStock")] [Queue("modifandenabledstock")]
public async Task<string> AddGainLoss(object obj) public async Task<string> AddGainLoss(object obj)
{ {
string code = string.Empty; string code = string.Empty;
...@@ -500,7 +521,7 @@ namespace Service.TakeStock ...@@ -500,7 +521,7 @@ namespace Service.TakeStock
/// <param name="id"></param> /// <param name="id"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("取消盘点, 盘点单Id:{0}")] [DisplayName("取消盘点, 盘点单Id:{0}")]
//[Queue("CancelTakeStock")] [Queue("canceltakestock")]
public async Task<bool> CancelOrder(int id) public async Task<bool> CancelOrder(int id)
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
...@@ -549,7 +570,7 @@ namespace Service.TakeStock ...@@ -549,7 +570,7 @@ namespace Service.TakeStock
/// <param name="scheduleId"></param> /// <param name="scheduleId"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("取消盘点, 盘点计划Id:{0}")] [DisplayName("取消盘点, 盘点计划Id:{0}")]
//[Queue("CancelTakeStock")] [Queue("canceltakestock")]
private async Task CancelSchedule(int scheduleId) private async Task CancelSchedule(int scheduleId)
{ {
var schedule = scheduleRepository.Get(scheduleId); var schedule = scheduleRepository.Get(scheduleId);
...@@ -574,5 +595,8 @@ namespace Service.TakeStock ...@@ -574,5 +595,8 @@ namespace Service.TakeStock
if (!isSuccess) if (!isSuccess)
BackgroundJob.Schedule(() => CancelSchedule(scheduleId), DateTimeOffset.UtcNow.AddMinutes(delay)); BackgroundJob.Schedule(() => CancelSchedule(scheduleId), DateTimeOffset.UtcNow.AddMinutes(delay));
} }
//public
} }
} }
...@@ -71,7 +71,7 @@ namespace TakeStock.API.Controllers ...@@ -71,7 +71,7 @@ namespace TakeStock.API.Controllers
[HttpGet("CancelOrder")] [HttpGet("CancelOrder")]
public async Task<bool> CancelOrder(int id) public async Task<bool> CancelOrder(int id)
{ {
return await takeStockAppService.ReTry(id); return await takeStockAppService.CancelOrder(id);
} }
// DELETE: api/ApiWithActions/5 // DELETE: api/ApiWithActions/5
......
...@@ -94,6 +94,12 @@ namespace TakeStock.API ...@@ -94,6 +94,12 @@ namespace TakeStock.API
} }
}; };
app.UseHangfireDashboard("/hangfire", options); app.UseHangfireDashboard("/hangfire", options);
var options2 = new BackgroundJobServerOptions
{
WorkerCount = Environment.ProcessorCount * 5,
Queues = new[] { "freezestock", "rollbackstock", "syncandenabledstock", "checkcomplete", "modifandenabledstock", "canceltakestock", "default" }
};
app.UseHangfireServer(options2);
app.UseMvc(); app.UseMvc();
//dbContext.Migration(); //dbContext.Migration();
......
...@@ -12,7 +12,7 @@ namespace TakeStock.SqlSugar.Repository.TakeStock ...@@ -12,7 +12,7 @@ namespace TakeStock.SqlSugar.Repository.TakeStock
{ {
} }
public bool CreateOrder(TakeStockSchedule schedule, List<TakeStockOrder> orders) public int CreateOrder(TakeStockSchedule schedule, List<TakeStockOrder> orders)
{ {
try try
{ {
...@@ -25,12 +25,12 @@ namespace TakeStock.SqlSugar.Repository.TakeStock ...@@ -25,12 +25,12 @@ namespace TakeStock.SqlSugar.Repository.TakeStock
order = client.Insertable(order).ExecuteReturnEntity(); order = client.Insertable(order).ExecuteReturnEntity();
} }
client.Ado.CommitTran(); client.Ado.CommitTran();
return true; return scheduleId;
} }
catch (Exception ex) catch (Exception ex)
{ {
client.Ado.RollbackTran(); client.Ado.RollbackTran();
return false; return 0;
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment