123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- package com.kingdee.shr.compensation.service;
-
- import java.math.BigDecimal;
- import java.sql.SQLException;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import org.apache.log4j.Logger;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.metadata.MetaDataLoaderFactory;
- import com.kingdee.bos.metadata.MetaDataPK;
- import com.kingdee.bos.metadata.entity.EntityObjectInfo;
- import com.kingdee.eas.base.core.util.EmptyUtil;
- import com.kingdee.eas.util.app.ContextUtil;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.shr.compensation.CalSchemeInfo;
- import com.kingdee.shr.compensation.app.formula.SalaryCalFunction;
- import com.kingdee.shr.compensation.app.formula.data.Tools;
- import com.kingdee.shr.compensation.app.integrate.CalSubmitItemCollection;
- import com.kingdee.shr.compensation.app.integrate.CalSubmitItemDataType;
- import com.kingdee.shr.compensation.app.integrate.CalSubmitItemFactory;
- import com.kingdee.shr.compensation.app.integrate.CalSubmitItemInfo;
- import com.kingdee.shr.compensation.app.integrate.DateTypeEnum;
- import com.kingdee.shr.compensation.app.integrate.SubmitElementCollection;
- import com.kingdee.shr.compensation.app.integrate.SubmitElementFactory;
- import com.kingdee.shr.compensation.app.integrate.SubmitElementInfo;
- import com.kingdee.shr.compensation.util.CmpDateUtil;
- import com.kingdee.util.StringUtils;
-
- public class CalFunctionIntegrateServiceEx extends SalaryCalFunction
- {
-
- private static Logger logger = Logger.getLogger("com.kingdee.shr.compensation.service.CalFunctionIntegrateServiceEx");
- public double getTransferSalaryData(Map paramMap, HashMap tempMap, Map<String, BigDecimal> currencyMap, CalSchemeInfo calScheme, String mainTableRowFilter, String calSubmitScheme, String calSubmitItem, String company, double needSubOrg, String beginDate, String endDate,String hrNum)
- {
- String key = new StringBuilder().append("TransferSalaryEx:").append(calScheme.getNumber()).append("-").append(calSubmitScheme).append("-").append(calSubmitItem).append("-").append(company).append("-").append(needSubOrg).append(beginDate).append("-").append(endDate).toString();
- String relyKey = new StringBuilder().append("TransferSalaryEx-").append(calScheme.getNumber()).append("-").append(calSubmitScheme).append("-").append(calSubmitItem).append("-").append(company).append("-").append(needSubOrg).append(beginDate).append("-").append(endDate).append("-").append("Rely").toString();
- Map salaryMap = new HashMap();
-
- String calItem = (String)paramMap.get("CALITEM");
- // logger.error("tempMap.get(key) ====="+tempMap.get(key) );
- if (tempMap.get(key) == null) {
- String personFilter = getPersonFilterSql(calScheme, company, needSubOrg, beginDate, endDate, mainTableRowFilter);
- logger.error("personFilter====="+personFilter);
- Map methodParamMap = new HashMap();
- methodParamMap.put("calSubmitScheme", calSubmitScheme);
- methodParamMap.put("calSubmitItem", calSubmitItem);
- methodParamMap.put("personFilter", personFilter);
- methodParamMap.put("key", key);
- methodParamMap.put("relyKey", relyKey);
- methodParamMap.put("isNumber", Boolean.valueOf(true));
- methodParamMap.put("isCycleScheme", Boolean.valueOf(false));
- combineTransSalaryData(tempMap, currencyMap, methodParamMap,hrNum);
- // logger.error("tempMap=="+tempMap);
- }
- String personId = (String)paramMap.get("T_HR_SCMPCALTABLE_FPERSONID");
-
- logger.error("key=="+key);
- logger.error("personId=="+personId);
- salaryMap = (Map)tempMap.get(key);
- logger.error("salaryMap=="+salaryMap);
- putSubmitDataToParam(paramMap, tempMap, calItem, relyKey);
- logger.error("salaryMap.containsKey(personId)="+salaryMap.containsKey(personId));
- logger.error("((salaryMap.containsKey(personId)) ? EmptyUtil.isEmpty(salaryMap.get(personId))?0.0D:((BigDecimal)salaryMap.get(personId)).doubleValue() : 0.0D)=="+((salaryMap.containsKey(personId)) ? EmptyUtil.isEmpty(salaryMap.get(personId))?0.0D:((BigDecimal)salaryMap.get(personId)).doubleValue() : 0.0D));
- return ((salaryMap.containsKey(personId)) ? EmptyUtil.isEmpty(salaryMap.get(personId))?0.0D:((BigDecimal)salaryMap.get(personId)).doubleValue() : 0.0D);
- }
-
-
- private String getPersonFilterSql(CalSchemeInfo calScheme, String company, double needSubOrg, String beginDate, String endDate, String mainTableRowFilter)
- {
- String calschemeid = calScheme.getId().toString();
- int calTime = calScheme.getCalTime();
- int periodYear = calScheme.getPeriodYear();
- int periodMonth = calScheme.getPeriodMonth();
- boolean haveSubOrg = 1.0D == needSubOrg;
- String salaryPeriod = new StringBuilder().append(periodYear).append("-").append(periodMonth).append("-").append(calTime).toString();
- String beginDateSql = new StringBuilder().append("{ts '").append(beginDate).append("'}").toString(); String endDateSql = new StringBuilder().append("{ts '").append(endDate).append("'}").toString();
-
- StringBuilder str = new StringBuilder();
- str.append(" select FPersonID from T_HR_SCmpCalTable where FcalSchemeID = '").append(calschemeid).append("' ");
- str.append(" and FperiodYear = ").append(periodYear);
- str.append(" and FperiodMonth = ").append(periodMonth);
- str.append(" and FcalTime = ").append(calTime);
- if (!(StringUtils.isEmpty(mainTableRowFilter))) {
- str.append(" and ").append(mainTableRowFilter);
- }
- String personSql = str.toString();
-
- String adminOrgSql = getAdminOrgIdFilterSql(company, haveSubOrg);
-
- str = new StringBuilder();
- str.append(" WHERE ").append(adminOrgSql);
- str.append(new StringBuilder().append(" AND FPERSONID IN ( ").append(personSql).append(" )").toString());
- str.append(" AND FEFFECTDATE >= ").append(beginDateSql);
- str.append(" AND FEFFECTDATE <= ").append(endDateSql);
- str.append(" AND FCALSTATE = '03' ");
- str.append(" AND FSALARYPERIOD ='").append(salaryPeriod).append("'");
- return str.toString();
- }
-
- private void combineTransSalaryData(HashMap tempMap, Map<String, BigDecimal> currencyMap, Map<String, Object> methodParamMap,String hrNum)
- {
- String calSubmitScheme = (String)methodParamMap.get("calSubmitScheme");
- String calSubmitItem = (String)methodParamMap.get("calSubmitItem");
- String personFilter = (String)methodParamMap.get("personFilter");
- String key = (String)methodParamMap.get("key");
- String relyKey = (String)methodParamMap.get("relyKey");
- Boolean isNumber = (Boolean)methodParamMap.get("isNumber");
- Boolean isCycleScheme = (Boolean)methodParamMap.get("isCycleScheme");
-
-
-
- Boolean isDate = (Boolean)methodParamMap.get("isDate");
- Boolean dateTypeToDay = (Boolean)methodParamMap.get("dateTypeToDay");
-
- Context ctx = Tools.getInstance().getCtx();
-
- Map salaryMap = new HashMap();
-
- Map relyMap = new HashMap();
-
- List relyList = new ArrayList();
-
- String calItem = (String)this.paramMap.get("CALITEM");
-
- //取所有提报单对应的临时表
- ArrayList schemeTableNameList = initSubmitSchemeTable(ctx, tempMap, calSubmitItem);
- if (EmptyUtil.isEmpty(schemeTableNameList)) {
- tempMap.put(key, salaryMap);
- return;
- }
-
- CalSubmitItemInfo itemInfo = initSubmitItem(ctx, tempMap, calSubmitItem);
- if (null == itemInfo) {
- tempMap.put(key, salaryMap);
- return;
- }
- String itemSn = new StringBuilder().append("S").append(itemInfo.getFieldSn()).toString();
- String itemDatatTypeValue = itemInfo.getDataType().getValue();
- DecimalFormat df = new DecimalFormat((null == itemInfo.getDataDot()) ? "0" : itemInfo.getDataDot().toString());
- DateTypeEnum dateTypeEnum = itemInfo.getDateType();
- if ((itemDatatTypeValue != null) && ("2".equals(itemDatatTypeValue))) {
- isDate = Boolean.valueOf(true);
- if ((dateTypeEnum != null) && (10 == dateTypeEnum.getValue())) {
- dateTypeToDay = Boolean.valueOf(true);
- }
-
- }
-
- Set schemeItemSet = initSchemeItem(ctx, tempMap, calSubmitItem);
-
- if (!(schemeItemSet.contains(new StringBuilder().append(itemInfo.getFieldSn()).append("").toString()))) {
- tempMap.put(key, salaryMap);
- return;
- }
- //循环拼接 union all 提报临时表 按提报项目查询金额
- StringBuilder str = new StringBuilder();
- str.append("/*dialect*/ select t.fbillid,t.FPERSONID,t.FSALARYPERIOD,t.FID,t.FCURRENCYID, ").append("t."+itemSn).append(" from (");
- for (int i = 0; i < schemeTableNameList.size(); i++) {
- str= str.append(" SELECT fbillid,FPERSONID,FSALARYPERIOD,FID,FCURRENCYID,").append(itemSn);
- str=str.append(" FROM ").append(schemeTableNameList.get(i)).append(" t ");
-
- str.append(personFilter);
-
- if (isCycleScheme.booleanValue()) {
- str= str.append(" ORDER BY t.FTransYear desc,t.FTransMonth desc, t.FTransTime desc,t.FPERSONID, t.FEFFECTDATE DESC, t.FCREATETIME DESC ");
- }
- else if (!(isNumber.booleanValue())) {
- str= str.append(" ORDER BY t.FPERSONID, t.FEFFECTDATE DESC, t.sFCREATETIME DESC ");
- }
-
- if(schemeTableNameList.size()>1&&i!=schemeTableNameList.size()-1) {
- str= str.append(" union all");
- }
- }
-
- str.append(") as t ");
- str=str.append(" left join T_HR_SBatchSubmitShemeBill t1 on t.fbillid = t1.fid ");
- str=str.append(" left join T_ORG_BaseUnit t2 on t1.FHrOrgUnitID = t2.fid ");
- str.append(" where nvl(t2.fnumber,'##') ='"+hrNum+"' ");
- logger.error("temp_table_sql ===== "+str.toString());
- SimpleDateFormat yearMonthFormat = new SimpleDateFormat("yyyy-MM");
- SimpleDateFormat yearMonthDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- try
- {
- logger.error("sql===="+str.toString());
- IRowSet rowSet = DbUtil.executeQuery(ctx, str.toString());
-
- String moneyStr = "";
-
- while (rowSet.next()) {
- String personId = rowSet.getString("FPersonID");
- logger.error("isCycleScheme ===== "+isCycleScheme);
- Map personRelyMap = new HashMap();
- personRelyMap.put("SUBMITITEMID", null);
- personRelyMap.put("SUBMITITEMTABLE", null);
- if (isCycleScheme.booleanValue()) {
- if (isNumber.booleanValue()) {
-
- String currencyId = rowSet.getString("FCURRENCYID");
- BigDecimal money = rowSet.getBigDecimal(itemSn);
- personRelyMap.put("SUBMITMONEY", df.format(money.doubleValue()));
-
- BigDecimal rate = (null == currencyMap.get(currencyId)) ? new BigDecimal(1) : (BigDecimal)currencyMap.get(currencyId);
- if (salaryMap.containsKey(personId)) {
- continue;
- }
- salaryMap.put(personId, money.multiply(rate));
- }
- else
- {
- if ((isDate != null) && (isDate.booleanValue())) {
- java.sql.Date date = rowSet.getDate(itemSn);
- if (date != null) {
- java.util.Date utilDate = new java.util.Date(date.getTime());
- if ((dateTypeToDay != null) && (dateTypeToDay.booleanValue()))
- moneyStr = yearMonthDateFormat.format(utilDate);
- else
- moneyStr = yearMonthFormat.format(utilDate);
- }
- else {
- moneyStr = "";
- }
- } else {
- moneyStr = (null == rowSet.getString(itemSn)) ? "" : rowSet.getString(itemSn);
-
- if ("0".equals(itemDatatTypeValue)) {
- BigDecimal money = rowSet.getBigDecimal(itemSn);
- if (money == null) {
- moneyStr = "";
- } else {
- boolean isSQLServerDB = "MS SQL Server".equalsIgnoreCase(ContextUtil.getDbType(ctx));
- if (isSQLServerDB)
- moneyStr = df.format(money.doubleValue());
- else {
- moneyStr = (null == rowSet.getString(itemSn)) ? "" : rowSet.getString(itemSn);
- }
- }
- }
- }
- personRelyMap.put("SUBMITMONEY", moneyStr);
- if (salaryMap.containsKey(personId)) {
- continue;
- }
- salaryMap.put(personId, moneyStr);
- }
-
- }
- else if (isNumber.booleanValue()) {
- String currencyId = rowSet.getString("FCURRENCYID");
- BigDecimal money = EmptyUtil.isEmpty(rowSet.getBigDecimal(itemSn))?BigDecimal.ZERO:rowSet.getBigDecimal(itemSn);
- logger.error("money===="+money);
- personRelyMap.put("SUBMITMONEY", df.format(money.doubleValue()));
- BigDecimal rate = (null == currencyMap.get(currencyId)) ? new BigDecimal(1) : (BigDecimal)currencyMap.get(currencyId);
- BigDecimal sum = (null == salaryMap.get(personId)) ? money.multiply(rate) : ((BigDecimal)salaryMap.get(personId)).add(money.multiply(rate));
- salaryMap.put(personId, sum);
-
- } else {
- if ((isDate != null) && (isDate.booleanValue())) {
- java.sql.Date date = rowSet.getDate(itemSn);
- if (date != null) {
- java.util.Date utilDate = new java.util.Date(date.getTime());
- if ((dateTypeToDay != null) && (dateTypeToDay.booleanValue()))
- moneyStr = yearMonthDateFormat.format(utilDate);
- else
- moneyStr = yearMonthFormat.format(utilDate);
- }
- else {
- moneyStr = "";
- }
- } else {
- moneyStr = (null == rowSet.getString(itemSn)) ? "" : rowSet.getString(itemSn);
-
- if ("0".equals(itemDatatTypeValue)) {
- BigDecimal money = rowSet.getBigDecimal(itemSn);
- if (money == null) {
- moneyStr = "";
- } else {
- boolean isSQLServerDB = "MS SQL Server".equalsIgnoreCase(ContextUtil.getDbType(ctx));
- if (isSQLServerDB)
- moneyStr = df.format(money.doubleValue());
- else {
- moneyStr = (null == rowSet.getString(itemSn)) ? "" : rowSet.getString(itemSn);
- }
- }
- }
- }
- personRelyMap.put("SUBMITMONEY", moneyStr);
- if (salaryMap.containsKey(personId)) {
- continue;
- }
- salaryMap.put(personId, moneyStr);
- }
-
- personRelyMap.put("SUBMITTABLE", schemeTableNameList.get(0));
- personRelyMap.put("SUBMITTABLEID", rowSet.getString("FID"));
- personRelyMap.put("CALITEM", calItem);
- personRelyMap.put("SUBMITNUMBER", calSubmitItem);
- personRelyMap.put("ISBASIC", Integer.valueOf(0));
-
- if (relyMap.containsKey(personId))
- relyList = (List)relyMap.get(personId);
- else {
- relyList = new ArrayList();
- }
- relyList.add(personRelyMap);
- relyMap.put(personId, relyList);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- tempMap.put(key, salaryMap);
- tempMap.put(relyKey, relyMap);
- }
-
- private void putSubmitDataToParam(Map paramMap, HashMap tempMap, String calItem, String relyKey)
- {
- String personId = (String)paramMap.get("T_HR_SCMPCALTABLE_FPERSONID");
-
- List relyList = new ArrayList();
-
- Map relyMap = (Map)tempMap.get(relyKey);
- if ((null == relyMap) || (!(relyMap.containsKey(personId)))) {
- return;
- }
-
- if (paramMap.containsKey("SUBMITRELY")) {
- Map paramRelayMap = (Map)paramMap.get("SUBMITRELY");
- if (paramRelayMap.containsKey(calItem)) {
- relyList = (List)paramRelayMap.get(calItem);
- relyList.addAll((Collection)relyMap.get(personId));
- } else {
- paramRelayMap.put(calItem, relyMap.get(personId));
- }
- } else {
- Map paramRelayMap = new HashMap();
- paramRelayMap.put(calItem, relyMap.get(personId));
- paramMap.put("SUBMITRELY", paramRelayMap);
- }
- }
-
- public String getAdminOrgIdFilterSql(String companyNum, boolean haveSubOrg)
- {
- Context ctx = Tools.getInstance().getCtx();
- StringBuffer sqlBuffer = new StringBuffer();
-
- String queryOrg = new StringBuilder().append("SELECT FLONGNUMBER,FID FROM T_ORG_ADMIN WHERE FNUMBER = '").append(companyNum).append("'").toString();
- String companyLongNumber = ""; String adminOrgUnitId = "";
- try
- {
- IRowSet executeQuery = DbUtil.executeQuery(ctx, queryOrg);
- while (executeQuery.next()) {
- companyLongNumber = executeQuery.getString("fLongNumber");
- adminOrgUnitId = executeQuery.getString("fid");
- }
- if (StringUtils.isEmpty(companyLongNumber)) {
- return null;
- }
- if (haveSubOrg)
- sqlBuffer.append(new StringBuilder().append(" FADMINORGUNITID IN (SELECT FID FROM T_ORG_ADMIN WHERE FLONGNUMBER LIKE '").append(companyLongNumber).append("%')").toString());
- else {
- sqlBuffer.append(new StringBuilder().append(" FADMINORGUNITID IN ('").append(adminOrgUnitId).append("')").toString());
- }
- }
- catch (BOSException e)
- {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return sqlBuffer.toString();
- }
-
- public static List<String> getCalShemeTableName(Context ctx, String calSubmitSchemeNum, String calSubmitItemNum)
- {
- List list = new ArrayList();
- String sql = new StringBuilder().append("Select n.FCalShemeTableName, m.fieldSn from T_HR_SCalSubmitScheme e inner join T_HR_SCalShemeTableRelation n on n.FSubmitSchemeID = e.fid inner join T_HR_SCalSubmitSchemeItem sm on sm.FCalSubmitSchemeID = e.fid inner join T_HR_SCalSubmitItem m on m.fid = sm.FCalSubmitItemID where e.FNumber = '").append(calSubmitSchemeNum).append("' and m.FNumber = '").append(calSubmitItemNum).append("' ").toString();
- try
- {
- IRowSet rs = DbUtil.executeQuery(ctx, sql);
- while (rs.next())
- {
- list.add(rs.getString("FCalShemeTableName"));
- list.add(new StringBuilder().append("S").append(rs.getString("fieldSn")).toString());
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return list;
- }
-
- public ArrayList initSubmitSchemeTable(Context ctx, HashMap tempMap, String schemeNumber)
- {
- String key = "CALFUNCTIONINTEGRATESERVICE_SCHEMETABLE_EXT_"+schemeNumber;
- ArrayList list = new ArrayList<String>();
- Map schemeMap = new HashMap();
- if (null == tempMap.get(key)) {
- StringBuilder str = new StringBuilder();
- str.append(" SELECT REL.FCALSHEMETABLENAME PROPERTYTABLE, REL.FBILLENTRYTABLENAME DATATABLE, SCHEME.FNUMBER ");
- str.append(" FROM T_HR_SCALSHEMETABLERELATION REL ");
- str.append(" INNER JOIN T_HR_SCALSUBMITSCHEME SCHEME ON REL.FSUBMITSCHEMEID = SCHEME.FID ");
- str.append(" INNER JOIN T_HR_SCALSUBMITSCHEMEITEM SCHEMEITEM ON SCHEME.FID = SCHEMEITEM.FCALSUBMITSCHEMEID ");
- str.append(" INNER JOIN T_HR_SCALSUBMITITEM ITEM ON ITEM.FID = SCHEMEITEM.FCALSUBMITITEMID ");
- str.append(" where ITEM.fnumber ='"+schemeNumber+"' ");
- logger.error("initSubmitSchemeTable====="+str.toString());
-
- try {
- IRowSet rowSet = DbUtil.executeQuery(ctx, str.toString());
- while (rowSet.next()) {
- schemeMap.put(rowSet.getString("FNUMBER"), rowSet.getString("DATATABLE"));
- list.add(rowSet.getString("DATATABLE"));
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- tempMap.put(key, schemeMap);
- } else {
- schemeMap = (Map)tempMap.get(key);
- }
- return list;
- }
-
- public SubmitElementInfo initElementItem(Context ctx, HashMap tempMap, String elementItemNum)
- {
- String key = "INITELEMENTITEM_SERVICE_SUBMITITEM";
-
- Map itemMap = new HashMap();
- if (null == tempMap.get(key)) {
- SubmitElementCollection itemColl = null;
- try {
- itemColl = SubmitElementFactory.getLocalInstance(ctx).getSubmitElementCollection("select id, number, name ");
- } catch (BOSException e) {
- e.printStackTrace();
- }
- for (int i = 0; i < itemColl.size(); ++i) {
- SubmitElementInfo submitElementInfo = itemColl.get(i);
- itemMap.put(submitElementInfo.getNumber(), submitElementInfo);
- }
- tempMap.put(key, itemMap);
- } else {
- itemMap = (Map)tempMap.get(key);
- }
- SubmitElementInfo submitElementInfo = (SubmitElementInfo)itemMap.get(elementItemNum);
- if (null == submitElementInfo)
- return null;
- return ((SubmitElementInfo)itemMap.get(elementItemNum));
- }
-
- public CalSubmitItemInfo initSubmitItem(Context ctx, HashMap tempMap, String itemNumber)
- {
- String key = "CALFUNCTIONINTEGRATESERVICE_SUBMITITEM_EXT_"+itemNumber;
- String basicItemKey = new StringBuilder().append("CALFUNCTIONINTEGRATESERVICE_SUBMITITEM_").append(itemNumber).toString();
-
- Map itemMap = new HashMap();
- if (null == tempMap.get(key)) {
- CalSubmitItemCollection itemColl = null;
- try {
- itemColl = CalSubmitItemFactory.getLocalInstance(ctx).getCalSubmitItemCollection("select id, fieldSn, number, dateType, dataType,dataDot,filterField.entityName ");
- } catch (BOSException e) {
- e.printStackTrace();
- }
- for (int i = 0; i < itemColl.size(); ++i) {
- CalSubmitItemInfo calSubmitItemInfo = itemColl.get(i);
- itemMap.put(calSubmitItemInfo.getNumber(), calSubmitItemInfo);
- }
- tempMap.put(key, itemMap);
- } else {
- itemMap = (Map)tempMap.get(key);
- }
-
- CalSubmitItemInfo calSubmitItemInfo = (CalSubmitItemInfo)itemMap.get(itemNumber);
- if (null == calSubmitItemInfo)
- return null;
- if ((calSubmitItemInfo.getDataType().equals(CalSubmitItemDataType.F7)) && (null == tempMap.get(basicItemKey))) {
- Map basicItemMap = new HashMap();
- String entityName = calSubmitItemInfo.getFilterField().getEntity();
- MetaDataPK meataDataPk = MetaDataPK.create(entityName);
- EntityObjectInfo entityInfo = MetaDataLoaderFactory.getRemoteMetaDataLoader().getEntity(meataDataPk);
- String tableName = entityInfo.getTable().getName();
- String sql = new StringBuilder().append("SELECT FID, FNUMBER FROM ").append(tableName).toString();
- try {
- IRowSet rowSet = DbUtil.executeQuery(ctx, sql);
- while (rowSet.next()) {
- basicItemMap.put(rowSet.getString("FNUMBER"), new StringBuilder().append(rowSet.getString("FID")).append("###").append(rowSet.getString("FNUMBER")).toString());
- }
-
- basicItemMap.put("TABLENAME", tableName);
- } catch (Exception e) {
- e.printStackTrace();
- }
- tempMap.put(basicItemKey, basicItemMap);
- }
-
- return ((CalSubmitItemInfo)itemMap.get(itemNumber));
- }
-
- public Set<String> initSchemeItem(Context ctx, HashMap tempMap, String schemeNumber)
- {
- String key = "CALFUNCTIONINTEGRATESERVICE_SCHEMEITEM";
-
- Set itemSet = new HashSet();
- Map<String, Set<String>> schemeItemMap = new HashMap<String, Set<String>>();
- if (null == tempMap.get(key)) {
- StringBuilder str = new StringBuilder();
- str.append(" SELECT ITEM.FNUMBER, ITEM.FIELDSN ");
- str.append(" FROM T_HR_SCALSUBMITSCHEME SCHEME ");
- str.append(" INNER JOIN T_HR_SCALSUBMITSCHEMEITEM SCHEMEITEM ON SCHEME.FID = SCHEMEITEM.FCALSUBMITSCHEMEID ");
- str.append(" INNER JOIN T_HR_SCALSUBMITITEM ITEM ON ITEM.FID = SCHEMEITEM.FCALSUBMITITEMID ");
- try {
- IRowSet rowSet = DbUtil.executeQuery(ctx, str.toString());
- while (rowSet.next()) {
- String number = rowSet.getString("FNUMBER");
- if (schemeItemMap.containsKey(number)) {
- ((Set)schemeItemMap.get(number)).add(rowSet.getString("FIELDSN"));
- }
- itemSet = new HashSet();
- itemSet.add(rowSet.getString("FIELDSN"));
- schemeItemMap.put(number, itemSet);
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- schemeItemMap = (Map)tempMap.get(key);
- }
- return schemeItemMap.containsKey(schemeNumber) ? schemeItemMap.get(schemeNumber) : new HashSet<String>();
- }
-
- }
|