From 45d5eff708f796dca7c44a75db7e3d61808ba208 Mon Sep 17 00:00:00 2001 From: chenwenkai <1084072318@qq.com> Date: Tue, 29 Oct 2024 10:31:39 +0800 Subject: [PATCH] =?UTF-8?q?BIP=E5=BC=82=E5=B8=B8=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=9A=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=A0=E9=99=A4=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.ProductionMgr/PrdMoTaskService.cs | 4 +- .../Dto/ErpInputs/PurchaseOrderInput.cs | 46 +++++++ .../Tnb.WarehouseMgr/ErpToWmsService.cs | 122 ++++++++++++++++++ .../Tnb.WarehouseMgr/WmsOutsourceDService.cs | 5 +- 4 files changed, 173 insertions(+), 4 deletions(-) diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index b4f40568..7efe7018 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -2025,10 +2025,10 @@ namespace Tnb.ProductionMgr PrdMo mo = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.mo_id); - #region 注塑生产任务提报时,如果起始库位( 当前设备的下料点)已经存在业务类型为配送申请,并且实际开始配送时间为空的任务执行,则不能提报,并提示 + #region 注塑生产任务提报时,如果起始库位( 当前设备的下料点)已经存在业务类型为配送申请,并且实际开始配送时间为空,并且任务状态不是取消的任务执行,则不能提报,并提示 if (mo.mo_type == DictConst.PrdMoTypeZS) { - var wmsDistaskHs = _db.Queryable().Where(r => r.startlocation_id == equip.downmat_location_id && r.biz_type == WmsWareHouseConst.BIZTYPE_WMSDELIVERY_ID && !r.act_start_date.HasValue); + var wmsDistaskHs = _db.Queryable().Where(r => r.startlocation_id == equip.downmat_location_id && r.biz_type == WmsWareHouseConst.BIZTYPE_WMSDELIVERY_ID && !r.act_start_date.HasValue && r.status!=WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID); if (wmsDistaskHs != null && wmsDistaskHs.Count() > 0) throw Oops.Bah("请等待AGV配送完成后提报"); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/PurchaseOrderInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/PurchaseOrderInput.cs index 20cae2ae..5af28969 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/PurchaseOrderInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/ErpInputs/PurchaseOrderInput.cs @@ -101,4 +101,50 @@ namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs /// public string? production_unit { get; set; } } + + /// + /// 删除采购订单 + /// + public class PurchaseOrderDeleteInput + { + /// + /// 主表pk + /// + public string? erp_pk { get; set; } + } + /// + /// 修改采购订单 + /// + public class PurchaseOrderUpdateInput + { + /// + /// 主表pk + /// + public string? erp_pk { get; set; } + + public List details { get; set; } + } + + /// + /// 修改采购订单子表 + /// + public class PurchaseOrderUpdateDetail + { + /// + /// 行号 + /// + public string erp_line_pk { get;set; } + /// + /// 净价 + /// + public string net_price { get; set; } + /// + /// 采购数量 + /// + public decimal? purchase_quantity { get; set; } + /// + /// 实收数量 + /// + public decimal? actual_quantity { get; set; } + } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs index b5b88651..59b11b52 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs @@ -546,6 +546,128 @@ namespace Tnb.WarehouseMgr } } + + /// + /// 删除采购订单 + /// + [HttpPost, NonUnify, AllowAnonymous] + public async Task DeletePurchaseOrder(PurchaseOrderDeleteInput input) + { + LoggerErp2Mes.LogInformation($"【PurchaseOrderDeleteInput】ERP传入数据:{JsonConvert.SerializeObject(input)}"); + var db = _repository.AsSugarClient(); + + try + { + if (string.IsNullOrEmpty(input.erp_pk)) + { + _LoggerErp2Mes.LogWarning($"【PurchaseOrderDeleteInput】主表主键不能为空!"); + throw new AppFriendlyException($@"主表主键不能为空!", 500); + } + + await db.Ado.BeginTranAsync(); + + // 判断采购订单是否存在 + WmsPurchaseOrderH wmsPurchaseOrderRep = await db.Queryable().Where(r => r.erp_pk == input.erp_pk).FirstAsync(); + if (wmsPurchaseOrderRep != null) + { + // 判断收货单是否已经生成 + WmsPurchaseH wmsPurchaseH = await db.Queryable().Where(r => r.source_id == wmsPurchaseOrderRep.id).FirstAsync(); + if (wmsPurchaseH != null) + { + _LoggerErp2Mes.LogWarning($@"【PurchaseOrderDeleteInput】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(); + } + } + await db.Ado.CommitTranAsync(); + + return await ToApiResult(HttpStatusCode.OK, "成功"); + } + catch (Exception ex) + { + LoggerErp2Mes.LogError($"【PurchaseOrderDeleteInput】{ex.Message}"); + LoggerErp2Mes.LogError($"【PurchaseOrderDeleteInput】{ex.StackTrace}"); + await db.Ado.RollbackTranAsync(); + return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + } + finally + { + + } + } + + + /// + /// 修改采购订单 + /// + [HttpPost, NonUnify, AllowAnonymous] + public async Task UpdatePurchaseOrder(PurchaseOrderUpdateInput input) + { + LoggerErp2Mes.LogInformation($"【PurchaseOrderUpdateInput】ERP传入数据:{JsonConvert.SerializeObject(input)}"); + var db = _repository.AsSugarClient(); + + try + { + if (string.IsNullOrEmpty(input.erp_pk)) + { + _LoggerErp2Mes.LogWarning($"【PurchaseOrderUpdateInput】主表主键不能为空!"); + throw new AppFriendlyException($@"主表主键不能为空!", 500); + } + + await db.Ado.BeginTranAsync(); + + // 判断采购订单是否存在 + WmsPurchaseOrderH wmsPurchaseOrderH = await db.Queryable().Where(r => r.erp_pk == input.erp_pk).FirstAsync(); + + if(wmsPurchaseOrderH == null) + { + _LoggerErp2Mes.LogWarning($"【PurchaseOrderUpdateInput】未找到采购订单,erp_pk:{input.erp_pk}"); + throw new AppFriendlyException($@"未找到采购订单,erp_pk:{input.erp_pk}!", 500); + } + + if(input.details!=null && input.details.Count > 0) + { + foreach(var item in input.details) + { + WmsPurchaseOrderD wmsPurchaseOrderD = await db.Queryable().Where(r => r.fk_wms_purchase_order_id == wmsPurchaseOrderH.id && r.erp_line_pk == item.erp_line_pk).FirstAsync(); + if(wmsPurchaseOrderD==null) + { + _LoggerErp2Mes.LogWarning($"【PurchaseOrderUpdateInput】未找到采购订单明细数据,erp_pk:{input.erp_pk},erp_line_pk:{item.erp_line_pk}"); + throw new AppFriendlyException($@"未找到采购订单明细数据,erp_pk:{input.erp_pk},erp_line_pk{item.erp_line_pk}!", 500); + } + else + { + await db.Updateable() + .SetColumns(r => r.net_price == item.net_price) + .SetColumns(r => r.purchase_quantity == item.purchase_quantity) + .SetColumns(r => r.actual_quantity == item.actual_quantity) + .Where(r => r.id == wmsPurchaseOrderD.id).ExecuteCommandAsync(); + } + } + } + await db.Ado.CommitTranAsync(); + + return await ToApiResult(HttpStatusCode.OK, "成功"); + } + catch (Exception ex) + { + LoggerErp2Mes.LogError($"【PurchaseOrderUpdateInput】{ex.Message}"); + LoggerErp2Mes.LogError($"【PurchaseOrderUpdateInput】{ex.StackTrace}"); + await db.Ado.RollbackTranAsync(); + return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + } + finally + { + + } + } + + + /// /// 委外订单 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs index 8899248b..b56b9eed 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs @@ -147,7 +147,8 @@ namespace Tnb.WarehouseMgr DictionaryDataEntity tranType = await _db.Queryable().Where(x=>x.DictionaryTypeId=="25043925951909" && x.EnCode== wmsOutsourceH.transaction_type).FirstAsync(); string tranTypeId = tranType?.Id ?? ""; - string supplierId = wmsPurchaseOrderH?.supplier_id ?? ""; + //string supplierId = wmsPurchaseOrderH?.supplier_id ?? ""; + string supplierId = wmsOutsourceH?.supplier_id ?? ""; List tableIds = new List(); // tableIds.Add(_userManager.UserId); // tableIds.Add(wmsPurchaseH.create_id); @@ -305,7 +306,7 @@ namespace Tnb.WarehouseMgr ["csourcetype"] = item.source_type ?? null, //来源单据类型 ["csourcetranstype"] = erpExtendFields.Find(x => x.table_id == tranTypeId)?.transaction_type_id ?? null, //来源单据交易类型 ["vsourcebillcode"] = wmsOutsourceH?.outsource_order ?? null, //来源单据号 - ["vsourcerowno"] = null, //来源单据行号 + ["vsourcerowno"] = (allInstockDetails.FindIndex(x => x.id == item.id) + 1) * 10, //来源单据行号 ["nnum"] = item.qty, //实收主数量 ["nshouldnum"] = item.pr_qty, //应收主数量