liuhairui преди 3 седмици
родител
ревизия
aeb6ef850f
променени са 3 файла, в които са добавени 244 реда и са изтрити 69 реда
  1. 98 5
      application/api/controller/PartLib.php
  2. 58 44
      application/api/controller/ProcessLib.php
  3. 88 20
      application/api/controller/Product.php

+ 98 - 5
application/api/controller/PartLib.php

@@ -24,15 +24,66 @@ class PartLib extends Api
 
     /**
      * 新增产品部件库
+     * 支持批量新增,自动生成 BJ000001 格式编码
      */
     public function ParAdd(){
         if (Request::instance()->isPost() == false){
             $this->error('非法请求');
         }
+
         $params = Request::instance()->param();
-        echo "<pre>";
-        print_r($params);
-        echo "<pre>";die;
+
+        $sys_id = $params['sys_id'];
+        $part_list = $params['part_list'];
+
+        if (empty($part_list)) {
+            $this->error('请选择要新增的部件');
+        }
+
+        // 获取表中最大的部件编码
+        // 例如:BJ000007 -> 取 7 -> +1 -> 8 -> 拼接为 BJ000008
+        $maxCode = Db::name('产品_部件库')
+            ->whereNull('mod_rq')
+            ->order('part_code desc')
+            ->value('part_code');
+
+        $nextNum = 1; // 默认从1开始
+        if ($maxCode) {
+            // 提取数字部分并加1
+            $num = intval(str_replace('BJ', '', $maxCode)) + 1;
+            $nextNum = $num;
+        }
+
+        //批量组装数据
+        $insertData = [];
+        foreach ($part_list as $item) {
+            $part_name = $item['part_name'];
+            if (empty($part_name)) continue;
+
+            // 生成格式化编码 (BJ000001)
+            $part_code = 'BJ' . str_pad($nextNum, 6, '0', STR_PAD_LEFT);
+
+            $insertData[] = [
+                'part_code' => $part_code,
+                'part_name' => $part_name,
+                'sys_id' => $sys_id,
+                'sys_rq' => date('Y-m-d H:i:s'),
+                'updatetime' => null,
+                'mod_rq' => null
+            ];
+            $nextNum++; // 序号自增
+        }
+
+        if (empty($insertData)) {
+            $this->error('无有效数据');
+        }
+        $res = Db::name('产品_部件库')->insertAll($insertData);
+
+        if ($res !== false){
+            $this->success('新增成功');
+        }else{
+            $this->error('新增失败');
+        }
     }
 
     /**
@@ -43,10 +94,10 @@ class PartLib extends Api
             $this->error('非法请求');
         }
         $params = Request::instance()->param();
-        $where = [];
 
+        $where = [];
         if (!empty($params['search'])){
-            $where['part_code|part_name|part_type'] = array('like','%'.$params['search'].'%');
+            $where['part_code|part_name'] = array('like','%'.$params['search'].'%');
         }
 
         $limit = $params['limit'];
@@ -57,6 +108,7 @@ class PartLib extends Api
         if (empty($pages)){
             $pages = 1;
         }
+
         $list =  Db::name('产品_部件库')
             ->field('
             id,
@@ -77,13 +129,54 @@ class PartLib extends Api
      * 修改产品部件库
      */
     public function ParEdit(){
+        if (Request::instance()->isPost() == false){
+            $this->error('非法请求');
+        }
+        $params = Request::instance()->param();
+
+        //参数校验
+        if (empty($params['id']) || empty($params['part_name'])) {
+            $this->error('参数不能为空');
+        }
+
+        //修改数据
+        $data = [
+            'part_name' => $params['part_name'],
+            'sys_id' => $params['sys_id'],
+            'updatetime' => date('Y-m-d H:i:s')
+        ];
 
+        $res = Db::name('产品_部件库')
+            ->where('id', $params['id'])
+            ->whereNull('mod_rq')
+            ->update($data);
+        if ($res !== false) {
+            $this->success('修改成功');
+        } else {
+            $this->error('修改失败');
+        }
     }
 
     /**
      * 删除产品部件库
      */
     public function ParDelete(){
+        if (Request::instance()->isPost() == false){
+            $this->error('非法请求');
+        }
+        $params = Request::instance()->param();
+
+        if (empty($params['id'])) {
+            $this->error('请选择要删除的数据');
+        }
 
+        $res = Db::name('产品_部件库')
+            ->where('id', $params['id'])
+            ->update(['mod_rq' => date('Y-m-d H:i:s')]);
+        if ($res !== false) {
+            $this->success('删除成功');
+        } else {
+            $this->error('删除失败');
+        }
     }
 }

