AlarmOrderController.php 10.2 KB
Newer Older
Administrator's avatar
Administrator committed
1 2 3 4
<?php

namespace App\Http\Controllers;

Administrator's avatar
Administrator committed
5 6
use Carbon\Carbon;
use Illuminate\Database\QueryException;
Administrator's avatar
Administrator committed
7 8 9 10
use Illuminate\Http\Request;
use App\Models\AlarmOrder;
use Illuminate\Support\Facades\DB;
use App\Models\AlarmOrderSchedule;
冯超鹏's avatar
冯超鹏 committed
11
use Illuminate\Support\Facades\Auth;
Administrator's avatar
Administrator committed
12 13 14 15 16 17 18 19 20 21

class AlarmOrderController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
冯超鹏's avatar
冯超鹏 committed
22
        $where = [];
Administrator's avatar
Administrator committed
23
        $whereBetween = [0, date('Y-m-d H:i:s')];
冯超鹏's avatar
冯超鹏 committed
24
        $limit = 20;
Administrator's avatar
Administrator committed
25 26 27
        if($request->input('limit') > 0) {
            $limit = $request->input('limit');
        }
冯超鹏's avatar
冯超鹏 committed
28 29 30 31
        $offset = $limit * ($request->input('page') - 1);
        if($request->input('isuser') == 'user'){

            $where[] = ['u.id','=',Auth::id()];
冯超鹏's avatar
冯超鹏 committed
32
            print_r(explode(',',$request->input('userstate')));
冯超鹏's avatar
冯超鹏 committed
33
        }
Administrator's avatar
Administrator committed
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
        if($request->input('order_num')) {
            $where[] = ['alarm_order.order_num' , '=', $request->input('order_num')];
        }
        if($request->input('deviceNum')) {
            $where[] = ['r.devicenumber' , '=', $request->input('deviceNum')];
        }
        if($request->input('state') != 99) {
            $where[] = ['alarm_order.state' , '=', $request->input('state')];
        }
        if($request->input('user_id')) {
            $where[] = ['alarm_order.user_id' , '=', $request->input('user_id')];
        }
        if($request->input('timeRange') != "null") {
            $times = explode(',', $request->input('timeRange'));
            $whereBetween = [$times[0], $times[1]];
        }
冯超鹏's avatar
冯超鹏 committed
50
        $orders = AlarmOrder::selectRaw('
Administrator's avatar
Administrator committed
51 52 53 54
            FROM_UNIXTIME(r.starttime) AS start_time,
            FROM_UNIXTIME(r.endtime) AS end_time,
            alarm_order.*,
            r.devicenumber, r.concentration, r.location, r.policestatus, r.shutoff_status,
冯超鹏's avatar
冯超鹏 committed
55
            d.devicecoord, d.username,t.tname,
Administrator's avatar
Administrator committed
56 57
            u.name, u.phone_number,
            s.status_name
Administrator's avatar
Administrator committed
58
            ')
冯超鹏's avatar
冯超鹏 committed
59 60 61
            ->leftjoin('reportpolice AS r', 'r.id', '=', 'alarm_order.reportpolice_id')
            ->leftjoin('device AS d', 'd.id', '=', 'alarm_order.device_id')
            ->leftjoin('users AS u', 'alarm_order.user_id', '=', 'u.id')
62
            ->leftjoin('status AS s', 's.id', '=', 'r.policestatus')
冯超鹏's avatar
冯超鹏 committed
63 64 65
            ->leftjoin('device_type AS t', 'r.policestatus', '=', 't.tid')
            ->offset($offset)
            ->where($where)
Administrator's avatar
Administrator committed
66
            ->whereBetween('alarm_order.created_at',$whereBetween)
冯超鹏's avatar
冯超鹏 committed
67
            ->limit($limit)
Administrator's avatar
Administrator committed
68
            ->orderByDesc('id')
冯超鹏's avatar
冯超鹏 committed
69
            ->get()->toArray();
Administrator's avatar
Administrator committed
70
        $count = AlarmOrder::leftjoin('reportpolice AS r', 'r.id', '=', 'alarm_order.reportpolice_id')
冯超鹏's avatar
冯超鹏 committed
71
            ->leftjoin('users AS u', 'alarm_order.user_id', '=', 'u.id')
Administrator's avatar
Administrator committed
72
            ->whereBetween('alarm_order.created_at',$whereBetween)
冯超鹏's avatar
冯超鹏 committed
73 74
            ->where($where)
            ->count();
Administrator's avatar
Administrator committed
75 76 77 78 79 80
        $meta = [
            'count' => $count,
            'current_page' => $request->input('page'),
            'limit' => $limit
        ];
        return $this->jsonSuccessData(compact('orders', 'meta'));
Administrator's avatar
Administrator committed
81 82 83

    }

