关于图表设计和数据获取

一个关于处方的统计
先获取每种处方该年不同月份的数据 通过for 将数据塞到指定月份中 页面展开list 其实不是很难

贴上页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%> 
<!doctype html>
<html lang="en" dir="ltr">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="msapplication-TileColor" content="#0061da">
		<meta name="theme-color" content="#1643a3">
		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="mobile-web-app-capable" content="yes">
		<meta name="HandheldFriendly" content="True">
		<meta name="MobileOptimized" content="320">

		<!-- Title -->
		<title></title>
		<link href="gov\css\dashboard.css" rel="stylesheet">
		<script src="gov\js\citySelect.js"></script>
		<script src="gov\js\jquery-3.2.1.min.js"></script>
		<script src="gov\js\bootstrap.bundle.min.js"></script>
		
		<script src="gov\plugins\echarts\echarts.js"></script>
		<!-- select2 Plugin -->
		<link href="gov\css\select2.min.css" rel="stylesheet">
		<!-- Date Picker Plugin -->
		<link href="gov\css\spectrum.css" rel="stylesheet">
<%--		<script src="gov\js\index1.js"></script>
        <script src="${pageContext.request.contextPath}/sdcc/js/plugins/echarts/echarts-all.js"></script>--%>
		<script src="gov\js\bootstrap.bundle.min.js"></script>
		<!--Select2 js -->
		<script src="gov\js\select2.full.min.js"></script>
		<script src="gov\js\select2.js"></script>
		<style type="text/css">
		
/*	.page-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
    align-items: center;
    margin: 1rem 0rem;
    -ms-flex-wrap: wrap;
    justify-content: space-between;
    padding: 0;
    position: relative;
    min-height: 0px;
    padding-top: 0px;
}
.page-main:after {
    content: "";
    height: 140px;
    background-image: linear-gradient(to left,#9853af,#623AA2);
    position: absolute;
    z-index: -1;
    width: 100%;
    top: 0;
} */
.custom-controls-stacked .custom-control {
    margin-bottom: .25rem;
    float: left;
}
.select2-container {
    width: 11% !important;
}
 table {
      width: calc(100% - 5px);
      overflow-x: scroll;
     white-space: nowrap;
     
   }
   th,td{
   text-align: center;
   }
		</style>
<script type="text/javascript">
 $(function(){
	 loadAll();
	
})

