From 24c159fbe89c144502d4e3555160afc4387756de Mon Sep 17 00:00:00 2001
From: majian <780924089@qq.com>
Date: Wed, 21 Aug 2024 16:58:05 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9D=90=E6=96=99=E5=87=BA=E5=BA=93=E3=80=81?=
=?UTF-8?q?=E8=B0=83=E6=8B=A8=E6=9F=A5=E8=AF=A2=E9=87=8D=E5=86=99;?=
=?UTF-8?q?=E9=87=87=E8=B4=AD=E9=80=80=E6=96=99=EF=BC=9B=E7=94=9F=E6=88=90?=
=?UTF-8?q?=E6=9D=A1=E7=A0=81=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Consts/ModuleConsts.cs | 4 +
.../Consts/WmsWareHouseConst.cs | 14 +-
.../Dto/Inputs/PurchaseReturnInput.cs | 34 +++
.../Entity/WmsPurchaseReturnC.cs | 77 +++++
.../Entity/WmsPurchaseReturnD.cs | 96 +++++++
.../Entity/WmsPurchaseReturnH.cs | 127 +++++++++
.../Tnb.WarehouseMgr/ErpToWmsService.cs | 262 ++++++++++++------
.../Tnb.WarehouseMgr/WmsOutsourceService.cs | 22 +-
.../WmsPDAScanInStockService.cs | 7 +-
.../Tnb.WarehouseMgr/WmsPurchaseDService.cs | 8 +-
.../WmsPurchaseReturnService.cs | 220 +++++++++++++++
.../WmsRawmatOutstockService.cs | 17 +-
.../WmsRawmatTransferoutstockService.cs | 15 +-
13 files changed, 804 insertions(+), 99 deletions(-)
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/PurchaseReturnInput.cs
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnC.cs
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnD.cs
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnH.cs
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseReturnService.cs
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
index d6bb28cd..2c165edf 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
@@ -137,6 +137,10 @@ public class ModuleConsts
///
public const string MODULE_WmsRawmatTransferoutstock_ID = "MODULE_WmsRawmatTransferoutstock_ID";
///
+ /// 模块标识-采购退货 todo
+ ///
+ public const string MODULE_WmsPurchaseReturn_ID = "MODULE_WmsPurchaseReturn_ID";
+ ///
/// 模块标识-材料出库单 todo
///
public const string MODULE_WmsRawmatOutstock_ID = "MODULE_WmsRawmatOutstock_ID";
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
index 16ab2a00..cadb7618 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
@@ -290,6 +290,14 @@
///
public const string BIZTYPE_WMSINSTOCK_ID = "26191496816421";
///
+ /// 预任务生成业务类型-原材料委外入库
+ ///
+ public const string BIZTYPE_OUTSOURCE_ID = "36366312756501";
+ ///
+ /// 预任务生成业务类型-原材料调拨入库
+ ///
+ public const string BIZTYPE_RAWMATTRANSFERINSTOCK_ID = "36366317804821";
+ ///
/// 预任务生成业务类型-一般出库
///
public const string BIZTYPE_WMSOUTSTOCK_ID = "26191522660645";
@@ -318,7 +326,7 @@
///
public const string BIZTYPE_WMSSALERELEASE_ID = "25104446664213";
///
- /// 预任务生成业务类型-原材料转库单 todo
+ /// 预任务生成业务类型-原材料转库单
///
public const string BIZTYPE_WMSMATERIALTRANSFER_ID = "34354738929685";
///
@@ -326,6 +334,10 @@
///
public const string BIZTYPE_WmsRawmatTransferoutstock_ID = "36318854044437";
///
+ /// 预任务生成业务类型-采购退库(原材料)
+ ///
+ public const string BIZTYPE_WmsPurchaseReturn_ID = "36367919005717";
+ ///
/// 预任务生成业务类型-原材料仓材料出库单
///
public const string BIZTYPE_WmsRawmatOutstock_ID = "36340105558037";
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/PurchaseReturnInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/PurchaseReturnInput.cs
new file mode 100644
index 00000000..9a19ff14
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/PurchaseReturnInput.cs
@@ -0,0 +1,34 @@
+using Tnb.WarehouseMgr.Entities.Consts;
+
+namespace Tnb.WarehouseMgr.Entities.Dto
+{
+ ///
+ /// 库房业务更新输入参数
+ ///
+ public class PurchaseReturnInput
+ {
+ ///
+ /// 组织ID
+ ///
+ public string org_id { get; set; } = WmsWareHouseConst.AdministratorOrgId;
+ ///
+ /// 创建用户
+ ///
+ public string create_id { get; set; }
+
+ ///
+ /// 来源单据id
+ ///
+ public string? source_id { get; set; }
+
+ ///
+ /// 载具
+ ///
+ public List carrys { get; set; }
+ }
+
+ public class PurchaseReturnDetailInput
+ {
+ public string carry_code { get; set; }
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnC.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnC.cs
new file mode 100644
index 00000000..b073e4fc
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnC.cs
@@ -0,0 +1,77 @@
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.WarehouseMgr.Entities.Entity;
+
+///
+/// 采购退货单载具表
+///
+[SugarTable("wms_purchase_return_c")]
+public partial class WmsPurchaseReturnC : BaseEntity
+{
+ public WmsPurchaseReturnC()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 采购退货单id
+ ///
+ public string? bill_id { get; set; }
+
+ ///
+ /// 载具ID
+ ///
+ public string? carry_id { get; set; }
+
+ ///
+ /// 载具编号
+ ///
+ public string? carry_code { get; set; }
+
+ ///
+ /// 创建用户
+ ///
+ public string? create_id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set; }
+
+ ///
+ /// 终点库位id
+ ///
+ public string? endlocation_id { get; set; }
+
+ ///
+ /// 终点库位编码
+ ///
+ public string? endlocation_code { get; set; }
+
+ ///
+ /// 起点库位id
+ ///
+ public string? startlocation_id { get; set; }
+
+ ///
+ /// 起点库位编码
+ ///
+ public string? startlocation_code { get; set; }
+
+ ///
+ /// 采购退货单明细id
+ ///
+ public string? mat_bill_id { get; set; }
+
+ ///
+ /// 载具数量
+ ///
+ public decimal? qty { get; set; }
+
+ ///
+ /// 签收数量
+ ///
+ public decimal? sign_qty { get; set; }
+
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnD.cs
new file mode 100644
index 00000000..00dceb0e
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnD.cs
@@ -0,0 +1,96 @@
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.WarehouseMgr.Entities.Entity;
+
+///
+/// 采购退货子表
+///
+[SugarTable("wms_purchase_return_d")]
+public partial class WmsPurchaseReturnD : BaseEntity
+{
+ public WmsPurchaseReturnD()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 主表id
+ ///
+ public string? bill_id { get; set; }
+
+ ///
+ /// 物料id
+ ///
+ public string? matcode_id { get; set; }
+
+ ///
+ /// 物料编号
+ ///
+ public string? matcode { get; set; }
+
+ ///
+ /// 物料描述
+ ///
+ public string? matspecification { get; set; }
+
+ ///
+ /// 单位
+ ///
+ public string? unit { get; set; }
+
+ ///
+ /// 退货数量
+ ///
+ public decimal? qty { get; set; }
+
+ ///
+ /// 实退数量
+ ///
+ public decimal? actual_qty { get; set; }
+
+ ///
+ /// 批次
+ ///
+ public string? code_batch { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string? remark { get; set; }
+
+ ///
+ /// 扩展字段
+ ///
+ public string? extras { get; set; }
+
+ ///
+ /// 创建用户
+ ///
+ public string? create_id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set; }
+
+ ///
+ /// 修改用户
+ ///
+ public string? modify_id { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ public DateTime? modify_time { get; set; }
+
+ ///
+ /// erp_line_pk
+ ///
+ public string? erp_line_pk { get; set; }
+
+ ///
+ /// 行号
+ ///
+ public string? lineno { get; set; }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnH.cs
new file mode 100644
index 00000000..5d68c29d
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseReturnH.cs
@@ -0,0 +1,127 @@
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.WarehouseMgr.Entities.Entity;
+
+///
+/// 采购退货
+///
+[SugarTable("wms_purchase_return_h")]
+public partial class WmsPurchaseReturnH : BaseEntity
+{
+ public WmsPurchaseReturnH()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 采购退货单号
+ ///
+ public string? bill_code { get; set; }
+
+ ///
+ /// 联系人
+ ///
+ public string? contact_person { get; set; }
+
+ ///
+ /// 电话
+ ///
+ public string? tel { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string? remark { get; set; }
+
+ ///
+ /// 扩展字段
+ ///
+ public string? extras { get; set; }
+
+ ///
+ /// 时间戳
+ ///
+ public string? time_stamp { get; set; }
+
+ ///
+ /// 单据类型
+ ///
+ public string? document_type { get; set; }
+
+ ///
+ /// 创建用户
+ ///
+ public string? create_id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set; }
+
+ ///
+ /// 修改用户
+ ///
+ public string? modify_id { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ public DateTime? modify_time { get; set; }
+
+ ///
+ /// 所属组织
+ ///
+ public string? org_id { get; set; }
+
+ ///
+ /// 流程任务Id
+ ///
+ public string? f_flowtaskid { get; set; }
+
+ ///
+ /// 流程引擎Id
+ ///
+ public string? f_flowid { get; set; }
+
+ ///
+ /// 部门编码
+ ///
+ public string? dept_code { get; set; }
+
+ ///
+ /// 业务员编码
+ ///
+ public string? biller { get; set; }
+
+ ///
+ /// 下发状态
+ ///
+ public string? issuance_status { get; set; }
+
+ ///
+ /// 采购订单
+ ///
+ public string? purchase_order { get; set; }
+
+ ///
+ /// 出库类型(BIP)
+ ///
+ public string? outstock_type { get; set; }
+
+ ///
+ /// 出库仓库
+ ///
+ public string? warehouse_code { get; set; }
+
+ ///
+ /// erp_pk
+ ///
+ public string? erp_pk { get; set; }
+
+ ///
+ /// erp_bill_code
+ ///
+ public string? erp_bill_code { get; set; }
+
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs
index 2d86303f..8d4c3e15 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Linq;
using System.Text;
using Aop.Api.Domain;
using JNPF.Common.Enums;
@@ -320,104 +321,201 @@ namespace Tnb.WarehouseMgr
throw new AppFriendlyException($@"子表主键不能为空!", 500);
}
- var wmsPurchaseOrdersDistinct = input.details.Select(r => new
- {
- material_id = r.material_code,
- code_batch = r.code_batch,
- }).Distinct();
+ //var wmsPurchaseOrdersDistinct = input.details.Select(r => new
+ //{
+ // material_id = r.material_code,
+ // code_batch = r.code_batch,
+ //}).Distinct();
//if (wmsPurchaseOrdersDistinct.Count() < input.details.Count)
//{
// _LoggerErp2Mes.LogWarning($@"【PurchaseOrderInput】表体存在物料和批号重复的明细!");
// throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
//}
+
+ List details = input.details.Where(r => r.purchase_quantity > 0).ToList();
+ List details_return = input.details.Where(r => r.purchase_quantity < 0).ToList();
+ // purchase_quantity 是负数作为采购退料
+
await db.Ado.BeginTranAsync();
- // 判断是否为重复传输的采购订单
- WmsPurchaseOrderH wmsPurchaseOrderRep = await db.Queryable().Where(r => r.erp_pk == input.erp_pk).FirstAsync();
- if (wmsPurchaseOrderRep != null)
+
+ if (details.Count > 0)
{
- // 判断收货单是否已经生成
- WmsPurchaseH wmsPurchaseH = await db.Queryable().Where(r => r.source_id == wmsPurchaseOrderRep.id).FirstAsync();
- if (wmsPurchaseH != null)
+ // 判断是否为重复传输的采购订单
+ WmsPurchaseOrderH wmsPurchaseOrderRep = await db.Queryable().Where(r => r.erp_pk == input.erp_pk).FirstAsync();
+ if (wmsPurchaseOrderRep != null)
{
- _LoggerErp2Mes.LogWarning($@"【PurchaseOrderInput】wms已创建收货单{wmsPurchaseH.bill_code}!");
- throw new AppFriendlyException($@"wms已创建收货单{wmsPurchaseH.bill_code}!", 500);
+ // 判断收货单是否已经生成
+ WmsPurchaseH wmsPurchaseH = await db.Queryable().Where(r => r.source_id == wmsPurchaseOrderRep.id).FirstAsync();
+ if (wmsPurchaseH != null)
+ {
+ _LoggerErp2Mes.LogWarning($@"【PurchaseOrderInput】wms已创建收货单{wmsPurchaseH.bill_code}!");
+ throw new AppFriendlyException($@"wms已创建收货单{wmsPurchaseH.bill_code}!", 500);
+ }
+ else // 删除数据重新插入
+ {
+ await db.Deleteable().Where(r => r.id == wmsPurchaseOrderRep.id).ExecuteCommandAsync();
+ await db.Deleteable().Where(r => r.fk_wms_purchase_order_id == wmsPurchaseOrderRep.id).ExecuteCommandAsync();
+ }
}
- else // 删除数据重新插入
+
+ WmsPurchaseOrderH wmsPurchaseOrderH = new WmsPurchaseOrderH();
+ string Code = await _billRuleService.GetBillNumber("Purchase");
+
+ wmsPurchaseOrderH.purchase_order = Code;
+ wmsPurchaseOrderH.erp_bill_code = input.purchase_order;
+ wmsPurchaseOrderH.contact_person = input.contact_person;
+ wmsPurchaseOrderH.tel = input.tel;
+ wmsPurchaseOrderH.supplier_code = input.supplier_code;
+ wmsPurchaseOrderH.certificate_date = input.certificate_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
+ wmsPurchaseOrderH.ship_date = input.ship_date;
+ wmsPurchaseOrderH.erp_pk = input.erp_pk;
+ wmsPurchaseOrderH.create_id = WmsWareHouseConst.ErpUserId;
+ wmsPurchaseOrderH.create_time = DateTime.Now;
+ var supplier = await db.Queryable().Where(p => p.supplier_code == input.supplier_code).FirstAsync();
+ if (supplier != null)
{
- await db.Deleteable().Where(r => r.id == wmsPurchaseOrderRep.id).ExecuteCommandAsync();
- await db.Deleteable().Where(r => r.fk_wms_purchase_order_id == wmsPurchaseOrderRep.id).ExecuteCommandAsync();
+ wmsPurchaseOrderH.supplier_id = supplier.id;
+ wmsPurchaseOrderH.supplier_name = supplier.supplier_name;
}
+
+ await db.Insertable(wmsPurchaseOrderH).ExecuteCommandAsync();
+
+ List wmsPurchaseOrderDs = new List();
+ foreach (var detail in input.details)
+ {
+ WmsPurchaseOrderD wmsPurchaseOrderD = new WmsPurchaseOrderD();
+
+ wmsPurchaseOrderD.fk_wms_purchase_order_id = wmsPurchaseOrderH.id;
+ wmsPurchaseOrderD.matcode = detail.material_code;
+ wmsPurchaseOrderD.unit = detail.unit_code;
+
+ var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
+ if (erpExtendField != null)
+ {
+ wmsPurchaseOrderD.unit_id = erpExtendField.Id;
+ wmsPurchaseOrderD.unit = erpExtendField.EnCode;
+ }
+ else
+ {
+ _LoggerErp2Mes.LogWarning($@"【PurchaseOrder】表体明细中单位{detail.unit_code}在wms系统中未找到!");
+ throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
+ }
+
+ wmsPurchaseOrderD.purchase_quantity = detail.purchase_quantity;
+ wmsPurchaseOrderD.stock_location = detail.stock_location;
+ wmsPurchaseOrderD.code_batch = detail.code_batch;
+ wmsPurchaseOrderD.delivery_date = detail.delivery_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
+ wmsPurchaseOrderD.erp_line_pk = detail.erp_line_pk;
+ wmsPurchaseOrderD.create_id = WmsWareHouseConst.ErpUserId;
+ wmsPurchaseOrderD.create_time = DateTime.Now;
+ wmsPurchaseOrderD.actual_quantity = 0;
+ wmsPurchaseOrderD.lineno = detail.lineno;
+ wmsPurchaseOrderD.gift = detail.gift;
+
+ var material = await db.Queryable().Where(p => p.code == detail.material_code).FirstAsync();
+ if (material != null)
+ {
+ wmsPurchaseOrderD.matcode_id = material.id;
+ wmsPurchaseOrderD.matspecification = material.material_specification;
+ }
+
+ wmsPurchaseOrderDs.Add(wmsPurchaseOrderD);
+ }
+
+ await db.Insertable(wmsPurchaseOrderDs).ExecuteCommandAsync();
+ LoggerErp2Mes.LogInformation($"【PurchaseOrderInput】成功生成单据:{Code}");
}
- WmsPurchaseOrderH wmsPurchaseOrderH = new WmsPurchaseOrderH();
- string Code = await _billRuleService.GetBillNumber("Purchase");
-
- wmsPurchaseOrderH.purchase_order = Code;
- wmsPurchaseOrderH.erp_bill_code = input.purchase_order;
- wmsPurchaseOrderH.contact_person = input.contact_person;
- wmsPurchaseOrderH.tel = input.tel;
- wmsPurchaseOrderH.supplier_code = input.supplier_code;
- wmsPurchaseOrderH.certificate_date = input.certificate_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
- wmsPurchaseOrderH.ship_date = input.ship_date;
- wmsPurchaseOrderH.erp_pk = input.erp_pk;
- wmsPurchaseOrderH.create_id = WmsWareHouseConst.ErpUserId;
- wmsPurchaseOrderH.create_time = DateTime.Now;
- var supplier = await db.Queryable().Where(p => p.supplier_code == input.supplier_code).FirstAsync();
- if (supplier != null)
+ if (details_return.Count > 0)
{
- wmsPurchaseOrderH.supplier_id = supplier.id;
- wmsPurchaseOrderH.supplier_name = supplier.supplier_name;
+ // 判断是否为重复传输的采购退料订单
+ WmsPurchaseReturnH wmsPurchaseReturnRep = await db.Queryable().Where(r => r.erp_pk == input.erp_pk).FirstAsync();
+ if (wmsPurchaseReturnRep != null)
+ {
+ // 判断采购退货是否已经下发
+ List wmsPurchaseReturnDReps = await db.Queryable().Where(r => r.bill_id == wmsPurchaseReturnRep.id).ToListAsync();
+ if (wmsPurchaseReturnDReps.Where(r => r.actual_qty > 0).Count() > 0)
+ {
+ _LoggerErp2Mes.LogWarning($@"【PurchaseOrderInput】wms采购退货单{wmsPurchaseReturnRep.bill_code}已下发,不能退回!");
+ throw new AppFriendlyException($@"wms采购退货单{wmsPurchaseReturnRep.bill_code}已下发,不能退回!", 500);
+ }
+ else // 删除数据重新插入
+ {
+ await db.Deleteable().Where(r => r.id == wmsPurchaseReturnRep.id).ExecuteCommandAsync();
+ await db.Deleteable().Where(r => r.bill_id == wmsPurchaseReturnRep.id).ExecuteCommandAsync();
+ }
+ }
+
+ WmsPurchaseReturnH wmsPurchaseReturnH = new WmsPurchaseReturnH();
+ string Code = await _billRuleService.GetBillNumber("WmsPurchaseReturn");
+
+ wmsPurchaseReturnH.purchase_order = Code;
+ wmsPurchaseReturnH.erp_bill_code = input.purchase_order;
+ wmsPurchaseReturnH.contact_person = input.contact_person;
+ wmsPurchaseReturnH.tel = input.tel;
+ //wmsPurchaseReturnH.supplier_code = input.supplier_code;
+ //wmsPurchaseReturnH.certificate_date = input.certificate_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
+ //wmsPurchaseReturnH.ship_date = input.ship_date;
+ wmsPurchaseReturnH.erp_pk = input.erp_pk;
+ wmsPurchaseReturnH.create_id = WmsWareHouseConst.ErpUserId;
+ wmsPurchaseReturnH.create_time = DateTime.Now;
+ //var supplier = await db.Queryable().Where(p => p.supplier_code == input.supplier_code).FirstAsync();
+ //if (supplier != null)
+ //{
+ // wmsPurchaseReturnH.supplier_id = supplier.id;
+ // wmsPurchaseReturnH.supplier_name = supplier.supplier_name;
+ //}
+
+ await db.Insertable(wmsPurchaseReturnH).ExecuteCommandAsync();
+
+ List wmsPurchaseReturnDs = new List();
+ foreach (var detail in input.details)
+ {
+ WmsPurchaseReturnD wmsPurchaseReturnD = new WmsPurchaseReturnD();
+
+ wmsPurchaseReturnD.bill_id = wmsPurchaseReturnD.id;
+ wmsPurchaseReturnD.matcode = detail.material_code;
+ wmsPurchaseReturnD.unit = detail.unit_code;
+
+
+ var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
+ if (erpExtendField != null)
+ {
+ wmsPurchaseReturnD.unit = erpExtendField.EnCode;
+ }
+ else
+ {
+ _LoggerErp2Mes.LogWarning($@"【PurchaseOrder】表体明细中单位{detail.unit_code}在wms系统中未找到!");
+ throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
+ }
+
+ wmsPurchaseReturnD.qty = detail.purchase_quantity;
+ wmsPurchaseReturnD.code_batch = detail.code_batch;
+ wmsPurchaseReturnD.erp_line_pk = detail.erp_line_pk;
+ wmsPurchaseReturnD.create_id = WmsWareHouseConst.ErpUserId;
+ wmsPurchaseReturnD.create_time = DateTime.Now;
+ wmsPurchaseReturnD.actual_qty = 0;
+ wmsPurchaseReturnD.lineno = detail.lineno;
+
+ var material = await db.Queryable().Where(p => p.code == detail.material_code).FirstAsync();
+ if (material != null)
+ {
+ wmsPurchaseReturnD.matcode_id = material.id;
+ wmsPurchaseReturnD.matspecification = material.material_specification;
+ }
+
+ wmsPurchaseReturnDs.Add(wmsPurchaseReturnD);
+ }
+
+ await db.Insertable(wmsPurchaseReturnDs).ExecuteCommandAsync();
+ LoggerErp2Mes.LogInformation($"【PurchaseOrderInput】成功生成单据:{Code}");
}
- await db.Insertable(wmsPurchaseOrderH).ExecuteCommandAsync();
- List wmsPurchaseOrderDs = new List();
- foreach (var detail in input.details)
- {
- WmsPurchaseOrderD wmsPurchaseOrderD = new WmsPurchaseOrderD();
-
- wmsPurchaseOrderD.fk_wms_purchase_order_id = wmsPurchaseOrderH.id;
- wmsPurchaseOrderD.matcode = detail.material_code;
- wmsPurchaseOrderD.unit = detail.unit_code;
- var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
- if (erpExtendField != null)
- {
- wmsPurchaseOrderD.unit_id = erpExtendField.Id;
- wmsPurchaseOrderD.unit = erpExtendField.EnCode;
- }
- else
- {
- _LoggerErp2Mes.LogWarning($@"【PurchaseOrder】表体明细中单位{detail.unit_code}在wms系统中未找到!");
- throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
- }
-
- wmsPurchaseOrderD.purchase_quantity = detail.purchase_quantity;
- wmsPurchaseOrderD.stock_location = detail.stock_location;
- wmsPurchaseOrderD.code_batch = detail.code_batch;
- wmsPurchaseOrderD.delivery_date = detail.delivery_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
- wmsPurchaseOrderD.erp_line_pk = detail.erp_line_pk;
- wmsPurchaseOrderD.create_id = WmsWareHouseConst.ErpUserId;
- wmsPurchaseOrderD.create_time = DateTime.Now;
- wmsPurchaseOrderD.actual_quantity = 0;
- wmsPurchaseOrderD.lineno = detail.lineno;
- wmsPurchaseOrderD.gift = detail.gift;
-
- var material = await db.Queryable().Where(p => p.code == detail.material_code).FirstAsync();
- if (material != null)
- {
- wmsPurchaseOrderD.matcode_id = material.id;
- wmsPurchaseOrderD.matspecification = material.material_specification;
- }
-
- wmsPurchaseOrderDs.Add(wmsPurchaseOrderD);
- }
-
- await db.Insertable(wmsPurchaseOrderDs).ExecuteCommandAsync();
await db.Ado.CommitTranAsync();
- LoggerErp2Mes.LogInformation($"【PurchaseOrderInput】成功生成单据:{Code}");
return await ToApiResult(HttpStatusCode.OK, "成功");
}
catch (Exception ex)
@@ -501,7 +599,7 @@ namespace Tnb.WarehouseMgr
wmsOutsourceOrderD.fk_wms_outsource_order_id = wmsOutsourceOrderH.id;
wmsOutsourceOrderD.matcode = detail.material_code;
- var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
+ var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
if (erpExtendField != null)
{
wmsOutsourceOrderD.unit = erpExtendField.EnCode;
@@ -679,7 +777,7 @@ namespace Tnb.WarehouseMgr
wmsMaterialTransferD.material_specification = material.material_specification;
}
- var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
+ var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
if (erpExtendField != null)
{
wmsMaterialTransferD.unit_id = erpExtendField.Id;
@@ -807,7 +905,7 @@ namespace Tnb.WarehouseMgr
wmsSaleD.create_id = WmsWareHouseConst.ErpUserId;
wmsSaleD.create_time = DateTime.Now;
- var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
+ var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
if (erpExtendField != null)
{
wmsSaleD.unit_id = erpExtendField.Id;
@@ -930,7 +1028,7 @@ namespace Tnb.WarehouseMgr
msRawmatTransferinstockD.bill_id = wmsRawmatTransferinstockH.id;
msRawmatTransferinstockD.matcode = detail.material_code;
- var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
+ var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
if (erpExtendField != null)
{
msRawmatTransferinstockD.unit = erpExtendField.EnCode;
@@ -989,7 +1087,7 @@ namespace Tnb.WarehouseMgr
wmsTransferInstockD.bill_id = wmsTransferInstockH.id;
wmsTransferInstockD.material_code = detail.material_code;
- var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
+ var erpExtendField = await db.Queryable().InnerJoin((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
if (erpExtendField != null)
{
wmsTransferInstockD.unit_id = erpExtendField.Id;
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
index 9e45c5c9..4cecb31e 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
@@ -101,8 +101,16 @@ namespace Tnb.WarehouseMgr
if (minPacking.HasValue && minPacking.Value > 0)
{
- int mod = (int)(WmsOutsourceD.actual_quantity % minPacking.Value);
- codeNum = (int)(mod > 0 ? (WmsOutsourceD.actual_quantity / minPacking.Value) + 1 : WmsOutsourceD.actual_quantity / minPacking.Value);
+ codeNum = input.barcode_qty;
+
+ decimal qty = (int)(codeNum * minPacking);
+
+ decimal mod = 0;
+ decimal extra = (qty - WmsOutsourceD.actual_quantity).Value;
+ if (extra > 0 && extra < minPacking)
+ {
+ mod = minPacking.Value - extra;
+ }
for (int j = 0; j < codeNum; j++)
{
@@ -137,11 +145,11 @@ namespace Tnb.WarehouseMgr
}
await _db.Ado.CommitTranAsync();
barcodes.AddRange(wmsTempCodes.Select(p => p.barcode).ToList());
- if (barcodes?.Count > 0)
- {
- var ip = _db.Queryable().Where(p => p.key == "printerip").FirstAsync().Result.value;
- base.BarCodePrint(barcodes, 1, ip);
- }
+ //if (barcodes?.Count > 0)
+ //{
+ // var ip = _db.Queryable().Where(p => p.key == "printerip").FirstAsync().Result.value;
+ // base.BarCodePrint(barcodes, 1, ip);
+ //}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs
index 0e09096f..a7240ff2 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs
@@ -396,6 +396,7 @@ namespace Tnb.WarehouseMgr
var whId = input.data.ContainsKey(nameof(WmsPurchaseH.warehouse_id)) ? input.data[nameof(WmsPurchaseH.warehouse_id)] : "1";
var billCode = input.data.ContainsKey(nameof(WmsPurchaseH.bill_code)) ? input.data[nameof(WmsPurchaseH.bill_code)] : null;
string bill_type = "";
+ string biz_type = WmsWareHouseConst.BIZTYPE_WMSINSTOCK_ID;
string required_type = (await _dbScanInStockByRedis.Queryable().FirstAsync(it => it.barcode == input.data["物料条码"])).required_type;
string source_id = (await _dbScanInStockByRedis.Queryable().FirstAsync(it => it.barcode == input.data["物料条码"])).require_id;
switch (required_type)
@@ -407,12 +408,14 @@ namespace Tnb.WarehouseMgr
}
case WmsWareHouseConst.BILLTYPE_OUTSOURCE_ID:
{
- bill_type = WmsWareHouseConst.BILLTYPE_OUTSOURCEINSTOCK_ID;
+ bill_type = WmsWareHouseConst.BILLTYPE_OUTSOURCEINSTOCK_ID;
+ biz_type = WmsWareHouseConst.BIZTYPE_OUTSOURCE_ID;
break;
}
case WmsWareHouseConst.BILLTYPE_RAWMATTRANSFERINSTOCK_ID:
{
bill_type = WmsWareHouseConst.BILLTYPE_RAWMATTRANSFERINSTOCK_ID;
+ biz_type = WmsWareHouseConst.BIZTYPE_RAWMATTRANSFERINSTOCK_ID;
break;
}
}
@@ -574,7 +577,7 @@ namespace Tnb.WarehouseMgr
endpoint_code = ePoint?.point_code!,
bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(),
status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID,
- biz_type = WmsWareHouseConst.BIZTYPE_WMSINSTOCK_ID,
+ biz_type = biz_type,
task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID,
carry_id = carry.id,
carry_code = carry.carry_code,
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs
index 98fc09b2..09c50af6 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs
@@ -198,10 +198,10 @@ namespace Tnb.WarehouseMgr
{ "checking", 32 },
};
string isCheck = dic2[qcRes].ToString();
- await _db.Updateable()
- .SetColumns(x => x.is_check == isCheck)
- .Where(x => carryIds.Contains(x.id))
- .ExecuteCommandAsync();
+ //await _db.Updateable()
+ // .SetColumns(x => x.is_check == isCheck)
+ // .Where(x => carryIds.Contains(x.id))
+ // .ExecuteCommandAsync();
BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseReturnService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseReturnService.cs
new file mode 100644
index 00000000..fbbfcedc
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseReturnService.cs
@@ -0,0 +1,220 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Aop.Api.Domain;
+using JNPF.Common.Core.Manager;
+using JNPF.Common.Dtos.VisualDev;
+using JNPF.Common.Enums;
+using JNPF.FriendlyException;
+using JNPF.Systems.Interfaces.System;
+using JNPF.VisualDev;
+using JNPF.VisualDev.Interfaces;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json.Linq;
+using NPOI.HPSF;
+using Senparc.Weixin.Work.AdvancedAPIs.OaDataOpen;
+using SqlSugar;
+using Tnb.BasicData.Entities;
+using Tnb.WarehouseMgr.Entities;
+using Tnb.WarehouseMgr.Entities.Consts;
+using Tnb.WarehouseMgr.Entities.Dto;
+using Tnb.WarehouseMgr.Entities.Dto.Inputs;
+using Tnb.WarehouseMgr.Entities.Entity;
+using Tnb.WarehouseMgr.Interfaces;
+
+namespace Tnb.WarehouseMgr
+{
+ ///
+ /// 采购退货
+ ///
+ [OverideVisualDev(ModuleConsts.MODULE_WmsPurchaseReturn_ID)]
+ public class WmsPurchaseReturnService : BaseWareHouseService
+ {
+ private readonly ISqlSugarClient _db;
+ private readonly IUserManager _userManager;
+ private readonly IBillRullService _billRullService;
+ private readonly IRunService _runService;
+ private readonly IVisualDevService _visualDevService;
+ private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
+ private readonly IWareHouseService _wareHouseService;
+ public WmsPurchaseReturnService(
+ ISqlSugarRepository repository,
+ IUserManager userManager,
+ IBillRullService billRullService,
+ IRunService runService,
+ IVisualDevService visualDevService,
+ IWmsPDAScanInStockService wmsPDAScanInStock,
+ IWareHouseService wareHouseService)
+ {
+ _db = repository.AsSugarClient();
+ _userManager = userManager;
+ _billRullService = billRullService;
+ _runService = runService;
+ _visualDevService = visualDevService;
+ _wmsPDAScanInStock = wmsPDAScanInStock;
+ _wareHouseService = wareHouseService;
+ }
+
+
+ public override async Task ModifyAsync(WareHouseUpInput input)
+ {
+ if (input == null)
+ {
+ throw new ArgumentNullException(nameof(input));
+ }
+ }
+
+ ///
+ /// 下发
+ ///
+ ///
+ ///
+ ///
+ [HttpPost, NonUnify, AllowAnonymous]
+ public async Task Distribute(PurchaseReturnInput input)
+ {
+ try
+ {
+ await _s_taskExecuteSemaphore_YCLOutstock.WaitAsync();
+ if (string.IsNullOrEmpty(input.source_id))
+ {
+ throw new AppFriendlyException("来源单据id不可为空", 500);
+ }
+ if (input.carrys.Count == 0)
+ {
+ throw new AppFriendlyException("至少选择一个载具", 500);
+ }
+
+ WmsPurchaseReturnD wmsPurchaseReturnD = await _db.Queryable().FirstAsync(it => it.id == input.source_id);
+ WmsPurchaseReturnH wmsPurchaseReturnH = await _db.Queryable().FirstAsync(it => it.id == wmsPurchaseReturnD.bill_id);
+
+ List _items = await _db.Queryable().Where(r => input.carrys.Select(c => c.carry_code).Contains(r.carry_code)).ToListAsync();
+
+ List wmsCarryCodes = await _db.Queryable().Where(r => _items.Select(c => c.id).Contains(r.carry_id)
+ && r.material_id == wmsPurchaseReturnD.matcode_id && r.code_batch == wmsPurchaseReturnD.code_batch).ToListAsync();
+
+ List items = new List();
+
+ foreach (var carry in input.carrys.Select(c => c.carry_code))
+ {
+ items.Add(_items.Where(r => r.carry_code == carry).First());
+ }
+
+ foreach (var item in items)
+ {
+ if (item.is_lock == 1)
+ {
+ throw new AppFriendlyException($"载具{item.carry_code}已锁定", 500);
+ }
+ BasLocation carrryLoc = await _db.Queryable().Where(r => r.id == item.location_id).FirstAsync();
+ if (carrryLoc == null || carrryLoc.is_type != "0")
+ {
+ throw new Exception($"托盘{item.carry_code}已经不在存储库位中,不能出库!");
+ }
+ }
+
+ decimal? sign_qty = 0;
+
+ decimal qty = wmsCarryCodes.Sum(c => c.codeqty);
+ if (wmsPurchaseReturnD.actual_qty + qty > wmsPurchaseReturnD.qty)
+ {
+ // 最后一个托盘的数量
+ decimal lastCarryQty = wmsCarryCodes.Where(r => r.carry_id == items[items.Count - 1].id).Sum(r => r.codeqty);
+ // 如果最后一个托盘数量小于超出的出库数量
+ if (lastCarryQty < wmsPurchaseReturnD.actual_qty + qty - wmsPurchaseReturnD.qty)
+ {
+ throw new AppFriendlyException($"本次出库数量{qty}已超过可出库数量{wmsPurchaseReturnD.qty - wmsPurchaseReturnD.actual_qty} 且无需选择{items[items.Count - 1].carry_code}", 500);
+ }
+ // 签收数量
+ sign_qty = lastCarryQty - (wmsPurchaseReturnD.actual_qty + qty - wmsPurchaseReturnD.qty);
+ }
+
+ await _db.Ado.BeginTranAsync();
+
+ List endLocations = new List();
+
+ endLocations = _db.Queryable().Where(r => _wareHouseService.GetFloor1YCLDBOutstockLocation().Contains(r.id) && r.is_lock == 0 && r.is_use == "0")
+ .OrderBy("is_lock, task_nums, location_code").ToList();
+
+ if (endLocations.Count() < items.Count)
+ {
+ throw new AppFriendlyException($@"可用的终点库位数量为{endLocations.Count()}个 下发数量为{items.Count}个 请检查终点库位的锁定和占用状态", 500);
+ }
+
+ foreach (var wmsCarryH in items)
+ {
+ BasLocation startLocation = await _db.Queryable().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
+
+ BasLocation endLocation = null;
+
+ endLocation = await _db.Queryable().Where(r => _wareHouseService.GetFloor1YCLDBOutstockLocation().Contains(r.id) && r.is_lock == 0 && r.is_use == "0").OrderBy("is_lock, task_nums, location_code").FirstAsync();
+
+ if (endLocation == null)
+ {
+ throw new AppFriendlyException($@"没有可用的终点库位!请检查终点库位的锁定和占用状态", 500);
+ }
+
+ WmsPurchaseReturnC wmsPurchaseReturnC = new WmsPurchaseReturnC();
+ wmsPurchaseReturnC.bill_id = wmsPurchaseReturnH.id;
+ wmsPurchaseReturnC.mat_bill_id = wmsPurchaseReturnD.id;
+ wmsPurchaseReturnC.carry_id = wmsCarryH.id;
+ wmsPurchaseReturnC.carry_code = wmsCarryH.carry_code;
+ wmsPurchaseReturnC.create_id = input.create_id;
+ wmsPurchaseReturnC.create_time = DateTime.Now;
+ wmsPurchaseReturnC.startlocation_id = startLocation.id;
+ wmsPurchaseReturnC.startlocation_code = startLocation.location_code;
+ wmsPurchaseReturnC.endlocation_id = endLocation.id;
+ wmsPurchaseReturnC.endlocation_code = endLocation.location_code;
+ decimal carryQty = wmsCarryCodes.Where(r => r.carry_id == wmsCarryH.id).Sum(r => r.codeqty);
+ wmsPurchaseReturnC.qty = carryQty;
+ wmsPurchaseReturnC.sign_qty = wmsCarryH.id == items[items.Count - 1].id && sign_qty > 0 ? sign_qty : carryQty;
+
+ await _db.Insertable(wmsPurchaseReturnC).ExecuteCommandAsync();
+
+ CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
+ commonCreatePretaskInput.startlocation_id = startLocation.id;
+ commonCreatePretaskInput.endlocation_id = endLocation.id;
+ commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID;
+ commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WmsPurchaseReturn_ID;
+ commonCreatePretaskInput.source_id = input.source_id;
+ commonCreatePretaskInput.carry_id = wmsCarryH.id;
+ commonCreatePretaskInput.carry_code = wmsCarryH.carry_code;
+ commonCreatePretaskInput.isExcuteMission = false;
+
+ Entities.Dto.Outputs.Result res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput, _db);
+
+ if (res.code != HttpStatusCode.OK)
+ {
+ Logger.LogInformation($@"生成预任务失败");
+ throw new AppFriendlyException($@"生成预任务失败", 500);
+ }
+ }
+
+ // 更新子表已下发数量
+ await _db.Updateable().SetColumns(r => r.actual_qty == r.actual_qty + qty).Where(r => r.id == input.source_id).ExecuteCommandAsync();
+
+ await _db.Ado.CommitTranAsync();
+ }
+ catch (Exception ex)
+ {
+ await _db.Ado.RollbackTranAsync();
+ Logger.LogError("【Distribute】" + ex.Message);
+ Logger.LogError("【Distribute】" + ex.StackTrace);
+ return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
+ }
+ finally
+ {
+ _ = _s_taskExecuteSemaphore_YCLOutstock.Release();
+ InvokeGenPretaskExcute();
+ }
+
+ return await ToApiResult(HttpStatusCode.OK, "成功");
+ }
+
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs
index dc39ff38..3784ea49 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs
@@ -58,6 +58,8 @@ namespace Tnb.WarehouseMgr
_visualDevService = visualDevService;
_wmsPDAScanInStock = wmsPDAScanInStock;
_wareHouseService = wareHouseService;
+
+ OverideFuncs.GetDetailsAsync = GetDetailsAsync;
}
@@ -68,10 +70,21 @@ namespace Tnb.WarehouseMgr
throw new ArgumentNullException(nameof(input));
}
-
}
-
+ [NonAction]
+ private async Task GetDetailsAsync(string id)
+ {
+ try
+ {
+ return await Task.FromResult(_db.Queryable().Where(r => r.bill_id == id).ToList());
+ }
+ catch (Exception ex)
+ {
+ return Task.FromResult(ex);
+ }
+ }
+
///
/// 下发
///
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferoutstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferoutstockService.cs
index f1b3c164..007698d9 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferoutstockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferoutstockService.cs
@@ -58,6 +58,7 @@ namespace Tnb.WarehouseMgr
_visualDevService = visualDevService;
_wmsPDAScanInStock = wmsPDAScanInStock;
_wareHouseService = wareHouseService;
+ OverideFuncs.GetDetailsAsync = GetDetailsAsync;
}
@@ -71,7 +72,19 @@ namespace Tnb.WarehouseMgr
}
-
+ [NonAction]
+ private async Task GetDetailsAsync(string id)
+ {
+ try
+ {
+ return await Task.FromResult(_db.Queryable().Where(r => r.bill_id == id).ToList());
+ }
+ catch (Exception ex)
+ {
+ return Task.FromResult(ex);
+ }
+ }
+
///
/// 下发
///