Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java =================================================================== diff -u -r28579 -r29595 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java (.../ComboTousseManagerImpl.java) (revision 28579) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java (.../ComboTousseManagerImpl.java) (revision 29595) @@ -7,23 +7,33 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseOrgUint; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.tools.Constants; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.ObjectDao; + import net.sf.json.JSONArray; + import org.apache.commons.beanutils.ConvertUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.map.HashedMap; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Map.Entry; /** * @author zhonghaowen @@ -37,7 +47,13 @@ private OrgUnitManager orgUnitManager; private ObjectDao objectDao; + + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private InitDbConnection dbConnection; + public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } @@ -66,6 +82,9 @@ @Override public List> getTousse(String spell) { try { + List columnNames = new ArrayList(); + columnNames.add("tousseDefinitionId"); + columnNames.add("tousseDefinitionName"); StringBuilder builder = new StringBuilder(); builder.append("SELECT td.id AS tousseDefinitionId,td.name AS tousseDefinitionName FROM TousseDefinition td WHERE (td.tousseType = ? OR td.tousseType = ?) AND td.isDisable = ?"); // builder.append(" and not exists (select ctc.id from ComboTousseComposite ctc where td.id = ctc.comboTousseDefinitionId)"); @@ -79,7 +98,35 @@ condition.add("%" + spell + "%"); } } - return objectDao.findSqlByParam(builder.toString(), condition); + /*List> resultMapList = null; + *试了调用下面的api方法,对于oracle数据库map的键名还是全大写,不起作用 + if(condition.size() == 4){ + resultMapList = jdbcTemplate.queryForList(builder.toString(), condition.get(0), condition.get(1), condition.get(2), condition.get(3)); + }else{ + resultMapList = jdbcTemplate.queryForList(builder.toString(), condition.get(0), condition.get(1), condition.get(2)); + }*/ + List> resultMapList = objectDao.findSqlByParam(builder.toString(), condition); + if(CollectionUtils.isNotEmpty(resultMapList)){ + //oracle数据库对map的键名替换为正确大小写的字段名 + if(DatabaseUtil.isOracle(dbConnection.getDatabase())){ + List> oracleResultMapList = new ArrayList>(); + for(Map map : resultMapList){ + Map newMap = new HashMap(); + for(Entry entry : map.entrySet()){ + String key = entry.getKey(); + for(String columnName : columnNames){ + if(!StringUtils.equals(columnName, key) && StringUtils.equalsIgnoreCase(columnName, key)){ + newMap.put(columnName, entry.getValue()); + break; + } + } + } + oracleResultMapList.add(newMap); + } + return oracleResultMapList; + } + } + return resultMapList; } catch (Exception e) { logger.error(e);