更新
This commit is contained in:
@@ -232,6 +232,11 @@ export function autoAssignLogLists(params: Record<string, any>) {
|
|||||||
return request.get({ url: '/stats.autoAssignLog/lists', params })
|
return request.get({ url: '/stats.autoAssignLog/lists', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 批量回退自动分配:将诊单医助撤回到自动分配前的原医助 */
|
||||||
|
export function autoAssignLogRollback(data: { ids: number[] }) {
|
||||||
|
return request.post({ url: '/stats.autoAssignLog/rollback', data })
|
||||||
|
}
|
||||||
|
|
||||||
/** 医助个人业绩概览 */
|
/** 医助个人业绩概览 */
|
||||||
export function assistantPerformanceOverview(params: {
|
export function assistantPerformanceOverview(params: {
|
||||||
time_type?: string
|
time_type?: string
|
||||||
|
|||||||
@@ -2,6 +2,18 @@
|
|||||||
<div class="auto-assign-log-page">
|
<div class="auto-assign-log-page">
|
||||||
<el-card class="!border-none" shadow="never">
|
<el-card class="!border-none" shadow="never">
|
||||||
<el-form :inline="true" class="log-filter-form">
|
<el-form :inline="true" class="log-filter-form">
|
||||||
|
<el-form-item label="记录时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="timeRange"
|
||||||
|
type="datetimerange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
clearable
|
||||||
|
@change="doSearch"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="执行日期">
|
<el-form-item label="执行日期">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="dateRange"
|
v-model="dateRange"
|
||||||
@@ -15,11 +27,29 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结果">
|
<el-form-item label="结果">
|
||||||
<el-select v-model="queryParams.action" clearable placeholder="全部" class="w-[120px]" @change="doSearch">
|
<el-select
|
||||||
|
v-model="queryParams.action"
|
||||||
|
clearable
|
||||||
|
placeholder="全部"
|
||||||
|
class="w-[120px]"
|
||||||
|
@change="doSearch"
|
||||||
|
>
|
||||||
<el-option label="已分配" value="1" />
|
<el-option label="已分配" value="1" />
|
||||||
<el-option label="未分配" value="0" />
|
<el-option label="未分配" value="0" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="回退">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.is_rollback"
|
||||||
|
clearable
|
||||||
|
placeholder="全部"
|
||||||
|
class="w-[120px]"
|
||||||
|
@change="doSearch"
|
||||||
|
>
|
||||||
|
<el-option label="未回退" value="0" />
|
||||||
|
<el-option label="已回退" value="1" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="关键词">
|
<el-form-item label="关键词">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.keyword"
|
v-model="queryParams.keyword"
|
||||||
@@ -36,12 +66,41 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="log-hint">
|
<div class="log-hint">
|
||||||
由每日定时任务「待分配诊单自动指派」写入:按上月二诊复诊接诊率分档轮询分配(>70% 每人3条/日,60%~70% 每人2条/日,50%~60% 每人1条/日,<50% 不分)。每条待指派诊单一行,含分配 / 不分配原因。
|
由每日定时任务「待分配诊单自动指派」写入:按上月二诊复诊接诊率分档轮询分配(>70% 每人3条/日,60%~70%
|
||||||
|
每人2条/日,50%~60% 每人1条/日,<50% 不分)。「回退」可将已分配医助撤回到自动分配前的原医助(通常为一中心),并写入指派日志。
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card class="!border-none mt-3" shadow="never">
|
<el-card class="!border-none mt-3" shadow="never">
|
||||||
<el-table :data="pager.lists" v-loading="pager.loading" size="default" stripe>
|
<div class="toolbar mb-3">
|
||||||
|
<el-button
|
||||||
|
v-perms="['stats.autoAssignLog/rollback']"
|
||||||
|
type="warning"
|
||||||
|
:disabled="selectedRows.length === 0"
|
||||||
|
:loading="rollbackLoading"
|
||||||
|
@click="handleBatchRollback"
|
||||||
|
>
|
||||||
|
回退选中({{ selectedRows.length }})
|
||||||
|
</el-button>
|
||||||
|
<span v-if="selectedRows.length > 0" class="toolbar-tip">
|
||||||
|
已选 {{ selectedRows.length }} 条可回退记录
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
ref="tableRef"
|
||||||
|
:data="pager.lists"
|
||||||
|
v-loading="pager.loading"
|
||||||
|
size="default"
|
||||||
|
stripe
|
||||||
|
row-key="id"
|
||||||
|
@selection-change="onSelectionChange"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="48"
|
||||||
|
:selectable="rowSelectable"
|
||||||
|
reserve-selection
|
||||||
|
/>
|
||||||
<el-table-column label="记录时间" width="160">
|
<el-table-column label="记录时间" width="160">
|
||||||
<template #default="{ row }">{{ row.create_time_text || '—' }}</template>
|
<template #default="{ row }">{{ row.create_time_text || '—' }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -59,6 +118,21 @@
|
|||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="回退状态" width="140">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<template v-if="Number(row.is_rollback) === 1">
|
||||||
|
<el-tag type="warning" size="small">已回退</el-tag>
|
||||||
|
<div class="cell-sub">{{ row.rollback_time_text }}</div>
|
||||||
|
<div v-if="row.rollback_admin_name" class="cell-sub">
|
||||||
|
{{ row.rollback_admin_name }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<el-tag v-else-if="Number(row.can_rollback) === 1" type="success" size="small">
|
||||||
|
可回退
|
||||||
|
</el-tag>
|
||||||
|
<span v-else>—</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="医助" min-width="110">
|
<el-table-column label="医助" min-width="110">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<template v-if="Number(row.assistant_id) > 0">
|
<template v-if="Number(row.assistant_id) > 0">
|
||||||
@@ -72,17 +146,34 @@
|
|||||||
<template #default="{ row }">{{ row.tier_text || '—' }}</template>
|
<template #default="{ row }">{{ row.tier_text || '—' }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="轮次" width="70" align="center">
|
<el-table-column label="轮次" width="70" align="center">
|
||||||
<template #default="{ row }">{{ Number(row.round_no) > 0 ? '第' + row.round_no + '轮' : '—' }}</template>
|
<template #default="{ row }">
|
||||||
|
{{ Number(row.round_no) > 0 ? '第' + row.round_no + '轮' : '—' }}
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="原因" min-width="360" show-overflow-tooltip>
|
<el-table-column label="原因" min-width="280" show-overflow-tooltip>
|
||||||
<template #default="{ row }">{{ row.reason }}</template>
|
<template #default="{ row }">{{ row.reason }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="统计月" width="90" prop="stat_month" align="center" />
|
<el-table-column label="统计月" width="90" prop="stat_month" align="center" />
|
||||||
<el-table-column label="批次" width="180">
|
<el-table-column label="批次" width="160">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span class="cell-sub">{{ row.batch_no }}</span>
|
<span class="cell-sub">{{ row.batch_no }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="90" fixed="right" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
v-if="Number(row.can_rollback) === 1"
|
||||||
|
v-perms="['stats.autoAssignLog/rollback']"
|
||||||
|
link
|
||||||
|
type="warning"
|
||||||
|
:loading="rollbackLoading"
|
||||||
|
@click="handleSingleRollback(row)"
|
||||||
|
>
|
||||||
|
回退
|
||||||
|
</el-button>
|
||||||
|
<span v-else class="cell-sub">—</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="flex justify-end mt-4">
|
<div class="flex justify-end mt-4">
|
||||||
<pagination v-model="pager" @change="getLists" />
|
<pagination v-model="pager" @change="getLists" />
|
||||||
@@ -92,16 +183,24 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="statsAutoAssignLog">
|
<script setup lang="ts" name="statsAutoAssignLog">
|
||||||
import { autoAssignLogLists } from '@/api/stats'
|
import { autoAssignLogLists, autoAssignLogRollback } from '@/api/stats'
|
||||||
import { usePaging } from '@/hooks/usePaging'
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
import { onMounted, reactive, ref, watch } from 'vue'
|
import { onMounted, reactive, ref, watch } from 'vue'
|
||||||
|
|
||||||
const dateRange = ref<[string, string] | null>(null)
|
const dateRange = ref<[string, string] | null>(null)
|
||||||
|
const timeRange = ref<[string, string] | null>(null)
|
||||||
|
const tableRef = ref()
|
||||||
|
const selectedRows = ref<any[]>([])
|
||||||
|
const rollbackLoading = ref(false)
|
||||||
|
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
start_date: '',
|
start_date: '',
|
||||||
end_date: '',
|
end_date: '',
|
||||||
|
start_time: '',
|
||||||
|
end_time: '',
|
||||||
action: '' as '' | '0' | '1',
|
action: '' as '' | '0' | '1',
|
||||||
|
is_rollback: '' as '' | '0' | '1',
|
||||||
keyword: ''
|
keyword: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -110,25 +209,80 @@ watch(dateRange, (val) => {
|
|||||||
queryParams.end_date = val?.[1] ?? ''
|
queryParams.end_date = val?.[1] ?? ''
|
||||||
})
|
})
|
||||||
|
|
||||||
|
watch(timeRange, (val) => {
|
||||||
|
queryParams.start_time = val?.[0] ?? ''
|
||||||
|
queryParams.end_time = val?.[1] ?? ''
|
||||||
|
})
|
||||||
|
|
||||||
const { pager, getLists, resetPage } = usePaging({
|
const { pager, getLists, resetPage } = usePaging({
|
||||||
fetchFun: autoAssignLogLists,
|
fetchFun: autoAssignLogLists,
|
||||||
params: queryParams
|
params: queryParams
|
||||||
})
|
})
|
||||||
|
|
||||||
const doSearch = () => resetPage()
|
const doSearch = () => {
|
||||||
|
selectedRows.value = []
|
||||||
|
tableRef.value?.clearSelection?.()
|
||||||
|
resetPage()
|
||||||
|
}
|
||||||
|
|
||||||
const handleReset = () => {
|
const handleReset = () => {
|
||||||
dateRange.value = null
|
dateRange.value = null
|
||||||
|
timeRange.value = null
|
||||||
queryParams.start_date = ''
|
queryParams.start_date = ''
|
||||||
queryParams.end_date = ''
|
queryParams.end_date = ''
|
||||||
|
queryParams.start_time = ''
|
||||||
|
queryParams.end_time = ''
|
||||||
queryParams.action = ''
|
queryParams.action = ''
|
||||||
|
queryParams.is_rollback = ''
|
||||||
queryParams.keyword = ''
|
queryParams.keyword = ''
|
||||||
resetPage()
|
doSearch()
|
||||||
}
|
}
|
||||||
|
|
||||||
const formatRate = (rate: number | null | undefined) =>
|
const formatRate = (rate: number | null | undefined) =>
|
||||||
rate === null || rate === undefined ? '—' : `${rate}%`
|
rate === null || rate === undefined ? '—' : `${rate}%`
|
||||||
|
|
||||||
|
const rowSelectable = (row: any) => Number(row.can_rollback) === 1
|
||||||
|
|
||||||
|
const onSelectionChange = (rows: any[]) => {
|
||||||
|
selectedRows.value = rows.filter((r) => Number(r.can_rollback) === 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
const runRollback = async (ids: number[]) => {
|
||||||
|
if (ids.length === 0) return
|
||||||
|
await feedback.confirm(
|
||||||
|
`确认回退选中的 ${ids.length} 条自动分配?将把诊单医助撤回到自动分配前的原医助,并写入指派日志。`
|
||||||
|
)
|
||||||
|
rollbackLoading.value = true
|
||||||
|
try {
|
||||||
|
const res: any = await autoAssignLogRollback({ ids })
|
||||||
|
const success = Number(res?.success ?? 0)
|
||||||
|
const failed = Number(res?.failed ?? 0)
|
||||||
|
if (failed > 0 && Array.isArray(res?.messages) && res.messages.length) {
|
||||||
|
feedback.msgWarning(
|
||||||
|
`回退成功 ${success} 条,跳过/失败 ${failed} 条:${res.messages.slice(0, 3).join(';')}`
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
feedback.msgSuccess(`回退成功 ${success} 条`)
|
||||||
|
}
|
||||||
|
selectedRows.value = []
|
||||||
|
tableRef.value?.clearSelection?.()
|
||||||
|
await getLists()
|
||||||
|
} finally {
|
||||||
|
rollbackLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleBatchRollback = () => {
|
||||||
|
const ids = selectedRows.value.map((r) => Number(r.id)).filter((id) => id > 0)
|
||||||
|
return runRollback(ids)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSingleRollback = (row: any) => {
|
||||||
|
const id = Number(row?.id ?? 0)
|
||||||
|
if (id <= 0) return
|
||||||
|
return runRollback([id])
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => getLists())
|
onMounted(() => getLists())
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -146,6 +300,17 @@ onMounted(() => getLists())
|
|||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.toolbar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toolbar-tip {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
.cell-sub {
|
.cell-sub {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: var(--el-text-color-secondary);
|
color: var(--el-text-color-secondary);
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ namespace app\adminapi\controller\stats;
|
|||||||
|
|
||||||
use app\adminapi\controller\BaseAdminController;
|
use app\adminapi\controller\BaseAdminController;
|
||||||
use app\adminapi\lists\stats\AutoAssignLogLists;
|
use app\adminapi\lists\stats\AutoAssignLogLists;
|
||||||
|
use app\adminapi\logic\stats\AutoAssignLogLogic;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 待分配诊单自动指派日志
|
* 待分配诊单自动指派日志
|
||||||
*
|
*
|
||||||
* - GET stats.autoAssignLog/lists 日志列表(每条待指派诊单一行:分配结果 + 原因)
|
* - GET stats.autoAssignLog/lists 日志列表
|
||||||
|
* - POST stats.autoAssignLog/rollback 批量回退已自动分配的医助
|
||||||
*/
|
*/
|
||||||
class AutoAssignLogController extends BaseAdminController
|
class AutoAssignLogController extends BaseAdminController
|
||||||
{
|
{
|
||||||
@@ -18,4 +20,25 @@ class AutoAssignLogController extends BaseAdminController
|
|||||||
{
|
{
|
||||||
return $this->dataLists(new AutoAssignLogLists());
|
return $this->dataLists(new AutoAssignLogLists());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function rollback()
|
||||||
|
{
|
||||||
|
$ids = $this->request->post('ids', []);
|
||||||
|
if (!is_array($ids)) {
|
||||||
|
$ids = [$ids];
|
||||||
|
}
|
||||||
|
$result = AutoAssignLogLogic::rollback($ids, $this->adminId, $this->adminInfo);
|
||||||
|
if ($result === false) {
|
||||||
|
return $this->fail(AutoAssignLogLogic::getError());
|
||||||
|
}
|
||||||
|
|
||||||
|
$msg = sprintf('回退成功 %d 条', (int) ($result['success'] ?? 0));
|
||||||
|
$failed = (int) ($result['failed'] ?? 0);
|
||||||
|
if ($failed > 0) {
|
||||||
|
$msg .= sprintf(',跳过/失败 %d 条', $failed);
|
||||||
|
}
|
||||||
|
|
||||||
|
// show=0:由前端按 success/failed 明细提示,避免与部分失败警告重复
|
||||||
|
return $this->success($msg, $result, 1, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use think\facade\Db;
|
|||||||
* 待分配诊单自动指派日志列表
|
* 待分配诊单自动指派日志列表
|
||||||
*
|
*
|
||||||
* 数据来源:tcm_diagnosis_auto_assign_log(定时命令 tcm:auto-assign-pending 写入)
|
* 数据来源:tcm_diagnosis_auto_assign_log(定时命令 tcm:auto-assign-pending 写入)
|
||||||
* 筛选:run_date(执行日期)/ action(1=已分配 0=未分配)/ assistant_id / keyword(患者姓名、手机号、医助姓名,纯数字兼容诊单ID)
|
* 筛选:run_date / create_time 区间 / action / keyword / rollback 状态
|
||||||
*/
|
*/
|
||||||
class AutoAssignLogLists extends BaseAdminDataLists implements ListsSearchInterface
|
class AutoAssignLogLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||||
{
|
{
|
||||||
@@ -49,6 +49,17 @@ class AutoAssignLogLists extends BaseAdminDataLists implements ListsSearchInterf
|
|||||||
$row['action_text'] = (int) ($row['action'] ?? 0) === 1 ? '已分配' : '未分配';
|
$row['action_text'] = (int) ($row['action'] ?? 0) === 1 ? '已分配' : '未分配';
|
||||||
$row['tier_text'] = self::TIER_LABELS[(string) ($row['tier'] ?? '')] ?? '';
|
$row['tier_text'] = self::TIER_LABELS[(string) ($row['tier'] ?? '')] ?? '';
|
||||||
$row['visit2_rate'] = $row['visit2_rate'] !== null ? (float) $row['visit2_rate'] : null;
|
$row['visit2_rate'] = $row['visit2_rate'] !== null ? (float) $row['visit2_rate'] : null;
|
||||||
|
|
||||||
|
$rbTs = (int) ($row['rollback_time'] ?? 0);
|
||||||
|
$row['rollback_time_text'] = $rbTs > 0 ? date('Y-m-d H:i:s', $rbTs) : '';
|
||||||
|
$row['is_rollback'] = $rbTs > 0 ? 1 : 0;
|
||||||
|
$row['can_rollback'] = ((int) ($row['action'] ?? 0) === 1 && $rbTs === 0) ? 1 : 0;
|
||||||
|
if ($rbTs > 0) {
|
||||||
|
$row['rollback_status_text'] = '已回退'
|
||||||
|
. (($row['rollback_admin_name'] ?? '') !== '' ? (' · ' . $row['rollback_admin_name']) : '');
|
||||||
|
} else {
|
||||||
|
$row['rollback_status_text'] = ((int) ($row['action'] ?? 0) === 1) ? '可回退' : '—';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
unset($row);
|
unset($row);
|
||||||
|
|
||||||
@@ -91,6 +102,46 @@ class AutoAssignLogLists extends BaseAdminDataLists implements ListsSearchInterf
|
|||||||
$query->where('run_date', '<=', $endDate);
|
$query->where('run_date', '<=', $endDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 记录时间(create_time)区间:支持 Y-m-d 或 Y-m-d H:i:s
|
||||||
|
$startTs = $this->parseTimeParam((string) ($this->params['start_time'] ?? ''), false);
|
||||||
|
if ($startTs > 0) {
|
||||||
|
$query->where('create_time', '>=', $startTs);
|
||||||
|
}
|
||||||
|
$endTs = $this->parseTimeParam((string) ($this->params['end_time'] ?? ''), true);
|
||||||
|
if ($endTs > 0) {
|
||||||
|
$query->where('create_time', '<=', $endTs);
|
||||||
|
}
|
||||||
|
|
||||||
|
$rollback = trim((string) ($this->params['is_rollback'] ?? ''));
|
||||||
|
if ($rollback === '1') {
|
||||||
|
$query->where('rollback_time', '>', 0);
|
||||||
|
} elseif ($rollback === '0') {
|
||||||
|
$query->where('rollback_time', '=', 0);
|
||||||
|
}
|
||||||
|
|
||||||
return $query;
|
return $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $endOfDay 仅日期时是否取当天结束
|
||||||
|
*/
|
||||||
|
private function parseTimeParam(string $raw, bool $endOfDay): int
|
||||||
|
{
|
||||||
|
$raw = trim($raw);
|
||||||
|
if ($raw === '') {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $raw) === 1) {
|
||||||
|
return (int) strtotime($raw . ($endOfDay ? ' 23:59:59' : ' 00:00:00'));
|
||||||
|
}
|
||||||
|
if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}(:\d{2})?$/', $raw) === 1) {
|
||||||
|
if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/', $raw) === 1) {
|
||||||
|
$raw .= $endOfDay ? ':59' : ':00';
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int) strtotime($raw);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -305,6 +305,7 @@ class AutoAssignPendingDiagnosis extends Command
|
|||||||
->where('run_date', $runDate)
|
->where('run_date', $runDate)
|
||||||
->where('action', 1)
|
->where('action', 1)
|
||||||
->where('assistant_id', '>', 0)
|
->where('assistant_id', '>', 0)
|
||||||
|
->where('rollback_time', 0)
|
||||||
->group('assistant_id')
|
->group('assistant_id')
|
||||||
->column('COUNT(*)', 'assistant_id');
|
->column('COUNT(*)', 'assistant_id');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user