材料出库、调拨查询重写;采购退料;生成条码接口
This commit is contained in:
@@ -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<PurchaseOrderDetail> details = input.details.Where(r => r.purchase_quantity > 0).ToList();
|
||||
List<PurchaseOrderDetail> details_return = input.details.Where(r => r.purchase_quantity < 0).ToList();
|
||||
// purchase_quantity 是负数作为采购退料
|
||||
|
||||
await db.Ado.BeginTranAsync();
|
||||
// 判断是否为重复传输的采购订单
|
||||
WmsPurchaseOrderH wmsPurchaseOrderRep = await db.Queryable<WmsPurchaseOrderH>().Where(r => r.erp_pk == input.erp_pk).FirstAsync();
|
||||
if (wmsPurchaseOrderRep != null)
|
||||
|
||||
if (details.Count > 0)
|
||||
{
|
||||
// 判断收货单是否已经生成
|
||||
WmsPurchaseH wmsPurchaseH = await db.Queryable<WmsPurchaseH>().Where(r => r.source_id == wmsPurchaseOrderRep.id).FirstAsync();
|
||||
if (wmsPurchaseH != null)
|
||||
// 判断是否为重复传输的采购订单
|
||||
WmsPurchaseOrderH wmsPurchaseOrderRep = await db.Queryable<WmsPurchaseOrderH>().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<WmsPurchaseH>().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<WmsPurchaseOrderH>().Where(r => r.id == wmsPurchaseOrderRep.id).ExecuteCommandAsync();
|
||||
await db.Deleteable<WmsPurchaseOrderD>().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<BasSupplier>().Where(p => p.supplier_code == input.supplier_code).FirstAsync();
|
||||
if (supplier != null)
|
||||
{
|
||||
await db.Deleteable<WmsPurchaseOrderH>().Where(r => r.id == wmsPurchaseOrderRep.id).ExecuteCommandAsync();
|
||||
await db.Deleteable<WmsPurchaseOrderD>().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<WmsPurchaseOrderD> wmsPurchaseOrderDs = new List<WmsPurchaseOrderD>();
|
||||
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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<BasMaterial>().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<BasSupplier>().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<WmsPurchaseReturnH>().Where(r => r.erp_pk == input.erp_pk).FirstAsync();
|
||||
if (wmsPurchaseReturnRep != null)
|
||||
{
|
||||
// 判断采购退货是否已经下发
|
||||
List<WmsPurchaseReturnD> wmsPurchaseReturnDReps = await db.Queryable<WmsPurchaseReturnD>().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<WmsPurchaseReturnH>().Where(r => r.id == wmsPurchaseReturnRep.id).ExecuteCommandAsync();
|
||||
await db.Deleteable<WmsPurchaseReturnD>().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<BasSupplier>().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<WmsPurchaseReturnD> wmsPurchaseReturnDs = new List<WmsPurchaseReturnD>();
|
||||
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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<BasMaterial>().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<WmsPurchaseOrderD> wmsPurchaseOrderDs = new List<WmsPurchaseOrderD>();
|
||||
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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<BasMaterial>().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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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<ErpExtendField>().InnerJoin<DictionaryDataEntity>((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;
|
||||
|
||||
Reference in New Issue
Block a user