From 333b31c484096d3ca57cd0dcc4d5b550de74c106 Mon Sep 17 00:00:00 2001 From: weiz <736250432@qq.com> Date: Thu, 21 Mar 2024 10:09:56 +0800 Subject: [PATCH] update --- .../SubcontractingContractController.php | 15 +++++ ...SubcontractingContractDetailController.php | 7 +++ .../SubcontractingContractDetailLists.php | 3 +- .../contract/ProcurementContractLogic.php | 5 ++ .../SubcontractingContractDetailLogic.php | 37 +++++++----- .../contract/SubcontractingContractLogic.php | 56 ++++++++++--------- .../logic/custom/CustomerDemandLogic.php | 2 +- .../custom/CustomerDemandSolutionLogic.php | 2 +- .../logic/project/CompetitorLogic.php | 2 +- .../logic/project/ProjectEstimateLogic.php | 2 +- .../SubcontractingContractValidate.php | 47 ++-------------- .../model/contract/SubcontractingContract.php | 4 -- 12 files changed, 90 insertions(+), 92 deletions(-) diff --git a/app/adminapi/controller/contract/SubcontractingContractController.php b/app/adminapi/controller/contract/SubcontractingContractController.php index 0a9d0a1d5..23e9ba067 100644 --- a/app/adminapi/controller/contract/SubcontractingContractController.php +++ b/app/adminapi/controller/contract/SubcontractingContractController.php @@ -78,6 +78,16 @@ class SubcontractingContractController extends BaseAdminController return $this->fail(SubcontractingContractLogic::getError()); } + public function delete() + { + $params = (new SubcontractingContractValidate())->post()->goCheck('edit'); + $result = SubcontractingContractLogic::delete($params); + if (true === $result) { + return $this->success('删除成功', [], 1, 1); + } + return $this->fail(SubcontractingContractLogic::getError()); + } + /** * @notes 获取详情 @@ -109,6 +119,11 @@ class SubcontractingContractController extends BaseAdminController } return $this->fail(SubcontractingContractLogic::getError()); } + + public function datas() + { + return $this->data(SubcontractingContractLogic::datas()); + } } \ No newline at end of file diff --git a/app/adminapi/controller/contract/SubcontractingContractDetailController.php b/app/adminapi/controller/contract/SubcontractingContractDetailController.php index 3a25d893d..74c788ee6 100644 --- a/app/adminapi/controller/contract/SubcontractingContractDetailController.php +++ b/app/adminapi/controller/contract/SubcontractingContractDetailController.php @@ -41,6 +41,13 @@ class SubcontractingContractDetailController extends BaseAdminController { return $this->dataLists(new SubcontractingContractDetailLists()); } + + public function delete() + { + $params = (new SubcontractingContractDetailValidate())->post()->goCheck('edit'); + SubcontractingContractDetailLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } /** diff --git a/app/adminapi/lists/contract/SubcontractingContractDetailLists.php b/app/adminapi/lists/contract/SubcontractingContractDetailLists.php index 5e96af51b..a38321c2a 100644 --- a/app/adminapi/lists/contract/SubcontractingContractDetailLists.php +++ b/app/adminapi/lists/contract/SubcontractingContractDetailLists.php @@ -64,7 +64,7 @@ class SubcontractingContractDetailLists extends BaseAdminDataLists implements Li ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function($data){ - $contract = SubcontractingContract::field('contract_no,project_id,supplier_id,contract_type')->where('id',$data['contract_id'])->findOrEmpty(); + $contract = SubcontractingContract::field('contract_no,contract_name,project_id,supplier_id,contract_type')->where('id',$data['contract_id'])->findOrEmpty(); $project = Project::field('name,project_code')->where('id',$contract['project_id'])->findOrEmpty(); $supplier = Supplier::field('supplier_code,supplier_name')->where('id',$contract['supplier_id'])->findOrEmpty(); $subpackage_budget_detail = ProjectSubpackageBudgetDetail::field('work_type,work_content,project_features,unit')->where('id',$data['subpackage_budget_detail_id'])->findOrEmpty(); @@ -73,6 +73,7 @@ class SubcontractingContractDetailLists extends BaseAdminDataLists implements Li $data['supplier_code'] = $supplier['supplier_code']; $data['supplier_name'] = $supplier['supplier_name']; $data['contract_no'] = $contract['contract_no']; + $data['contract_name'] = $contract['contract_name']; $data['contract_type'] = $contract->contract_type_text; $data['work_type'] = $subpackage_budget_detail['work_type']; $data['work_content'] = $subpackage_budget_detail['work_content']; diff --git a/app/adminapi/logic/contract/ProcurementContractLogic.php b/app/adminapi/logic/contract/ProcurementContractLogic.php index 0787b7da3..2a57c0769 100644 --- a/app/adminapi/logic/contract/ProcurementContractLogic.php +++ b/app/adminapi/logic/contract/ProcurementContractLogic.php @@ -213,6 +213,11 @@ class ProcurementContractLogic extends BaseLogic self::setError('此数据关联了采购明细信息,需删除采购明细信息'); return false; } + $payment_plan = FinancePaymentPlan::where('contract_id','in',$params['id'])->where('contract_type',1)->findOrEmpty(); + if(!$payment_plan->isEmpty()){ + self::setError('此数据关联了付款计划信息,需删除付款计划信息'); + return false; + } return ProcurementContract::destroy($params['id']); } /** diff --git a/app/adminapi/logic/contract/SubcontractingContractDetailLogic.php b/app/adminapi/logic/contract/SubcontractingContractDetailLogic.php index 9e358fb9a..63f3b9c09 100644 --- a/app/adminapi/logic/contract/SubcontractingContractDetailLogic.php +++ b/app/adminapi/logic/contract/SubcontractingContractDetailLogic.php @@ -19,6 +19,7 @@ use app\common\model\contract\ProcurementContract; use app\common\model\contract\SubcontractingContract; use app\common\model\contract\SubcontractingContractDetail; use app\common\logic\BaseLogic; +use app\common\model\dict\DictData; use app\common\model\project\Project; use app\common\model\project\ProjectSubpackageBudgetDetail; use app\common\model\supplier\Supplier; @@ -43,16 +44,20 @@ class SubcontractingContractDetailLogic extends BaseLogic */ public static function add(array $params): bool { + $tax_rate_dict = DictData::where('type_value','tax_rate')->column('name','value'); Db::startTrans(); try { SubcontractingContractDetail::create([ - 'subcontracting_contract_id' => $params['subcontracting_contract_id'], - 'subcontracting_budget' => $params['subcontracting_budget'], - 'workload' => $params['workload'], - 'unit_price_including_tax' => $params['unit_price_including_tax'], - 'amount_excluding_tax' => $params['amount_excluding_tax'], - 'amount_including_tax' => $params['amount_including_tax'], - 'remark' => $params['remark'] + 'contract_id' => $params['contract_id'], + 'subpackage_budget_detail_id' => $params['subpackage_budget_detail_id'], + 'num' => $params['num'], + 'price' => $params['price'], + 'tax_rate' => $params['tax_rate'], + //不含税金额 + 'amount_excluding_tax' => $params['num'] * $params['price'] * (1- $tax_rate_dict[$params['tax_rate']] / 100), + //含税金额 + 'amount_including_tax' => $params['num'] * $params['price'], + 'remark' => $params['remark'] ?? '', ]); Db::commit(); @@ -74,16 +79,20 @@ class SubcontractingContractDetailLogic extends BaseLogic */ public static function edit(array $params): bool { + $tax_rate_dict = DictData::where('type_value','tax_rate')->column('name','value'); Db::startTrans(); try { SubcontractingContractDetail::where('id', $params['id'])->update([ - 'subcontracting_contract_id' => $params['subcontracting_contract_id'], - 'subcontracting_budget' => $params['subcontracting_budget'], - 'workload' => $params['workload'], - 'unit_price_including_tax' => $params['unit_price_including_tax'], - 'amount_excluding_tax' => $params['amount_excluding_tax'], - 'amount_including_tax' => $params['amount_including_tax'], - 'remark' => $params['remark'] + 'contract_id' => $params['contract_id'], + 'subpackage_budget_detail_id' => $params['subpackage_budget_detail_id'], + 'num' => $params['num'], + 'price' => $params['price'], + 'tax_rate' => $params['tax_rate'], + //不含税金额 + 'amount_excluding_tax' => $params['num'] * $params['price'] * (1- $tax_rate_dict[$params['tax_rate']] / 100), + //含税金额 + 'amount_including_tax' => $params['num'] * $params['price'], + 'remark' => $params['remark'] ?? '', ]); Db::commit(); diff --git a/app/adminapi/logic/contract/SubcontractingContractLogic.php b/app/adminapi/logic/contract/SubcontractingContractLogic.php index aa1283819..8df44fe65 100644 --- a/app/adminapi/logic/contract/SubcontractingContractLogic.php +++ b/app/adminapi/logic/contract/SubcontractingContractLogic.php @@ -18,8 +18,6 @@ namespace app\adminapi\logic\contract; use app\common\model\contract\SubcontractingContract; use app\common\model\contract\SubcontractingContractDetail; use app\common\logic\BaseLogic; -use app\common\model\dept\Dept; -use app\common\model\dept\Orgs; use app\common\model\dict\DictData; use app\common\model\finance\FinancePaymentPlan; use app\common\model\oa\FlowApprove; @@ -46,22 +44,16 @@ class SubcontractingContractLogic extends BaseLogic */ public static function add(array $params): bool { - //分包合同明细 - $subcontracting_contract_detail = $params['subcontracting_contract_detail'];//json_decode($params['subcontracting_contract_detail'],true); - //付款计划 - $payment_plan = $params['payment_plan'];//json_decode($params['payment_plan'],true); //税率字典值 $tax_rate_dict = DictData::where('type_value','tax_rate')->column('name','value'); //合同金额\不含税金额 $contract_amount = 0; - foreach($subcontracting_contract_detail as $v){ + foreach($params['subcontracting_contract_detail'] as $v){ $contract_amount += $v['price']*$v['num']; } Db::startTrans(); try { $res = SubcontractingContract::create([ - 'org_id' => $params['org_id'], - 'dept_id' => $params['dept_id'], 'supplier_id' => $params['supplier_id'], 'project_id' => $params['project_id'], 'contract_no' => data_unique_code('FBHT'), @@ -75,9 +67,9 @@ class SubcontractingContractLogic extends BaseLogic //质保金比例 'retention_money_rate' => $params['retention_money_rate'], 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex']? json_encode($params['annex']) : null, + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, ]); - foreach ($subcontracting_contract_detail as $v) + foreach ($params['subcontracting_contract_detail'] as $v) { SubcontractingContractDetail::create([ 'contract_id' => $res->id, @@ -92,7 +84,7 @@ class SubcontractingContractLogic extends BaseLogic 'remark' => $v['remark'] ?? '', ]); } - foreach ($payment_plan as $v) + foreach ($params['payment_plan'] as $v) { FinancePaymentPlan::create([ 'supplier_id' => $params['supplier_id'], @@ -125,22 +117,16 @@ class SubcontractingContractLogic extends BaseLogic */ public static function edit(array $params): bool { - //分包合同明细 - $subcontracting_contract_detail =$params['subcontracting_contract_detail'];// json_decode($params['subcontracting_contract_detail'],true); - //付款计划 - $payment_plan = $params['payment_plan'];//json_decode($params['payment_plan'],true); //税率字典值 $tax_rate_dict = DictData::where('type_value','tax_rate')->column('name','value'); //合同金额\不含税金额 $contract_amount = 0; - foreach($subcontracting_contract_detail as $v){ + foreach($params['subcontracting_contract_detail'] as $v){ $contract_amount += $v['price']*$v['num']; } Db::startTrans(); try { SubcontractingContract::where('id',$params['id'])->update([ - 'org_id' => $params['org_id'], - 'dept_id' => $params['dept_id'], 'supplier_id' => $params['supplier_id'], 'project_id' => $params['project_id'], 'contract_name' => $params['contract_name'], @@ -153,9 +139,9 @@ class SubcontractingContractLogic extends BaseLogic //质保金比例 'retention_money_rate' => $params['retention_money_rate'], 'remark' => $params['remark'] ?? '', - 'annex' => $params['annex']? json_encode($params['annex']) : null, + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, ]); - foreach ($subcontracting_contract_detail as $v) + foreach ($params['subcontracting_contract_detail'] as $v) { if(isset($v['id']) && $v != ''){ SubcontractingContractDetail::where('id',$v['id'])->update([ @@ -185,7 +171,7 @@ class SubcontractingContractLogic extends BaseLogic ]); } } - foreach ($payment_plan as $v) + foreach ($params['payment_plan'] as $v) { if(isset($v['id']) && $v != ''){ FinancePaymentPlan::where('id',$v['id'])->update([ @@ -222,6 +208,21 @@ class SubcontractingContractLogic extends BaseLogic } } + public static function delete(array $params): bool + { + $detail = SubcontractingContractDetail::where('contract_id','in',$params['id'])->findOrEmpty(); + if(!$detail->isEmpty()){ + self::setError('此数据关联了分包明细信息,需删除分包明细信息'); + return false; + } + $payment_plan = FinancePaymentPlan::where('contract_id','in',$params['id'])->where('contract_type',2)->findOrEmpty(); + if(!$payment_plan->isEmpty()){ + self::setError('此数据关联了付款计划信息,需删除付款计划信息'); + return false; + } + return SubcontractingContract::destroy($params['id']); + } + /** @@ -234,12 +235,8 @@ class SubcontractingContractLogic extends BaseLogic public static function detail($params): array { $data = SubcontractingContract::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(); $supplier = Supplier::field('supplier_name,supplier_code')->where('id',$data['supplier_id'])->findOrEmpty(); - $data['org_name'] = $org['name']; - $data['dept_name'] = $dept['name']; $data['project_name'] = $project['name']; $data['project_code'] = $project['project_code']; $data['supplier_name'] = $supplier['supplier_name']; @@ -284,4 +281,11 @@ class SubcontractingContractLogic extends BaseLogic return false; } } + + public static function datas() + { + return SubcontractingContract::field(['id','contract_name'])->order(['id' => 'desc'])->select()->each(function($data){ + $data['projectinfo'] = 'ID:' . $data['id'] . ' / 名称:' . $data['contract_name']; + })->toArray(); + } } \ No newline at end of file diff --git a/app/adminapi/logic/custom/CustomerDemandLogic.php b/app/adminapi/logic/custom/CustomerDemandLogic.php index 52f57a487..c728e4d57 100644 --- a/app/adminapi/logic/custom/CustomerDemandLogic.php +++ b/app/adminapi/logic/custom/CustomerDemandLogic.php @@ -120,7 +120,7 @@ class CustomerDemandLogic extends BaseLogic */ public static function detail($params): array { - $data = CustomerDemand::field('id,org_id,dept_id,project_id,theme,supplier,supplier_contacts,importance,recording_time,demand_content,annex,add_user,update_user,create_time,update_time')->findOrEmpty($params['id']); + $data = CustomerDemand::field('id,project_id,theme,supplier,supplier_contacts,importance,recording_time,demand_content,annex,add_user,update_user,create_time,update_time')->findOrEmpty($params['id']); $project = Project::field('name,project_code,custom_id')->where('id',$data['project_id'])->findOrEmpty(); $custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); $admin = Admin::where('id','in',[$data['add_user'],$data['update_user']])->column('name','id'); diff --git a/app/adminapi/logic/custom/CustomerDemandSolutionLogic.php b/app/adminapi/logic/custom/CustomerDemandSolutionLogic.php index 10fdf9f20..061166bc5 100644 --- a/app/adminapi/logic/custom/CustomerDemandSolutionLogic.php +++ b/app/adminapi/logic/custom/CustomerDemandSolutionLogic.php @@ -119,7 +119,7 @@ class CustomerDemandSolutionLogic extends BaseLogic */ public static function detail($params): array { - $data = CustomerDemandSolution::field('id,org_id,dept_id,project_id,customer_demand_id,theme,submission_time,solution_content,customer_feedback,annex,add_user,update_user,create_time,update_time')->findOrEmpty($params['id'])->toArray(); + $data = CustomerDemandSolution::field('id,project_id,customer_demand_id,theme,submission_time,solution_content,customer_feedback,annex,add_user,update_user,create_time,update_time')->findOrEmpty($params['id'])->toArray(); $project = Project::field('name,project_code,custom_id')->where('id',$data['project_id'])->findOrEmpty(); $custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); $demand = CustomerDemand::field('theme')->where('id',$data['customer_demand_id'])->findOrEmpty(); diff --git a/app/adminapi/logic/project/CompetitorLogic.php b/app/adminapi/logic/project/CompetitorLogic.php index 49bd795f0..61c845b22 100644 --- a/app/adminapi/logic/project/CompetitorLogic.php +++ b/app/adminapi/logic/project/CompetitorLogic.php @@ -122,7 +122,7 @@ class CompetitorLogic extends BaseLogic */ public static function detail($params): array { - $field = 'id,org_id,dept_id,project_id,customer_demand_id,competitor_name,competitor_contacts,competitor_contacts_phone,competitive_power,competitor_advantages,competitor_disadvantages,remark,annex,add_user,update_user,create_time,update_time'; + $field = 'id,project_id,customer_demand_id,competitor_name,competitor_contacts,competitor_contacts_phone,competitive_power,competitor_advantages,competitor_disadvantages,remark,annex,add_user,update_user,create_time,update_time'; $data = Competitor::field($field)->findOrEmpty($params['id'])->toArray(); $project = Project::field('name,project_code,custom_id')->where('id',$data['project_id'])->findOrEmpty(); $custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty(); diff --git a/app/adminapi/logic/project/ProjectEstimateLogic.php b/app/adminapi/logic/project/ProjectEstimateLogic.php index fae9327ea..0c2bfefb7 100644 --- a/app/adminapi/logic/project/ProjectEstimateLogic.php +++ b/app/adminapi/logic/project/ProjectEstimateLogic.php @@ -128,7 +128,7 @@ class ProjectEstimateLogic extends BaseLogic */ public static function detail($params): array { - $field = 'id,org_id,dept_id,project_id,customer_demand_id,contact_id,estimate_source,create_user,quotation_date,invoice_type,technician,estimate_amount,ask,annex,add_user,update_user,create_time,update_time'; + $field = 'id,project_id,customer_demand_id,contact_id,estimate_source,create_user,quotation_date,invoice_type,technician,estimate_amount,ask,annex,add_user,update_user,create_time,update_time'; $data = ProjectEstimate::field($field)->findOrEmpty($params['id']); $data['estimate_source_text'] = $data->estimate_source_text; $data['invoice_type_text'] = $data->invoice_type_text; diff --git a/app/adminapi/validate/contract/SubcontractingContractValidate.php b/app/adminapi/validate/contract/SubcontractingContractValidate.php index e0ec463b8..f2bfd5597 100644 --- a/app/adminapi/validate/contract/SubcontractingContractValidate.php +++ b/app/adminapi/validate/contract/SubcontractingContractValidate.php @@ -16,8 +16,6 @@ namespace app\adminapi\validate\contract; use app\common\model\contract\SubcontractingContract; use app\common\model\contract\SubcontractingContractDetail; -use app\common\model\dept\Dept; -use app\common\model\dept\Orgs; use app\common\model\dict\DictData; use app\common\model\finance\FinancePaymentPlan; use app\common\model\project\Project; @@ -40,8 +38,6 @@ class SubcontractingContractValidate extends BaseValidate */ protected $rule = [ 'id' => 'require|checkData', - 'org_id' => 'require|checkOrg', - 'dept_id' => 'require|checkDept', 'supplier_id' => 'require|checkSupplier', 'project_id' => 'require|checkProject', 'contract_name' => 'require', @@ -59,8 +55,6 @@ class SubcontractingContractValidate extends BaseValidate protected $message = [ 'id.require' => '缺少必要参数', - 'org_id.require' => '请选择组织', - 'dept_id.require' => '请选择部门', 'supplier_id.require' => '请选择供应商', 'project_id.require' => '请选择项目', 'contract_name.require' => '请填写合同名称', @@ -138,27 +132,6 @@ class SubcontractingContractValidate extends BaseValidate return true; } - public function checkOrg($value): bool|string - { - $org = Orgs::where('id',$value)->findOrEmpty(); - if($org->isEmpty()){ - return '组织不存在'; - } - return true; - } - - public function checkDept($value,$rule,$data): bool|string - { - $dept = Dept::where('id',$value)->findOrEmpty(); - if($dept->isEmpty()){ - return '部门不存在'; - } - if($dept['org_id'] != $data['org_id']){ - return '部门无效'; - } - return true; - } - public function checkSupplier($value): bool|string { $supplier = Supplier::where('id',$value)->findOrEmpty(); @@ -204,23 +177,12 @@ class SubcontractingContractValidate extends BaseValidate return true; } - public function checkAnnex($value): bool|string - { - if(!empty($value) && $value != ''){ - if(!is_array($value)){ - return '附件格式错误'; - } - } - return true; - } - public function checkSubcontractingContractDetail($value): bool|string { - $detail = $value;//json_decode($value,true); - if(empty($detail) || !is_array($detail)){ + if(!empty($value) && !is_array($value)){ return '分包合同明细数据格式错误'; } - foreach($detail as $v) { + foreach($value as $v) { if(isset($v['id']) && $v['id'] != ''){ $data_detail = SubcontractingContractDetail::where('id',$v['id'])->findOrEmpty(); if($data_detail->isEmpty()){ @@ -263,11 +225,10 @@ class SubcontractingContractValidate extends BaseValidate public function checkPaymentPlan($value): bool|string { - $detail = $value;//json_decode($value,true); - if(empty($detail) || !is_array($detail)){ + if(!empty($value) && !is_array($value)){ return '付款计划据格式错误'; } - foreach($detail as $v) { + foreach($value as $v) { if(isset($v['id']) && $v['id'] != ''){ $data_detail = FinancePaymentPlan::where('id',$v['id'])->findOrEmpty(); if($data_detail->isEmpty()){ diff --git a/app/common/model/contract/SubcontractingContract.php b/app/common/model/contract/SubcontractingContract.php index 4521f538f..9a876979f 100644 --- a/app/common/model/contract/SubcontractingContract.php +++ b/app/common/model/contract/SubcontractingContract.php @@ -36,10 +36,6 @@ class SubcontractingContract extends BaseModel return empty($value) ? '' : date('Y-m-d', $value); } - public function getAnnexAttr($value){ - return !empty($value) ? json_decode($value) : ''; - } - public function getContractTypeTextAttr($value,$data){ $dict = DictData::where('type_value','divide_contract_type')->column('name','value'); return !empty($data['contract_type']) ? $dict[$data['contract_type']] : '';