function loadAll(){
		changeYear();
		 searchFun();
}
function changeYear(){
 	var startYear;//起始年份
	var thisYear=new Date().getFullYear();//今年
	//数组添加值
	for(startYear=thisYear-1;startYear<=thisYear+6;startYear++){ 
		if(startYear!=thisYear){
			$("#year").append("<option value='"+startYear+"'>"+startYear+"</option>");
		}else{
			$("#year").append("<option selected value='"+startYear+"'>"+startYear+"</option>");
		}
	}
}
		function cleanFun() {
			$("input").val('');
			$("select").empty();
			 loadAll();
				}
		
		function searchFun(){
			$("#global-loader").css("display","block");
			var url = "businessController.do?nianTableData";
			
			if($("#year").val()  !=null ){
				var year = $("#year").val();
				url += '&year='+year;
			}
			
		    $.ajax({
			type: 'post',
			url: url,
			dataType: 'json',
			success: function(data) {
				$("#global-loader").fadeOut("slow");
			createTable(data.xianList,data.canList,data.menList,data.quitList,data.mlist1);
			}
		});
			}
			
		//创建左侧表格
		function createTable(xianList,canList,menList,quitList,mlist1){
		    var dom = $("#userlist");
		    var totalOrderCount1=0;
		    var totalCostCount1=0;
		    var totalOrderCount2=0;
		    var totalCostCount2=0;
		    var totalOrderCount3=0;
		    var totalCostCount3=0;
		    var totalOrderCount4=0;
		    var totalCostCount4=0;
		    var totalOrderCount5=0;
		    var totalCostCount5=0;
		    
		    dom.empty();//再拼接前一定要清空原来的数据,否者就会累加了
		    //判断数据是否为空,是空的话就什么都不做了
		    if(xianList.length==0){
		        return;
		    }
		    for(var i=1;i<xianList.length+1;i++){
		     totalOrderCount1+=xianList[i-1].num;      
		     totalCostCount1+=xianList[i-1].amount;
		     totalOrderCount2+=canList[i-1].num;      
		     totalCostCount2+=canList[i-1].amount;
		     totalOrderCount3+=menList[i-1].num;      
		     totalCostCount3+=menList[i-1].amount;
		     totalOrderCount4+=quitList[i-1].num;
		     totalCostCount4+=quitList[i-1].amount;
		     totalOrderCount5+=mlist1[i-1].num;      
		     totalCostCount5+=mlist1[i-1].amount;
		     
		     
		        dom.append("<tr><td>"+i+"月</td><td>"+xianList[i-1].num+"</td><td>"+xianList[i-1].amount+"</td><td>"+canList[i-1].num+"</td><td>"+canList[i-1].amount+"</td><td>"+menList[i-1].num+"</td><td>"+menList[i-1].amount+"</td><td>"+quitList[i-1].num+"</td><td>"+quitList[i-1].amount+"</td><td>"+mlist1[i-1].num+"</td><td>"+mlist1[i-1].amount+"</td><td>"+(xianList[i-1].num+quitList[i-1].num+canList[i-1].num+menList[i-1].num+mlist1[i-1].num)+"</td><td>"+(xianList[i-1].amount+quitList[i-1].amount+canList[i-1].amount+menList[i-1].amount+mlist1[i-1].amount)+"</td></tr>");
		    }
		    dom.append("<tr><td>合计</td><td>"+totalOrderCount1+"</td><td>"+totalCostCount1+"</td><td>"+totalOrderCount2+"</td><td>"+totalCostCount2+"</td><td>"+totalOrderCount3+"</td><td>"+totalCostCount3+"</td><td>"+totalOrderCount4+"</td><td>"+totalCostCount4+"</td><td>"+totalOrderCount5+"</td><td>"+totalCostCount5+"</td><td>"+(totalOrderCount4+totalOrderCount1+totalOrderCount2+totalOrderCount3+totalOrderCount5)+"</td><td>"+(totalCostCount4+totalCostCount1+totalCostCount2+totalCostCount3+totalCostCount5)+"</td></tr>");
		   
		}
	
	
	function exportXls() {
		 parent.$.messager.progress({
				title : '提示',
				text : '正在导出数据,请稍后....'
			});
		  $.post('${pageContext.request.contextPath}/businessController.do?exportNianXlsPha', {
				id : 0
			}, function(result) {
				parent.$.messager.progress('close');
				if (result.success) {
					parent.$.messager.show({
						title : '提示',
						msg :  "Excel创建成功!共导出:<strong style='color:red'>"+13+"</strong> 行数据!",
						timeout : 1000 * 5
					});
					window.location.href = "${pageContext.request.contextPath}/downloadFileController.do?download&fileName="+result.msg;
				}else {
					parent.$.messager.show({
						title : '提示',
						msg : result.msg,
						timeout : 1000 * 5
					});
				}
			}, 'JSON'); 
		}

</script>
	</head>
	<body style="overflow-x: hidden;">
	<div id="global-loader"></div>
	<div style="height: 10px;"></div>
						<div class="app-header1 header py-1 d-flex">
					<div class="container-fluid">
										<div class="form-group ">
											<div class="row gutters-xs">
											<label class="form-label"  style="margin-left:35%">年份:</label>
											<select id="year" name="year" class="form-control select2 custom-select"  data-placeholder="选择年份">
											</select>
											
													<div class="btn-list" style="margin-left:15px">
													<a href="javascript:void(0);" class="btn btn-green" onclick="searchFun()">查询</a>
													<a href="javascript:void(0);" class="btn btn-red" onclick="cleanFun()">重置</a>
													</div>
											</div>
										</div>
					</div>
			</div>
