This commit is contained in:
weiz 2024-03-21 14:26:50 +08:00
parent d897fce646
commit a66bf95215
3 changed files with 178 additions and 191 deletions

View File

@ -12,26 +12,26 @@
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\adminapi\logic\project; namespace app\adminapi\logic\project;
use app\common\model\contract\SubcontractingContract; use app\common\logic\BaseLogic;
use app\common\model\contract\SubcontractingContractDetail; use app\common\model\contract\SubcontractingContract;
use app\common\model\contract\SubcontractingContractNegotiation; use app\common\model\contract\SubcontractingContractDetail;
use app\common\model\oa\FlowApprove; use app\common\model\contract\SubcontractingContractNegotiation;
use app\common\model\project\Project; use app\common\model\oa\FlowApprove;
use app\common\model\project\ProjectSubcontractSettlement; use app\common\model\project\Project;
use app\common\logic\BaseLogic; use app\common\model\project\ProjectSubcontractSettlement;
use app\common\model\supplier\Supplier; use app\common\model\supplier\Supplier;
use think\facade\Db; use think\facade\Db;
/** /**
* 分包结算逻辑 * 分包结算逻辑
* Class ProjectSubcontractSettlementLogic * Class ProjectSubcontractSettlementLogic
* @package app\adminapi\logic\project * @package app\adminapi\logic\project
*/ */
class ProjectSubcontractSettlementLogic extends BaseLogic class ProjectSubcontractSettlementLogic extends BaseLogic
{ {
/** /**
@ -41,7 +41,7 @@ class ProjectSubcontractSettlementLogic extends BaseLogic
* @author likeadmin * @author likeadmin
* @date 2023/12/29 13:59 * @date 2023/12/29 13:59
*/ */
public static function add(array $params,$admin_id): bool public static function add(array $params, $admin_id): bool
{ {
Db::startTrans(); Db::startTrans();
try { try {
@ -52,7 +52,7 @@ class ProjectSubcontractSettlementLogic extends BaseLogic
'settlement_amount' => $params['settlement_amount'], 'settlement_amount' => $params['settlement_amount'],
'settlement_date' => strtotime($params['settlement_date']), 'settlement_date' => strtotime($params['settlement_date']),
'remark' => $params['remark'], 'remark' => $params['remark'],
'annex' => $params['annex']? json_encode($params['annex']) : null, 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
'add_user' => $admin_id, 'add_user' => $admin_id,
]); ]);
Db::commit(); Db::commit();
@ -82,7 +82,7 @@ class ProjectSubcontractSettlementLogic extends BaseLogic
'settlement_amount' => $params['settlement_amount'], 'settlement_amount' => $params['settlement_amount'],
'settlement_date' => strtotime($params['settlement_date']), 'settlement_date' => strtotime($params['settlement_date']),
'remark' => $params['remark'], 'remark' => $params['remark'],
'annex' => $params['annex']? json_encode($params['annex']) : null, 'annex' => $params['annex'] ? json_encode($params['annex']) : null,
'add_user' => $params['add_user'], 'add_user' => $params['add_user'],
'update_time' => time(), 'update_time' => time(),
]); ]);
@ -119,9 +119,9 @@ class ProjectSubcontractSettlementLogic extends BaseLogic
public static function detail($params): array public static function detail($params): array
{ {
$data = ProjectSubcontractSettlement::field('id,settlement_code,project_id,contract_id,settlement_amount,settlement_date,remark,annex,approve_id')->findOrEmpty($params['id'])->toArray(); $data = ProjectSubcontractSettlement::field('id,settlement_code,project_id,contract_id,settlement_amount,settlement_date,remark,annex,approve_id')->findOrEmpty($params['id'])->toArray();
$project = Project::field('name,project_code')->where('id',$data['project_id'])->findOrEmpty(); $project = Project::field('name,project_code')->where('id', $data['project_id'])->findOrEmpty();
$contract = SubcontractingContract::field('supplier_id,contract_no,contract_name')->where('id',$data['contract_id'])->findOrEmpty(); $contract = SubcontractingContract::field('supplier_id,contract_no,contract_name')->where('id', $data['contract_id'])->findOrEmpty();
$supplier = Supplier::field('supplier_code,supplier_name')->where('id',$contract['supplier_id'])->findOrEmpty(); $supplier = Supplier::field('supplier_code,supplier_name')->where('id', $contract['supplier_id'])->findOrEmpty();
$data['project_name'] = $project['name']; $data['project_name'] = $project['name'];
$data['project_code'] = $project['project_code']; $data['project_code'] = $project['project_code'];
$data['contract_name'] = $contract['contract_name']; $data['contract_name'] = $contract['contract_name'];
@ -129,20 +129,21 @@ class ProjectSubcontractSettlementLogic extends BaseLogic
$data['supplier_name'] = $supplier['supplier_name']; $data['supplier_name'] = $supplier['supplier_name'];
$data['supplier_code'] = $supplier['supplier_code']; $data['supplier_code'] = $supplier['supplier_code'];
//合同金额 //合同金额
$data['contract_amount'] = SubcontractingContractDetail::where('contract_id',$data['contract_id'])->sum('amount_including_tax'); $data['contract_amount'] = SubcontractingContractDetail::where('contract_id', $data['contract_id'])->sum('amount_including_tax');
//合同洽商金额 //合同洽商金额
$data['negotiation_amount'] = SubcontractingContractNegotiation::where('contract_id',$data['contract_id'])->sum('negotiation_amount'); $data['negotiation_amount'] = SubcontractingContractNegotiation::where('subcontracting_contract_id', $data['contract_id'])->sum('negotiation_amount');
//结算差异 //结算差异
$data['settlement_difference'] = bcsub(($data['contract_amount']+$data['negotiation_amount']),$data['settlement_amount']); $data['settlement_difference'] = bcsub(($data['contract_amount'] + $data['negotiation_amount']), $data['settlement_amount']);
$approve_data = FlowApprove::where('id',$data['approve_id'])->findOrEmpty(); $approve_data = FlowApprove::where('id', $data['approve_id'])->findOrEmpty();
$data['approve_check_status'] = $approve_data['check_status']; $data['approve_check_status'] = $approve_data['check_status'];
return $data; return $data;
} }
public static function approve($params,$admin_id): bool{ public static function approve($params, $admin_id): bool
$data = ProjectSubcontractSettlement::where('id',$params['id'])->findOrEmpty(); {
$approve_data = FlowApprove::where('id',$data['approve_id'])->findOrEmpty(); $data = ProjectSubcontractSettlement::where('id', $params['id'])->findOrEmpty();
if(!empty($data['approve_id']) && $approve_data['check_status'] != 3){ $approve_data = FlowApprove::where('id', $data['approve_id'])->findOrEmpty();
if (!empty($data['approve_id']) && $approve_data['check_status'] != 3) {
self::setError('当前内容存在审核信息,请勿重复提交'); self::setError('当前内容存在审核信息,请勿重复提交');
return false; return false;
} }
@ -156,8 +157,8 @@ class ProjectSubcontractSettlementLogic extends BaseLogic
$params['flow_id'], $params['flow_id'],
$admin_id $admin_id
); );
if($res){ if ($res) {
ProjectSubcontractSettlement::where('id',$params['id'])->update([ ProjectSubcontractSettlement::where('id', $params['id'])->update([
'approve_id' => $res, 'approve_id' => $res,
]); ]);
} }
@ -169,4 +170,4 @@ class ProjectSubcontractSettlementLogic extends BaseLogic
return false; return false;
} }
} }
} }

