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

420 lines
18 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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 app\admin\model\PdmPartitemIndex as PdmPartitemIndexModel;
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();
$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('更新失败,请检查您的参数!');
}
}