<%--		<div class="page">--%>
				<div class="wrapper">
					<div class=" content-area">

						<div class="row ">
							<div class="col-lg-12 col-xl-12 col-md-12" style="padding-left: 1.55rem;padding-right: 1.55rem;">
									<div class="card ">
									 <div class="card-header">
										<h5 class="card-title">处方年度统计表格 </h5>
										<span onclick="exportXls()" class="btn btn-green" style="margin-left: 900px;">导出数据</span>
									</div> 
									<div class="card-body" >
										<div class="table-responsive">
											<table class="table table-striped card-table table-condensed mt-0 table-nowrap border">
												<thead>
													<tr><th rowspan="2" style="align:center;">月份</th><th colspan="2">西医处方</th><th colspan="2">中医处方</th><th colspan="2">检查检验处方</th><th colspan="2">治疗处方</th><th colspan="2">服务处方</th><th colspan="2">合计</th></tr>
												    <tr><th>单量</th><th>金额</th><th>单量</th><th>金额</th><th>单量</th><th>金额</th><th>单量</th><th>金额</th><th>单量</th><th>金额</th><th>单量</th><th>金额</th></tr>
												</thead>
												<tbody id="userlist">
													<tr><td>1月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>2月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>3月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>4月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>5月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>6月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>7月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>8月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>9月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>10月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>11月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>12月</td><td>300</td><td>5000</td><td>300</td><td>5000</td><td>300</td><td>5000</td></tr>
													<tr><td>合计</td><td>36000</td><td>60000</td><td>3600</td><td>60000</td><td>3600</td><td>60000</td></tr>
												 </tbody>
											</table>
										</div>
									</div>
								</div>
							</div>

						</div>
					</div>
				</div>
	</body>
</html>

后台代码

