Browse Source

Merge branch 'medicare' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into medicare

wangzhinan 3 years ago
parent
commit
ecfa1d3cfa

+ 195 - 69
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/MedicinedeviceService.java

@ -3474,81 +3474,207 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
        String sql = "";
        {
            sql = "SELECT\n" +
                    "\ttmd.id AS id,\n" +
                    "\ttmd.approval_num AS approvalNum,\n" +
                    "\ttmd.barcode AS barcode,\n" +
                    "\ttmd.brand AS brand,\n" +
                    "\ttmd.dos_form AS dosForm,\n" +
                    "\ttmd.state AS state,\n" +
                    "\ttmd.drug_bar_code AS drugBarCode,\n" +
                    "\ttmd.drug_class AS drugClass,\n" +
                    "\ttmd.drug_class_code AS drugClassCode,\n" +
                    "\ttmd.drug_code AS drugCode,\n" +
                    "\ttmd.drug_name AS drugName,\n" +
                    "\ttmd.drug_name_alies AS drugNameAlies,\n" +
                    "\ttmd.drug_short_code AS drugShortCode,\n" +
                    "\ttmd.drug_type_code AS drugTypeCode,\n" +
                    "\ttmd.earlywarningcate AS earlywarningcate,\n" +
                    "\ttmd.inventory AS inventory,\n" +
                    "\ttmd.manufactor AS manufactor,\n" +
                    "\ttmd.med_cabinet AS medCabinet,\n" +
                    "\ttmd.pic AS pic,\n" +
                    "\ttmd.price AS price,\n" +
                    "\ttmd.sale_volume AS saleVolume,\n" +
                    "\ttmd.self_code AS selfCode,\n" +
                    "\ttmd.specif AS specif,\n" +
                    "\ttmd.unit AS unit,\n" +
                    "\ttmd.create_time AS createTime,\n" +
                    "\ttmd.create_user AS createUser,\n" +
                    "\ttmd.create_user_name AS createUserName,\n" +
                    "\ttmd.update_time AS updateTime,\n" +
                    "\ttmd.update_user AS updateUser,\n" +
                    "\ttmd.update_user_name AS updateUserName,\n" +
                    "\ttmd.drug_sku AS drugSku,\n" +
                    "\ttmd.drug_num AS drugNum,\n" +
                    "\ttmd.use_num AS useNum,\n" +
                    "\ttmd.use_way AS useWay,\n" +
                    "\ttmd.use_rate AS useRate,\n" +
                    "\ttmd.use_dose AS useDose,\n" +
                    "\ttmd.use_way_add AS useWayAdd,\n" +
                    "\ttmd.org_code AS orgCode,\n" +
                    "\ttmd.org_name AS orgName,\n" +
                    "\ttmd.quantity_unit AS quantityUnit,\n" +
                    "\ttmd.pack_unit AS packUnit,\n" +
                    "\ttmd.spell_code AS spellCode,\n" +
                    "\tIFNULL( sum( tmi.qty ), 0 ) AS qty,\n" +
                    "\tIFNULL( sum(tmi.rated_inventory), 0) AS ratedInventory,\n" +
                    "\tsum(tmi.rated_inventory) - sum(tmi.qty) AS daibukucun \n" +
                    "\t* \n" +
                    "FROM\n" +
                    "\tt_mediicinecabinet_inventory tmi\n" +
                    "\tLEFT JOIN t_mediicine_drugs tmd ON tmi.drug_id = tmd.id \n" +
                    "\t(\n" +
                    "\tSELECT\n" +
                    "\t\ttmi.equ_num,\n" +
                    "\t\ttmi.drug_code,\n" +
                    "\t\ttmi.org_code,\n" +
                    "\t\ttmd.id AS id,\n" +
                    "\t\ttmd.approval_num AS approvalNum,\n" +
                    "\t\ttmd.barcode AS barcode,\n" +
                    "\t\ttmd.brand AS brand,\n" +
                    "\t\ttmd.dos_form AS dosForm,\n" +
                    "\t\ttmd.state AS state,\n" +
                    "\t\ttmd.drug_bar_code AS drugBarCode,\n" +
                    "\t\ttmd.drug_class AS drugClass,\n" +
                    "\t\ttmd.drug_class_code AS drugClassCode,\n" +
                    "\t\ttmd.drug_code AS drugCode,\n" +
                    "\t\ttmd.drug_name AS drugName,\n" +
                    "\t\ttmd.drug_name_alies AS drugNameAlies,\n" +
                    "\t\ttmd.drug_short_code AS drugShortCode,\n" +
                    "\t\ttmd.drug_type_code AS drugTypeCode,\n" +
                    "\t\ttmd.earlywarningcate AS earlywarningcate,\n" +
                    "\t\ttmd.inventory AS inventory,\n" +
                    "\t\ttmd.manufactor AS manufactor,\n" +
                    "\t\ttmd.med_cabinet AS medCabinet,\n" +
                    "\t\ttmd.pic AS pic,\n" +
                    "\t\ttmd.price AS price,\n" +
                    "\t\ttmd.sale_volume AS saleVolume,\n" +
                    "\t\ttmd.self_code AS selfCode,\n" +
                    "\t\ttmd.specif AS specif,\n" +
                    "\t\ttmd.unit AS unit,\n" +
                    "\t\ttmd.create_time AS createTime,\n" +
                    "\t\ttmd.create_user AS createUser,\n" +
                    "\t\ttmd.create_user_name AS createUserName,\n" +
                    "\t\ttmd.update_time AS updateTime,\n" +
                    "\t\ttmd.update_user AS updateUser,\n" +
                    "\t\ttmd.update_user_name AS updateUserName,\n" +
                    "\t\ttmd.drug_sku AS drugSku,\n" +
                    "\t\ttmd.drug_num AS drugNum,\n" +
                    "\t\ttmd.use_num AS useNum,\n" +
                    "\t\ttmd.use_way AS useWay,\n" +
                    "\t\ttmd.use_rate AS useRate,\n" +
                    "\t\ttmd.use_dose AS useDose,\n" +
                    "\t\ttmd.use_way_add AS useWayAdd,\n" +
                    "\t\ttmd.org_code AS orgCode,\n" +
                    "\t\ttmd.org_name AS orgName,\n" +
                    "\t\ttmd.quantity_unit AS quantityUnit,\n" +
                    "\t\ttmd.pack_unit AS packUnit,\n" +
                    "\t\ttmd.spell_code AS spellCode,\n" +
                    "\t\tifnull( sum( tmi.qty ), 0 ) AS qty,\n" +
                    "\t\tifnull( sum( tmi.rated_inventory ), 0 ) AS ratedInventory,\n" +
                    "\t\tsum( tmi.rated_inventory ) - sum( tmi.qty ) AS daibukucun \n" +
                    "\tFROM\n" +
                    "\t\tt_mediicinecabinet_inventory tmi\n" +
                    "\t\tLEFT JOIN t_mediicine_drugs tmd ON tmi.drug_id = tmd.id \n" +
                    "\tWHERE\n" +
                    "\t\ttmi.id_device = '" + deviceId + "' \n" +
                    "\t\tAND tmi.drug_code IS NOT NULL \n" +
                    "\t\tAND tmi.org_code IS NOT NULL \n" +
                    "\t\tAND ( tmi.state = 1 OR tmi.state = 21 ) \n" +
                    "\tGROUP BY\n" +
                    "\t\ttmi.equ_num,\n" +
                    "\t\ttmi.drug_code,\n" +
                    "\t\ttmi.org_code \n" +
                    "\tHAVING\n" +
                    "\t\tsum( tmi.qty ) < sum( tmi.rated_inventory ) \n" +
                    "\t) AS a \n" +
                    "WHERE\n" +
                    "\ttmi.id_device = '"+ deviceId +"'\n" +
                    "\tAND tmi.drug_code IS NOT NULL \n" +
                    "\tAND tmi.org_code IS NOT NULL \n" +
                    "\tAND ( tmi.state = 1 OR tmi.state = 21 ) \n" +
                    "GROUP BY\n" +
                    "\ttmi.drug_code,\n" +
                    "\ttmi.org_code \n" +
                    "HAVING\n" +
                    "\tsum( tmi.qty ) < sum( tmi.rated_inventory )";
                    "\tEXISTS (\n" +
                    "\tSELECT\n" +
                    "\t\t1 \n" +
                    "\tFROM\n" +
                    "\t\tt_medicine_warray_rule AS b \n" +
                    "\tWHERE\n" +
                    "\t\tb.del = 1 \n" +
                    "\t\tAND a.equ_num = b.equ_num \n" +
                    "\t\tAND b.lower <= a.ratedInventory \n" +
                    "\t\tAND a.ratedInventory <= b.upper \n" +
                    "\t\tAND (\n" +
                    "\t\t\t( b.match_unit = '件' AND a.qty < b.match_value ) \n" +
                    "\t\t\tOR ( b.match_unit = '%' AND a.qty < b.match_value * a.ratedInventory ) \n" +
                    "\t\t) \n" +
                    "\t)";
//            sql = "SELECT\n" +
//                    "\ttmd.id AS id,\n" +
//                    "\ttmd.approval_num AS approvalNum,\n" +
//                    "\ttmd.barcode AS barcode,\n" +
//                    "\ttmd.brand AS brand,\n" +
//                    "\ttmd.dos_form AS dosForm,\n" +
//                    "\ttmd.state AS state,\n" +
//                    "\ttmd.drug_bar_code AS drugBarCode,\n" +
//                    "\ttmd.drug_class AS drugClass,\n" +
//                    "\ttmd.drug_class_code AS drugClassCode,\n" +
//                    "\ttmd.drug_code AS drugCode,\n" +
//                    "\ttmd.drug_name AS drugName,\n" +
//                    "\ttmd.drug_name_alies AS drugNameAlies,\n" +
//                    "\ttmd.drug_short_code AS drugShortCode,\n" +
//                    "\ttmd.drug_type_code AS drugTypeCode,\n" +
//                    "\ttmd.earlywarningcate AS earlywarningcate,\n" +
//                    "\ttmd.inventory AS inventory,\n" +
//                    "\ttmd.manufactor AS manufactor,\n" +
//                    "\ttmd.med_cabinet AS medCabinet,\n" +
//                    "\ttmd.pic AS pic,\n" +
//                    "\ttmd.price AS price,\n" +
//                    "\ttmd.sale_volume AS saleVolume,\n" +
//                    "\ttmd.self_code AS selfCode,\n" +
//                    "\ttmd.specif AS specif,\n" +
//                    "\ttmd.unit AS unit,\n" +
//                    "\ttmd.create_time AS createTime,\n" +
//                    "\ttmd.create_user AS createUser,\n" +
//                    "\ttmd.create_user_name AS createUserName,\n" +
//                    "\ttmd.update_time AS updateTime,\n" +
//                    "\ttmd.update_user AS updateUser,\n" +
//                    "\ttmd.update_user_name AS updateUserName,\n" +
//                    "\ttmd.drug_sku AS drugSku,\n" +
//                    "\ttmd.drug_num AS drugNum,\n" +
//                    "\ttmd.use_num AS useNum,\n" +
//                    "\ttmd.use_way AS useWay,\n" +
//                    "\ttmd.use_rate AS useRate,\n" +
//                    "\ttmd.use_dose AS useDose,\n" +
//                    "\ttmd.use_way_add AS useWayAdd,\n" +
//                    "\ttmd.org_code AS orgCode,\n" +
//                    "\ttmd.org_name AS orgName,\n" +
//                    "\ttmd.quantity_unit AS quantityUnit,\n" +
//                    "\ttmd.pack_unit AS packUnit,\n" +
//                    "\ttmd.spell_code AS spellCode,\n" +
//                    "\tIFNULL( sum( tmi.qty ), 0 ) AS qty,\n" +
//                    "\tIFNULL( sum(tmi.rated_inventory), 0) AS ratedInventory,\n" +
//                    "\tsum(tmi.rated_inventory) - sum(tmi.qty) AS daibukucun \n" +
//                    "FROM\n" +
//                    "\tt_mediicinecabinet_inventory tmi\n" +
//                    "\tLEFT JOIN t_mediicine_drugs tmd ON tmi.drug_id = tmd.id \n" +
//                    "WHERE\n" +
//                    "\ttmi.id_device = '"+ deviceId +"'\n" +
//                    "\tAND tmi.drug_code IS NOT NULL \n" +
//                    "\tAND tmi.org_code IS NOT NULL \n" +
//                    "\tAND ( tmi.state = 1 OR tmi.state = 21 ) \n" +
//                    "GROUP BY\n" +
//                    "\ttmi.drug_code,\n" +
//                    "\ttmi.org_code \n" +
//                    "HAVING\n" +
//                    "\tsum( tmi.qty ) < sum( tmi.rated_inventory )";
        }
        List<Map<String, Object>> list = null;
        list = hibenateUtils.createSQLQuery(sql,page,size);
        String countSql = "select count(1) from (SELECT\n" +
                "COUNT(DISTINCT(id))" +
        String countSql = "SELECT\n" +
                "\tcount(1) \n" +
                "FROM\n" +
                "\tt_mediicinecabinet_inventory\n" +
                "WHERE" +
                "\tid_device = '" + deviceId + "'\n" +
                "AND drug_code IS NOT NULL\n" +
                "AND org_code IS NOT NULL\n" +
                "AND (state = 1 OR state = 21)\n" +
                "GROUP BY\n" +
                "\tdrug_code,\n" +
                "\torg_code \n" +
                "HAVING\n" +
                "\tsum( qty ) < sum( rated_inventory )) as a ";
                "\t(\n" +
                "\tSELECT\n" +
                "\t\ttmi.equ_num,\n" +
                "\t\ttmi.drug_code,\n" +
                "\t\ttmi.org_code,\n" +
                "\t\tifnull( sum( tmi.qty ), 0 ) AS qty,\n" +
                "\t\tifnull( sum( tmi.rated_inventory ), 0 ) AS ratedInventory,\n" +
                "\t\tsum( tmi.rated_inventory ) - sum( tmi.qty ) AS daibukucun \n" +
                "\tFROM\n" +
                "\t\tt_mediicinecabinet_inventory tmi\n" +
                "\t\tLEFT JOIN t_mediicine_drugs tmd ON tmi.drug_id = tmd.id \n" +
                "\tWHERE\n" +
                "\t\ttmi.id_device = '" + deviceId + "' \n" +
                "\t\tAND tmi.drug_code IS NOT NULL \n" +
                "\t\tAND tmi.org_code IS NOT NULL \n" +
                "\t\tAND ( tmi.state = 1 OR tmi.state = 21 ) \n" +
                "\tGROUP BY\n" +
                "\t\ttmi.equ_num,\n" +
                "\t\ttmi.drug_code,\n" +
                "\t\ttmi.org_code \n" +
                "\tHAVING\n" +
                "\t\tsum( tmi.qty ) < sum( tmi.rated_inventory ) \n" +
                "\t) AS a \n" +
                "WHERE\n" +
                "\tEXISTS (\n" +
                "\tSELECT\n" +
                "\t\t1 \n" +
                "\tFROM\n" +
                "\t\tt_medicine_warray_rule AS b \n" +
                "\tWHERE\n" +
                "\t\tb.del = 1 \n" +
                "\t\tAND a.equ_num = b.equ_num \n" +
                "\t\tAND b.lower <= a.ratedInventory \n" +
                "\t\tAND a.ratedInventory <= b.upper \n" +
                "\t\tAND (\n" +
                "\t\t\t( b.match_unit = '件' AND a.qty < b.match_value ) \n" +
                "\t\t\tOR ( b.match_unit = '%' AND a.qty < b.match_value * a.ratedInventory ) \n" +
                "\t\t) \n" +
                "\t)";
//        String countSql = "select count(1) from (SELECT\n" +
//                "COUNT(DISTINCT(id))" +
//                "FROM\n" +
//                "\tt_mediicinecabinet_inventory\n" +
//                "WHERE" +
//                "\tid_device = '" + deviceId + "'\n" +
//                "AND drug_code IS NOT NULL\n" +
//                "AND org_code IS NOT NULL\n" +
//                "AND (state = 1 OR state = 21)\n" +
//                "GROUP BY\n" +
//                "\tdrug_code,\n" +
//                "\torg_code \n" +
//                "HAVING\n" +
//                "\tsum( qty ) < sum( rated_inventory )) as a ";
        Logger.getAnonymousLogger().info("finalCountSql="+countSql);
        int count = jdbcTemplate.queryForObject(countSql,Integer.class);
        if (count == 0) {