diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs index 5a84eae9..32f0d48d 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -3091,8 +3091,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA MaterialTransferDDistributeToZCCInput input = new MaterialTransferDDistributeToZCCInput(); input.source_id = _wmsMaterialTransferD.id; input.xf_qty = can_qty; - input.dbConn = db_WmsMaterialkit; - WarehouseMgr.Entities.Dto.Outputs.Result result = await _wmsMaterialTransferService.DistributeDetailToZCC(input); + WarehouseMgr.Entities.Dto.Outputs.Result result = await _wmsMaterialTransferService.DistributeDetailToZCC(input, db_WmsMaterialkit); if (result.code.ToString() != "OK") { LoggerWmsMaterialkit.LogWarning($"转库单{wmsMaterialTransfer.bill_code} 明细id{_wmsMaterialTransferD.id} 物料{_wmsMaterialTransferD.material_code} 批次{_wmsMaterialTransferD.code_batch} 中储仓出库时数量不匹配!"); diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs index e04b50f0..e56c9c70 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs @@ -293,7 +293,7 @@ public class ModuleConsts /// /// 模块标识-委外收货 /// - public const string MODULE_WMSOUTSOURCE_ID = "36207808903445"; + public const string MODULE_WMSOUTSOURCE_ID = "37513122815509"; /// /// 模块标识-委外收货子表 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDDistributeToZCCInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDDistributeToZCCInput.cs index 186b6271..07cea3d0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDDistributeToZCCInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferDDistributeToZCCInput.cs @@ -26,6 +26,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto /// public decimal? xf_qty { get; set; } - public ISqlSugarClient dbConn { get; set; } = null; + //public ISqlSugarClient dbConn { get; set; } = null; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/InStockStrategyQuery.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/InStockStrategyQuery.cs index 2c73df19..951d9eb0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/InStockStrategyQuery.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/InStockStrategyQuery.cs @@ -38,6 +38,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto public string PolicyCode { get; set; } // 策略编号 - public ISqlSugarClient dbConn { get; set; } = null; + //public ISqlSugarClient dbConn { get; set; } = null; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs index f8435da9..354c2dfc 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs @@ -60,6 +60,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto /// public List qcres_list { get; set; } - public ISqlSugarClient dbConn { get; set; } = null; + //public ISqlSugarClient dbConn { get; set; } = null; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyZCC2Floor2Query.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyZCC2Floor2Query.cs index cdb8ae79..53f8637f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyZCC2Floor2Query.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyZCC2Floor2Query.cs @@ -56,6 +56,6 @@ namespace Tnb.WarehouseMgr.Entities.Dto /// public string[] endlocations { get; set; } - public ISqlSugarClient dbConn { get; set; } = null; + //public ISqlSugarClient dbConn { get; set; } = null; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs index 72b1afa7..6cc5251f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs @@ -64,25 +64,25 @@ namespace Tnb.WarehouseMgr.Interfaces /// /// /// - Task> InStockStrategy([FromQuery] InStockStrategyQuery input); + Task> InStockStrategy([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null); /// /// 入库策略(包材库) /// /// /// - Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input); + Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null); /// /// 包材库2楼入库策略 /// /// /// - Task> BCKF2InStockStrategy([FromQuery] InStockStrategyQuery input); + Task> BCKF2InStockStrategy([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null); /// /// 出库策略 /// /// /// - Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input); + Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input, ISqlSugarClient dbConn = null); /// /// 缓存仓出库策略 /// @@ -96,14 +96,14 @@ namespace Tnb.WarehouseMgr.Interfaces /// /// /// - Task>> OutStockStrategyZCC2Floor2([FromQuery] OutStockStrategyZCC2Floor2Query input); + Task>> OutStockStrategyZCC2Floor2([FromQuery] OutStockStrategyZCC2Floor2Query input, ISqlSugarClient dbConn = null); /// /// 出库策略-销售出库下发 /// /// /// - Task>> OutStockStrategy_saleRelease([FromQuery] OutStockStrategyQuery input); + Task>> OutStockStrategy_saleRelease([FromQuery] OutStockStrategyQuery input, ISqlSugarClient dbConn = null); /// /// 路径算法 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsMaterialTransferService.cs index 99ca5f8a..d9bf892a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsMaterialTransferService.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using SqlSugar; using Tnb.WarehouseMgr.Entities.Dto; namespace Tnb.WarehouseMgr.Interfaces @@ -18,6 +19,6 @@ namespace Tnb.WarehouseMgr.Interfaces /// /// [HttpPost, NonUnify, AllowAnonymous] - Task DistributeDetailToZCC(MaterialTransferDDistributeToZCCInput input); + Task DistributeDetailToZCC(MaterialTransferDDistributeToZCCInput input, ISqlSugarClient dbConn = null); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 302fff30..f62f0dfe 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -285,13 +285,13 @@ namespace Tnb.WarehouseMgr /// /// [HttpGet] - public async Task> InStockStrategy([FromQuery] InStockStrategyQuery input) + public async Task> InStockStrategy([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null) { List items = new(); try { - var db = input.dbConn; - if (input.dbConn == null) + var db = dbConn; + if (dbConn == null) { db = _db.CopyNew(); } @@ -340,13 +340,13 @@ namespace Tnb.WarehouseMgr /// /// [HttpGet] - public async Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input) + public async Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null) { List items = new(); try { - var db = input.dbConn; - if (input.dbConn == null) + var db = dbConn; + if (dbConn == null) { db = _db.CopyNew(); } @@ -376,13 +376,13 @@ namespace Tnb.WarehouseMgr /// /// [HttpGet] - public async Task> BCKF2InStockStrategy([FromQuery] InStockStrategyQuery input) + public async Task> BCKF2InStockStrategy([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null) { List items = new(); try { - var db = input.dbConn; - if (input.dbConn == null) + var db = dbConn; + if (dbConn == null) { db = _db.CopyNew(); } @@ -482,7 +482,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpGet] - public async Task>> OutStockStrategy_saleRelease([FromQuery] OutStockStrategyQuery input) + public async Task>> OutStockStrategy_saleRelease([FromQuery] OutStockStrategyQuery input, ISqlSugarClient dbConn = null) { Expressionable whereExprable = Expressionable.Create() .And((a, b, c) => a.is_lock == 0 && c.is_lock == 0) @@ -502,8 +502,8 @@ namespace Tnb.WarehouseMgr _ = whereExprable.And(carryStatusFilterExp); Expression> whereExpr = whereExprable.ToExpression(); - var cyDb = input.dbConn; - if (input.dbConn == null) + var cyDb = dbConn; + if (dbConn == null) { cyDb = _db.CopyNew(); } @@ -545,10 +545,10 @@ namespace Tnb.WarehouseMgr return items; } - public async Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input) + public async Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input, ISqlSugarClient dbConn = null) { - var cyDb = input.dbConn; - if (input.dbConn == null) + var cyDb = dbConn; + if (dbConn == null) { cyDb = _db.CopyNew(); } @@ -662,10 +662,10 @@ namespace Tnb.WarehouseMgr /// /// /// - public async Task>> OutStockStrategyZCC2Floor2([FromQuery] OutStockStrategyZCC2Floor2Query input) + public async Task>> OutStockStrategyZCC2Floor2([FromQuery] OutStockStrategyZCC2Floor2Query input, ISqlSugarClient dbConn = null) { - var cyDb = input.dbConn; - if (input.dbConn == null) + var cyDb = dbConn; + if (dbConn == null) { cyDb = _db.CopyNew(); } @@ -3689,7 +3689,7 @@ namespace Tnb.WarehouseMgr points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-04-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.point_code == $"DT-3-{elevatorSno}").First()); - points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-03-0{elevatorSno}").First()); + points.Add(wmsPointHs.Where(r => r.point_code == $"DT-03-0{elevatorSno}").First()); points.Add(wmsPointHs.Where(r => r.id == pEndId).First()); } else diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 125a7ac9..c8128e88 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -485,7 +485,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost] - public async Task DistributeJZCToCPC(DistributeF4JXCInput input) + public async Task DistributeJZCToCPC(DistributeF4JXCInput input) { SemaphoreSlim semaphoreSlim_MJC = null; SemaphoreSlim semaphoreSlim_CPK = null; @@ -512,6 +512,7 @@ namespace Tnb.WarehouseMgr await _db.Ado.BeginTranAsync(); + int xfCarrysCount = 0; foreach (WmsMaterialTransferD wmsMaterialTransferD in wmsMaterialTransferDs) { // 转库单载具子表 @@ -526,10 +527,9 @@ namespace Tnb.WarehouseMgr warehouse_id = WmsWareHouseConst.WAREHOUSE_MJC_ID, material_id = wmsMaterialTransferD.material_id, code_batch = wmsMaterialTransferD.code_batch, - qty = needOut, - dbConn = _db + qty = needOut }; - List> carryitems = await _wareHouseService.OutStockStrategy_saleRelease(outStockStrategyInput); + List> carryitems = await _wareHouseService.OutStockStrategy_saleRelease(outStockStrategyInput, _db); List> items_pretask = carryitems.Where(r => r.Item1 == "预任务").ToList(); decimal canOutstockQty = items_pretask.Sum(r => r.Item3.codeqty).ParseToDecimal(); @@ -554,21 +554,18 @@ namespace Tnb.WarehouseMgr && r.status == WmsWareHouseConst.BILLSTATUS_ADD_ID && r.origin == "外协调拨入库").FirstAsync(); if (wmsSterilizationInstockH == null) { - Logger.LogWarning($"【四楼静置仓到成品库】载具{wmsCarryH.carry_code}没有找到新增状态且来源是外协调拨入库的灭菌入库记录!"); - continue; + throw new Exception($"【四楼静置仓到成品库】载具{wmsCarryH.carry_code}没有找到新增状态且来源是外协调拨入库的灭菌入库记录!"); } if (wmsCarryH.location_id != wmsSterilizationInstockH.location_id) { - Logger.LogWarning($"【四楼静置仓到成品库】载具{wmsCarryH.carry_code}实际位置与灭菌入库记录位置不一致"); - continue; + throw new Exception($"【四楼静置仓到成品库】载具{wmsCarryH.carry_code}实际位置与灭菌入库记录位置不一致"); } BasLocation startlocation = await _db.Queryable().Where(r => r.id == wmsCarryH.location_id).FirstAsync(); if (startlocation.is_lock == 1) { - Logger.LogWarning($"【四楼静置仓到成品库】 起点库位{startlocation.location_code}已锁定"); - continue; + throw new Exception($"【四楼静置仓到成品库】 起点库位{startlocation.location_code}已锁定"); } wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ON_ID; @@ -633,13 +630,16 @@ namespace Tnb.WarehouseMgr await _db.Insertable(wmsMaterialTransferCarrys).ExecuteCommandAsync(); Logger.LogInformation($"【DistributeF4JXC】插入转库单{wmsMaterialTransfer.bill_code}载具表的数据"); + xfCarrysCount += wmsMaterialTransferCarrys.Count; Logger.LogInformation($"转库单{wmsMaterialTransfer.bill_code} 行号 {wmsMaterialTransferD.lineno}预任务{wmsMaterialTransferCarrys.Count}条全部生成成功"); } + if (xfCarrysCount == 0) + { + throw new AppFriendlyException($"可下发数量为0", 500); + } + await _db.Ado.CommitTranAsync(); - - - } catch(Exception ex) { @@ -1590,10 +1590,9 @@ namespace Tnb.WarehouseMgr needOut = needOut, material_code = wmsMaterialTransferD.material_code, endlocations = new string[2] { WmsWareHouseConst.ZZCSSX121009, WmsWareHouseConst.ZZCSSX121010 }, - dbConn = _db }; - List>? carrys = await _wareHouseService.OutStockStrategyZCC2Floor2(OutStockStrategyInput); + List>? carrys = await _wareHouseService.OutStockStrategyZCC2Floor2(OutStockStrategyInput, _db); foreach (var item in carrys) { @@ -1682,11 +1681,11 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task DistributeDetailToZCC(MaterialTransferDDistributeToZCCInput input) + public async Task DistributeDetailToZCC(MaterialTransferDDistributeToZCCInput input, ISqlSugarClient dbConn = null) { await _s_taskExecuteSemaphore_F1ZCCOutstock.WaitAsync(); - var db = input.dbConn; - if (input.dbConn == null) + var db = dbConn; + if (dbConn == null) db = _db; Logger.LogInformation($"中储仓下发到二楼暂存仓"); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs index 4dfcd340..0b44141d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs @@ -90,7 +90,7 @@ namespace Tnb.WarehouseMgr if (qcRes != (wmsOutsourceD.qc_res ?? "")) { - BasMaterial basMaterial = await _db.Queryable().Where(r => r.id == wmsOutsourceD.matcode_id).FirstAsync(); + BasMaterial basMaterial = await _db.Queryable().Where(r => r.code == wmsOutsourceD.matcode).FirstAsync(); WmsPurchaseQcrecord wmsPurchaseQcrecord = new WmsPurchaseQcrecord(); wmsPurchaseQcrecord.create_id = create_id; wmsPurchaseQcrecord.create_time = DateTime.Now; @@ -122,7 +122,7 @@ namespace Tnb.WarehouseMgr // 托盘对应入库单 List instock_mains = await _db.Queryable().Where(x => x.source_id == wmsOutsourceD.fk_wms_outsource_order_id).ToListAsync(); - List allInstockDetails = await _db.Queryable().Where(it => instock_mains.Select(r => r.id).Contains(it.bill_id) && it.material_id == wmsOutsourceD.matcode_id && it.code_batch == wmsOutsourceD.code_batch).OrderBy(x=>x.id).ToListAsync(); + List allInstockDetails = await _db.Queryable().Where(it => instock_mains.Select(r => r.id).Contains(it.bill_id) && it.material_code == wmsOutsourceD.matcode && it.code_batch == wmsOutsourceD.code_batch).OrderBy(x=>x.id).ToListAsync(); List> requestData = new List>(); List carryIds = instock_mains.Select(x => x.carry_id).ToList(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs index f99357a4..c570d842 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs @@ -1,5 +1,6 @@ using System.Text; using System.Text.RegularExpressions; +using COSXML.Model.Tag; using JNPF.Common.Contracts; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; @@ -11,6 +12,7 @@ using JNPF.Logging; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; +using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Authorization; @@ -64,8 +66,60 @@ namespace Tnb.WarehouseMgr _visualDevService = visualDevService; _wareHouseService = wareHouseService; _thirdApiRecordService = thirdApiRecordService; + OverideFuncs.CreateAsync += Create; + OverideFuncs.DeleteAsync = Delete; } + [HttpPost] + public async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) + { + string outsource_order = visualDevModelDataCrInput.data["erp_bill_code"].ToString(); + VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); + await _runService.Create(templateEntity, visualDevModelDataCrInput); + + string id = visualDevModelDataCrInput.data["ReturnIdentity"].ToString(); + string type = ""; + if (string.IsNullOrEmpty(outsource_order)) + { + await _db.Updateable().SetColumns(r => r.make_method == "自制").Where(r => r.id == id).ExecuteCommandAsync(); + } + else + { + await _db.Updateable().SetColumns(r => r.make_method == "同步").Where(r => r.id == id).ExecuteCommandAsync(); + } + + await _db.Updateable().SetColumns(r => r.qc_res == "await").Where(r => r.fk_wms_outsource_order_id == id).ExecuteCommandAsync(); + + return "保存成功"; + } + + // List wmsDistaskH = await _db.Queryable().Where(r => r.source_id == id).ToListAsync(); + private async Task Delete(string id) + { + await _db.Ado.BeginTranAsync(); + + WmsOutsourceH wmsOutsourceH = await _db.Queryable().Where(r => r.id == id).FirstAsync(); + if (wmsOutsourceH != null) + { + _ = await _db.Deleteable(wmsOutsourceH).ExecuteCommandAsync(); + List wmsoutsourceDs = await _db.Queryable().Where(r => r.fk_wms_outsource_order_id == id).ToListAsync(); + Logger.Information($"删除委外收货单{wmsOutsourceH.bill_code} 收货明细{wmsoutsourceDs.Count}条"); + foreach (WmsOutsourceD wmsOutsourceD in wmsoutsourceDs) + { + WmsOutsourceOrderD wmsOutsourceOrderD = await _db.Queryable().Where(r => r.erp_line_pk == wmsOutsourceD.erp_outsource_order_d_pk).FirstAsync(); + if (wmsOutsourceOrderD != null) + { + Logger.Information($"委外收货单{wmsOutsourceH.bill_code} 收货明细id{wmsOutsourceOrderD.id} 删除后回退委外订单明细id{wmsOutsourceOrderD.id}已到货数量 {wmsOutsourceOrderD.actual_quantity} -> {wmsOutsourceOrderD.actual_quantity - wmsOutsourceD.outsource_arriveqty}"); + wmsOutsourceOrderD.actual_quantity -= wmsOutsourceD.actual_quantity; + await _db.Updateable(wmsOutsourceOrderD).UpdateColumns(r => r.actual_quantity).ExecuteCommandAsync(); + } + } + _ = await _db.Deleteable(wmsoutsourceDs).ExecuteCommandAsync(); + } + await _db.Ado.CommitTranAsync(); + } + + public override async Task ModifyAsync(WareHouseUpInput input) { if (input == null) @@ -103,10 +157,10 @@ namespace Tnb.WarehouseMgr }; List wmsTempCodes = new(); - decimal? minPacking = (await _db.Queryable().FirstAsync(it => it.id == WmsOutsourceD.matcode_id))?.minpacking; + decimal? minPacking = (await _db.Queryable().FirstAsync(it => it.code == WmsOutsourceD.matcode))?.minpacking; if (!minPacking.HasValue || minPacking.Value <= 0) { - throw new AppFriendlyException($"物料{WmsOutsourceD.matcode} {WmsOutsourceD.matcode_id} 包装数量为空或者等于0,无法打印!", 500); + throw new AppFriendlyException($"物料{WmsOutsourceD.matcode} 包装数量为空或者等于0,无法打印!", 500); }; int codeNum = 0; @@ -124,7 +178,7 @@ namespace Tnb.WarehouseMgr } - BasMaterial basMaterial = await _db.Queryable().Where(r => r.id == WmsOutsourceD.matcode_id).FirstAsync(); + BasMaterial basMaterial = await _db.Queryable().Where(r => r.code == WmsOutsourceD.matcode).FirstAsync(); for (int j = 0; j < codeNum; j++) { int index = j + 1; @@ -140,7 +194,7 @@ namespace Tnb.WarehouseMgr string code = $"{WmsOutsourceD.matcode}-{WmsOutsourceD.code_batch}-{watercode}"; WmsTempCode barCode = new() { - material_id = WmsOutsourceD.matcode_id, + material_id = basMaterial.id, material_code = WmsOutsourceD.matcode, barcode = code, code_batch = WmsOutsourceD.code_batch, diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs index d4021e40..04db7178 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAScanInStockService.cs @@ -430,7 +430,7 @@ namespace Tnb.WarehouseMgr case WmsWareHouseConst.BILLTYPE_OUTSOURCE_ID: { bill_type = WmsWareHouseConst.BILLTYPE_OUTSOURCEINSTOCK_ID; - biz_type = WmsWareHouseConst.BIZTYPE_OUTSOURCE_ID; + source_main_id = (await _dbScanInStockByRedis.Queryable().FirstAsync(it => it.id == source_id)).erp_outsource_order_d_pk; break; } case WmsWareHouseConst.BILLTYPE_RAWMATTRANSFERINSTOCK_ID: diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseQcrecordService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseQcrecordService.cs index e6caf1cf..368fb7c3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseQcrecordService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseQcrecordService.cs @@ -79,7 +79,8 @@ namespace Tnb.WarehouseMgr batchno = JObject.Parse(input.queryJson).Value("batchno"); material_specification = JObject.Parse(input.queryJson).Value(nameof(WmsCarryCode.material_specification)); container_no = JObject.Parse(input.queryJson).Value(nameof(WmsCarryCode.container_no)); - time = JObject.Parse(input.queryJson).Value("time"); + if (JObject.Parse(input.queryJson).ContainsKey("time")) + time = JObject.Parse(input.queryJson).Value("time"); } decimal total_qty = 0; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs index 7f971beb..c3d62f60 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs @@ -41,6 +41,7 @@ using Tnb.BasicData.Interfaces; using JNPF.Common.Enums; using System.Reflection; using Aop.Api.Domain; +using Tnb.EquipMgr.Entities; namespace Tnb.WarehouseMgr { @@ -72,11 +73,10 @@ namespace Tnb.WarehouseMgr _thirdApiRecordService = thirdApiRecordService; _visualDevService = visualDevService; OverideFuncs.CreateAsync += Create; + OverideFuncs.DeleteAsync = Delete; } - /// - /// 保存工序工位关联表 - /// + [HttpPost] public async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { @@ -100,6 +100,31 @@ namespace Tnb.WarehouseMgr return "保存成功"; } + // List wmsDistaskH = await _db.Queryable().Where(r => r.source_id == id).ToListAsync(); + private async Task Delete(string id) + { + await _db.Ado.BeginTranAsync(); + + WmsPurchaseH wmsPurchaseH = await _db.Queryable().Where(r => r.id == id).FirstAsync(); + if (wmsPurchaseH != null) + { + _ = await _db.Deleteable(wmsPurchaseH).ExecuteCommandAsync(); + List wmsPurchaseDs = await _db.Queryable().Where(r => r.bill_id == id).ToListAsync(); + Logger.Information($"删除采购收货单{wmsPurchaseH.bill_code} 收货明细{wmsPurchaseDs.Count}条"); + foreach (WmsPurchaseD wmsPurchaseD in wmsPurchaseDs) + { + WmsPurchaseOrderD wmsPurchaseOrderD = await _db.Queryable().Where(r => r.erp_line_pk == wmsPurchaseD.erp_purchase_order_d_pk).FirstAsync(); + if (wmsPurchaseOrderD != null) + { + Logger.Information($"采购收货单{wmsPurchaseH.bill_code} 收货明细id{wmsPurchaseOrderD.id} 删除后回退采购订单明细id{wmsPurchaseOrderD.id}已到货数量 {wmsPurchaseOrderD.actual_quantity} -> {wmsPurchaseOrderD.actual_quantity - wmsPurchaseD.purchase_arriveqty}"); + wmsPurchaseOrderD.actual_quantity -= wmsPurchaseD.purchase_prqty; + await _db.Updateable(wmsPurchaseOrderD).UpdateColumns(r => r.actual_quantity).ExecuteCommandAsync(); + } + } + _ = await _db.Deleteable(wmsPurchaseDs).ExecuteCommandAsync(); + } + await _db.Ado.CommitTranAsync(); + } private async Task xxx(VisualDevModelDataCrInput input) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs index 82666bcc..3233d335 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs @@ -180,8 +180,8 @@ namespace Tnb.WarehouseMgr } await _db.Ado.BeginTranAsync(); //入库取终点 //出库起点 - OutStockStrategyQuery outStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, material_id = wmsOutstockD.material_id, qty = input.qty, code_batch = wmsOutstockD.code_batch, Region_id = WmsWareHouseConst.REGION_CPOutstock_ID, dbConn = _db }; - List> items = await _wareHouseService.OutStockStrategy_saleRelease(outStockStrategyInput); + OutStockStrategyQuery outStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, material_id = wmsOutstockD.material_id, qty = input.qty, code_batch = wmsOutstockD.code_batch, Region_id = WmsWareHouseConst.REGION_CPOutstock_ID }; + List> items = await _wareHouseService.OutStockStrategy_saleRelease(outStockStrategyInput, _db); decimal canOutstockQty = items.Sum(r => r.Item3.codeqty).ParseToDecimal(); if (canOutstockQty < input.qty) @@ -215,8 +215,8 @@ namespace Tnb.WarehouseMgr //人工发货 else { - InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, Size = items_pretask.Count, Region_id = WmsWareHouseConst.REGION_CPManualOutstock_ID, dbConn = _db }; - endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, Size = items_pretask.Count, Region_id = WmsWareHouseConst.REGION_CPManualOutstock_ID }; + endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput, _db); if (endLocations.Count < items_pretask.Count) { @@ -267,8 +267,8 @@ namespace Tnb.WarehouseMgr //人工发货 else { - InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, Size = 1, Region_id = WmsWareHouseConst.REGION_CPManualOutstock_ID, dbConn = _db }; - endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); + InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, Size = 1, Region_id = WmsWareHouseConst.REGION_CPManualOutstock_ID }; + endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput, _db); if (endLocations.Count < 1) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferOutstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferOutstockService.cs index 7f695e72..5bf449bc 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferOutstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferOutstockService.cs @@ -96,8 +96,8 @@ namespace Tnb.WarehouseMgr WmsTransferOutstockD wmsOutstockD = await _db.Queryable().FirstAsync(it => it.id == input.source_id); await _db.Ado.BeginTranAsync(); //入库取终点 //出库起点 - OutStockStrategyQuery outStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, material_id = wmsOutstockD.material_id, qty = input.qty, code_batch = wmsOutstockD.pi_code, Region_id = WmsWareHouseConst.REGION_CPOutstock_ID, dbConn = _db }; - List> items = await _wareHouseService.OutStockStrategy_saleRelease(outStockStrategyInput); + OutStockStrategyQuery outStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, material_id = wmsOutstockD.material_id, qty = input.qty, code_batch = wmsOutstockD.pi_code, Region_id = WmsWareHouseConst.REGION_CPOutstock_ID }; + List> items = await _wareHouseService.OutStockStrategy_saleRelease(outStockStrategyInput, _db); decimal canOutstockQty = items.Sum(r => r.Item3.codeqty).ParseToDecimal(); if (canOutstockQty < input.qty)