View File

@ -137,14 +137,4 @@
return true; return true;
} }
public function checkAnnex($value): bool|string
{
if (!empty($value) && $value != '') {
if (!is_array($value)) {
return '附件格式错误';
}
}
return true;
}
} }

View File

@ -12,31 +12,27 @@
// | author: likeadminTeam // | author: likeadminTeam
// +---------------------------------------------------------------------- // +----------------------------------------------------------------------
namespace app\common\model\project; namespace app\common\model\project;
use app\common\model\BaseModel; use app\common\model\BaseModel;
use think\model\concern\SoftDelete; use think\model\concern\SoftDelete;
/** /**
* 分包结算模型 * 分包结算模型
* Class ProjectSubcontractSettlement * Class ProjectSubcontractSettlement
* @package app\common\model\project * @package app\common\model\project
*/ */
class ProjectSubcontractSettlement extends BaseModel class ProjectSubcontractSettlement extends BaseModel
{ {
use SoftDelete; use SoftDelete;
protected $name = 'project_subcontract_settlement'; protected $name = 'project_subcontract_settlement';
protected $deleteTime = 'delete_time'; protected $deleteTime = 'delete_time';
public function getAnnexAttr($value)
{
return !empty($value) ? json_decode($value,true) : '';
}
public function getSettlementDateAttr($value): string public function getSettlementDateAttr($value): string
{ {
return !empty($value) ? date('Y-m-d',$value) : ''; return !empty($value) ? date('Y-m-d', $value) : '';
}
} }
}