| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 | 
							- <?php
 
- namespace app\common\model;
 
- use app\hander\HelpHander;
 
- use think\Db;
 
- use think\Exception;
 
- class FCleanTask extends Base {
 
-     protected $createTime = 'create_time';
 
-     protected $updateTime = 'update_time';
 
-     public $table = 'f_clean_task';
 
-     protected $validateName = 'FCleanTask';
 
-     public function updates() {
 
-         $data = request()->post();
 
-         if (!isset($data['type']) || empty($data['type'])) {
 
-             $this->error = '请选择任务项';
 
-             return false;
 
-         }
 
-         if (!isset($data['user']) || empty($data['user'])) {
 
-             $this->error = '请选择人员';
 
-             return false;
 
-         }
 
-         $data['type_id'] = (new FCleanForm())->check_form_type(explode(',', $data['type']));
 
-         if ($data['type_id'] <= 0) {
 
-             $this->error = '请选择请选择同一分类下的任务项';
 
-             return false;
 
-         }
 
-         if ($data['start_time'] >= $data['end_time']) {
 
-             $this->error = '开始时间要小于结束时间';
 
-             return false;
 
-         }
 
-         $data['org_id'] = cur_org_id();
 
-         $result = validate($this->validateName)->check($data, [], '');
 
-         if (true !== $result) {
 
-             $this->error = validate($this->validateName)->getError();
 
-             return false;
 
-         }
 
-         $id = $data['id'];
 
-         unset($data['id']);
 
-         $clean_task_form = $data['type'];
 
-         $user = $data['user'];
 
-         unset($data['type'], $data['user']);
 
-         $this->startTrans();
 
-         try {
 
-             if ($id > 0) {
 
-                 $data['update_time'] = date('Y-m-d H:i:s');
 
-                 $ret = $this->allowField(true)->save($data, ['id' => $id]);
 
-                 $res = Db::name('f_clean_task_form')
 
-                     ->where('task_id', $id)->delete();
 
-                 if (!$res) {
 
-                     throw new Exception('重置任务内容失败');
 
-                 }
 
-                 $res = Db::name('f_clean_task_user')
 
-                     ->where('task_id', $id)->delete();
 
-                 if (!$res) {
 
-                     throw new Exception('重置任务人员失败');
 
-                 }
 
-             }
 
-             else {
 
-                 $data['create_time'] = date('Y-m-d H:i:s');
 
-                 $ret = $this->allowField(true)->save($data);
 
-                 $id = $this->getLastInsID();
 
-             }
 
-             if (!$ret) {
 
-                 throw new Exception('任务保存失败');
 
-             }
 
-             //添加任务内容
 
-             $clean_task_form = explode(',', $clean_task_form);
 
-             $nArr = [];
 
-             foreach ($clean_task_form as $v) {
 
-                 $nArr[] = [
 
-                     'task_id' => $id,
 
-                     'form_id' => $v
 
-                 ];
 
-             }
 
-             $res = Db::name('f_clean_task_form')
 
-                 ->insertAll($nArr);
 
-             if (!$res) {
 
-                 throw new Exception('保存任务内容失败');
 
-             }
 
-             //添加任务人员
 
-             $user = explode(',', $user);
 
-             $nArr = [];
 
-             foreach ($user as $v) {
 
-                 $nArr[] = [
 
-                     'task_id' => $id,
 
-                     'user_id' => $v
 
-                 ];
 
-             }
 
-             $res = Db::name('f_clean_task_user')
 
-                 ->insertAll($nArr);
 
-             if (!$res) {
 
-                 throw new Exception('保存任务人员失败');
 
-             }
 
-             $this->commit();
 
-             return true;
 
-         } catch (Exception $e) {
 
-             $this->rollback();
 
-             $this->error = $e->getMessage();
 
-             return false;
 
-         }
 
-     }
 
-     public function lists($page, $size, $status, $userId, $orgId, $type) {
 
-         $ret = [];
 
-         if ($type == 1) {
 
-             $ret = $this
 
-                 ->field('id as task_id,start_time,title,end_time,status,timeout,type_id')
 
-                 ->where([
 
-                     'org_id' => $orgId,
 
-                     'del' => 0,
 
-                     'status' => $status,
 
-                 ])
 
-                 ->order('id desc')
 
-                 ->page($page, $size)
 
-                 ->select();
 
-             $ret = $ret ? $ret->toArray() : [];
 
-         }
 
-         else {
 
-             $ret = $this->alias('a')
 
-                 ->join('f_clean_task_user b', 'a.id=b.task_id')
 
-                 ->field('a.id as task_id,a.start_time,a.title,a.end_time,a.status,a.timeout,a.type_id')
 
-                 ->where([
 
-                     'a.org_id' => $orgId,
 
-                     'a.del' => 0,
 
-                     'a.status' => $status,
 
-                     'b.user_id' => $userId,
 
-                 ])
 
-                 ->order('a.id desc')
 
-                 ->page($page, $size)
 
-                 ->select();
 
-             $ret = $ret ? $ret->toArray() : [];
 
-         }
 
-         foreach ($ret as $k => $v) {
 
-             $ret[$k]['type_name'] = Db::name('f_clean_type')
 
-                 ->where('id', $v['type_id'])
 
-                 ->where('org_id', $orgId)
 
-                 ->value('title');
 
-             $user = Db::name('f_clean_task_user')
 
-                 ->alias('tu')
 
-                 ->join('user u', 'u.id = tu.user_id')
 
-                 ->where('tu.task_id', $v['task_id'])
 
-                 ->column('u.real_name');
 
-             $implode = empty($user) ? [] : implode('/', $user);
 
-             $ret[$k]['staff'] = $implode;
 
-         }
 
-         return $ret ? $ret : [];
 
-     }
 
-     public function taskCount($status, $userId, $orgId) {
 
-         $isDispatch = check_is_dispatch($userId);
 
-         if ($isDispatch) {
 
-             $ret = $this
 
-                 ->field('id as task_id,start_time,title,end_time,status,timeout,type_id')
 
-                 ->where([
 
-                     'org_id' => $orgId,
 
-                     'del' => 0,
 
-                     'status' => $status,
 
-                 ])
 
-                 ->count();
 
-         }
 
-         else {
 
-             $ret = $this->alias('a')
 
-                 ->join('f_clean_task_user b', 'a.id=b.task_id')
 
-                 ->field('a.id as task_id,a.start_time,a.title,a.end_time,a.status,a.timeout,a.type_id')
 
-                 ->where([
 
-                     'a.org_id' => $orgId,
 
-                     'a.del' => 0,
 
-                     'a.status' => $status,
 
-                     'b.user_id' => $userId,
 
-                 ])
 
-                 ->count();
 
-         }
 
-         return $ret ? $ret : 0;
 
-     }
 
-     public function detail($id) {
 
-         $ret = $this->alias('ct')
 
-             ->field('ct.id,ct.start_time,ct.type_id,ct.end_time,ct.title,t.title as type_name,ct.check_content as report_text')
 
-             ->join('f_clean_type t', 't.id=ct.type_id', 'left')
 
-             ->where('ct.id', $id)
 
-             ->find();
 
-         $ret = $ret ? $ret->toArray() : [];
 
-         $userName = Db::name('f_clean_task_user')
 
-             ->alias('tu')
 
-             ->join('user u', 'u.id = tu.user_id')
 
-             ->where('tu.task_id', $id)
 
-             ->column('u.real_name');
 
-         $implode = empty($userName) ? [] : implode('/', $userName);
 
-         $ret['name'] = $implode;
 
-         $formList = Db::name('f_clean_task_form')
 
-             ->alias('ctf')
 
-             ->join('f_clean_form cf', 'cf.id = ctf.form_id')
 
-             ->field('cf.id,cf.title as name')
 
-             ->where('task_id', $ret['id'])
 
-             ->select();
 
-         $formList = $formList ? $formList : [];
 
-         foreach ($formList as $k => $v) {
 
-             $record = Db::name('f_clean_record')
 
-                 ->where('task_id', $id)
 
-                 ->where('form_id', $v['id'])->find();
 
-             $formList[$k]['status'] = $record ? 1 : 0;
 
-         }
 
-         $ret['form_list'] = $formList;
 
-         return $ret;
 
-     }
 
-     public function addSave($content, $formId, $taskId, $orgId, $formJson, $userId, $consItems) {
 
-         // 检查该任务是已保存
 
-         $res = Db::name('f_clean_record')
 
-             ->where('task_id', $taskId)
 
-             ->where('form_id', $formId)
 
-             ->find();
 
-         if ($res) {
 
-             HelpHander::error('已上传记录');
 
-         }
 
-         $task = $this->where('id', $taskId)->find();
 
-         $countrecord = Db::name('f_clean_record')
 
-             ->where('task_id', $taskId)->count();
 
-         $this->startTrans();
 
-         try {
 
-             $data = [
 
-                 'org_id' => $orgId,
 
-                 'user_id' => $userId,
 
-                 'form_id' => $formId,
 
-                 'content' => $content,
 
-                 'check_json' => $formJson,
 
-                 'create_time' => date('Y-m-d H:i:s'),
 
-                 'task_id' => $taskId,
 
-             ];
 
-             $ret = Db::name('f_clean_record')->insertGetId($data);
 
-             $record_id = $ret;
 
-             if (!$ret) {
 
-                 \exception('保存失败');
 
-             }
 
-             $countaddr = Db::name('f_clean_task_form')
 
-                 ->where('task_id', $taskId)
 
-                 ->count();
 
-             if ($countaddr == $countrecord + 1) {
 
-                 $status = 2;
 
-             }
 
-             else {
 
-                 $status = 1;
 
-             }
 
-             if ($task['status'] != $status) {
 
-                 $ret = $this->where('id', $taskId)->update(['status' => $status]);
 
-                 if (!$ret) {
 
-                     \exception('操作失败');
 
-                 }
 
-             }
 
-             if ($consItems) { // 耗材
 
-                 $consItems = json_decode($consItems, true);
 
-                 $mate = [
 
-                     'todo_id' => $record_id,
 
-                     'order_id' => $record_id,
 
-                     'org_id' => $orgId,
 
-                     'user_id' => $userId,
 
-                     'type' => 1,
 
-                     'create_time' => getTime()
 
-                 ];
 
-                 $todo_mate_id = Db::name('todo_mate')
 
-                     ->insertGetId($mate);
 
-                 if (!$todo_mate_id) {
 
-                     \exception('使用物品记录失败');
 
-                 }
 
-                 $items = [];
 
-                 $a = [];
 
-                 foreach ($consItems as $k => $v) {
 
-                     $itemInfo = Db::name('mate_goods')
 
-                         ->where('id', $v['itemsId'])
 
-                         ->find();
 
- //                    $pInfo = Db::name('mate_goods')
 
- //                        ->where('id', $itemInfo['pid'])
 
- //                        ->find();
 
-                     if ($itemInfo['nums'] < $v['total']) {
 
-                         \exception($itemInfo['title'] . ' 库存不足');
 
-                     }
 
-                     $items[] = [
 
-                         'todo_mate_id' => $todo_mate_id,
 
-                         'items_id' => $v['itemsId'],
 
-                         'total' => $v['total'],
 
-                         'create_time' => getTime(),
 
-                         'user_id' => $userId,
 
-                         'money' => $itemInfo['price'],
 
-                         'total_money' => $itemInfo['price'] * $v['total'],
 
-                     ];
 
-                     //clean_record_items
 
-                     $a[] = [
 
-                         'org_id'=>$orgId,
 
-                         'record_id'=>$record_id,
 
-                         'items_id'=>$v['itemsId'],
 
-                         'code'=>'',
 
-                         'money'=>$itemInfo['price'],
 
-                         'total'=>$v['total'],
 
-                     ];
 
-                     $res = Db::name('mate_goods')
 
-                         ->where('id', $v['itemsId'])
 
-                         ->setDec('nums', $v['total']);
 
-                     if (!$res) {
 
-                         \exception($itemInfo['title'] . ' 数量修改失败');
 
-                     }
 
-                 }
 
-                 $res = Db::name('todo_mate_item')
 
-                     ->insertAll($items);
 
-                 if (!$res) {
 
-                     \exception('物品使用记录失败');
 
-                 }
 
-                 $res = Db::name('f_clean_record_items')
 
-                     ->insertAll($a);
 
-                 if (!$res) {
 
-                     \exception('专项保洁使用记录失败');
 
-                 }
 
-             }
 
-             $this->commit();
 
-             return true;
 
-         } catch (Exception $e) {
 
-             $this->rollback();
 
-             $this->error = $e->getMessage();
 
-             return false;
 
-         }
 
-     }
 
-     //定时处理超时任务
 
-     public function timer_action(){
 
-         $curTime = date('Y-m-d');
 
-         $map[] = ['del','=',0];
 
-         $map[] = ['status','in',[0,1]];
 
-         $map[] = ['end_time','<',$curTime];
 
-         $this->where($map)
 
-             ->update(['timeout'=>1]);
 
-     }
 
-     public function taskCount2($status, $userId, $orgId) {
 
- //        $isDispatch = check_is_dispatch($userId);
 
- //        if ($isDispatch) {
 
- //            $ret = Db::name('clean_plan_record')
 
- //                ->where('enable',0)
 
- //                ->where('del',0)
 
- //                ->where('org_id',$orgId)
 
- //                ->count();
 
- //        }
 
- //        else {
 
- //            $ret = Db::name('clean_plan_record')
 
- //                ->alias('clr')
 
- //                ->join('clean_plan_user cpu','cpu.record_id = clr.id')
 
- //                ->where('clr.enable',0)
 
- //                ->where('clr.del',0)
 
- //                ->where('clr.org_id',$orgId)
 
- //                ->where('cpu.user_id',$userId)
 
- //                ->count();
 
- //        }
 
-         $ret = Db::name('f_clean_plan_record')
 
-             ->alias('clr')
 
-             ->join('f_clean_plan_user cpu','cpu.record_id = clr.id')
 
-             ->where('clr.enable',0)
 
-             ->where('clr.del',0)
 
-             ->where('clr.org_id',$orgId)
 
-             ->where('cpu.user_id',$userId)
 
-             ->count();
 
-         return $ret ? $ret : 0;
 
-     }
 
- }
 
 
  |