123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- <?php
- namespace app\common\model;
- use app\common\util\AppAuth;
- use app\hander\HelpHander;
- use think\Db;
- class Daily extends Base {
- protected $createTime = 'create_time';
- protected $updateTime = 'update_time';
- public $table = 'daily';
- protected $validateName = 'Daily';
- 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('daily_user')
- ->where('daily_id',$id)->delete();
- //添加检查人员
- $user = array();
- $post['user_ids'] = array_unique($post['user_ids']);
- foreach ($post['user_ids'] as $k=>$v){
- $user[] = array(
- 'daily_id' => $id,
- 'user_id' => $v
- );
- }
- $taskUser=Db::name('daily_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(
- 'daily_id' => $id,
- 'user_id' => $v
- );
- }
- $taskUser=Db::name('daily_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($orgId){
- $list = (new WorkTypeMode())->getRoles(9,$orgId);
- $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($orgId,$code, $userId,$taskId=0,$dailyId=0)
- {
- $qrcode_arr = get_qrcode_arr($code);
- if(!$qrcode_arr){
- $this->error = '该任务不存在';
- return false;
- }
- if(!in_array($qrcode_arr['type'],['address','daily'])){
- $this->error = '二维码不正确';
- return false;
- }
- // if($qrcode_arr['type'] != 'daily'){
- // $this->error = '该任务不存在';
- // return false;
- // }
- if($qrcode_arr['ucode'] != config('app.ucode')){
- $this->error = '该任务不存在';
- return false;
- }
- if($qrcode_arr['type']=='address'){
- $addressId = $qrcode_arr['id'];
- $qrcode_arr['id'] =Db::name('daily')
- ->where('address_id',$addressId)
- ->value('id');
- if(empty($qrcode_arr['id'])){
- $this->error = '当前地点未绑定日常工作';
- return false;
- }
- }
- if($taskId > 0 ){
- if($qrcode_arr['id'] != $dailyId){
- $this->error = '地点不正确';
- return false;
- }
- $task = Db::name('daily_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;
- }
- // $taskAddr = Db::name('daily_task_addr')
- // ->where('task_id',$task['id'])
- // ->column('daily_id');
- // if(!in_array($qrcode_arr['id'],$taskAddr)){
- // $this->error = '此任务下没有该地点';
- // return false;
- // }
- $workerAuth = 1;
- }else{
- $daily =Db::name('daily_user')
- ->where('daily_id',$qrcode_arr['id'])
- ->where('user_id',$userId)
- ->find();
- $workerAuth = $daily?1:0;
- }
- if($qrcode_arr['type']=='address'){
- $map[] = ['org_id','=',$orgId];
- $map[] = ['id','=',$addressId];
- $map[] = ['del','=',0];
- $map[] = ['enable','=',1];
- // if($addressId != $ysid){
- // $map[] = ['del','=',$addressId];
- // $map[] = ['enable','=',$addressId];
- // }
- $daily =Db::name('address')->where($map)->find();
- }else{
- $daily =Db::name('daily')->where([
- 'org_id' => $orgId,
- 'id' => $qrcode_arr['id'],
- 'del' => 0,
- 'enable' => 1
- ])->find();
- }
- if (!$daily) {
- $this->error = '该任务不存在';
- return false;
- }
- $lookAllAuth = (new Roles())->getAppAuth($userId,AppAuth::DAILY_LOOK_ALL_AUTH);
- $ret = [
- 'daily_id' => $qrcode_arr['id'],
- 'worker_auth' => $workerAuth,
- 'look_all_auth' => $lookAllAuth?1:0
- ];
- return $ret;
- }
- //日常工作任务检查项
- public function dailyInfo($id,$orgId){
- $daily = $this
- ->where([
- 'org_id' => $orgId,
- 'id' => $id,
- 'del' => 0,
- 'enable' => 1,
- ])->find();
- if (!$daily) {
- $this->error = '该任务不存在';
- return false;
- }
- $formId = empty($daily['daily_form']) ? [] : explode(',', $daily['daily_form']);
- $dailyForm = Db::name('daily_form')
- ->where(['del' => 0, 'enable' => 1])
- ->where('id','in', $formId)
- ->select();
- $daily['title'] = Db::name('address')
- ->where('id',$daily['address_id'])
- ->value('title');
- $daily['daily_form'] = $dailyForm;
- return $daily;
- }
- public function taskAddrAll($taskId){
- $info = Db::name('daily_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('daily_task_user dtu','dtu.user_id=u.id')
- ->where('dtu.task_id',$info['id'])
- ->where('u.del',0)
- ->where('u.enable',1)
- ->select();
- $info['daily'] = Db::name('daily')
- ->alias('d')
- ->field('d.id,d.title,d.address_id')
- ->join('daily_task_addr dta','dta.daily_id=d.id')
- ->where('dta.task_id',$info['id'])
- ->where('d.del',0)
- ->where('d.enable',1)
- ->select();
- foreach ($info['daily'] as $k=>$v){
- $record = Db::name('daily_record')
- ->where('task_id',$taskId)
- ->where('daily_id',$v['id'])
- ->find();
- $info['daily'][$k]['title'] = Db::name('address')
- ->where('id',$v['address_id'])
- ->value('title');
- $info['daily'][$k]['status'] = $record ? 1 : 0;
- $info['daily'][$k]['daily_record_id'] = $record ? $record['id'] : 0;
- }
- return $info;
- }
- public function myTaskRecord($page,$size,$userId,$orgId){
- $record = Db::name('daily_task_user')
- ->alias('a')
- ->join('daily_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,address_id')
- ->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){
- $list[$k]['title'] = '';
- if($v['address_id'] >0){
- $list[$k]['title'] = Db::name('address')
- ->where('id',$v['address_id'])
- ->value('title');
- }
- $query = Db::name('daily_record')
- ->where('org_id',$orgId)
- ->where('daily_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_daily_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)];
- }
- }
|