Files
swiftadmin/app/admin/controller/PdmPartitemRelation.php

410 lines
17 KiB
PHP
Raw Normal View History

<?php
declare (strict_types = 1);
namespace app\admin\controller;
use app\AdminController;
use Webman\Http\Request;
use app\admin\model\PdmPartitemRelation as PdmPartitemRelationModel;
use app\admin\model\PdmSymbol as PdmSymbolModel;
use app\admin\model\PdmFootprint as PdmFootprintModel;
use support\Response;
/**
* pdm_partitem_relation
* PN关系维护
* <!--partmanage-->
* 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();
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),
// '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'];
// $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);
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),
// '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('更新失败,请检查您的参数!');
}
}