<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!--产品/明显的充值记录-->
|
<mapper namespace="com.kidgrow.oprationcenter.mapper.ProductOrderDetailMapper">
|
<!--定义查询列-->
|
<sql id="Column_List">
|
DISTINCT *
|
</sql>
|
|
<!--sql查询片段-->
|
<sql id="where">
|
<where>
|
<!--查询条件自行添加-->
|
is_del=0
|
<if test="p.id != null and p.id !=''">
|
and id = #{p.id}
|
</if>
|
<if test="p.orderId != null and p.orderId !=''">
|
and order_id = #{p.orderId}
|
</if>
|
<if test="p.proId != null and p.proId !=''">
|
and pro_id = #{p.proId}
|
</if>
|
<if test="p.proName != null and p.proName !=''">
|
and pro_name = #{p.proName}
|
</if>
|
<if test="p.isShare != null and p.isShare !=''">
|
and is_share = #{p.isShare}
|
</if>
|
<if test="p.isDel != null and p.isDel !=''">
|
and is_del = #{p.isDel}
|
</if>
|
<if test="p.ailightCount != null and p.ailightCount !=''">
|
and ailight_count = #{p.ailightCount}
|
</if>
|
<if test="p.recordCount != null and p.recordCount !=''">
|
and record_count = #{p.recordCount}
|
</if>
|
<if test="p.proBegintime != null and p.proBegintime !=''">
|
and pro_begintime = #{p.proBegintime}
|
</if>
|
<if test="p.proEndtime != null and p.proEndtime !=''">
|
and pro_endtime = #{p.proEndtime}
|
</if>
|
<if test="p.enabled != null and p.enabled !=''">
|
and enabled = #{p.enabled}
|
</if>
|
<if test="p.createUserId != null and p.createUserId !=''">
|
and create_user_id = #{p.createUserId}
|
</if>
|
<if test="p.createUserName != null and p.createUserName !=''">
|
and create_user_name = #{p.createUserName}
|
</if>
|
<if test="p.updateUserId != null and p.updateUserId !=''">
|
and update_user_id = #{p.updateUserId}
|
</if>
|
<if test="p.updateTime != null and p.updateTime !=''">
|
and update_time = #{p.updateTime}
|
</if>
|
<if test="p.updateUserName != null and p.updateUserName !=''">
|
and update_user_name = #{p.updateUserName}
|
</if>
|
<if test="p.createTime != null and p.createTime !=''">
|
and create_time = #{p.createTime}
|
</if>
|
</where>
|
</sql>
|
<!--定义根据-ProductOrderDetail当作查询条件返回对象-->
|
<select id="findByObject" resultType="com.kidgrow.oprationcenter.model.ProductOrderDetail">
|
select
|
<include refid="Column_List"/>
|
from product_order_detail
|
<include refid="where"/>
|
order by id desc
|
limit 1
|
</select>
|
|
<!--定义根据-ProductOrderDetail当作查询条件返回对象集合-->
|
<select id="findList" resultType="com.kidgrow.oprationcenter.model.ProductOrderDetail">
|
select
|
<include refid="Column_List"/>
|
from product_order_detail
|
<include refid="where"/>
|
order by id desc
|
</select>
|
<!--sql查询片段-->
|
<sql id="wherelimit">
|
<where>
|
<!--查询条件自行添加-->
|
DE.is_del=0
|
<if test="p.id != null and p.id !=''">
|
and id = #{p.id}
|
</if>
|
<if test="p.proType != null and p.proType !=''">
|
and DE.pro_type = #{p.proType}
|
</if>
|
<if test="p.enabled != null and p.enabled !=''">
|
and DE.enabled = #{p.enabled}
|
</if>
|
<if test="p.hospitalName != null and p.hospitalName !=''">
|
and PRO.hospital_name like concat ('%',#{p.hospitalName},'%')
|
</if>
|
<if test="p.proName != null and p.proName !=''">
|
and DE.pro_name like concat ('%',#{p.proName},'%')
|
</if>
|
<if test="p.createTime != null and p.createTime !='' and p.updateTime != null and p.updateTime !=''">
|
and (DE.create_time between #{p.createTime} and #{p.updateTime})
|
</if>
|
<if test="p.startTime!= null and p.startTime !=''">
|
and DE.create_time >= #{p.startTime}
|
</if>
|
<if test="p.endTime!= null and p.endTime !=''">
|
and DE.create_time <= #{p.endTime}
|
</if>
|
<include refid="com.kidgrow.oprationcenter.mapper.SysProductMapper.Role_Organization"></include>
|
</where>
|
</sql>
|
<select id="groupProductDetail" resultType="com.kidgrow.oprationcenter.vo.GroupProductDetail">
|
select
|
COUNT(DE.pro_id) pro_count,
|
max(DE.pro_name) pro_name
|
from product_order_detail AS DE
|
<include refid="wherelimit"/>
|
GROUP BY DE.pro_id
|
order by pro_count desc
|
</select>
|
<select id="getTypeByUser" resultType="com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail" parameterType="long">
|
SELECT
|
pod.*
|
FROM
|
`product_order` po
|
INNER JOIN product_order_detail pod ON po.id = pod.order_id
|
WHERE
|
po.hospital_id = #{id}
|
AND NOW() >= pod.pro_begintime
|
AND NOW() <=pod.pro_endtime
|
AND pod.enabled = 1
|
AND pod.is_del = 0
|
AND po.enabled = 1
|
AND po.is_del = 0
|
ORDER BY
|
pod.pro_type desc,pod.pro_endtime desc
|
</select>
|
<!--sql查询片段-->
|
<sql id="whereforall">
|
<where>
|
<!--查询条件自行添加-->
|
DE.is_del=0 and DE.ailight_count>=0 and DE.pro_begintime <=now() and DE.pro_endtime >=now() and
|
DE.enabled=1
|
<if test="p.hospitalId != null and p.hospitalId !=''">
|
and PRO.hospital_id = #{p.hospitalId}
|
</if>
|
</where>
|
</sql>
|
<!--查询产品的购买记录-->
|
<select id="findAllList" resultType="com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail">
|
SELECT
|
DE.id,
|
DE.ailight_count,
|
DE.record_count,
|
DE.is_share,
|
DE.pro_begintime,
|
DE.pro_endtime,
|
PRO.hospital_Id,
|
PRO.department_id,
|
DE.pro_type
|
FROM
|
product_order_detail DE
|
LEFT JOIN product_order PRO ON DE.order_id = PRO.id
|
<include refid="whereforall"/>
|
order by
|
DE.pro_endtime ASC,
|
DE.pro_begintime ASC,
|
DE.id asc
|
</select>
|
|
<select id="getEnabledCount" resultType="int" parameterType="long">
|
SELECT
|
COUNT(*)
|
FROM
|
product_order_record
|
WHERE
|
pro_type=0 AND is_del=0 AND enabled=1 AND
|
order_id IN (
|
SELECT
|
id
|
FROM
|
product_order
|
WHERE
|
department_id = #{departmentId})
|
</select>
|
<select id="oprationChart" resultType="int" parameterType="int">
|
<if test="datatype==0">
|
-- 试用审核
|
SELECT count(*) FROM product_order_detail WHERE enabled=0 AND is_del=0 and pro_type=0
|
</if>
|
<if test="datatype==1">
|
-- 套餐总量
|
SELECT count(*) FROM sys_product WHERE is_del=0 and enabled=1
|
</if>
|
<if test="datatype==2">
|
-- 未处理用户反馈
|
SELECT count(*) FROM sys_feedback WHERE is_del=0 and enabled=0
|
</if>
|
<if test="datatype==3">
|
-- 未处理数据需求
|
SELECT count(*) FROM data_need WHERE is_del=0 and enabled=0
|
</if>
|
</select>
|
|
<select id="productOrderChart" resultType="com.kidgrow.oprationcenter.vo.OrderChartVo">
|
<if test="p.datatype==1">
|
-- 按年统计
|
SELECT COUNT(t.id) ccount,t.units FROM
|
(select id,DATE_FORMAT(contract_time,'%Y/%m') units,contract_time from product_order
|
<include refid="whereorderchart"/>
|
) AS t
|
GROUP BY t.units
|
</if>
|
<if test="p.datatype==2">
|
-- 按月统计
|
SELECT COUNT(t.id) ccount,t.units FROM
|
(select id,DATE_FORMAT(contract_time,'%Y') units,contract_time from product_order
|
<include refid="whereorderchart"/>
|
) AS t
|
GROUP BY t.units
|
</if>
|
</select>
|
<sql id="whereorderchart">
|
<where>
|
<!--查询条件自行添加-->
|
is_del=0 and enabled=1
|
<if test="p.startTime != null and p.endTime !=''">
|
and contract_time between #{p.startTime} and #{p.endTime}
|
</if>
|
</where>
|
</sql>
|
<select id="proCountChart" resultType="com.kidgrow.oprationcenter.vo.OrderChartVo">
|
SELECT
|
count( pro_id ) ccount,
|
pro_name units
|
FROM
|
product_order_record
|
WHERE
|
is_del = 0
|
AND enabled = 1
|
AND pro_id IN ( SELECT id FROM sys_product WHERE is_del = 0 AND enabled = 1 )
|
GROUP BY
|
pro_id,
|
pro_name
|
ORDER BY
|
ccount DESC
|
LIMIT 10
|
</select>
|
<select id="departmentProductDetail" resultType="com.kidgrow.oprationcenter.model.ProductOrderDetail">
|
SELECT
|
*
|
FROM
|
product_order_detail
|
WHERE
|
order_id IN ( SELECT id FROM product_order WHERE hospital_id = #{hospitalId} AND department_id = #{departmentId} AND is_del = 0 AND enabled = 1 )
|
AND is_del = 0
|
AND enabled = 1
|
ORDER BY
|
create_time DESC
|
</select>
|
<select id="getUserdProduct" resultType="int">
|
SELECT
|
sum(total)
|
FROM
|
(
|
SELECT
|
count(*) total
|
FROM
|
`product_order` order_order
|
LEFT JOIN product_order_record record ON order_order.id = record.order_id
|
WHERE
|
order_order.hospital_id = #{hospitalId}
|
AND order_order.department_id = #{departmentId}
|
and record.pro_id!=1000000000000000000
|
AND order_order.is_del = 0
|
AND order_order.enabled = 1
|
AND record.is_del = 0
|
AND record.enabled = 1
|
AND record.pro_endtime>now()
|
UNION ALL
|
SELECT
|
count(*) total
|
FROM
|
`product_order` order_order
|
LEFT JOIN product_order_record record ON order_order.id = record.order_id
|
WHERE
|
order_order.hospital_id = #{hospitalId}
|
AND record.is_share = 1
|
and record.pro_id!=1000000000000000000
|
AND order_order.is_del = 0
|
AND order_order.enabled = 1
|
AND record.is_del = 0
|
AND record.enabled = 1
|
AND record.pro_endtime>now()
|
) cc
|
</select>
|
<select id="productEndList" resultType="com.kidgrow.oprationcenter.vo.ProductEndVo">
|
SELECT
|
id,
|
pro_id,
|
pro_begintime beginTime,
|
MIN( T2.pro_endtime ) endTime,
|
MIN( T2.ailight_count ) ailight_count,
|
pro_type,
|
pro_name,
|
T2.hospital_id,
|
hospital_name,
|
T2.department_id,
|
department_name
|
FROM
|
(
|
SELECT
|
details.id id,
|
details.pro_id,
|
details.pro_begintime pro_begintime,
|
details.pro_endtime pro_endtime,
|
details.ailight_count,
|
details.pro_name pro_name,
|
details.pro_type pro_type,
|
orders.hospital_id hospital_id,
|
orders.hospital_name hospital_name,
|
orders.department_id department_id,
|
orders.department_name department_name
|
FROM
|
product_order_detail details
|
LEFT JOIN product_order orders ON orders.id = details.order_id
|
WHERE
|
details.is_del = 0
|
AND details.enabled = 1
|
AND orders.is_del = 0
|
AND orders.enabled = 1
|
AND pro_endtime BETWEEN now() AND DATE_ADD(NOW(), INTERVAL ${monthPar} MONTH)
|
AND ailight_count BETWEEN 1 AND ${aiCountPar}
|
AND pro_type=1
|
ORDER BY
|
ailight_count,
|
pro_endtime
|
) AS T2
|
GROUP BY
|
department_id,
|
hospital_id,
|
department_name,
|
hospital_name,
|
id,
|
pro_id,
|
pro_type,
|
pro_name,
|
ailight_count,
|
pro_endtime,
|
pro_begintime
|
ORDER BY
|
ailight_count,
|
pro_endtime,
|
department_id
|
</select>
|
</mapper>
|