Commit f57f7b60 by pengjinyang

提交

parent 59866969
...@@ -9,6 +9,12 @@ namespace Domain.Domain.TakeStock ...@@ -9,6 +9,12 @@ namespace Domain.Domain.TakeStock
[SugarTable("stock_takestockorder")] [SugarTable("stock_takestockorder")]
public class TakeStockOrder public class TakeStockOrder
{ {
public TakeStockOrder()
{
this.Code = "TSO" + DateTime.Now.ToString("yyMMddHHmmssfff");
this.CreationTime = DateTime.Now;
}
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)] [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; } public int Id { get; set; }
...@@ -47,6 +53,18 @@ namespace Domain.Domain.TakeStock ...@@ -47,6 +53,18 @@ namespace Domain.Domain.TakeStock
public int? AfterQuantity { get; set; } public int? AfterQuantity { get; set; }
/// <summary> /// <summary>
/// 等待完结的配货单号
/// </summary>
[SugarColumn(IsNullable = true, Length = 1000)]
public string WaitCodes { get; set; }
/// <summary>
/// 取消的配货单号
/// </summary>
[SugarColumn(IsNullable = true, Length = 1000)]
public string CancelCodes { get; set; }
/// <summary>
/// 备注 /// 备注
/// </summary> /// </summary>
[SugarColumn(IsNullable = true, Length = 500)] [SugarColumn(IsNullable = true, Length = 500)]
...@@ -62,5 +80,13 @@ namespace Domain.Domain.TakeStock ...@@ -62,5 +80,13 @@ namespace Domain.Domain.TakeStock
[SugarColumn(IsNullable = true)] [SugarColumn(IsNullable = true)]
public long? LastModifierUserId { get; set; } public long? LastModifierUserId { get; set; }
public bool IsDeleted { get; set; }
[SugarColumn(IsNullable = true)]
public long? DeleterUserId { get; set; }
[SugarColumn(IsNullable = true)]
public DateTime? DeletionTime { get; set; }
} }
} }
...@@ -9,6 +9,11 @@ namespace Domain.Domain.TakeStock ...@@ -9,6 +9,11 @@ namespace Domain.Domain.TakeStock
[SugarTable("stock_takestockorder_log")] [SugarTable("stock_takestockorder_log")]
public class TakeStockOrderLog public class TakeStockOrderLog
{ {
public TakeStockOrderLog()
{
this.CreationTime = DateTime.Now;
}
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)] [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; } public int Id { get; set; }
......
...@@ -9,6 +9,12 @@ namespace Domain.Domain.TakeStock ...@@ -9,6 +9,12 @@ namespace Domain.Domain.TakeStock
[SugarTable("stock_takestockschedule")] [SugarTable("stock_takestockschedule")]
public class TakeStockSchedule public class TakeStockSchedule
{ {
public TakeStockSchedule()
{
this.Code = "TSS" + DateTime.Now.ToString("yyMMddHHmmssfff");
this.CreationTime = DateTime.Now;
}
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)] [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; } public int Id { get; set; }
......
...@@ -54,6 +54,27 @@ namespace Service.TakeStock ...@@ -54,6 +54,27 @@ namespace Service.TakeStock
}); });
} }
private async Task<bool> AddOrUpdateLog(int orderId, TSOrderState state, string content, string jsonData = null)
{
var log = await logRepository.FirstOrDefaultAsync(l => l.OrderId == orderId && l.State == state);
if (log == null)
{
log = new TakeStockOrderLog();
log.OrderId = orderId;
log.State = state;
}
else
log.LastModificationTime = DateTime.Now;
log.Content = content;
if (!string.IsNullOrWhiteSpace(jsonData))
log.JsonData = jsonData;
if (log.Id > 0)
return await logRepository.UpdateAsync(log, "Content", "JsonData", "LastModificationTime") > 0;
else
return logRepository.InsertFulfill(log);
}
/// <summary> /// <summary>
/// 冻结库存 /// 冻结库存
/// </summary> /// </summary>
...@@ -63,7 +84,7 @@ namespace Service.TakeStock ...@@ -63,7 +84,7 @@ namespace Service.TakeStock
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TakeStockEnum.TSOrderState.冻结库存) if (order.State == TSOrderState.冻结库存)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -79,30 +100,24 @@ namespace Service.TakeStock ...@@ -79,30 +100,24 @@ namespace Service.TakeStock
{ {
string responseContent = await response.Content.ReadAsStringAsync(); string responseContent = await response.Content.ReadAsStringAsync();
isFreeze = Convert.ToBoolean(JObject.Parse(responseContent)["data"]); isFreeze = Convert.ToBoolean(JObject.Parse(responseContent)["data"]);
TakeStockOrderLog log = new TakeStockOrderLog(); Task<bool> logTask = null;
log.OrderId = id;
if (isFreeze) if (isFreeze)
{ {
order.State = TakeStockEnum.TSOrderState.冻结库存; order.State = TSOrderState.冻结库存;
order.LastModificationTime = DateTime.Now; order.LastModificationTime = DateTime.Now;
log.State = TakeStockEnum.TSOrderState.冻结库存; logTask = AddOrUpdateLog(id, TSOrderState.冻结库存, "冻结库存成功。");
log.Content = "冻结库存成功。";
isSuccess = true; isSuccess = true;
} }
else else
{ {
order.State = TakeStockEnum.TSOrderState.异常; order.State = TSOrderState.异常;
order.LastModificationTime = DateTime.Now; order.LastModificationTime = DateTime.Now;
log.State = TakeStockEnum.TSOrderState.异常; logTask = AddOrUpdateLog(id, TSOrderState.异常, "冻结库存失败,WMS返回消息:" + JObject.Parse(responseContent)["message"], responseContent);
log.Content = "冻结库存失败,WMS返回消息:" + JObject.Parse(responseContent)["message"];
log.JsonData = responseContent;
} }
int row = await orderRepository.UpdateAsync(order, "State", "LastModificationTime"); int row = await orderRepository.UpdateAsync(order, "State", "LastModificationTime");
log = await logRepository.InsertAsync(log); if (!(row > 0 && await logTask))
if (!(row > 0 && log.Id > 0))
isSuccess = false; isSuccess = false;
} }
} }
...@@ -125,7 +140,7 @@ namespace Service.TakeStock ...@@ -125,7 +140,7 @@ namespace Service.TakeStock
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TakeStockEnum.TSOrderState.释放库存) if (order.State == TSOrderState.释放库存)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -140,32 +155,38 @@ namespace Service.TakeStock ...@@ -140,32 +155,38 @@ namespace Service.TakeStock
var responseContent = await response.Content.ReadAsStringAsync(); var responseContent = await response.Content.ReadAsStringAsync();
var jobj = JObject.Parse(responseContent)["data"]; var jobj = JObject.Parse(responseContent)["data"];
isSuccess = jobj["result"].ToObject<bool>(); isSuccess = jobj["result"].ToObject<bool>();
TakeStockOrderLog log = new TakeStockOrderLog(); Task<bool> logTask = null;
log.OrderId = id;
if (isSuccess) if (isSuccess)
{ {
order.State = TakeStockEnum.TSOrderState.释放库存; order.State = TSOrderState.释放库存;
order.LastModificationTime = DateTime.Now; order.LastModificationTime = DateTime.Now;
log.State = TakeStockEnum.TSOrderState.释放库存; logTask = AddOrUpdateLog(id, TSOrderState.释放库存, "已释放占用库存。");
log.Content = $"已释放占用库存。";
var cancelCodes = jobj["cancelCodes"].ToObject<List<string>>();
if (cancelCodes?.Count() > 0)
log.Content += "取消了配货的订单:" + string.Join(';', cancelCodes);
} }
else else
{ {
order.State = TakeStockEnum.TSOrderState.异常; order.State = TSOrderState.异常;
order.LastModificationTime = DateTime.Now; order.LastModificationTime = DateTime.Now;
log.State = TakeStockEnum.TSOrderState.异常; logTask = AddOrUpdateLog(id, TSOrderState.异常, "释放占用库存失败,WMS返回消息:" + jobj["message"], responseContent);
log.Content = "释放占用库存失败,WMS返回消息:" + JObject.Parse(responseContent)["message"];
log.JsonData = responseContent;
} }
int row = await orderRepository.UpdateAsync(order, "State", "LastModificationTime"); var cancelCodes = jobj["cancelCodes"].ToString();
log = await logRepository.InsertAsync(log); var waitCodes = jobj["waitCodes"].ToString();
if (!(row > 0 && log.Id > 0)) isSuccess = false; if (!cancelCodes.Equals("[]"))
{
order.CancelCodes += "," + cancelCodes.Trim('[', ']');
order.CancelCodes = order.CancelCodes.TrimStart(',');
}
if (!waitCodes.Equals("[]"))
{
order.WaitCodes += "," + waitCodes.Trim('[', ']');
order.WaitCodes = order.WaitCodes.TrimStart(',');
}
int row = await orderRepository.UpdateAsync(order, "State", "CancelCodes", "WaitCodes", "LastModificationTime");
if (!(row > 0 && await logTask)) isSuccess = false;
} }
} }
...@@ -191,7 +212,7 @@ namespace Service.TakeStock ...@@ -191,7 +212,7 @@ namespace Service.TakeStock
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TakeStockEnum.TSOrderState.完成) if (order.State == TSOrderState.完成)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -205,25 +226,19 @@ namespace Service.TakeStock ...@@ -205,25 +226,19 @@ namespace Service.TakeStock
{ {
var responseContent = await response.Content.ReadAsStringAsync(); var responseContent = await response.Content.ReadAsStringAsync();
isSuccess = Convert.ToBoolean(JObject.Parse(responseContent)["data"]); isSuccess = Convert.ToBoolean(JObject.Parse(responseContent)["data"]);
TakeStockOrderLog log = new TakeStockOrderLog(); Task<bool> logTask = null;
log.OrderId = id;
if (isSuccess) if (isSuccess)
{ {
order.State = TakeStockEnum.TSOrderState.完成; order.State = TSOrderState.完成;
log.State = TakeStockEnum.TSOrderState.完成; logTask = AddOrUpdateLog(id, TSOrderState.完成, "同步并启用库存,盘点完成。", responseContent);
log.Content = $"同步并启用库存,盘点完成。";
} }
else else
{ {
order.State = TakeStockEnum.TSOrderState.异常; order.State = TSOrderState.异常;
log.State = TakeStockEnum.TSOrderState.异常; logTask = AddOrUpdateLog(id, TSOrderState.异常, "盘点失败,WMS返回消息:" + JObject.Parse(responseContent)["message"], responseContent);
log.Content = "盘点失败,WMS返回消息:" + JObject.Parse(responseContent)["message"];
log.JsonData = responseContent;
} }
int row = await orderRepository.UpdateAsync(order, "State", "LastModificationTime"); int row = await orderRepository.UpdateAsync(order, "State", "LastModificationTime");
log = await logRepository.InsertAsync(log); if (!(row > 0 && await logTask))
if (!(row > 0 && log.Id > 0))
isSuccess = false; isSuccess = false;
} }
} }
...@@ -238,7 +253,7 @@ namespace Service.TakeStock ...@@ -238,7 +253,7 @@ namespace Service.TakeStock
public async Task CheckComplete(int scheduleId) public async Task CheckComplete(int scheduleId)
{ {
bool isComplete = orderRepository.Count(o => o.ScheduleId == scheduleId && o.State != TakeStockEnum.TSOrderState.完成 && o.State != TakeStockEnum.TSOrderState.取消) <= 0; bool isComplete = orderRepository.Count(o => o.ScheduleId == scheduleId && o.State != TSOrderState.完成 && o.State != TSOrderState.取消) <= 0;
if (isComplete) if (isComplete)
{ {
var schedule = scheduleRepository.Get(scheduleId); var schedule = scheduleRepository.Get(scheduleId);
...@@ -263,6 +278,7 @@ namespace Service.TakeStock ...@@ -263,6 +278,7 @@ namespace Service.TakeStock
order.BeforeQuantity = beforeQuantity; order.BeforeQuantity = beforeQuantity;
order.LastModificationTime = DateTime.Now; order.LastModificationTime = DateTime.Now;
var record =await orderRepository.UpdateAsync(order, "State", "BeforeQuantity", "LastModificationTime"); var record =await orderRepository.UpdateAsync(order, "State", "BeforeQuantity", "LastModificationTime");
var logTask = AddOrUpdateLog(id, TSOrderState.盘点中, "发起线下盘点。");
return record > 0; return record > 0;
} }
...@@ -278,7 +294,8 @@ namespace Service.TakeStock ...@@ -278,7 +294,8 @@ namespace Service.TakeStock
order.LastModificationTime = DateTime.Now; order.LastModificationTime = DateTime.Now;
order.Description = description; order.Description = description;
var record = await orderRepository.UpdateAsync(order, "AfterQuantity", "LastModificationTime", "Description"); var record = await orderRepository.UpdateAsync(order, "AfterQuantity", "LastModificationTime", "Description");
bool isSuccess = record > 0; var logTask = AddOrUpdateLog(id, TSOrderState.盘点中, "盘点反馈。");
bool isSuccess = record > 0 && await logTask;
if (isSuccess) if (isSuccess)
BackgroundJob.Enqueue(() => ModifAndEnabledAsync(order.Id)); BackgroundJob.Enqueue(() => ModifAndEnabledAsync(order.Id));
...@@ -295,7 +312,7 @@ namespace Service.TakeStock ...@@ -295,7 +312,7 @@ namespace Service.TakeStock
{ {
var order = orderRepository.Get(id); var order = orderRepository.Get(id);
bool isSuccess = false; bool isSuccess = false;
if (order.State == TakeStockEnum.TSOrderState.完成) if (order.State == TSOrderState.完成)
isSuccess = true; isSuccess = true;
else else
{ {
...@@ -309,25 +326,20 @@ namespace Service.TakeStock ...@@ -309,25 +326,20 @@ namespace Service.TakeStock
{ {
var responseContent = await response.Content.ReadAsStringAsync(); var responseContent = await response.Content.ReadAsStringAsync();
isSuccess = Convert.ToBoolean(JObject.Parse(responseContent)["data"]); isSuccess = Convert.ToBoolean(JObject.Parse(responseContent)["data"]);
TakeStockOrderLog log = new TakeStockOrderLog(); Task<bool> logTask = null;
log.OrderId = id;
if (isSuccess) if (isSuccess)
{ {
order.State = TakeStockEnum.TSOrderState.完成; order.State = TSOrderState.完成;
log.State = TakeStockEnum.TSOrderState.完成; logTask = AddOrUpdateLog(id, TSOrderState.完成, "更新为盘点数并启用库存,盘点完成。");
log.Content = $"更新为盘点数并启用库存,盘点完成。";
} }
else else
{ {
order.State = TakeStockEnum.TSOrderState.异常; order.State = TSOrderState.异常;
log.State = TakeStockEnum.TSOrderState.异常; logTask = AddOrUpdateLog(id, TSOrderState.异常, "盘点失败,WMS返回消息:" + JObject.Parse(responseContent)["message"], responseContent);
log.Content = "盘点失败,WMS返回消息:" + JObject.Parse(responseContent)["message"];
log.JsonData = responseContent;
} }
int row = await orderRepository.UpdateAsync(order, "State", "LastModificationTime"); int row = await orderRepository.UpdateAsync(order, "State", "LastModificationTime");
log = await logRepository.InsertAsync(log);
if (!(row > 0 && log.Id > 0)) if (!(row > 0 && await logTask))
isSuccess = false; isSuccess = false;
} }
} }
...@@ -360,7 +372,9 @@ namespace Service.TakeStock ...@@ -360,7 +372,9 @@ namespace Service.TakeStock
BackgroundJob.Enqueue(() => GainLoss(schedule.Id)); BackgroundJob.Enqueue(() => GainLoss(schedule.Id));
} }
else else
{
schedule.State = TSScheduleState.完成; schedule.State = TSScheduleState.完成;
}
int record = await scheduleRepository.UpdateAsync(schedule); int record = await scheduleRepository.UpdateAsync(schedule);
isSuccess = record > 0; isSuccess = record > 0;
......
...@@ -44,9 +44,9 @@ namespace TakeStock.API.Controllers ...@@ -44,9 +44,9 @@ namespace TakeStock.API.Controllers
//} //}
[HttpPost] [HttpPost]
public async Task<bool> PostCheckRecord([FromBody] ScheduleInputDto record) public async Task<bool> CreateTakeStockSchedule([FromBody] ScheduleInputDto record)
{ {
var result = await takeStockAppService.CreateCheckRecord(record); var result = await takeStockAppService.CreateTakeStockSchedule(record);
return result; return result;
} }
......
...@@ -96,7 +96,7 @@ namespace TakeStock.API ...@@ -96,7 +96,7 @@ namespace TakeStock.API
app.UseHangfireDashboard("/hangfire", options); app.UseHangfireDashboard("/hangfire", options);
app.UseMvc(); app.UseMvc();
dbContext.Migration(); //dbContext.Migration();
} }
public void RegisterHttpClient(IServiceCollection services) public void RegisterHttpClient(IServiceCollection services)
......
...@@ -8,43 +8,15 @@ namespace TakeStock.Application.TakeStock.Dto ...@@ -8,43 +8,15 @@ namespace TakeStock.Application.TakeStock.Dto
public class OrderInputDto public class OrderInputDto
{ {
/// <summary> /// <summary>
/// 盘点单号
/// </summary>
public string Code { get; set; }
/// <summary>
/// 仓库编码 /// 仓库编码
/// </summary> /// </summary>
public string WarehouseCode { get; set; } public string WarehouseCode { get; set; }
public TSOrderState State { get; set; }
/// <summary> /// <summary>
/// 产品sku /// 产品sku
/// </summary> /// </summary>
public string Sku { get; set; } public string Sku { get; set; }
/// <summary>
/// 盘点前数量
/// </summary>
public int? BeforeQuantity { get; set; }
/// <summary>
/// 盘点后数量
/// </summary>
public int? AfterQuantity { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Description { get; set; }
public DateTime CreationTime { get; set; }
public long? CreatorUserId { get; set; } public long? CreatorUserId { get; set; }
public DateTime? LastModificationTime { get; set; }
public long? LastModifierUserId { get; set; }
} }
} }
...@@ -8,11 +8,6 @@ namespace TakeStock.Application.TakeStock.Dto ...@@ -8,11 +8,6 @@ namespace TakeStock.Application.TakeStock.Dto
public class ScheduleInputDto public class ScheduleInputDto
{ {
/// <summary> /// <summary>
/// 盘点单号
/// </summary>
public string Code { get; set; }
/// <summary>
/// 仓库编码 /// 仓库编码
/// </summary> /// </summary>
public string WarehouseCode { get; set; } public string WarehouseCode { get; set; }
...@@ -28,29 +23,12 @@ namespace TakeStock.Application.TakeStock.Dto ...@@ -28,29 +23,12 @@ namespace TakeStock.Application.TakeStock.Dto
public bool IsAutomation { get; set; } public bool IsAutomation { get; set; }
/// <summary> /// <summary>
/// 状态
/// </summary>
public TSScheduleState State { get; set; }
/// <summary>
/// 描述 /// 描述
/// </summary> /// </summary>
public string Description { get; set; } public string Description { get; set; }
public DateTime CreationTime { get; set; }
public long? CreatorUserId { get; set; } public long? CreatorUserId { get; set; }
public DateTime? LastModificationTime { get; set; }
public long? LastModifierUserId { get; set; }
public bool IsDeleted { get; set; }
public long? DeleterUserId { get; set; }
public DateTime? DeletionTime { get; set; }
public virtual List<OrderInputDto> Orders { get; set; } public virtual List<OrderInputDto> Orders { get; set; }
} }
} }
...@@ -19,7 +19,7 @@ namespace TakeStock.Application.TakeStock ...@@ -19,7 +19,7 @@ namespace TakeStock.Application.TakeStock
this.takeStockService = takeStockService; this.takeStockService = takeStockService;
} }
public async Task<bool> CreateCheckRecord(ScheduleInputDto input) public async Task<bool> CreateTakeStockSchedule(ScheduleInputDto input)
{ {
var str = JsonConvert.SerializeObject(input); var str = JsonConvert.SerializeObject(input);
TakeStockSchedule schedule = JsonConvert.DeserializeObject<TakeStockSchedule>(str); TakeStockSchedule schedule = JsonConvert.DeserializeObject<TakeStockSchedule>(str);
......
...@@ -59,8 +59,8 @@ namespace SqlSugar ...@@ -59,8 +59,8 @@ namespace SqlSugar
public void Migration() public void Migration()
{ {
//Db.CodeFirst.SetStringDefaultLength(20/*设置varchar默认长度为200*/) Db.CodeFirst.SetStringDefaultLength(20/*设置varchar默认长度为200*/)
// .InitTables(typeof(TakeStockSchedule), typeof(TakeStockOrder), typeof(TakeStockOrderLog));//执行完数据库就有这个表了 .InitTables(typeof(TakeStockSchedule), typeof(TakeStockOrder), typeof(TakeStockOrderLog));//执行完数据库就有这个表了
} }
} }
} }
\ No newline at end of file
using Domain; using Domain;
using SqlSugar; using SqlSugar;
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
...@@ -241,5 +240,12 @@ namespace TakeStock.SqlSugar ...@@ -241,5 +240,12 @@ namespace TakeStock.SqlSugar
else else
return client.Updateable(entity).ExecuteCommandAsync(); return client.Updateable(entity).ExecuteCommandAsync();
} }
// public void PageList(TEntity entity)
// {
// var pageJoin = client.Queryable<Student, School>((st, sc) => new object[] {
// JoinType.Left,st.SchoolId==sc.Id
//}).ToPageList(pageIndex, pageSize, ref totalCount);
// }
} }
} }
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