Files
jianfeng-server/app/farm/model/ClaimTraceability.php
2025-10-02 10:33:06 +08:00

88 lines
2.9 KiB
PHP
Executable File

<?php
namespace app\farm\model;
use app\BaseModel;
use think\facade\Db;
use think\facade\Log;
class ClaimTraceability extends BaseModel
{
//定义表名
protected $name = 'lbfarm_claim_traceability';
public function getList($data)
{
$where = [];
if ($data['title']) {
$where[] = ['name|code', 'like', '%' . $data['title'] . '%'];
}
if ($data['claim_id']) {
$where[] = ['claim_id', '=', $data['claim_id']];
}
return $this->where($where)->paginate(10)->each(function ($item) {
$ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation();
$item['operations'] = $ClaimTraceabilityOperationModel->getList();
return $item;
})->toArray();
}
public function deleteTraceability($id)
{
$ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation();
$ClaimTraceabilityOperationModel->where('traceability_id', $id)->delete();
return $this->where('id', $id)->delete();
}
public function addTraceability($data)
{
$data['traceability_operation'] = json_encode($data['traceability_operation']);
$number = 'TR' . date('Ymd') . rand(1000, 9999);
$data['traceability_code'] = $number;
$res = $this->insert($data);
$id = $this->getLastInsID();
$operationids = [];
foreach (json_decode($data['traceability_operation'], true) as $v) {
$v['traceability_id'] = $id;
$ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation();
if ($v['id']) {
$ClaimTraceabilityOperationModel->where('id', $v['id'])->update($v);
} else {
$v['id'] = $ClaimTraceabilityOperationModel->addData($v);
}
array_push($operationids, $v['id']);
}
$ClaimTraceabilityOperationModel->whereNotIn('id', $operationids)
->where('traceability_id', $id)->delete();
return $id;
}
public function updateTraceability($data, $id)
{
$data['traceability_operation'] = json_encode($data['traceability_operation']);
$res = $this->where('id', $id)->update($data);
$operationids = [];
$ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation();
foreach (json_decode($data['traceability_operation'], true) as $v) {
$v['traceability_id'] = $id;
if ($v['id']) {
$ClaimTraceabilityOperationModel->where('id', $v['id'])->update($v);
} else {
$v['id'] = $ClaimTraceabilityOperationModel->addData($v);
}
array_push($operationids, $v['id']);
}
$ClaimTraceabilityOperationModel->whereNotIn('id', $operationids)
->where('traceability_id', $id)->delete();
return $res;
}
}