+ 58 - 44
application/api/controller/ProcessLib.php

@@ -22,46 +22,63 @@ class ProcessLib extends Api
     }
 
     /**
-     * 新增产品工艺库
+     * 新增产品工艺库(批量新增)
      */
-    public function ProcessAdd(){
-        if (Request::instance()->isPost() == false){
+    public function ProcessAdd()
+    {
+        if (!Request::instance()->isPost()) {
             $this->error('非法请求');
         }
 
         $params = Request::instance()->param();
 
-        // 单条/多条统一处理
-        $insertData = [];
-        if (isset($params['gy_name'])) {
-            $insertData[] = $params;
-        } else {
-            $insertData = $params;
+        // 接收前端传的 列表 + 操作人
+        $sys_id       = $params['sys_id'];
+        $process_list = $params['process_list'];
+
+        // 校验数据
+        if (empty($process_list)) {
+            $this->error('请传入工艺数据');
         }
 
-        // ========== 自动生成 GX 编号 ==========
-        $lastCode = \db('产品_工艺库')->order('id desc')->whereNull('mod_rq')->value('gy_code');
+        // ========== 自动生成 GY 编号 ==========
+        $lastCode = db('产品_工艺库')
+            ->order('id desc')
+            ->whereNull('mod_rq')
+            ->value('gy_code');
 
         if ($lastCode) {
-            $num = intval(str_replace('GX', '', $lastCode)) + 1;
+            $num = intval(str_replace('GY', '', $lastCode)) + 1;
         } else {
-            $num = 1; // 空表从 1 开始
+            $num = 1;
         }
 
-        // 批量生成编号
-        foreach ($insertData as &$item) {
-            $item['gy_code'] = 'GX' . str_pad($num, 6, '0', STR_PAD_LEFT);
-            $item['status'] = 1;
-            $item['create_time'] = date('Y-m-d H:i:s');
+        // ========== 组装批量插入数据 ==========
+        $insertData = [];
+        foreach ($process_list as $item) {
+            // 过滤空数据
+            if (empty($item['gy_name'])) continue;
+
+            $insertData[] = [
+                'gy_code'        => 'GY' . str_pad($num, 6, '0', STR_PAD_LEFT),
+                'gy_name'        => $item['gy_name'],
+                'big_process'    => $item['big_process'],
+                'standard_hour'  => $item['standard_hour'],
+                'standard_score' => $item['standard_score'],
+                'status'         => 1,
+                'sys_id'         => $sys_id,
+                'createtime'         => date('Y-m-d H:i:s')
+            ];
             $num++;
         }
 
-//        echo "<pre>";
-//        print_r($insertData);
-//        echo "<pre>";die;
-        $result = \db('产品_工艺库')->insertAll($insertData);
-
-        return $result ? $this->success('新增成功') : $this->error('新增失败');
+        if (empty($insertData)) {
+            $this->error('无有效数据');
+        }
+        $result = db('产品_工艺库')->insertAll($insertData);
+        return $result
+            ? $this->success('新增成功')
+            : $this->error('新增失败');
     }
 
     /**
@@ -115,28 +132,29 @@ class ProcessLib extends Api
         if (!Request::instance()->isPost()) {
             $this->error('非法请求');
         }
-
-        // 获取前端传参:必须带 id
         $params = Request::instance()->param();
 
-        // 必传参数校验
         if (empty($params['id'])) {
             $this->error('请选择要修改的数据');
         }
+        if (empty($params['gy_name'])) {
+            $this->error('工序名称不能为空');
+        }
 
-        // 不允许修改的字段(如果不需要可以删掉)
-        unset($params['gy_code']);
-        unset($params['create_time']);
-
-        $params['updatetime'] = date('Y-m-d H:i:s');
-//        echo "<pre>";
-//        print_r($params);
-//        echo "<pre>";die;
-        // 执行更新
-        $result = \db('产品_工艺库')
+        //修改数据
+        $data = [
+            'gy_name'        => $params['gy_name'],
+            'big_process'    => $params['big_process'],
+            'standard_hour'  => $params['standard_hour'],
+            'standard_score' => $params['standard_score'],
+            'sys_id'         => $params['sys_id'],
+            'updatetime'     => date('Y-m-d H:i:s')
+        ];
+
+        $result = db('产品_工艺库')
             ->where('id', $params['id'])
-            ->update($params);
-
+            ->whereNull('mod_rq')
+            ->update($data);
         if ($result !== false) {
             $this->success('修改成功');
         } else {
@@ -145,8 +163,7 @@ class ProcessLib extends Api
     }
 
     /**
-     * 删除产品工艺库(软删除,修改mod_rq=1)
-     * 支持单条 / 多条删除,前端传 id 逗号分隔
+     * 删除产品工艺库
      */
     public function ProcessDelete(){
         if (!Request::instance()->isPost()) {
@@ -155,19 +172,16 @@ class ProcessLib extends Api
 
         $params = Request::instance()->param();
 
-        // 接收前端传的 id 字符串:1,2,3
         $ids = $params['id'] ?? '';
         if (empty($ids)) {
             $this->error('请选择需要删除的数据');
         }
-
         // 转成数组
         $idArray = explode(',', $ids);
 
         $result = \db('产品_工艺库')
             ->where('id', 'in', $idArray)
             ->update(['mod_rq' => date('Y-m-d H:i:s')]);
-
         if ($result !== false) {
             $this->success('删除成功');
         } else {

+ 88 - 20
application/api/controller/Product.php

@@ -47,11 +47,16 @@ class Product extends Api
         }
         $params['product_code'] = 'CP' . str_pad($num, 6, '0', STR_PAD_LEFT);
 
-        $params['Sys_id'] = session('admin_id'); // 或写死 admin
-        $params['Sys_rq'] = date('Y-m-d H:i:s');
-        $params['mod_rq'] = 0;
+        $data = [];
+        $data['product_code'] = $params['product_code'];
+        $data['product_name'] = $params['product_name'];
+        $data['product_type'] = $params['product_type'];
+        $data['unit'] = $params['unit'];
+        $data['Sys_id'] = $params['sys_id'];
+        $data['status'] = 1;
+        $data['Sys_rq'] = date('Y-m-d H:i:s');
 
-        $result = \db('产品_基本资料')->insert($params);
+        $result = \db('产品_基本资料')->insert($data);
 
         if ($result) {
             $this->success('新增成功');
@@ -97,33 +102,87 @@ class Product extends Api
     }
 
     /**
-     * 获取产品资料列表
+     * 获取产品资料列表(产品→部件→工艺 三层编号关联)
      */
     public function ProductList()
     {
-        if (Request::instance()->isGet() == false){
+        if (!Request::instance()->isGet()) {
             $this->error('非法请求');
         }
+
         $params = Request::instance()->param();
 
         $where = [];
+        if (!empty($params['search'])) {
+            $where['product_code|product_name|product_type'] = array('like', '%'.$params['search'].'%');
+        }
 
-        if (!empty($params['search'])){
-            $where['product_code|product_name|product_type'] = array('like','%'.$params['search'].'%');
+        $limit = empty($params['limit']) ? 30 : $params['limit'];
+        $pages = empty($params['page']) ? 1 : $params['page'];
+
+        // 1. 查询产品主表
+        $productList = db('产品_基本资料')
+            ->whereNull('mod_rq')
+            ->where($where)
+            ->page($pages, $limit)
+            ->order('id desc')
+            ->select();
+
+        if (empty($productList)) {
+            $this->success('获取成功', ['list' => [], 'count' => 0]);
         }
-        $limit = $params['limit'];
-        if (empty($limit)){
-            $limit = 30;
+
+        // 提取产品编号
+        $productCodes = array_column($productList, 'product_code');
+
+        // 2. 查询部件(通过 product_code)
+        $parts = db('产品_部件资料')
+            ->whereNull('mod_rq')
+            ->whereIn('product_code', $productCodes)
+            ->select();
+
+        // 提取部件编码 part_code
+        $partCodes = array_column($parts, 'part_code');
+        // 3. 查询工艺(通过 part_code)
+        $process = [];
+        if (!empty($partCodes)) {
+            $process = db('产品_工艺资料')
+                ->whereNull('mod_rq')
+                ->whereIn('part_code', $partCodes)
+                ->select();
         }
-        $pages = $params['page'];
-        if (empty($pages)){
-            $pages = 1;
+
+        // 部件按 product_code 分组
+        $partGroup = [];
+        foreach ($parts as $val) {
+            $partGroup[$val['product_code']][] = $val;
         }
-        $list = \db('产品_基本资料')->whereNull('mod_rq')->where($where)->page($pages)->limit($limit)->order('id desc')->select();
 
-        $count = \db('产品_基本资料')->whereNull('mod_rq')->where($where)->page($pages)->limit($limit)->count();
+        // 工艺按 part_code 分组
+        $processGroup = [];
+        foreach ($process as $val) {
+            $processGroup[$val['part_code']][] = $val;
+        }
 
-        $this->success('获取成功', ['list' => $list, 'count' => $count]);
+        // 组装数据
+        foreach ($productList as &$product) {
+            $currentParts = $partGroup[$product['product_code']] ?? [];
+            foreach ($currentParts as &$item) {
+                $item['processes'] = $processGroup[$item['part_code']] ?? [];
+            }
+            $product['parts'] = $currentParts;
+        }
+
+        // 统计总数
+        $count = db('产品_基本资料')
+            ->whereNull('mod_rq')
+            ->where($where)
+            ->count();
+
+        $this->success('获取成功', [
+            'list' => $productList,
+            'count' => $count
+        ]);
     }
 
     /**
@@ -134,7 +193,6 @@ class Product extends Api
         if (!Request::instance()->isPost()) {
             $this->error('非法请求');
         }
-
         $params = Request::instance()->param();
 
         if (empty($params['id'])) {
@@ -144,9 +202,19 @@ class Product extends Api
         // 禁止修改编号
         unset($params['product_code']);
 
+        $data = [];
+        $data['product_name'] = $params['product_name'];
+        $data['product_type'] = $params['product_type'];
+        $data['unit'] = $params['unit'];
+        $data['Sys_id'] = $params['sys_id'];
+        $data['updatetime'] = date('Y-m-d H:i:s');
+        echo "<pre>";
+        print_r($data);
+        echo "<pre>";die;
+
         $result = \db('产品_基本资料')
             ->where('id', $params['id'])
-            ->update($params);
+            ->update($data);
 
         if ($result !== false) {
             $this->success('修改成功');
@@ -173,7 +241,7 @@ class Product extends Api
 
         $result = \db('产品_基本资料')
             ->where('id', 'in', $ids)
-            ->update(['mod_rq' => 1]);
+            ->update(['mod_rq' => date('Y-m-d H:i:s')]);
 
         if ($result !== false) {
             $this->success('删除成功');