This commit is contained in:
yaooo 2023-11-15 15:23:12 +08:00
commit 4038608ddc
4 changed files with 56 additions and 18 deletions

View File

@ -713,4 +713,38 @@ class TaskController extends BaseApiController
return $this->fail($e->getMessage()); return $this->fail($e->getMessage());
} }
} }
public function commit_service_group_task()
{
try {
$parmas = $this->request->param(); // id annex amount
$task = TaskLogic::detail($parmas);
if (empty($task)) {
$this->fail('任务不存在');
}
$extend = ['is_commit'=>1, 'annex'=>$parmas['annex'], '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_10;
$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());
}
}
} }

View File

@ -121,7 +121,7 @@ class VillageShareProfit
} }
} }
public function dealVillageTaskSettlement3($taskInfo, $townCompany, $taskSchedulePlan, $leftTransactionPool) public function dealVillageTaskSettlement3($taskInfo, $townCompany, $taskSchedulePlan)
{ {
try { try {
Db::startTrans(); Db::startTrans();
@ -130,8 +130,6 @@ class VillageShareProfit
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']); (new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
// 更改任务状态 // 更改任务状态
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]); Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
// 更新镇交易池
(new TaskTemplate())->updateTransactionPool($taskSchedulePlan['template_info']['id'], $leftTransactionPool);
Db::commit(); Db::commit();
return true; return true;
} catch (\Exception $e) { } catch (\Exception $e) {
@ -195,7 +193,7 @@ class VillageShareProfit
} }
} }
public function dealVillageTaskSettlement7(Task $taskInfo, Company $townCompany, $taskSchedulePlan) public function dealVillageTaskSettlement7(Task $taskInfo, Company $townCompany, $taskSchedulePlan, $leftTransactionPool)
{ {
try { try {
Db::startTrans(); Db::startTrans();
@ -204,6 +202,8 @@ class VillageShareProfit
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']); (new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
// 更改任务状态 // 更改任务状态
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]); Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3,'money' => $taskInfo['money']]);
// 更新交易池
(new TaskTemplate())->updateTransactionPool($taskSchedulePlan['template_info']['id'], $leftTransactionPool);
Db::commit(); Db::commit();
return true; return true;
} catch (\Exception $e) { } catch (\Exception $e) {

View File

@ -2767,6 +2767,7 @@ class TaskLogic extends BaseLogic
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find(); $villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
$task = Task::where('id', $taskSchedulePlan['task_id'])->find(); $task = Task::where('id', $taskSchedulePlan['task_id'])->find();
$groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18, 'is_contract'=>1])->select()->toArray(); $groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18, 'is_contract'=>1])->select()->toArray();
$villageTransactionPool = $taskTemplateInfo['transaction_pool']; // 村交易池 $villageTransactionPool = $taskTemplateInfo['transaction_pool']; // 村交易池
$villageTotalTradeAmount = 0; // 村下属小组服务公司 每日实际总交易额 $villageTotalTradeAmount = 0; // 村下属小组服务公司 每日实际总交易额
$targetAmount = 0; // 村下属小组服务公司每日 目标总交易额 $targetAmount = 0; // 村下属小组服务公司每日 目标总交易额
@ -2778,12 +2779,13 @@ class TaskLogic extends BaseLogic
if ($tempTask) { if ($tempTask) {
$plan = TaskSchedulingPlan::where(['id'=>$tempTask['scheduling_plan_id']])->find(); $plan = TaskSchedulingPlan::where(['id'=>$tempTask['scheduling_plan_id']])->find();
if ($plan['is_pay'] == 1) { if ($plan['is_pay'] == 1) {
$extend = json_decode($tempTask['extend'], true); $extend = $tempTask['extend'];
$targetAmount += $extend['transaction']['arr']['day_money']; $targetAmount += $extend['transaction']['arr']['day_money'];
$villageTotalTradeAmount += $extend['transaction']['arr']['total_price']; $villageTotalTradeAmount += $extend['transaction']['arr']['total_price'];
} }
} }
} }
// 完成条件: 查村所属小组服务公司当日实际完成金额总和+村管理公司的资金池 > 查镇所属小组服务公司当日任务目标金额总和 // 完成条件: 查村所属小组服务公司当日实际完成金额总和+村管理公司的资金池 > 查镇所属小组服务公司当日任务目标金额总和
if($targetAmount != 0 && bcadd($villageTransactionPool, $villageTotalTradeAmount, 2) >= bcmul($targetAmount, 0.8, 2)) { if($targetAmount != 0 && bcadd($villageTransactionPool, $villageTotalTradeAmount, 2) >= bcmul($targetAmount, 0.8, 2)) {
// 将余下金额放入镇交易池 // 将余下金额放入镇交易池
@ -2843,9 +2845,9 @@ class TaskLogic extends BaseLogic
$target = $taskTemplateInfo['extend']['target']; $target = $taskTemplateInfo['extend']['target'];
$stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']); $stageDayCount = bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two']);
$villageCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find(); $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(); $task = Task::where('id', $taskSchedulePlan['task_id'])->find();
// 村地区码与村管理公司一样且在村管理公司负责小队中
$groupServiceCompanyList = Company::where(['village' => $villageCompany['village'], 'company_type'=> 18, 'is_contract'=>1])->select()->toArray();
// 任务累计天数 < 第一阶段+第二阶段 刷新任务 // 任务累计天数 < 第一阶段+第二阶段 刷新任务
if ($dayCount < $stageDayCount) { if ($dayCount < $stageDayCount) {
@ -2857,7 +2859,7 @@ class TaskLogic extends BaseLogic
// 目标入股金额 // 目标入股金额
$targetShareholderedMoney = bcmul($target, 3000, 2); $targetShareholderedMoney = bcmul($target, 3000, 2);
// 小组服务股金上交金额 // 小组服务股金上交金额
$shareholderedMoney = Db::name('company_sharecapital_change_log')->where(['parent_company_id'=>$villageCompany['id']])->sum('amount'); $shareholderedMoney = Db::name('company_sharecapital_change_log')->where(['parent_company_id'=>$townCompany['id']])->sum('amount');
$rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2); $rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2);
if (bccomp($rate, 0.5, 2) == -1) { if (bccomp($rate, 0.5, 2) == -1) {
@ -2932,12 +2934,10 @@ class TaskLogic extends BaseLogic
foreach ($groupServiceCompanyList as $company) { foreach ($groupServiceCompanyList as $company) {
$companyIds[] = $company['id']; $companyIds[] = $company['id'];
} }
// 已入股股金总额 // 小组服务和村公司股金上交金额
$shareholderedMoney = CompanyAccountLog::where(['change_object'=>CompanyAccountLog::SHAREHOLDER, 'change_type'=>CompanyAccountLog::TASK_INC_SHAREHOLDER_MONEY]) $shareholderedMoney = Db::name('company_sharecapital_change_log')->whereIn('subordinate_company_id', $companyIds)->where(['parent_company_id'=>$villageCompany['id']])->sum('amount');
->whereIn('company_id', $companyIds) // 目标上交股金金额 小组应组建团队数量*3000 + 村 6000
->sum('change_amount'); $targetShareholderedMoney = bcadd(bcmul($target, 3000), 6000);
$targetShareholderedMoney = bcadd(bcmul($target, 3000), 6000); // 小组应组建团队数量*3000 + 村 6000
$rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2); $rate = bcdiv($shareholderedMoney, $targetShareholderedMoney, 2);
$totalMoney = bcadd(bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2), bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2), 2) ; $totalMoney = bcadd(bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2), bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2), 2) ;
$task['money'] = self::countSettelmentMoney($rate, $totalMoney); $task['money'] = self::countSettelmentMoney($rate, $totalMoney);
@ -2993,7 +2993,7 @@ class TaskLogic extends BaseLogic
// 任务累计天数 = stage1 从商城查询种养殖商户的交易额,判定是否完成任务,完成则结算 // 任务累计天数 = stage1 从商城查询种养殖商户的交易额,判定是否完成任务,完成则结算
if ($dayCount == $stageDayOne) { if ($dayCount == $stageDayOne) {
$startTime = strtotime(date('Y-m-d',strtotime($taskTemplateInfo['create_time'])))+86400; $startTime = strtotime(date('Y-m-d',strtotime($taskTemplateInfo['create_time'])))+86400; // 创建任务的第二天00:00:00开始
$endTime = strtotime('+30 day', $startTime); $endTime = strtotime('+30 day', $startTime);
self::finishVillageTask7($startTime, $endTime, 13000, $taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], $villageCompany, $taskSchedulePlan); self::finishVillageTask7($startTime, $endTime, 13000, $taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], $villageCompany, $taskSchedulePlan);
} }
@ -3054,10 +3054,13 @@ class TaskLogic extends BaseLogic
]; ];
$result = ShopRequestLogic::getPlantingAndBreedingMerchantTradeAmount($param); // todo 商城接口那边需要确定种养殖基地是何种类型的商户 $result = ShopRequestLogic::getPlantingAndBreedingMerchantTradeAmount($param); // todo 商城接口那边需要确定种养殖基地是何种类型的商户
$tradeAmount = $result['data']['procure_amount']; $tradeAmount = $result['data']['procure_amount'];
// 交易池
if ($tradeAmount >= $targetAmount) { $transactionPool = $taskSchedulePlan['template_info']['transaction_pool'];
$totalTradeAmount = bcadd($transactionPool, $tradeAmount, 2);
if ($totalTradeAmount >= $targetAmount) {
$task['money'] = bcmul($dayNum, $perMoney, 2); $task['money'] = bcmul($dayNum, $perMoney, 2);
(new VillageShareProfit())->dealVillageTaskSettlement7($task, $villageCompany, $taskSchedulePlan); $leftTransactionPool = bcsub($totalTradeAmount, $targetAmount, 2);
(new VillageShareProfit())->dealVillageTaskSettlement7($task, $villageCompany, $taskSchedulePlan, $leftTransactionPool);
} }
} }

View File

@ -23,6 +23,7 @@ class Approve extends BaseModel
const APPROVE_TYPE_8 = 8; // 镇农科负责人任务-政策补贴申请 const APPROVE_TYPE_8 = 8; // 镇农科负责人任务-政策补贴申请
const APPROVE_TYPE_9 = 9; // 镇农科负责人任务-日常管理及其他临时任务 const APPROVE_TYPE_9 = 9; // 镇农科负责人任务-日常管理及其他临时任务
const APPROVE_TYPE_10 = 10; // 小组团队任务-入股任务
public function task() public function task()
{ {