| | |
| | | public class zymes_RealessStock : AbstractOperationServicePlugIn |
| | | { |
| | | Dictionary<string, string> dictionary = new Dictionary<string, string>(); |
| | | // 添加一个字段来存储字段名 |
| | | private string _locationFieldName = "FF100001"; // 默认值 |
| | | |
| | | public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e) |
| | | { |
| | | base.OnPrepareOperationServiceOption(e); |
| | |
| | | foreach (var billObj in e.DataEntitys) |
| | | { |
| | | var id = billObj["Id"].ToString(); |
| | | |
| | | // 第一步:获取仓位字段名 |
| | | _locationFieldName = GetLocationFieldName(id); |
| | | |
| | | string sql = string.Empty; |
| | | sql = string.Format(@" |
| | | /*dialect*/ |
| | |
| | | join T_BD_STOCK st on t1.FSTOCKID = st.FSTOCKID |
| | | join T_BD_STOCK_l stl on t1.FSTOCKID = stl.FSTOCKID and stl.FLOCALEID = 2052 |
| | | join T_BAS_FLEXVALUESDETAIL t2 on t1.FSTOCKLOCID = t2.FID |
| | | join T_BAS_FLEXVALUESENTRY t3 on t2.FF100001 = t3.FENTRYID--仓位值集列表明细 |
| | | join T_BAS_FLEXVALUESENTRY t3 on t2.{1} = t3.FENTRYID--仓位值集列表明细 |
| | | join T_BAS_FLEXVALUESENTRY_L t4 on t3.FENTRYID=t4.FENTRYID |
| | | where t1.fstockid= {0} |
| | | ", id); |
| | | ", id,_locationFieldName); |
| | | |
| | | //斯莫尔仓位集的值是 t2.FF100006 |
| | | //47测试可以用 t2.FF100001 |
| | |
| | | ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, item.Value); |
| | | } |
| | | } |
| | | |
| | | // 新增方法:获取仓位字段名 |
| | | private string GetLocationFieldName(string stockId) |
| | | { |
| | | try |
| | | { |
| | | // 首先获取所有可能的字段名 |
| | | string getColumnsSql = @" |
| | | /*dialect*/ |
| | | SELECT COLUMN_NAME |
| | | FROM INFORMATION_SCHEMA.COLUMNS |
| | | WHERE TABLE_NAME = 'T_BAS_FLEXVALUESDETAIL' |
| | | AND COLUMN_NAME LIKE 'FF1%' |
| | | ORDER BY COLUMN_NAME"; |
| | | |
| | | DataSet columnsDs = DBServiceHelper.ExecuteDataSet(Context, getColumnsSql); |
| | | DataTable columnsDt = columnsDs.Tables[0]; |
| | | |
| | | // 在代码层面逐个检查字段 |
| | | foreach (DataRow row in columnsDt.Rows) |
| | | { |
| | | string columnName = row["COLUMN_NAME"].ToString(); |
| | | |
| | | string checkSql = $@" |
| | | /*dialect*/ |
| | | SELECT COUNT(1) as HasData |
| | | FROM T_BD_FLEXVALUESCOM t1 |
| | | JOIN T_BAS_FLEXVALUESDETAIL t2 ON t1.FSTOCKLOCID = t2.FID |
| | | JOIN T_BAS_FLEXVALUESENTRY t3 ON t2.{columnName} = t3.FENTRYID |
| | | JOIN T_BAS_FLEXVALUESENTRY_L t4 ON t3.FENTRYID = t4.FENTRYID |
| | | WHERE t1.fstockid = {stockId} |
| | | AND t4.FNAME IS NOT NULL"; |
| | | |
| | | DataSet checkDs = DBServiceHelper.ExecuteDataSet(Context, checkSql); |
| | | DataTable checkDt = checkDs.Tables[0]; |
| | | |
| | | if (checkDt.Rows.Count > 0 && Convert.ToInt32(checkDt.Rows[0]["HasData"]) > 0) |
| | | { |
| | | LogService.Write($"成功获取到仓位字段名: {columnName} 用于仓库ID: {stockId}"); |
| | | return columnName; |
| | | } |
| | | } |
| | | |
| | | LogService.Write($"未找到仓库 {stockId} 对应的仓位字段,使用默认值 FF100001"); |
| | | return "FF100001"; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogService.Write($"获取仓位字段名时发生异常: {ex.Message},使用默认值 FF100001"); |
| | | return "FF100001"; |
| | | } |
| | | } |
| | | |
| | | |
| | | public static class ResultMessage |
| | | {/// <summary> |
| | | /// 修改提示信息 |