88 lines
2.9 KiB
PHP
Executable File
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;
|
|
}
|
|
|
|
}
|