PlanController.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2020/4/30 0030
  6. * Time: 15:57
  7. */
  8. namespace App\Http\Controllers\Admin\Flow;
  9. use App\Http\Controllers\Controller;
  10. use App\Http\Models\FlowInfoTpl;
  11. use App\Http\Models\FlowPlan;
  12. use App\Http\Models\FlowStage;
  13. use App\Http\Models\Site;
  14. use App\Http\Models\User;
  15. use Illuminate\Http\Request;
  16. use Illuminate\Support\Facades\DB;
  17. /**
  18. * 项目管理 详情下 流程规划
  19. * Class PlanController
  20. * @package App\Http\Controllers\Admin\Flow
  21. */
  22. class PlanController extends Controller
  23. {
  24. public function index($siteId)
  25. {
  26. $week = date('YW');
  27. $where = ['site_id' => $siteId, 'week' => $week];
  28. $nowPlanList = FlowPlan::query()->where($where)->get();
  29. $nextWeek = date('YW', strtotime('+1 week'));
  30. $nextWhere = ['site_id' => $siteId, 'week' => $nextWeek];
  31. $nextPlanList = FlowPlan::query()->where($nextWhere)->get();
  32. $historyList = FlowPlan::query()->where([['site_id', '=', $siteId], ['week', '<', $week]])->get()->groupBy('week')->toArray();
  33. foreach ($historyList as $key => $value) {
  34. foreach ($value as $kk => $vv) {
  35. $value[$kk]['user_ids'] = explode(',', $vv['user_ids']) ?? '';
  36. }
  37. $historyList[$key] = $value;
  38. }
  39. $roleScope = array_keys(FlowInfoTpl::RoleScope);
  40. unset($roleScope[1]); //删除客户
  41. $userList = User::query()->select(['id', 'nickname', 'role_id'])->whereIn('role_id', $roleScope)
  42. ->get()->toArray();
  43. $site = Site::query()->select(['cn_title'])->find($siteId);
  44. $userList[] = ['id' => -1, 'role_id' => -1, 'nickname' => $site->cn_title ?? '站点名称'];
  45. foreach ($nowPlanList as $key => $value) {
  46. $nowPlanList[$key]->user_ids = explode(',', $value->user_ids) ?? '';
  47. }
  48. foreach ($nextPlanList as $key => $value) {
  49. $nextPlanList[$key]->user_ids = explode(',', $value->user_ids) ?? '';
  50. }
  51. return view('admin.flow.plan', [
  52. 'siteId' => $siteId,
  53. 'nowPlanList' => $nowPlanList,
  54. 'nextPlanList' => $nextPlanList,
  55. 'historyList' => $historyList,
  56. 'userList' => $userList,
  57. ]);
  58. }
  59. //规划保存
  60. public function planSave(Request $request, $siteId)
  61. {
  62. $isNext = $request->input('isNext');
  63. $dataList = $request->input('dataList') ?? [];
  64. $isMove = $request->input('isMove');
  65. $week = date('YW');
  66. if ($isNext) {
  67. $week = date('YW', strtotime('+1 week'));
  68. }
  69. if ($isMove) {
  70. $week = date('YW', strtotime('+1 week'));
  71. FlowPlan::query()->where(['id' => $isMove])->update(array('week' => $week));
  72. return response()->json(['message' => '操作成功']);
  73. }
  74. $where = ['site_id' => $siteId, 'week' => $week];
  75. $requestIds = array_column($dataList, 'id');
  76. $ids = FlowPlan::query()->where($where)->pluck('id')->toArray();
  77. $delIds = array_diff($ids, $requestIds);
  78. if ($delIds) {
  79. FlowPlan::query()->whereIn('id', $delIds)->delete();
  80. }
  81. foreach ($dataList as $item) {
  82. if (!empty($item['user_ids'])) {
  83. $userIds = implode(',', $item['user_ids']);
  84. }
  85. if (!empty($item['id'])) {
  86. FlowPlan::query()->where(['id' => $item['id']])->delete();
  87. }
  88. FlowPlan::query()->create([
  89. 'site_id' => $siteId,
  90. 'done_date' => $item['done_date'] ?? null,
  91. 'title' => $item['title'] ?? '',
  92. 'username' => $item['username'] ?? '',
  93. 'remark' => $item['remark'] ?? '',
  94. 'user_ids' => $userIds ?? '',
  95. 'week' => $week
  96. ]);
  97. }
  98. return response()->json(['message' => '操作成功']);
  99. }
  100. //流程编辑
  101. public function planEdit(Request $request)
  102. {
  103. $planId = $request->input('planId');
  104. $title = $request->input('title');
  105. $doneDate = $request->input('doneDate');
  106. $username = $request->input('username');
  107. $remark = $request->input('remark');
  108. FlowPlan::query()->where(['id' => $planId])->update([
  109. 'title' => $title,
  110. 'done_date' => $doneDate,
  111. 'username' => $username,
  112. 'remark' => $remark,
  113. ]);
  114. return response()->json(['message' => '操作成功']);
  115. }
  116. //流程历史删除
  117. public function planHistoryDel(Request $request)
  118. {
  119. $planId = $request->input('planId');
  120. FlowPlan::query()->where(['id' => $planId])->delete();
  121. return response()->json(['message' => '操作成功']);
  122. }
  123. public function historyUpdate(Request $request, $id)
  124. {
  125. if (!$request->ajax()) {
  126. $flowPlan = FlowPlan::query()->where(['id' => $id])->first();
  127. $flowPlan->user_ids = explode(',', $flowPlan->user_ids) ?? '';
  128. $roleScope = array_keys(FlowInfoTpl::RoleScope);
  129. unset($roleScope[1]); //删除客户
  130. $site = Site::query()->where('id', $flowPlan->site_id)->first();
  131. $userList = User::query()->select(['id', 'nickname', 'role_id'])->whereIn('role_id', $roleScope)
  132. ->get()->toArray();
  133. $userList[] = ['id' => -1, 'role_id' => -1, 'nickname' => $site->cn_title ?? '站点名称'];
  134. return view('admin.flow.history_update', [
  135. 'flowPlan' => $flowPlan,
  136. 'userList' => $userList,
  137. ]);
  138. }
  139. $request = $request->all();
  140. $update = [
  141. 'done_date' => $request['done_date'] ?? date('Y-m-d'),
  142. 'username' => $request['username'] ?? '',
  143. 'title' => $request['title'] ?? '',
  144. 'remark' => $request['remark'] ?? '',
  145. 'user_ids' => implode(',', $request['user_ids']) ?? '',
  146. ];
  147. FlowPlan::query()->where('id', $request['id'])->update($update);
  148. return response()->json(['message' => '操作成功']);
  149. }
  150. public function extension($siteId)
  151. {
  152. $stageList = FlowStage::query()->where(['site_id' => $siteId])->get();
  153. foreach ($stageList as $item) {
  154. $extension = explode(',', $item->extension);
  155. $item->client_cause = 0;
  156. if (in_array(1, $extension)) {
  157. $item->client_cause = 1;
  158. }
  159. $item->collection_cause = 0;
  160. if (in_array(2, $extension)) {
  161. $item->collection_cause = 1;
  162. }
  163. $item->plan_cause = 0;
  164. if (in_array(3, $extension)) {
  165. $item->plan_cause = 1;
  166. }
  167. $item->design_cause = 0;
  168. if (in_array(4, $extension)) {
  169. $item->design_cause = 1;
  170. }
  171. $item->project_progress_cause = 0;
  172. if (in_array(5, $extension)) {
  173. $item->project_progress_cause = 1;
  174. }
  175. $item->memo_cause = 0;
  176. if (in_array(6, $extension)) {
  177. $item->memo_cause = 1;
  178. }
  179. if ($item->expected_date) {
  180. $item->expected_date = date('Y-m-d', strtotime($item->expected_date));
  181. }
  182. if ($item->complete_date) {
  183. $item->complete_date = date('Y-m-d', strtotime($item->complete_date));
  184. }
  185. }
  186. return view('admin.flow.extension', [
  187. 'siteId' => $siteId,
  188. 'stageList' => $stageList,
  189. ]);
  190. }
  191. }