Browse Source

sql 查询耗时优化

bing 2 years ago
parent
commit
9c6306b60d

+ 61 - 16
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/MedicinedeviceService.java

@ -6214,10 +6214,55 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
            }
        }
//         List<Map<String, Object>> collect = inventoryDao.selectsomethingBysomeCondition(deviceId, new String[]{"1", "21"});
        List<Map<String, Object>> collect = hibenateUtils.createSQLQuery(sql);
        for (Map<String, Object> stringObjectMap : collect) {
            String tempSql = "SELECT\n" +
//        for (Map<String, Object> stringObjectMap : collect) {
//            String tempSql = "SELECT\n" +
//                    "\ta.id AS id,\n" +
//                    "\ta.id_device AS idDevice,\n" +
//                    "\ta.num AS num,\n" +
//                    "\ta.sku AS sku,\n" +
//                    "\ta.state AS state,\n" +
//                    "\ta.longtime AS longtime,\n" +
//                    "\ta.drug_id AS drugId,\n" +
//                    "\ta.drug_sku AS drugSku,\n" +
//                    "\ta.drug_code AS drugCode,\n" +
//                    "\ta.org_code AS orgCode,\n" +
//                    "\ta.layer_no AS layerNo,\n" +
//                    "\ta.wayer_no AS wayerNo,\n" +
//                    "\ta.qty AS qty,\n" +
//                    "\ta.create_time AS createTime,\n" +
//                    "\ta.create_user AS createUser,\n" +
//                    "\ta.create_user_name AS createUserName,\n" +
//                    "\ta.update_time AS updateTime,\n" +
//                    "\ta.update_user AS updateUser,\n" +
//                    "\ta.update_user_name AS updateUserName,\n" +
//                    "\ta.drug_name AS drugName,\n" +
//                    "\ta.cargo_capacity AS cargoCapacity,\n" +
//                    "\ta.shelf_status AS shelfStatus,\n" +
//                    "\ta.price AS price,\n" +
//                    "\ta.pic AS pic,\n" +
//                    "\ta.equ_num AS equNum,\n" +
//                    "\ta.`merge` AS `merge`,\n" +
//                    "\ta.cargo_state AS cargoState,\n" +
//                    "\ta.fault_state AS faultState,\n" +
//                    "\ta.rated_inventory AS ratedInventory\n" +
//                    "FROM\n" +
//                    "\tt_mediicinecabinet_inventory a\n" +
//                    "WHERE\n" +
//                    "\ta.org_code = '"+stringObjectMap.get("orgCode") + ""+"'\n" +
//                    "AND a.drug_code = '"+stringObjectMap.get("drugCode") + ""+"'\n" +
//                    "AND a.id_device = '"+deviceId+"'\n" +
//                    "AND (a.state = '1' OR a.state = '21')\n" +
//                    "AND a.org_code IS NOT NULL\n" +
//                    "AND a.drug_code IS NOT NULL";
//
//            List<Map<String, Object>> list = hibenateUtils.createSQLQuery(tempSql);
//            stringObjectMap.put("detail", list);
//        }
        Map<String,List<Map<String,Object>>> tmpdrugList = new HashMap<>();
        if (collect.size()>0&&null!=collect.get(0)){
            String tempSql = " SELECT\n" +
                    "\ta.id AS id,\n" +
                    "\ta.id_device AS idDevice,\n" +
                    "\ta.num AS num,\n" +
@ -6250,22 +6295,22 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
                    "FROM\n" +
                    "\tt_mediicinecabinet_inventory a\n" +
                    "WHERE\n" +
                    "\ta.org_code = '"+stringObjectMap.get("orgCode") + ""+"'\n" +
                    "AND a.drug_code = '"+stringObjectMap.get("drugCode") + ""+"'\n" +
                    "\ta.org_code = '"+collect.get(0).get("orgCode")+"'\n" +
                    "\n" +
                    "AND a.id_device = '"+deviceId+"'\n" +
                    "AND (a.state = '1' OR a.state = '21')\n" +
                    "AND a.org_code IS NOT NULL\n" +
                    "AND a.drug_code IS NOT NULL";
            List<Map<String, Object>> list = hibenateUtils.createSQLQuery(tempSql);
//            stringObjectMap.put("detail", inventoryDao.getMediicinecabinetInventoriesByOrgCodeAndDurgCode(
//                    stringObjectMap.get("orgCode") + "",
//                    stringObjectMap.get("drugCode") + "",
//                    deviceId, "1", "21"));
            stringObjectMap.put("detail", list);
                    "AND a.drug_code IS NOT NULL ";
            List<Map<String,Object>> deviceDrugList = hibenateUtils.createSQLQuery(tempSql);
            tmpdrugList =deviceDrugList.size()>0&&null!=deviceDrugList.get(0).get("id")?deviceDrugList.stream().collect(Collectors.groupingBy(e->e.get("drugCode").toString())):new HashMap<>();
        }
        for (Map<String, Object> stringObjectMap : collect) {
            String drugCode = stringObjectMap.get("drugCode").toString();
            if (null!=tmpdrugList.get(drugCode)&&tmpdrugList.get(drugCode).size()>0){
                stringObjectMap.put("detail", tmpdrugList.get(drugCode));
            }else {
                stringObjectMap.put("detail", new ArrayList<>());
            }
        }
        return collect;
    }