0% found this document useful (0 votes)
65 views62 pages

Revenue Query API Implementation

Uploaded by

qq626732323
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views62 pages

Revenue Query API Implementation

Uploaded by

qq626732323
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1

数据统计模块

收支统计
接口列表

序号 接口名称 接口地址 请求类型

1 根据日期范围查询收支情况 /statistics/revenue/queryAllRevenueData get

查询收支情况
接口参数

参数名称 是否必须

beginTime 否

endTime 否

queryDate 否

返回JSON数据
2
名称 类型 其他信息

msg String

code int

data object

├─ revenueObj object

├─ overview object 概况

├─ toll int 总收入

├─ refund int 总退费

├─ channel object 收费渠道

├─ alipayRefund int 支付宝退费金额

├─ cashRefund int 现金退费金额

├─ cashIncome int 现金收费额

├─ alipayIncome int 支付宝收费额

├─ totalRevenue int 合计收入=总收入-总退费

├─ incomeChannel object 收入渠道

├─ data object [] item 类型: object

├─ name String 渠道名称

├─ value int 收费次数

├─ title String 收入渠道

├─ revenueOverview object 声明图表的数据

├─ data object [] item 类型: object

├─ name String 收费金额、退费金额

├─ value int xxx元

├─ title String 收支概况

├─ refund object 退款金额和渠道

├─ data object [] item 类型: object

├─ name String 现金退费、支付宝退费

├─ value int xxx元

├─ title String 退款
3
接口实现

创建实体类

收支查询Dto、Income、Refund

package [Link];

import ...

