| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 | <?php/** * Created by PhpStorm. * User: Administrator * Date: 2020/4/30 0030 * Time: 15:57 */namespace App\Http\Controllers\Admin\Flow;use App\Http\Controllers\Controller;use App\Http\Models\FlowInfoTpl;use App\Http\Models\FlowPlan;use App\Http\Models\FlowStage;use App\Http\Models\Site;use App\Http\Models\User;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;/** *  项目管理 详情下 流程规划 * Class PlanController * @package App\Http\Controllers\Admin\Flow */class PlanController extends Controller{    public function index($siteId)    {        $week = date('YW');        $where = ['site_id' => $siteId, 'week' => $week];        $nowPlanList = FlowPlan::query()->where($where)->get();        $nextWeek = date('YW', strtotime('+1 week'));        $nextWhere = ['site_id' => $siteId, 'week' => $nextWeek];        $nextPlanList = FlowPlan::query()->where($nextWhere)->get();        $historyList = FlowPlan::query()->where([['site_id', '=', $siteId], ['week', '<', $week]])->get()->groupBy('week')->toArray();        foreach ($historyList as $key => $value) {            foreach ($value as $kk => $vv) {                $value[$kk]['user_ids'] = explode(',', $vv['user_ids']) ?? '';            }            $historyList[$key] = $value;        }        $roleScope = array_keys(FlowInfoTpl::RoleScope);        unset($roleScope[1]); //删除客户        $userList = User::query()->select(['id', 'nickname', 'role_id'])->whereIn('role_id', $roleScope)            ->get()->toArray();        $site = Site::query()->select(['cn_title'])->find($siteId);        $userList[] = ['id' => -1, 'role_id' => -1, 'nickname' => $site->cn_title ?? '站点名称'];        foreach ($nowPlanList as $key => $value) {            $nowPlanList[$key]->user_ids = explode(',', $value->user_ids) ?? '';        }        foreach ($nextPlanList as $key => $value) {            $nextPlanList[$key]->user_ids = explode(',', $value->user_ids) ?? '';        }        return view('admin.flow.plan', [            'siteId' => $siteId,            'nowPlanList' => $nowPlanList,            'nextPlanList' => $nextPlanList,            'historyList' => $historyList,            'userList' => $userList,        ]);    }    //规划保存    public function planSave(Request $request, $siteId)    {        $isNext = $request->input('isNext');        $dataList = $request->input('dataList') ?? [];        $isMove = $request->input('isMove');        $week = date('YW');        if ($isNext) {            $week = date('YW', strtotime('+1 week'));        }        if ($isMove) {            $week = date('YW', strtotime('+1 week'));            FlowPlan::query()->where(['id' => $isMove])->update(array('week' => $week));            return response()->json(['message' => '操作成功']);        }        $where = ['site_id' => $siteId, 'week' => $week];        $requestIds = array_column($dataList, 'id');        $ids = FlowPlan::query()->where($where)->pluck('id')->toArray();        $delIds = array_diff($ids, $requestIds);        if ($delIds) {            FlowPlan::query()->whereIn('id', $delIds)->delete();        }        foreach ($dataList as $item) {            if (!empty($item['user_ids'])) {                $userIds = implode(',', $item['user_ids']);            }            if (!empty($item['id'])) {                FlowPlan::query()->where(['id' => $item['id']])->delete();            }            FlowPlan::query()->create([                'site_id' => $siteId,                'done_date' => $item['done_date'] ?? null,                'title' => $item['title'] ?? '',                'username' => $item['username'] ?? '',                'remark' => $item['remark'] ?? '',                'user_ids' => $userIds ?? '',                'week' => $week            ]);        }        return response()->json(['message' => '操作成功']);    }    //流程编辑    public function planEdit(Request $request)    {        $planId = $request->input('planId');        $title = $request->input('title');        $doneDate = $request->input('doneDate');        $username = $request->input('username');        $remark = $request->input('remark');        FlowPlan::query()->where(['id' => $planId])->update([            'title' => $title,            'done_date' => $doneDate,            'username' => $username,            'remark' => $remark,        ]);        return response()->json(['message' => '操作成功']);    }    //流程历史删除    public function planHistoryDel(Request $request)    {        $planId = $request->input('planId');        FlowPlan::query()->where(['id' => $planId])->delete();        return response()->json(['message' => '操作成功']);    }    public function historyUpdate(Request $request, $id)    {        if (!$request->ajax()) {            $flowPlan = FlowPlan::query()->where(['id' => $id])->first();            $flowPlan->user_ids = explode(',', $flowPlan->user_ids) ?? '';            $roleScope = array_keys(FlowInfoTpl::RoleScope);            unset($roleScope[1]); //删除客户            $site = Site::query()->where('id', $flowPlan->site_id)->first();            $userList = User::query()->select(['id', 'nickname', 'role_id'])->whereIn('role_id', $roleScope)                ->get()->toArray();            $userList[] = ['id' => -1, 'role_id' => -1, 'nickname' => $site->cn_title ?? '站点名称'];            return view('admin.flow.history_update', [                'flowPlan' => $flowPlan,                'userList' => $userList,            ]);        }        $request = $request->all();        $update = [            'done_date' => $request['done_date'] ?? date('Y-m-d'),            'username' => $request['username'] ?? '',            'title' => $request['title'] ?? '',            'remark' => $request['remark'] ?? '',            'user_ids' => implode(',', $request['user_ids']) ?? '',        ];        FlowPlan::query()->where('id', $request['id'])->update($update);        return response()->json(['message' => '操作成功']);    }    public function extension($siteId)    {        $stageList = FlowStage::query()->where(['site_id' => $siteId])->get();        foreach ($stageList as $item) {            $extension = explode(',', $item->extension);            $item->client_cause = 0;            if (in_array(1, $extension)) {                $item->client_cause = 1;            }            $item->collection_cause = 0;            if (in_array(2, $extension)) {                $item->collection_cause = 1;            }            $item->plan_cause = 0;            if (in_array(3, $extension)) {                $item->plan_cause = 1;            }            $item->design_cause = 0;            if (in_array(4, $extension)) {                $item->design_cause = 1;            }            $item->project_progress_cause = 0;            if (in_array(5, $extension)) {                $item->project_progress_cause = 1;            }            $item->memo_cause = 0;            if (in_array(6, $extension)) {                $item->memo_cause = 1;            }            if ($item->expected_date) {                $item->expected_date = date('Y-m-d', strtotime($item->expected_date));            }            if ($item->complete_date) {                $item->complete_date = date('Y-m-d', strtotime($item->complete_date));            }        }        return view('admin.flow.extension', [            'siteId' => $siteId,            'stageList' => $stageList,        ]);    }}
 |