pad服务指令预览调整查询待执行指令逻辑
This commit is contained in:
parent
09c5eb857e
commit
930b24eacb
|
|
@ -262,7 +262,7 @@ public class CareDirectiveApi {
|
||||||
List<DirectiveOrderEntity> current = Lists.newArrayList();
|
List<DirectiveOrderEntity> current = Lists.newArrayList();
|
||||||
List<DirectiveOrderEntity> future = Lists.newArrayList();
|
List<DirectiveOrderEntity> future = Lists.newArrayList();
|
||||||
List<DirectiveOrderEntity> all = Lists.newArrayList();
|
List<DirectiveOrderEntity> all = Lists.newArrayList();
|
||||||
if (StringUtils.isBlank(dto.getElderId()) || StringUtils.isBlank(dto.getNuId()) || dto.getQueryDate() == null) {
|
if (StringUtils.isBlank(dto.getNuId()) || dto.getQueryDate() == null || dto.getQueryFuture() == null) {
|
||||||
result.put("history", history);
|
result.put("history", history);
|
||||||
result.put("current", current);
|
result.put("current", current);
|
||||||
result.put("future", future);
|
result.put("future", future);
|
||||||
|
|
@ -276,7 +276,9 @@ public class CareDirectiveApi {
|
||||||
//正在执行
|
//正在执行
|
||||||
current = directiveOrderApi.queryCurrent(dto);
|
current = directiveOrderApi.queryCurrent(dto);
|
||||||
//将来
|
//将来
|
||||||
|
dto.setQueryFuture(true);
|
||||||
future = careDirectivePlanApi.queryFuture(dto);
|
future = careDirectivePlanApi.queryFuture(dto);
|
||||||
|
dto.setQueryFuture(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
//给数据加标识
|
//给数据加标识
|
||||||
|
|
|
||||||
|
|
@ -114,4 +114,6 @@ public class CareDirectiveEntity implements Serializable {
|
||||||
private Date queryDate;
|
private Date queryDate;
|
||||||
private String orderTimeType;
|
private String orderTimeType;
|
||||||
|
|
||||||
|
private Boolean queryFuture;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,10 @@ public class DirectiveOrderEntity implements Serializable {
|
||||||
private Date startTime;
|
private Date startTime;
|
||||||
/**结束时间*/
|
/**结束时间*/
|
||||||
private Date endTime;
|
private Date endTime;
|
||||||
|
/**开始时间字符串*/
|
||||||
|
private String startTimeStr;
|
||||||
|
/**结束时间字符串*/
|
||||||
|
private String endTimeStr;
|
||||||
/**实际开始员工*/
|
/**实际开始员工*/
|
||||||
private String beginEmp;
|
private String beginEmp;
|
||||||
/**实际开始时间*/
|
/**实际开始时间*/
|
||||||
|
|
|
||||||
|
|
@ -320,8 +320,6 @@
|
||||||
o.net_mp4_file,
|
o.net_mp4_file,
|
||||||
o.service_duration,
|
o.service_duration,
|
||||||
o.service_content,
|
o.service_content,
|
||||||
o.package_id,
|
|
||||||
o.package_name,
|
|
||||||
o.iz_package,
|
o.iz_package,
|
||||||
o.toll_price,
|
o.toll_price,
|
||||||
o.com_price,
|
o.com_price,
|
||||||
|
|
@ -350,7 +348,6 @@
|
||||||
s.id as sub_id,
|
s.id as sub_id,
|
||||||
s.order_type as sub_order_type,
|
s.order_type as sub_order_type,
|
||||||
s.main_id as sub_main_id,
|
s.main_id as sub_main_id,
|
||||||
s.pool_sub_id as sub_pool_sub_id,
|
|
||||||
s.nu_id as sub_nu_id,
|
s.nu_id as sub_nu_id,
|
||||||
s.nu_name as sub_nu_name,
|
s.nu_name as sub_nu_name,
|
||||||
s.elder_id as sub_elder_id,
|
s.elder_id as sub_elder_id,
|
||||||
|
|
@ -419,16 +416,16 @@
|
||||||
|
|
||||||
<choose>
|
<choose>
|
||||||
<when test="@cn.hutool.core.date.DateUtil@isSameDay(dto.queryDate, new java.util.Date())">
|
<when test="@cn.hutool.core.date.DateUtil@isSameDay(dto.queryDate, new java.util.Date())">
|
||||||
<![CDATA[
|
AND DATE(o.start_time) = DATE(#{dto.queryDate})
|
||||||
AND (
|
AND DATE_ADD(
|
||||||
(DATE(o.start_time) = DATE(#{dto.queryDate}) AND DATE_ADD(o.end_time, INTERVAL CAST(o.service_duration AS UNSIGNED) MINUTE) < NOW())
|
o.end_time,
|
||||||
)
|
INTERVAL
|
||||||
]]>
|
IF(o.timeout_duration REGEXP '^[0-9]+$', o.timeout_duration, 0)
|
||||||
|
MINUTE
|
||||||
|
) < NOW()
|
||||||
</when>
|
</when>
|
||||||
<otherwise>
|
<otherwise>
|
||||||
<![CDATA[
|
AND DATE(o.start_time) = DATE(#{dto.queryDate})
|
||||||
AND DATE(o.start_time) = DATE(#{dto.queryDate})
|
|
||||||
]]>
|
|
||||||
</otherwise>
|
</otherwise>
|
||||||
</choose>
|
</choose>
|
||||||
|
|
||||||
|
|
@ -440,7 +437,9 @@
|
||||||
<include refid="baseSelect"/>
|
<include refid="baseSelect"/>
|
||||||
|
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
AND (DATE(o.start_time) = DATE(now()) AND o.start_time <= now() AND now() <= DATE_ADD(o.end_time, INTERVAL CAST(o.service_duration AS UNSIGNED) MINUTE) )
|
AND (DATE(o.start_time) = DATE(now())
|
||||||
|
AND o.start_time <= NOW()
|
||||||
|
AND NOW() <= o.end_time + INTERVAL o.timeout_duration MINUTE)
|
||||||
]]>
|
]]>
|
||||||
|
|
||||||
<include refid="commonConditions"/>
|
<include refid="commonConditions"/>
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@
|
||||||
<result column="real_com_price" property="realComPrice"/>
|
<result column="real_com_price" property="realComPrice"/>
|
||||||
<result column="start_time" property="startTime"/>
|
<result column="start_time" property="startTime"/>
|
||||||
<result column="end_time" property="endTime"/>
|
<result column="end_time" property="endTime"/>
|
||||||
|
<result column="start_time_str" property="startTimeStr"/>
|
||||||
|
<result column="end_time_str" property="endTimeStr"/>
|
||||||
<result column="begin_emp" property="beginEmp"/>
|
<result column="begin_emp" property="beginEmp"/>
|
||||||
<result column="begin_time" property="beginTime"/>
|
<result column="begin_time" property="beginTime"/>
|
||||||
<result column="finish_emp" property="finishEmp"/>
|
<result column="finish_emp" property="finishEmp"/>
|
||||||
|
|
@ -214,119 +216,99 @@
|
||||||
);
|
);
|
||||||
</select>
|
</select>
|
||||||
<select id="queryFuture" resultMap="DirectiveOrderMap">
|
<select id="queryFuture" resultMap="DirectiveOrderMap">
|
||||||
select p.id,
|
SELECT
|
||||||
p.nu_id,
|
p.id,
|
||||||
p.nu_name,
|
p.nu_id,
|
||||||
p.elder_id,
|
base.nu_name,
|
||||||
p.elder_name,
|
CASE WHEN p.iz_package = 'N' THEN directive.category_id ELSE NULL END as category_id,
|
||||||
p.category_id,
|
CASE WHEN p.iz_package = 'N' THEN category.category_name ELSE NULL END as category_name,
|
||||||
p.category_name,
|
CASE WHEN p.iz_package = 'N' THEN directive.type_id ELSE NULL END as type_id,
|
||||||
p.type_id,
|
CASE WHEN p.iz_package = 'N' THEN stype.type_name ELSE NULL END as type_name,
|
||||||
p.type_name,
|
p.directive_id,
|
||||||
CASE
|
CASE
|
||||||
WHEN p.iz_package = 'N' THEN p.directive_name
|
WHEN p.iz_package = 'N' THEN directive.directive_name
|
||||||
ELSE directive_name
|
WHEN p.iz_package = 'Y' THEN package.package_name
|
||||||
END AS directive_name,
|
END as directive_name,
|
||||||
CASE
|
p.cycle_type_id,
|
||||||
WHEN p.iz_package = 'Y' THEN p.directive_name
|
p.cycle_value,
|
||||||
ELSE directive_name
|
CASE WHEN p.iz_package = 'N' THEN directive.immediate_file ELSE NULL END as immediate_file,
|
||||||
END AS package_name,
|
CASE WHEN p.iz_package = 'N' THEN directive.immediate_file_focus ELSE NULL END as immediate_file_focus,
|
||||||
p.preview_file,
|
CASE WHEN p.iz_package = 'N' THEN directive.preview_file ELSE NULL END as preview_file,
|
||||||
p.net_preview_file,
|
CASE WHEN p.iz_package = 'N' THEN directive.preview_file_small ELSE NULL END as preview_file_small,
|
||||||
p.preview_file_small,
|
CASE WHEN p.iz_package = 'N' THEN directive.mp3_file ELSE NULL END as mp3_file,
|
||||||
p.net_preview_file_small,
|
CASE WHEN p.iz_package = 'N' THEN directive.mp4_file ELSE NULL END as mp4_file,
|
||||||
p.mp3_file,
|
CASE
|
||||||
p.net_mp3_file,
|
WHEN p.iz_package = 'N' THEN directive.service_duration
|
||||||
p.mp4_file,
|
WHEN p.iz_package = 'Y' THEN CAST(package.total_duration AS CHAR)
|
||||||
p.net_mp4_file,
|
END as service_duration,
|
||||||
p.immediate_file,
|
CASE
|
||||||
p.net_immediate_file,
|
WHEN p.iz_package = 'N' THEN directive.service_content
|
||||||
p.immediate_file_focus,
|
WHEN p.iz_package = 'Y' THEN package.description
|
||||||
p.net_immediate_file_focus,
|
END as service_content,
|
||||||
p.cycle_type_id,
|
p.positioning,
|
||||||
p.cycle_type,
|
p.positioning_long,
|
||||||
p.cycle_value,
|
p.tag_name,
|
||||||
p.service_duration,
|
p.start_time as start_time_str,
|
||||||
p.service_content,
|
CASE
|
||||||
p.positioning,
|
WHEN p.iz_package = 'N' AND directive.service_duration IS NOT NULL
|
||||||
p.positioning_long,
|
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(p.start_time, '%H:%i'),
|
||||||
p.tag_name,
|
SEC_TO_TIME(directive.service_duration * 60)), '%H:%i')
|
||||||
STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m-%d'), ' ', p.start_time),
|
WHEN p.iz_package = 'Y' AND package.total_duration IS NOT NULL
|
||||||
'%Y-%m-%d %H:%i:%s') as start_time,
|
THEN DATE_FORMAT(ADDTIME(STR_TO_DATE(p.start_time, '%H:%i'),
|
||||||
STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m-%d'), ' ', p.end_time),
|
SEC_TO_TIME(package.total_duration * 60)), '%H:%i')
|
||||||
'%Y-%m-%d %H:%i:%s') as end_time,
|
ELSE NULL
|
||||||
p.create_by,
|
END as end_time_str,
|
||||||
p.create_time,
|
p.create_by,
|
||||||
p.update_by,
|
p.create_time,
|
||||||
p.update_time,
|
p.update_by,
|
||||||
p.sys_org_code,
|
p.update_time,
|
||||||
p.iz_package,
|
p.sys_org_code,
|
||||||
pd.directive_id AS sub_id,
|
p.iz_package,
|
||||||
pd.directive_id AS sub_directive_id
|
pd.directive_id AS sub_id,
|
||||||
|
pd.directive_id AS sub_directive_id
|
||||||
FROM nu_biz_nu_care_directive_plan p
|
FROM nu_biz_nu_care_directive_plan p
|
||||||
LEFT JOIN
|
LEFT JOIN nu_base_info base ON p.nu_id = base.nu_id
|
||||||
nu_config_package_directive pd ON p.directive_id = pd.package_id
|
LEFT JOIN nu_config_service_directive directive ON p.iz_package = 'N' AND p.directive_id = directive.id
|
||||||
|
LEFT JOIN nu_config_directive_package package ON p.iz_package = 'Y' AND p.directive_id = package.id
|
||||||
|
LEFT JOIN nu_config_service_category category ON directive.category_id = category.id
|
||||||
|
LEFT JOIN nu_config_service_type stype ON directive.type_id = stype.id
|
||||||
|
LEFT JOIN nu_config_package_directive pd ON p.iz_package = 'Y' AND p.directive_id = pd.package_id
|
||||||
WHERE p.nu_id = #{dto.nuId}
|
WHERE p.nu_id = #{dto.nuId}
|
||||||
AND p.elder_id = #{dto.elderId}
|
AND (
|
||||||
AND (
|
-- 1: 每天执行
|
||||||
-- 条件1: 包数据 (cycle_type_id为空或空字符串)
|
p.cycle_type_id = '1'
|
||||||
(
|
|
||||||
(p.cycle_type_id IS NULL OR p.cycle_type_id = '')
|
-- 3: 按星期执行
|
||||||
AND (
|
OR (p.cycle_type_id = '3' AND p.cycle_value = (
|
||||||
-- 包数据按星期执行
|
CASE DAYOFWEEK(#{dto.queryDate})
|
||||||
(
|
WHEN 1 THEN '6' WHEN 2 THEN '0' WHEN 3 THEN '1' WHEN 4 THEN '2'
|
||||||
pd.cycle_value IN ('0', '1', '2', '3', '4', '5', '6')
|
WHEN 5 THEN '3' WHEN 6 THEN '4' WHEN 7 THEN '5'
|
||||||
AND pd.cycle_value = (
|
END
|
||||||
CASE DAYOFWEEK(CURDATE())
|
))
|
||||||
WHEN 1 THEN '6' -- 星期天
|
|
||||||
WHEN 2 THEN '0' -- 星期一
|
-- 4: 按日期执行
|
||||||
WHEN 3 THEN '1' -- 星期二
|
OR (p.cycle_type_id = '4' AND p.cycle_value = DATE_FORMAT(#{dto.queryDate}, '%d'))
|
||||||
WHEN 4 THEN '2' -- 星期三
|
|
||||||
WHEN 5 THEN '3' -- 星期四
|
-- 5: 频次执行
|
||||||
WHEN 6 THEN '4' -- 星期五
|
OR (p.cycle_type_id = '5' AND (
|
||||||
WHEN 7 THEN '5' -- 星期六
|
-- 不限次数
|
||||||
END
|
(p.opt_count = 0
|
||||||
)
|
AND DATEDIFF(#{dto.queryDate}, DATE(p.opt_time)) >= 0
|
||||||
)
|
AND MOD(DATEDIFF(#{dto.queryDate}, DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0)
|
||||||
OR
|
|
||||||
-- 包数据按日期执行
|
-- 有限次数
|
||||||
(
|
OR (p.opt_count > 0
|
||||||
LENGTH(pd.cycle_value) = 2
|
AND DATEDIFF(#{dto.queryDate}, DATE(p.opt_time)) >= 0
|
||||||
AND pd.cycle_value = DATE_FORMAT(CURDATE(), '%d')
|
AND MOD(DATEDIFF(#{dto.queryDate}, DATE(p.opt_time)), (CAST(p.cycle_value AS UNSIGNED) + 1)) = 0
|
||||||
)
|
AND (DATEDIFF(#{dto.queryDate}, DATE(p.opt_time)) / (CAST(p.cycle_value AS UNSIGNED) + 1)) < p.opt_count)
|
||||||
)
|
))
|
||||||
)
|
)
|
||||||
-- 条件2: 日常类型指令 (cycle_type_id = '1')
|
|
||||||
OR p.cycle_type_id = '1'
|
-- 是否查询未来指令
|
||||||
-- 条件3: 指令类型指令 (cycle_type_id = '2')
|
<if test="dto.queryFuture != null and dto.queryFuture">
|
||||||
OR (
|
AND #{dto.queryDate} = CURDATE() AND p.start_time > DATE_FORMAT(NOW(), '%H:%i')
|
||||||
p.cycle_type_id = '2'
|
</if>
|
||||||
AND (
|
|
||||||
-- 周期指令按星期执行
|
ORDER BY p.start_time ASC
|
||||||
(
|
|
||||||
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')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
AND STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m-%d'), ' ', p.start_time), '%Y-%m-%d %H:%i:%s') > NOW()
|
|
||||||
ORDER BY STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m-%d'), ' ', p.start_time), '%Y-%m-%d %H:%i:%s') ASC
|
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue