Commit c7825842 by pengjinyang

提交

parent eab87216
......@@ -6,6 +6,6 @@ namespace Domain.Domain.TakeStock.Repository
{
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
{
return await Task.Run(() =>
{
bool isSuccess = scheduleRepository.CreateOrder(schedule, orders);
if (isSuccess)
{
foreach (var order in orders)
{
BackgroundJob.Enqueue(() => FreezeStockAsync(order.Id));
}
}
return isSuccess;
int scheduleId = scheduleRepository.CreateOrder(schedule, orders);
if (scheduleId > 0)
BackgroundJob.Enqueue(() => ReTry(scheduleId));
return scheduleId > 0;
});
}
/// <summary>
/// 根据计划Id添加盘点作业
/// </summary>
/// <param name="scheduleId"></param>
/// <returns></returns>
[DisplayName("添加盘点作业, 盘点计划Id:{0}")]
public async Task<bool> ReTry(int scheduleId)
{
var orders = orderRepository.GetAllList(o => !o.IsDeleted && o.State == TSOrderState.创建 && o.ScheduleId == scheduleId);
......@@ -68,9 +69,10 @@ namespace Service.TakeStock
}
isSuccess = true;
}
catch(Exception ex)
catch (Exception ex)
{
isSuccess = false;
BackgroundJob.Schedule(() => ReTry(scheduleId), DateTimeOffset.UtcNow.AddMinutes(delay));
}
return isSuccess;
}
......@@ -102,12 +104,14 @@ namespace Service.TakeStock
/// <param name="id"></param>
/// <returns></returns>
[DisplayName("冻结库存, 盘点单Id:{0}")]
//[Queue("FreezeStock")]
[Queue("freezestock")]
public async Task<bool> FreezeStockAsync(int id)
{
var order = orderRepository.Get(id);
bool isSuccess = false;
if (order.State == TSOrderState.冻结库存 || order.State == TSOrderState.取消)
if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.冻结库存)
isSuccess = true;
else
{
......@@ -122,11 +126,13 @@ namespace Service.TakeStock
if (response.IsSuccessStatusCode)
{
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;
if (isFreeze)
{
order.State = TSOrderState.冻结库存;
order.BeforeQuantity = resultObj["Quantity"].ToObject<int>();
order.LastModificationTime = DateTime.Now;
logTask = AddOrUpdateLog(id, TSOrderState.冻结库存, "冻结库存成功。");
......@@ -160,12 +166,14 @@ namespace Service.TakeStock
/// <param name="sku"></param>
/// <returns></returns>
[DisplayName("回滚库存, 盘点单Id:{0}")]
//[Queue("RollbackStock")]
[Queue("rollbackstock")]
public async Task<bool> RollbackStockAsync(int id)
{
var order = orderRepository.Get(id);
bool isSuccess = false;
if (order.State == TSOrderState.释放库存 || order.State == TSOrderState.取消)
if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.释放库存)
isSuccess = true;
else
{
......@@ -235,12 +243,14 @@ namespace Service.TakeStock
/// <param name="sku"></param>
/// <returns></returns>
[DisplayName("同步并启用库存, 盘点单Id:{0}")]
//[Queue("SyncAndEnabledStock")]
[Queue("syncandenabledstock")]
public async Task<bool> SyncAndEnabledAsync(int id)
{
var order = orderRepository.Get(id);
bool isSuccess = false;
if (order.State == TSOrderState.完成 || order.State == TSOrderState.取消)
if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.完成)
isSuccess = true;
else
{
......@@ -253,11 +263,13 @@ namespace Service.TakeStock
if (response.IsSuccessStatusCode)
{
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;
if (isSuccess)
{
order.State = TSOrderState.完成;
order.AfterQuantity = resultObj["Quantity"].ToObject<int>();
logTask = AddOrUpdateLog(id, TSOrderState.完成, "同步并启用库存,盘点完成。", responseContent);
}
else
......@@ -279,6 +291,13 @@ namespace Service.TakeStock
return isSuccess;
}
/// <summary>
/// 检查是否完成计划
/// </summary>
/// <param name="scheduleId"></param>
/// <returns></returns>
[DisplayName("检查计划是否完成, 盘点计划Id:{0}")]
[Queue("checkcomplete")]
public async Task CheckComplete(int scheduleId)
{
bool isComplete = orderRepository.Count(o => o.ScheduleId == scheduleId && o.State != TSOrderState.完成 && o.State != TSOrderState.取消) <= 0;
......@@ -337,12 +356,14 @@ namespace Service.TakeStock
/// <param name="sku"></param>
/// <returns></returns>
[DisplayName("修改并启用库存, 盘点单Id:{0}")]
//[Queue("ModifAndEnabledStock")]
[Queue("modifandenabledstock")]
public async Task<bool> ModifAndEnabledAsync(int id)
{
var order = orderRepository.Get(id);
bool isSuccess = false;
if (order.State == TSOrderState.完成 || order.State == TSOrderState.取消)
if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.完成)
isSuccess = true;
else
{
......@@ -428,7 +449,7 @@ namespace Service.TakeStock
/// </summary>
/// <param name="scheduleId"></param>
[DisplayName("报溢报损, 盘点计划Id:{0}")]
//[Queue("ModifAndEnabledStock")]
[Queue("modifandenabledstock")]
public void GainLoss(int scheduleId)
{
var schedule = scheduleRepository.Get(scheduleId);
......@@ -472,7 +493,7 @@ namespace Service.TakeStock
}
[DisplayName("远程调用报溢报损,")]
//[Queue("ModifAndEnabledStock")]
[Queue("modifandenabledstock")]
public async Task<string> AddGainLoss(object obj)
{
string code = string.Empty;
......@@ -500,7 +521,7 @@ namespace Service.TakeStock
/// <param name="id"></param>
/// <returns></returns>
[DisplayName("取消盘点, 盘点单Id:{0}")]
//[Queue("CancelTakeStock")]
[Queue("canceltakestock")]
public async Task<bool> CancelOrder(int id)
{
var order = orderRepository.Get(id);
......@@ -549,7 +570,7 @@ namespace Service.TakeStock
/// <param name="scheduleId"></param>
/// <returns></returns>
[DisplayName("取消盘点, 盘点计划Id:{0}")]
//[Queue("CancelTakeStock")]
[Queue("canceltakestock")]
private async Task CancelSchedule(int scheduleId)
{
var schedule = scheduleRepository.Get(scheduleId);
......@@ -574,5 +595,8 @@ namespace Service.TakeStock
if (!isSuccess)
BackgroundJob.Schedule(() => CancelSchedule(scheduleId), DateTimeOffset.UtcNow.AddMinutes(delay));
}
//public
}
}
......@@ -71,7 +71,7 @@ namespace TakeStock.API.Controllers
[HttpGet("CancelOrder")]
public async Task<bool> CancelOrder(int id)
{
return await takeStockAppService.ReTry(id);
return await takeStockAppService.CancelOrder(id);
}
// DELETE: api/ApiWithActions/5
......
......@@ -94,6 +94,12 @@ namespace TakeStock.API
}
};
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();
//dbContext.Migration();
......
......@@ -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
{
......@@ -25,12 +25,12 @@ namespace TakeStock.SqlSugar.Repository.TakeStock
order = client.Insertable(order).ExecuteReturnEntity();
}
client.Ado.CommitTran();
return true;
return scheduleId;
}
catch (Exception ex)
{
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