fix(订单服务): 修复订单采购服务中的验证逻辑和状态处理
- 移除OrderPurchaseDto中Id字段的必填验证 - 修改ProWorkorderMaterialService中的订单筛选条件 - 增强AddOrderPurchase和UpdateOrderPurchase方法的验证逻辑 - 为订单添加初始状态值和事务处理 - 修复导入日期处理和空值判断
This commit is contained in:
@@ -46,7 +46,6 @@ namespace DOAN.Model.MES.order.Dto
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class OrderPurchaseDto
|
public class OrderPurchaseDto
|
||||||
{
|
{
|
||||||
[Required(ErrorMessage = "雪花id不能为空")]
|
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
public DateTime? ImportDate { get; set; }
|
public DateTime? ImportDate { get; set; }
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Aliyun.OSS;
|
using Aliyun.OSS;
|
||||||
|
using DOAN.Model.BZFM;
|
||||||
using DOAN.Model.MES.order;
|
using DOAN.Model.MES.order;
|
||||||
using DOAN.Model.MES.order.Dto;
|
using DOAN.Model.MES.order.Dto;
|
||||||
using DOAN.Model.MES.product;
|
using DOAN.Model.MES.product;
|
||||||
@@ -46,7 +47,7 @@ namespace DOAN.Service.MES.order
|
|||||||
var workorderInfo = Context.Queryable<ProWorkorder>()
|
var workorderInfo = Context.Queryable<ProWorkorder>()
|
||||||
.Where(it => it.Workorder.Contains(parm.WorkOrder))
|
.Where(it => it.Workorder.Contains(parm.WorkOrder))
|
||||||
.First();
|
.First();
|
||||||
if(workorderInfo != null)
|
if (workorderInfo != null)
|
||||||
{
|
{
|
||||||
parm.OrderNoMes = workorderInfo.CustomerOrder;
|
parm.OrderNoMes = workorderInfo.CustomerOrder;
|
||||||
}
|
}
|
||||||
@@ -97,7 +98,46 @@ namespace DOAN.Service.MES.order
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public OrderPurchase AddOrderPurchase(OrderPurchase model)
|
public OrderPurchase AddOrderPurchase(OrderPurchase model)
|
||||||
{
|
{
|
||||||
return Insertable(model).ExecuteReturnEntity();
|
// 订单号唯一性验证
|
||||||
|
var existingOrder = Context.Queryable<OrderPurchase>()
|
||||||
|
.Where(it => it.OrderNoMes == model.OrderNoMes)
|
||||||
|
.First();
|
||||||
|
|
||||||
|
if (existingOrder != null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"订单号 {model.OrderNoMes} 已存在,请使用其他订单号");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置初始值
|
||||||
|
DateTime now = DateTime.Now;
|
||||||
|
model.Id = SnowFlakeSingle.Instance.NextId().ToString();
|
||||||
|
|
||||||
|
var materialInfo = Context.Queryable<MmMaterial>().Where(it => it.MaterialCode == model.MaterialCode).First();
|
||||||
|
if(materialInfo == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"物料号 {model.MaterialCode} 不在清单中,请检查");
|
||||||
|
}
|
||||||
|
model.MaterialName = materialInfo.MaterialName;
|
||||||
|
model.ImportDate = now;
|
||||||
|
model.DocumentDate = now;
|
||||||
|
model.CreatedTime = now;
|
||||||
|
model.CreatedBy = "";
|
||||||
|
model.UpdatedTime = now;
|
||||||
|
model.UpdatedBy = "";
|
||||||
|
// 设置默认值
|
||||||
|
model.Specordindicator = -1; // 不处理
|
||||||
|
model.DeliveryQuantity = 0; // 实际交货数量初始为0
|
||||||
|
model.Orderindicator = -1; // 订单未完成(初始状态)
|
||||||
|
model.Status = 0; // 状态待处理
|
||||||
|
|
||||||
|
// 使用事务处理
|
||||||
|
OrderPurchase result = null;
|
||||||
|
UseTran2(() =>
|
||||||
|
{
|
||||||
|
result = Insertable(model).ExecuteReturnEntity();
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -107,7 +147,31 @@ namespace DOAN.Service.MES.order
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int UpdateOrderPurchase(OrderPurchase model)
|
public int UpdateOrderPurchase(OrderPurchase model)
|
||||||
{
|
{
|
||||||
return Update(model, true);
|
// 订单号唯一性验证
|
||||||
|
var existingOrder = Context.Queryable<OrderPurchase>()
|
||||||
|
.Where(it => it.OrderNoMes == model.OrderNoMes && it.Id != model.Id)
|
||||||
|
.First();
|
||||||
|
|
||||||
|
if (existingOrder != null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"订单号 {model.OrderNoMes} 已存在,请使用其他订单号");
|
||||||
|
}
|
||||||
|
|
||||||
|
var materialInfo = Context.Queryable<MmMaterial>().Where(it => it.MaterialCode == model.MaterialCode).First();
|
||||||
|
if (materialInfo == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"物料号 {model.MaterialCode} 不在清单中,请检查");
|
||||||
|
}
|
||||||
|
model.MaterialName = materialInfo.MaterialName;
|
||||||
|
|
||||||
|
// 使用事务处理
|
||||||
|
int result = 0;
|
||||||
|
UseTran2(() =>
|
||||||
|
{
|
||||||
|
result = Update(model, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -145,7 +209,7 @@ namespace DOAN.Service.MES.order
|
|||||||
|
|
||||||
|
|
||||||
// 将单元格的数字值转换为DateTime
|
// 将单元格的数字值转换为DateTime
|
||||||
importDate = cell?.DateCellValue?? DateTime.MinValue;
|
importDate = cell?.DateCellValue ?? DateTime.MinValue;
|
||||||
importDate = importDate.Date;
|
importDate = importDate.Date;
|
||||||
|
|
||||||
// 遍历每一行
|
// 遍历每一行
|
||||||
@@ -234,13 +298,13 @@ namespace DOAN.Service.MES.order
|
|||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if(orderPurchases.Count>0)
|
if (orderPurchases.Count > 0)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
UseTran2(() =>
|
UseTran2(() =>
|
||||||
{
|
{
|
||||||
Context.Deleteable<OrderPurchase>().Where(x => x.ImportDate == importDate).ExecuteCommand();
|
Context.Deleteable<OrderPurchase>().Where(x => x.ImportDate == importDate).ExecuteCommand();
|
||||||
result= Context.Insertable(orderPurchases).ExecuteCommand();
|
result = Context.Insertable(orderPurchases).ExecuteCommand();
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
|||||||
@@ -479,7 +479,7 @@ namespace DOAN.Service.MES.product
|
|||||||
var orderPurchaseList = Context
|
var orderPurchaseList = Context
|
||||||
.Queryable<OrderPurchase>()
|
.Queryable<OrderPurchase>()
|
||||||
.Where(o => o.MaterialCode == workorderInfo.productionCode)
|
.Where(o => o.MaterialCode == workorderInfo.productionCode)
|
||||||
.Where(it => it.Orderindicator == 0)
|
.Where(it => it.Orderindicator != -1)
|
||||||
.OrderBy(it => it.DeliveryDate)
|
.OrderBy(it => it.DeliveryDate)
|
||||||
.Select(
|
.Select(
|
||||||
o => new OrderPurchaseDto
|
o => new OrderPurchaseDto
|
||||||
|
|||||||
Reference in New Issue
Block a user