From 1e97e3f536ca0023432256eeeff514f47da39323 Mon Sep 17 00:00:00 2001 From: chenbo <709206448@qq.com> Date: Fri, 17 Nov 2023 10:52:12 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9D=91=E8=81=94=E7=BB=9C=E5=91=98-?= =?UTF-8?q?=E7=9D=A3=E4=BF=83=E5=B0=8F=E7=BB=84=E6=9C=8D=E5=8A=A1=E5=9B=A2?= =?UTF-8?q?=E9=98=9F=E5=85=A5=E8=82=A1=E4=BB=BB,=E9=95=87=E5=86=9C?= =?UTF-8?q?=E7=A7=91=E6=9C=8D=E5=8A=A1=E9=83=A8=E9=95=BF-=E7=9D=A3?= =?UTF-8?q?=E4=BF=83=E5=B0=8F=E7=BB=84=E6=9C=8D=E5=8A=A1=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E5=85=A5=E8=82=A1=E6=9D=91=E7=AE=A1=E7=90=86=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1,=E6=9D=91=E8=81=94=E7=BB=9C=E5=91=98?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1-=E5=85=A5=E8=82=A1=E7=94=B2=E6=96=B9?= =?UTF-8?q?=E5=85=AC=E5=8F=B8.=E6=94=B9=E4=B8=BA=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=EF=BC=8C=E7=BA=BF=E4=B8=8B=E8=BD=AC=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/approve/ApproveController.php | 51 +++++++- app/api/controller/TaskController.php | 119 ++++++++++++++++++ app/common/logic/task/TaskLogic.php | 105 ++++++++-------- app/common/model/Approve.php | 3 + 4 files changed, 222 insertions(+), 56 deletions(-) diff --git a/app/adminapi/controller/approve/ApproveController.php b/app/adminapi/controller/approve/ApproveController.php index 661f7b511..e0ad4ec2e 100644 --- a/app/adminapi/controller/approve/ApproveController.php +++ b/app/adminapi/controller/approve/ApproveController.php @@ -214,14 +214,22 @@ class ApproveController extends BaseAdminController $task->save(); } - // 小组服务公司股金上交 - if ($approve->type == Approve::APPROVE_TYPE_10) { - // 上交股金的公司 + // 小组服务公司股金上交 小组服务团队-入股任务 村联络员-督促小组服务团队入股任务 镇农科服务部长-督促小组服务团队入股村管理公司任务 + if ($approve->type == Approve::APPROVE_TYPE_10 || $approve->type == Approve::APPROVE_TYPE_11 || $approve->type == Approve::APPROVE_TYPE_13) { + // 小组服务公司 $subordinateCompany = Company::where(['id'=>$approve->department_id])->find(); - // 接收股金的公司 + // 村公司 $parentCompany = Company::where(['village'=>$subordinateCompany['village'], 'company_type'=>17])->find(); } + // 村管理公司股金上交 村联络员任务-入股甲方公司 + if ($approve->type == Approve::APPROVE_TYPE_12) { + // 村公司 + $subordinateCompany = Company::where(['id'=>$approve->department_id])->find(); + // 镇农科公司 负责区域包含有村公司的street码 + $parentCompany = Db::query("select id from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 41,'street'=>$subordinateCompany['street']], true)[0]; + } + $amount = $approve->amount; // 上交股金金额 $subordinateCompany->shareholder_money = $amount; @@ -235,7 +243,7 @@ class ApproveController extends BaseAdminController $approve->remark = $params['remark']; $approve->save(); - // 任务结算 + // 小组服务团队-入股任务结算 if ($approve->type == Approve::APPROVE_TYPE_10) { $taskSchedulingPaln = TaskSchedulingPlan::where(['task_id' => $task->id]) ->withJoin(['scheduling'], 'left') @@ -247,6 +255,39 @@ class ApproveController extends BaseAdminController $taskInfo = $task->toArray(); $this->taskSettlement($taskInfo, $subordinateCompany, $taskSchedulingPaln); } + // 村联络员-督促小组服务团队入股 + if ($approve->type == Approve::APPROVE_TYPE_11) { + $taskSchedulingPaln = TaskSchedulingPlan::where(['task_id' => $task->id]) + ->withJoin(['scheduling'], 'left') + ->where('scheduling.company_type', 17) + ->where('is_pay',0) + ->with(['template_info']) + ->select() + ->toArray()[0]; + TaskLogic::dealVillageTask4($taskSchedulingPaln, $approve); + } + // 村联络员-入股甲方公司 + if ($approve->type == Approve::APPROVE_TYPE_12) { + $taskSchedulingPaln = TaskSchedulingPlan::where(['task_id' => $task->id]) + ->withJoin(['scheduling'], 'left') + ->where('scheduling.company_type', 17) + ->where('is_pay',0) + ->with(['template_info']) + ->select() + ->toArray()[0]; + TaskLogic::dealVillageTask5($taskSchedulingPaln, $approve); + } + // 镇农科服务部长-督促小组服务团队入股村管理公司任务 + if ($approve->type == Approve::APPROVE_TYPE_13) { + $taskSchedulingPaln = TaskSchedulingPlan::where(['task_id' => $task->id]) + ->withJoin(['scheduling'], 'left') + ->where('scheduling.company_type', 41) + ->where('is_pay',0) + ->with(['template_info']) + ->select() + ->toArray()[0]; + TaskLogic::dealTownTask6($taskSchedulingPaln, $approve); + } Db::commit(); return $this->success('成功'); } diff --git a/app/api/controller/TaskController.php b/app/api/controller/TaskController.php index f6295da2f..89dd99d15 100644 --- a/app/api/controller/TaskController.php +++ b/app/api/controller/TaskController.php @@ -720,6 +720,8 @@ class TaskController extends BaseApiController } } + // 小组服务团队-入股任务提交 + public function commit_service_group_task() { try { @@ -757,4 +759,121 @@ class TaskController extends BaseApiController return $this->fail($e->getMessage()); } } + + // 村联络员-督促小组服务团队入股任务提交 + public function commit_village_task_4() + { + try { + $parmas = $this->request->param(); // id annex amount + $task = TaskLogic::detail($parmas); + if (empty($task)) { + $this->fail('任务不存在'); + } + $extend = $task['extend']; + $extend['is_commit'] = 1; + $extend['annex'] = $parmas['annex']; + $extend['file_type'] = $parmas['file_type']; + $extend['amount'] = $parmas['amount']; + + Task::where(['id' => $parmas['id']])->update(['extend' => json_encode($extend), 'update_time' => time(), 'director_uid' => $this->userId]); // director_uid 指派人 + + // 创建审批任务 + $approveModel = new Approve(); + $approveModel->type = Approve::APPROVE_TYPE_11; + $approveModel->flow_id = 1; + $approveModel->name = $task['title']; + $approveModel->admin_id = 0; // 后台发起人id 暂时为0 + $approveModel->user_id = $this->userId; // 前台发起人用户id + $approveModel->task_id = $task['id']; // 任务id + $approveModel->department_id = $this->userInfo['company_id']; // 公司id + $approveModel->check_status = 1; // 状态 0待审核,1审核中,2审核通过,3审核不通过,4撤销审核 + $approveModel->other_type = 6; + $approveModel->amount = $parmas['amount']; // 入股金额 + $approveModel->extend = json_encode($extend); + $approveModel->create_time = time(); + $approveModel->update_time = time(); + $re = $approveModel->save(); + return $this->success('ok', []); + } catch (Exception $e) { + return $this->fail($e->getMessage()); + } + } + + // 村联络员-入股甲方公司任务提交 + public function commit_village_task_5() + { + try { + $parmas = $this->request->param(); // id annex amount + $task = TaskLogic::detail($parmas); + if (empty($task)) { + $this->fail('任务不存在'); + } + $extend = $task['extend']; + $extend['is_commit'] = 1; + $extend['annex'] = $parmas['annex']; + $extend['file_type'] = $parmas['file_type']; + $extend['amount'] = $parmas['amount']; + + Task::where(['id' => $parmas['id']])->update(['extend' => json_encode($extend), 'update_time' => time(), 'director_uid' => $this->userId]); // director_uid 指派人 + + // 创建审批任务 + $approveModel = new Approve(); + $approveModel->type = Approve::APPROVE_TYPE_12; + $approveModel->flow_id = 1; + $approveModel->name = $task['title']; + $approveModel->admin_id = 0; // 后台发起人id 暂时为0 + $approveModel->user_id = $this->userId; // 前台发起人用户id + $approveModel->task_id = $task['id']; // 任务id + $approveModel->department_id = $this->userInfo['company_id']; // 公司id + $approveModel->check_status = 1; // 状态 0待审核,1审核中,2审核通过,3审核不通过,4撤销审核 + $approveModel->other_type = 6; + $approveModel->amount = $parmas['amount']; // 入股金额 + $approveModel->extend = json_encode($extend); + $approveModel->create_time = time(); + $approveModel->update_time = time(); + $re = $approveModel->save(); + return $this->success('ok', []); + } catch (Exception $e) { + return $this->fail($e->getMessage()); + } + } + + // 服务部长-督促小组服务团队入股村管理公司 + public function commit_town_service_manager_task_6() + { + try { + $parmas = $this->request->param(); // id annex amount + $task = TaskLogic::detail($parmas); + if (empty($task)) { + $this->fail('任务不存在'); + } + $extend = $task['extend']; + $extend['is_commit'] = 1; + $extend['annex'] = $parmas['annex']; + $extend['file_type'] = $parmas['file_type']; + $extend['amount'] = $parmas['amount']; + + Task::where(['id' => $parmas['id']])->update(['extend' => json_encode($extend), 'update_time' => time(), 'director_uid' => $this->userId]); // director_uid 指派人 + + // 创建审批任务 + $approveModel = new Approve(); + $approveModel->type = Approve::APPROVE_TYPE_13; + $approveModel->flow_id = 1; + $approveModel->name = $task['title']; + $approveModel->admin_id = 0; // 后台发起人id 暂时为0 + $approveModel->user_id = $this->userId; // 前台发起人用户id + $approveModel->task_id = $task['id']; // 任务id + $approveModel->department_id = $this->userInfo['company_id']; // 公司id + $approveModel->check_status = 1; // 状态 0待审核,1审核中,2审核通过,3审核不通过,4撤销审核 + $approveModel->other_type = 6; + $approveModel->amount = $parmas['amount']; // 入股金额 + $approveModel->extend = json_encode($extend); + $approveModel->create_time = time(); + $approveModel->update_time = time(); + $re = $approveModel->save(); + return $this->success('ok', []); + } catch (Exception $e) { + return $this->fail($e->getMessage()); + } + } } diff --git a/app/common/logic/task/TaskLogic.php b/app/common/logic/task/TaskLogic.php index 9c9604f3c..3e2caebc7 100644 --- a/app/common/logic/task/TaskLogic.php +++ b/app/common/logic/task/TaskLogic.php @@ -2205,7 +2205,19 @@ class TaskLogic extends BaseLogic break; case 'town_task_type_6': // 督促小组服务团队入股村联络员所成立的公司任务 - self::dealTownTask6($taskSchedulePlan); + // 后台手动审核 只判断任务是否超时 + Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]); + $taskTemplateInfo = $taskSchedulePlan['template_info']; + $taskDayCount = $taskTemplateInfo['day_count']; // 任务累计进行天数 + $stageDayTwoAccumulative = intval(bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two'])); // 第二阶段累计天数 第一+第二 + // 当前任务进行天数 <= 第一+第二阶段天数 只刷新任务时间 + if ($taskDayCount <= $stageDayTwoAccumulative) { + self::flushTaskTime($taskSchedulePlan); + return true; + } else { + (new Task())->closeTask($taskSchedulePlan['task_id']); + } +// self::dealTownTask6($taskSchedulePlan); break; case 'town_task_type_7': // 安全工作任务 @@ -2555,7 +2567,7 @@ class TaskLogic extends BaseLogic * 当前任务进行天数 < 第一+第二阶段天数 只刷新任务时间 * 当前任务进行天数 = 第一+第二阶段天数 判定任务是否完成 结算 分润 */ - private static function dealTownTask6($taskSchedulePlan) + public static function dealTownTask6($taskSchedulePlan, $approve) { Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]); $taskTemplateInfo = $taskSchedulePlan['template_info']; @@ -2566,25 +2578,16 @@ class TaskLogic extends BaseLogic $townCompany = Company::where('id', $taskTemplateInfo['company_id'])->find(); // 镇农科公司 $villageCompanyList = Company::where(['street' => $townCompany['street'], 'company_type'=> 17])->select()->toArray(); // 村管理公司 - // 当前任务进行天数 < 第一+第二阶段天数 只刷新任务时间 - if ($taskDayCount < $stageDayOneAccumulative) { - self::flushTaskTime($taskSchedulePlan); - return true; - } - // 当前任务进行天数 = 第一+第二阶段天数 判定任务是否完成 结算 分润 - if($taskDayCount == $stageDayTwoAccumulative) { + // 当前任务进行天数 <= 第一+第二阶段天数 判定任务是否完成 结算 分润 + if($taskDayCount <= $stageDayTwoAccumulative) { // 小组服务公司总数 $groupServiceCompanyCount = Company::where(['street' => $townCompany['street'], 'company_type'=> 18])->count(); if ($groupServiceCompanyCount == 0) { throw new Exception('小组服务公司数量为0异常'.__FILE__.__LINE__); } // 小组服务完成股金上交数 - $sharecapitalPaidCount = 0; - foreach ($villageCompanyList as $villageCompany) { - $sharecapitalPaidCount += Db::name('company_sharecapital_change_log')->where(['parent_company_id'=>$villageCompany['id']])->count(); - } - + $sharecapitalPaidCount = intdiv($approve->amount, 3000); $rate = bcdiv($sharecapitalPaidCount, $groupServiceCompanyCount, 2); // 小于50% 未完成 关闭任务 @@ -2675,11 +2678,33 @@ class TaskLogic extends BaseLogic break; // 督促小组服务团队入股 case 'village_task_type_4': - self::dealVillageTask4($taskSchedulePlan); + // 结算逻辑由手动审核,任务超时则关闭 + $taskTemplateInfo = $taskSchedulePlan['template_info']; + $dayCount = $taskTemplateInfo['day_count']; + $stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']); + // 任务累计天数 < 第一阶段+第二阶段 刷新任务 + if ($dayCount <= $stageDayCount) { + self::flushTaskTime($taskSchedulePlan); + return true; + } else { + (new Task())->closeTask($taskSchedulePlan['task_id']); + } +// self::dealVillageTask4($taskSchedulePlan); break; // 入股甲方公司 case 'village_task_type_5': - self::dealVillageTask5($taskSchedulePlan); + // 结算逻辑由手动审核,任务超时则关闭 + $taskTemplateInfo = $taskSchedulePlan['template_info']; + $dayCount = $taskTemplateInfo['day_count']; + $stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']); + // 任务累计天数 < 第一阶段+第二阶段 刷新任务 + if ($dayCount <= $stageDayCount) { + self::flushTaskTime($taskSchedulePlan); + return true; + } else { + (new Task())->closeTask($taskSchedulePlan['task_id']); + } +// self::dealVillageTask5($taskSchedulePlan); break; // 信息平台铺设工作 case 'village_task_type_6': @@ -2835,9 +2860,9 @@ class TaskLogic extends BaseLogic /** * @param $taskSchedulePlan - * 督促小组服务团队入股 + * 督促小组服务团队入股 手动审核通过后才结算 */ - private static function dealVillageTask4($taskSchedulePlan) + public static function dealVillageTask4($taskSchedulePlan, $approve) { Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]); $taskTemplateInfo = $taskSchedulePlan['template_info']; @@ -2845,21 +2870,13 @@ class TaskLogic extends BaseLogic $target = $taskTemplateInfo['extend']['target']; $stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']); $villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find(); - $townCompany = Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 41,'street'=>$villageCompany['street']], true)[0]; $task = Task::where('id', $taskSchedulePlan['task_id'])->find(); - - - // 任务累计天数 < 第一阶段+第二阶段 刷新任务 - if ($dayCount < $stageDayCount) { - self::flushTaskTime($taskSchedulePlan); - return true; - } - // 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润 - if ($dayCount == $stageDayCount) { + // 在任务期限内才结算 + if($dayCount <= $stageDayCount) { // 目标入股金额 $targetShareholderedMoney = bcmul($target, 3000, 2); // 小组服务股金上交金额 - $shareholderedMoney = Db::name('company_sharecapital_change_log')->where(['parent_company_id'=>$townCompany['id']])->sum('amount'); + $shareholderedMoney = $approve->amount; $rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2); if (bccomp($rate, 0.5, 2) == -1) { @@ -2871,6 +2888,8 @@ class TaskLogic extends BaseLogic $task['money'] = self::countSettelmentMoney($rate, $totalMoney); (new VillageShareProfit())->dealVillageTaskSettlement4($task, $villageCompany, $taskSchedulePlan); } + + } private static function countSettelmentMoney($rate, $totalMoney) @@ -2904,38 +2923,22 @@ class TaskLogic extends BaseLogic /** * @param $taskSchedulePlan - * 入股甲方公司 - * 任务累计天数 < 第一+第二阶段天数 刷新任务 - * 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润 + * 入股甲方公司 手动审核通过后才结算 */ - private static function dealVillageTask5($taskSchedulePlan) + public static function dealVillageTask5($taskSchedulePlan, $approve) { Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]); $taskTemplateInfo = $taskSchedulePlan['template_info']; $dayCount = $taskTemplateInfo['day_count']; $target = $taskTemplateInfo['extend']['target']; $stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']); -// $townCompany = Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 41,'street'=>$villageCompany['street']], true)[0]; - // 任务累计天数 < 第一+第二阶段天数 刷新任务 - if ($dayCount < $stageDayCount) { - self::flushTaskTime($taskSchedulePlan['task_id']); - return true; - } - - // 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润 - if ($dayCount == $stageDayCount) { + if ($dayCount <= $stageDayCount) { + // 任务累计天数 = 第一阶段+第二阶段 任务判定,计算金额,结算分润 $villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find(); $task = Task::where('id', $taskSchedulePlan['task_id'])->find(); - // 小组公司列表 村地区码与村管理公司一样且在村管理公司负责小队 - $groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18, 'is_contract'=>1])->select()->toArray(); - $shareholderedMoney = 0; // 已入股股金总额 - // 查询公司股金变动流水记录 - $companyIds[] = $villageCompany['id']; - foreach ($groupServiceCompanyList as $company) { - $companyIds[] = $company['id']; - } + // 小组服务和村公司股金上交金额 - $shareholderedMoney = Db::name('company_sharecapital_change_log')->whereIn('subordinate_company_id', $companyIds)->where(['parent_company_id'=>$villageCompany['id']])->sum('amount'); + $shareholderedMoney = $approve->amount; // 目标上交股金金额 小组应组建团队数量*3000 + 村 6000 $targetShareholderedMoney = bcadd(bcmul($target, 3000), 6000); $rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2); diff --git a/app/common/model/Approve.php b/app/common/model/Approve.php index 272ed0b92..c5097ad11 100644 --- a/app/common/model/Approve.php +++ b/app/common/model/Approve.php @@ -24,6 +24,9 @@ class Approve extends BaseModel const APPROVE_TYPE_8 = 8; // 镇农科负责人任务-政策补贴申请 const APPROVE_TYPE_9 = 9; // 镇农科负责人任务-日常管理及其他临时任务 const APPROVE_TYPE_10 = 10; // 小组团队任务-入股任务 + const APPROVE_TYPE_11 = 11; // 村联络员任务-督促小组服务团队入股 + const APPROVE_TYPE_12 = 12; // 村联络员任务-入股甲方公司 + const APPROVE_TYPE_13 = 13; // 镇农科服务部长任务-督促入股村管理公司 public function task() {