| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | <?phpnamespace app\common\model;use think\Db;class ConveyCron extends Base{    protected $createTime = 'create_time';    protected $updateTime = 'update_time';    protected $table = 'convey_cron';    protected $validateName = 'ConveyCron';    public function updates(){        $data = request()->post();        $data['org_id'] =cur_org_id();        $data['create_user_id'] = is_login();//        halt($data);        $result = validate($this->validateName)->check($data,[],'');        if(true !== $result){            $this->error = validate($this->validateName)->getError();            return false;        }        $id = $data['id'];        unset($data['id']);        if($id > 0){            $data['update_time'] = date('Y-m-d H:i:s');            $ret = $this->allowField(true)->save($data,['id'=>$id]);        }else{            $data['create_time'] = date('Y-m-d H:i:s');            $ret = $this->allowField(true)->save($data);        }        if(!$ret){            $this->error = '操作失败';            return false;        }        return true;    }    public function plan($orgId = 0){        $curday = date("Ymd");        $week = date("w");        $map[] = ['del','=',0];        $map[] = ['week','=',$week];        $map[] = ['update_day','<',$curday];        if($orgId > 0){            $map[] = ['org_id','=',$orgId];        }        $lists = Db::name('convey_cron')->where($map)->limit(100)->fetchSql(false)->select();//        halt($lists);        $lists = $lists?$lists:[];        Db::startTrans();        try{            foreach ($lists as $k=>$v){                $conveyCate = Db::name('convey_cate')->where('id',$v['type'])->find();                $conveyTime = Db::name('time')->where('id',$conveyCate['time_id'])->find();                $odata = [                    'org_id' => $v['org_id'],                    'sn' => get_unique_sn(get_config('sn_prefix')),                    'dep_id' => $v['dep_id'],                    'user_id' => $v['create_user_id'],                    'order_mode' => empty($v['to_user_ids'])?1:4,                    'content' => $v['content'],                    'create_time' => getTime(),                    'source_type' => 2,                    'work_type_mode' => 3,                    'create_yyyy' => date("Y"),                    'create_yyyymm' => date("Ym"),                    'create_yyyymmdd' => date("Ymd"),                ];                if($odata['order_mode'] == 4){                    $odata['send_time'] = getTime();                }                $orderId = Db::name('orders')->insertGetId($odata);                if($orderId <= 0){                    exception("操作失败1");                }                $xqtimeint = strtotime(date("Y-m-d")." ".$v['xq_time']);                $xqtime =date("Y-m-d H:i:s",$xqtimeint);                $ywctimeint = $xqtimeint + $conveyTime['bz_time']*60;                $ywctime =date("Y-m-d H:i:s",$ywctimeint);                $ocdata = [                    'order_id' => $orderId,                    'type' => $v['type'],                    'start' => $v['start'],                    'end' => $v['end'],                    'xq_time' => $xqtime,                    'ywc_time' => $ywctime,                    'device_id' => $v['device_id'],                    'priority' => $v['priority'],                ];                $ocId = Db::name('order_convey')->insertGetId($ocdata);                if($ocId <= 0){                    exception("操作失败2");                }                if($conveyCate['cate'] == 1){ // 病人运送                    $ocpdata = [                        'order_id' => $orderId,                        'bed_number' => $v['bed_number'],                        'name' => $v['name']                    ];                    $ocpId = Db::name('order_convey_patient')->insertGetId($ocpdata);                    if($ocpId <= 0){                        exception("操作失败3");                    }                }                if($v['tjaddrs']){                    $addrs = explode(',',$v['tjaddrs']);                    foreach ($addrs as $kk=>$vv){                        $ocedata = [                            'order_id' => $orderId,                            'addr' => $vv,                            'order_convey_id' => $ocId,                            'create_time' => getTime()                        ];                        $oceId = Db::name('order_convey_end')->insertGetId($ocedata);                        if($oceId <= 0){                            exception("操作失败4");                        }                    }                }                if(!empty($v['to_user_ids'])){                    $uids = explode(',',$v['to_user_ids']);                    $sns = [];                    foreach ($uids as $kk=>$vv){                        $tododata = [                            'order_id' => $orderId,                            'to_user_id' => $vv,                            'todo_content' => $v['todo_content'],                            'org_id' => $v['org_id'],                            'create_time' => getTime(),                            'todo_mode' => 1,                            'work_type_mode' => 3,                            'create_yyyy' => date("Y"),                            'create_yyyymm' => date("Ym"),                            'create_yyyymmdd' => date("Ymd"),                        ];                        $tododata['sn'] = get_unique_sn(get_config('sn_prefix'));                        while (true){                            if(in_array($tododata['sn'],$sns)){                                $tododata['sn'] = get_unique_sn(get_config('sn_prefix'));                            }else{                                $sns[] = $tododata['sn'];                                break;                            }                        }                        $todoId = Db::name('todo')->insertGetId($tododata);                        if($todoId<=0){                            exception("操作失败5");                        }                    }                }                Db::name('convey_cron')->where('id',$v['id'])->update(['update_day'=>$curday,'update_time'=>getTime()]);            }            Db::commit();            return true;        }catch (\Exception $exception){            trace($exception->getMessage());            Db::rollback();            return false;        }    }}
 |