Commit 3d0c20af by zhoujinhui

修正盘点流水号生成问题

parent dbe68afe
......@@ -22,5 +22,10 @@ namespace Domain.Dto
/// 计划单创建时间
/// </summary>
public DateTime CheduleCreationTime { get; set; }
/// <summary>
/// 库存交易流水号
/// </summary>
public string SysSerialNumber { get; set; }
}
}
......@@ -381,7 +381,6 @@ namespace Service.TakeStock
{
var order = _orderRepository.Get(id);
bool isSuccess = false;
string sysSerialNumber = string.Empty;
if (order.State == TSOrderState.取消)
return true;
if (order.State == TSOrderState.完成)
......@@ -391,7 +390,7 @@ namespace Service.TakeStock
var schedule = _scheduleRepository.Get(order.ScheduleId);
var client = _httpClientFactory.CreateClient("WMS");
client.DefaultRequestHeaders.Add("Access-Control-Allow-Origin", "*");
string data = JsonConvert.SerializeObject(new { Data = new { WarehouseCode = order.WarehouseCode, Sku = order.Sku, ExternalCode = schedule.Code, CheduleCreationTime = schedule.CreationTime } });
string data = JsonConvert.SerializeObject(new { Data = new { WarehouseCode = order.WarehouseCode, Sku = order.Sku, ExternalCode = schedule.Code, CheduleCreationTime = schedule.CreationTime, SysSerialNumber = schedule.SysSerialNumber } });
HttpContent content = new StringContent(data);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = await client.PostAsync("WMSStockService/SyncAndEnabledStock", content);
......@@ -403,7 +402,6 @@ namespace Service.TakeStock
Task<bool> logTask = null;
if (isSuccess)
{
sysSerialNumber = resultObj["sysSerialNumber"].ToObject<string>();
order.State = TSOrderState.完成;
order.AfterQuantity = resultObj["quantity"].ToObject<int>();
logTask = AddOrUpdateLog(id, TSOrderState.完成, "同步并启用库存,盘点完成。", responseContent);
......@@ -421,7 +419,7 @@ namespace Service.TakeStock
if (isSuccess)
{
BackgroundJob.Enqueue(() => CheckComplete(order.ScheduleId, sysSerialNumber));
BackgroundJob.Enqueue(() => CheckComplete(order.ScheduleId));
//if (order.State == TSOrderState.完成)
// PushTakeStockMsg(order);
}
......@@ -435,11 +433,10 @@ namespace Service.TakeStock
/// 检查是否完成计划
/// </summary>
/// <param name="scheduleId"></param>
/// <param name="sysSerialNumber">交易流水号</param>
/// <returns></returns>
[DisplayName("检查计划是否完成, 盘点计划Id:{0}")]
[Queue("checkcomplete")]
public async Task CheckComplete(int scheduleId, string sysSerialNumber)
public async Task CheckComplete(int scheduleId)
{
bool isComplete = _orderRepository.Count(o => o.ScheduleId == scheduleId && o.State != TSOrderState.完成 && o.State != TSOrderState.取消) <= 0;
if (isComplete)
......@@ -447,8 +444,7 @@ namespace Service.TakeStock
var schedule = _scheduleRepository.Get(scheduleId);
schedule.State = TakeStockEnum.TSScheduleState.完成;
schedule.LastModificationTime = DateTime.Now;
schedule.SysSerialNumber = sysSerialNumber;
int row = await _scheduleRepository.UpdateAsync(schedule, "State", "LastModificationTime", "SysSerialNumber");
int row = await _scheduleRepository.UpdateAsync(schedule, "State", "LastModificationTime");
//发起报溢报损
//BackgroundJob.Enqueue(() => GainLoss(schedule.Id));
......@@ -785,10 +781,13 @@ namespace Service.TakeStock
if (orders.Any(o => o.State == TSOrderState.完成))
schedule.State = TSScheduleState.完成;
else
{
schedule.State = TSScheduleState.取消;
schedule.SysSerialNumber = string.Empty; // 清空流水号
}
schedule.LastModificationTime = DateTime.Now;
int record = await _scheduleRepository.UpdateAsync(schedule, "State", "LastModificationTime");
int record = await _scheduleRepository.UpdateAsync(schedule, "State", "LastModificationTime", "SysSerialNumber");
isSuccess = record > 0;
}
else
......@@ -854,7 +853,8 @@ namespace Service.TakeStock
item.AuditExplain = inputDto.AuditExplain;
item.AuditUserId = inputDto.AuditUserId;
item.AuditUserName = inputDto.AuditUserName;
await _scheduleRepository.UpdateAsync(item, "State", "AuditDateTime", "AuditExplain", "AuditUserId", "AuditUserName");
item.SysSerialNumber = string.Empty;
await _scheduleRepository.UpdateAsync(item, "State", "AuditDateTime", "AuditExplain", "AuditUserId", "AuditUserName", "SysSerialNumber");
}
}
return result;
......@@ -877,12 +877,11 @@ namespace Service.TakeStock
else
{
var orders = _orderRepository.GetAllList(o => !o.IsDeleted && o.State != TSOrderState.取消 && o.State != TSOrderState.完成 && o.ScheduleId == findSchedule.Id);
var requestData = new RequestDto<List<ModifStockInputDto>> { Data = orders.Select(x => new ModifStockInputDto { Sku = x.Sku, Quantity = x.AfterQuantity.Value, WarehouseCode = findSchedule.WarehouseCode,ExternalCode = findSchedule.Code, CheduleCreationTime = findSchedule.CreationTime }).ToList() };
var requestData = new RequestDto<List<ModifStockInputDto>> { Data = orders.Select(x => new ModifStockInputDto { Sku = x.Sku, Quantity = x.AfterQuantity.Value, WarehouseCode = findSchedule.WarehouseCode,ExternalCode = findSchedule.Code, CheduleCreationTime = findSchedule.CreationTime, SysSerialNumber = findSchedule.SysSerialNumber }).ToList() };
var response = await PostData<WMSResponseDto<string>, RequestDto<List<ModifStockInputDto>>>(requestData, "WMSStockService/BatchModifAndEnabled");
if (response.IsSuccess)
{
findSchedule.SysSerialNumber = response.Data;
result.IsSuccess = await _scheduleRepository.UpdateAsync(findSchedule, "State", "AuditDateTime", "AuditExplain", "AuditUserId", "AuditUserName", "IsAutomation", "SysSerialNumber") > 0;
result.IsSuccess = await _scheduleRepository.UpdateAsync(findSchedule, "State", "AuditDateTime", "AuditExplain", "AuditUserId", "AuditUserName", "IsAutomation") > 0;
}
}
}
......@@ -916,7 +915,8 @@ namespace Service.TakeStock
item.LastModificationTime = DateTime.Now;
item.LastModifierUserName = input.LastModifierUserName;
item.LastModifierUserId = input.LastModifierUserId;
await _scheduleRepository.UpdateAsync(item, "State", "LastModificationTime", "LastModifierUserName", "LastModifierUserId");
item.SysSerialNumber = string.Empty;
await _scheduleRepository.UpdateAsync(item, "State", "LastModificationTime", "LastModifierUserName", "LastModifierUserId", "SysSerialNumber");
result.IsSuccess = true;
foreach (var order in orders)
{
......
......@@ -31,6 +31,7 @@ namespace TakeStock.Application.TakeStock
TakeStockSchedule schedule = JsonConvert.DeserializeObject<TakeStockSchedule>(str);
List<TakeStockOrder> orders = JObject.Parse(str)["Orders"].ToObject<List<TakeStockOrder>>();
schedule.State = TakeStockEnum.TSScheduleState.待审核;
schedule.SysSerialNumber = GetSysSerialNumber();
if (input.IsAutomation) // 自动盘点
{
orders.ForEach(x => x.AfterQuantity = null);
......@@ -42,6 +43,12 @@ namespace TakeStock.Application.TakeStock
return await takeStockService.CreateTakeStockOrderAsync(schedule, orders);
}
private string GetSysSerialNumber()
{
string sysSerialNumber = $"SYS{DateTime.Now.ToString("yyyyMMddHHmmssfff")}" + new Random().Next(1000, 9999);
return sysSerialNumber;
}
public async Task<bool> ReTry(int scheduleId)
{
return await takeStockService.ReTry(scheduleId);
......
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