diff --git a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db index c735af3..6472a2e 100644 Binary files a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db and b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db differ diff --git a/UFIDA.U8.Framework.Api/App_Data/U8API.xml b/UFIDA.U8.Framework.Api/App_Data/U8API.xml index 82674e4..78eb79b 100644 --- a/UFIDA.U8.Framework.Api/App_Data/U8API.xml +++ b/UFIDA.U8.Framework.Api/App_Data/U8API.xml @@ -835,7 +835,7 @@ 系统号 单据类型编码 查询条件 - 查询所属区域 H:表头,B:表体 + 查询所属区域 H:表头,B:表体, L:列表 @@ -1025,7 +1025,7 @@ 系统号 单据类型编码 查询条件 - 查询所属区域 H:表头,B:表体 + 查询所属区域 H:表头,B:表体, L:列表 @@ -1445,6 +1445,17 @@ 是否列表 + + + 查询特定单据部分 + + 系统号 + 单据类型编码 + 查询条件 + 查询所属区域 H:表头,B:表体, L:列表 + + + 审批流 diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/AAController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/AAController.cs index 566c9cd..106f99e 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/AAController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/AAController.cs @@ -136,7 +136,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 { "InventoryClass", "" }, }; - return await BaseLoad(cAccId, "Vendor", dict, input); + return await BaseLoad(cAccId, "InventoryClass", dict, input); } /// @@ -347,36 +347,61 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 { if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%")) { - conModels.Add(new ConditionalModel + if (colList.Any(a=>string.Equals(a.Key, o.Key,StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.Like, - FieldValue = $"{o.Value}" - }); + var col = colList.First(a => + string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || + string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } } else if (o.Key.EndsWith("__2")) { - conModels.Add(new ConditionalModel + if (colList.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key.Replace("__2", "")}", - ConditionalType = ConditionalType.LessThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colList.First(a => + string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || + string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } else if (input.ContainsKey($"{o.Key}__2")) { - conModels.Add(new ConditionalModel + if (colList.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.GreaterThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colList.First(a => + string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || + string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } - else if (colList.Keys.Contains(o.Key) || colList.Values.Contains(o.Key)) + else if (colList.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { + var col = colList.First(a => + string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || + string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + conModels.Add(new ConditionalModel { - FieldName = o.Key, + FieldName = col.Value, ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs index 85951e9..0ad2a17 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/MOController.cs @@ -34,7 +34,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 /// 系统号 /// 单据类型编码 /// 查询条件 - /// 查询所属区域 H:表头,B:表体 + /// 查询所属区域 H:表头,B:表体, L:列表 /// /// [HttpPost] @@ -87,103 +87,105 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 } }); - var cBTTblName = vouchers.cBTTblName; - var cBWTblName = vouchers.cBWTblName; + var cBTQName = vouchers.cBTTblName; + var cBWQName = vouchers.cBWTblName; + + var cBTTblExtName = $"{vouchers.cBTTblName}_extradefine"; + var cBWTblExtName = $"{vouchers.cBWTblName}_extradefine"; + var voucherIdFieldName = vouchers.voucherIdFieldName; var vouchersIdFieldName = ""; - var tableName = cBTTblName; - var colsHeadList = new List(); - var colsBodyList = new List(); + var bExtHead = false; var bExtBody = false; - if (cCardPostion == "H") + var colList = new Dictionary(); + var colListHead = new Dictionary(); + var colListBody = new Dictionary(); + + var cols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName); + + if (cols != null && cols.Count > 0) { - tableName = cBTTblName; + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); + } } - if (cCardPostion == "B") + if (db.DbMaintenance.IsAnyTable($"{cBTTblExtName}")) { - tableName = cBWTblName; + bExtHead = true; + + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + } + } } - if (cCardPostion == "L") + cols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName); + + if (cols != null && cols.Count > 0) { - tableName = cBWTblName; + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + } + } + + if (db.DbMaintenance.IsAnyTable(cBWTblExtName)) + { + bExtBody = true; + + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols) + { + if (colList.ContainsKey(col.DbColumnName.ToLower())) + { + vouchersIdFieldName = col.DbColumnName.ToLower(); + } + else + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + } + } + } } var cDefWhere = vouchers.cDefWhere; - var query = db.Queryable().AS(cBTTblName, cBTTblName); + var query = db.Queryable().AS(cBTQName, cBTQName); - if (!string.IsNullOrWhiteSpace(cBWTblName)) + if (bExtHead) { - query.AddJoinInfo(cBWTblName, cBWTblName, $"{cBTTblName}.[{voucherIdFieldName}]={cBWTblName}.[{voucherIdFieldName}]"); - - var bodyCols = db.DbMaintenance.GetColumnInfosByTableName(cBWTblName); - - if (bodyCols != null && bodyCols.Count > 0) - { - colsBodyList.AddRange(from col in bodyCols where !col.DbColumnName.ToLower().Contains("ufts") && col.DbColumnName.ToLower() != voucherIdFieldName.ToLower() select $"{cBWTblName}.[{col.DbColumnName.ToLower()}]"); - - if (cCardPostion=="B" && !colsBodyList.Contains(voucherIdFieldName.ToLower())) - { - colsBodyList.Add($"{cBWTblName}.[{voucherIdFieldName.ToLower()}]"); - } - } + query.AddJoinInfo(cBTTblExtName, cBTTblExtName, $"{cBTQName}.[{voucherIdFieldName}]={cBTTblExtName}.[{voucherIdFieldName}]"); } - var headCols = db.DbMaintenance.GetColumnInfosByTableName(cBTTblName); + query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]"); - if (headCols != null && headCols.Count > 0) + if (bExtBody) { - colsHeadList.AddRange(from col in headCols where !col.DbColumnName.ToLower().Contains("ufts") select $"{cBTTblName}.[{col.DbColumnName}]"); - } - - if (db.DbMaintenance.IsAnyTable($"{cBTTblName}_extradefine", false)) - { - bExtHead = true; - var cols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblName}_extradefine"); - - if (cols != null && cols.Count > 0) - { - foreach (var col in cols) - { - if (col.DbColumnName.ToLower().StartsWith("chdefine")) - { - colsHeadList.Add($"{cBTTblName}_extradefine.[{col.DbColumnName.ToLower()}]"); - } - else - { - vouchersIdFieldName = col.DbColumnName; - } - } - } - - query.AddJoinInfo($"{cBTTblName}_extradefine", $"{cBTTblName}_extradefine", $"{cBTTblName}.[{voucherIdFieldName}]={cBTTblName}_extradefine.[{voucherIdFieldName}]"); - } - - if (db.DbMaintenance.IsAnyTable($"{cBWTblName}_extradefine", false)) - { - bExtBody = true; - var cols = db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblName}_extradefine"); - - if (cols != null && cols.Count > 0) - { - foreach (var col in cols) - { - if (col.DbColumnName.ToLower().StartsWith("cbdefine")) - { - colsBodyList.Add($"{cBWTblName}_extradefine.[{col.DbColumnName.ToLower()}]"); - } - else - { - vouchersIdFieldName = col.DbColumnName; - } - } - } - - query.AddJoinInfo($"{cBWTblName}_extradefine", $"{cBWTblName}_extradefine", $"{cBWTblName}.[{vouchersIdFieldName}]={cBWTblName}_extradefine.[{vouchersIdFieldName}]"); + query.AddJoinInfo(cBWTblExtName, cBWTblExtName, $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblExtName}.[{vouchersIdFieldName}]"); } if (input != null) @@ -194,54 +196,130 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 { if (o.Key == "dModifyDate") { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase))) { - FieldName = "RelsTime", - ConditionalType = ConditionalType.GreaterThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + } else if (o.Key == "dModifyDate__2") { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, "dnveriRelsTimefytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase))) { - FieldName = "RelsTime", - ConditionalType = ConditionalType.LessThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, "RelsTime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "RelsTime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } else if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%")) { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.Like, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } } else if (o.Key.EndsWith("__2")) { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key.Replace("__2", "")}", - ConditionalType = ConditionalType.LessThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } else if (input.ContainsKey($"{o.Key}__2")) { + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + } + else if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + conModels.Add(new ConditionalModel { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldName = col.Value, + ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); } - else + else if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + conModels.Add(new ConditionalModel { - FieldName = o.Key, + FieldName = col.Value, ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); @@ -253,44 +331,10 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 query.Where(cDefWhere); - if (cCardPostion == "H") - { - if (bExtHead) - { - query.Select($"{string.Join(",", colsHeadList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsHeadList)}").Distinct(); - } - } - if (cCardPostion == "B") - { - if (bExtBody) - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - } - - if (cCardPostion == "L") - { - colsBodyList.AddRange(colsHeadList); - - if (bExtBody) - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - } + var selector = colList.Select(col => new SelectModel { FieldName = $"{col.Value}", AsName = col.Key }).ToList(); + query.Select(selector).Distinct(); _logInfo.Debug(query.ToSqlString()); diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs index f6ed7e2..b08bfe3 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs @@ -900,107 +900,105 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 var cBTQName = vouchers.cBTQName; var cBWQName = vouchers.cBWQName; - var cBTTblName = vouchers.cBTTblName; - var cBWTblName = vouchers.cBWTblName; + + var cBTTblExtName = $"{vouchers.cBTTblName}_extradefine"; + var cBWTblExtName =$"{vouchers.cBWTblName}_extradefine" ; + var voucherIdFieldName = vouchers.voucherIdFieldName; var vouchersIdFieldName = ""; - var tableName = cBTQName; - var colsHeadList=new List(); - var colsBodyList=new List(); + var bExtHead = false; var bExtBody = false; - if (cCardPostion == "H") + var colList = new Dictionary(); + var colListHead = new Dictionary(); + var colListBody = new Dictionary(); + + var cols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName); + + if(cols != null && cols.Count > 0) { - tableName = cBTQName; + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(),$"{cBTQName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(),$"{cBTQName}.[{col.DbColumnName}]"); + } } - if (cCardPostion == "B") + if (db.DbMaintenance.IsAnyTable($"{cBTTblExtName}")) { - tableName = cBWQName; + bExtHead = true; + + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + } + } } - if (cCardPostion == "L") + cols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName); + + if (cols != null && cols.Count > 0) { - tableName = cBWQName; + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + } } + if (db.DbMaintenance.IsAnyTable(cBWTblExtName)) + { + bExtBody = true; + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols) + { + if (colList.ContainsKey(col.DbColumnName.ToLower())) + { + vouchersIdFieldName = col.DbColumnName.ToLower(); + } + else + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + } + } + } + } var cDefWhere = vouchers.cDefWhere; var query = db.Queryable().AS(cBTQName, cBTQName); - if (!string.IsNullOrWhiteSpace(cBWQName)) + if (bExtHead) { - query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]"); - - var bodyCols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName); - - if (bodyCols != null && bodyCols.Count > 0) - { - colsBodyList.AddRange(from col in bodyCols where !col.DbColumnName.ToLower().Contains("ufts") && col.DbColumnName.ToLower()!=voucherIdFieldName select $"{cBWQName}.[{col.DbColumnName.ToLower()}]"); - - if (cCardPostion == "B" && !colsBodyList.Contains(voucherIdFieldName.ToLower())) - { - colsBodyList.Add($"{cBWQName}.[{voucherIdFieldName.ToLower()}]"); - } - } + query.AddJoinInfo(cBTTblExtName, cBTTblExtName, $"{cBTQName}.[{voucherIdFieldName}]={cBTTblExtName}.[{voucherIdFieldName}]"); } - var headCols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName); + query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]"); - if(headCols!=null && headCols.Count > 0) + if (bExtBody) { - colsHeadList.AddRange(from col in headCols where !col.DbColumnName.ToLower().Contains("ufts") select $"{cBTQName}.[{col.DbColumnName}]"); + query.AddJoinInfo(cBWTblExtName, cBWTblExtName, $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblExtName}.[{vouchersIdFieldName}]"); } - - if (db.DbMaintenance.IsAnyTable($"{cBTTblName}_extradefine", false)) - { - bExtHead = true; - var cols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblName}_extradefine"); - - if (cols != null && cols.Count > 0) - { - foreach (var col in cols) - { - if (col.DbColumnName.ToLower().StartsWith("chdefine")) - { - colsHeadList.Add($"{cBTTblName}_extradefine.[{col.DbColumnName.ToLower()}]"); - } - else - { - vouchersIdFieldName = col.DbColumnName; - } - } - } - - query.AddJoinInfo($"{cBTTblName}_extradefine", $"{cBTTblName}_extradefine", $"{cBTQName}.[{voucherIdFieldName}]={cBTTblName}_extradefine.[{voucherIdFieldName}]"); - } - - if (db.DbMaintenance.IsAnyTable($"{cBWTblName}_extradefine", false)) - { - bExtBody = true; - var cols= db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblName}_extradefine"); - - if (cols != null && cols.Count > 0) - { - foreach (var col in cols) - { - if (col.DbColumnName.ToLower().StartsWith("cbdefine")) - { - colsBodyList.Add($"{cBWTblName}_extradefine.[{col.DbColumnName.ToLower()}]"); - } - else - { - vouchersIdFieldName = col.DbColumnName; - } - } - } - - query.AddJoinInfo($"{cBWTblName}_extradefine", $"{cBWTblName}_extradefine", $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblName}_extradefine.[{vouchersIdFieldName}]"); - } - + if (input != null) { var conModels = new List(); @@ -1009,54 +1007,129 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 { if (o.Key == "dModifyDate") { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, "caudittime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "caudittime", StringComparison.OrdinalIgnoreCase))) { - FieldName = "caudittime", - ConditionalType = ConditionalType.GreaterThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, "caudittime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "caudittime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + } else if(o.Key == "dModifyDate__2") { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, "caudittime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "caudittime", StringComparison.OrdinalIgnoreCase))) { - FieldName = "caudittime", - ConditionalType = ConditionalType.LessThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, "caudittime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "caudittime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } else if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%")) { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.Like, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } } else if (o.Key.EndsWith("__2")) { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key.Replace("__2", "")}", - ConditionalType = ConditionalType.LessThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } else if (input.ContainsKey($"{o.Key}__2")) { + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + } + else if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + conModels.Add(new ConditionalModel { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldName = col.Value, + ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); - } - else + }else if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + conModels.Add(new ConditionalModel { - FieldName = o.Key, + FieldName = col.Value, ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); @@ -1068,43 +1141,10 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 query.Where(cDefWhere); - if (cCardPostion == "H") - { - if (bExtHead) - { - query.Select($"{string.Join(",", colsHeadList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsHeadList)}").Distinct(); - } - } - if (cCardPostion == "B") - { - if (bExtBody) - { - query.Select($"{string.Join(",",colsBodyList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - } + var selector =colList.Select(col => new SelectModel { FieldName = $"{col.Value}", AsName = col.Key }).ToList(); - if (cCardPostion == "L") - { - colsBodyList.AddRange(colsHeadList); - - if (bExtBody) - { - query.Select($"{string.Join(",",colsBodyList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - } + query.Select(selector).Distinct(); _logInfo.Debug(query.ToSqlString()); diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs index 3222314..13811bc 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/SAController.cs @@ -153,7 +153,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 /// 系统号 /// 单据类型编码 /// 查询条件 - /// 查询所属区域 H:表头,B:表体 + /// 查询所属区域 H:表头,B:表体, L:列表 /// /// [HttpPost] @@ -208,103 +208,103 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 var cBTQName = vouchers.cBTQName; var cBWQName = vouchers.cBWQName; - var cBTTblName = vouchers.cBTTblName; - var cBWTblName = vouchers.cBWTblName; + + var cBTTblExtName = $"{vouchers.cBTTblName}_extradefine"; + var cBWTblExtName = $"{vouchers.cBWTblName}_extradefine"; + var voucherIdFieldName = vouchers.voucherIdFieldName; var vouchersIdFieldName = ""; - var tableName = cBTQName; - var colsHeadList = new List(); - var colsBodyList = new List(); + var bExtHead = false; var bExtBody = false; - if (cCardPostion == "H") + var colList = new Dictionary(); + var colListHead = new Dictionary(); + var colListBody = new Dictionary(); + + var cols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName); + + if (cols != null && cols.Count > 0) { - tableName = cBTQName; + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); + } } - if (cCardPostion == "B") + if (db.DbMaintenance.IsAnyTable($"{cBTTblExtName}")) { - tableName = cBWQName; + bExtHead = true; + + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + } + } } - if (cCardPostion == "L") + cols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName); + + if (cols != null && cols.Count > 0) { - tableName = cBWQName; + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + } + } + + if (db.DbMaintenance.IsAnyTable(cBWTblExtName)) + { + bExtBody = true; + + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols) + { + if (colList.ContainsKey(col.DbColumnName.ToLower())) + { + vouchersIdFieldName = col.DbColumnName.ToLower(); + } + else + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + } + } + } } var cDefWhere = vouchers.cDefWhere; var query = db.Queryable().AS(cBTQName, cBTQName); - if (!string.IsNullOrWhiteSpace(cBWQName)) + if (bExtHead) { - query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]"); - - var bodyCols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName); - - if (bodyCols != null && bodyCols.Count > 0) - { - colsBodyList.AddRange(from col in bodyCols where !col.DbColumnName.ToLower().Contains("ufts") && col.DbColumnName.ToLower() != voucherIdFieldName select $"{cBWQName}.[{col.DbColumnName.ToLower()}]"); - - if (cCardPostion == "B" && !colsBodyList.Contains(voucherIdFieldName.ToLower())) - { - colsBodyList.Add($"{cBWQName}.[{voucherIdFieldName.ToLower()}]"); - } - } + query.AddJoinInfo(cBTTblExtName, cBTTblExtName, $"{cBTQName}.[{voucherIdFieldName}]={cBTTblExtName}.[{voucherIdFieldName}]"); } - var headCols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName); + query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]"); - if (headCols != null && headCols.Count > 0) + if (bExtBody) { - colsHeadList.AddRange(from col in headCols where !col.DbColumnName.ToLower().Contains("ufts") select $"{cBTQName}.[{col.DbColumnName}]"); - } - - if (db.DbMaintenance.IsAnyTable($"{cBTTblName}_extradefine", false)) - { - bExtHead = true; - var cols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblName}_extradefine"); - - if (cols != null && cols.Count > 0) - { - foreach (var col in cols) - { - if (col.DbColumnName.ToLower().StartsWith("chdefine")) - { - colsHeadList.Add($"{cBTTblName}_extradefine.[{col.DbColumnName.ToLower()}]"); - } - else - { - vouchersIdFieldName = col.DbColumnName; - } - } - } - - query.AddJoinInfo($"{cBTTblName}_extradefine", $"{cBTTblName}_extradefine", $"{cBTQName}.[{voucherIdFieldName}]={cBTTblName}_extradefine.[{voucherIdFieldName}]"); - } - - if (db.DbMaintenance.IsAnyTable($"{cBWTblName}_extradefine", false)) - { - bExtBody = true; - var cols = db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblName}_extradefine"); - - if (cols != null && cols.Count > 0) - { - foreach (var col in cols) - { - if (col.DbColumnName.ToLower().StartsWith("cbdefine")) - { - colsBodyList.Add($"{cBWTblName}_extradefine.[{col.DbColumnName.ToLower()}]"); - } - else - { - vouchersIdFieldName = col.DbColumnName; - } - } - } - - query.AddJoinInfo($"{cBWTblName}_extradefine", $"{cBWTblName}_extradefine", $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblName}_extradefine.[{vouchersIdFieldName}]"); + query.AddJoinInfo(cBWTblExtName, cBWTblExtName, $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblExtName}.[{vouchersIdFieldName}]"); } if (input != null) @@ -315,54 +315,130 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 { if (o.Key == "dModifyDate") { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, "dverifysystime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dverifysystime", StringComparison.OrdinalIgnoreCase))) { - FieldName = "dverifysystime", - ConditionalType = ConditionalType.GreaterThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, "dverifysystime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dverifysystime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + } else if (o.Key == "dModifyDate__2") { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, "dverifysystime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dverifysystime", StringComparison.OrdinalIgnoreCase))) { - FieldName = "dverifysystime", - ConditionalType = ConditionalType.LessThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, "dverifysystime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dverifysystime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } else if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%")) { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.Like, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } } else if (o.Key.EndsWith("__2")) { - conModels.Add(new ConditionalModel + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { - FieldName = $"{o.Key.Replace("__2", "")}", - ConditionalType = ConditionalType.LessThanOrEqual, - FieldValue = $"{o.Value}" - }); + var col = colListHead.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } } else if (input.ContainsKey($"{o.Key}__2")) { + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + } + else if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + conModels.Add(new ConditionalModel { - FieldName = $"{o.Key}", - ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldName = col.Value, + ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); } - else + else if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + conModels.Add(new ConditionalModel { - FieldName = o.Key, + FieldName = col.Value, ConditionalType = ConditionalType.Equal, FieldValue = $"{o.Value}" }); @@ -374,43 +450,10 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 query.Where(cDefWhere); - if (cCardPostion == "H") - { - if (bExtHead) - { - query.Select($"{string.Join(",", colsHeadList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsHeadList)}").Distinct(); - } - } - if (cCardPostion == "B") - { - if (bExtBody) - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - } + var selector = colList.Select(col => new SelectModel { FieldName = $"{col.Value}", AsName = col.Key }).ToList(); - if (cCardPostion == "L") - { - colsBodyList.AddRange(colsHeadList); - - if (bExtBody) - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - else - { - query.Select($"{string.Join(",", colsBodyList)}").Distinct(); - } - } + query.Select(selector).Distinct(); _logInfo.Debug(query.ToSqlString()); diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs index e475ec5..5521de9 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/STController.cs @@ -1405,6 +1405,324 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 } } + /// + /// 查询特定单据部分 + /// + /// 系统号 + /// 单据类型编码 + /// 查询条件 + /// 查询所属区域 H:表头,B:表体, L:列表 + /// + /// + [HttpPost] + [Route("api/U8/ST/{cCardNum}/Load")] + [Route("api/U8/ST/{cCardNum}/Load/{cCardPostion}")] + public async Task> Load(string cAccId, string cCardNum, [FromBody] Dictionary input, string cCardPostion = "H") + { + var workId = SnowFlakeSingle.Instance.NextId(); + try + { + _logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:查询,对接账套:{cAccId},条件:{input.ToJson()}"); + + if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin)) + { + _logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建"); + + baseLogin = new BaseLogin(); + + var param = await CommUnit.GetLoginParamter(cAccId); + + if (param == null) + { + throw new Exception("未能加载指定系统号的登录信息"); + } + + baseLogin.Init(param, false); + + _cache.Clear(); + + _cache.Set($"U8_{cAccId}", baseLogin); + } + + var vouchers = CommonHelper.GetVouchers(baseLogin.Connection, cCardNum); + + if (vouchers == null) + { + throw new Exception("未能获取到单据配置信息"); + } + + var db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConfigId = cAccId, + ConnectionString = baseLogin.UFDataConnstringForNet, + IsAutoCloseConnection = true, + MoreSettings = new ConnMoreSettings() + { + IsWithNoLockQuery = true + } + }); + + var cBTQName = vouchers.cBTQName; + var cBWQName = vouchers.cBWQName; + + var cBTTblExtName = $"{vouchers.cBTTblName}_extradefine"; + var cBWTblExtName = $"{vouchers.cBWTblName}_extradefine"; + + var voucherIdFieldName = vouchers.voucherIdFieldName; + var vouchersIdFieldName = ""; + + var bExtHead = false; + var bExtBody = false; + + var colList = new Dictionary(); + var colListHead = new Dictionary(); + var colListBody = new Dictionary(); + + var cols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName); + + if (cols != null && cols.Count > 0) + { + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(), $"{cBTQName}.[{col.DbColumnName}]"); + } + } + + if (db.DbMaintenance.IsAnyTable($"{cBTTblExtName}")) + { + bExtHead = true; + + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "H" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + + colListHead.Add(col.DbColumnName.ToLower(), $"{cBTTblExtName}.[{col.DbColumnName}]"); + } + } + } + + cols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName); + + if (cols != null && cols.Count > 0) + { + foreach (var col in cols.Where(col => !colList.ContainsKey(col.DbColumnName.ToLower()))) + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWQName}.[{col.DbColumnName}]"); + } + } + + if (db.DbMaintenance.IsAnyTable(cBWTblExtName)) + { + bExtBody = true; + + var extcols = db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblExtName}"); + + if (extcols != null && extcols.Count > 0) + { + foreach (var col in extcols) + { + if (colList.ContainsKey(col.DbColumnName.ToLower())) + { + vouchersIdFieldName = col.DbColumnName.ToLower(); + } + else + { + if (cCardPostion == "B" || cCardPostion == "L") + colList.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + + colListBody.Add(col.DbColumnName.ToLower(), $"{cBWTblExtName}.[{col.DbColumnName}]"); + } + } + } + } + + var cDefWhere = vouchers.cDefWhere; + + var query = db.Queryable().AS(cBTQName, cBTQName); + + if (bExtHead) + { + query.AddJoinInfo(cBTTblExtName, cBTTblExtName, $"{cBTQName}.[{voucherIdFieldName}]={cBTTblExtName}.[{voucherIdFieldName}]"); + } + + query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]"); + + if (bExtBody) + { + query.AddJoinInfo(cBWTblExtName, cBWTblExtName, $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblExtName}.[{vouchersIdFieldName}]"); + } + + if (input != null) + { + var conModels = new List(); + + foreach (var o in input) + { + if (o.Key == "dModifyDate") + { + if (colListHead.Any(a => string.Equals(a.Key, "dnverifytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dnverifytime", StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, "dnverifytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dnverifytime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + + } + else if (o.Key == "dModifyDate__2") + { + if (colListHead.Any(a => string.Equals(a.Key, "dnverifytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dnverifytime", StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, "dnverifytime", StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, "dnverifytime", StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + } + else if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%")) + { + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.Like, + FieldValue = $"{o.Value}" + }); + } + } + else if (o.Key.EndsWith("__2")) + { + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key.Replace("__2", ""), StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.LessThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + } + else if (input.ContainsKey($"{o.Key}__2")) + { + if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + + if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = $"{col.Value}", + ConditionalType = ConditionalType.GreaterThanOrEqual, + FieldValue = $"{o.Value}" + }); + } + } + else if (colListHead.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListHead.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = col.Value, + ConditionalType = ConditionalType.Equal, + FieldValue = $"{o.Value}" + }); + } + else if (colListBody.Any(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase))) + { + var col = colListBody.First(a => string.Equals(a.Key, o.Key, StringComparison.OrdinalIgnoreCase) || string.Equals(a.Value, o.Key, StringComparison.OrdinalIgnoreCase)); + + conModels.Add(new ConditionalModel + { + FieldName = col.Value, + ConditionalType = ConditionalType.Equal, + FieldValue = $"{o.Value}" + }); + } + } + + query.Where(conModels); + } + + query.Where(cDefWhere); + + + var selector = colList.Select(col => new SelectModel { FieldName = $"{col.Value}", AsName = col.Key }).ToList(); + + query.Select(selector).Distinct(); + + _logInfo.Debug(query.ToSqlString()); + + return new BaseResult() { bSuccess = true, message = "查询成功", result = await query.ToListAsync() }; + } + catch (Exception ex) + { + _logInfo.Error(ex.Message, ex); + + return new BaseResult { bSuccess = false, message = ex.Message, result = ex.StackTrace }; + } + } } } \ No newline at end of file