225 lines
6.4 KiB
Java
225 lines
6.4 KiB
Java
package com.amarsoft.app.base.util;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import com.amarsoft.app.base.businessobject.BusinessObject;
|
|
import com.amarsoft.app.base.businessobject.BusinessObjectManager;
|
|
import com.amarsoft.are.lang.StringX;
|
|
import com.amarsoft.dict.als.cache.CodeCache;
|
|
import com.amarsoft.dict.als.cache.NameCache;
|
|
|
|
/**
|
|
* @author t-wangyg
|
|
*
|
|
*/
|
|
public class NameHelper {
|
|
/**
|
|
* 获取多个代码项的某个属性值
|
|
*
|
|
* @param codeNo
|
|
* @param itemNoString
|
|
* @param nameColumnID
|
|
* @param splitCharacter
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static String getMultiCodeItemAttribute(String codeNo,
|
|
String itemNoString, String nameColumnID, String splitCharacter)
|
|
throws Exception {
|
|
if (itemNoString == null || "".equals(itemNoString))
|
|
return "";
|
|
if (splitCharacter == null || splitCharacter.length() == 0)
|
|
splitCharacter = ",";
|
|
String[] keyValueArray = itemNoString.split(splitCharacter);
|
|
|
|
String nameValue = "";
|
|
for (String itemNo : keyValueArray)
|
|
nameValue += splitCharacter
|
|
+ CodeCache.getItem(codeNo, itemNo).getItemName();
|
|
|
|
if (nameValue.length() > 0)
|
|
nameValue = nameValue.substring(1);
|
|
return nameValue;
|
|
}
|
|
|
|
/**
|
|
* 获取多个代码项的某个属性值,以逗号分隔
|
|
*
|
|
* @param codeNo
|
|
* @param itemNoString
|
|
* @param nameColumnID
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static String getMultiCodeItemAttribute(String codeNo,
|
|
String itemNoString, String nameColumnID) throws Exception {
|
|
return getMultiCodeItemAttribute(codeNo, itemNoString, nameColumnID,
|
|
",");
|
|
}
|
|
|
|
/**
|
|
* 获得多个代码项的名称
|
|
*
|
|
* @param codeNo
|
|
* @param itemNoString
|
|
* @param splitCharacter
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static String getMultiCodeItemName(String codeNo,
|
|
String itemNoString, String splitCharacter) throws Exception {
|
|
if (itemNoString == null || "".equals(itemNoString))
|
|
return "";
|
|
if (splitCharacter == null || splitCharacter.length() == 0)
|
|
splitCharacter = ",";
|
|
String[] keyValueArray = itemNoString.split(splitCharacter);
|
|
|
|
String nameValue = "";
|
|
for (String itemNo : keyValueArray)
|
|
if (CodeCache.getItem(codeNo, itemNo) != null)
|
|
nameValue += splitCharacter
|
|
+ CodeCache.getItem(codeNo, itemNo).getItemName();
|
|
|
|
if (nameValue.length() > 0)
|
|
nameValue = nameValue.substring(1);
|
|
return nameValue;
|
|
}
|
|
|
|
/**
|
|
* 获得多个代码项的名称,以逗号分隔
|
|
*
|
|
* @param codeNo
|
|
* @param itemNoString
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public static String getMultiCodeItemName(String codeNo, String itemNoString)
|
|
throws Exception {
|
|
return getMultiCodeItemName(codeNo, itemNoString, ",");
|
|
}
|
|
|
|
/**
|
|
* 根据表的主键获取多条记录的某个字段值
|
|
*
|
|
* @param tableName
|
|
* @param nameColumnID
|
|
* @param keyColumnID
|
|
* @param keyValue
|
|
* ,以分隔符分开
|
|
* @param splitCharacter
|
|
* @return 以分隔符分开,返回多条记录的字段值,以分隔符隔开
|
|
* @throws Exception
|
|
*/
|
|
public static String getMultiObjectName(String tableName,
|
|
String nameColumnID, String keyColumnID, String keyValue,
|
|
String splitCharacter) throws Exception {
|
|
if (keyValue == null || "".equals(keyValue))
|
|
return "";
|
|
if (splitCharacter == null || splitCharacter.length() == 0)
|
|
splitCharacter = ",";
|
|
String[] keyValueArray = keyValue.split(splitCharacter);
|
|
|
|
String nameValue = "";
|
|
for (String value : keyValueArray)
|
|
nameValue += splitCharacter
|
|
+ NameCache.getName(tableName, nameColumnID, keyColumnID,
|
|
value);
|
|
|
|
if (nameValue.length() > 0)
|
|
nameValue = nameValue.substring(1);
|
|
return nameValue;
|
|
}
|
|
|
|
/**
|
|
* 根据表的主键获取多条记录的某个字段值
|
|
*
|
|
* @param tableName
|
|
* @param nameColumnID
|
|
* @param keyColumnID
|
|
* @param keyValue
|
|
* ,以分隔符分开
|
|
* @return 以分隔符分开,返回多条记录的字段值,以分隔符隔开
|
|
* @throws Exception
|
|
*/
|
|
public static String getMultiObjectName(String tableName,
|
|
String nameColumnID, String keyColumnID, String keyValue)
|
|
throws Exception {
|
|
return NameHelper.getMultiObjectName(tableName, nameColumnID,
|
|
keyColumnID, keyValue, ",");
|
|
}
|
|
|
|
/**
|
|
* 根据表的主键获取多条记录的某个字段值
|
|
*
|
|
* @param tableName
|
|
* @param nameColumnID
|
|
* @param filterString
|
|
* @return 以分隔符分开,返回多条记录的字段值,以分隔符隔开
|
|
* @throws Exception
|
|
*/
|
|
public static String getJBOAttributeName(String jboClassName,
|
|
String nameColumnID, String filterString) throws Exception {
|
|
String jboQueryString = "";
|
|
BusinessObject[] parameters = JBOHelper.parseJBOParamter(filterString,
|
|
";", ",");
|
|
BusinessObjectManager bomanager = BusinessObjectManager
|
|
.createBusinessObjectManager();
|
|
List<BusinessObject> l = new ArrayList<BusinessObject>();
|
|
for (BusinessObject parameter : parameters) {
|
|
if (!StringX.isEmpty(jboQueryString))
|
|
jboQueryString += " and ";
|
|
String parameterName = parameter.getString("Name");
|
|
if (StringX.isEmpty(parameterName))
|
|
continue;
|
|
String operator = parameter.getString("Operate");
|
|
if (StringX.isEmpty(operator))
|
|
operator = "=";
|
|
operator = operator.trim();
|
|
|
|
if ("in".equalsIgnoreCase(operator)) {
|
|
jboQueryString += parameterName + " " + operator + " (:"
|
|
+ parameterName + ")";
|
|
String[] sFilter = filterString.split("in");
|
|
if (sFilter[1].equals(" "))
|
|
l = bomanager.loadBusinessObjects(jboClassName,
|
|
jboQueryString, sFilter[0], "");
|
|
else if (sFilter[1].contains(",")) {
|
|
String[] str = sFilter[1].split(",");
|
|
String sk = "";
|
|
for (String s : str) {
|
|
s = s.replaceAll(" ", "");
|
|
sk += "," + s;
|
|
}
|
|
String a0 = sFilter[0];
|
|
l = bomanager.loadBusinessObjects(jboClassName,
|
|
jboQueryString, sFilter[0].replaceAll(" ", ""),
|
|
sk.split(","));
|
|
} else
|
|
l = bomanager.loadBusinessObjects(jboClassName,
|
|
jboQueryString, sFilter[0],
|
|
sFilter[1].replaceAll(" ", ""));
|
|
} else {
|
|
jboQueryString += parameterName + " " + operator + " :"
|
|
+ parameterName + "";
|
|
filterString = filterString.replaceAll(";", "=");
|
|
String[] sFilter = filterString.split("=");
|
|
if (sFilter.length == 3)
|
|
l = bomanager.loadBusinessObjects(jboClassName,
|
|
jboQueryString, sFilter[0], sFilter[1], sFilter[2],
|
|
"");
|
|
else
|
|
l = bomanager.loadBusinessObjects(jboClassName,
|
|
jboQueryString, sFilter[0], sFilter[1], sFilter[2],
|
|
sFilter[3]);
|
|
}
|
|
}
|
|
if (l == null || l.isEmpty())
|
|
return "";
|
|
String result = "";
|
|
for (BusinessObject o : l)
|
|
result += "," + o.getAttribute(nameColumnID);
|
|
return result.replaceFirst(",", "");
|
|
}
|
|
}
|