diff --git a/DOAN.Model/MES/Order/OrderPurchase.cs b/DOAN.Model/MES/Order/OrderPurchase.cs
index d824e93..72dc8f7 100644
--- a/DOAN.Model/MES/Order/OrderPurchase.cs
+++ b/DOAN.Model/MES/Order/OrderPurchase.cs
@@ -42,7 +42,7 @@ namespace DOAN.Model.MES.order
public string Variety { get; set; }
///
- /// 是否非标
+ /// 是否非标 1是 -1否
///
public int Specordindicator { get; set; }
@@ -112,7 +112,7 @@ namespace DOAN.Model.MES.order
public DateTime? EndDate { get; set; }
///
- /// 订单是否完成
+ /// 订单是否完成 1已完成 -1未完成
///
public int Orderindicator { get; set; }
diff --git a/DOAN.Service/MES/Material/MmInventoryService.cs b/DOAN.Service/MES/Material/MmInventoryService.cs
index e7f41f4..4985de9 100644
--- a/DOAN.Service/MES/Material/MmInventoryService.cs
+++ b/DOAN.Service/MES/Material/MmInventoryService.cs
@@ -400,7 +400,6 @@ namespace DOAN.Service.BZFM
Context.Insertable(newRecord).ExecuteCommand();
Context.Ado.CommitTran();
return "ok";
-
}
else
{
@@ -477,10 +476,7 @@ namespace DOAN.Service.BZFM
Context.Insertable(newRecord).ExecuteCommand();
Context.Ado.CommitTran();
return "ok";
-
}
-
-
}
catch (Exception ex)
{
@@ -891,10 +887,11 @@ namespace DOAN.Service.BZFM
{
int _type = parm.Type;
int _id = parm.Id;
- if (_type < -1 && _id < -1)
+ if (_type < -1 || _id < -1)
{
return $"传入参数有误,请检查:type-{_type},id-{_id}";
}
+
// type == 1 入库单
if (_type == 1)
{
@@ -953,6 +950,7 @@ namespace DOAN.Service.BZFM
{
return $"此记录已撤销过,不可重复撤销";
}
+
//做出库红单
OutboundReceiptDto revokeRecepitDto = new()
{
@@ -970,20 +968,73 @@ namespace DOAN.Service.BZFM
Remarks = $"撤销操作,出库单号:{recordOutbound.OutboundNo}",
};
string result = CreateOutboundReceipt(revokeRecepitDto);
- if (result == "ok")
- {
- recordOutbound.Remarks = "已撤销";
- Context.Updateable(recordOutbound).ExecuteCommand();
- return result;
- }
- else
+ if(result != "ok")
{
return result;
}
+ // 如果是出货则还要减少出货单库存
+ Context.Ado.BeginTran();
+ if (recordOutbound.TransactionType == "出货出库")
+ {
+ var workorderInfo = Context
+ .Queryable()
+ .Where(it => it.Workorder == recordOutbound.Workorder)
+ .First();
+ if (workorderInfo == null)
+ {
+ Context.Ado.RollbackTran();
+ return "工单不存在";
+ }
+ // 判断订单号是否存在
+ var orderPurchase = Context
+ .Queryable()
+ .Where(o => o.OrderNoMes == workorderInfo.CustomerOrder)
+ .First();
+ if (orderPurchase == null)
+ {
+ Context.Ado.RollbackTran();
+ return "订单号不存在";
+ }
+ Context
+ .Updateable()
+ .Where(it => it.Workorder == recordOutbound.Workorder)
+ .SetColumns(it => it.ShipmentNum == 0)
+ .SetColumns(it => it.CustomerOrder == string.Empty)
+ .ExecuteCommand();
+ // 修改采购订单是否完成
+ int newQuantity =
+ Context
+ .Queryable()
+ .Where(it => it.CustomerOrder == orderPurchase.OrderNoMes)
+ .Sum(it => it.ShipmentNum)
+ ?? 0;
+ orderPurchase.DeliveryQuantity = newQuantity;
+ if (orderPurchase.DeliveryQuantity > orderPurchase.DemandQuantity)
+ {
+ // 订单超额了
+ Context.Ado.RollbackTran();
+ return "订单超额了";
+ }
+ if (orderPurchase.DeliveryQuantity == orderPurchase.DemandQuantity)
+ {
+ orderPurchase.Orderindicator = 1;
+ }
+ else
+ {
+ orderPurchase.Orderindicator = -1;
+ }
+ int res = Context.Updateable(orderPurchase).ExecuteCommand();
+ }
+
+ recordOutbound.Remarks = "已撤销";
+ Context.Updateable(recordOutbound).ExecuteCommand();
+ Context.Ado.CommitTran();
+ return result;
}
}
catch (Exception e)
{
+ Context.Ado.RollbackTran();
return e.Message;
}
}
@@ -1191,7 +1242,7 @@ namespace DOAN.Service.BZFM
}
else
{
- orderPurchase.Orderindicator = 0;
+ orderPurchase.Orderindicator = -1;
}
Context.Updateable(orderPurchase).ExecuteCommand();
}
diff --git a/DOAN.Service/MES/Order/DeliveryScheduleService.cs b/DOAN.Service/MES/Order/DeliveryScheduleService.cs
index 2e0963e..8e2a3f0 100644
--- a/DOAN.Service/MES/Order/DeliveryScheduleService.cs
+++ b/DOAN.Service/MES/Order/DeliveryScheduleService.cs
@@ -1,4 +1,9 @@
-using DOAN.Model.MES.order;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using DOAN.Model.MES.order;
using DOAN.Model.MES.order.Dto;
using DOAN.Model.MES.Order.Dto;
using DOAN.Model.MES.product;
@@ -6,15 +11,13 @@ using DOAN.Service.MES.order.IService;
using DOAN.Service.MES.Order.IService;
using Infrastructure.Attribute;
using Infrastructure.Converter;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace DOAN.Service.MES.Order
{
- [AppService(ServiceType = typeof(IDeliveryScheduleService), ServiceLifetime = LifeTime.Transient)]
+ [AppService(
+ ServiceType = typeof(IDeliveryScheduleService),
+ ServiceLifetime = LifeTime.Transient
+ )]
public class DeliveryScheduleService : BaseService, IDeliveryScheduleService
{
///
@@ -37,68 +40,86 @@ namespace DOAN.Service.MES.Order
}
}
var predicate = QueryExp(parm);
- var queryResult = Context.Queryable()
+ var queryResult = Context
+ .Queryable()
.LeftJoin((o, w) => o.OrderNoMes == w.CustomerOrder)
.Where(predicate.ToExpression())
.Where((o, w) => !SqlFunc.IsNullOrEmpty(o.OrderNoMes))
.OrderBy((o, w) => o.OrderNoMes)
- .Select((o, w) => new OrderScheduleDto
- {
- Id = o.Id,
- ImportDate = o.ImportDate,
- OrderNoMes = o.OrderNoMes,
- PurchaseOrderErp = o.PurchaseOrderErp,
- Poitem = o.Poitem,
- Variety = o.Variety,
- Specordindicator = o.Specordindicator,
- KdType = o.KdType,
- DocumentDate = o.DocumentDate,
- Seller = o.Seller,
- SalesArea = o.SalesArea,
- MaterialName = o.MaterialName,
- MaterialCode = o.MaterialCode,
- DemandQuantity = o.DemandQuantity,
- DeliveryQuantity= o.DeliveryQuantity,
- DeliveryDate = o.DeliveryDate,
- //DeliveryQuantity = SqlFunc.Subqueryable()
- //.Where(w => w.FeedOrder == o.OrderNoMes).Sum(it=>it.ShipmentNum),
+ .Select(
+ (o, w) =>
+ new OrderScheduleDto
+ {
+ Id = o.Id,
+ ImportDate = o.ImportDate,
+ OrderNoMes = o.OrderNoMes,
+ PurchaseOrderErp = o.PurchaseOrderErp,
+ Poitem = o.Poitem,
+ Variety = o.Variety,
+ Specordindicator = o.Specordindicator,
+ KdType = o.KdType,
+ DocumentDate = o.DocumentDate,
+ Seller = o.Seller,
+ SalesArea = o.SalesArea,
+ MaterialName = o.MaterialName,
+ MaterialCode = o.MaterialCode,
+ DemandQuantity = o.DemandQuantity,
+ DeliveryQuantity = o.DeliveryQuantity,
+ DeliveryDate = o.DeliveryDate,
+ //DeliveryQuantity = SqlFunc.Subqueryable()
+ //.Where(w => w.FeedOrder == o.OrderNoMes).Sum(it=>it.ShipmentNum),
- StartDate = o.StartDate,
- EndDate = o.EndDate,
- Orderindicator = o.Orderindicator,
- RouteCode = o.RouteCode,
- Status = o.Status,
- Remark = o.Remark,
- CreatedBy = o.CreatedBy,
- CreatedTime = o.CreatedTime,
- UpdatedBy = o.UpdatedBy,
- UpdatedTime = o.UpdatedTime,
- Children = SqlFunc.Subqueryable()
- .Where(w => w.CustomerOrder == o.OrderNoMes) // 子查询,获取对应的工单数据
- .ToList()
- })
+ StartDate = o.StartDate,
+ EndDate = o.EndDate,
+ Orderindicator = o.Orderindicator,
+ RouteCode = o.RouteCode,
+ Status = o.Status,
+ Remark = o.Remark,
+ CreatedBy = o.CreatedBy,
+ CreatedTime = o.CreatedTime,
+ UpdatedBy = o.UpdatedBy,
+ UpdatedTime = o.UpdatedTime,
+ Children = SqlFunc
+ .Subqueryable()
+ .Where(w => w.CustomerOrder == o.OrderNoMes) // 子查询,获取对应的工单数据
+ .ToList(),
+ }
+ )
.Distinct()
.ToList();
return queryResult;
}
- private static Expressionable QueryExp(OrderPurchaseQueryDto parm)
+ private static Expressionable QueryExp(
+ OrderPurchaseQueryDto parm
+ )
{
- var predicate = Expressionable.Create()
- .AndIF(!string.IsNullOrEmpty(parm.OrderNoMes), (o, w) => o.OrderNoMes.Contains(parm.OrderNoMes))
- .AndIF(!string.IsNullOrEmpty(parm.PurchaseOrderErp), (o, w) => o.PurchaseOrderErp.Contains(parm.PurchaseOrderErp))
- .AndIF(!string.IsNullOrEmpty(parm.MaterialCode), (o, w) => o.MaterialCode.Contains(parm.MaterialCode))
- .AndIF(parm.ImportDate != null && parm.ImportDate[0] > DateTime.MinValue, (o, w) => o.ImportDate >= parm.ImportDate[0])
- .AndIF(parm.ImportDate != null && parm.ImportDate[1] > DateTime.MinValue, (o, w) => o.ImportDate <= parm.ImportDate[1])
- .AndIF(parm.Orderindicator>-2,(o,w)=>o.Orderindicator==parm.Orderindicator)
-
- ;
+ var predicate = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(parm.OrderNoMes),
+ (o, w) => o.OrderNoMes.Contains(parm.OrderNoMes)
+ )
+ .AndIF(
+ !string.IsNullOrEmpty(parm.PurchaseOrderErp),
+ (o, w) => o.PurchaseOrderErp.Contains(parm.PurchaseOrderErp)
+ )
+ .AndIF(
+ !string.IsNullOrEmpty(parm.MaterialCode),
+ (o, w) => o.MaterialCode.Contains(parm.MaterialCode)
+ )
+ .AndIF(
+ parm.ImportDate != null && parm.ImportDate[0] > DateTime.MinValue,
+ (o, w) => o.ImportDate >= parm.ImportDate[0]
+ )
+ .AndIF(
+ parm.ImportDate != null && parm.ImportDate[1] > DateTime.MinValue,
+ (o, w) => o.ImportDate <= parm.ImportDate[1]
+ )
+ .AndIF(parm.Orderindicator > -2, (o, w) => o.Orderindicator == parm.Orderindicator);
return predicate;
}
-
}
-
-
}
diff --git a/DOAN.Service/MES/Order/OrderPurchaseService.cs b/DOAN.Service/MES/Order/OrderPurchaseService.cs
index 8bfc1a9..09a9b4c 100644
--- a/DOAN.Service/MES/Order/OrderPurchaseService.cs
+++ b/DOAN.Service/MES/Order/OrderPurchaseService.cs
@@ -264,7 +264,7 @@ namespace DOAN.Service.MES.order
}
else if (!string.IsNullOrEmpty(Orderindicator) && Orderindicator == "否")
{
- model.Orderindicator = 0;
+ model.Orderindicator = -1;
}
else
{
diff --git a/DOAN.Service/MES/Product/ProWorkorderQueryService.cs b/DOAN.Service/MES/Product/ProWorkorderQueryService.cs
index e6f4912..d9a1b25 100644
--- a/DOAN.Service/MES/Product/ProWorkorderQueryService.cs
+++ b/DOAN.Service/MES/Product/ProWorkorderQueryService.cs
@@ -31,10 +31,10 @@ namespace DOAN.Service.MES.product
parm.WorkorderDate[0] = parm.WorkorderDate[0].Date;
parm.WorkorderDate[1] = parm.WorkorderDate[1].Date;
}
-
+ bool hasWorkorder = !string.IsNullOrEmpty(parm.Workorder);
var predicate = Expressionable
.Create()
- .And(it => it.PlanNum > 0)
+ .AndIF(hasWorkorder, it => it.Workorder.Contains(parm.Workorder))
.AndIF(
!string.IsNullOrEmpty(parm.productionName),
it => it.productionName.Contains(parm.productionName)
@@ -60,7 +60,7 @@ namespace DOAN.Service.MES.product
.AndIF(!string.IsNullOrEmpty(parm.RouteCode), it => it.RouteCode == parm.RouteCode)
.AndIF(!string.IsNullOrEmpty(parm.GroupCode), it => it.GroupCode == parm.GroupCode)
.AndIF(
- parm.WorkorderDate != null && parm.WorkorderDate.Length > 0,
+ (parm.WorkorderDate != null && parm.WorkorderDate.Length > 0) && !hasWorkorder,
it =>
it.WorkorderDate >= parm.WorkorderDate[0]
&& it.WorkorderDate <= parm.WorkorderDate[1]
@@ -91,7 +91,7 @@ namespace DOAN.Service.MES.product
parm.WorkorderDate[0] = parm.WorkorderDate[0].Date;
parm.WorkorderDate[1] = parm.WorkorderDate[1].Date;
}
-
+ bool hasWorkorder = !string.IsNullOrEmpty(parm.Workorder);
var predicate = Expressionable
.Create()
.AndIF(
@@ -119,11 +119,12 @@ namespace DOAN.Service.MES.product
.AndIF(!string.IsNullOrEmpty(parm.RouteCode), it => it.RouteCode == parm.RouteCode)
.AndIF(!string.IsNullOrEmpty(parm.GroupCode), it => it.GroupCode == parm.GroupCode)
.AndIF(
- parm.WorkorderDate != null && parm.WorkorderDate.Length > 0,
+ (parm.WorkorderDate != null && parm.WorkorderDate.Length > 0) && !hasWorkorder,
it =>
it.WorkorderDate >= parm.WorkorderDate[0]
&& it.WorkorderDate <= parm.WorkorderDate[1]
)
+ .AndIF(hasWorkorder, it => it.Workorder.Contains(parm.Workorder))
.And(it => it.PlanNum > 0)
.ToExpression();
diff --git a/DOAN.Service/Mobile/ReportFlowService.cs b/DOAN.Service/Mobile/ReportFlowService.cs
index d273325..b803dd4 100644
--- a/DOAN.Service/Mobile/ReportFlowService.cs
+++ b/DOAN.Service/Mobile/ReportFlowService.cs
@@ -571,7 +571,7 @@ public class ReportFlowService : BaseService, IReportFlowServic
}
else
{
- orderPurchase.Orderindicator = 0;
+ orderPurchase.Orderindicator = -1;
}
int res = Context.Updateable(orderPurchase).ExecuteCommand();
Context.Ado.CommitTran();