|
@ -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) {
|