Commit 3d0c20af by zhoujinhui

修正盘点流水号生成问题

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