先获取每种处方该年不同月份的数据 通过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;