查询护理医疗仓库行政类对应指令数量:调整sql

This commit is contained in:
1378012178@qq.com 2026-01-21 10:47:03 +08:00
parent 1dcb83514d
commit c1d816fc34
3 changed files with 117 additions and 194 deletions

View File

@ -138,70 +138,43 @@
</where>
</select>
<select id="queryTotal" resultType="java.lang.Integer">
SELECT COUNT(*) as total_count
SELECT COUNT(p.id) as total_count
FROM nu_biz_nu_care_directive_plan p
LEFT JOIN
nu_config_package_directive pd ON p.directive_id = pd.package_id
WHERE p.nu_id = #{nuId}
AND p.elder_id = #{elderId}
WHERE p.nu_id = #{dto.nuId}
AND (
-- 条件1: 包数据 (cycle_type_id为空或空字符串)
(
(p.cycle_type_id IS NULL OR p.cycle_type_id = '')
AND (
-- 包数据按星期执行
(
pd.cycle_value IN ('0', '1', '2', '3', '4', '5', '6')
AND pd.cycle_value = (
CASE DAYOFWEEK(CURDATE())
WHEN 1 THEN '6' -- 星期天
WHEN 2 THEN '0' -- 星期一
WHEN 3 THEN '1' -- 星期二
WHEN 4 THEN '2' -- 星期三
WHEN 5 THEN '3' -- 星期四
WHEN 6 THEN '4' -- 星期五
WHEN 7 THEN '5' -- 星期六
END
)
)
OR
-- 包数据按日期执行
(
LENGTH(pd.cycle_value) = 2
AND pd.cycle_value = DATE_FORMAT(CURDATE(), '%d')
)
)
)
-- 条件2: 日常类型指令 (cycle_type_id = '1')
OR p.cycle_type_id = '1'
-- 条件3: 指令类型指令 (cycle_type_id = '2')
OR (
p.cycle_type_id = '2'
AND (
-- 周期指令按星期执行
(
p.cycle_value IN ('0', '1', '2', '3', '4', '5', '6')
AND p.cycle_value = (
CASE DAYOFWEEK(CURDATE())
WHEN 1 THEN '6' -- 星期天
WHEN 2 THEN '0' -- 星期一
WHEN 3 THEN '1' -- 星期二
WHEN 4 THEN '2' -- 星期三
WHEN 5 THEN '3' -- 星期四
WHEN 6 THEN '4' -- 星期五
WHEN 7 THEN '5' -- 星期六
END
)
)
OR
-- 周期指令按日期执行
(
LENGTH(p.cycle_value) = 2
AND p.cycle_value = DATE_FORMAT(CURDATE(), '%d')
)
)
)
);
-- 1: 每天执行
p.cycle_type_id = '1'
-- 3: 按星期执行
OR (p.cycle_type_id = '3' AND p.cycle_value = (
CASE DAYOFWEEK(now())
WHEN 1 THEN '6'
WHEN 2 THEN '0'
WHEN 3 THEN '1'
WHEN 4 THEN '2'
WHEN 5 THEN '3'
WHEN 6 THEN '4'
WHEN 7 THEN '5'
END
))
-- 4: 按日期执行
OR (p.cycle_type_id = '4' AND p.cycle_value = DATE_FORMAT(now(), '%d'))
-- 5: 频次执行
OR (p.cycle_type_id = '5' AND (
-- 不限次数
(p.opt_count = 0
AND DATEDIFF(now(), DATE(p.opt_time)) >= 0
AND MOD(DATEDIFF(now(), DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0)
-- 有限次数
OR (p.opt_count > 0
AND DATEDIFF(now(), DATE(p.opt_time)) >= 0
AND MOD(DATEDIFF(now(), DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0
AND (DATEDIFF(now(), DATE(p.opt_time)) / (CAST(p.cycle_value AS UNSIGNED) + 1)) &lt; p.opt_count)
))
)
</select>
<select id="list" resultType="com.nu.modules.biz.plan.care.entity.CareDirectivePlan">
@ -244,9 +217,11 @@
WHEN plan.iz_package = 'Y' AND package.total_duration IS NOT NULL AND package.total_duration = 0
THEN '23:59'
WHEN plan.iz_package = 'N' AND directive.service_duration IS NOT NULL AND directive.service_duration > 0
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(directive.service_duration * 60)), '%H:%i')
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(directive.service_duration * 60)),
'%H:%i')
WHEN plan.iz_package = 'Y' AND package.total_duration IS NOT NULL AND package.total_duration > 0
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(package.total_duration * 60)), '%H:%i')
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(package.total_duration * 60)),
'%H:%i')
ELSE NULL
END as end_time,
plan.create_by,