冯超鹏's avatar
冯超鹏 committed
84 85 86 87 88 89 90 91 92 93 94 95 96
    public function userworklist(Request $request){
        $orders = AlarmOrder::selectRaw('
            FROM_UNIXTIME(r.starttime) AS start_time,
            FROM_UNIXTIME(r.endtime) AS end_time,
            alarm_order.*,
            r.devicenumber, r.concentration, r.location, r.policestatus, r.shutoff_status,
            d.devicecoord, d.username,t.tname,
            u.name, u.phone_number,
            s.status_name
            ')
            ->leftjoin('reportpolice AS r', 'r.id', '=', 'alarm_order.reportpolice_id')
            ->leftjoin('device AS d', 'd.id', '=', 'alarm_order.device_id')
            ->leftjoin('users AS u', 'alarm_order.user_id', '=', 'u.id')
97
            ->leftjoin('status AS s', 's.id', '=', 'r.policestatus')
冯超鹏's avatar
冯超鹏 committed
98 99 100
            ->leftjoin('device_type AS t', 'r.policestatus', '=', 't.tid')
            ->whereIn('alarm_order.state',explode(',',$request->input('userstate')))
            ->where('u.id','=',Auth::id())
Administrator's avatar
Administrator committed
101
            ->orderByDesc('id')
冯超鹏's avatar
冯超鹏 committed
102 103 104
            ->get()->toArray();
        return $this->jsonSuccessData($orders);
    }
Administrator's avatar
Administrator committed
105 106 107 108 109 110 111 112 113 114
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $reportpolice_id = $request->input('reportpolice_id');
        $orderNum = date('YmdHis') .
Administrator's avatar
Administrator committed
115 116 117
            substr($request->input('device_num'), -4).
            $request->input('policestatus').
            $request->input('shutoff_status');
Administrator's avatar
Administrator committed
118

Administrator's avatar
Administrator committed
119 120
        DB::beginTransaction();
        try {
Administrator's avatar
Administrator committed
121 122 123 124
            // 获取device_id
            $device = DB::table('device')
                ->select('id')
                ->where('devicenum', $request->input('device_num'))
Administrator's avatar
Administrator committed
125
                ->first();
Administrator's avatar
Administrator committed
126 127 128
            if(!$device) {
                return $this->jsonErrorData(500, '设备编号不存在!');
            }
Administrator's avatar
Administrator committed
129 130 131
            $order = new AlarmOrder();
            $insertId = $order->insertGetId([
                'order_num' => $orderNum,
Administrator's avatar
Administrator committed
132
                'device_id' => $device->id,
Administrator's avatar
Administrator committed
133
                'user_id' => $request->input('user_id'),
Administrator's avatar
Administrator committed
134 135 136 137 138 139 140 141 142 143 144 145 146
                'reportpolice_id' => $reportpolice_id,
                'created_at' => Carbon::now(),
            ]);

            // 进度表新增
            $orderSchedule = new AlarmOrderSchedule();
            $orderSchedule->alarm_order_id = $insertId;
            $orderSchedule->schedule = 1;
            $orderSchedule->created_at = Carbon::now();
            $orderSchedule->save();
            DB::commit();
        } catch (QueryException $exception) {
            DB::rollBack();
Administrator's avatar
Administrator committed
147
            return $this->jsonErrorData(500,'工单创建失败');
Administrator's avatar
Administrator committed
148
        }
Administrator's avatar
Administrator committed
149 150 151 152

        if($insertId) {
            return $this->jsonSuccessData('已生成工单!');
        }else{
Administrator's avatar
Administrator committed
153
            return $this->jsonErrorData(500, '工单创建失败');
Administrator's avatar
Administrator committed
154 155 156 157 158 159 160 161 162
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
冯超鹏's avatar
冯超鹏 committed
163
    public function show(Request $request)
Administrator's avatar
Administrator committed
164
    {
冯超鹏's avatar
冯超鹏 committed
165 166 167 168

        $order = AlarmOrder::leftjoin('reportpolice AS r', 'r.id', '=', 'alarm_order.reportpolice_id')
            ->leftjoin('device AS d', 'd.id', '=', 'alarm_order.device_id')
            ->leftjoin('users AS u', 'alarm_order.user_id', '=', 'u.id')
169
            ->leftjoin('status AS s', 's.id', '=', 'r.policestatus')
冯超鹏's avatar
冯超鹏 committed
170 171 172 173 174 175 176 177 178 179 180 181 182 183
            ->leftjoin('device_type AS t', 'r.policestatus', '=', 't.tid')
            ->leftjoin('gas AS g', 'd.status', '=', 'g.id')
            ->leftjoin('danwei AS w', 'd.devicemonad', '=', 'w.id')
            ->where('alarm_order.id', '=', $request->input('id'))
            ->selectRaw('
            FROM_UNIXTIME(r.starttime) AS start_time,
            FROM_UNIXTIME(r.endtime) AS end_time,
            alarm_order.*,
            r.devicenumber, r.concentration, r.location, r.policestatus, r.shutoff_status,
            d.devicecoord, d.username,t.tname,d.deviceinfo,g.gas,w.danwei,
            u.name, u.phone_number,
            s.status_name
            ')
            ->first();
Administrator's avatar
Administrator committed
184 185
        // 工单进度
        $order['step'] = AlarmOrderSchedule::where('alarm_order_id', '=', $request->input('id'))->get();
Administrator's avatar
Administrator committed
186 187 188 189 190
        // 图片
        $order['images'] = DB::table('userimage')
            ->select('path')
            ->where('alarm_order_id', $request->input('id'))
            ->get()->toArray();
冯超鹏's avatar
冯超鹏 committed
191
       return $this->jsonSuccessData($order);
Administrator's avatar
Administrator committed
192 193 194 195 196 197 198 199 200
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
冯超鹏's avatar
冯超鹏 committed
201
    public function update(Request $request)
Administrator's avatar
Administrator committed
202
    {
Administrator's avatar
Administrator committed
203 204 205 206 207
        $data = $request->all();
        if(isset($data['schedule'])) {
            DB::beginTransaction();
            try {
                AlarmOrderSchedule::insert(array_merge(
冯超鹏's avatar
冯超鹏 committed
208
                    json_decode($data['schedule'],true),
冯超鹏's avatar
冯超鹏 committed
209
                    ['created_at' => Carbon::now(), 'alarm_order_id' => $data['id']]));
Administrator's avatar
Administrator committed
210
                unset($data['schedule']);
冯超鹏's avatar
冯超鹏 committed
211
                $order = AlarmOrder::where('id', $data['id'])
Administrator's avatar
Administrator committed
212 213 214 215 216 217 218 219
                    ->update(array_merge($data, ['updated_at' => Carbon::now()]));
                DB::commit();
            } catch (QueryException $exception) {
                DB::rollBack();
                return $this->jsonErrorData(500, '工单更新失败!');
            }

        }else{
冯超鹏's avatar
冯超鹏 committed
220
            $order = AlarmOrder::where('id', $data['id'])
Administrator's avatar
Administrator committed
221 222
                ->update(array_merge($data, ['updated_at' => Carbon::now()]));
        }
Administrator's avatar
Administrator committed
223
        if($order) {
Administrator's avatar
Administrator committed
224
            return $this->jsonSuccessData('工单更新成功');
Administrator's avatar
Administrator committed
225
        }else{
Administrator's avatar
Administrator committed
226
            return $this->jsonErrorData(500, '工单更新失败!');
Administrator's avatar
Administrator committed
227 228 229 230 231 232 233 234 235 236 237 238 239
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $state = AlarmOrder::destroy($id);
        if($state) {
Administrator's avatar
Administrator committed
240
            return $this->jsonSuccessData('删除成功');
Administrator's avatar
Administrator committed
241
        }else{
Administrator's avatar
Administrator committed
242
            return $this->jsonErrorData(500, '删除工单失败!');
Administrator's avatar
Administrator committed
243 244
        }
    }
Administrator's avatar
Administrator committed
245 246 247 248 249 250

    /**
     * 获取派单用户
     */
    public function getUserInfo()
    {
251
        if ($this->isadmin()) {
Administrator's avatar
Administrator committed
252
            $users = DB::table('users')
Administrator's avatar
Administrator committed
253
                ->select('users.id', 'users.name', 'users.username', 'users.phone_number', 'ur.name AS role_name', 'ap.area_name AS province', 'aa.area_name AS area', 'ac.area_name AS city')
Administrator's avatar
Administrator committed
254
                ->leftJoin('user_roles AS ur', 'ur.id', '=', 'users.user_role_id')
Administrator's avatar
Administrator committed
255 256 257
                ->leftJoin('areachina AS ap', 'ap.areaid', '=', 'users.provinceid')
                ->leftJoin('areachina AS aa', 'aa.areaid', '=', 'users.areaid')
                ->leftJoin('areachina AS ac', 'ac.areaid', '=', 'users.cityid')
Administrator's avatar
Administrator committed
258 259 260
                ->where('users.user_role_id', '!=', 0)
                ->get()->toArray();
            return $this->jsonSuccessData($users);
261
        } else {
Administrator's avatar
Administrator committed
262 263
            return $this->jsonErrorData(500, '没有权限, 请联系管理员!');
        }
264
    }
Administrator's avatar
Administrator committed
265

冯超鹏's avatar
冯超鹏 committed
266 267
    //获取当前订单为第几步
    public function orderin(Request $request){
冯超鹏's avatar
冯超鹏 committed
268 269
        $orderid = $request->input('id');
        $status = AlarmOrder::where('id','=',$orderid)->select('isorderone','id')->first();
冯超鹏's avatar
冯超鹏 committed
270 271
        return $this->jsonSuccessData($status);
    }
Administrator's avatar
Administrator committed
272
}