xinelu-api/xinelu-nurse-applet/src/main/resources/mapper/applet/nursingorder/NusringOrderMapper.xml
2023-10-18 15:06:02 +08:00

382 lines
15 KiB
XML

<?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.xinelu.applet.mapper.nursingorder.NursingOrderMapper">
<!-- 预约服务订单详情映射关系 -->
<resultMap id="getAppointmentDetailsResultMap"
type="com.xinelu.applet.vo.specialdisease.AppointmentOrderDetailsInfoVO">
<result property="patientId" column="patient_id"/>
<result property="appointmentOrderId" column="appointmentOrderId"/>
<result property="patientName" column="patient_name"/>
<result property="patientPhone" column="patientPhone"/>
<result property="orderNo" column="order_no"/>
<result property="totalPrice" column="total_price"/>
<result property="orderStatus" column="order_status"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="nurseStationItemId" column="nurse_station_item_id"/>
<result property="serviceAddress" column="service_address"/>
<result property="serviceDate" column="service_date"/>
<result property="serviceStartTime" column="service_start_time"/>
<result property="serviceEndTime" column="service_end_time"/>
<result property="nurseItemName" column="nurse_item_name"/>
<result property="nurseItemPrice" column="nurse_item_price"/>
<result property="itemServeDurationUnit" column="item_serve_duration_unit"/>
<result property="consumableTotalPrice" column="consumable_total_price"/>
<result property="disablingCondition" column="disabling_condition"/>
<result property="disablingReason" column="disabling_reason"/>
<result property="orderType" column="order_type"/>
<result property="companionStartDate" column="companion_start_date"/>
<result property="companionEndDate" column="companion_end_date"/>
<result property="companionDays" column="companion_days"/>
<result property="orderWriteName" column="order_write_name"/>
<result property="caregiverName" column="caregiver_name"/>
<result property="caregiverPhone" column="caregiver_phone"/>
<result property="hospitalName" column="hospital_name"/>
<result property="departmentName" column="department_name"/>
<result property="hospitalBedNumber" column="hospital_bed_number"/>
<collection property="itemConsumableList" javaType="java.util.List"
resultMap="getAppointmentOrderConsumableResult"/>
</resultMap>
<!-- 预约服务耗材映射关系 -->
<resultMap type="com.xinelu.manage.domain.appointmentorderconsumable.AppointmentOrderConsumable"
id="getAppointmentOrderConsumableResult">
<result property="id" column="id"/>
<result property="appointOrderDetailsId" column="appoint_order_details_id"/>
<result property="orderConsumableName" column="order_consumable_name"/>
<result property="orderConsumablePrice" column="order_consumable_price"/>
<result property="orderConsumableCount" column="order_consumable_count"/>
<result property="consumableUnit" column="consumable_unit"/>
</resultMap>
<select id="getNursingOrderVOByPatientId" parameterType="long"
resultType="com.xinelu.applet.vo.nursingorder.NursingOrderInfoVO">
SELECT
aod.order_no,
aod.service_date,
aod.service_start_time,
aod.service_end_time,
aod.appointment_status,
aod.total_price,
aod.item_serve_duration_unit,
aod.nurse_item_name,
aod.order_status,
nsi.advance_appoint_duration,
nsi.item_picture_url,
ns.nurse_station_name
FROM
appointment_order_details aod
LEFT JOIN nurse_station_item nsi ON nsi.id = aod.nurse_station_item_id
LEFT JOIN nurse_station ns ON ns.id = nsi.nurse_station_id
LEFT JOIN appointment_order ao ON ao.order_no = aod.order_no
WHERE
aod.del_flag = 0 and ao.del_flag = 0
<if test="patientId != null">
AND ao.patient_id = #{patientId}
</if>
ORDER BY
aod.service_date DESC,
aod.service_start_time DESC
</select>
<select id="getGoodsOrder" parameterType="com.xinelu.applet.vo.nursingorder.AppletGoodsOrderVO"
resultType="com.xinelu.applet.vo.nursingorder.AppletGoodsOrderVO">
SELECT
gr.id goodsOrderId,
gr.nurse_station_id,
gr.patient_id,
gr.order_no goOrderNo,
gr.order_status,
gr.total_price,
gr.receiver,
gr.receive_address,
gr.phone,
gr.order_time,
gr.refund_type,
gr.refund_reason_dict_id,
gr.refund_reason_remark,
gr.confirm_refund_status,
gr.express_no,
gr.buy_source,
gr.order_type,
gr.original_total_price,
gr.order_channel,
gr.hospital_person_id,
gr.health_consultation_content,
gr.health_appoint_date,
god.integral_deduction_count,
god.id goodsOrderDetailsId,
god.order_no godOrderNo,
god.goods_name,
god.goods_count,
god.goods_attribute_name,
god.goods_attribute_content,
god.goods_price,
god.total_price godTotalPrice,
god.discount_price,
god.transport_price,
god.give_integral,
gad.attribute_piture_url,
gad.integral_exchange_flag,
god.integral_exchange_sill,
god.integral_exchange_count,
god.coupon_id,
god.coupon_title,
sdd.dict_label,
gr.update_time appleTime,
(select rf.success_time from refund_info rf where rf.order_no = gr.order_no) update_time,
IF( gr.order_type = 'HEALTH_CONSULTATION', ( SELECT person_picture_url FROM hospital_person_info WHERE id =
gr.hospital_person_id ), NULL ) person_picture_url,
gr.hospital_person_name
FROM
goods_order gr
LEFT JOIN goods_order_details god ON gr.id = god.goods_order_id
LEFT JOIN goods_attribute_details gad ON god.goods_attribute_details_id = gad.id
LEFT JOIN sys_dict_data sdd ON sdd.dict_code = gr.refund_reason_dict_id
<where>
<if test="patientId != null ">
and gr.patient_id = #{patientId}
</if>
<if test="orderStatus != null and orderStatus != ''">
and gr.order_status = #{orderStatus}
</if>
<if test="goodsName != null and goodsName != ''">
and god.goods_name like concat('%', #{goodsName}, '%')
</if>
<if test="goodsOrderId != null ">
and gr.id = #{goodsOrderId}
</if>
<if test="goOrderNo != null ">
and gr.order_no = #{goOrderNo}
</if>
<if test="orderType != null and orderType != ''">
and gr.order_type = #{orderType}
</if>
<if test="orderType = null and orderType = ''">
and gr.order_type IN #{orderTypeList}
</if>
and gr.del_flag = 0
and god.del_flag = 0
</where>
ORDER BY gr.order_time DESC
</select>
<select id="getRefundReason" parameterType="com.xinelu.common.core.domain.entity.SysDictData"
resultType="com.xinelu.common.core.domain.entity.SysDictData">
SELECT
dict_code,
dict_sort,
dict_label,
dict_value,
dict_type
FROM
sys_dict_data
<where>
<if test="dictType != null and dictType != ''">
AND dict_type = #{dictType}
</if>
</where>
</select>
<update id="updateGoodsOrder" parameterType="com.xinelu.manage.domain.goodsOrder.GoodsOrder">
update goods_order
<trim prefix="SET" suffixOverrides=",">
<if test="nurseStationId != null">
nurse_station_id =
#{nurseStationId},
</if>
<if test="patientId != null">
patient_id =
#{patientId},
</if>
<if test="orderNo != null">
order_no =
#{orderNo},
</if>
<if test="orderStatus != null">
order_status =
#{orderStatus},
</if>
<if test="totalPrice != null">
total_price =
#{totalPrice},
</if>
<if test="receiver != null">
receiver =
#{receiver},
</if>
<if test="receiveAddress != null">
receive_address =
#{receiveAddress},
</if>
<if test="phone != null">
phone =
#{phone},
</if>
<if test="orderTime != null">
order_time =
#{orderTime},
</if>
<if test="orderChannel != null">
order_channel =
#{orderChannel},
</if>
<if test="buySource != null">
buy_source =
#{buySource},
</if>
<if test="remark != null">
remark =
#{remark},
</if>
<if test="delFlag != null">
del_flag =
#{delFlag},
</if>
<if test="createBy != null">
create_by =
#{createBy},
</if>
<if test="createTime != null">
create_time =
#{createTime},
</if>
<if test="updateBy != null">
update_by =
#{updateBy},
</if>
<if test="updateTime != null">
update_time =
#{updateTime},
</if>
<if test="refundType != null">
refund_type =
#{refundType},
</if>
<if test="refundReasonDictId != null">
refund_reason_dict_id =
#{refundReasonDictId},
</if>
<if test="refundReasonRemark != null">
refund_reason_remark =
#{refundReasonRemark},
</if>
<if test="confirmRefundStatus != null">
confirm_refund_status =
#{confirmRefundStatus},
</if>
</trim>
where id = #{id}
</update>
<select id="getAppointmentOrderDetailsInfo" resultMap="getAppointmentDetailsResultMap">
SELECT pi.patient_name,
pi.phone patientPhone,
aor.id appointmentOrderId,
aor.patient_id,
aor.order_no,
aor.total_price,
aor.order_status,
aor.remark,
aor.create_time,
aor.order_type,
aor.companion_start_date,
aor.companion_end_date,
aor.companion_days,
aor.order_write_name,
aod.nurse_station_item_id,
aod.service_address,
aod.service_date,
aod.service_start_time,
aod.service_end_time,
aod.nurse_item_name,
aod.nurse_item_price,
aod.item_serve_duration_unit,
aod.consumable_total_price,
aoc.id,
aoc.appoint_order_details_id,
aoc.order_consumable_name,
aoc.order_consumable_price,
aoc.order_consumable_count,
aoc.consumable_unit,
aod.disabling_condition,
aod.disabling_reason,
aod.caregiver_name,
aod.caregiver_phone,
aod.hospital_name,
aod.department_name,
aod.hospital_bed_number
FROM appointment_order aor
LEFT JOIN appointment_order_details aod ON aor.order_no = aod.order_no
LEFT JOIN appointment_order_consumable aoc ON aod.id = aoc.appoint_order_details_id
LEFT JOIN patient_info pi ON pi.id = aor.patient_id
where aor.order_no = #{ordeNo}
AND aor.del_flag = 0
and aod.del_flag = 0
</select>
<select id="getNurseStationByItemId"
resultType="com.xinelu.applet.vo.specialdisease.AppointmentOrderDetailsInfoVO">
SELECT ns.nurse_station_name nurseStationName,
ns.phone stationPhone,
ns.address,
ns.station_picture_url,
nsi.item_picture_url
FROM nurse_station_item nsi
LEFT JOIN nurse_station ns ON nsi.nurse_station_id = ns.id
WHERE nsi.id = #{nurseStationItemId}
</select>
<select id="getAppointmentOrderListByParentId" resultType="com.xinelu.applet.vo.nursingorder.PatientOrder">
SELECT
ao.patient_id,
ao.order_no,
ao.order_status,
ao.create_time,
aod.nurse_item_name orderName,
nsi.item_picture_url pictureUrl,
'APPOINTMENT_ORDER' AS orderType
FROM
appointment_order ao
LEFT JOIN appointment_order_details aod ON ao.order_no = aod.order_no
LEFT JOIN nurse_station_item nsi ON nsi.id = aod.nurse_station_item_id
where
ao.order_status = #{orderStatus}
and ao.patient_id = #{patientId}
and ao.del_flag = 0
</select>
<select id="getGoodsOrderAndConsultationOrder"
resultType="com.xinelu.applet.vo.nursingorder.PatientOrder">
SELECT
gor.patient_id,
gor.order_no,
gor.order_status,
gor.order_time,
gor.order_type,
god.goods_name orderName,
gad.attribute_piture_url pictureUrl,
hpi.person_picture_url
FROM
goods_order gor
LEFT JOIN goods_order_details god ON god.order_no = gor.order_no
LEFT JOIN goods_attribute_details gad ON gad.id = god.goods_attribute_details_id
LEFT JOIN hospital_person_info hpi ON hpi.id = gor.hospital_person_id
where
gor.order_status = #{orderStatus}
and gor.patient_id = #{patientId}
and gor.del_flag = 0
</select>
</mapper>