| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 | <?phpnamespace app\common\model;use app\common\util\AppAuth;use app\hander\HelpHander;use think\Db;class GreenAddr extends Base {    protected $createTime = 'create_time';    protected $updateTime = 'update_time';    public $table = 'green_addr';    protected $validateName = 'greenAddr';    public function updates(){        $data = request()->post();        $data['org_id'] =cur_org_id();        $result = validate($this->validateName)->check($data,[],'');        if(true !== $result){            $this->error = validate($this->validateName)->getError();            return false;        }        if(!$data['user_ids']){            $this->error='执行人员不能为空';            return false;        }        $post['user_ids'] = explode(',',$data['user_ids']);        $id = $data['id'];        unset($data['id']);        unset($data['user_ids']);        $this->startTrans();        try{            if($id > 0){                $data['update_time'] = date('Y-m-d H:i:s');                $ret = $this->allowField(true)->save($data,['id'=>$id]);                if(!$ret){                    exception('保存失败');                }                Db::name('green_user')                    ->where('green_addr_id',$id)->delete();                //添加检查人员                $user = array();                $post['user_ids'] = array_unique($post['user_ids']);                foreach ($post['user_ids'] as $k=>$v){                    $user[] = array(                        'green_addr_id' => $id,                        'user_id' => $v                    );                }                $taskUser=Db::name('green_user')->insertAll($user);                if(!$taskUser){                    exception('工作人员保存失败');                }            }else{                $data['create_time'] = date('Y-m-d H:i:s');                $ret = $this->insertGetId($data);                $id = $ret;                if(!$id){                    exception('保存失败');                }                //添加检查人员                $user = array();                $post['user_ids'] = array_unique($post['user_ids']);                foreach ($post['user_ids'] as $k=>$v){                    $user[] = array(                        'green_addr_id' => $id,                        'user_id' => $v                    );                }                $taskUser=Db::name('green_user')->insertAll($user);                if(!$taskUser){                    exception('工作人员保存失败');                }            }            $this->commit();            return true;        }catch (\Exception $e){            // 回滚事务            $this->error = $e->getMessage();            $this->rollback();            return false;        }    }    public function getRoles($roles){        $list = Db::name('roles')            ->where('id','in',explode(',',$roles))            ->column('name');        return $list;    }    public function getRolesList(){        $list = (new WorkTypeMode())->getRoles(9);        $arr = [];        if(!empty($list)){            foreach ($list as $k=>$v){                $arr[] = [                    'id'=>$v['id'],                    'title'=>$v['name'],                ];            }        }        return $arr;    }    public function list(){        $list = $this            ->where('del',0)            ->where('enable',1)            ->where('org_id',cur_org_id())            ->select()            ->toArray();        return $list;    }    public function sweepCode($code,$orgId,$userId,$taskId=0,$greenAddrId=0)    {        $qrcode_arr = get_qrcode_arr($code);        if(!$qrcode_arr){            $this->error = '该地点不存在';            return false;        }        if($qrcode_arr['type'] != 'green'){            $this->error = '该任务不存在';            return false;        }        if($taskId > 0 ){            if($qrcode_arr['id'] != $greenAddrId){                $this->error = '地点不正确';                return false;            }            $task = Db::name('green_task')                ->where('id',$taskId)                ->where('del',0)                ->where('org_id',$orgId)                ->find();            if($task['end_time'] < date('Y-m-d H:i:s') || $task['start_time'] > date('Y-m-d H:i:s')){                $this->error = '不在时间范围内';                return false;            }            $workerAuth = 1;        }else{            $green =Db::name('green_user')                ->where('green_addr_id',$qrcode_arr['id'])                ->where('user_id',$userId)                ->find();            $workerAuth = $green?1:0;        }        $green = $this->where([            'org_id' => $orgId,            'id' => $qrcode_arr['id'],            'del' => 0,            'enable' => 1        ])->find();        if (!$green) {            $this->error = '该任务不存在';            return false;        }        $lookAllAuth = (new Roles())->getAppAuth($userId,AppAuth::GREEN_LOOK_ALL_AUTH);        $ret = [            'green_addr_id' => $qrcode_arr['id'],            'worker_auth' => $workerAuth,            'look_all_auth' => $lookAllAuth?1:0,        ];        return $ret;    }    public function taskAddrAll($taskId){        $info = Db::name('green_task')            ->field('id,start_time,end_time,title,status,create_time')            ->where('id',$taskId)            ->where('del',0)            ->find();        $info['users'] = Db::name('user')            ->alias('u')            ->field('u.real_name')            ->join('green_task_user dtu','dtu.user_id=u.id')            ->where('dtu.task_id',$info['id'])            ->where('u.del',0)            ->where('u.enable',1)            ->select();        $info['green'] = Db::name('green')            ->alias('d')            ->field('d.id,d.title')            ->join('green_task_addr dta','dta.green_id=d.id')            ->where('dta.task_id',$info['id'])            ->where('d.del',0)            ->where('d.enable',1)            ->select();        foreach ($info['green'] as $k=>$v){            $record = Db::name('green_record')                ->where('task_id',$taskId)                ->where('green_id',$v['id'])                ->find();            $info['green'][$k]['status'] = $record ? 1 : 0;            $info['green'][$k]['green_record_id'] = $record ? $record['id'] : 0;        }        return $info;    }    public function myTaskRecord($page,$size,$userId,$orgId){        $record = Db::name('green_task_user')            ->alias('a')            ->join('green_task b','a.task_id = b.id')            ->where('b.del',0)            ->whereIn('b.status',[2,3])            ->where('a.user_id',$userId)            ->where('b.org_id',$orgId)            ->field('b.id,b.title,b.start_time,b.end_time,b.status')            ->order('b.start_time desc,id desc')            ->page($page,$size)            ->select();        return $record?$record:[];    }    /**     *日常工作量统计     *     * @author wst     * @date   2021/4/13 8:38     */    public function DailyWork($orgId){        $list = $this            ->field('id,title')            ->where('enable',1)            ->where('del',0)            ->where('org_id',$orgId)            ->select();        $list = $list?$list:array();        $count = $count1 = $count2 =$count3 = 0;        foreach ($list as $k=>$v){            $query = Db::name('green_record')                ->where('org_id',$orgId)                ->where('green_id',$v['id']);            $list[$k]['count'] = $query                ->count();            $count += $list[$k]['count'];            //本月            $list[$k]['count1'] = $query                ->where('create_yyyymm',date('Ym'))                ->count();            $count1 += $list[$k]['count1'];            //本周            $list[$k]['count2'] = $query                ->whereIn('create_yyyymmdd',get_week_date())                ->count();            $count2 += $list[$k]['count2'];            //今天            $list[$k]['count3'] = $query                ->where('create_yyyymmdd',date('Ymd'))                ->count();            $count3 += $list[$k]['count3'];        }        return array('list'=>$list,'count'=>$count,'count1'=>$count1,'count2'=>$count2,'count3'=>$count3);    }    // 获取网格化时间段    public function getTimeDaily($orgId){        $hour = model('Config')->getConfig('org_green_hour',$orgId);        $hour = $hour?$hour:24; // 默认24小时刷新一次        $cur = time();        $s = strtotime(date('Y-m-d'));        $n = $s + 86400;        $start = 0;        $end = 0;        while (true){            if($s > $cur){                $start = $s - $hour*60*60;                $end = $s;                if($s > $n){                    $end = $n;                }                break;            }            $s = $s + $hour*60*60;        }        return ['start' => date('Y-m-d H:i:s',$start),'end' => date('Y-m-d H:i:s',$end)];    }}
 |