@Override
public Map<String, Object> nianTableData(SearchVo info) {
SessionInfo user=ResourceUtil.getPharmacySessionInfo();
Map<String, Object> data= new HashMap<String, Object>();
SimpleDateFormat sdf= new SimpleDateFormat(“yyyy”);
Calendar cal= Calendar.getInstance();
if(info!=null && info.getYear()!=null && info.getYear()>0){
cal.set(info.getYear(),1,1);
}
String dateStr= sdf.format(cal.getTime());
List xianList1=new ArrayList();
List canList1=new ArrayList();
List menList1=new ArrayList();
List quitList1=new ArrayList();
List mlist1=new ArrayList();
//西医处方
/*String servicesql=" select m.cost_time as costTime ,IFNULL((COUNT(m.id)),0) as num , IFNULL((SUM(m.cost_amount)),0.00) as amount FROM sd_member_consume_log m where m.cost_type=1 and m.cost_time LIKE ‘%"+dateStr+"%’ and m.merchant_id="+user.getMerchantId()+" and (select t.order_state from sd_service_order t where t.id=m.order_id )>4 GROUP BY SUBSTR(m.cost_time FROM 1 FOR 7) “;
*/
String sql1=” select create_time as costTime ,IFNULL((COUNT(id)),0) as num , IFNULL((SUM(prescription_amount)),0.00) as amount from ys_doctor_prescription where order_state>2 and merchant_id="+user.getMerchantId()+" and create_time LIKE ‘%"+dateStr+"%’ and prescription_type=1 GROUP BY SUBSTR(create_time FROM 1 FOR 7)";
List serviceList= this.getListForJdbc(sql1, SdMemberConsumeLogVo.class);
for(int i=1;i<13;i++){
Integer num=0;
Double amount=0.0;
Integer monthNum=0;
Double montyMoney=0.0;
if(serviceList!=null && serviceList.size()>0){
for(SdMemberConsumeLogVo o:serviceList){
if(o.getCostTime()!=null){
String month= o.getCostTime().substring(6, 7);
if(i==Integer.parseInt(month)){
num= o.getNum();
if(o.getAmount()!=null){
amount=o.getAmount();
}
}
}

				}
			}
			SdMemberConsumeLogVo vo= new SdMemberConsumeLogVo();
			vo.setNum(num);
			vo.setAmount(amount);
			xianList1.add(vo);
		}
		//中医处方
		String sql2=" select create_time as costTime ,IFNULL((COUNT(id)),0) as num , IFNULL((SUM(prescription_amount)),0.00) as amount from ys_doctor_prescription where order_state>2 and merchant_id="+user.getMerchantId()+"  and create_time LIKE '%"+dateStr+"%' and   prescription_type=2 GROUP BY SUBSTR(create_time FROM 1 FOR 7)";
		List<SdMemberConsumeLogVo> goodList= this.getListForJdbc(sql2, SdMemberConsumeLogVo.class);
		for(int i=1;i<13;i++){
			Integer num=0;
			Double amount=0.0;
			if(goodList!=null && goodList.size()>0){
				for(SdMemberConsumeLogVo o:goodList){
					if(o.getCostTime()!=null){
						String month = o.getCostTime().substring(6, 7);
						if (i == Integer.parseInt(month)) {
							num = o.getNum();
							if (o.getAmount() != null) {
								amount = o.getAmount();
							}
						}
					}
				}
			}
			SdMemberConsumeLogVo vo= new SdMemberConsumeLogVo();
			vo.setNum(num);
			vo.setAmount(amount);
			canList1.add(vo);
		}
		//检查检验处方
		String sql3=" select create_time as costTime ,IFNULL((COUNT(id)),0) as num , IFNULL((SUM(prescription_amount)),0.00) as amount from ys_doctor_prescription where order_state>2 and  merchant_id="+user.getMerchantId()+"  and create_time LIKE '%"+dateStr+"%' and   prescription_type=3  GROUP BY SUBSTR(create_time FROM 1 FOR 7)";
		List<SdMemberConsumeLogVo> packList= this.getListForJdbc(sql3, SdMemberConsumeLogVo.class);
		for(int i=1;i<13;i++){
			Integer num=0;
			Double amount=0.0;
			if(packList!=null && packList.size()>0){
				for(SdMemberConsumeLogVo o:packList){
					if(o.getCostTime()!=null){
						String month= o.getCostTime().substring(6, 7);
						if(i==Integer.parseInt(month)){
							num= o.getNum();
							if(o.getAmount()!=null){
								amount=o.getAmount();
							}
						}
					}
				}
			}
			SdMemberConsumeLogVo vo= new SdMemberConsumeLogVo();
			vo.setNum(num);
			vo.setAmount(amount);
			menList1.add(vo);
		}
		
		//治疗处方
		String sql4=" select create_time as costTime ,IFNULL((COUNT(id)),0) as num , IFNULL((SUM(prescription_amount)),0.00) as amount from ys_doctor_prescription where order_state>2 and merchant_id="+user.getMerchantId()+"  and create_time LIKE '%"+dateStr+"%' and   prescription_type=4  GROUP BY SUBSTR(create_time FROM 1 FOR 7)";
		List<SdMemberConsumeLogVo> quitList = this.getListForJdbc(sql4,
				SdMemberConsumeLogVo.class);
		for (int i = 1; i < 13; i++) {
			Integer num = 0;
			Double amount = 0.0;
			if (quitList != null && quitList.size() > 0) {
				for (SdMemberConsumeLogVo o : quitList) {
					if(o.getCostTime()!=null){
						String month = o.getCostTime().substring(6, 7);
						if (i == Integer.parseInt(month)) {
							num = o.getNum();
							if (o.getAmount() != null) {
								amount = o.getAmount();
							}
						}
					}
				}
			}
			SdMemberConsumeLogVo vo = new SdMemberConsumeLogVo();
			vo.setNum(num);
			vo.setAmount(amount);
			quitList1.add(vo);
		}
		//服务处方
		String sql5=" select create_time as costTime ,IFNULL((COUNT(id)),0) as num , IFNULL((SUM(prescription_amount)),0.00) as amount from ys_doctor_prescription where order_state>2 and merchant_id="+user.getMerchantId()+"  and create_time LIKE '%"+dateStr+"%' and   prescription_type=5  GROUP BY SUBSTR(create_time FROM 1 FOR 7)";
		List<SdMemberConsumeLogVo> mlist = this.getListForJdbc(sql5,
				SdMemberConsumeLogVo.class);
		for (int i = 1; i < 13; i++) {
			Integer num = 0;
			Double amount = 0.0;
			if (mlist != null && mlist.size() > 0) {
				for (SdMemberConsumeLogVo o : mlist) {
					if(o.getCostTime()!=null){
						String month = o.getCostTime().substring(6, 7);
						if (i == Integer.parseInt(month)) {
							num = o.getNum();
							if (o.getAmount() != null) {
								amount = o.getAmount();
							}
						}
					}
				}
			}
			SdMemberConsumeLogVo vo = new SdMemberConsumeLogVo();
			vo.setNum(num);
			vo.setAmount(amount);
			mlist1.add(vo);
		}		
		data.put("xianList", xianList1);
		data.put("canList", canList1);
		data.put("menList", menList1);
		data.put("quitList", quitList1);
		data.put("mlist1", mlist1);
		return data;
	}

实体字段
private String costTime;
private Integer num;
private Double amount;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值