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