@ApiModel(value="com-bjsxt-dto-
RevenueQueryDto")
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class RevenueQueryDto extends BaseDto {
private String queryDate;
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class Income extends BaseEntity {

private Double orderAmount; //收费总额度


4

private String payType;//收费类型


}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

/**
*
*/
@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class Refund extends BaseEntity {

private Double backAmount; //退费额度

private String backType; //退费类型


}

创建映射类

package [Link];

import ...

public interface RevenueMapper {


/**
5
* 查询收入的数据
*
* @param revenueQueryDto
* @return
*/
List<Income> queryIncome(@Param("revenue")
RevenueQueryDto revenueQueryDto);

/**
* 查询退费的数据
*
* @param revenueQueryDto
* @return
*/
List<Refund> queryRefund(@Param("revenue")
RevenueQueryDto revenueQueryDto);
}

创建[Link]

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE mapper PUBLIC "-//[Link]//DTD
Mapper 3.0//EN"
"[Link]
<mapper
namespace="[Link]">
<resultMap id="IncomeBaseResultMap"
type="[Link]">
<result column="order_amount"
property="orderAmount" />
<result column="pay_type"
property="payType" />
</resultMap>
6
<resultMap id="RefundBaseResultMap"
type="[Link]">
<result column="back_amount"
property="backAmount" />
<result column="back_type"
property="backType" />
</resultMap>
<sql id="Income_Base_Column_List">
order_amount, pay_type
</sql>
<sql id="Refund_Base_Column_List">
back_amount, back_type
</sql>

<!--查询收入-->
<select id="queryIncome"
resultMap="IncomeBaseResultMap">
select
<include refid="Income_Base_Column_List">
</include>
from his_order_charge
<where>
order_status='1'
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
</if>
<if test="[Link]!=null">
and create_time>=#
{[Link]}
</if>
7
<if test="[Link]!=null">
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
</select>
<!--查询退费的-->
<select id="queryRefund"
resultMap="RefundBaseResultMap">
select <include
refid="Refund_Base_Column_List"></include>
from his_order_backfee
<where>
back_status='1'
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
</if>
<if test="[Link]!=null">
and create_time>=#
{[Link]}
</if>
<if test="[Link]!=null">
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
</select>
</mapper>
8
创建接口类

package [Link];

import [Link];

import [Link];

public interface RevenueService {


/**
* 查询收支统计的数据
* @param revenueQueryDto
* @return
*/
Map<String, Object>
queryAllRevenueData(RevenueQueryDto
revenueQueryDto);
}

package [Link];

import ...

@Service
public class RevenueServiceImpl implements
RevenueService {

@Autowired
private RevenueMapper revenueMapper;

@Override
9
public Map<String, Object>
queryAllRevenueData(RevenueQueryDto
revenueQueryDto) {
//最后的返回对象
Map<String,Object> map=new HashMap<>();

//查询收入的
List<Income>
incomes=[Link](revenueQ
ueryDto);
//查询退费的
List<Refund>
refunds=[Link](revenueQ
ueryDto);

//声明需要的数据对象
Double totalRevenue=0.00; //合计收入
Double toll=0.00;//总收入
Double refund=0.00;//总退费
Double cashIncome=0.00;//现金支付
Double alipayIncome=0.00;//支付宝支付
Double cashRefund=0.00;//现金退费
Double alipayRefund=0.00;//支付宝退费
Integer incomeChanelCash=0;//现金收取次数
Integer incomeChanelAlipay=0;//支付宝收取
的次数
for (Income income : incomes) {
toll+=[Link]();

if([Link]().equals(Constants.PAY_TY
PE_0)){//现金
10

cashIncome+=[Link]();
incomeChanelCash++;
}else
if([Link]().equals(Constants.PAY_TYP
E_1)){//支付宝

alipayIncome+=[Link]();
incomeChanelAlipay++;
}
}
for (Refund refund1 : refunds) {
refund+=[Link]();

if([Link]().equals(Constants.PAY_
TYPE_0)){//现金退费

cashRefund+=[Link]();
}else
if([Link]().equals(Constants.PAY_T
YPE_1)){//支付宝退费

alipayRefund+=[Link]();
}
}
//计算合计收入=总收入-总退费
totalRevenue=toll-refund;
Map<String,Object> revenueObj=new
HashMap<>();

[Link]("totalRevenue",totalRevenue);
11
Map<String,Object> overview=new
HashMap<>();
[Link]("toll",toll);
[Link]("refund",refund);

Map<String,Object> channel=new
HashMap<>();
[Link]("cashIncome",cashIncome);

[Link]("alipayIncome",alipayIncome);
[Link]("cashRefund",cashRefund);

[Link]("alipayRefund",alipayRefund);

[Link]("overview",overview);
[Link]("channel",channel);
[Link]("revenueObj",revenueObj);

/*******收支概况***************/
Map<String,Object> revenueOverview =new
HashMap<>();
[Link]("title","收支概况");
List<Map<String,Object>>
revenueOverviewData=new ArrayList<>();
Map<String,Object>
revenueOverviewData1=new HashMap<>();
[Link]("name","收费金
额");
[Link]("value",toll);
Map<String,Object>
revenueOverviewData2=new HashMap<>();
12
[Link]("name","退费金
额");

[Link]("value",refund);

[Link](revenueOverviewData1);

[Link](revenueOverviewData2);

[Link]("data",revenueOverviewData
);
//放到返回的map里面

[Link]("revenueOverview",revenueOverview);

/*******收入渠道***************/
Map<String,Object> incomeChanel =new
HashMap<>();
[Link]("title","收入渠道");
List<Map<String,Object>>
incomeChanelData=new ArrayList<>();
Map<String,Object>
incomeChanelData1=new HashMap<>();
[Link]("name","现金笔
数");

[Link]("value",incomeChanelCash
);
Map<String,Object>
incomeChanelData2=new HashMap<>();
[Link]("name","支付宝笔
数");
13

[Link]("value",incomeChanelAlip
ay);

[Link](incomeChanelData1);

[Link](incomeChanelData2);

[Link]("data",incomeChanelData);
//放到返回的map里面
[Link]("incomeChanel",incomeChanel);

/*******退款金额和渠道***************/
Map<String,Object> refundMap =new
HashMap<>();
[Link]("title","退款");
List<Map<String,Object>>
refundMapData=new ArrayList<>();
Map<String,Object> refundMapData1=new
HashMap<>();
[Link]("name","现金退款");
[Link]("value",cashRefund);
Map<String,Object> refundMapData2=new
HashMap<>();
[Link]("name","支付宝退款");

[Link]("value",alipayRefund);
[Link](refundMapData1);
[Link](refundMapData2);
[Link]("data",refundMapData);
//放到返回的map里面
[Link]("refund",refundMap);
14
return map;
}
}

创建controller

package [Link];

import ...

/**
* 收支统计控制器
*/
@RestController
@RequestMapping("statistics/revenue")
public class RevenueController {

@Reference
private RevenueService revenueService;

@GetMapping("queryAllRevenueData")
public AjaxResult
queryAllRevenueData(RevenueQueryDto
revenueQueryDto){
//如果没有选择开始日期和结果日期,就查询当天的
数据

if([Link]()==null){

[Link]([Link](D
[Link](),"yyyy-MM-dd"));
}
15
Map<String,Object>
res=[Link](rev
enueQueryDto);
return [Link](res);
}
}

接口测试

根据日期范围查询收支情
况/statistics/revenue/queryAllRevenueData

药品销售统计
接口列表

序号 接口名称 接口地址 请求类型

1 药品销售统计 /statistics/drug/queryDrug get

2 发药数量统计 /statistics/drug/queryDrugStat get

药品销售统计
接口参数

参数名称 是否必须

beginTime 否

endTime 否

返回JSON数据
16
名称 类型 其他信息

msg String

code int

data object [] item 类型: object

├─ medicinesId String

├─ medicinesName String

├─ num int

├─ price int

├─ amount int

├─ createTime String

接口实现

创建实体类

创建Drug、DrugQueryDto、DrugStat

package [Link];

import ...

@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class Drug extends BaseEntity {
/**
* 药品id
*/
private String medicinesId;

/**
* 药品名
*/
private String medicinesName;
17

/**
* 订单数量
*/
private BigDecimal num;

/**
* 单价
*/
private BigDecimal price;

/**
* 金额
*/
private BigDecimal amount;

/**
* 创建时间
*/
private Date createTime;
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

@ApiModel(value="com-bjsxt-dto-DrugQueryDto")
@Data
18
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class DrugQueryDto extends BaseDto{

private String drugName;

private String queryDate;


}

package [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class DrugStat extends BaseEntity {
/**
* 药品id
*/
private String medicinesId;

/**
* 药品名
*/
private String medicinesName;
19

/**
* 金额
*/
private BigDecimal totalAmount;

/**
* 销售数量
*/
private BigDecimal count;
}

创建映射类

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

public interface DrugMapper {


/**
* 药品统计列表
*
* @param drugQueryDto
* @return
*/
List<Drug> queryDrug(@Param("drug")
DrugQueryDto drugQueryDto);
20
/**
* 药品数量统计列表
*
* @param drugQueryDto
* @return
*/
List<DrugStat> queryDrugStat(@Param("drug")
DrugQueryDto drugQueryDto);
}

创建[Link]

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE mapper PUBLIC "-//[Link]//DTD
Mapper 3.0//EN"
"[Link]
<mapper
namespace="[Link]">
<resultMap id="DrugBaseResultMap"
type="[Link]">
<result column="item_ref_id"
property="medicinesId" />
<result column="item_name"
property="medicinesName" />
<result column="price" property="price" />
<result column="amount" property="amount"
/>
<result column="num" property="num" />
<result column="create_time"
property="createTime" />
</resultMap>
<resultMap id="DrugStatBaseResultMap"
type="[Link]">
21
<result column="item_ref_id"
property="medicinesId" />
<result column="item_name"
property="medicinesName" />
<result column="total_amount"
property="totalAmount" />
<result column="count" property="count" />
</resultMap>
<sql id="Drug_Base_Column_List">
item_ref_id,
item_name,price,amount,num,create_time
</sql>
<sql id="DrugStat_Base_Column_List">
item_ref_id, item_name,total_amount,`count`
</sql>
<!--药品统计列表-->
<select id="queryDrug"
resultMap="DrugBaseResultMap">
select <include
refid="Drug_Base_Column_List"></include>
from his_care_order_item
<where>
status='3' and item_type='0'
<if test="[Link]!=null and
[Link]!=''">
and item_name like concat("%",#
{[Link]},"%")
</if>
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
22
</if>
<if test="[Link]!=null">
and create_time>=#{[Link]}
</if>
<if test="[Link]!=null">
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
</select>
<!--药品数量统计列表-->
<select id="queryDrugStat"
resultMap="DrugStatBaseResultMap">
select item_ref_id,item_name,count(1) as
'count',sum(amount) as total_amount
from his_care_order_item
<where>
status='3' and item_type='0'
<if test="[Link]!=null and
[Link]!=''">
and item_name like concat("%",#
{[Link]},"%")
</if>
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
</if>
<if test="[Link]!=null">
and create_time>=#{[Link]}
</if>
<if test="[Link]!=null">
23
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
group by item_ref_id,item_name
</select>
</mapper>

创建接口类

package [Link];

import [Link];
import [Link];
import [Link];

import [Link];

public interface DrugService {


/**
* 查询发药统计列表
* @param drugQueryDto
* @return
*/
List<Drug> queryDrug(DrugQueryDto
drugQueryDto);

/**
* 查询发药数量统计列表
* @param drugQueryDto
* @return
*/
24
List<DrugStat> queryDrugStat(DrugQueryDto
drugQueryDto);
}

package [Link];

import ...

@Service
public class DrugServiceImpl implements
DrugService {

@Autowired
private DrugMapper drugMapper;

@Override
public List<Drug> queryDrug(DrugQueryDto
drugQueryDto) {
return
[Link](drugQueryDto);
}

@Override
public List<DrugStat>
queryDrugStat(DrugQueryDto drugQueryDto) {
return
[Link](drugQueryDto);
}
}
25
创建controller

package [Link];

import ...

/**
* 药品销售统计控制器
*/
@RestController
@RequestMapping("statistics/drug")
public class StatDrugController {

@Reference
private DrugService drugService;

/**
* 查询发药统计列表
*/
@GetMapping("queryDrug")
public AjaxResult queryDrug(DrugQueryDto
drugQueryDto){
if([Link]()==null){

[Link]([Link](Date
[Link](),"yyyy-MM-dd"));
}
List<Drug>
drugList=[Link](drugQueryDt
o);
return [Link](drugList);
}
26
/**
* 查询发药数量统计列表
*/
@GetMapping("queryDrugStat")
public AjaxResult
queryDrugStat(DrugQueryDto drugQueryDto){
if([Link]()==null){

[Link]([Link](Date
[Link](),"yyyy-MM-dd"));
}
List<DrugStat>
drugList=[Link](drugQue
ryDto);
return [Link](drugList);
}
}

接口测试

药品销售统计/statistics/drug/queryDrug

发药数量统计
接口参数

参数名称 是否必须

beginTime 否

endTime 否

queryDate 否
27
返回JSON数据

名称 类型 其他信息

msg String

code int

data object [] item 类型: object

├─ medicinesId String

├─ medicinesName String

├─ totalAmount int

├─ count int

接口实现

修改接口类

public interface DrugService {


/**
* 查询发药统计列表
* @param drugQueryDto
* @return
*/
List<Drug> queryDrug(DrugQueryDto
drugQueryDto);

/**
* 查询发药数量统计列表
* @param drugQueryDto
* @return
*/
List<DrugStat> queryDrugStat(DrugQueryDto
drugQueryDto);
}

@Service
28
public class DrugServiceImpl implements
DrugService {

@Autowired
private DrugMapper drugMapper;

@Override
public List<Drug> queryDrug(DrugQueryDto
drugQueryDto) {
return
[Link](drugQueryDto);
}

@Override
public List<DrugStat>
queryDrugStat(DrugQueryDto drugQueryDto) {
return
[Link](drugQueryDto);
}
}

修改controller

/**
* @Author:
* 药品销售统计控制器
*/
@RestController
@RequestMapping("statistics/drug")
public class StatDrugController {

@Reference
29
private DrugService drugService;

/**
* 查询发药统计列表
*/
@GetMapping("queryDrug")
public AjaxResult queryDrug(DrugQueryDto
drugQueryDto){
if([Link]()==null){

[Link]([Link](Date
[Link](),"yyyy-MM-dd"));
}
List<Drug>
drugList=[Link](drugQueryDt
o);
return [Link](drugList);
}

/**
* 查询发药数量统计列表
*/
@GetMapping("queryDrugStat")
public AjaxResult
queryDrugStat(DrugQueryDto drugQueryDto){
if([Link]()==null){

[Link]([Link](Date
[Link](),"yyyy-MM-dd"));
}
30
List<DrugStat>
drugList=[Link](drugQue
ryDto);
return [Link](drugList);
}
}

接口测试

发药数量统计 /statistics/drug/queryDrugStat,图片

检查项目统计
接口列表

序号 接口名称 接口地址 请求类型

1 检查项目列表 /statistics/check/queryCheck get

2 检查项目统计 /statistics/check/queryCheckStat get

检查项目列表
接口参数

参数名称 是否必须

beginTime 否

endTime 否

返回JSON数据
31
名称 类型 其他信息

msg String

code int

data object [] item 类型: object

├─ checkItemId int

├─ checkItemName String

├─ price int

├─ patientId String

├─ patientName String

├─ resultStatus String

├─ createTime String

├─ createBy String

接口实现

创建实体类

创建Check、CheckDto、CheckStat

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];

@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class Check extends BaseEntity {
32
/**
* 检查项目ID
*/
private Long checkItemId;

/**
* 检查项目名称
*/
private String checkItemName;

/**
* 项目价格
*/
private BigDecimal price;

/**
* 患者ID
*/
private String patientId;

/**
* 患者姓名
*/
private String patientName;

/**
* 是否录入检查结果0 否 1是
*/
private String resultStatus;

/**
* 创建时间
33
*/
private Date createTime;

/**
* 创建者
*/
private String createBy;
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

@ApiModel(value="com-bjsxt-dto-CheckQueryDto")
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class CheckQueryDto extends BaseDto{

private String patientName;

private String checkItemId;

private String queryDate;


}

package [Link];
34
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class CheckStat extends BaseEntity {
/**
* 检查项目ID
*/
private Long checkItemId;

/**
* 检查项目名称
*/
private String checkItemName;

/**
* 项目总价
*/
private BigDecimal totalAmount;

/**
* 检查次数
*/
private Integer count;
}
35
创建映射类

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

/**
*
*/
public interface CheckMapper {
/**
* 查询检查项列表
*
* @param checkQueryDto
* @return
*/
List<Check> queryCheck(@Param("check")
CheckQueryDto checkQueryDto);

/**
* 查询检查项统计列表
*
* @param checkQueryDto
* @return
*/
List<CheckStat>
queryCheckStat(@Param("check") CheckQueryDto
checkQueryDto);
36
}

[Link]

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE mapper PUBLIC "-//[Link]//DTD
Mapper 3.0//EN"
"[Link]
<mapper
namespace="[Link]">
<resultMap id="CheckBaseResultMap"
type="[Link]">
<result column="check_item_id"
property="checkItemId" />
<result column="check_item_name"
property="checkItemName" />
<result column="price" property="price" />
<result column="patient_id"
property="patientId" />
<result column="patient_name"
property="patientName" />
<result column="result_status"
property="resultStatus" />
<result column="create_time"
property="createTime" />
<result column="create_by"
property="createBy" />
</resultMap>
<resultMap id="CheckStatBaseResultMap"
type="[Link]">
<result column="check_item_id"
property="checkItemId" />
37
<result column="check_item_name"
property="checkItemName" />
<result column="total_amount"
property="totalAmount" />
<result column="count" property="count" />
</resultMap>
<sql id="Check_Base_Column_List">
check_item_id,
check_item_name,patient_id,patient_name,price,r
esult_status,create_time,create_by
</sql>
<sql id="CheckStat_Base_Column_List">
check_item_id,
check_item_name,total_amount,`count`
</sql>
<!--检查项目统计列表-->
<select id="queryCheck"
resultMap="CheckBaseResultMap">
select <include
refid="Check_Base_Column_List"></include>
from his_check_result
<where>
<if test="[Link]!=null and
[Link]!=''">
and check_item_id =#{[Link]}
</if>
<if test="[Link]!=null and
[Link]!=''">
and patient_name like concat("%",#
{[Link]},"%")
</if>
38
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
</if>
<if test="[Link]!=null">
and create_time>=#{[Link]}
</if>
<if test="[Link]!=null">
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
</select>
<!--检查项目数量统计列表-->
<select id="queryCheckStat"
resultMap="CheckStatBaseResultMap">
select
check_item_id,check_item_name,count(1) as
'count',sum(price) as total_amount
from his_check_result
<where>
<if test="[Link]!=null and
[Link]!=''">
and check_item_id =#{[Link]}
</if>
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
</if>
<if test="[Link]!=null">
39
and create_time>=#{[Link]}
</if>
<if test="[Link]!=null">
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
group by check_item_id,check_item_name
</select>
</mapper>

创建接口类

package [Link];

import [Link];
import [Link];
import [Link];

import [Link];

/**
*
*/
public interface CheckService {
/**
* 查询检查项列表
* @param checkQueryDto
* @return
*/
List<Check> queryCheck(CheckQueryDto
checkQueryDto);
}
40
package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import
[Link];
import
[Link]
towired;

import [Link];

@Service
public class CheckServiceImpl implements
CheckService {
@Autowired
private CheckMapper checkMapper;

@Override
public List<Check> queryCheck(CheckQueryDto
checkQueryDto) {
return
[Link](checkQueryDto);
}
}

创建controller

package [Link];
41
import ...

/**
*
* 药品销售统计控制器
*/
@RestController
@RequestMapping("statistics/check")
public class StatCheckController {

@Reference
private CheckService checkService;

/**
* 查询检查项列表
*/
@GetMapping("queryCheck")
public AjaxResult queryCheck(CheckQueryDto
checkQueryDto){
if([Link]()==null){

[Link]([Link](Dat
[Link](),"yyyy-MM-dd"));
}
List<Check>
checkList=[Link](checkQue
ryDto);
return [Link](checkList);
}
}
42
接口测试

检查项目列表/statistics/check/queryCheck

检查项目统计
接口参数

参数名称 是否必须

beginTime 否

endTime 否

返回JSON

名称 类型 其他信息

msg String

code int

data object [] item 类型: object

├─ checkItemId int

├─ checkItemName String

├─ totalAmount int

├─ count int

接口实现

创建实体类

创建Check、CheckDto、CheckStat
创建映射类

创建[Link]
43
修改接口类

package [Link];

import [Link];
import [Link];
import [Link];

import [Link];

/**
*
*/
public interface CheckService {
/**
* 查询检查项列表
* @param checkQueryDto
* @return
*/
List<Check> queryCheck(CheckQueryDto
checkQueryDto);

/**
* 查询检查项统计列表
* @param checkQueryDto
* @return
*/
List<CheckStat>
queryCheckStat(CheckQueryDto checkQueryDto);
}

package [Link];
44
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import
[Link];
import
[Link]
towired;

import [Link];

@Service
public class CheckServiceImpl implements
CheckService {
@Autowired
private CheckMapper checkMapper;

@Override
public List<Check> queryCheck(CheckQueryDto
checkQueryDto) {
return
[Link](checkQueryDto);
}

@Override
public List<CheckStat>
queryCheckStat(CheckQueryDto checkQueryDto) {
return
[Link](checkQueryDto);
}
45
}

修改controller

package [Link];

import ...

/**
*
* 药品销售统计控制器
*/
@RestController
@RequestMapping("statistics/check")
public class StatCheckController {

@Reference
private CheckService checkService;

/**
* 查询检查项列表
*/
@GetMapping("queryCheck")
public AjaxResult queryCheck(CheckQueryDto
checkQueryDto){
if([Link]()==null){

[Link]([Link](Dat
[Link](),"yyyy-MM-dd"));
}
List<Check>
checkList=[Link](checkQue
ryDto);
46
return [Link](checkList);
}

/**
* 查询检查项统计列表
*/
@GetMapping("queryCheckStat")
public AjaxResult
queryCheckStat(CheckQueryDto checkQueryDto){
if([Link]()==null){

[Link]([Link](Dat
[Link](),"yyyy-MM-dd"));
}
List<CheckStat>
checkList=[Link](chec
kQueryDto);
return [Link](checkList);
}
}

接口测试

检查项目统计/statistics/check/queryCheckStat
47
工作量统计
接口列表

序号 接口名称 接口地址 请求类型

1 医生工作量统计 /statistics/workload/queryWorkload get

2 总体工作量统计 /statistics/workload/queryWorkloadStat get

医生工作量统计
接口参数

参数名称 是否必须

beginTime 否

endTime 否

返回JSON数据

名称 类型 其他信息

msg String

code int

data object [] item 类型: object

├─ regId String

├─ userId String

├─ doctorName String

├─ regAmount int

├─ patientName String

├─ visitDate String

接口实现

创建实体类

创建Workload、WorkloadQueryDto、WorkloadStat

package [Link];

import [Link];
import [Link];
import [Link];
48
import [Link];

import [Link];
import [Link];

@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class Workload extends BaseEntity {

private String regId;


private String userId;
private String doctorName;
private BigDecimal regAmount;
private String patientName;
private Date visitDate;
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

/**
*
*/
@ApiModel(value="com-bjsxt-dto-
WorkloadQueryDto")
49
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class WorkloadQueryDto extends BaseDto{

private String doctorName;

private String queryDate;


}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
public class WorkloadStat extends BaseEntity {

private String userId;


private String doctorName;
private BigDecimal totalAmount;
private Long count;
}
50
创建映射类

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

/**
*
*/
public interface WorkloadMapper {
/**
* 医生工作量统计列表
*
* @param workloadQueryDto
* @return
*/
List<Workload>
queryWorkload(@Param("workload")
WorkloadQueryDto workloadQueryDto);
}

[Link]

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE mapper PUBLIC "-//[Link]//DTD
Mapper 3.0//EN"
"[Link]
51
<mapper
namespace="[Link]">
<resultMap id="WorkloadBaseResultMap"
type="[Link]">
<result column="registration_id"
property="regId" />
<result column="user_id" property="userId"
/>
<result column="doctor_name"
property="doctorName" />
<result column="registration_amount"
property="regAmount" />
<result column="patient_name"
property="patientName" />
<result column="visit_date"
property="visitDate" />
</resultMap>
<resultMap id="WorkloadStatBaseResultMap"
type="[Link]">
<result column="user_id" property="userId"
/>
<result column="doctor_name"
property="doctorName" />
<result column="total_amount"
property="totalAmount" />
<result column="count" property="count" />
</resultMap>
<sql id="Workload_Base_Column_List">
registration_id,
user_id,doctor_name,registration_amount,patient
_name,visit_date
</sql>
52
<sql id="WorkloadStat_Base_Column_List">
user_id, doctor_name,total_amount,`count`
</sql>
<!--药品统计列表-->
<select id="queryWorkload"
resultMap="WorkloadBaseResultMap">
select <include
refid="Workload_Base_Column_List"></include>
from his_registration
<where>
(registration_status='2'or
registration_status='3')
<if test="[Link]!=null and
[Link]!=''">
and doctor_name like concat("%",#
{[Link]},"%")
</if>
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
</if>
<if test="[Link]!=null">
and create_time>=#
{[Link]}
</if>
<if test="[Link]!=null">
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
</select>
53

<!--药品数量统计列表-->
<select id="queryWorkloadStat"
resultMap="WorkloadStatBaseResultMap">
select user_id,doctor_name,count(1) as
'count',sum(registration_amount) as
total_amount
from his_registration
<where>
(registration_status='2'or
registration_status='3')
<if test="[Link]!=null and
[Link]!=''">
and doctor_name like concat("%",#
{[Link]},"%")
</if>
<if test="[Link]!=null and
[Link]!=''">
and date_format(create_time,'%Y-%m-
%d') =#{[Link]}
</if>
<if test="[Link]!=null">
and create_time>=#
{[Link]}
</if>
<if test="[Link]!=null">
and create_time <![CDATA[<=]]>
#{[Link]}
</if>
</where>
group by user_id,doctor_name
</select>
54
</mapper>

创建接口类

package [Link];

import [Link];
import [Link];
import [Link];

import [Link];

/**
*
*/
public interface WorkloadService {
/**
* 医生工作量统计列表
* @param workloadQueryDto
* @return
*/
List<Workload>
queryWorkload(WorkloadQueryDto
workloadQueryDto);
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
55
import
[Link];
import
[Link]
towired;
import
[Link]
sactional;

import [Link];

/**
*
*/
@Service
public class WorkloadServiceImpl implements
WorkloadService {

@Autowired
private WorkloadMapper workloadMapper;

@Override
@Transactional
public List<Workload>
queryWorkload(WorkloadQueryDto
workloadQueryDto) {
return
[Link](workloadQuery
Dto);
}
}
56
创建controller

package [Link];

import ...

/**
*
* 工作量统计控制器
*/
@RestController
@RequestMapping("statistics/workload")
public class StatWorkloadController {

@Reference
private WorkloadService workloadService;

/**
* 医生工作量统计列表
*/
@GetMapping("queryWorkload")
public AjaxResult
queryWorkload(WorkloadQueryDto
workloadQueryDto){

if([Link]()==null){

[Link]([Link](
[Link](),"yyyy-MM-dd"));
}
List<Workload>
workloadList=[Link]
(workloadQueryDto);
57
return
[Link](workloadList);
}
}

接口测试

医生工作量统计/statistics/workload/queryWorkload

总体工作量统计
接口参数

参数名称 是否必须

beginTime 否

endTime 否

返回JSON数据

名称 类型 其他信息

msg String

code int

data object [] item 类型: object

├─ userId String

├─ doctorName String

├─ totalAmount int

├─ count int

接口实现
58
创建实体类

创建Workload、WorkloadQueryDto、WorkloadStat
创建映射类

创建WorkloadMapper、[Link]
修改接口类

package [Link];

import [Link];
import [Link];
import [Link];

import [Link];

/**
*
*/
public interface WorkloadService {
/**
* 医生工作量统计列表
* @param workloadQueryDto
* @return
*/
List<Workload>
queryWorkload(WorkloadQueryDto
workloadQueryDto);

/**
* 总体工作量统计列表
* @param workloadQueryDto
* @return
*/
59
List<WorkloadStat>
queryWorkloadStat(WorkloadQueryDto
workloadQueryDto);
}

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import
[Link];
import
[Link]
towired;
import
[Link]
sactional;

import [Link];

/**
*
*/
@Service
public class WorkloadServiceImpl implements
WorkloadService {

@Autowired
private WorkloadMapper workloadMapper;
60

@Override
@Transactional
public List<Workload>
queryWorkload(WorkloadQueryDto
workloadQueryDto) {
return
[Link](workloadQuery
Dto);
}

@Override
public List<WorkloadStat>
queryWorkloadStat(WorkloadQueryDto
workloadQueryDto) {
return
[Link](workloadQ
ueryDto);
}
}

修改controller

package [Link];

import ...

/**
*
* 工作量统计控制器
*/
@RestController
@RequestMapping("statistics/workload")
61
public class StatWorkloadController {

@Reference
private WorkloadService workloadService;

/**
* 医生工作量统计列表
*/
@GetMapping("queryWorkload")
public AjaxResult
queryWorkload(WorkloadQueryDto
workloadQueryDto){

if([Link]()==null){

[Link]([Link](
[Link](),"yyyy-MM-dd"));
}
List<Workload>
workloadList=[Link]
(workloadQueryDto);
return
[Link](workloadList);
}

/**
* 总体工作量统计列表
*/
@GetMapping("queryWorkloadStat")
public AjaxResult
queryWorkloadStat(WorkloadQueryDto
workloadQueryDto){
62

if([Link]()==null){

[Link]([Link](
[Link](),"yyyy-MM-dd"));
}
List<WorkloadStat>
workloadList=[Link]
Stat(workloadQueryDto);
return
[Link](workloadList);
}
}

接口测试

总体工作量统计/statistics/workload/queryWorkloadStat

You might also like