* Class PdmPartitemRelation * @package app\admin\controller */ class PdmPartitemRelation extends AdminController { /** * PdmPartitemRelation模型对象 * @var \app\admin\model\PdmPartitemRelation */ public function __construct() { parent::__construct(); $this->model = new PdmPartitemRelationModel; } /** * 默认生成的方法为index/add/edit/del/status 五个方法 * 当创建CURD的时候,DIY的函数体和模板为空,请自行编写代码 */ public function index(): Response { if (request()->isAjax()) { list($count, $list) = PdmPartitemRelation::dataList(request()->all()); // $rules = list_to_tree($list,'id','pid','children',0); $lists = list_to_tree($list,'id','pid','children',0); return $this->success('获取成功', '/',$lists, $count); // return $this->success('获取成功', '/'); } return view('/pdm_partitem_relation/index'); } /** * 获取资源列表 * @param array $params * @return array * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function dataList(array $params): array { // $where = array(); // if (!empty($params['partnumber'])) { // $where[] = ['partnumber','like','%'.$params['partnumber'].'%']; // } // if (!empty($params['content'])) { // $where[] = ['content','like','%'.$params['content'].'%']; // } // $model = new PdmPartitemIndexModel(); // // $model = $this->model; // $count = $model->where($where)->count(); // // $list = $model->where($where)->order('sort asc')->select()->toArray(); // $list = $model->where($where)->order('sort asc')->select(); // foreach($list as $key => $value){ // // throw new \Exception(json_encode($value)); // // throw new \Exception(json_encode($list[$key]->admin['nickname'])); // $list[$key]['creator'] =__($list[$key]->admin == null?'': $list[$key]->admin['nickname']); // $list[$key]['parttype'] =__($list[$key]->parttype ==null?'': $list[$key]->parttype['name']); // $list[$key]['mfg_name'] =__($list[$key]->mfgname == null ?'': $list[$key]->mfgname['mfgname']); // // if($list[$key]->mfgname == null){ // // $list[$key]['mfg_name'] =''; // // }else{ // // $list[$key]['mfg_name'] =$list[$key]->mfgname['mfgname']; // // } // } // return [$count, $list->toArray()]; $page = (int)input('page', 1); $limit = (int)input('limit', 18); $where = $this->buildSelectParams(); $count = $this->model->where($where)->count(); $fieldList = $this->model->getFields(); $order = !array_key_exists('sort', $fieldList) ? 'id' : 'sort'; $subQuery = $this->model->field('id')->where($where)->order($order, 'desc')->limit($limit)->page($page)->buildSql(); $subQuery = '( SELECT object.id FROM ' . $subQuery . ' AS object )'; // $list = $this->model->with($this->relationModel)->where('id in' . $subQuery)->order($order, 'asc')->select()->toArray(); // 如果是'desc' list_to_tree 函数返回为空! $list = $this->model->with($this->relationModel)->where('id in' . $subQuery)->order($order, 'desc')->select(); // 如果是'desc' list_to_tree 函数返回为空! foreach($list as $key => $value){ // throw new \Exception(json_encode($value)); // throw new \Exception(json_encode($list[$key]->admin['nickname'])); $list[$key]['creator'] =__($list[$key]->admin == null?'': $list[$key]->admin['nickname']); // $list[$key]['parttype'] =__($list[$key]->pdmParttype ==null?'': $list[$key]->pdmParttype['name']); // $list[$key]['mfg_name'] =__($list[$key]->pdmMfgName == null ?'': $list[$key]->pdmMfgName['mfgname']); // $list[$key]['mpn'] =__($list[$key]->pdmPurchasecode == null ?'': $list[$key]->pdmPurchasecode['mpn']); $list[$key]['purchasecode'] =__($list[$key]->pdmPartitemIndex == null ?'': $list[$key]->pdmPartitemIndex['purchasecode']); $list[$key]['symbolname'] =__($list[$key]->pdmSymbol == null ?'': $list[$key]->pdmSymbol['symbolname']); $list[$key]['footprint'] =__($list[$key]->pdmFootprint == null ?'': $list[$key]->pdmFootprint['footprint']); $list[$key]['departmenttitle'] =__($list[$key]->department == null ?'': $list[$key]->department['title']); // if($list[$key]->mfgname == null){ // $list[$key]['mfg_name'] =''; // }else{ // $list[$key]['mfg_name'] =$list[$key]->mfgname['mfgname']; // } } $list = $list->toArray(); if(!empty($list) && is_array($list)){ $nodeid = array(); foreach($list as $key => $value){ if($value['pid'] == 0 ){ $nodeid[] = $value['id']; } } foreach($list as $key => $value){ if(!in_array($value['pid'],$nodeid) && $value['pid'] > 0){ $nodeid[] = $value['pid']; $nodevalue = $this->model->find($value['pid']); $nodevalue = $this->model->find($value['pid'])->toArray(); if(!empty($nodevalue)){ $list[] = &$nodevalue; } } } // $list = list_sort_by($list,'id','asc'); // usort($list, function($a, $b) { // return $a['id'] <=> $b['id']; // 对 'id' 进行升序排序 // }); // throw new \Exception(json_encode($list)); } return [$count, $list]; } /** * 添加节点数据 * @return Response */ public function add(): Response { $symbol = PdmSymbolModel::select()->toArray(); $footprint = PdmFootprintModel::select()->toArray(); $partitemIndex = PdmPartitemIndexModel::select()->toArray(); if (request()->isPost()) { $post = \request()->post(); // validate(\app\common\validate\system\AdminRules::class . '.add')->check($post); $userid = get_admin_id(); $admin_info = get_admin_info(); // throw new \Exception(json_encode($admin_info)); $post['creatorid'] = $userid ; $post['departmentid'] = $admin_info['department_id'] ; if ($this->model->create($post)) { return $this->success('添加数据关系成功!'); } } $data = $this->getTableFields(); $data['pid'] = input('pid', 0); // $data['auth'] = 1; // $data['type'] = 1; list($count, $list) = PdmPartitemRelation::dataList(request()->all()); return view('/pdm_partitem_relation/add', [ 'data' => $data, 'symbol' => json_encode( list_to_tree($symbol), JSON_UNESCAPED_UNICODE), 'footprint' => json_encode( list_to_tree($footprint), JSON_UNESCAPED_UNICODE), 'partitemIndex' => json_encode( list_to_tree($partitemIndex), JSON_UNESCAPED_UNICODE), // 'parttype' => $this->parttype, 'list' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE), ]); } /** * 编辑节点数据 * @return Response * @throws DbException * @throws DataNotFoundException * @throws ModelNotFoundException */ public function edit(): Response { $id = input('id', 0); $data = $this->model->find($id); // $parttypeid = $data['parttypeid']; $symbolid = $data['symbolid']; $footprintid = $data['footprintid']; $partnumbertemp = $data['partnumber']; // $parems['id'] = input('parttypeid', 0); $symbol = PdmSymbolModel::find($symbolid)->toArray(); list($countsymbol, $symbol) = \app\admin\controller\PdmSymbol::dataList($symbol); $footprint = PdmFootprintModel::find($footprintid)->toArray(); list($countfootprint, $footprint) = \app\admin\controller\PdmFootprint::dataList($footprint); $where = ['partnumber' => $partnumbertemp]; // $partnumbertemp1 = PdmPartitemIndexModel::find($partnumbertemp)->toArray(); $partnumbertemp1 = PdmPartitemIndexModel::where($where)->select()->toArray(); list($countpartnumberIndex, $partitemIndex) = \app\admin\controller\PdmPartitemIndex::dataList($partnumbertemp1); if (request()->isPost()) { $post = \request()->post(); // validate(\app\common\validate\system\AdminRules::class . '.edit')->check($post); if ($this->model->update($post)) { return $this->success('更新数据关系成功!'); } } list($count, $list) = PdmPartitemRelation::dataList(request()->all()); // throw new \Exception(json_encode($parttype)); // throw new \Exception( json_encode(list_to_tree($parttype))); return view('/pdm_partitem_relation/add', [ 'data' => $data, 'symbol' => json_encode( list_to_tree($symbol), JSON_UNESCAPED_UNICODE), 'footprint' => json_encode( list_to_tree($footprint), JSON_UNESCAPED_UNICODE), 'partitemIndex' => json_encode( list_to_tree($partitemIndex), JSON_UNESCAPED_UNICODE), // 'parttype' => json_encode( $parttype, JSON_UNESCAPED_UNICODE), 'list' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE), ]); } /** * 更新数据到CIS数据表 * @return Response * @throws DbException */ public function updata(): Response { $id = input('id'); if (!empty($id)) { $data = $this->model->find($id); $department = $data->department; $pdmPartitemIndex = $data->pdmPartitemIndex; // $departmentid = $department['id']; $partnumber = $pdmPartitemIndex['partnumber']; $partnumber = $pdmPartitemIndex['partnumber']; // $parttypeid = $pdmPartitemIndex['parttypeid']; $tablesuffix1= $department['suffix']; // return $this->success($tablesuffix1."_"); $pdmParttype = $pdmPartitemIndex->pdmParttype; if($pdmParttype['pid']!=0){ $pdmParttype1 = \app\admin\model\PdmParttype::find($pdmParttype['pid']); $tablesuffix2= $pdmParttype1['suffix']; }else{ $tablesuffix2= $pdmParttype['suffix']; } // $table = "pdm_partitem"; $suffix = '_'.$tablesuffix1."_".$tablesuffix2; $partitem = \app\admin\model\PdmPartitem::suffix($suffix)->where(['partnumber' => $partnumber])->select()->toArray(); $partitem_view = \app\admin\model\PdmPartitemView::where(['partnumber' => $partnumber])->select()->toArray(); // throw new \Exception(json_encode(count($partitem))); if(count($partitem_view)==1){ if(count($partitem)<1){ unset($partitem_view[0]['id']); }else if(count($partitem)==1){ $partitem_view[0]['id'] = $partitem[0]['id']; }else { $status = \app\admin\model\PdmPartitem::suffix($suffix)->where(['partnumber' => $partnumber])->delete(); if($status){ // throw new \Exception(json_encode(count($partitem))."删除数据成功。"); }else{ // throw new \Exception(json_encode(count($partitem))."删除数据失败!"); return $this->error('有'.count($partitem).'个数据:'.$partnumber.',删除数据失败!'); } unset($partitem_view[0]['id']); } $status = \app\admin\model\PdmPartitem::suffix($suffix)->saveAll($partitem_view); } // if(!empty($partitem)){ // $status = \app\admin\model\PdmPartitem::suffix($suffix)->update($partitem_view[0]); // }else{ // $status = \app\admin\model\PdmPartitem::suffix($suffix)->create($partitem_view[0]); // } if($status){ return $this->success('更新数据成功。'. \app\admin\model\PdmPartitem::suffix($suffix)->getTable()); }else { return $this->error('更新数据失败!'); } // // 查询子节点 // if ($this->model->where('pid',$id)->count()) { // return $this->error('当前分类存在子项!'); // } // // 删除单个 // if ($this->model::destroy($id)) { // return $this->success('删除FootPrint成功!'); // } } return $this->error('更新失败,请检查您的参数!'); } /** * 更新数据到CIS数据表 * @return Response * @throws DbException */ public function updataAll(): Response { // $where = $this->buildSelectParams(); $where = []; $lists = \app\admin\model\PdmPartitemRelation::where($where)->select(); foreach( $lists as $key => $value){ $id = $value['id'] ; if (!empty($id)) { $data = $this->model->find($id); $department = $data->department; $pdmPartitemIndex = $data->pdmPartitemIndex; // $departmentid = $department['id']; $partnumber = $pdmPartitemIndex['partnumber']; $partnumber = $pdmPartitemIndex['partnumber']; // $parttypeid = $pdmPartitemIndex['parttypeid']; $tablesuffix1= $department['suffix']; // return $this->success($tablesuffix1."_"); $pdmParttype = $pdmPartitemIndex->pdmParttype; if($pdmParttype['pid']!=0){ $pdmParttype1 = \app\admin\model\PdmParttype::find($pdmParttype['pid']); $tablesuffix2= $pdmParttype1['suffix']; }else{ $tablesuffix2= $pdmParttype['suffix']; } // $table = "pdm_partitem"; $suffix = '_'.$tablesuffix1."_".$tablesuffix2; $partitem = \app\admin\model\PdmPartitem::suffix($suffix)->where(['partnumber' => $partnumber])->select()->toArray(); $partitem_view = \app\admin\model\PdmPartitemView::where(['partnumber' => $partnumber])->select()->toArray(); // throw new \Exception(json_encode(count($partitem))); if(count($partitem_view)==1){ if(count($partitem)<1){ unset($partitem_view[0]['id']); }else if(count($partitem)==1){ $partitem_view[0]['id'] = $partitem[0]['id']; }else { $status = \app\admin\model\PdmPartitem::suffix($suffix)->where(['partnumber' => $partnumber])->delete(); if($status){ // throw new \Exception(json_encode(count($partitem))."删除数据成功。"); }else{ // throw new \Exception(json_encode(count($partitem))."删除数据失败!"); return $this->error('有'.count($partitem).'个数据:'.$partnumber.',删除数据失败!'); } unset($partitem_view[0]['id']); } $status = \app\admin\model\PdmPartitem::suffix($suffix)->saveAll($partitem_view); } // if(!empty($partitem)){ // $status = \app\admin\model\PdmPartitem::suffix($suffix)->update($partitem_view[0]); // }else{ // $status = \app\admin\model\PdmPartitem::suffix($suffix)->create($partitem_view[0]); // } if($status){ // return $this->success('更新数据成功。'. \app\admin\model\PdmPartitem::suffix($suffix)->getTable()); }else { return $this->error('更新数据失败!'); } } // // 查询子节点 // if ($this->model->where('pid',$id)->count()) { // return $this->error('当前分类存在子项!'); // } // // 删除单个 // if ($this->model::destroy($id)) { // return $this->success('删除FootPrint成功!'); // } } if($status){ return $this->success('更新数据成功。'. \app\admin\model\PdmPartitem::suffix($suffix)->getTable()); }else { return $this->error('更新数据失败!'); } return $this->error('更新失败,请检查您的参数!'); } }