update
This commit is contained in:
parent
55d16cfdb5
commit
7430279c85
@ -12,181 +12,182 @@
|
||||
// | author: likeadminTeam
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\adminapi\logic\contract;
|
||||
namespace app\adminapi\logic\contract;
|
||||
|
||||
|
||||
use app\common\model\auth\Admin;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\contract\ContractNegotiation;
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\model\custom\Custom;
|
||||
use app\common\model\oa\FlowApprove;
|
||||
use app\common\model\project\Project;
|
||||
use think\facade\Db;
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\model\auth\Admin;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\contract\ContractNegotiation;
|
||||
use app\common\model\custom\Custom;
|
||||
use app\common\model\oa\FlowApprove;
|
||||
use app\common\model\project\Project;
|
||||
use think\facade\Db;
|
||||
|
||||
|
||||
/**
|
||||
* 合同洽商逻辑
|
||||
* Class ContractNegotiationLogic
|
||||
* @package app\adminapi\logic\contract
|
||||
*/
|
||||
class ContractNegotiationLogic extends BaseLogic
|
||||
{
|
||||
/**
|
||||
* 合同洽商逻辑
|
||||
* Class ContractNegotiationLogic
|
||||
* @package app\adminapi\logic\contract
|
||||
*/
|
||||
class ContractNegotiationLogic extends BaseLogic
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @notes 添加合同洽商
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function add(array $params): bool
|
||||
{
|
||||
$contract = Contract::field('project_id')->where('id',$params['contract_id'])->findOrEmpty();
|
||||
$profit = $params['negotiation_amount'] - (($params['labor_costs']?:0) + ($params['material_costs']?:0));
|
||||
$profit_rate = $profit / $params['negotiation_amount'];
|
||||
Db::startTrans();
|
||||
try {
|
||||
ContractNegotiation::create([
|
||||
'project_id' => $contract['project_id'],
|
||||
'contract_id' => $params['contract_id'],
|
||||
'negotiation_name' => $params['negotiation_name'],
|
||||
'negotiation_no' => data_unique_code('QS'),
|
||||
'negotiation_amount' => $params['negotiation_amount'],
|
||||
'negotiation_type' => $params['negotiation_type'],
|
||||
'labor_costs' => $params['labor_costs'] ?? 0,
|
||||
'material_costs' => $params['material_costs'] ?? 0,
|
||||
'warranty_amount' => $params['warranty_amount'] ?? 0,
|
||||
'warranty_expire_date' => !empty($params['Warranty_expire_date']) ? strtotime($params['Warranty_expire_date']) : 0,
|
||||
'profit' => $profit,
|
||||
'profit_rate' => $profit_rate,
|
||||
'negotiation_content' => $params['negotiation_content'] ?? '',
|
||||
'negotiation_detail' => $params['negotiation_detail'] ?? '',
|
||||
'negotiation_quotation' => $params['negotiation_quotation'] ? json_encode($params['negotiation_quotation']) : null,
|
||||
'negotiation_basis' => $params['negotiation_basis'] ? json_encode($params['negotiation_basis']) : null,
|
||||
]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 编辑合同洽商
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function edit(array $params): bool
|
||||
{
|
||||
$contract = Contract::field('project_id')->where('id',$params['contract_id'])->findOrEmpty();
|
||||
$profit = $params['negotiation_amount'] - (($params['labor_costs']??0) + ($params['material_costs']??0));
|
||||
$profit_rate = $profit / $params['negotiation_amount'];
|
||||
Db::startTrans();
|
||||
try {
|
||||
ContractNegotiation::where('id', $params['id'])->update([
|
||||
'project_id' => $contract['project_id'],
|
||||
'contract_id' => $params['contract_id'],
|
||||
'negotiation_name' => $params['negotiation_name'],
|
||||
'negotiation_amount' => $params['negotiation_amount'],
|
||||
'negotiation_type' => $params['negotiation_type'],
|
||||
'labor_costs' => $params['labor_costs'] ?? 0,
|
||||
'material_costs' => $params['material_costs'] ?? 0,
|
||||
'warranty_amount' => $params['warranty_amount'] ?? 0,
|
||||
'warranty_expire_date' => !empty($params['Warranty_expire_date']) ? strtotime($params['Warranty_expire_date']) : 0,
|
||||
'profit' => $profit,
|
||||
'profit_rate' => $profit_rate,
|
||||
'negotiation_content' => $params['negotiation_content'] ?? '',
|
||||
'negotiation_detail' => $params['negotiation_detail'] ?? '',
|
||||
'negotiation_quotation' => $params['negotiation_quotation'] ? json_encode($params['negotiation_quotation']) : null,
|
||||
'negotiation_basis' => $params['negotiation_basis'] ? json_encode($params['negotiation_basis']) : null,
|
||||
]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除合同洽商
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function delete(array $params): bool
|
||||
{
|
||||
return ContractNegotiation::destroy($params['id']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 获取合同洽商详情
|
||||
* @param $params
|
||||
* @return array
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function detail($params): array
|
||||
{
|
||||
$data = ContractNegotiation::findOrEmpty($params['id']);
|
||||
$contract = Contract::field('contract_name,contract_code,contract_type,contract_pricing_method,contract_date,business_director')->where('id',$data['contract_id'])->findOrEmpty();
|
||||
$project = Project::field('custom_id,name,project_code')->where('id',$data['project_id'])->findOrEmpty();
|
||||
$custom = Custom::field('name')->where('id',$project['custom_id'])->findOrEmpty();
|
||||
$business_director = Admin::field('name')->where('id',$contract['business_director'])->findOrEmpty();
|
||||
$data['contract_name'] = $contract['contract_name'];
|
||||
$data['contract_code'] = $contract['contract_code'];
|
||||
$data['contract_type'] = $contract->contract_type_text;
|
||||
$data['contract_pricing_method'] = $contract->contract_pricing_method_text;
|
||||
$data['contract_date'] = $contract['contract_date'];
|
||||
$data['business_director'] = $business_director['name'];
|
||||
$data['project_name'] = $project['name'];
|
||||
$data['project_code'] = $project['project_code'];
|
||||
$data['custom_name'] = $custom['name'];
|
||||
$data['negotiation_type_text'] = $data->negotiation_type_text;
|
||||
$approve_data = FlowApprove::where('id',$data['approve_id'])->findOrEmpty();
|
||||
$data['approve_check_status'] = $approve_data['check_status'];
|
||||
return $data->toArray();
|
||||
}
|
||||
|
||||
public static function approve($params,$admin_id): bool{
|
||||
$data = ContractNegotiation::where('id',$params['id'])->findOrEmpty();
|
||||
$approve_data = FlowApprove::where('id',$data['approve_id'])->findOrEmpty();
|
||||
if(!empty($data['approve_id']) && $approve_data['check_status'] != 3){
|
||||
self::setError('当前内容存在审核信息,请勿重复提交');
|
||||
return false;
|
||||
}
|
||||
Db::startTrans();
|
||||
try {
|
||||
$res = addApprove(
|
||||
'项目合同洽商',
|
||||
$params['id'],
|
||||
'app\common\model\contract\ContractNegotiation',
|
||||
$params['path'],
|
||||
$params['flow_id'],
|
||||
$admin_id
|
||||
);
|
||||
if($res){
|
||||
Contract::where('id',$params['id'])->update([
|
||||
'approve_id' => $res,
|
||||
/**
|
||||
* @notes 添加合同洽商
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function add(array $params): bool
|
||||
{
|
||||
$contract = Contract::field('project_id')->where('id', $params['contract_id'])->findOrEmpty();
|
||||
$profit = $params['negotiation_amount'] - (($params['labor_costs'] ?: 0) + ($params['material_costs'] ?: 0));
|
||||
$profit_rate = $profit / $params['negotiation_amount'];
|
||||
Db::startTrans();
|
||||
try {
|
||||
ContractNegotiation::create([
|
||||
'project_id' => $contract['project_id'],
|
||||
'contract_id' => $params['contract_id'],
|
||||
'negotiation_name' => $params['negotiation_name'],
|
||||
'negotiation_no' => data_unique_code('QS'),
|
||||
'negotiation_amount' => $params['negotiation_amount'],
|
||||
'negotiation_type' => $params['negotiation_type'],
|
||||
'labor_costs' => $params['labor_costs'] ?? 0,
|
||||
'material_costs' => $params['material_costs'] ?? 0,
|
||||
'warranty_amount' => $params['warranty_amount'] ?? 0,
|
||||
'warranty_expire_date' => !empty($params['warranty_expire_date']) ? strtotime($params['warranty_expire_date']) : 0,
|
||||
'profit' => $profit,
|
||||
'profit_rate' => $profit_rate,
|
||||
'negotiation_content' => $params['negotiation_content'] ?? '',
|
||||
'negotiation_detail' => $params['negotiation_detail'] ?? '',
|
||||
'negotiation_quotation' => $params['negotiation_quotation'] ? json_encode($params['negotiation_quotation']) : null,
|
||||
'negotiation_basis' => $params['negotiation_basis'] ? json_encode($params['negotiation_basis']) : null,
|
||||
]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 编辑合同洽商
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function edit(array $params): bool
|
||||
{
|
||||
$contract = Contract::field('project_id')->where('id', $params['contract_id'])->findOrEmpty();
|
||||
$profit = $params['negotiation_amount'] - (($params['labor_costs'] ?? 0) + ($params['material_costs'] ?? 0));
|
||||
$profit_rate = $profit / $params['negotiation_amount'];
|
||||
Db::startTrans();
|
||||
try {
|
||||
ContractNegotiation::where('id', $params['id'])->update([
|
||||
'project_id' => $contract['project_id'],
|
||||
'contract_id' => $params['contract_id'],
|
||||
'negotiation_name' => $params['negotiation_name'],
|
||||
'negotiation_amount' => $params['negotiation_amount'],
|
||||
'negotiation_type' => $params['negotiation_type'],
|
||||
'labor_costs' => $params['labor_costs'] ?? 0,
|
||||
'material_costs' => $params['material_costs'] ?? 0,
|
||||
'warranty_amount' => $params['warranty_amount'] ?? 0,
|
||||
'warranty_expire_date' => !empty($params['warranty_expire_date']) ? strtotime($params['warranty_expire_date']) : 0,
|
||||
'profit' => $profit,
|
||||
'profit_rate' => $profit_rate,
|
||||
'negotiation_content' => $params['negotiation_content'] ?? '',
|
||||
'negotiation_detail' => $params['negotiation_detail'] ?? '',
|
||||
'negotiation_quotation' => $params['negotiation_quotation'] ? json_encode($params['negotiation_quotation']) : null,
|
||||
'negotiation_basis' => $params['negotiation_basis'] ? json_encode($params['negotiation_basis']) : null,
|
||||
]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除合同洽商
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function delete(array $params): bool
|
||||
{
|
||||
return ContractNegotiation::destroy($params['id']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 获取合同洽商详情
|
||||
* @param $params
|
||||
* @return array
|
||||
* @author likeadmin
|
||||
* @date 2023/12/04 21:26
|
||||
*/
|
||||
public static function detail($params): array
|
||||
{
|
||||
$data = ContractNegotiation::findOrEmpty($params['id']);
|
||||
$contract = Contract::field('contract_name,contract_code,contract_type,contract_pricing_method,contract_date,business_director')->where('id', $data['contract_id'])->findOrEmpty();
|
||||
$project = Project::field('custom_id,name,project_code')->where('id', $data['project_id'])->findOrEmpty();
|
||||
$custom = Custom::field('name')->where('id', $project['custom_id'])->findOrEmpty();
|
||||
$business_director = Admin::field('name')->where('id', $contract['business_director'])->findOrEmpty();
|
||||
$data['contract_name'] = $contract['contract_name'];
|
||||
$data['contract_code'] = $contract['contract_code'];
|
||||
$data['contract_type'] = $contract->contract_type_text;
|
||||
$data['contract_pricing_method'] = $contract->contract_pricing_method_text;
|
||||
$data['contract_date'] = $contract['contract_date'];
|
||||
$data['business_director'] = $business_director['name'];
|
||||
$data['project_name'] = $project['name'];
|
||||
$data['project_code'] = $project['project_code'];
|
||||
$data['custom_name'] = $custom['name'];
|
||||
$data['negotiation_type_text'] = $data->negotiation_type_text;
|
||||
$approve_data = FlowApprove::where('id', $data['approve_id'])->findOrEmpty();
|
||||
$data['approve_check_status'] = $approve_data['check_status'];
|
||||
return $data->toArray();
|
||||
}
|
||||
|
||||
public static function approve($params, $admin_id): bool
|
||||
{
|
||||
$data = ContractNegotiation::where('id', $params['id'])->findOrEmpty();
|
||||
$approve_data = FlowApprove::where('id', $data['approve_id'])->findOrEmpty();
|
||||
if (!empty($data['approve_id']) && $approve_data['check_status'] != 3) {
|
||||
self::setError('当前内容存在审核信息,请勿重复提交');
|
||||
return false;
|
||||
}
|
||||
Db::startTrans();
|
||||
try {
|
||||
$res = addApprove(
|
||||
'项目合同洽商',
|
||||
$params['id'],
|
||||
'app\common\model\contract\ContractNegotiation',
|
||||
$params['path'],
|
||||
$params['flow_id'],
|
||||
$admin_id
|
||||
);
|
||||
if ($res) {
|
||||
Contract::where('id', $params['id'])->update([
|
||||
'approve_id' => $res,
|
||||
]);
|
||||
}
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -12,42 +12,46 @@
|
||||
// | author: likeadminTeam
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\common\model\contract;
|
||||
namespace app\common\model\contract;
|
||||
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
use app\common\model\dict\DictData;
|
||||
use think\model\concern\SoftDelete;
|
||||
use app\common\model\BaseModel;
|
||||
use app\common\model\dict\DictData;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
|
||||
/**
|
||||
* 合同洽商模型
|
||||
* Class ContractNegotiation
|
||||
* @package app\common\model\contract
|
||||
*/
|
||||
class ContractNegotiation extends BaseModel
|
||||
{
|
||||
use SoftDelete;
|
||||
protected $name = 'contract_negotiation';
|
||||
protected $deleteTime = 'delete_time';
|
||||
/**
|
||||
* 合同洽商模型
|
||||
* Class ContractNegotiation
|
||||
* @package app\common\model\contract
|
||||
*/
|
||||
class ContractNegotiation extends BaseModel
|
||||
{
|
||||
use SoftDelete;
|
||||
|
||||
protected $name = 'contract_negotiation';
|
||||
protected $deleteTime = 'delete_time';
|
||||
|
||||
|
||||
public function getWarrantyExpireDateAttr($value): string
|
||||
{
|
||||
return empty($value) ? '' : date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
public function getWarrantyExpireDateAttr($value): string
|
||||
{
|
||||
return empty($value) ? '' : date('Y-m-d', $value);
|
||||
}
|
||||
|
||||
public function getNegotiationQuotationAttr($value)
|
||||
{
|
||||
return !empty($value) ? json_decode($value) : '';
|
||||
}
|
||||
|
||||
public function getNegotiationBasisAttr($value)
|
||||
{
|
||||
return !empty($value) ? json_decode($value) : '';
|
||||
}
|
||||
|
||||
public function getNegotiationTypeTextAttr($value, $data)
|
||||
{
|
||||
$dict = DictData::where('type_value', 'negotiation_type')->column('name', 'value');
|
||||
return !empty($data['negotiation_type']) ? $dict[$data['negotiation_type']] : '';
|
||||
}
|
||||
|
||||
public function getNegotiationQuotationAttr($value){
|
||||
return !empty($value) ? json_decode($value) : '';
|
||||
}
|
||||
|
||||
public function getNegotiationBasisAttr($value){
|
||||
return !empty($value) ? json_decode($value) : '';
|
||||
}
|
||||
|
||||
public function getNegotiationTypeTextAttr($value,$data){
|
||||
$dict = DictData::where('type_value','negotiation_type')->column('name','value');
|
||||
return !empty($data['negotiation_type']) ? $dict[$data['negotiation_type']] : '';
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user