前台
service层
@Service("hosdeptStatusService")
@Transactional
public class HosdeptServiceImpl implements HosdeptStatusService {
@Autowired
private HosdeptStatusDAO hosdeptStatisDAO;
/**
* 原生sql实现
*/
@Autowired
private BaseDAO baseDao;
@Override
public List<Map<String, String>> queryNumAndDate(String orgCode) {
String sql="select DEPT_NAME,BUSY_DATE,ORG_CODE,O_NUM from (select DEPT_NAME,BUSY_DATE,ORG_CODE,O_NUM from PHP_MOBILE_HOS_DEPT_STATUS order by BUSY_DATE) where rownum<=7"
+ " and t.ORG_CODE='"+ orgCode + "'"+" order by rownum DESC";
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
List<Map<String, Object>> mapList = baseDao.mapQueryBySql(sql);
for (Map<String, Object> map : mapList){
Map<String, String> mp=new HashMap<String, String>();
mp.put("deptName", map.get("DEPT_NAME").toString());
mp.put("busyDate", map.get("BUSY_DATE").toString());
mp.put("oNum", map.get("O_NUM").toString());
list.add(mp);
}
return list;
}
@Override
public List<Map<String, String>> oldPeopVis(String orgCode) {
// TODO Auto-generated method stub
return null;
}
@Override
public Response queryDeptStaicData(String orgCode) {
String sql="SELECT t.DEPT_NAME FROM PHP_MOBILE_HOS_DEPT_STATUS t where " +" t.ORG_CODE='"+ orgCode + "'" + " and t.DEPT_NAME is not null GROUP BY t.DEPT_NAME";
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
//获得医院的所有科室
List<Map<String, Object>> deptNameList = baseDao.mapQueryBySql(sql);
for (Map<String, Object> map : deptNameList){
Map<String, String> data = new HashMap<String, String>();
//循环获得科室名称
Object DEPT_NAME = map.get("DEPT_NAME");
if(DEPT_NAME != null && !"".equals(DEPT_NAME) && !"null".equals(DEPT_NAME)) {
StringBuffer dateStr = new StringBuffer();//时间
StringBuffer oNumStr = new StringBuffer();//门诊量
String sql1="select DEPT_NAME,BUSY_DATE,ORG_CODE,O_NUM from (select DEPT_NAME,BUSY_DATE,ORG_CODE,O_NUM from PHP_MOBILE_HOS_DEPT_STATUS order by BUSY_DATE) where rownum<=7"
+ " and DEPT_NAME='"+ DEPT_NAME + "'"+" order by rownum DESC";
//通过部门名称获取时间和门诊量
List<Map<String, Object>> dateAndNumList = baseDao.mapQueryBySql(sql1);
if(dateAndNumList != null) {
for (Map<String, Object> map1 : dateAndNumList){
dateStr.append(map1.get("BUSY_DATE").toString()).append(",");
oNumStr.append(map1.get("O_NUM").toString()).append(",");
}
String as1 = dateStr.toString();
String as2 = oNumStr.toString();
data.put("BUSY_DATE", as1.substring(0,as1.length() - 1));
data.put("O_NUM", as2.substring(0,as2.length() - 1));
data.put("DEPT_NAME", DEPT_NAME.toString());
}
list.add(data);
}else {
return new FailedResponse("科室名称为空");
}
}
if(list.size() > 0) {
return new ObjectResponse<List<Map<String, String>>>(list);
}else {
return new FailedResponse("没有取到医院下的科室数据");
}
}
@Override
public Response queryHositoryInfo(String orgCode) {
String sql="SELECT t.ORGANNAME,t.ADDRESS,t.TEL FROM hc_gy_sys.SYS_ORGANIZATION t WHERE "
+" t.ORGANCODE='"+ orgCode + "'" ;
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
//通过医院ID获取医详情信息
List<Map<String, Object>> dateAndNumList = baseDao.mapQueryBySql(sql);
if (dateAndNumList!=null) {
for (Map<String, Object> map : dateAndNumList){
Map<String, String> mp=new HashMap<String, String>();
Object ORGANNAME = map.get("ORGANNAME");
Object ADDRESS = map.get("ADDRESS");
Object TEL = map.get("TEL");
if(ORGANNAME != null && !"".equals(ORGANNAME) && !"null".equals(ORGANNAME)) {
mp.put("organName", ORGANNAME.toString());
}
if(ADDRESS != null && !"".equals(ADDRESS) && !"null".equals(ADDRESS)) {
mp.put("address", ADDRESS.toString());
}
if(TEL != null && !"".equals(TEL) && !"null".equals(TEL)) {
mp.put("tel", TEL.toString());
}
list.add(mp);
}
}else {
return new FailedResponse("没有取到医院数据");
}
if(list.size() > 0) {
return new ObjectResponse<List<Map<String, String>>>(list);
}else {
return new FailedResponse("没有取到医院数据");
}
}
}
baseDao
@SuppressWarnings("unchecked")
@Override
public List<Map<String, Object>> mapQueryBySql(String sql) {
List<Map<String, Object>> list = null;
Session session = null;
try {
session = sessionFactory.openSession();
list = session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
session = null;
}
}
return list;
}
后台js使用:
app.hospital.dept.busy = {
orgCode:"",
open : function(orgCode){
debugger;
app.hospital.dept.busy.orgCode = orgCode;
if(typeof(navigator.connection) != "undefined" && typeof(Connection) != "undefined"){
if(navigator.connection.type == Connection.NONE) {
app.alert('网络连接不稳定,请检查网络后刷新重试。', '网络异常');
} else {
app.viewMain.router.load({url: 'pages/guide/deptBusy.html'});
}
}else{
app.viewMain.router.load({url: 'pages/guide/deptBusy.html'});
}
},
init : function() {
debugger;
//alert(app.hospital.dept.busy.orgCode);
app.api.hospital.queryDeptStaicData({
data : {orgCode : app.hospital.dept.busy.orgCode},
success : function(result) {
debugger;
if (result.responseCode == "0") {
app.alert(result.responseMsg, '错误');
} else {
var datasTemp = result.datas;
for(var i=0; i<datasTemp.length; i++){
var id = "deptEchartsDiv_"+i;
var template = j$("#deptEchartsDivTemplate").clone();
var div = j$(template.html());
div.attr("id",id);
j$("#deptEchartsShowDiv").append(div);
var bd = datasTemp[i].BUSY_DATE;
var onum = datasTemp[i].O_NUM;
var dn = datasTemp[i].DEPT_NAME;
app.hospital.dept.busy.createEcharts(id,dn,bd.split(","),onum.split(","));
}
}
},
error : app.api.error
});
/*app.api.hospital.queryHositoryInfo({
data : {orgCode : app.hospital.dept.busy.orgCode},
success : function(result) {
debugger;
if (result.responseCode == "0") {
app.alert(result.responseMsg, '错误');
} else {
var datasTemp = result.datas;
//alert(datasTemp);
var template = $('#tmpl-hospital-introduction-list').html();
$('#hospital-introduction-list').html($m.tmpl(template, datasTemp));
}
},
error : app.api.error
});*/
},
createEcharts : function(id,name,bd,onum){
var myChart = echarts.init(document.getElementById(id));
var option = {
title: {
text: name
},
legend: {
data:['科室']
},
grid: { // 控制图的大小,调整下面这些值就可以,
x: 40,
x2: 100,
y2: 150,// y2可以控制 X轴跟Zoom控件之间的间隔,避免以为倾斜后造成 label重叠到zoom上
},
xAxis: {
data: bd,
axisLabel:{
/*interval:0,//横轴信息全部显示
rotate:-30,//-30度角倾斜显示*/
formatter:function(val){
return val.split("").join("\n");
}
}
},
series: [{
name: '门诊量',
type: 'bar',
data: onum
}]
};
myChart.setOption(option);
}
};
// 增加医院标注
app.hospital.busy.map.addMarker({
longitude : hdata[i].coord.longitude,
latitude : hdata[i].coord.latitude,
//iconUrl : 'images/icon/hospital/' + hdata[i].busyLevel + '.png',
markerOffset : {
x: width,
y: -30
},
html : '<div class="map-window hospital-busy-marker">'+
'<div><img src="images/icon/hospital/' + hdata[i].busyLevel + '.png" /></div>'+
'<div><span class = "busy-level-img-background-'+hdata[i].busyLevel+'" > '+hdata[i].name+' </span></div>'+
'</div>',
content : '<div class="map-window map-busy">' + '<div class="hospital-name" >' + hdata[i].name
+ '</div>' + departmentStr + '<div class="busy-title" >繁忙程度</div>'
+ '<div class="busy-level-img busy-level-img-background-' + hdata[i].busyLevel + '" >'
+ hdata[i].busyDisply + '</div>' + treatmentStr + '<div onclick="app.hospital.dept.busy.open(\''+hdata[i].orgCode+'\');">查看详情</div></div>'
});
}
}
前台页面
<div data-page="page-hospital-dept-busy" class="page navbar-fixed">
<div class="navbar">
<div class="navbar-inner">
<div class="left">
<a href="#" class="back link icon-only">
<i class="icon icon-back color-white"></i>
</a>
</div>
<div class="center">医院热度详情</div>
<div class="right">
</div>
</div>
</div>
<div class="page-content bg-white">
<div class="list-block media-list" id="hospital-introduction-list">
</div>
<script type="text/html" id="tmpl-hospital-introduction-list">
<!--% for (var i=0; i <o.length; i++) { %-->
<ul>
<li>
<div class="item-inner" >
<div class="item-title">{%=o[i].organName%}</div>
<div class="item-title">{%=o[i].address%}</div>
<div class="item-title">{%=o[i].tel%}</div>
</div>
</li>
</ul>
<!--% } %-->
</script>
</div>
<div class="page-content bg-white" id="deptEchartsShowDiv">
</div>
<div id="deptEchartsDivTemplate">
<div style="width: 100%;height:400px;"></div>
</div>
</div>