dataLists(new CostApprovedProjectLists()); } public function ledger(): \think\response\Json { $params = $this->request->get(); $where = []; $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; if (!empty($params['contract_name'])) { $contract_ids1 = CostApprovedProject::where('contract_name', 'like', '%' . $params['contract_name'] . '%')->column('id'); $where[] = ['contract_id', 'in', $contract_ids1]; } if (!empty($params['contract_num'])) { $contract_ids2 = CostApprovedProject::where('contract_num', 'like', '%' . $params['contract_num'] . '%')->column('id'); $where[] = ['contract_id', 'in', $contract_ids2]; } if (!empty($params['part_b'])) { $contract_ids3 = CostApprovedProject::where('part_b', 'like', '%' . $params['part_b'] . '%')->column('id'); $where[] = ['contract_id', 'in', $contract_ids3]; } if (!empty($params['contract_type'])) { $where[] = ['contract_type', '=', $params['contract_type']]; } $lists = CostApprovedProject::field('id,contract_num,contract_name,contract_type,business_nature,part_a,money,dept,create_date') ->where($where)->where('status', 2) ->page($page_no, $page_size) ->order('id desc') ->select() ->each(function ($data) { $invoice_ids = FinancialInvoice::where('contract_id', $data['id'])->column('id'); //开票金额 $data['total_invoice_amount'] = FinancialInvoice::where('contract_id', $data['id'])->sum('apply_amount'); //未开票金额 $data['not_total_invoice_amount'] = bcsub($data['money'], $data['total_invoice_amount'], 2); //到账金额 $data['total_refund_amount'] = FinancialRefund::where('contract_id', $data['id'])->sum('amount'); //未到账金额 $data['not_total_refund_amount'] = bcsub($data['money'], $data['total_refund_amount'], 2); //开票未回款金额 $invoice_has_refund_amount = FinancialRefund::where('contract_id', $data['id'])->where('invoice_id', 'in', $invoice_ids)->sum('amount'); $data['invoice_not_refund_amount'] = bcsub($data['total_invoice_amount'], $invoice_has_refund_amount, 2); //回款未开票金额 $data['refund_not_invoice_amount'] = bcsub($data['total_refund_amount'], $invoice_has_refund_amount, 2); //结算金额 $data['total_settlement_amount'] = FinancialSettlement::where('contract_id', $data['id'])->sum('amount'); $financial_settlement = FinancialSettlement::where('contract_id', $data['id'])->order('id desc')->findOrEmpty(); if ($financial_settlement->isEmpty()) { $data['is_settlement'] = 0; $data['settlement_date'] = ''; } else { if ($data['total_settlement_amount'] >= $data['money']) { $data['is_settlement'] = 2; } else { $data['is_settlement'] = 1; } $data['settlement_date'] = $financial_settlement['date']; } }) ->toArray(); $count = CostApprovedProject::where($where)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } /** * @notes 添加待立项造价项目 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 */ public function add() { $params = (new CostApprovedProjectValidate())->post()->goCheck('add'); $result = CostApprovedProjectLogic::add($params); if (true === $result) { return $this->success('添加成功', [], 1, 1); } return $this->fail(CostApprovedProjectLogic::getError()); } /** * @notes 编辑待立项造价项目 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 */ public function edit() { $params = (new CostApprovedProjectValidate())->post()->goCheck('edit'); $result = CostApprovedProjectLogic::edit($params); if (true === $result) { return $this->success('编辑成功', [], 1, 1); } return $this->fail(CostApprovedProjectLogic::getError()); } /** * @notes 删除待立项造价项目 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 */ public function delete() { $params = (new CostApprovedProjectValidate())->post()->goCheck('delete'); $result = CostApprovedProjectLogic::delete($params); if (true === $result) { return $this->success('删除成功', [], 1, 1); } return $this->fail(CostApprovedProjectLogic::getError()); } public function createProject() { $params = $this->request->param(); $data = CostApprovedProjectLogic::detail($params); $re = CostProjectLogic::createProject($data); } /** * @notes 获取待立项造价项目详情 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 */ public function detail() { $params = (new CostApprovedProjectValidate())->goCheck('detail'); $result = CostApprovedProjectLogic::detail($params); return $this->data($result); } public function datas() { return $this->data(CostApprovedProjectLogic::datas()); } }