<?php
|
|
declare(strict_types=1);
|
|
namespace app\user\controller;
|
|
use app\base\BaseController;
|
use app\user\validate\WorkPlanCheck;
|
use think\exception\ValidateException;
|
use think\facade\Db;
|
use think\facade\View;
|
|
class WorkPlan extends BaseController
|
{
|
public function index()
|
{
|
if (request()->isAjax()) {
|
$list = Db::name('AttendanceWorkPlan')->where('is_del', '=', 0)->order('create_time asc')->select()->each(function ($item, $key) {
|
$item['create_time'] = date('Y-m-d H:i:s', $item['create_time']);
|
$item['update_time'] = $item['update_time'] > 0 ? date('Y-m-d H:i:s', $item['update_time']) : "";
|
return $item;
|
})->toArray();
|
foreach ($list as &$val) {
|
$mappingTimes = Db::name('AttendanceWorkPlanWorkTimeLink')->where(['work_plan_id' => $val['id']])->column('work_time_id');
|
$times = Db::name('AttendanceWorkTime')->where('id', 'in', $mappingTimes)->where('is_del', '=', 0)->select()->toArray();
|
$val['times'] = $times;
|
}
|
$res['data'] = $list;
|
return table_assign(0, '', $res);
|
} else {
|
return view();
|
}
|
}
|
|
//添加&编辑
|
public function add()
|
{
|
$param = get_params();
|
if (request()->isAjax()) {
|
if (!empty($param['id']) && $param['id'] > 0) {
|
try {
|
validate(WorkPlanCheck::class)->scene('edit')->check($param);
|
} catch (ValidateException $e) {
|
// 验证失败 输出错误信息
|
return to_assign(1, $e->getError());
|
}
|
// 启动事务
|
Db::startTrans();
|
try {
|
// 处理时间
|
foreach ($param['begin_time'] as $key => $value) {
|
if (!$value) {
|
continue;
|
}
|
$timeData = [
|
'id' => intval($param['time_id'][$key]),
|
'begin_time' => $param['begin_time'][$key],
|
'need_begin_check' => intval($param['need_begin_check'][$key]),
|
'end_time' => $param['end_time'][$key],
|
'need_end_check' => intval($param['need_end_check'][$key]),
|
'check_begin_start_time' => $param['check_begin_start_time'][$key],
|
'check_begin_end_time' => $param['check_begin_end_time'][$key],
|
'check_end_start_time' => $param['check_end_start_time'][$key],
|
'check_end_end_time' => $param['check_end_end_time'][$key],
|
];
|
if ($timeData['id'] > 0) {
|
// 更新
|
$resa = Db::name('AttendanceWorkTime')->strict(false)->field(true)->update($timeData);
|
} else {
|
// 新增
|
unset($timeData['id']);
|
$timeId = Db::name('AttendanceWorkTime')->strict(false)->field(true)->insertGetId($timeData);
|
$mappingData = [
|
'work_plan_id' => $param['id'],
|
'work_time_id' => $timeId,
|
];
|
$mappingId = Db::name('AttendanceWorkPlanWorkTimeLink')->strict(false)->field(true)->insertGetId($mappingData);
|
}
|
}
|
// 处理班次
|
$param['update_time'] = time();
|
Db::name('AttendanceWorkPlan')->where(['id' => $param['id']])->strict(false)->field(true)->update($param);
|
add_log('edit', $param['id'], $param);
|
// 提交事务
|
Db::commit();
|
} catch (\Exception $e) {
|
// 回滚事务
|
Db::rollback();
|
return to_assign(1, '提交失败:' . $e->getMessage());
|
}
|
} else {
|
try {
|
validate(WorkPlanCheck::class)->scene('add')->check($param);
|
} catch (ValidateException $e) {
|
// 验证失败 输出错误信息
|
return to_assign(1, $e->getError());
|
}
|
// 启动事务
|
Db::startTrans();
|
try {
|
// 插入班次表
|
$param['is_del'] = 0;
|
$param['create_time'] = time();
|
unset($param['id']);
|
$uid = Db::name('AttendanceWorkPlan')->strict(false)->field(true)->insertGetId($param);
|
// 插入时间表
|
for ($i = 0; $i < count($param['begin_time']); $i++) {
|
// 获取时间数据
|
$timeData = [
|
'begin_time' => $param['begin_time'][$i],
|
'need_begin_check' => intval($param['need_begin_check'][$i]),
|
'end_time' => $param['end_time'][$i],
|
'need_end_check' => intval($param['need_end_check'][$i]),
|
'check_begin_start_time' => $param['check_begin_start_time'][$i],
|
'check_begin_end_time' => $param['check_begin_end_time'][$i],
|
'check_end_start_time' => $param['check_end_start_time'][$i],
|
'check_end_end_time' => $param['check_end_end_time'][$i],
|
];
|
// 插入时间数据
|
$timeIds[$i] = Db::name('AttendanceWorkTime')->strict(false)->field(true)->insertGetId($timeData);
|
}
|
// mapping数据
|
foreach ($timeIds as $key => $value) {
|
$mappingData[$key] = [
|
'work_plan_id' => $uid,
|
'work_time_id' => $value,
|
];
|
}
|
Db::name('AttendanceWorkPlanWorkTimeLink')->strict(false)->field(true)->insertAll($mappingData);
|
add_log('add', $uid, $param);
|
// 提交事务
|
Db::commit();
|
} catch (\Exception $e) {
|
// 回滚事务
|
Db::rollback();
|
return to_assign(1, '提交失败:' . $e->getMessage());
|
}
|
}
|
return to_assign();
|
} else {
|
$id = isset($param['id']) ? $param['id'] : 0;
|
if ($id > 0) {
|
$detail = Db::name('AttendanceWorkPlan')->where(['id' => $id])->find();
|
$mappingTimes = Db::name('AttendanceWorkPlanWorkTimeLink')->where(['work_plan_id' => $id])->column('work_time_id');
|
$times = Db::name('AttendanceWorkTime')->where('id', 'in', $mappingTimes)->where('is_del', '=', 0)->select()->toArray();
|
$detail['times'] = $times;
|
View::assign('detail', $detail);
|
}
|
View::assign('id', $id);
|
return view();
|
}
|
}
|
|
// 删除
|
public function delete()
|
{
|
$id = get_params("id");
|
if (Db::name('AttendanceWorkPlan')->where('id', $id)->update(['is_del'=>1]) !== false) {
|
add_log('delete', $id,[],'班次');
|
return to_assign(0, "删除成功");
|
} else {
|
return to_assign(1, "删除失败");
|
}
|
}
|
|
}
|