This commit is contained in:
weiz 2024-04-06 11:04:53 +08:00
parent 80202c29f6
commit 91d1ed8686
11 changed files with 1416 additions and 1407 deletions

View File

@ -1,282 +1,287 @@
<?php <?php
namespace app\adminapi\controller;
use app\common\model\auth\Admin;
use app\common\model\cost_project\CostApprovedProject;
use app\common\model\cost_project\CostProject;
use app\common\model\cost_project\CostProjectPerson;
use app\common\model\DataReception;
use app\common\model\dept\Dept;
use app\common\model\GeoCity;
use app\common\model\GeoProvince;
use app\common\model\project_process_management\JianliProjectProgressReport;
use app\common\model\ProjectCommission;
use app\common\model\ProjectCommissionDetail;
use app\common\model\task\TaskAllocation;
use app\common\model\TaskHandlingThreeLevelReview;
use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\model\zjzx_finance\ZjzxRefund;
use app\common\model\zjzx_finance\ZjzxSettlement;
use think\facade\Db;
class CostConsultationReportController extends BaseAdminController
{
// 造价报表控制器
// 造价合同台账
public function cost_approved_project_list()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
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_a'])){
$contract_ids3 = CostApprovedProject::where('part_a','like','%'.$params['part_a'].'%')->column('id');
$where[] = ['contract_id','in',$contract_ids3];
}
$lists = CostProject::field('id,contract_id')->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){
$contract = CostApprovedProject::field('contract_name,contract_num,contract_type,part_a,part_b,create_time,start_date,end_date,project_money,money')
->where('id',$data['contract_id'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['contract_num'] = $contract['contract_num'];
$data['contract_type'] = $contract->contract_type_text;
$data['part_a'] = $contract['part_a'];
$data['part_b'] = $contract['part_b'];
$data['create_time'] = $contract['create_time'];
$data['start_date'] = $contract['start_date'];
$data['end_date'] = $contract['end_date'];
$data['project_money'] = $contract['project_money'];
$data['sign_money'] = $contract['money'];
//开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount');
//结算金额
$data['total_settlement_amount'] = ZjzxSettlement::where('project_id',$data['id'])->sum('amount');
//应收账款
$data['total_collection_amount'] = $contract['money'] - $data['total_refund_amount'];
unset($data['contract_id'],$data['id']);
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
// 造价项目信息汇总
public function cost_project_report()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
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['project_name'])){
$where[] = ['project_name','like','%'.$params['project_name'].'%'];
}
$lists = CostProject::field('id,contract_id,project_num,project_name,starting,endtime,types,invest')
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){
$contract = CostApprovedProject::field('contract_name')->where('id',$data['contract_id'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['types'] = $data->types_text;
//开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount');
//提成金额
$data['total_commission_amount'] = ProjectCommission::where('project_id',$data['id'])->sum('bczfze');
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
// 项目全过程跟踪表
public function project_trace()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
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['project_name'])){
$where[] = ['project_name','like','%'.$params['project_name'].'%'];
}
$lists = CostProject::field('id,contract_id,project_num,project_name,depar')
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){
$contract = CostApprovedProject::field('contract_name,project_director')->where('id',$data['contract_id'])->findOrEmpty();
$dept = Dept::field('name')->where('id', $data['depar'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['project_director'] = $contract['project_director'];
$data['dept_name'] = $dept['name'];
//任务分配状态
$task_allocation_status = TaskAllocation::where('cost_project_id', $data['id'])->count();
$data['task_allocation_status'] = $task_allocation_status > 0 ? 1 : 0;
//任务办理状态
$task_handling_three_level_review_status = TaskHandlingThreeLevelReview::where('project_id', $data['id'])->count();
$data['task_handling_three_level_review_status'] = $task_handling_three_level_review_status > 0 ? 1 : 0;
//资料归档状态
$data_reception_status = DataReception::where('project_id', $data['id'])->count();
$data['data_reception_status'] = $data_reception_status > 0 ? 1 : 0;
//开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount');
//提成金额
$data['total_commission_amount'] = ProjectCommission::where('project_id',$data['id'])->sum('bczfze');
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
/**
* 项目开票收款汇总表
*/
public function project_invoice_receipt()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
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['project_name'])){
$where[] = ['project_name','like','%'.$params['project_name'].'%'];
}
$lists = CostProject::field('id,contract_id,project_num,project_name,depar')
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){
$contract = CostApprovedProject::field('contract_name,project_director')->where('id',$data['contract_id'])->findOrEmpty();
$dept = Dept::field('name')->where('id', $data['depar'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['project_director'] = $contract['project_director'];
$data['dept_name'] = $dept['name'];
//开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount');
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
/**
* 项目部门分布
*/
public function distribution_project_departments()
{
$page_no = $this->request->param('page_no', 1);
$page_size = $this->request->param('page_size', 15);
$query = (new CostProject);
$count = $query->count();
$lists = $query->page($page_no, $page_size)->select()->each(function ($item) {
$item['start_date'] = date('Y-m-d', $item['start_date']);
$item['end_date'] = date('Y-m-d', $item['end_date']);
if ($item['depar'] > 0) {
$item['depar'] = Dept::where('id', $item['depar'])->value('name');
}
return $item;
});
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
/**
* 项目人员分布
*/
public function distribution_project_personnel()
{
$page_no = $this->request->param('page_no', 1);
$page_size = $this->request->param('page_size', 15);
$query = (new CostProjectPerson);
$count = $query->count();
$lists = $query->page($page_no, $page_size)->select()->each(function ($item) {
$CostProject = (new CostProject)->where('id', $item['cost_project_id'])->field('depar,project_name')->find();
$item['project_name'] = $CostProject['project_name'];
$item['name'] = (new Admin)->where('id', $item['uid'])->value('name');
if ($CostProject['depar'] > 0) {
$item['depar'] = Dept::where('id', $CostProject['depar'])->value('name');
}
return $item;
});
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//项目提成统计 namespace app\adminapi\controller;
public function project_commission_statistics(){
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
if(!empty($params['project_name'])){
$where[] = ['project_name','like','%'.$params['project_name'].'%'];
}
if(!empty($params['date'])){
$date = explode(',',$params['date']);
$where[] = ['apptime','between',[strtotime($date[0].' 00:00:00'),strtotime($date[1].' 23:59:59')]];
}
$lists = ProjectCommission::field('id,project_id,apptime')->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){
$project = CostProject::field('project_name,project_num,contract_id')->where('id',$data['project_id'])->findOrEmpty();
$contract = CostApprovedProject::field('contract_name')->where('id',$project['contract_id'])->findOrEmpty();
$data['project_num'] = $project['project_num'];
$data['project_name'] = $project['project_name'];
$data['contract_name'] = $contract['contract_name'];
$data['children'] = ProjectCommissionDetail::withoutField('engineer_id,remark,create_time,update_time,delete_time')
->where('project_commission_id',$data['id'])->select()->each(function($data){
$data['task_type'] = $data->task_type_text;
$data['professional_type'] = $data->professional_type_text;
})->toArray();
})->toArray();
$count = ProjectCommission::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//项目进度统计 use app\common\model\auth\Admin;
public function project_schedule_statistics(){ use app\common\model\cost_project\CostProject;
$params = $this->request->get(); use app\common\model\cost_project\CostProjectPerson;
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1; use app\common\model\DataReception;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15; use app\common\model\dept\Dept;
$where = []; use app\common\model\GeoCity;
if(!empty($params['contract_name'])){ use app\common\model\GeoProvince;
$contract_ids1 = CostApprovedProject::where('contract_name','like','%'.$params['contract_name'].'%')->column('id'); use app\common\model\marketing\MarketingContract;
$where[] = ['contract_id','in',$contract_ids1]; use app\common\model\project_process_management\JianliProjectProgressReport;
} use app\common\model\ProjectCommission;
if(!empty($params['project_name'])){ use app\common\model\ProjectCommissionDetail;
$where[] = ['project_name','like','%'.$params['project_name'].'%']; use app\common\model\task\TaskAllocation;
} use app\common\model\TaskHandlingThreeLevelReview;
$lists = CostProject::field('id,contract_id,project_num,project_name,types,aunit,province,city,starting,endtime,jhgq') use app\common\model\zjzx_finance\ZjzxInvoice;
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){ use app\common\model\zjzx_finance\ZjzxRefund;
$contract = CostApprovedProject::field('contract_name,industry_nature,project_director')->where('id',$data['contract_id'])->findOrEmpty(); use app\common\model\zjzx_finance\ZjzxSettlement;
$province = GeoProvince::field('province_name')->where('province_code',$data['province'])->findOrEmpty();
$city = GeoCity::field('city_name')->where('city_code',$data['city'])->findOrEmpty(); class CostConsultationReportController extends BaseAdminController
$schedule = JianliProjectProgressReport::field('start_date,end_date,duration,done_progress')->where('project_id',$data['id'])->findOrEmpty(); {
// 造价报表控制器
// 造价合同台账
public function cost_approved_project_list()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
if (!empty($params['contract_name'])) {
$contract_ids1 = MarketingContract::where('contract_name', 'like', '%' . $params['contract_name'] . '%')->column('id');
$where[] = ['contract_id', 'in', $contract_ids1];
}
if (!empty($params['contract_num'])) {
$contract_ids2 = MarketingContract::where('contract_code', 'like', '%' . $params['contract_num'] . '%')->column('id');
$where[] = ['contract_id', 'in', $contract_ids2];
}
if (!empty($params['part_a'])) {
$contract_ids3 = MarketingContract::where('part_a', 'like', '%' . $params['part_a'] . '%')->column('id');
$where[] = ['contract_id', 'in', $contract_ids3];
}
$lists = CostProject::field('id,contract_id')->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function ($data) {
$contract = MarketingContract::field('contract_name,contract_code,contract_type,part_a,part_b,create_time,start_date,end_date,project_money,signed_amount')
->where('id', $data['contract_id'])->findOrEmpty();
$admin = Admin::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name']; $data['contract_name'] = $contract['contract_name'];
$data['project_director'] = $contract['project_director']; $data['contract_num'] = $contract['contract_code'];
$data['types'] = $data->types_text; $data['contract_type'] = !$contract->isEmpty() ? $contract->contract_type_text : '';
$data['industry_nature'] = $contract->industry_nature_text; $data['part_a'] = $admin['name'];
$data['project_director'] = $contract['project_director']; $data['part_b'] = $contract['part_b'];
$data['province'] = $province['province_name']; $data['create_time'] = $contract['create_time'];
$data['city'] = $city['city_name']; $data['start_date'] = $contract['start_date'];
$data['actual_starting'] = $schedule['start_date']; $data['end_date'] = $contract['end_date'];
$data['actual_endtime'] = $schedule['end_date']; $data['project_money'] = $contract['project_money'];
$data['duration'] = $schedule['duration']; $data['sign_money'] = $contract['signed_amount'];
$data['done_progress'] = $schedule['done_progress']; //开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['id'])->sum('amount');
//结算金额
$data['total_settlement_amount'] = ZjzxSettlement::where('project_id', $data['id'])->sum('amount');
//应收账款
$data['total_collection_amount'] = $contract['money'] - $data['total_refund_amount'];
unset($data['contract_id'], $data['id']);
})->toArray(); })->toArray();
$count = CostProject::where($where)->count(); $count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
// 造价项目信息汇总
public function cost_project_report()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
if (!empty($params['contract_name'])) {
$contract_ids1 = MarketingContract::where('contract_name', 'like', '%' . $params['contract_name'] . '%')->column('id');
$where[] = ['contract_id', 'in', $contract_ids1];
}
if (!empty($params['project_name'])) {
$where[] = ['project_name', 'like', '%' . $params['project_name'] . '%'];
}
$lists = CostProject::field('id,contract_id,project_num,project_name,starting,endtime,types,invest')
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function ($data) {
$contract = MarketingContract::field('contract_name')->where('id', $data['contract_id'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['types'] = $data->types_text;
//开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['id'])->sum('amount');
//提成金额
$data['total_commission_amount'] = ProjectCommission::where('project_id', $data['id'])->sum('bczfze');
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
// 项目全过程跟踪表
public function project_trace()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
if (!empty($params['contract_name'])) {
$contract_ids1 = MarketingContract::where('contract_name', 'like', '%' . $params['contract_name'] . '%')->column('id');
$where[] = ['contract_id', 'in', $contract_ids1];
}
if (!empty($params['project_name'])) {
$where[] = ['project_name', 'like', '%' . $params['project_name'] . '%'];
}
$lists = CostProject::field('id,contract_id,project_num,project_name,depar')
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function ($data) {
$contract = MarketingContract::field('contract_name,project_manager')->where('id', $data['contract_id'])->findOrEmpty();
$dept = Dept::field('name')->where('id', $data['depar'])->findOrEmpty();
$admin = Admin::field('name')->where('id', $contract['project_manager'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['project_director'] = $admin['name'];
$data['dept_name'] = $dept['name'];
//任务分配状态
$task_allocation_status = TaskAllocation::where('cost_project_id', $data['id'])->count();
$data['task_allocation_status'] = $task_allocation_status > 0 ? 1 : 0;
//任务办理状态
$task_handling_three_level_review_status = TaskHandlingThreeLevelReview::where('project_id', $data['id'])->count();
$data['task_handling_three_level_review_status'] = $task_handling_three_level_review_status > 0 ? 1 : 0;
//资料归档状态
$data_reception_status = DataReception::where('project_id', $data['id'])->count();
$data['data_reception_status'] = $data_reception_status > 0 ? 1 : 0;
//开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['id'])->sum('amount');
//提成金额
$data['total_commission_amount'] = ProjectCommission::where('project_id', $data['id'])->sum('bczfze');
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
/**
* 项目开票收款汇总表
*/
public function project_invoice_receipt()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
if (!empty($params['contract_name'])) {
$contract_ids1 = MarketingContract::where('contract_name', 'like', '%' . $params['contract_name'] . '%')->column('id');
$where[] = ['contract_id', 'in', $contract_ids1];
}
if (!empty($params['project_name'])) {
$where[] = ['project_name', 'like', '%' . $params['project_name'] . '%'];
}
$lists = CostProject::field('id,contract_id,project_num,project_name,depar')
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function ($data) {
$contract = MarketingContract::field('contract_name,project_manager')->where('id', $data['contract_id'])->findOrEmpty();
$dept = Dept::field('name')->where('id', $data['depar'])->findOrEmpty();
$admin = Admin::field('name')->where('id', $contract['project_manager'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['project_director'] = $admin['name'];
$data['dept_name'] = $dept['name'];
//开票金额
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['id'])->sum('apply_amount');
//到账金额
$data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['id'])->sum('amount');
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
/**
* 项目部门分布
*/
public function distribution_project_departments()
{
$page_no = $this->request->param('page_no', 1);
$page_size = $this->request->param('page_size', 15);
$query = (new CostProject);
$count = $query->count();
$lists = $query->page($page_no, $page_size)->select()->each(function ($item) {
$item['start_date'] = date('Y-m-d', $item['start_date']);
$item['end_date'] = date('Y-m-d', $item['end_date']);
if ($item['depar'] > 0) {
$item['depar'] = Dept::where('id', $item['depar'])->value('name');
}
return $item;
});
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
/**
* 项目人员分布
*/
public function distribution_project_personnel()
{
$page_no = $this->request->param('page_no', 1);
$page_size = $this->request->param('page_size', 15);
$query = (new CostProjectPerson);
$count = $query->count();
$lists = $query->page($page_no, $page_size)->select()->each(function ($item) {
$CostProject = (new CostProject)->where('id', $item['cost_project_id'])->field('depar,project_name')->find();
$item['project_name'] = $CostProject['project_name'];
$item['name'] = (new Admin)->where('id', $item['uid'])->value('name');
if ($CostProject['depar'] > 0) {
$item['depar'] = Dept::where('id', $CostProject['depar'])->value('name');
}
return $item;
});
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//项目提成统计
public function project_commission_statistics()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
if (!empty($params['project_name'])) {
$where[] = ['project_name', 'like', '%' . $params['project_name'] . '%'];
}
if (!empty($params['date'])) {
$date = explode(',', $params['date']);
$where[] = ['apptime', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]];
}
$lists = ProjectCommission::field('id,project_id,apptime')->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function ($data) {
$project = CostProject::field('project_name,project_num,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$contract = MarketingContract::field('contract_name')->where('id', $project['contract_id'])->findOrEmpty();
$data['project_num'] = $project['project_num'];
$data['project_name'] = $project['project_name'];
$data['contract_name'] = $contract['contract_name'];
$data['children'] = ProjectCommissionDetail::withoutField('engineer_id,remark,create_time,update_time,delete_time')
->where('project_commission_id', $data['id'])->select()->each(function ($data) {
$data['task_type'] = $data->task_type_text;
$data['professional_type'] = $data->professional_type_text;
})->toArray();
})->toArray();
$count = ProjectCommission::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//项目进度统计
public function project_schedule_statistics()
{
$params = $this->request->get();
$page_no = !empty($params['page_no']) ? $params['page_no'] : 1;
$page_size = !empty($params['page_size']) ? $params['page_size'] : 15;
$where = [];
if (!empty($params['contract_name'])) {
$contract_ids1 = MarketingContract::where('contract_name', 'like', '%' . $params['contract_name'] . '%')->column('id');
$where[] = ['contract_id', 'in', $contract_ids1];
}
if (!empty($params['project_name'])) {
$where[] = ['project_name', 'like', '%' . $params['project_name'] . '%'];
}
$lists = CostProject::field('id,contract_id,project_num,project_name,types,aunit,province,city,starting,endtime,jhgq')
->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function ($data) {
$contract = MarketingContract::field('contract_name,industry_nature,project_manager')->where('id', $data['contract_id'])->findOrEmpty();
$province = GeoProvince::field('province_name')->where('province_code', $data['province'])->findOrEmpty();
$city = GeoCity::field('city_name')->where('city_code', $data['city'])->findOrEmpty();
$schedule = JianliProjectProgressReport::field('start_date,end_date,duration,done_progress')->where('project_id', $data['id'])->findOrEmpty();
$admin = Admin::field('name')->where('id', $contract['project_manager'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name'];
$data['project_director'] = $contract['project_director'];
$data['types'] = $data->types_text;
$data['industry_nature'] = $contract->industry_nature_text;
$data['project_director'] = $admin['name'];
$data['province'] = $province['province_name'];
$data['city'] = $city['city_name'];
$data['actual_starting'] = $schedule['start_date'];
$data['actual_endtime'] = $schedule['end_date'];
$data['duration'] = $schedule['duration'];
$data['done_progress'] = $schedule['done_progress'];
})->toArray();
$count = CostProject::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
} }
}

View File

@ -11,117 +11,115 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\adminapi\lists; namespace app\adminapi\lists;
use app\adminapi\lists\BaseAdminDataLists; use app\common\lists\ListsExcelInterface;
use app\common\lists\ListsExcelInterface; use app\common\lists\ListsSearchInterface;
use app\common\model\cost_project\CostApprovedProject; use app\common\model\cost_project\CostProject;
use app\common\model\cost_project\CostProject; use app\common\model\marketing\MarketingContract;
use app\common\model\ProjectCommission; use app\common\model\ProjectCommission;
use app\common\lists\ListsSearchInterface; use app\common\model\ProjectCommissionDetail;
use app\common\model\ProjectCommissionDetail; use app\common\model\zjzx_finance\ZjzxRefund;
use app\common\model\zjzx_finance\ZjzxRefund;
/**
/** * ProjectCommission列表
* ProjectCommission列表 * Class ProjectCommissionLists
* Class ProjectCommissionLists * @package app\adminapi\lists
* @package app\adminapi\lists */
*/ class ProjectCommissionLists extends BaseAdminDataLists implements ListsSearchInterface, ListsExcelInterface
class ProjectCommissionLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface {
{
/**
/** * @notes 设置搜索条件
* @notes 设置搜索条件 * @return \string[][]
* @return \string[][] * @author likeadmin
* @author likeadmin * @date 2024/02/23 09:37
* @date 2024/02/23 09:37 */
*/ public function setSearch(): array
public function setSearch(): array {
{ return [
return [ '=' => ['project_id'],
'=' => ['project_id'], '%like%' => ['num']
'%like%' => ['num'] ];
]; }
}
/**
/** * @notes 获取列表
* @notes 获取列表 * @return array
* @return array * @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException
* @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException
* @throws \think\db\exception\ModelNotFoundException * @author likeadmin
* @author likeadmin * @date 2024/02/23 09:37
* @date 2024/02/23 09:37 */
*/ public function lists(): array
public function lists(): array {
{ return ProjectCommission::withoutField('create_time,update_time,delete_time')->where($this->searchWhere)
return ProjectCommission::withoutField('create_time,update_time,delete_time')->where($this->searchWhere) ->limit($this->limitOffset, $this->limitLength)
->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc'])
->order(['id' => 'desc']) ->select()->each(function ($data) {
->select()->each(function($data){ $project = CostProject::field('project_name,project_num,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$project = CostProject::field('project_name,project_num,contract_id')->where('id',$data['project_id'])->findOrEmpty(); $contract = MarketingContract::field('contract_name,industry_nature')->where('id', $project['contract_id'])->findOrEmpty();
$contract = CostApprovedProject::field('contract_name,project_director,industry_nature')->where('id',$project['contract_id'])->findOrEmpty(); $data['project_name'] = $project['project_name'];
$data['project_name'] = $project['project_name']; $data['project_num'] = $project['project_num'];
$data['project_num'] = $project['project_num']; $data['contract_name'] = $contract['contract_name'];
$data['contract_name'] = $contract['contract_name']; $data['industry_nature'] = $contract->industry_nature_text;
$data['project_director'] = $contract['project_director']; //到账金额
$data['industry_nature'] = $contract->industry_nature_text; $data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['project_id'])->sum('amount');
//到账金额 //已支付总额
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['project_id'])->sum('amount'); $data['total_pay_amount'] = ProjectCommission::where('project_id', $data['project_id'])->sum('bczfze');
//已支付总额 //应提成总金额
$data['total_pay_amount'] = ProjectCommission::where('project_id',$data['project_id'])->sum('bczfze'); $data['total_commission_amount'] = $data['total_refund_amount'] * ($data['rate'] / 100);
//应提成总金额 $data['children'] = ProjectCommissionDetail::field('id,engineer,task_name,task_type,professional_type,zj_amount,sk_amount,tc_rate,tc_amount,pay_amount,other_fee')->where('project_commission_id', $data['id'])->select()->toArray();
$data['total_commission_amount'] = $data['total_refund_amount'] * ($data['rate'] / 100); })
$data['children'] = ProjectCommissionDetail::field('id,engineer,task_name,task_type,professional_type,zj_amount,sk_amount,tc_rate,tc_amount,pay_amount,other_fee')->where('project_commission_id', $data['id'])->select()->toArray(); ->toArray();
}) }
->toArray();
}
/**
* @notes 获取数量
/** * @return int
* @notes 获取数量 * @author likeadmin
* @return int * @date 2024/02/23 09:37
* @author likeadmin */
* @date 2024/02/23 09:37 public function count(): int
*/ {
public function count(): int return ProjectCommission::where($this->searchWhere)->count();
{ }
return ProjectCommission::where($this->searchWhere)->count();
} public function setFileName(): string
{
public function setFileName(): string return '项目提成';
{ }
return '项目提成';
} /**
* @notes 导出字段
/** * @return string[]
* @notes 导出字段 * @author 段誉
* @return string[] * @date 2022/11/24 16:17
* @author 段誉 */
* @date 2022/11/24 16:17 public function setExcelFields(): array
*/ {
public function setExcelFields(): array return [
{ 'id' => 'id',
return [ 'num' => '单据编号',
'id' => 'id', 'project_id' => '项目id',
'num' => '单据编号', 'affcontract' => '关联合同',
'project_id' => '项目id', 'industry' => '行业',
'affcontract' => '关联合同', 'hk' => '项目回款总额',
'industry' => '行业', 'rate' => '提成比例(%',
'hk' => '项目回款总额', 'ticheng' => '应提成总金额',
'rate' => '提成比例(%', 'paid_amount' => '已支付总额',
'ticheng' => '应提成总金额', 'bczfze' => '本次支付总额',
'paid_amount' => '已支付总额', 'djr' => '登记人',
'bczfze' => '本次支付总额', 'apptime' => '登记日期',
'djr' => '登记人', 'remark' => '备注',
'apptime' => '登记日期', ];
'remark' => '备注', }
];
} }
}

View File

@ -11,147 +11,145 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\adminapi\lists\cost_project; namespace app\adminapi\lists\cost_project;
use app\adminapi\lists\BaseAdminDataLists; use app\adminapi\lists\BaseAdminDataLists;
use app\common\lists\ListsExcelInterface; use app\common\lists\ListsExcelInterface;
use app\common\model\cost_project\CostProject; use app\common\lists\ListsSearchInterface;
use app\common\lists\ListsSearchInterface; use app\common\model\cost_project\CostProject;
use app\common\model\ProjectCommission; use app\common\model\ProjectCommission;
use app\common\model\zjzx_finance\ZjzxInvoice; use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\model\zjzx_finance\ZjzxRefund; use app\common\model\zjzx_finance\ZjzxRefund;
/** /**
* 造价项目台账列表 * 造价项目台账列表
* Class CostProjectLists * Class CostProjectLists
* @package app\adminapi\listscost_project * @package app\adminapi\listscost_project
*/ */
class CostProjectLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface class CostProjectLists extends BaseAdminDataLists implements ListsSearchInterface, ListsExcelInterface
{ {
/** /**
* @notes 设置搜索条件 * @notes 设置搜索条件
* @return \string[][] * @return \string[][]
* @author likeadmin * @author likeadmin
* @date 2024/02/21 09:23 * @date 2024/02/21 09:23
*/ */
public function setSearch(): array public function setSearch(): array
{ {
return [ return [
'=' => ['cost_project_id','types','industry'], '=' => ['cost_project_id', 'types', 'industry'],
'%like%' => ['project_num', 'project_name'], '%like%' => ['project_num', 'project_name'],
]; ];
} }
/** /**
* @notes 获取造价项目台账列表 * @notes 获取造价项目台账列表
* @return array * @return array
* @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException * @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
* @author likeadmin * @author likeadmin
* @date 2024/02/21 09:23 * @date 2024/02/21 09:23
*/ */
public function lists(): array public function lists(): array
{ {
$task_allocation = $this->request->param('task_allocation', 0); $task_allocation = $this->request->param('task_allocation', 0);
// 筛选出关联了任务类别的项目 // 筛选出关联了任务类别的项目
if ($task_allocation == 1) { if ($task_allocation == 1) {
return CostProject::alias('p') return CostProject::alias('p')
->join('task_type t', 'p.id=t.cost_project_id') ->join('task_type t', 'p.id=t.cost_project_id')
->where($this->searchWhere) ->where($this->searchWhere)
->field('p.*') ->field('p.*')
->limit($this->limitOffset, $this->limitLength) ->limit($this->limitOffset, $this->limitLength)
->with(['contract']) ->with(['contract'])
->order(['id' => 'desc']) ->order(['id' => 'desc'])
->select() ->select()
->each(function($item){ ->each(function ($item) {
$item['person_text'] = $item->person_text; $item['person_text'] = $item->person_text;
$item['contract']['contract_type_text'] = $item['contract']->contract_type_text; $item['total_invoice_amount'] = ZjzxInvoice::where('project_id', $item['id'])->sum('apply_amount');
$item['total_invoice_amount'] = ZjzxInvoice::where('project_id',$item['id'])->sum('apply_amount'); $item['total_refund_amount'] = ZjzxRefund::where('project_id', $item['id'])->sum('amount');
$item['total_refund_amount'] = ZjzxRefund::where('project_id',$item['id'])->sum('amount'); $item['total_pay_amount'] = ProjectCommission::where('project_id', $item['id'])->sum('bczfze');
$item['total_pay_amount'] = ProjectCommission::where('project_id',$item['id'])->sum('bczfze'); })
}) ->toArray();
->toArray(); }
} return CostProject::where($this->searchWhere)
return CostProject::where($this->searchWhere) ->limit($this->limitOffset, $this->limitLength)
->limit($this->limitOffset, $this->limitLength) ->with(['contract'])
->with(['contract']) ->order(['id' => 'desc'])
->order(['id' => 'desc']) ->select()
->select() ->each(function ($item) {
->each(function($item){ $item['person_text'] = $item->person_text;
$item['person_text'] = $item->person_text; $item['total_invoice_amount'] = ZjzxInvoice::where('project_id', $item['id'])->sum('apply_amount');
$item['contract']['contract_type_text'] = $item['contract']->contract_type_text; $item['total_refund_amount'] = ZjzxRefund::where('project_id', $item['id'])->sum('amount');
$item['total_invoice_amount'] = ZjzxInvoice::where('project_id',$item['id'])->sum('apply_amount'); $item['total_pay_amount'] = ProjectCommission::where('project_id', $item['id'])->sum('bczfze');
$item['total_refund_amount'] = ZjzxRefund::where('project_id',$item['id'])->sum('amount'); })
$item['total_pay_amount'] = ProjectCommission::where('project_id',$item['id'])->sum('bczfze'); ->toArray();
})
->toArray(); }
}
/**
* @notes 获取造价项目台账数量
/** * @return int
* @notes 获取造价项目台账数量 * @author likeadmin
* @return int * @date 2024/02/21 09:23
* @author likeadmin */
* @date 2024/02/21 09:23 public function count(): int
*/ {
public function count(): int $task_allocation = $this->request->param('task_allocation', 0);
{ // 筛选出关联了任务类别的项目
$task_allocation = $this->request->param('task_allocation', 0); if ($task_allocation == 1) {
// 筛选出关联了任务类别的项目 return CostProject::alias('p')->join('task_type t', 'p.id=t.cost_project_id')->where($this->searchWhere)->count();
if ($task_allocation == 1) { }
return CostProject::alias('p')->join('task_type t', 'p.id=t.cost_project_id')->where($this->searchWhere)->count(); return CostProject::where($this->searchWhere)->count();
} }
return CostProject::where($this->searchWhere)->count();
} public function setFileName(): string
{
public function setFileName(): string return '造价项目';
{ }
return '造价项目';
} /**
* @notes 导出字段
/** * @return string[]
* @notes 导出字段 * @author 段誉
* @return string[] * @date 2022/11/24 16:17
* @author 段誉 */
* @date 2022/11/24 16:17 public function setExcelFields(): array
*/ {
public function setExcelFields(): array return [
{ 'id' => 'id',
return [ 'project_num' => '项目编号',
'id' => 'id', 'project_name' => '项目名称',
'project_num' => '项目编号', 'contract_id' => '关联合同',
'project_name' => '项目名称', 'types' => '咨询类型',
'contract_id' => '关联合同', 'industry' => '行业',
'types' => '咨询类型', 'province' => '所在省份',
'industry' => '行业', 'city' => '所在市区',
'province' => '所在省份', 'address' => '具体地址',
'city' => '所在市区', 'starting' => '计划开始日期',
'address' => '具体地址', 'endtime' => '计划结束日期',
'starting' => '计划开始日期', 'jhgq' => '计划工期(天)',
'endtime' => '计划结束日期', 'org_id' => '组织id',
'jhgq' => '计划工期(天)', 'depar' => '项目所属部门',
'org_id' => '组织id', 'principal' => '项目负责人',
'depar' => '项目所属部门', 'person' => '项目相关人员',
'principal' => '项目负责人', 'invest' => '项目总投资(万元)',
'person' => '项目相关人员', 'budget' => '预算造价(万元)',
'invest' => '项目总投资(万元)', 'cost' => '送审造价(万元)',
'budget' => '预算造价(万元)', 'approval' => '审定造价(万元)',
'cost' => '送审造价(万元)', 'aunit' => '委托单位',
'approval' => '审定造价(万元)', 'Acontact' => '委托方联系人',
'aunit' => '委托单位', 'acontactnum' => '联系电话',
'Acontact' => '委托方联系人', 'generalize' => '登记日期',
'acontactnum' => '联系电话', 'note' => '项目规模及概括',
'generalize' => '登记日期', 'remark' => '注意事项'
'note' => '项目规模及概括', ];
'remark' => '注意事项' }
];
} }
}

View File

@ -11,111 +11,107 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\adminapi\lists\project_process_management; namespace app\adminapi\lists\project_process_management;
use app\adminapi\lists\BaseAdminDataLists; use app\adminapi\lists\BaseAdminDataLists;
use app\common\lists\ListsExcelInterface; use app\common\lists\ListsExcelInterface;
use app\common\model\cost_project\CostApprovedProject; use app\common\lists\ListsSearchInterface;
use app\common\model\project_process_management\ApplyWithSeal; use app\common\model\project_process_management\ApplyWithSeal;
use app\common\lists\ListsSearchInterface;
/**
/** * ApplyWithSeal列表
* ApplyWithSeal列表 * Class ApplyWithSealLists
* Class ApplyWithSealLists * @package app\adminapi\listsproject_process_management
* @package app\adminapi\listsproject_process_management */
*/ class ApplyWithSealLists extends BaseAdminDataLists implements ListsSearchInterface, ListsExcelInterface
class ApplyWithSealLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface {
{
/**
/** * @notes 设置搜索条件
* @notes 设置搜索条件 * @return \string[][]
* @return \string[][] * @author likeadmin
* @author likeadmin * @date 2024/02/23 15:05
* @date 2024/02/23 15:05 */
*/ public function setSearch(): array
public function setSearch(): array {
{ return [
return [ '=' => ['project_id'],
'=' => ['project_id'], '%like%' => ['num', 'stampman', 'applicant']
'%like%' => ['num','stampman','applicant'] ];
]; }
}
/**
/** * @notes 获取列表
* @notes 获取列表 * @return array
* @return array * @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException
* @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException
* @throws \think\db\exception\ModelNotFoundException * @author likeadmin
* @author likeadmin * @date 2024/02/23 15:05
* @date 2024/02/23 15:05 */
*/ public function lists(): array
public function lists(): array {
{ return ApplyWithSeal::with(['projectInfo', 'dept'])->where($this->searchWhere)
return ApplyWithSeal::with(['projectInfo', 'dept'])->where($this->searchWhere) ->limit($this->limitOffset, $this->limitLength)
->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc'])
->order(['id' => 'desc']) ->select()
->select()->each(function($data){ ->toArray();
$contract = CostApprovedProject::field('project_director')->where('id',$data['projectInfo']['contract_id'])->findOrEmpty(); }
$data['project_director'] = $contract['project_director'];
})
->toArray(); /**
} * @notes 获取数量
* @return int
* @author likeadmin
/** * @date 2024/02/23 15:05
* @notes 获取数量 */
* @return int public function count(): int
* @author likeadmin {
* @date 2024/02/23 15:05 return ApplyWithSeal::where($this->searchWhere)->count();
*/ }
public function count(): int
{ public function setFileName(): string
return ApplyWithSeal::where($this->searchWhere)->count(); {
} return '用章申请';
}
public function setFileName(): string
{ /**
return '用章申请'; * @notes 导出字段
} * @return string[]
* @author 段誉
/** * @date 2022/11/24 16:17
* @notes 导出字段 */
* @return string[] public function setExcelFields(): array
* @author 段誉 {
* @date 2022/11/24 16:17 return [
*/ 'id' => 'id',
public function setExcelFields(): array 'num' => '单据编号',
{ 'project_id' => '项目id',
return [ 'types' => '登记人',
'id' => 'id', 'filetype' => '登记人',
'num' => '单据编号', 'ridingseam' => '进度申报造价合计',
'project_id' => '项目id', 'name' => '进度审核造价合计',
'types' => '登记人', 'frequency' => '累计应付工程款合计',
'filetype' => '登记人', 'limit' => '累计应付工程款合计',
'ridingseam' => '进度申报造价合计', 'org_id' => '累计应付工程款合计',
'name' => '进度审核造价合计', 'depar' => '累计应付工程款合计',
'frequency' => '累计应付工程款合计', 'stampman' => '累计应付工程款合计',
'limit' => '累计应付工程款合计', 'content' => '累计应付工程款合计',
'org_id' => '累计应付工程款合计', 'loan' => '累计应付工程款合计',
'depar' => '累计应付工程款合计', 'borrow' => '累计应付工程款合计',
'stampman' => '累计应付工程款合计', 'returndate' => '累计应付工程款合计',
'content' => '累计应付工程款合计', 'applicant' => '累计应付工程款合计',
'loan' => '累计应付工程款合计', 'date' => '累计应付工程款合计',
'borrow' => '累计应付工程款合计', 'sjborrow' => '累计应付工程款合计',
'returndate' => '累计应付工程款合计', 'sjborrower' => '累计应付工程款合计',
'applicant' => '累计应付工程款合计', 'sjreturn' => '累计应付工程款合计',
'date' => '累计应付工程款合计', 'returnee' => '累计应付工程款合计'
'sjborrow' => '累计应付工程款合计', ];
'sjborrower' => '累计应付工程款合计', }
'sjreturn' => '累计应付工程款合计',
'returnee' => '累计应付工程款合计' }
];
}
}

View File

@ -1,82 +1,85 @@
<?php <?php
namespace app\adminapi\lists\zjzx_finance;
namespace app\adminapi\lists\zjzx_finance;
use app\adminapi\lists\BaseAdminDataLists;
use app\common\model\cost_project\CostApprovedProject; use app\adminapi\lists\BaseAdminDataLists;
use app\common\model\cost_project\CostProject; use app\common\lists\ListsSearchInterface;
use app\common\model\zjzx_finance\ZjzxInvoice; use app\common\model\cost_project\CostProject;
use app\common\lists\ListsSearchInterface; use app\common\model\marketing\MarketingContract;
use app\common\model\zjzx_finance\ZjzxRefund; use app\common\model\marketing\MarketingCustom;
use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\model\zjzx_finance\ZjzxRefund;
/**
* 造价咨询--开票台账列表
* Class ZjzxInvoiceLists /**
* @package app\adminapi\listszjzx_finance * 造价咨询--开票台账列表
*/ * Class ZjzxInvoiceLists
class ZjzxInvoiceLists extends BaseAdminDataLists implements ListsSearchInterface * @package app\adminapi\listszjzx_finance
{ */
class ZjzxInvoiceLists extends BaseAdminDataLists implements ListsSearchInterface
{
/**
* @notes 设置搜索条件
* @return \string[][] /**
* @author likeadmin * @notes 设置搜索条件
* @date 2024/03/15 17:05 * @return \string[][]
*/ * @author likeadmin
public function setSearch(): array * @date 2024/03/15 17:05
{ */
return [ public function setSearch(): array
'=' => ['project_id', 'invoice_type'], {
'%like%' => ['invoice_code', 'apply_company'], return [
]; '=' => ['project_id', 'invoice_type'],
} '%like%' => ['invoice_code', 'apply_company'],
];
}
/**
* @notes 获取造价咨询--开票台账列表
* @return array /**
* @throws \think\db\exception\DataNotFoundException * @notes 获取造价咨询--开票台账列表
* @throws \think\db\exception\DbException * @return array
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\DataNotFoundException
* @author likeadmin * @throws \think\db\exception\DbException
* @date 2024/03/15 17:05 * @throws \think\db\exception\ModelNotFoundException
*/ * @author likeadmin
public function lists(): array * @date 2024/03/15 17:05
{ */
return ZjzxInvoice::where($this->searchWhere) public function lists(): array
->field(['id', 'project_id', 'invoice_code', 'invoice_type', 'apply_amount', 'create_user', 'create_time']) {
->limit($this->limitOffset, $this->limitLength) return ZjzxInvoice::where($this->searchWhere)
->order(['id' => 'desc']) ->field(['id', 'project_id', 'invoice_code', 'invoice_type', 'apply_amount', 'create_user', 'create_time'])
->select()->each(function($data){ ->limit($this->limitOffset, $this->limitLength)
$project = CostProject::field('project_num,project_name,contract_id')->where('id',$data['project_id'])->findOrEmpty(); ->order(['id' => 'desc'])
$contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id',$project['contract_id'])->findOrEmpty(); ->select()->each(function ($data) {
$data['project_num'] = $project['project_num']; $project = CostProject::field('project_num,project_name,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$data['project_name'] = $project['project_name']; $contract = MarketingContract::field('contract_name,contract_type,part_a,part_b,signed_amount,create_time')->where('id', $project['contract_id'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name']; $part_a = MarketingCustom::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['contract_type'] = $contract->contract_type_text; $data['project_num'] = $project['project_num'];
$data['part_a'] = $contract['part_a']; $data['project_name'] = $project['project_name'];
$data['part_b'] = $contract['part_b']; $data['contract_name'] = $contract['contract_name'];
$data['sign_money'] = $contract['money']; $data['contract_type'] = !$contract->isEmpty() ? $contract->contract_type_text : '';
$data['sign_time'] = $contract['create_time']; $data['part_a'] = $part_a['name'];
$data['invoice_type_text'] = $data->invoice_type_text; $data['part_b'] = $contract['part_b'];
$refund = ZjzxRefund::where('invoice_id',$data['id'])->findOrEmpty(); $data['sign_money'] = $contract['signed_amount'];
$data['is_refund'] = !$refund->isEmpty() ? '已到账' : '未到账'; $data['sign_time'] = $contract['create_time'];
$data['refund_amount'] = !$refund->isEmpty() ? ZjzxRefund::where('invoice_id',$data['id'])->sum('amount') : 0.00; $data['invoice_type_text'] = $data->invoice_type_text;
}) $refund = ZjzxRefund::where('invoice_id', $data['id'])->findOrEmpty();
->toArray(); $data['is_refund'] = !$refund->isEmpty() ? '已到账' : '未到账';
} $data['refund_amount'] = !$refund->isEmpty() ? ZjzxRefund::where('invoice_id', $data['id'])->sum('amount') : 0.00;
})
->toArray();
/** }
* @notes 获取造价咨询--开票台账数量
* @return int
* @author likeadmin /**
* @date 2024/03/15 17:05 * @notes 获取造价咨询--开票台账数量
*/ * @return int
public function count(): int * @author likeadmin
{ * @date 2024/03/15 17:05
return ZjzxInvoice::where($this->searchWhere)->count(); */
} public function count(): int
{
} return ZjzxInvoice::where($this->searchWhere)->count();
}
}

View File

@ -1,79 +1,82 @@
<?php <?php
namespace app\adminapi\lists\zjzx_finance;
namespace app\adminapi\lists\zjzx_finance;
use app\adminapi\lists\BaseAdminDataLists;
use app\common\model\cost_project\CostApprovedProject; use app\adminapi\lists\BaseAdminDataLists;
use app\common\model\cost_project\CostProject; use app\common\lists\ListsSearchInterface;
use app\common\model\zjzx_finance\ZjzxInvoice; use app\common\model\cost_project\CostProject;
use app\common\model\zjzx_finance\ZjzxRefund; use app\common\model\marketing\MarketingContract;
use app\common\lists\ListsSearchInterface; use app\common\model\marketing\MarketingCustom;
use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\model\zjzx_finance\ZjzxRefund;
/**
* 造价咨询--到账台账列表
* Class ZjzxRefundLists /**
* @package app\adminapi\listszjzx_finance * 造价咨询--到账台账列表
*/ * Class ZjzxRefundLists
class ZjzxRefundLists extends BaseAdminDataLists implements ListsSearchInterface * @package app\adminapi\listszjzx_finance
{ */
class ZjzxRefundLists extends BaseAdminDataLists implements ListsSearchInterface
{
/**
* @notes 设置搜索条件
* @return \string[][] /**
* @author likeadmin * @notes 设置搜索条件
* @date 2024/03/15 17:05 * @return \string[][]
*/ * @author likeadmin
public function setSearch(): array * @date 2024/03/15 17:05
{ */
return [ public function setSearch(): array
'=' => ['project_id', 'invoice_id'], {
'%like%' => ['create_user'], return [
]; '=' => ['project_id', 'invoice_id'],
} '%like%' => ['create_user'],
];
}
/**
* @notes 获取造价咨询--到账台账列表
* @return array /**
* @throws \think\db\exception\DataNotFoundException * @notes 获取造价咨询--到账台账列表
* @throws \think\db\exception\DbException * @return array
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\DataNotFoundException
* @author likeadmin * @throws \think\db\exception\DbException
* @date 2024/03/15 17:05 * @throws \think\db\exception\ModelNotFoundException
*/ * @author likeadmin
public function lists(): array * @date 2024/03/15 17:05
{ */
return ZjzxRefund::where($this->searchWhere) public function lists(): array
->field(['id', 'project_id', 'invoice_id', 'amount', 'date']) {
->limit($this->limitOffset, $this->limitLength) return ZjzxRefund::where($this->searchWhere)
->order(['id' => 'desc']) ->field(['id', 'project_id', 'invoice_id', 'amount', 'date'])
->select()->each(function($data){ ->limit($this->limitOffset, $this->limitLength)
$project = CostProject::field('project_num,project_name,contract_id')->where('id',$data['project_id'])->findOrEmpty(); ->order(['id' => 'desc'])
$contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b')->where('id',$project['contract_id'])->findOrEmpty(); ->select()->each(function ($data) {
$invoice = ZjzxInvoice::field('invoice_code,apply_amount')->where('id',$data['invoice_id'])->findOrEmpty(); $project = CostProject::field('project_num,project_name,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$data['project_num'] = $project['project_num']; $contract = MarketingContract::field('contract_name,contract_type,part_a,part_b')->where('id', $project['contract_id'])->findOrEmpty();
$data['project_name'] = $project['project_name']; $invoice = ZjzxInvoice::field('invoice_code,apply_amount')->where('id', $data['invoice_id'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name']; $part_a = MarketingCustom::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['contract_type'] = $contract->contract_type_text; $data['project_num'] = $project['project_num'];
$data['part_a'] = $contract['part_a']; $data['project_name'] = $project['project_name'];
$data['part_b'] = $contract['part_b']; $data['contract_name'] = $contract['contract_name'];
$data['invoice_code'] = $invoice['invoice_code']; $data['contract_type'] = !$contract->isEmpty() ? $contract->contract_type_text : '';
$data['apply_amount'] = $invoice['apply_amount']; $data['part_a'] = $part_a['name'];
}) $data['part_b'] = $contract['part_b'];
->toArray(); $data['invoice_code'] = $invoice['invoice_code'];
} $data['apply_amount'] = $invoice['apply_amount'];
})
->toArray();
/** }
* @notes 获取造价咨询--到账台账数量
* @return int
* @author likeadmin /**
* @date 2024/03/15 17:05 * @notes 获取造价咨询--到账台账数量
*/ * @return int
public function count(): int * @author likeadmin
{ * @date 2024/03/15 17:05
return ZjzxRefund::where($this->searchWhere)->count(); */
} public function count(): int
{
} return ZjzxRefund::where($this->searchWhere)->count();
}
}

View File

@ -1,81 +1,84 @@
<?php <?php
namespace app\adminapi\lists\zjzx_finance;
namespace app\adminapi\lists\zjzx_finance;
use app\adminapi\lists\BaseAdminDataLists;
use app\common\model\cost_project\CostApprovedProject; use app\adminapi\lists\BaseAdminDataLists;
use app\common\model\cost_project\CostProject; use app\common\lists\ListsSearchInterface;
use app\common\model\zjzx_finance\ZjzxInvoice; use app\common\model\cost_project\CostProject;
use app\common\model\zjzx_finance\ZjzxRefund; use app\common\model\marketing\MarketingContract;
use app\common\model\zjzx_finance\ZjzxSettlement; use app\common\model\marketing\MarketingCustom;
use app\common\lists\ListsSearchInterface; use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\model\zjzx_finance\ZjzxRefund;
use app\common\model\zjzx_finance\ZjzxSettlement;
/**
* 造价咨询--项目结算列表
* Class ZjzxSettlementLists /**
* @package app\adminapi\listszjzx_finance * 造价咨询--项目结算列表
*/ * Class ZjzxSettlementLists
class ZjzxSettlementLists extends BaseAdminDataLists implements ListsSearchInterface * @package app\adminapi\listszjzx_finance
{ */
class ZjzxSettlementLists extends BaseAdminDataLists implements ListsSearchInterface
{
/**
* @notes 设置搜索条件
* @return \string[][] /**
* @author likeadmin * @notes 设置搜索条件
* @date 2024/03/15 17:05 * @return \string[][]
*/ * @author likeadmin
public function setSearch(): array * @date 2024/03/15 17:05
{ */
return [ public function setSearch(): array
'=' => ['project_id', 'date'], {
]; return [
} '=' => ['project_id', 'date'],
];
}
/**
* @notes 获取造价咨询--项目结算列表
* @return array /**
* @throws \think\db\exception\DataNotFoundException * @notes 获取造价咨询--项目结算列表
* @throws \think\db\exception\DbException * @return array
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\DataNotFoundException
* @author likeadmin * @throws \think\db\exception\DbException
* @date 2024/03/15 17:05 * @throws \think\db\exception\ModelNotFoundException
*/ * @author likeadmin
public function lists(): array * @date 2024/03/15 17:05
{ */
return ZjzxSettlement::where($this->searchWhere) public function lists(): array
->field(['id', 'project_id', 'amount', 'date']) {
->limit($this->limitOffset, $this->limitLength) return ZjzxSettlement::where($this->searchWhere)
->order(['id' => 'desc']) ->field(['id', 'project_id', 'amount', 'date'])
->select()->each(function($data){ ->limit($this->limitOffset, $this->limitLength)
$project = CostProject::field('project_num,project_name,contract_id')->where('id',$data['project_id'])->findOrEmpty(); ->order(['id' => 'desc'])
$contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id',$project['contract_id'])->findOrEmpty(); ->select()->each(function ($data) {
$data['invoice_type_text'] = $data->invoice_type_text; $project = CostProject::field('project_num,project_name,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$data['project_num'] = $project['project_num']; $contract = MarketingContract::field('contract_name,contract_type,part_a,part_b,signed_amount,create_time')->where('id', $project['contract_id'])->findOrEmpty();
$data['project_name'] = $project['project_name']; $part_a = MarketingCustom::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name']; $data['invoice_type_text'] = $data->invoice_type_text;
$data['contract_type'] = $contract->contract_type_text; $data['project_num'] = $project['project_num'];
$data['part_a'] = $contract['part_a']; $data['project_name'] = $project['project_name'];
$data['part_b'] = $contract['part_b']; $data['contract_name'] = $contract['contract_name'];
$data['sign_money'] = $contract['money']; $data['contract_type'] = $contract->contract_type_text;
$data['sign_time'] = $contract['create_time']; $data['part_a'] = $part_a['name'];
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['project_id'])->sum('apply_amount'); $data['part_b'] = $contract['part_b'];
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['project_id'])->sum('amount'); $data['sign_money'] = $contract['signed_amount'];
}) $data['sign_time'] = $contract['create_time'];
->toArray(); $data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['project_id'])->sum('apply_amount');
} $data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['project_id'])->sum('amount');
})
->toArray();
/** }
* @notes 获取造价咨询--项目结算数量
* @return int
* @author likeadmin /**
* @date 2024/03/15 17:05 * @notes 获取造价咨询--项目结算数量
*/ * @return int
public function count(): int * @author likeadmin
{ * @date 2024/03/15 17:05
return ZjzxSettlement::where($this->searchWhere)->count(); */
} public function count(): int
{
} return ZjzxSettlement::where($this->searchWhere)->count();
}
}

View File

@ -11,152 +11,146 @@
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\adminapi\logic\project_process_management; namespace app\adminapi\logic\project_process_management;
use app\common\model\cost_project\CostApprovedProject; use app\common\logic\BaseLogic;
use app\common\model\dept\Dept; use app\common\model\dept\Dept;
use app\common\model\dept\Orgs; use app\common\model\project_process_management\ApplyWithSeal;
use app\common\model\project_process_management\ApplyWithSeal; use think\facade\Db;
use app\common\logic\BaseLogic;
use think\facade\Db;
/**
* ApplyWithSeal逻辑
/** * Class ApplyWithSealLogic
* ApplyWithSeal逻辑 * @package app\adminapi\logic\project_process_management
* Class ApplyWithSealLogic */
* @package app\adminapi\logic\project_process_management class ApplyWithSealLogic extends BaseLogic
*/ {
class ApplyWithSealLogic extends BaseLogic
{
/**
* @notes 添加
/** * @param array $params
* @notes 添加 * @return bool
* @param array $params * @author likeadmin
* @return bool * @date 2024/02/23 15:05
* @author likeadmin */
* @date 2024/02/23 15:05 public static function add(array $params): bool
*/ {
public static function add(array $params): bool Db::startTrans();
{ try {
Db::startTrans(); ApplyWithSeal::create([
try { 'dataid' => generate_sn(ApplyWithSeal::class, 'dataid'),
ApplyWithSeal::create([ 'num' => generate_sn(ApplyWithSeal::class, 'num'),
'dataid' => generate_sn(ApplyWithSeal::class, 'dataid'), 'types' => $params['types'],
'num' => generate_sn(ApplyWithSeal::class, 'num'), 'filetype' => $params['filetype'],
'types' => $params['types'], 'ridingseam' => $params['ridingseam'],
'filetype' => $params['filetype'], 'name' => $params['name'],
'ridingseam' => $params['ridingseam'], 'frequency' => $params['frequency'],
'name' => $params['name'], 'limit' => $params['limit'],
'frequency' => $params['frequency'], 'org_id' => $params['org_id'],
'limit' => $params['limit'], 'depar' => $params['depar'],
'org_id' => $params['org_id'], 'stampman' => $params['stampman'],
'depar' => $params['depar'], 'project_id' => $params['project_id'],
'stampman' => $params['stampman'], 'content' => $params['content'],
'project_id' => $params['project_id'], 'loan' => $params['loan'],
'content' => $params['content'], 'borrow' => $params['borrow'],
'loan' => $params['loan'], 'returndate' => $params['returndate'],
'borrow' => $params['borrow'], 'applicant' => $params['applicant'],
'returndate' => $params['returndate'], 'date' => $params['date'],
'applicant' => $params['applicant'], 'sjborrow' => $params['sjborrow'],
'date' => $params['date'], 'sjborrower' => $params['sjborrower'],
'sjborrow' => $params['sjborrow'], 'sjreturn' => $params['sjreturn'],
'sjborrower' => $params['sjborrower'], 'returnee' => $params['returnee'],
'sjreturn' => $params['sjreturn'], 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
'returnee' => $params['returnee'], ]);
'annex' => $params['annex'] ? json_encode($params['annex']) : null,
]); Db::commit();
return true;
Db::commit(); } catch (\Exception $e) {
return true; Db::rollback();
} catch (\Exception $e) { self::setError($e->getMessage());
Db::rollback(); return false;
self::setError($e->getMessage()); }
return false; }
}
}
/**
* @notes 编辑
/** * @param array $params
* @notes 编辑 * @return bool
* @param array $params * @author likeadmin
* @return bool * @date 2024/02/23 15:05
* @author likeadmin */
* @date 2024/02/23 15:05 public static function edit(array $params): bool
*/ {
public static function edit(array $params): bool Db::startTrans();
{ try {
Db::startTrans(); ApplyWithSeal::where('id', $params['id'])->update([
try { 'types' => $params['types'],
ApplyWithSeal::where('id', $params['id'])->update([ 'filetype' => $params['filetype'],
'types' => $params['types'], 'ridingseam' => $params['ridingseam'],
'filetype' => $params['filetype'], 'name' => $params['name'],
'ridingseam' => $params['ridingseam'], 'frequency' => $params['frequency'],
'name' => $params['name'], 'limit' => $params['limit'],
'frequency' => $params['frequency'], 'org_id' => $params['org_id'],
'limit' => $params['limit'], 'depar' => $params['depar'],
'org_id' => $params['org_id'], 'stampman' => $params['stampman'],
'depar' => $params['depar'], 'project_id' => $params['project_id'],
'stampman' => $params['stampman'], 'content' => $params['content'],
'project_id' => $params['project_id'], 'loan' => $params['loan'],
'content' => $params['content'], 'borrow' => $params['borrow'],
'loan' => $params['loan'], 'returndate' => $params['returndate'],
'borrow' => $params['borrow'], 'applicant' => $params['applicant'],
'returndate' => $params['returndate'], 'date' => $params['date'],
'applicant' => $params['applicant'], 'sjborrow' => $params['sjborrow'],
'date' => $params['date'], 'sjborrower' => $params['sjborrower'],
'sjborrow' => $params['sjborrow'], 'sjreturn' => $params['sjreturn'],
'sjborrower' => $params['sjborrower'], 'returnee' => $params['returnee'],
'sjreturn' => $params['sjreturn'], 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
'returnee' => $params['returnee'], ]);
'annex' => $params['annex'] ? json_encode($params['annex']) : null,
]); Db::commit();
return true;
Db::commit(); } catch (\Exception $e) {
return true; Db::rollback();
} catch (\Exception $e) { self::setError($e->getMessage());
Db::rollback(); return false;
self::setError($e->getMessage()); }
return false; }
}
}
/**
* @notes 删除
/** * @param array $params
* @notes 删除 * @return bool
* @param array $params * @author likeadmin
* @return bool * @date 2024/02/23 15:05
* @author likeadmin */
* @date 2024/02/23 15:05 public static function delete(array $params): bool
*/ {
public static function delete(array $params): bool return ApplyWithSeal::destroy($params['id']);
{ }
return ApplyWithSeal::destroy($params['id']);
}
/**
* @notes 获取详情
/** * @param $params
* @notes 获取详情 * @return array
* @param $params * @author likeadmin
* @return array * @date 2024/02/23 15:05
* @author likeadmin */
* @date 2024/02/23 15:05 public static function detail($params): array
*/ {
public static function detail($params): array $data = ApplyWithSeal::with(['projectInfo'])->findOrEmpty($params['id']);
{ $dept = Dept::field('name')->where('id', $data['depar'])->findOrEmpty();
$data = ApplyWithSeal::with(['projectInfo'])->findOrEmpty($params['id']); $data['dept_name'] = $dept['name'];
$contract = CostApprovedProject::field('project_director')->where('id',$data['projectInfo']['contract_id'])->findOrEmpty(); $data['types_text'] = $data->types_text;
$org = Orgs::field('name')->where('id',$data['org_id'])->findOrEmpty(); $data['ridingseam_text'] = $data->ridingseam_text;
$dept = Dept::field('name')->where('id',$data['depar'])->findOrEmpty(); $data['filetype_text'] = $data->filetype_text;
$data['project_director'] = $contract['project_director']; $data['loan_text'] = $data->loan_text;
$data['org_name'] = $org['name']; return $data->toArray();
$data['dept_name'] = $dept['name']; }
$data['types_text'] = $data->types_text; }
$data['ridingseam_text'] = $data->ridingseam_text;
$data['filetype_text'] = $data->filetype_text;
$data['loan_text'] = $data->loan_text;
return $data->toArray();
}
}

View File

@ -1,144 +1,147 @@
<?php <?php
namespace app\adminapi\logic\zjzx_finance;
use app\common\model\cost_project\CostApprovedProject;
use app\common\model\cost_project\CostProject;
use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\logic\BaseLogic;
use app\common\model\zjzx_finance\ZjzxRefund;
use think\facade\Db;
/**
* 造价咨询--开票台账逻辑
* Class ZjzxInvoiceLogic
* @package app\adminapi\logic\zjzx_finance
*/
class ZjzxInvoiceLogic extends BaseLogic
{
/**
* @notes 添加造价咨询--开票台账
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/03/15 17:05
*/
public static function add(array $params): bool
{
Db::startTrans();
try {
ZjzxInvoice::create([
'project_id' => $params['project_id'],
'invoice_code' => data_unique_code('XMKP'),
'invoice_type' => $params['invoice_type'],
'apply_amount' => $params['apply_amount'],
'apply_company' => $params['apply_company'],
'apply_company_number' => $params['apply_company_number'],
'apply_company_address' => $params['apply_company_address'] ?? '',
'apply_company_telephone' => $params['apply_company_telephone'] ?? '',
'apply_company_bank' => $params['apply_company_bank'] ?? '',
'apply_company_account' => $params['apply_company_account'] ?? '',
'apply_contact' => $params['apply_contact'] ?? '',
'apply_email' => $params['apply_email'] ?? '',
'pay_type' => $params['pay_type'] ?? '',
'invoice_content' => $params['invoice_content'] ?? '',
'create_user' => $params['create_user'],
'create_time' => !empty($params['create_time']) ? strtotime($params['create_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/03/15 17:05
*/
public static function edit(array $params): bool
{
Db::startTrans();
try {
ZjzxInvoice::where('id', $params['id'])->update([
'project_id' => $params['project_id'],
'invoice_type' => $params['invoice_type'],
'apply_amount' => $params['apply_amount'],
'apply_company' => $params['apply_company'],
'apply_company_number' => $params['apply_company_number'],
'apply_company_address' => $params['apply_company_address'] ?? '',
'apply_company_telephone' => $params['apply_company_telephone'] ?? '',
'apply_company_bank' => $params['apply_company_bank'] ?? '',
'apply_company_account' => $params['apply_company_account'] ?? '',
'apply_contact' => $params['apply_contact'] ?? '',
'apply_email' => $params['apply_email'] ?? '',
'pay_type' => $params['pay_type'] ?? '',
'invoice_content' => $params['invoice_content'] ?? '',
'create_user' => $params['create_user'],
'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(),
'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/03/15 17:05
*/
public static function delete(array $params): bool
{
return ZjzxInvoice::destroy($params['id']);
}
/**
* @notes 获取造价咨询--开票台账详情
* @param $params
* @return array
* @author likeadmin
* @date 2024/03/15 17:05
*/
public static function detail($params): array
{
$data = ZjzxInvoice::withoutField('update_time,delete_time')->findOrEmpty($params['id']);
$project = CostProject::field('project_num,project_name,contract_id')->where('id',$data['project_id'])->findOrEmpty();
$contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id',$project['contract_id'])->findOrEmpty();
$data['invoice_type_text'] = $data->invoice_type_text;
$data['project_num'] = $project['project_num'];
$data['project_name'] = $project['project_name'];
$data['contract_name'] = $contract['contract_name'];
$data['contract_type'] = $contract->contract_type_text;
$data['part_a'] = $contract['part_a'];
$data['part_b'] = $contract['part_b'];
$data['sign_money'] = $contract['money'];
$data['sign_time'] = $contract['create_time'];
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['project_id'])->sum('apply_amount');
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['project_id'])->sum('amount');
return $data->toArray();
}
public static function datas() namespace app\adminapi\logic\zjzx_finance;
use app\common\logic\BaseLogic;
use app\common\model\cost_project\CostProject;
use app\common\model\marketing\MarketingContract;
use app\common\model\marketing\MarketingCustom;
use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\model\zjzx_finance\ZjzxRefund;
use think\facade\Db;
/**
* 造价咨询--开票台账逻辑
* Class ZjzxInvoiceLogic
* @package app\adminapi\logic\zjzx_finance
*/
class ZjzxInvoiceLogic extends BaseLogic
{ {
return ZjzxInvoice::field(['id','invoice_code'])->order(['id' => 'desc'])->select()->each(function($data){
$data['projectinfo'] = 'ID' . $data['id'] . ' / 编号:' . $data['invoice_code'];
})->toArray(); /**
} * @notes 添加造价咨询--开票台账
} * @param array $params
* @return bool
* @author likeadmin
* @date 2024/03/15 17:05
*/
public static function add(array $params): bool
{
Db::startTrans();
try {
ZjzxInvoice::create([
'project_id' => $params['project_id'],
'invoice_code' => data_unique_code('XMKP'),
'invoice_type' => $params['invoice_type'],
'apply_amount' => $params['apply_amount'],
'apply_company' => $params['apply_company'],
'apply_company_number' => $params['apply_company_number'],
'apply_company_address' => $params['apply_company_address'] ?? '',
'apply_company_telephone' => $params['apply_company_telephone'] ?? '',
'apply_company_bank' => $params['apply_company_bank'] ?? '',
'apply_company_account' => $params['apply_company_account'] ?? '',
'apply_contact' => $params['apply_contact'] ?? '',
'apply_email' => $params['apply_email'] ?? '',
'pay_type' => $params['pay_type'] ?? '',
'invoice_content' => $params['invoice_content'] ?? '',
'create_user' => $params['create_user'],
'create_time' => !empty($params['create_time']) ? strtotime($params['create_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/03/15 17:05
*/
public static function edit(array $params): bool
{
Db::startTrans();
try {
ZjzxInvoice::where('id', $params['id'])->update([
'project_id' => $params['project_id'],
'invoice_type' => $params['invoice_type'],
'apply_amount' => $params['apply_amount'],
'apply_company' => $params['apply_company'],
'apply_company_number' => $params['apply_company_number'],
'apply_company_address' => $params['apply_company_address'] ?? '',
'apply_company_telephone' => $params['apply_company_telephone'] ?? '',
'apply_company_bank' => $params['apply_company_bank'] ?? '',
'apply_company_account' => $params['apply_company_account'] ?? '',
'apply_contact' => $params['apply_contact'] ?? '',
'apply_email' => $params['apply_email'] ?? '',
'pay_type' => $params['pay_type'] ?? '',
'invoice_content' => $params['invoice_content'] ?? '',
'create_user' => $params['create_user'],
'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(),
'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/03/15 17:05
*/
public static function delete(array $params): bool
{
return ZjzxInvoice::destroy($params['id']);
}
/**
* @notes 获取造价咨询--开票台账详情
* @param $params
* @return array
* @author likeadmin
* @date 2024/03/15 17:05
*/
public static function detail($params): array
{
$data = ZjzxInvoice::withoutField('update_time,delete_time')->findOrEmpty($params['id']);
$project = CostProject::field('project_num,project_name,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$contract = MarketingContract::field('contract_name,contract_type,part_a,part_b,signed_amount,create_time')->where('id', $project['contract_id'])->findOrEmpty();
$part_a = MarketingCustom::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['invoice_type_text'] = $data->invoice_type_text;
$data['project_num'] = $project['project_num'];
$data['project_name'] = $project['project_name'];
$data['contract_name'] = $contract['contract_name'];
$data['contract_type'] = !$contract->isEmpty() ? $contract->contract_type_text : '';
$data['part_a'] = $part_a['name'];
$data['part_b'] = $contract['part_b'];
$data['sign_money'] = $contract['signed_amount'];
$data['sign_time'] = $contract['create_time'];
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['project_id'])->sum('apply_amount');
$data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['project_id'])->sum('amount');
return $data->toArray();
}
public static function datas()
{
return ZjzxInvoice::field(['id', 'invoice_code'])->order(['id' => 'desc'])->select()->each(function ($data) {
$data['projectinfo'] = 'ID' . $data['id'] . ' / 编号:' . $data['invoice_code'];
})->toArray();
}
}

View File

@ -1,122 +1,125 @@
<?php <?php
namespace app\adminapi\logic\zjzx_finance;
namespace app\adminapi\logic\zjzx_finance;
use app\common\model\cost_project\CostApprovedProject;
use app\common\model\cost_project\CostProject; use app\common\logic\BaseLogic;
use app\common\model\zjzx_finance\ZjzxInvoice; use app\common\model\cost_project\CostApprovedProject;
use app\common\model\zjzx_finance\ZjzxRefund; use app\common\model\cost_project\CostProject;
use app\common\logic\BaseLogic; use app\common\model\marketing\MarketingCustom;
use think\facade\Db; use app\common\model\zjzx_finance\ZjzxInvoice;
use app\common\model\zjzx_finance\ZjzxRefund;
use think\facade\Db;
/**
* 造价咨询--到账台账逻辑
* Class ZjzxRefundLogic /**
* @package app\adminapi\logic\zjzx_finance * 造价咨询--到账台账逻辑
*/ * Class ZjzxRefundLogic
class ZjzxRefundLogic extends BaseLogic * @package app\adminapi\logic\zjzx_finance
{ */
class ZjzxRefundLogic extends BaseLogic
{
/**
* @notes 添加造价咨询--到账台账
* @param array $params /**
* @return bool * @notes 添加造价咨询--到账台账
* @author likeadmin * @param array $params
* @date 2024/03/15 17:05 * @return bool
*/ * @author likeadmin
public static function add(array $params): bool * @date 2024/03/15 17:05
{ */
Db::startTrans(); public static function add(array $params): bool
try { {
ZjzxRefund::create([ Db::startTrans();
'project_id' => $params['project_id'], try {
'invoice_id' => $params['invoice_id'], ZjzxRefund::create([
'amount' => $params['amount'], 'project_id' => $params['project_id'],
'date' => !empty($params['date']) ? strtotime($params['date']) : 0, 'invoice_id' => $params['invoice_id'],
'remark' => $params['remark'] ?? '', 'amount' => $params['amount'],
'create_user' => $params['create_user'], 'date' => !empty($params['date']) ? strtotime($params['date']) : 0,
'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), 'remark' => $params['remark'] ?? '',
]); 'create_user' => $params['create_user'],
Db::commit(); 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(),
return true; ]);
} catch (\Exception $e) { Db::commit();
Db::rollback(); return true;
self::setError($e->getMessage()); } catch (\Exception $e) {
return false; Db::rollback();
} self::setError($e->getMessage());
} return false;
}
}
/**
* @notes 编辑造价咨询--到账台账
* @param array $params /**
* @return bool * @notes 编辑造价咨询--到账台账
* @author likeadmin * @param array $params
* @date 2024/03/15 17:05 * @return bool
*/ * @author likeadmin
public static function edit(array $params): bool * @date 2024/03/15 17:05
{ */
Db::startTrans(); public static function edit(array $params): bool
try { {
ZjzxRefund::where('id', $params['id'])->update([ Db::startTrans();
'project_id' => $params['project_id'], try {
'invoice_id' => $params['invoice_id'], ZjzxRefund::where('id', $params['id'])->update([
'amount' => $params['amount'], 'project_id' => $params['project_id'],
'date' => !empty($params['date']) ? strtotime($params['date']) : 0, 'invoice_id' => $params['invoice_id'],
'remark' => $params['remark'] ?? '', 'amount' => $params['amount'],
'create_user' => $params['create_user'], 'date' => !empty($params['date']) ? strtotime($params['date']) : 0,
'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), 'remark' => $params['remark'] ?? '',
'update_time' => time() 'create_user' => $params['create_user'],
]); 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(),
Db::commit(); 'update_time' => time()
return true; ]);
} catch (\Exception $e) { Db::commit();
Db::rollback(); return true;
self::setError($e->getMessage()); } catch (\Exception $e) {
return false; Db::rollback();
} self::setError($e->getMessage());
} return false;
}
}
/**
* @notes 删除造价咨询--到账台账
* @param array $params /**
* @return bool * @notes 删除造价咨询--到账台账
* @author likeadmin * @param array $params
* @date 2024/03/15 17:05 * @return bool
*/ * @author likeadmin
public static function delete(array $params): bool * @date 2024/03/15 17:05
{ */
return ZjzxRefund::destroy($params['id']); public static function delete(array $params): bool
} {
return ZjzxRefund::destroy($params['id']);
}
/**
* @notes 获取造价咨询--到账台账详情
* @param $params /**
* @return array * @notes 获取造价咨询--到账台账详情
* @author likeadmin * @param $params
* @date 2024/03/15 17:05 * @return array
*/ * @author likeadmin
public static function detail($params): array * @date 2024/03/15 17:05
{ */
$data = ZjzxRefund::withoutField('update_time,delete_time')->findOrEmpty($params['id']); public static function detail($params): array
$project = CostProject::field('project_num,project_name,contract_id')->where('id',$data['project_id'])->findOrEmpty(); {
$contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id',$project['contract_id'])->findOrEmpty(); $data = ZjzxRefund::withoutField('update_time,delete_time')->findOrEmpty($params['id']);
$invoice = ZjzxInvoice::field('invoice_code,apply_amount')->where('id',$data['invoice_id'])->findOrEmpty(); $project = CostProject::field('project_num,project_name,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$data['project_num'] = $project['project_num']; $contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,signed_amount,create_time')->where('id', $project['contract_id'])->findOrEmpty();
$data['project_name'] = $project['project_name']; $invoice = ZjzxInvoice::field('invoice_code,apply_amount')->where('id', $data['invoice_id'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name']; $part_a = MarketingCustom::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['contract_type'] = $contract->contract_type_text; $data['project_num'] = $project['project_num'];
$data['part_a'] = $contract['part_a']; $data['project_name'] = $project['project_name'];
$data['part_b'] = $contract['part_b']; $data['contract_name'] = $contract['contract_name'];
$data['sign_money'] = $contract['money']; $data['contract_type'] = !$contract->isEmpty() ? $contract->contract_type_text : '';
$data['sign_time'] = $contract['create_time']; $data['part_a'] = $part_a['name'];
$data['invoice_code'] = $invoice['invoice_code']; $data['part_b'] = $contract['part_b'];
$data['apply_amount'] = $invoice['apply_amount']; $data['sign_money'] = $contract['signed_amount'];
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['project_id'])->sum('apply_amount');//累计开票金额 $data['sign_time'] = $contract['create_time'];
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['project_id'])->sum('amount');//累计到账金额 $data['invoice_code'] = $invoice['invoice_code'];
return $data->toArray(); $data['apply_amount'] = $invoice['apply_amount'];
} $data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['project_id'])->sum('apply_amount');//累计开票金额
} $data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['project_id'])->sum('amount');//累计到账金额
return $data->toArray();
}
}

View File

@ -1,116 +1,119 @@
<?php <?php
namespace app\adminapi\logic\zjzx_finance;
namespace app\adminapi\logic\zjzx_finance;
use app\common\model\cost_project\CostApprovedProject;
use app\common\model\cost_project\CostProject; use app\common\logic\BaseLogic;
use app\common\model\zjzx_finance\ZjzxInvoice; use app\common\model\cost_project\CostApprovedProject;
use app\common\model\zjzx_finance\ZjzxRefund; use app\common\model\cost_project\CostProject;
use app\common\model\zjzx_finance\ZjzxSettlement; use app\common\model\marketing\MarketingCustom;
use app\common\logic\BaseLogic; use app\common\model\zjzx_finance\ZjzxInvoice;
use think\facade\Db; use app\common\model\zjzx_finance\ZjzxRefund;
use app\common\model\zjzx_finance\ZjzxSettlement;
use think\facade\Db;
/**
* 造价咨询--项目结算逻辑
* Class ZjzxSettlementLogic /**
* @package app\adminapi\logic\zjzx_finance * 造价咨询--项目结算逻辑
*/ * Class ZjzxSettlementLogic
class ZjzxSettlementLogic extends BaseLogic * @package app\adminapi\logic\zjzx_finance
{ */
class ZjzxSettlementLogic extends BaseLogic
{
/**
* @notes 添加造价咨询--项目结算
* @param array $params /**
* @return bool * @notes 添加造价咨询--项目结算
* @author likeadmin * @param array $params
* @date 2024/03/15 17:05 * @return bool
*/ * @author likeadmin
public static function add(array $params): bool * @date 2024/03/15 17:05
{ */
Db::startTrans(); public static function add(array $params): bool
try { {
ZjzxSettlement::create([ Db::startTrans();
'project_id' => $params['project_id'], try {
'amount' => $params['amount'], ZjzxSettlement::create([
'date' => !empty($params['date']) ? strtotime($params['date']) : 0, 'project_id' => $params['project_id'],
'remark' => $params['remark'] ?? '', 'amount' => $params['amount'],
'annex' => $params['annex'] ? json_encode($params['annex']) : null, 'date' => !empty($params['date']) ? strtotime($params['date']) : 0,
]); 'remark' => $params['remark'] ?? '',
Db::commit(); 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
return true; ]);
} catch (\Exception $e) { Db::commit();
Db::rollback(); return true;
self::setError($e->getMessage()); } catch (\Exception $e) {
return false; Db::rollback();
} self::setError($e->getMessage());
} return false;
}
}
/**
* @notes 编辑造价咨询--项目结算
* @param array $params /**
* @return bool * @notes 编辑造价咨询--项目结算
* @author likeadmin * @param array $params
* @date 2024/03/15 17:05 * @return bool
*/ * @author likeadmin
public static function edit(array $params): bool * @date 2024/03/15 17:05
{ */
Db::startTrans(); public static function edit(array $params): bool
try { {
ZjzxSettlement::where('id', $params['id'])->update([ Db::startTrans();
'project_id' => $params['project_id'], try {
'amount' => $params['amount'], ZjzxSettlement::where('id', $params['id'])->update([
'date' => !empty($params['date']) ? strtotime($params['date']) : 0, 'project_id' => $params['project_id'],
'remark' => $params['remark'] ?? '', 'amount' => $params['amount'],
'annex' => $params['annex'] ? json_encode($params['annex']) : null, 'date' => !empty($params['date']) ? strtotime($params['date']) : 0,
]); 'remark' => $params['remark'] ?? '',
Db::commit(); 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
return true; ]);
} catch (\Exception $e) { Db::commit();
Db::rollback(); return true;
self::setError($e->getMessage()); } catch (\Exception $e) {
return false; Db::rollback();
} self::setError($e->getMessage());
} return false;
}
}
/**
* @notes 删除造价咨询--项目结算
* @param array $params /**
* @return bool * @notes 删除造价咨询--项目结算
* @author likeadmin * @param array $params
* @date 2024/03/15 17:05 * @return bool
*/ * @author likeadmin
public static function delete(array $params): bool * @date 2024/03/15 17:05
{ */
return ZjzxSettlement::destroy($params['id']); public static function delete(array $params): bool
} {
return ZjzxSettlement::destroy($params['id']);
}
/**
* @notes 获取造价咨询--项目结算详情
* @param $params /**
* @return array * @notes 获取造价咨询--项目结算详情
* @author likeadmin * @param $params
* @date 2024/03/15 17:05 * @return array
*/ * @author likeadmin
public static function detail($params): array * @date 2024/03/15 17:05
{ */
$data = ZjzxSettlement::withoutField('create_time,update_time,delete_time')->findOrEmpty($params['id']); public static function detail($params): array
$project = CostProject::field('project_num,project_name,contract_id')->where('id',$data['project_id'])->findOrEmpty(); {
$contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id',$project['contract_id'])->findOrEmpty(); $data = ZjzxSettlement::withoutField('create_time,update_time,delete_time')->findOrEmpty($params['id']);
$data['invoice_type_text'] = $data->invoice_type_text; $project = CostProject::field('project_num,project_name,contract_id')->where('id', $data['project_id'])->findOrEmpty();
$data['project_num'] = $project['project_num']; $contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,signed_amount,create_time')->where('id', $project['contract_id'])->findOrEmpty();
$data['project_name'] = $project['project_name']; $part_a = MarketingCustom::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['contract_name'] = $contract['contract_name']; $data['invoice_type_text'] = $data->invoice_type_text;
$data['contract_type'] = $contract->contract_type_text; $data['project_num'] = $project['project_num'];
$data['part_a'] = $contract['part_a']; $data['project_name'] = $project['project_name'];
$data['part_b'] = $contract['part_b']; $data['contract_name'] = $contract['contract_name'];
$data['sign_money'] = $contract['money']; $data['contract_type'] = $contract->contract_type_text;
$data['sign_time'] = $contract['create_time']; $data['part_a'] = $part_a['name'];
$data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['project_id'])->sum('apply_amount'); $data['part_b'] = $contract['part_b'];
$data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['project_id'])->sum('amount'); $data['sign_money'] = $contract['signed_amount'];
return $data->toArray(); $data['sign_time'] = $contract['create_time'];
} $data['total_invoice_amount'] = ZjzxInvoice::where('project_id', $data['project_id'])->sum('apply_amount');
} $data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['project_id'])->sum('amount');
return $data->toArray();
}
}