From 1b20b0eb810990c827c58378279ed98b10189c37 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Mon, 11 Mar 2024 17:23:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=80=A0=E4=BB=B7=E5=92=A8?= =?UTF-8?q?=E8=AF=A2--=E9=80=A0=E4=BB=B7=E9=A1=B9=E7=9B=AE=E5=8F=B0?= =?UTF-8?q?=E8=B4=A6=20=E9=A1=B9=E7=9B=AE=E7=9B=B8=E5=85=B3=E4=BA=BA?= =?UTF-8?q?=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lists/cost_project/CostProjectLists.php | 19 ++- .../logic/cost_project/CostProjectLogic.php | 125 ++++++++++++------ 2 files changed, 95 insertions(+), 49 deletions(-) diff --git a/app/adminapi/lists/cost_project/CostProjectLists.php b/app/adminapi/lists/cost_project/CostProjectLists.php index 44a6ca361..f618f0a5b 100644 --- a/app/adminapi/lists/cost_project/CostProjectLists.php +++ b/app/adminapi/lists/cost_project/CostProjectLists.php @@ -20,6 +20,7 @@ use app\common\lists\ListsExcelInterface; use app\common\model\cost_project\CostProject; use app\common\lists\ListsSearchInterface; use app\common\model\auth\Admin; +use app\common\model\cost_project\CostProjectPerson; /** * 造价项目台账列表 @@ -68,9 +69,12 @@ class CostProjectLists extends BaseAdminDataLists implements ListsSearchInterfac ->order(['id' => 'desc']) ->select() ->each(function($item){ - if($item['person']){ - $arr=explode(',',$item['person']); - Admin::whereIn('id',$arr)->column('name'); + $uid=(new CostProjectPerson)->where('cost_project_id',$item['id'])->column('uid'); + if($uid){ + $admin=Admin::whereIn('id',$uid)->column('name'); + if($admin){ + $res['person']=implode(',',$admin); + } } }) ->toArray(); @@ -81,9 +85,12 @@ class CostProjectLists extends BaseAdminDataLists implements ListsSearchInterfac ->order(['id' => 'desc']) ->select() ->each(function($item){ - if($item['person']){ - $arr=explode(',',$item['person']); - Admin::whereIn('id',$arr)->column('name'); + $uid=(new CostProjectPerson)->where('cost_project_id',$item['id'])->column('uid'); + if($uid){ + $admin=Admin::whereIn('id',$uid)->column('name'); + if($admin){ + $res['person']=implode(',',$admin); + } } }) ->toArray(); diff --git a/app/adminapi/logic/cost_project/CostProjectLogic.php b/app/adminapi/logic/cost_project/CostProjectLogic.php index d6c8c0a92..0a394dc7d 100644 --- a/app/adminapi/logic/cost_project/CostProjectLogic.php +++ b/app/adminapi/logic/cost_project/CostProjectLogic.php @@ -17,6 +17,8 @@ namespace app\adminapi\logic\cost_project; use app\common\model\cost_project\CostProject; use app\common\logic\BaseLogic; +use app\common\model\auth\Admin; +use app\common\model\cost_project\CostProjectPerson; use think\facade\Db; @@ -40,7 +42,7 @@ class CostProjectLogic extends BaseLogic { Db::startTrans(); try { - CostProject::create([ + $data = CostProject::create([ 'project_num' => generate_sn(CostProject::class, 'project_num'), 'project_name' => $params['project_name'], 'contract_id' => $params['contract_id'], @@ -55,7 +57,6 @@ class CostProjectLogic extends BaseLogic 'org_id' => $params['org_id'], 'depar' => $params['depar'], 'principal' => $params['principal'], - 'person' => $params['person_id'], 'invest' => $params['invest'], 'budget' => $params['budget'], 'cost' => $params['cost'], @@ -70,7 +71,14 @@ class CostProjectLogic extends BaseLogic 'remark' => $params['remark'], 'annex' => $params['annex'] ]); - + if ($params['person_id']) { + $arr = []; + $person_id = explode(',', $params['person_id']); + foreach ($person_id as $k => $v) { + $arr[] = ['cost_project_id' => $data->id, $v]; + } + $arr ?? (new CostProjectPerson)->saveAll($arr); + } Db::commit(); return true; } catch (\Exception $e) { @@ -107,7 +115,6 @@ class CostProjectLogic extends BaseLogic 'org_id' => $params['org_id'], 'depar' => $params['depar'], 'principal' => $params['principal'], - 'person' => $params['person_id'], 'invest' => $params['invest'], 'budget' => $params['budget'], 'cost' => $params['cost'], @@ -122,7 +129,15 @@ class CostProjectLogic extends BaseLogic 'remark' => $params['remark'], 'annex' => $params['annex'] ]); - + if ($params['person_id']) { + $arr = []; + $person_id = explode(',', $params['person_id']); + (new CostProjectPerson)->delete($person_id); + foreach ($person_id as $k => $v) { + $arr[] = ['cost_project_id' => $data->id, $v]; + } + $arr ?? (new CostProjectPerson)->saveAll($arr); + } Db::commit(); return true; } catch (\Exception $e) { @@ -155,20 +170,30 @@ class CostProjectLogic extends BaseLogic */ public static function detail($params): array { - return CostProject::with(['contract'])->findOrEmpty($params['id'])->toArray(); + $res= CostProject::with(['contract'])->findOrEmpty($params['id'])->toArray(); + if($res){ + $uid=(new CostProjectPerson)->where('cost_project_id',$res['id'])->column('uid'); + if($uid){ + $admin=Admin::whereIn('id',$uid)->column('name'); + if($admin){ + $res['person']=implode(',',$admin); + } + } + } + return $res; } public static function datas($name) { $datas = CostProject::where(function ($query) use ($name) { - if ($name) { - $query->where('project_name', 'like', '%' . $name . '%'); - } - }) - ->field(['id', 'project_num', 'project_name']) - ->order(['id' => 'desc']) - ->select() - ->toArray(); + if ($name) { + $query->where('project_name', 'like', '%' . $name . '%'); + } + }) + ->field(['id', 'project_num', 'project_name']) + ->order(['id' => 'desc']) + ->select() + ->toArray(); foreach ($datas as &$item) { $item['projectinfo'] = 'ID:' . $item['id'] . ' / 名称:' . $item['project_name']; } @@ -177,33 +202,47 @@ class CostProjectLogic extends BaseLogic public static function createProject($data) { - return CostProject::create([ - 'project_num' => generate_sn(CostProject::class, 'project_num'), - 'project_name' => $data['project_name'], - 'contract_id' => $data['contract_id'], - 'types' => $data['types'], - 'industry' => $data['industry'], - 'province' => $data['province'], - 'city' => $data['city'], - 'address' => $data['address'], - 'starting' => $data['starting'], - 'endtime' => $data['endtime'], - 'jhgq' => $data['jhgq'], - 'depar' => $data['depar'], - 'principal' => $data['principal'], - 'person' => $data['person'], - 'invest' => $data['invest'], - 'budget' => $data['budget'], - 'cost' => $data['cost'], - 'approval' => $data['approval'], - 'aunit' => $data['aunit'], - 'Acontact' => $data['Acontact'], - 'acontactnum' => $data['acontactnum'], - 'date' => $data['date'], - 'generalize' => $data['generalize'], - 'note' => $data['note'], - 'remark' => $data['remark'], - 'annex' => $data['annex'] - ]); + Db::startTrans(); + try { + $res = CostProject::create([ + 'project_num' => generate_sn(CostProject::class, 'project_num'), + 'project_name' => $data['project_name'], + 'contract_id' => $data['contract_id'], + 'types' => $data['types'], + 'industry' => $data['industry'], + 'province' => $data['province'], + 'city' => $data['city'], + 'address' => $data['address'], + 'starting' => $data['starting'], + 'endtime' => $data['endtime'], + 'jhgq' => $data['jhgq'], + 'depar' => $data['depar'], + 'principal' => $data['principal'], + 'invest' => $data['invest'], + 'budget' => $data['budget'], + 'cost' => $data['cost'], + 'approval' => $data['approval'], + 'aunit' => $data['aunit'], + 'Acontact' => $data['Acontact'], + 'acontactnum' => $data['acontactnum'], + 'date' => $data['date'], + 'generalize' => $data['generalize'], + 'note' => $data['note'], + 'remark' => $data['remark'], + 'annex' => $data['annex'] + ]); + if ($data['person_id']) { + $arr = []; + $person_id = explode(',', $data['person_id']); + (new CostProjectPerson)->delete($person_id); + foreach ($person_id as $k => $v) { + $arr[] = ['cost_project_id' => $data->id, $v]; + } + $arr ?? (new CostProjectPerson)->saveAll($arr); + } + return $res; + } catch (\Exception $e) { + return false; + } } -} \ No newline at end of file +}