View File

@ -7,69 +7,43 @@
where id = #{id}
</delete>
<select id="queryTotal" resultType="java.lang.Integer">
SELECT COUNT(*) as total_count
SELECT COUNT(p.id) as total_count
FROM nu_biz_nu_invoicing_directive_plan p
LEFT JOIN
nu_config_package_directive pd ON p.directive_id = pd.package_id
WHERE p.nu_id = #{nuId}
WHERE p.nu_id = #{dto.nuId}
AND (
-- 条件1: 包数据 (cycle_type_id为空或空字符串)
(
(p.cycle_type_id IS NULL OR p.cycle_type_id = '')
AND (
-- 包数据按星期执行
(
pd.cycle_value IN ('0', '1', '2', '3', '4', '5', '6')
AND pd.cycle_value = (
CASE DAYOFWEEK(CURDATE())
WHEN 1 THEN '6' -- 星期天
WHEN 2 THEN '0' -- 星期一
WHEN 3 THEN '1' -- 星期二
WHEN 4 THEN '2' -- 星期三
WHEN 5 THEN '3' -- 星期四
WHEN 6 THEN '4' -- 星期五
WHEN 7 THEN '5' -- 星期六
END
)
)
OR
-- 包数据按日期执行
(
LENGTH(pd.cycle_value) = 2
AND pd.cycle_value = DATE_FORMAT(CURDATE(), '%d')
)
)
)
-- 条件2: 日常类型指令 (cycle_type_id = '1')
OR p.cycle_type_id = '1'
-- 条件3: 指令类型指令 (cycle_type_id = '2')
OR (
p.cycle_type_id = '2'
AND (
-- 周期指令按星期执行
(
p.cycle_value IN ('0', '1', '2', '3', '4', '5', '6')
AND p.cycle_value = (
CASE DAYOFWEEK(CURDATE())
WHEN 1 THEN '6' -- 星期天
WHEN 2 THEN '0' -- 星期一
WHEN 3 THEN '1' -- 星期二
WHEN 4 THEN '2' -- 星期三
WHEN 5 THEN '3' -- 星期四
WHEN 6 THEN '4' -- 星期五
WHEN 7 THEN '5' -- 星期六
END
)
)
OR
-- 周期指令按日期执行
(
LENGTH(p.cycle_value) = 2
AND p.cycle_value = DATE_FORMAT(CURDATE(), '%d')
)
)
)
);
-- 1: 每天执行
p.cycle_type_id = '1'
-- 3: 按星期执行
OR (p.cycle_type_id = '3' AND p.cycle_value = (
CASE DAYOFWEEK(now())
WHEN 1 THEN '6'
WHEN 2 THEN '0'
WHEN 3 THEN '1'
WHEN 4 THEN '2'
WHEN 5 THEN '3'
WHEN 6 THEN '4'
WHEN 7 THEN '5'
END
))
-- 4: 按日期执行
OR (p.cycle_type_id = '4' AND p.cycle_value = DATE_FORMAT(now(), '%d'))
-- 5: 频次执行
OR (p.cycle_type_id = '5' AND (
-- 不限次数
(p.opt_count = 0
AND DATEDIFF(now(), DATE(p.opt_time)) >= 0
AND MOD(DATEDIFF(now(), DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0)
-- 有限次数
OR (p.opt_count > 0
AND DATEDIFF(now(), DATE(p.opt_time)) >= 0
AND MOD(DATEDIFF(now(), DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0
AND (DATEDIFF(now(), DATE(p.opt_time)) / (CAST(p.cycle_value AS UNSIGNED) + 1)) &lt; p.opt_count)
))
)
</select>
<select id="list" resultType="com.nu.modules.biz.plan.invoicing.entity.InvoicingDirectivePlan">
SELECT

View File

@ -2,76 +2,48 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.biz.plan.logistics.mapper.LogisticsDirectivePlanMapper">
<delete id="deleteByIdPhysic">
delete from nu_biz_nu_logistics_directive_plan where id = #{id}
delete
from nu_biz_nu_logistics_directive_plan
where id = #{id}
</delete>
<select id="queryTotal" resultType="java.lang.Integer">
SELECT
COUNT(*) as total_count
FROM
nu_biz_nu_logistics_directive_plan p
LEFT JOIN
nu_config_package_directive pd ON p.directive_id = pd.package_id
WHERE
p.nu_id = #{nuId}
AND p.elder_id = #{elderId}
SELECT COUNT(p.id) as total_count
FROM nu_biz_nu_logistics_directive_plan p
WHERE p.nu_id = #{dto.nuId}
AND (
-- 条件1: 包数据 (cycle_type_id为空或空字符串)
(
(p.cycle_type_id IS NULL OR p.cycle_type_id = '')
AND (
-- 包数据按星期执行
(
pd.cycle_value IN ('0','1','2','3','4','5','6')
AND pd.cycle_value = (
CASE DAYOFWEEK(CURDATE())
WHEN 1 THEN '6' -- 星期天
WHEN 2 THEN '0' -- 星期一
WHEN 3 THEN '1' -- 星期二
WHEN 4 THEN '2' -- 星期三
WHEN 5 THEN '3' -- 星期四
WHEN 6 THEN '4' -- 星期五
WHEN 7 THEN '5' -- 星期六
END
)
)
OR
-- 包数据按日期执行
(
LENGTH(pd.cycle_value) = 2
AND pd.cycle_value = DATE_FORMAT(CURDATE(), '%d')
)
)
)
-- 条件2: 日常类型指令 (cycle_type_id = '1')
OR p.cycle_type_id = '1'
-- 条件3: 指令类型指令 (cycle_type_id = '2')
OR (
p.cycle_type_id = '2'
AND (
-- 周期指令按星期执行
(
p.cycle_value IN ('0','1','2','3','4','5','6')
AND p.cycle_value = (
CASE DAYOFWEEK(CURDATE())
WHEN 1 THEN '6' -- 星期天
WHEN 2 THEN '0' -- 星期一
WHEN 3 THEN '1' -- 星期二
WHEN 4 THEN '2' -- 星期三
WHEN 5 THEN '3' -- 星期四
WHEN 6 THEN '4' -- 星期五
WHEN 7 THEN '5' -- 星期六
END
)
)
OR
-- 周期指令按日期执行
(
LENGTH(p.cycle_value) = 2
AND p.cycle_value = DATE_FORMAT(CURDATE(), '%d')
)
)
)
);
-- 1: 每天执行
p.cycle_type_id = '1'
-- 3: 按星期执行
OR (p.cycle_type_id = '3' AND p.cycle_value = (
CASE DAYOFWEEK(now())
WHEN 1 THEN '6'
WHEN 2 THEN '0'
WHEN 3 THEN '1'
WHEN 4 THEN '2'
WHEN 5 THEN '3'
WHEN 6 THEN '4'
WHEN 7 THEN '5'
END
))
-- 4: 按日期执行
OR (p.cycle_type_id = '4' AND p.cycle_value = DATE_FORMAT(now(), '%d'))
-- 5: 频次执行
OR (p.cycle_type_id = '5' AND (
-- 不限次数
(p.opt_count = 0
AND DATEDIFF(now(), DATE(p.opt_time)) >= 0
AND MOD(DATEDIFF(now(), DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0)
-- 有限次数
OR (p.opt_count > 0
AND DATEDIFF(now(), DATE(p.opt_time)) >= 0
AND MOD(DATEDIFF(now(), DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0
AND (DATEDIFF(now(), DATE(p.opt_time)) / (CAST(p.cycle_value AS UNSIGNED) + 1)) &lt; p.opt_count)
))
)
</select>
<select id="list" resultType="com.nu.modules.biz.plan.logistics.entity.LogisticsDirectivePlan">
@ -114,9 +86,11 @@
WHEN plan.iz_package = 'Y' AND package.total_duration IS NOT NULL AND package.total_duration = 0
THEN '23:59'
WHEN plan.iz_package = 'N' AND directive.service_duration IS NOT NULL AND directive.service_duration > 0
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(directive.service_duration * 60)), '%H:%i')
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(directive.service_duration * 60)),
'%H:%i')
WHEN plan.iz_package = 'Y' AND package.total_duration IS NOT NULL AND package.total_duration > 0
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(package.total_duration * 60)), '%H:%i')
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(plan.start_time, '%H:%i'),SEC_TO_TIME(package.total_duration * 60)),
'%H:%i')
ELSE NULL
END as end_time,
plan.create_by,