diff --git a/app/adminapi/controller/project/ProjectTotalBudgetController.php b/app/adminapi/controller/project/ProjectTotalBudgetController.php index e9bbf7295..d0d559cf8 100644 --- a/app/adminapi/controller/project/ProjectTotalBudgetController.php +++ b/app/adminapi/controller/project/ProjectTotalBudgetController.php @@ -11,118 +11,118 @@ // +---------------------------------------------------------------------- // | author: likeadminTeam // +---------------------------------------------------------------------- - - -namespace app\adminapi\controller\project; - - -use app\adminapi\controller\BaseAdminController; -use app\adminapi\lists\project\ProjectTotalBudgetLists; -use app\adminapi\logic\project\ProjectTotalBudgetLogic; -use app\adminapi\validate\project\ProjectTotalBudgetValidate; -use app\common\model\oa\Flow; -use app\common\model\oa\FlowType; - - -/** - * 项目总预算控制器 - * Class ProjectTotalBudgetController - * @package app\adminapi\controller\project - */ -class ProjectTotalBudgetController extends BaseAdminController -{ - - - /** - * @notes 获取项目总预算列表 - * @return \think\response\Json - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public function lists() - { - return $this->dataLists(new ProjectTotalBudgetLists()); - } - - - /** - * @notes 添加项目总预算 - * @return \think\response\Json - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public function add() - { - $params = (new ProjectTotalBudgetValidate())->post()->goCheck('add'); - $result = ProjectTotalBudgetLogic::add($params,$this->adminId); - if (true === $result) { - return $this->success('添加成功', [], 1, 1); - } - return $this->fail(ProjectTotalBudgetLogic::getError()); - } - - - /** - * @notes 编辑项目总预算 - * @return \think\response\Json - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public function edit() - { - $params = (new ProjectTotalBudgetValidate())->post()->goCheck('edit'); - $result = ProjectTotalBudgetLogic::edit($params); - if (true === $result) { - return $this->success('编辑成功', [], 1, 1); - } - return $this->fail(ProjectTotalBudgetLogic::getError()); - } - - - /** - * @notes 删除项目总预算 - * @return \think\response\Json - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public function delete() - { - $params = (new ProjectTotalBudgetValidate())->post()->goCheck('delete'); - ProjectTotalBudgetLogic::delete($params); - return $this->success('删除成功', [], 1, 1); - } - - - /** - * @notes 获取项目总预算详情 - * @return \think\response\Json - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public function detail() - { - $params = (new ProjectTotalBudgetValidate())->goCheck('detail'); - $result = ProjectTotalBudgetLogic::detail($params); - return $this->data($result); - } - public function flows(): \think\response\Json - { - $flow_type = FlowType::where('type',4)->where('name','xmzys')->findOrEmpty(); - $data = Flow::field('id,name')->where('flow_cate',$flow_type['id'])->where('status',2)->select(); - return $this->success('请求成功',$data->toArray()); - } - //添加审批 - public function approve(): \think\response\Json + namespace app\adminapi\controller\project; + + + use app\adminapi\controller\BaseAdminController; + use app\adminapi\lists\project\ProjectTotalBudgetLists; + use app\adminapi\logic\project\ProjectTotalBudgetLogic; + use app\adminapi\validate\project\ProjectTotalBudgetValidate; + use app\common\model\oa\Flow; + use app\common\model\oa\FlowType; + + + /** + * 项目总预算控制器 + * Class ProjectTotalBudgetController + * @package app\adminapi\controller\project + */ + class ProjectTotalBudgetController extends BaseAdminController { - $params = (new ProjectTotalBudgetValidate())->post()->goCheck('approve'); - $result = ProjectTotalBudgetLogic::approve($params,$this->adminId); - if (true === $result) { - return $this->success('提交审核信息成功', [], 1, 1); + + + /** + * @notes 获取项目总预算列表 + * @return \think\response\Json + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public function lists() + { + return $this->dataLists(new ProjectTotalBudgetLists()); } - return $this->fail(ProjectTotalBudgetLogic::getError()); - } - - -} \ No newline at end of file + + + /** + * @notes 添加项目总预算 + * @return \think\response\Json + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public function add() + { + $params = (new ProjectTotalBudgetValidate())->post()->goCheck('add'); + $result = ProjectTotalBudgetLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(ProjectTotalBudgetLogic::getError()); + } + + + /** + * @notes 编辑项目总预算 + * @return \think\response\Json + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public function edit() + { + $params = (new ProjectTotalBudgetValidate())->post()->goCheck('edit'); + $result = ProjectTotalBudgetLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(ProjectTotalBudgetLogic::getError()); + } + + + /** + * @notes 删除项目总预算 + * @return \think\response\Json + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public function delete() + { + $params = (new ProjectTotalBudgetValidate())->post()->goCheck('delete'); + ProjectTotalBudgetLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取项目总预算详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public function detail() + { + $params = (new ProjectTotalBudgetValidate())->goCheck('detail'); + $result = ProjectTotalBudgetLogic::detail($params); + return $this->data($result); + } + + public function flows(): \think\response\Json + { + $flow_type = FlowType::where('type', 4)->where('name', 'xmzys')->findOrEmpty(); + $data = Flow::field('id,name')->where('flow_cate', $flow_type['id'])->where('status', 2)->select(); + return $this->success('请求成功', $data->toArray()); + } + + //添加审批 + public function approve(): \think\response\Json + { + $params = (new ProjectTotalBudgetValidate())->post()->goCheck('approve'); + $result = ProjectTotalBudgetLogic::approve($params, $this->adminId); + if (true === $result) { + return $this->success('提交审核信息成功', [], 1, 1); + } + return $this->fail(ProjectTotalBudgetLogic::getError()); + } + + + } \ No newline at end of file diff --git a/app/adminapi/logic/project/ProjectTotalBudgetLogic.php b/app/adminapi/logic/project/ProjectTotalBudgetLogic.php index 52ab2c2e9..c80e07fcc 100644 --- a/app/adminapi/logic/project/ProjectTotalBudgetLogic.php +++ b/app/adminapi/logic/project/ProjectTotalBudgetLogic.php @@ -11,183 +11,183 @@ // +---------------------------------------------------------------------- // | author: likeadminTeam // +---------------------------------------------------------------------- - -namespace app\adminapi\logic\project; - - -use app\common\model\dept\Dept; -use app\common\model\dept\Orgs; -use app\common\model\oa\FlowApprove; -use app\common\model\project\Project; -use app\common\model\project\ProjectTotalBudget; -use app\common\logic\BaseLogic; -use think\facade\Db; - - -/** - * 项目总预算逻辑 - * Class ProjectTotalBudgetLogic - * @package app\adminapi\logic\project - */ -class ProjectTotalBudgetLogic extends BaseLogic -{ - - - /** - * @notes 添加项目总预算 - * @param array $params - * @return bool - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public static function add(array $params,$admin_id): bool - { - Db::startTrans(); - try { - $res = ProjectTotalBudget::create([ - 'org_id' => $params['org_id'], - 'dept_id' => $params['dept_id'], - 'project_id' => $params['project_id'], - 'total_budget_code' => data_unique_code('项目总预算'), - 'contract_amount' => $params['contract_amount'], - 'cl_cost' => $params['cl_cost'] ?? 0, - 'fb_cost' => $params['fb_cost'] ?? 0, - 'rg_cost' => $params['rg_cost'] ?? 0, - 'fy_cost' => $params['fy_cost'] ?? 0, - 'jj_cost' => $params['jj_cost'] ?? 0, - 'remark' => $params['remark'] ?? '', - 'budget_list' => !empty($params['budget_list']) ? $params['budget_list'] : null, - 'budget_date' => strtotime($params['budget_date']), - 'project_manager' => $params['project_manager'], - ]); - Project::where('id',$params['project_id'])->update([ - 'is_budget' => 1, - 'update_time' => time(), - ]); - Db::commit(); - return true; - } catch (\Exception $e) { - Db::rollback(); - self::setError($e->getMessage()); - return false; - } - } - - - /** - * @notes 编辑项目总预算 - * @param array $params - * @return bool - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public static function edit(array $params): bool - { - Db::startTrans(); - try { - ProjectTotalBudget::where('id', $params['id'])->update([ - 'contract_amount' => $params['contract_amount'], - 'cl_cost' => $params['cl_cost'] ?? 0, - 'fb_cost' => $params['fb_cost'] ?? 0, - 'rg_cost' => $params['rg_cost'] ?? 0, - 'fy_cost' => $params['fy_cost'] ?? 0, - 'jj_cost' => $params['jj_cost'] ?? 0, - 'remark' => $params['remark'] ?? '', - 'budget_list' => !empty($params['budget_list']) ? $params['budget_list'] : null, - 'budget_date' => strtotime($params['budget_date']), - 'project_manager' => $params['project_manager'], - 'update_time' => time(), - ]); - Db::commit(); - return true; - } catch (\Exception $e) { - Db::rollback(); - self::setError($e->getMessage()); - return false; - } - } - - - /** - * @notes 删除项目总预算 - * @param array $params - * @return bool - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public static function delete(array $params): bool - { - return ProjectTotalBudget::destroy($params['id']); - } - - - /** - * @notes 获取项目总预算详情 - * @param $params - * @return array - * @author likeadmin - * @date 2024/01/08 14:25 - */ - public static function detail($params): array - { - $data = ProjectTotalBudget::field('id,org_id,dept_id,project_id,total_budget_code,contract_amount,cl_cost,fb_cost,rg_cost,fy_cost,jj_cost,remark,budget_list,budget_date,project_manager,approve_id') - ->findOrEmpty($params['id']); - $org = Orgs::field('name')->where('id',$data['org_id'])->findOrEmpty(); - $dept = Dept::field('name')->where('id',$data['dept_id'])->findOrEmpty(); - $project = Project::field('name,project_code')->where('id',$data['project_id'])->findOrEmpty(); - $data['org_name'] = $org['name']; - $data['dept_name'] = $dept['name']; - $data['project_name'] = $project['name']; - $data['project_code'] = $project['project_code']; - //总成本 - $data['total_cost'] = $data['cl_cost'] + $data['fb_cost'] + $data['rg_cost'] + $data['fy_cost'] + $data['jj_cost']; - //项目利润 - $data['profit'] = $data['contract_amount'] - $data['total_cost']; - //利润率 - $data['profit_rate'] = $data['profit'] / $data['contract_amount']; - //材料成本占比 - $data['cl_cost_ratio'] = number_format($data['cl_cost'] / $data['total_cost'],2); - //分包成本占比 - $data['fb_cost_ratio'] = number_format($data['fb_cost'] / $data['total_cost'],2); - //人工成本占比 - $data['rg_cost_ratio'] = number_format($data['rg_cost'] / $data['total_cost'],2); - //费用成本占比 - $data['fy_cost_ratio'] = number_format($data['fy_cost'] / $data['total_cost'],2); - //机具成本占比 - $data['jj_cost_ratio'] = number_format($data['jj_cost'] / $data['total_cost'],2); - $approve_data = FlowApprove::where('id',$data['approve_id'])->findOrEmpty(); - $data['approve_check_status'] = $approve_data['check_status']; - return $data->toArray(); - } - public static function approve($params,$admin_id): bool{ - $data = ProjectTotalBudget::where('id',$params['id'])->findOrEmpty(); - $approve_data = FlowApprove::where('id',$data['approve_id'])->findOrEmpty(); - if(!empty($data['approve_id']) && $approve_data['check_status'] != 3){ - self::setError('当前内容存在审核信息,请勿重复提交'); - return false; - } - Db::startTrans(); - try { - $res = addApprove( - '项目总预算', - $params['id'], - 'app\common\model\project\ProjectTotalBudget', - $params['path'], - $params['flow_id'], - $admin_id - ); - if($res){ - ProjectTotalBudget::where('id',$params['id'])->update([ - 'approve_id' => $res, + namespace app\adminapi\logic\project; + + + use app\common\logic\BaseLogic; + use app\common\model\dept\Dept; + use app\common\model\dept\Orgs; + use app\common\model\oa\FlowApprove; + use app\common\model\project\Project; + use app\common\model\project\ProjectTotalBudget; + use think\facade\Db; + + + /** + * 项目总预算逻辑 + * Class ProjectTotalBudgetLogic + * @package app\adminapi\logic\project + */ + class ProjectTotalBudgetLogic extends BaseLogic + { + + + /** + * @notes 添加项目总预算 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public static function add(array $params): bool + { + Db::startTrans(); + try { + $res = ProjectTotalBudget::create([ + 'org_id' => $params['org_id'], + 'dept_id' => $params['dept_id'], + 'project_id' => $params['project_id'], + 'total_budget_code' => data_unique_code('项目总预算'), + 'contract_amount' => $params['contract_amount'], + 'cl_cost' => $params['cl_cost'] ?? 0, + 'fb_cost' => $params['fb_cost'] ?? 0, + 'rg_cost' => $params['rg_cost'] ?? 0, + 'fy_cost' => $params['fy_cost'] ?? 0, + 'jj_cost' => $params['jj_cost'] ?? 0, + 'remark' => $params['remark'] ?? '', + 'budget_list' => $params['budget_list'] ? json_encode($params['budget_list']) : null, + 'budget_date' => strtotime($params['budget_date']), + 'project_manager' => $params['project_manager'], ]); + Project::where('id', $params['project_id'])->update([ + 'is_budget' => 1, + 'update_time' => time(), + ]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; } - Db::commit(); - return true; - } catch (\Exception $e) { - Db::rollback(); - self::setError($e->getMessage()); - return false; } - } -} \ No newline at end of file + + + /** + * @notes 编辑项目总预算 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + ProjectTotalBudget::where('id', $params['id'])->update([ + 'contract_amount' => $params['contract_amount'], + 'cl_cost' => $params['cl_cost'] ?? 0, + 'fb_cost' => $params['fb_cost'] ?? 0, + 'rg_cost' => $params['rg_cost'] ?? 0, + 'fy_cost' => $params['fy_cost'] ?? 0, + 'jj_cost' => $params['jj_cost'] ?? 0, + 'remark' => $params['remark'] ?? '', + 'budget_list' => $params['budget_list'] ? json_encode($params['budget_list']) : null, + 'budget_date' => strtotime($params['budget_date']), + 'project_manager' => $params['project_manager'], + 'update_time' => time(), + ]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除项目总预算 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public static function delete(array $params): bool + { + return ProjectTotalBudget::destroy($params['id']); + } + + + /** + * @notes 获取项目总预算详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/01/08 14:25 + */ + public static function detail($params): array + { + $data = ProjectTotalBudget::withoutField('create_time,update_time,delete_time')->findOrEmpty($params['id']); + $org = Orgs::field('name')->where('id', $data['org_id'])->findOrEmpty(); + $dept = Dept::field('name')->where('id', $data['dept_id'])->findOrEmpty(); + $project = Project::field('name,project_code')->where('id', $data['project_id'])->findOrEmpty(); + $data['org_name'] = $org['name']; + $data['dept_name'] = $dept['name']; + $data['project_name'] = $project['name']; + $data['project_code'] = $project['project_code']; + //总成本 + $data['total_cost'] = $data['cl_cost'] + $data['fb_cost'] + $data['rg_cost'] + $data['fy_cost'] + $data['jj_cost']; + //项目利润 + $data['profit'] = $data['contract_amount'] - $data['total_cost']; + //利润率 + $data['profit_rate'] = $data['profit'] / $data['contract_amount']; + //材料成本占比 + $data['cl_cost_ratio'] = number_format($data['cl_cost'] / $data['total_cost'], 2); + //分包成本占比 + $data['fb_cost_ratio'] = number_format($data['fb_cost'] / $data['total_cost'], 2); + //人工成本占比 + $data['rg_cost_ratio'] = number_format($data['rg_cost'] / $data['total_cost'], 2); + //费用成本占比 + $data['fy_cost_ratio'] = number_format($data['fy_cost'] / $data['total_cost'], 2); + //机具成本占比 + $data['jj_cost_ratio'] = number_format($data['jj_cost'] / $data['total_cost'], 2); + $approve_data = FlowApprove::where('id', $data['approve_id'])->findOrEmpty(); + $data['approve_check_status'] = $approve_data['check_status']; + return $data->toArray(); + } + + public static function approve($params, $admin_id): bool + { + $data = ProjectTotalBudget::where('id', $params['id'])->findOrEmpty(); + $approve_data = FlowApprove::where('id', $data['approve_id'])->findOrEmpty(); + if (!empty($data['approve_id']) && $approve_data['check_status'] != 3) { + self::setError('当前内容存在审核信息,请勿重复提交'); + return false; + } + Db::startTrans(); + try { + $res = addApprove( + '项目总预算', + $params['id'], + 'app\common\model\project\ProjectTotalBudget', + $params['path'], + $params['flow_id'], + $admin_id + ); + if ($res) { + ProjectTotalBudget::where('id', $params['id'])->update([ + 'approve_id' => $res, + ]); + } + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + } \ No newline at end of file