Extension3915ModuleController.php 5.4 KB
<?php
/**
 * @remark :
 * @name   :Extension3915ModuleController.php
 * @author :lyh
 * @method :post
 * @time   :2025/11/20 11:42
 */

namespace App\Http\Controllers\Bside\ExtensionModule;

use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Models\ExtentModule\ExtensionModuleField;
use App\Models\ExtentModule\ExtensionModuleValue;
use Illuminate\Support\Facades\Cache;

class Extension3915ModuleController extends BaseController
{

    /**
     * @remark :获取列表数据
     * @name   :lists
     * @author :lyh
     * @method :post
     * @time   :2025/11/20 14:38
     */
    public function lists(){
        $this->request->validate([
            'module_id'=>'required',
        ],[
            'module_id.required' => '模块id不能为空',
        ]);
        $searchParam = [
            'module_id'=>$this->param['module_id'],
        ];
        $resultData = Cache::get('extension_module_list_3915_'.$this->param['module_id']);
        if(empty($resultData)){
            $data = [];
            $moduleValueModel = new ExtensionModuleValue();
            if(isset($this->param['field_id']) && ($this->param['field_id'] != 0) && isset($this->param['value'])){
                $uuidArr = $moduleValueModel->formatQuery(['field_id'=>$this->param['field_id'],'value'=>$this->param['value'],'module_id'=>$this->param['module_id']])->distinct()->pluck('uuid')->toArray();
                if(!empty($uuidArr)){
                    $searchParam['uuid'] = ['in',$uuidArr];
                }
            }
            if(isset($this->param['start_time']) && !empty($this->param['start_time']) && isset($this->param['end_time']) && !empty($this->param['end_time'])){
                $searchParam['created_at'] = ['between',[$this->param['start_time'],$this->param['end_time']]];
            }
            $lists = $moduleValueModel->list($searchParam);
            if(!empty($lists)){
                foreach ($lists as $k => $v){
                    $data[$v['uuid']][$v['field_id']] = $v['value'];
                    $data[$v['uuid']]['created_at'] = $v['created_at'];
                }
            }
            $resultData = [];
            foreach ($data as $k => $v){
                $v['uuid'] = $k;
                $resultData[] = $v;
            }
            Cache::add('extension_module_list_3915_'.$this->param['module_id'],$resultData);
        }
        $resultData = $this->formatPaginate($resultData,$this->row,$this->page);
        //执行分页
        $this->response('success',Code::SUCCESS,$resultData);
    }

    /**
     * @remark :分页
     * @name   :simplePaginate
     * @author :lyh
     * @method :post
     * @time   :2025/11/20 14:50
     */
    public function formatPaginate($data, $size = 20, $page = 1)
    {
        $collection = collect($data);
        $total = $collection->count();
        $totalPage = max(1, ceil($total / $size));
        // 确保页码在有效范围内
        $page = max(1, min($page, $totalPage));
        $list = $collection->forPage($page, $size)->values()->toArray();
        return [
            'list' => $list,
            'page' => (int)$page,
            'size' => (string)$size,
            'total' => $total,
            'total_page' => $totalPage
        ];
    }

    /**
     * @remark :导入数据
     * @name   :importData
     * @author :lyh
     * @method :post
     * @time   :2025/11/20 14:40
     */
    public function importData()
    {
        $this->request->validate([
            'module_id'=>'required',
        ],[
            'module_id.required' => '模块id不能为空',
        ]);
        if($this->user['project_id'] != 3915){
            $this->fail('当前项目不能调用当前方法');
        }
        $moduleFieldModel = new ExtensionModuleField();
        $filedList = $moduleFieldModel->where(['module_id' => $this->param['module_id']])->pluck('field_name', 'id')->toArray();
        if(empty($filedList)){
            $this->response('请先设置字段,再添加数据',Code::SUCCESS);
        }
//        $data = $this->param['data'];
        $data = [
            ["Customer Code", "PO. No.", "WD PI No.", "Customer Part Number", "WD Part Number", "Order q'ty", "PI Delivery Date", "Shipped Q'ty", "Order Status", "Invoice No.", "Delivery Date"],
            ["1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"],
            ["2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2"],
            ["3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3"],
            ["4", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4"]
        ];
        $moduleValueModel = new ExtensionModuleValue();

        $key_filedId = [];
        $resultData = [];
        foreach ($data as $k => $v){
            foreach ($v as $k1 => $v1){
                if($k == 0){
                    if(isset($filedList[$v1])){
                        $key_filedId[$k1] = $filedList[$v1];
                    }
                    continue;
                }
                $resultData[] = [
                    'uuid'=>$k + 1,
                    'modile_id'=>$this->param['module_id'],
                    'field_id'=>$key_filedId[$k1],
                    'value'=>$v1 ?? '',
                ];
            }
        }
        if(!empty($resultData)){
            //todo::优先截断表
            $moduleValueModel->truncate();
            $moduleValueModel->insertAll($resultData);
        }
        $this->response('success',Code::SUCCESS,$resultData);
    }
}