diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasSyncRecord.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasSyncRecord.cs new file mode 100644 index 00000000..7520ef9c --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasSyncRecord.cs @@ -0,0 +1,14 @@ +using SqlSugar; + +namespace Tnb.BasicData.Entities +{ + /// + /// 同步基础数据记录 + /// + [SugarTable("bas_sync_record")] + public class BasSyncRecord + { + public string msg { get; set; } + public DateTime create_time { get; set; } + } +} \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs index 1b90dc6a..9dc2505b 100644 --- a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs @@ -908,6 +908,13 @@ namespace Tnb.ProductionMgr } Log.Information($"基础数据同步结果:{result}"); + BasSyncRecord basSyncRecord = new BasSyncRecord() + { + msg = result, + create_time = DateTime.Now + }; + await _db.Insertable(basSyncRecord).ExecuteCommandAsync(); + return result; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 5d78a380..da25f89b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -2698,6 +2698,7 @@ namespace Tnb.WarehouseMgr 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; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs index 15f1b4e0..c946bf5c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStockService.cs @@ -332,7 +332,8 @@ namespace Tnb.WarehouseMgr string wmsPurchaseOrderHId = wmsPurchaseH?.erp_bill_code ?? ""; WmsPurchaseOrderH wmsPurchaseOrderH = await _db.Queryable().SingleAsync(x => x.id == wmsPurchaseOrderHId); WmsPurchaseOrderD wmsPurchaseOrderDs = await _db.Queryable().FirstAsync(x => x.fk_wms_purchase_order_id == wmsPurchaseOrderHId); - + BasWarehouse basWarehouse = await _db.Queryable().SingleAsync(x=>x.id==instock.warehouse_id); + List materialIds = allInstockDetails.Select(x => x.material_id).Distinct().ToList(); List unitCodes = allInstockDetails.Select(x => x.unit_id).Distinct().ToList(); List unitDatas = await _db.Queryable() @@ -406,7 +407,8 @@ namespace Tnb.WarehouseMgr ["dbizdate"] = instock.create_time.ToString("yyyy-MM-dd HH:mm:ss"), ["nnum"] = item.qty, ["nshouldnum"] = item.pr_qty, - ["pk_creqwareid"] = erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "", + // ["pk_creqwareid"] = erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "", + ["pk_creqwareid"] = erpWarehouserelaHs.Find(x => x.erp_warehousecode == basWarehouse.whcode)?.erp_warehouseid ?? "", ["pk_group"] = erpOrg.pk_group, ["pk_org"] = erpOrg.pk_org, ["pk_org_v"] = erpOrg.pk_org_v, @@ -431,7 +433,8 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; thirdWebapiRecord.name = "采购入库"; thirdWebapiRecord.method = "POST"; - thirdWebapiRecord.url = config.value + "uapws/rest/purchaseIn/save"; + // thirdWebapiRecord.url = config.value + "uapws/rest/purchaseIn/save"; + thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/purchaseIn/save"; thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.remark = "采购收货单号:" + (wmsPurchaseH?.bill_code ?? ""); @@ -465,7 +468,9 @@ namespace Tnb.WarehouseMgr .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode)) .Select((x, y) => y) .ToListAsync(); - + List erpWarehouserelaHs = await _db.Queryable().Where(x=>x.id!=null).ToListAsync(); + BasWarehouse basWarehouse = await _db.Queryable().SingleAsync(x=>x.id==instock.warehouse_id); + string supplierId = WmsWareHouseConst.TIANYIGONGYINGSHANG_ID; List tableIds = new List(); tableIds.Add(_userManager.UserId); @@ -494,7 +499,8 @@ namespace Tnb.WarehouseMgr erpRequestData.Add("corpvid", erpOrg.corpvid); erpRequestData.Add("creationtime", nowStr); erpRequestData.Add("creator", erpCreateId); - erpRequestData.Add("cwarehouseid", erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "");//类型视图里取 + // erpRequestData.Add("cwarehouseid", erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "");//类型视图里取 + erpRequestData.Add("cwarehouseid", erpWarehouserelaHs.Find(x => x.erp_warehousecode == basWarehouse.whcode)?.erp_warehouseid ?? "");//类型视图里取 erpRequestData.Add("dbilldate", nowStr); erpRequestData.Add("dmakedate", nowStr); erpRequestData.Add("fbillflag", 1); @@ -515,7 +521,8 @@ namespace Tnb.WarehouseMgr erpRequestDataDetails.Add(new Dictionary() { ["cbodytranstypecode"] = "4E-01", - ["cbodywarehouseid"] = erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "", + // ["cbodywarehouseid"] = erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "", + ["cbodywarehouseid"] = erpWarehouserelaHs.Find(x => x.erp_warehousecode == basWarehouse.whcode)?.erp_warehouseid ?? "", ["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, @@ -546,6 +553,7 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.name = "调拨入库"; thirdWebapiRecord.method = "POST"; thirdWebapiRecord.url = config.value + "uapws/rest/transIn/save"; + // thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save"; thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.create_time = DateTime.Now; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs new file mode 100644 index 00000000..98fc09b2 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs @@ -0,0 +1,232 @@ +using System.Collections; +using JNPF.Common.Core.Manager; +using JNPF.Common.Security; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.EventBus; +using JNPF.Logging; +using JNPF.Systems.Entitys.System; +using JNPF.Systems.Interfaces.System; +using JNPF.VisualDev; +using JNPF.VisualDev.Interfaces; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using SqlSugar; +using Tnb.WarehouseMgr.Entities; +using Tnb.ProductionMgr; +using Tnb.WarehouseMgr.Entities.Entity; +using Tnb.WarehouseMgr.Entities.Consts; +using Tnb.BasicData.Entities; +using Tnb.BasicData; +using Tnb.ProductionMgr.Entities.Entity; +using ModuleConst = Tnb.ProductionMgr.ModuleConst; + +namespace Tnb.WarehouseMgr +{ + /// + /// 采购收货子表 + /// + [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 1102)] + [Route("api/[area]/[controller]/[action]")] + [OverideVisualDev(ModelId)] + // [OverideVisualDev(ModuleId)] + public class WmsPurchaseDService : IOverideVisualDevService, IDynamicApiController, ITransient + { + + public const string ModelId = "35017584657685"; + private readonly ISqlSugarRepository _repository; + private readonly DataBaseManager _dbManager; + private readonly ISqlSugarClient _db; + private readonly IUserManager _userManager; + private readonly IDictionaryDataService _dictionaryDataService; + public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); + + public WmsPurchaseDService( + ISqlSugarRepository repository, + DataBaseManager dbManager, + IUserManager userManager, + IDictionaryDataService dictionaryDataService) + { + _repository = repository; + _db = repository.AsSugarClient(); + _dbManager = dbManager; + _userManager = userManager; + _dictionaryDataService = dictionaryDataService; + } + + public async Task SaveCheckResult(Dictionary dic) + { + try + { + string id = dic["id"]; + string qcRes = dic["qc_res"]; + + WmsPurchaseD wmsPurchaseD = await _db.Queryable().SingleAsync(x => x.id == id); + + string purchaseHId = wmsPurchaseD?.bill_id ?? ""; + WmsPurchaseH wmsPurchaseH = await _db.Queryable().SingleAsync(x => x.id == purchaseHId); + + List wmsOutinStockDetails = await _db.Queryable() + .Where(x => x.source_detail_id == wmsPurchaseD.id && x.source_type == WmsWareHouseConst.BIZTYPE_WMSINSTOCK_ID) + .ToListAsync(); + List> requestData = new List>(); + List carryIds = wmsOutinStockDetails.Select(x => x.carry_id).ToList(); + foreach (var wmsOutinStockDetail in wmsOutinStockDetails) + { + WmsDistaskH wmsDistaskH = await _db.Queryable().FirstAsync(x=>x.bill_code==wmsOutinStockDetail.distask_code); + WmsInstockH instock = await _db.Queryable().SingleAsync(x=>x.id==wmsDistaskH.require_id); + List allInstockDetails = await _db.Queryable().Where(it => it.bill_id == instock.id).ToListAsync(); + + // WmsTempCode wmsTempCode = await _db.Queryable() + // .LeftJoin((a, b) => a.barcode == b.barcode) + // .Where((a, b) => a.carry_id == wmsDistaskH.carry_id) + // .Select((a, b) => b) + // .FirstAsync(); + + string wmsPurchaseOrderHId = wmsPurchaseH?.erp_bill_code ?? ""; + WmsPurchaseOrderH wmsPurchaseOrderH = await _db.Queryable().SingleAsync(x => x.id == wmsPurchaseOrderHId); + WmsPurchaseOrderD wmsPurchaseOrderDs = await _db.Queryable().FirstAsync(x => x.fk_wms_purchase_order_id == wmsPurchaseOrderHId); + BasWarehouse basWarehouse = await _db.Queryable().SingleAsync(x=>x.id==instock.warehouse_id); + + List materialIds = allInstockDetails.Select(x => x.material_id).Distinct().ToList(); + List unitCodes = allInstockDetails.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 erpWarehouserelaHs = await _db.Queryable().Where(x=>x.id!=null).ToListAsync(); + + DictionaryDataEntity tranType = await _db.Queryable().Where(x=>x.DictionaryTypeId=="25043925951909" && x.EnCode==wmsPurchaseH.transaction_type).FirstAsync(); + string tranTypeId = tranType?.Id ?? ""; + string supplierId = wmsPurchaseOrderH?.supplier_id ?? ""; + List tableIds = new List(); + tableIds.Add(_userManager.UserId); + tableIds.Add(WmsWareHouseConst.AdministratorOrgId); + tableIds.Add(instock.warehouse_id); + tableIds.AddRange(materialIds); + tableIds.Add(supplierId); + tableIds.Add(tranTypeId); + tableIds.AddRange(unitDatas.Select(x => x.Id).ToList()); + + List erpExtendFields = await _db.Queryable().Where(x => tableIds.Contains(x.table_id)).ToListAsync(); + string erpCreateId = erpExtendFields.Find(x => x.table_id == instock.create_id)?.user_id ?? ""; + ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (WmsWareHouseConst.AdministratorOrgId)); + string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + + Dictionary erpRequestData = new Dictionary(); + erpRequestData.Add("approver", erpCreateId); + erpRequestData.Add("billmaker", erpCreateId); + erpRequestData.Add("bitinbill", false); + erpRequestData.Add("cgeneralhid", null); + erpRequestData.Add("corpoid", erpOrg.corpoid); + erpRequestData.Add("corpvid", erpOrg.corpvid); + erpRequestData.Add("creationtime", nowStr); + erpRequestData.Add("creator", erpCreateId); + erpRequestData.Add("ctrantypeid", erpExtendFields.Find(x => x.table_id == tranTypeId)?.transaction_type_id ?? ""); + erpRequestData.Add("cvendorid", erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_id ?? ""); + erpRequestData.Add("cvendorvid", erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_vid ?? ""); + // erpRequestData.Add("cwarehouseid", erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "");//类型视图里取 + erpRequestData.Add("cwarehouseid", erpWarehouserelaHs.Find(x => x.erp_warehousecode == wmsPurchaseD.erp_wh_type)?.erp_warehouseid ?? "");//类型视图里取 + erpRequestData.Add("dbilldate", nowStr); + erpRequestData.Add("dmakedate", nowStr); + erpRequestData.Add("fbillflag", 2); + erpRequestData.Add("fbuysellflag", 2); + erpRequestData.Add("ntotalnum", allInstockDetails.Sum(x => x.qty)); + erpRequestData.Add("pk_org", erpOrg.pk_org); + erpRequestData.Add("pk_org_v", erpOrg.pk_org_v); + erpRequestData.Add("pk_group", erpOrg.pk_group); + erpRequestData.Add("vbillcode", instock.bill_code); + erpRequestData.Add("vtrantypecode", tranType?.EnCode ?? ""); + + List> erpRequestDataDetails = new List>(); + foreach (WmsInstockD item in allInstockDetails) + { + erpRequestDataDetails.Add(new Dictionary() + { + ["castunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id)?.Id ?? ""))?.cunitid ?? "", + ["cbodytranstypecode"] = erpExtendFields.Find(x => x.table_id == tranTypeId)?.transaction_type_id ?? "", + // ["cbodywarehouseid"] = erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "", + ["cbodywarehouseid"] = erpWarehouserelaHs.Find(x => x.erp_warehousecode == basWarehouse.whcode)?.erp_warehouseid ?? "", + ["cgeneralbid"] = "", + ["cgeneralhid"] = "", + ["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"] = (allInstockDetails.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"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_id ?? "", + ["cvendorvid"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_vid ?? "", + ["dbizdate"] = instock.create_time.ToString("yyyy-MM-dd HH:mm:ss"), + ["nnum"] = item.qty, + ["nshouldnum"] = item.pr_qty, + // ["pk_creqwareid"] = erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "", + ["pk_creqwareid"] = erpWarehouserelaHs.Find(x => x.erp_warehousecode == basWarehouse.whcode)?.erp_warehouseid ?? "", + ["pk_group"] = erpOrg.pk_group, + ["pk_org"] = erpOrg.pk_org, + ["pk_org_v"] = erpOrg.pk_org_v, + ["pseudocolumn"] = (allInstockDetails.FindIndex(x => x.id == item.id) + 1) * 10, + ["vbatchcode"] = item.code_batch, + ["csourcebillhid"] = wmsPurchaseH?.erp_arriveorder_pk ?? "", + ["csourcebillbid"] = wmsPurchaseD?.erp_arriveorder_b_pk ?? "", + ["vsourcebillcode"] = wmsPurchaseH?.bill_code ?? "", + ["lineno"] = wmsPurchaseOrderDs?.lineno ?? "", + ["vfree1"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_id ?? "", + ["bpresent"] = wmsPurchaseD.gift==1, + ["ntaxprice"] = wmsPurchaseD.price, + + }); + } + erpRequestData.Add("dtls", erpRequestDataDetails); + requestData.Add(erpRequestData); + } + + await _db.Ado.BeginTranAsync(); + await _db.Updateable() + .SetColumns(x => x.qc_res == qcRes) + .Where(x => x.id == id) + .ExecuteCommandAsync(); + + Dictionary dic2 = new() + { + { "ok", 1 }, + { "no", 2 }, + { "barelyOk", 4 }, + { "await", 8 }, + { "temporarily", 16 }, + { "checking", 32 }, + }; + string isCheck = dic2[qcRes].ToString(); + 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); + + ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord(); + thirdWebapiRecord.id = SnowflakeIdHelper.NextId(); + thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; + thirdWebapiRecord.name = "采购入库"; + thirdWebapiRecord.method = "POST"; + // thirdWebapiRecord.url = config.value + "uapws/rest/purchaseIn/save"; + thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/purchaseIn/save"; + thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); + thirdWebapiRecord.create_time = DateTime.Now; + thirdWebapiRecord.remark = "采购收货单号:" + (wmsPurchaseH?.bill_code ?? ""); + + await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + + await _db.Ado.CommitTranAsync(); + } + catch (Exception e) + { + await _db.Ado.RollbackTranAsync(); + Log.Error(e.Message,e); + } + + return "保存成功"; + } + } +} \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs index 2fb8bcc4..5fe0da9b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs @@ -251,7 +251,8 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; thirdWebapiRecord.name = "采购到货"; thirdWebapiRecord.method = "POST"; - thirdWebapiRecord.url = config.value+"uapws/rest/purarrvial/save"; + // thirdWebapiRecord.url = config.value+"uapws/rest/purarrvial/save"; + thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN+"uapws/rest/purarrvial/save"; thirdWebapiRecord.request_data = JsonConvert.SerializeObject(erpRequestData); thirdWebapiRecord.create_time = DateTime.Now;