| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | <?phpnamespace App\Http\Controllers\Wap;use App\Http\Models\ProjectFlowMemo;use App\Http\Models\Role;use App\Http\Models\Site;use App\Http\Models\User;use App\Http\Controllers\Controller;use App\Http\Services\FlowService;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;class SiteFlowController extends Controller{    //流程报告    public function index(Request $request, $type = 0)    {        $result = $request->all();        if (!empty($result)) {            $this->saveClientProjectFlow($result);        }        $user = auth()->user();        if (empty($user)) {            return view('admin/site/not_found', [                'tips' => 'error',                'siteId' => 0,            ]);        }        $projectFlowMemo = ProjectFlowMemo::query();        if (!empty($type)) {            $projectFlowMemo->whereRaw('FIND_IN_SET(?,roles)', [Role::TYPE_CUSTOMER]);        }        $siteIds = DB::table('user_has_sites')->where('user_id', $user->id)->first();        if (empty($siteIds)) {            return view('admin/site/not_found', [                'tips' => '暂无建站进度',                'siteId' => 0,            ]);        }        $flowList = $projectFlowMemo            ->with(['projectFlowMemoRelation'])            ->where('site_id', $siteIds->site_id)            ->get();        if (empty($flowList->toArray())) {            return view('admin/site/not_found', [                'tips' => '暂无建站进度',                'siteId' => 0,            ]);        }        $flowService = new FlowService();        //各阶段负责人        $flowService->getRoleUser($flowList, User::query()->pluck('nickname', 'id'));        //按阶段分组        $flowList = $flowList->groupBy('level')->toArray() ?? [];        //统计完成和没完成的阶段        $ids = $flowService->addUp($flowList);        $title = $projectFlowMemo                ->where('site_id', $siteIds->site_id)                ->groupBy('rank', 'level')                ->orderBy('level', 'asc')                ->pluck('rank', 'level')->toArray() ?? [];        foreach ($title as $key => $value) {            $title[$key] = $value . ':' . $key . ':' . $ids[$key] ?? '';        }        $result = array_combine($title, $flowList);        //所有阶段任务数量        $count = ProjectFlowMemo::query()->where('site_id', $siteIds->site_id)->count() ?? 0;        //没完成的        $toBeCompletedCount = ProjectFlowMemo::query()->where('site_id', $siteIds->site_id)->where('status', 0)->count() ?? 0;        $flowList = ProjectFlowMemo::query()            ->where('site_id', $siteIds->site_id)            ->orderBy('id', 'asc')->get();        if (!empty($flowList)) {            //最后的上线时间            $nodeDate = $flowList[count($flowList) - 1]['node_date'];            //延期的时间            if (date('Y-m-d') > $nodeDate) {                $diff = strtotime(date('Y-m-d')) - strtotime($nodeDate);                $newNodeDate = date('Y-m-d', (strtotime($nodeDate) + $diff));            }        }        //每个小阶段的起始和结束时间        [$taskLastDateStart, $taskLastDateEnd] = $flowService->getStageDate($result);        //这周一周日、下周一下周末        [$monday, $sunday, $nextMonday, $nextSunday] = $flowService->getThisMonDayAndNextMonday();        $thisWeekTaskList = $flowService->getWeekTaskList($siteIds->site_id, $monday, $sunday, 'this');        $nextWeekTaskList = $flowService->getWeekTaskList($siteIds->site_id, $nextMonday, $nextSunday, 'next');        return view('wap.site_flow', [            'list' => $result,            'count' => $count,            'nodeDate' => $nodeDate ?? '',            'toBeCompletedCount' => $toBeCompletedCount,            'scoreList' => ProjectFlowMemo::SCORE,            'type' => $type,            'taskLastDateStart' => $taskLastDateStart,            'taskLastDateEnd' => $taskLastDateEnd,            'newNodeDate' => $newNodeDate ?? '',            'thisWeekTaskList' => $thisWeekTaskList,            'nextWeekTaskList' => $nextWeekTaskList,            'site' => Site::query()->where('id', $siteIds->site_id)->value('cn_title') ?? '',        ]);    }    public function saveClientProjectFlow($result)    {        $data = [];        foreach ($result as $key => $item) {            //拆分表单提交过来的字段            $filed = explode('-', $key);            $data[] = [                'id' => $filed[0],                $filed[1] => $item,            ];        }        foreach ($data as $datum) {            ProjectFlowMemo::query()->where('id', $datum['id'])->update(['client_score' => $datum['client_score']]);        }    }}
 |