diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs index 79ba49e1..3d433075 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -1119,7 +1119,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA // 获取下到输送线9和10的未完成的转库单 List WmsMaterialTransfers = db_Floor2UpMachinecodetimer.Queryable() .InnerJoin((a, b) => a.id == b.bill_id) - .Where((a, b) => a.warehouse_instock == "33780009364245" && a.warehouse_outstock == "2" && a.remainbindracknum > 0 + .Where((a, b) => (a.warehouse_instock == WmsWareHouseConst.WAREHOUSE_ZCC_ID || a.warehouse_instock == WmsWareHouseConst.WAREHOUSE_HCC_ID) && a.warehouse_outstock == "2" && a.remainbindracknum > 0 && b.carry_code == barcode).ToList(); if (WmsMaterialTransfers.Count() == 0) @@ -1228,7 +1228,6 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA }).Where(r => r.id == WmsMaterialTransfer.id).ExecuteCommandAsync(); LoggerFloor2UpDownMachine.LogInformation($@"【上升降机】回写转库单的剩余可绑定料架数量"); - // 开始码垛 bool result_开始码垛 = await Floor2UpDownMachinecode_SetTag(MechanicalArmConsts.上升降机当前码垛位, target.stackingposition.ToString()); LoggerFloor2UpDownMachine.LogInformation($@"【上升降机】码垛位{target.stackingposition}码垛结果 {result_开始码垛}"); diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs index b6e8bad5..d31c6527 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs @@ -144,4 +144,9 @@ public partial class WmsCarryH : BaseEntity /// 入库时间 /// public DateTime? instock_time { get; set; } + + /// + /// 转库单ID + /// + public string? material_tranfer_billid { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPrdInstockD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPrdInstockD.cs index 251f1ad9..b3bdf2a3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPrdInstockD.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPrdInstockD.cs @@ -54,4 +54,9 @@ public partial class WmsPrdInstockD : BaseEntity /// public string? status { get; set; } + /// + /// 生产仓库 + /// + public string? scwarehouse_id { get; set; } + } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs index 87098566..db0bb7d7 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs @@ -704,7 +704,8 @@ namespace Tnb.WarehouseMgr string transfer_type = ""; // 中储仓到暂存仓 - if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZCC_ID) + if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID + && (warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZCC_ID || warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_HCC_ID)) { int count = input.details.Where(r => string.IsNullOrEmpty(r.station_code)).Count(); if (count > 0) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index ac92d875..2cd9ae8e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -1220,7 +1220,8 @@ namespace Tnb.WarehouseMgr Logger.LogInformation($@"【上升降机】更新料架 {target.rackcode} 在二楼配送的目标工位 {targetWorkstation}"); await _db.Updateable().SetColumns(r => new WmsCarryH { - work_station = targetWorkstation + work_station = targetWorkstation, + material_tranfer_billid = wmsMaterialTransferD.bill_id }).Where(r => r.id == target.rackid).ExecuteCommandAsync(); } else if (target.note == "下升降机") @@ -2474,6 +2475,7 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task TaskComplate(TaskCompleUpInput input) { + var db = _db.CopyNew(); try { @@ -2629,99 +2631,13 @@ namespace Tnb.WarehouseMgr work_station = "" }).Where(r => r.id == dt.carry_id).ExecuteCommandAsync(); + await QTRK2BIP(dt, db); // require_code是任务单 //string mo_task_code = dt.require_code; } else if (dt.biz_type == "erp_qtrk") { - WmsMaterialTransfer wmsMaterialTransfer = await db.Queryable().SingleAsync(x=>x.id==dt.source_id); - List wmsMaterialTransferDs = await db.Queryable().Where(x=>x.bill_id==dt.source_id).ToListAsync(); - List materialIds = wmsMaterialTransferDs.Select(x=>x.material_id).Distinct().ToList(); - List unitCodes = wmsMaterialTransferDs.Select(x => x.unit_id).Distinct().ToList(); - List unitDatas = await db.Queryable() - .LeftJoin((x, y) => x.Id == y.DictionaryTypeId) - .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode)) - .Select((x,y)=>y) - .ToListAsync(); - - List ids = new List(); - ids.Add(wmsMaterialTransfer.create_id); - ids.Add(WmsWareHouseConst.AdministratorOrgId); - ids.Add(wmsMaterialTransfer.warehouse_instock); - ids.AddRange(materialIds); - ids.AddRange(unitDatas.Select(x=>x.Id).ToList()); - - List erpExtendFields = await db.Queryable().Where(x=>ids.Contains(x.table_id)).ToListAsync(); - string erpCreateId = erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.create_id)?.user_id ?? ""; - ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (wmsMaterialTransfer.org_id ?? WmsWareHouseConst.AdministratorOrgId)); - string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - List erpWarehouserelaHs = await _db.Queryable().Where(x=>x.id!=null).ToListAsync(); - BasWarehouse basWarehouse = await db.Queryable().SingleAsync(x=>x.id==wmsMaterialTransfer.warehouse_instock); - string whcode = basWarehouse?.whcode ?? ""; - - List> requestData = new List>(); - Dictionary erpRequestData = new Dictionary(); - erpRequestData.Add("approver",erpCreateId); - erpRequestData.Add("billmaker",erpCreateId); - erpRequestData.Add("corpoid",erpOrg.corpoid); - erpRequestData.Add("corpvid",erpOrg.corpvid); - erpRequestData.Add("creationtime",nowStr); - erpRequestData.Add("creator",erpCreateId); - erpRequestData.Add("ctrantypeid","0001H11000000000D30Z"); - // erpRequestData.Add("cwarehouseid",erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.warehouse_instock)?.cotherwhid ?? ""); - erpRequestData.Add("cwarehouseid",erpWarehouserelaHs.Find(x => x.wms_warehousecode == whcode)?.erp_warehouseid ?? ""); - erpRequestData.Add("cwhsmanagerid",""); - erpRequestData.Add("dbilldate",nowStr); - erpRequestData.Add("dmakedate",nowStr); - erpRequestData.Add("ntotalnum",wmsMaterialTransferDs.Sum(x=>x.qty)); - erpRequestData.Add("pk_group",erpOrg.pk_group); - erpRequestData.Add("pk_org",erpOrg.pk_org); - erpRequestData.Add("pk_org_v",erpOrg.pk_org_v); - erpRequestData.Add("vbillcode",wmsMaterialTransfer.bill_code); - erpRequestData.Add("vtrantypecode","4A-01"); - List> erpRequestDataDetails = new List>(); - foreach(WmsMaterialTransferD item in wmsMaterialTransferDs) - { - erpRequestDataDetails.Add(new Dictionary() - { - ["cbodytranstypecode"] = "4A-01", - ["cbodywarehouseid"] = erpWarehouserelaHs.Find(x => x.wms_warehousecode == whcode)?.erp_warehouseid ?? "", - ["cgeneralbid"] = erpWarehouserelaHs.Find(x => x.wms_warehousecode == whcode)?.erp_warehouseid ?? "", - ["cgeneralbid"] = null, - ["cgeneralhid"] = null, - ["cmaterialoid"] = erpExtendFields.Find(x=>x.table_id==item.material_id)?.cmaterialoid ?? "", - ["cmaterialvid"] = erpExtendFields.Find(x=>x.table_id==item.material_id)?.cmaterialvid ?? "", - ["corpoid"] = erpOrg.corpoid, - ["corpvid"] = erpOrg.corpvid, - ["crowno"] = (wmsMaterialTransferDs.FindIndex(x=>x.id==item.id)+1) * 10, - ["cunitid"] = erpExtendFields.Find(x=>x.table_id==(unitDatas.Find(x=>x.EnCode==item.unit_id)?.Id ?? ""))?.cunitid ?? "", - ["cvendorid"] = "", - ["cvendorvid"] = "", - ["dbizdate"] = nowStr, - ["nnum"] = item.qty, - ["pk_group"] = erpOrg.pk_group, - ["pk_org"] = erpOrg.pk_org, - ["pk_org_v"] = erpOrg.pk_org_v, - ["csourcebillbid"] = item.erp_line_pk, - ["csourcebillhid"] = wmsMaterialTransfer.erp_pk, - ["vbatchcode"] = item.code_batch, - }); - } - erpRequestData.Add("dtls",erpRequestDataDetails); - requestData.Add(erpRequestData); - - BasFactoryConfig config = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL); - ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord(); - thirdWebapiRecord.id = SnowflakeIdHelper.NextId(); - thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; - thirdWebapiRecord.name = "其它入库"; - thirdWebapiRecord.method = "POST"; - // thirdWebapiRecord.url = config.value+"uapws/rest/generalin/save"; - thirdWebapiRecord.url = config.value+"uapws/rest/generalin/save"; - thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); - thirdWebapiRecord.create_time = DateTime.Now; - - await db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + await QTRK2BIP(dt, db); } #endregion @@ -2763,6 +2679,106 @@ namespace Tnb.WarehouseMgr _ = GenTaskExecute(); } } + + + async Task QTRK2BIP(WmsDistaskH? dt, ISqlSugarClient db) + { + if (string.IsNullOrEmpty(dt.source_id)) + { + Logger.LogWarning($"上传其它入库到BIP时,转库单ID为空,无法上传 任务信息:{JsonConvert.SerializeObject(dt)}"); + return; + } + WmsMaterialTransfer wmsMaterialTransfer = await db.Queryable().SingleAsync(x => x.id == dt.source_id); + List wmsMaterialTransferDs = await db.Queryable().Where(x => x.bill_id == dt.source_id).ToListAsync(); + List materialIds = wmsMaterialTransferDs.Select(x => x.material_id).Distinct().ToList(); + List unitCodes = wmsMaterialTransferDs.Select(x => x.unit_id).Distinct().ToList(); + List unitDatas = await db.Queryable() + .LeftJoin((x, y) => x.Id == y.DictionaryTypeId) + .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode)) + .Select((x, y) => y) + .ToListAsync(); + + List ids = new List(); + ids.Add(wmsMaterialTransfer.create_id); + ids.Add(WmsWareHouseConst.AdministratorOrgId); + ids.Add(wmsMaterialTransfer.warehouse_instock); + ids.AddRange(materialIds); + ids.AddRange(unitDatas.Select(x => x.Id).ToList()); + + List erpExtendFields = await db.Queryable().Where(x => ids.Contains(x.table_id)).ToListAsync(); + string erpCreateId = erpExtendFields.Find(x => x.table_id == wmsMaterialTransfer.create_id)?.user_id ?? ""; + ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (wmsMaterialTransfer.org_id ?? WmsWareHouseConst.AdministratorOrgId)); + string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + List erpWarehouserelaHs = await _db.Queryable().Where(x => x.id != null).ToListAsync(); + BasWarehouse basWarehouse = await db.Queryable().SingleAsync(x => x.id == wmsMaterialTransfer.warehouse_instock); + string whcode = basWarehouse?.whcode ?? ""; + + List> requestData = new List>(); + Dictionary erpRequestData = new Dictionary(); + erpRequestData.Add("approver", erpCreateId); + erpRequestData.Add("billmaker", erpCreateId); + erpRequestData.Add("corpoid", erpOrg.corpoid); + erpRequestData.Add("corpvid", erpOrg.corpvid); + erpRequestData.Add("creationtime", nowStr); + erpRequestData.Add("creator", erpCreateId); + erpRequestData.Add("ctrantypeid", "0001H11000000000D30Z"); + // erpRequestData.Add("cwarehouseid",erpExtendFields.Find(x=>x.table_id==wmsMaterialTransfer.warehouse_instock)?.cotherwhid ?? ""); + erpRequestData.Add("cwarehouseid", erpWarehouserelaHs.Find(x => x.wms_warehousecode == whcode)?.erp_warehouseid ?? ""); + erpRequestData.Add("cwhsmanagerid", ""); + erpRequestData.Add("dbilldate", nowStr); + erpRequestData.Add("dmakedate", nowStr); + erpRequestData.Add("ntotalnum", wmsMaterialTransferDs.Sum(x => x.qty)); + erpRequestData.Add("pk_group", erpOrg.pk_group); + erpRequestData.Add("pk_org", erpOrg.pk_org); + erpRequestData.Add("pk_org_v", erpOrg.pk_org_v); + erpRequestData.Add("vbillcode", wmsMaterialTransfer.bill_code); + erpRequestData.Add("vtrantypecode", "4A-01"); + List> erpRequestDataDetails = new List>(); + foreach (WmsMaterialTransferD item in wmsMaterialTransferDs) + { + erpRequestDataDetails.Add(new Dictionary() + { + ["cbodytranstypecode"] = "4A-01", + ["cbodywarehouseid"] = erpWarehouserelaHs.Find(x => x.wms_warehousecode == whcode)?.erp_warehouseid ?? "", + ["cgeneralbid"] = erpWarehouserelaHs.Find(x => x.wms_warehousecode == whcode)?.erp_warehouseid ?? "", + ["cgeneralbid"] = null, + ["cgeneralhid"] = null, + ["cmaterialoid"] = erpExtendFields.Find(x => x.table_id == item.material_id)?.cmaterialoid ?? "", + ["cmaterialvid"] = erpExtendFields.Find(x => x.table_id == item.material_id)?.cmaterialvid ?? "", + ["corpoid"] = erpOrg.corpoid, + ["corpvid"] = erpOrg.corpvid, + ["crowno"] = (wmsMaterialTransferDs.FindIndex(x => x.id == item.id) + 1) * 10, + ["cunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id)?.Id ?? ""))?.cunitid ?? "", + ["cvendorid"] = "", + ["cvendorvid"] = "", + ["dbizdate"] = nowStr, + ["nnum"] = item.qty, + ["pk_group"] = erpOrg.pk_group, + ["pk_org"] = erpOrg.pk_org, + ["pk_org_v"] = erpOrg.pk_org_v, + ["csourcebillbid"] = item.erp_line_pk, + ["csourcebillhid"] = wmsMaterialTransfer.erp_pk, + ["vbatchcode"] = item.code_batch, + }); + } + erpRequestData.Add("dtls", erpRequestDataDetails); + requestData.Add(erpRequestData); + + BasFactoryConfig config = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL); + ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord(); + thirdWebapiRecord.id = SnowflakeIdHelper.NextId(); + thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; + thirdWebapiRecord.name = "其它入库"; + thirdWebapiRecord.method = "POST"; + // thirdWebapiRecord.url = config.value+"uapws/rest/generalin/save"; + thirdWebapiRecord.url = config.value + "uapws/rest/generalin/save"; + thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); + thirdWebapiRecord.create_time = DateTime.Now; + + await db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + } + + /// /// 出入库策略启用、禁用状态修改 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 4404a257..3266a1ef 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -1624,7 +1624,7 @@ namespace Tnb.WarehouseMgr commonCreatePretaskInput.carry_code = wmsCarryH.carry_code; commonCreatePretaskInput.task_type = ""; commonCreatePretaskInput.biz_type = "FloorCallMaterial"; - commonCreatePretaskInput.source_id = ""; + commonCreatePretaskInput.source_id = wmsCarryH.material_tranfer_billid; commonCreatePretaskInput.require_code = ""; commonCreatePretaskInput.require_id = prdMoTask.id; commonCreatePretaskInput.require_code = prdMoTask.mo_task_code;