Ver Fonte

Merge branch 'master' of https://git.7in6.com/zck2422052614/mes-server-api

zck há 1 semana atrás
pai
commit
a944bd1597

+ 41 - 1
application/api/controller/MachineProductionReport.php

@@ -874,12 +874,32 @@ class MachineProductionReport extends Api
             'sczl_rate6','sczl_rate7','sczl_rate8','sczl_rate9','sczl_rate10'
         ];
         $data = [];
+        $process = db('工单_工艺资料')
+            ->where([
+                'Gy0_gdbh' => $req['sczl_gdbh'],
+                'Gy0_yjno' => $req['sczl_yjno'],
+            ])
+            ->field("CONCAT(
+                LPAD(CAST(TRIM(Gy0_gxh) AS UNSIGNED), 2, '0'), 
+                '-', 
+                TRIM(Gy0_gxmc)
+            ) as Gy0_gxmc,Gy0_gxh")
+            ->select();
         foreach ($arr as $key => $value){
             if (!(isset($req[$value]))){
                 $this->error('参数错误',$value,$key+1);
             }
             $data[$value] = $req[$value];
         }
+        $i = 0;
+        foreach ($process as $key => $value){
+            if ($data['sczl_gxh'] === $value['Gy0_gxh'] && $data['sczl_gxmc'] !== $value['Gy0_gxmc']){
+                $i++;
+            }
+        }
+        if ($i !== 0){
+            $this->error('工序编号错误,请调整之后再提交');
+        }
         $data['sys_rq'] = date('Y-m-d H:i:s');
 
         //查询UniqId
@@ -930,12 +950,32 @@ class MachineProductionReport extends Api
             'sczl_rate6','sczl_rate7','sczl_rate8','sczl_rate9','sczl_rate10'
         ];
         $data = [];
+        $process = db('工单_工艺资料')
+            ->where([
+                'Gy0_gdbh' => $req['sczl_gdbh'],
+                'Gy0_yjno' => $req['sczl_yjno'],
+            ])
+            ->field("CONCAT(
+                LPAD(CAST(TRIM(Gy0_gxh) AS UNSIGNED), 2, '0'), 
+                '-', 
+                TRIM(Gy0_gxmc)
+            ) as Gy0_gxmc,Gy0_gxh")
+            ->select();
         foreach ($arr as $key => $value){
             if (!(isset($req[$value]))){
-                continue;
+                $this->error('参数错误',$value,$key+1);
             }
             $data[$value] = $req[$value];
         }
+        $i = 0;
+        foreach ($process as $key => $value){
+            if ($data['sczl_gxh'] === $value['Gy0_gxh'] && $data['sczl_gxmc'] !== $value['Gy0_gxmc']){
+                $i++;
+            }
+        }
+        if ($i !== 0){
+            $this->error('工序编号错误,请调整之后再提交');
+        }
         $data['mod_rq'] = date('Y-m-d H:i:s');
 
         //开启事务

Diff do ficheiro suprimidas por serem muito extensas
+ 692 - 437
application/api/controller/OrderSuperLoss.php


+ 1 - 0
application/api/controller/WorkOrderVerification.php

@@ -342,6 +342,7 @@ class WorkOrderVerification extends Api
         }
         $params = Request::instance()->param();
         $where['分类'] = '废品分类';
+        $where['禁用状态'] = 1;
         if (!empty($params['search'])){
             $where['名称'] = array('like','%'.$params['search'].'%');
         }

+ 9 - 1
application/extra/queue.php

@@ -20,6 +20,7 @@ return [
     'host'       => '127.0.0.1',      // redis 主机ip
     'port'       => 6379,            // redis 端口
     'password'   => '123456',               // redis 密码
+    'select'     => 0,               // 默认队列库:db0(除工资队列外)
     'timeout'    => 0,               // redis连接的超时时间
     'persistent' => false,
 
@@ -34,11 +35,18 @@ return [
         ],
         // 成本计算队列(新增队列)
         'cost_calculation' => [
-            'select'     => 14,
+            'select'     => 0,
             'expire' => 1800,        // 半小时超时
             'delay'  => 0,           // 立即执行
             'retry'  => 3,           // 重试次数
         ],
+        // 工单超节损队列
+        'order_loss_calculation' => [
+            'select'     => 0,
+            'expire' => 1800,
+            'delay'  => 0,
+            'retry'  => 3,
+        ],
         // 低优先级队列
         'low_priority' => [
             'expire' => 3600,        // 1小时超时

+ 8 - 3
application/job/OrderLossQueueWorker.php

@@ -23,8 +23,8 @@ class OrderLossQueueWorker
         $options = [
             'host'       => '127.0.0.1',
             'port'       => 6379,
-            'password'   => '',
-            'select'     => 14,
+            'password'   => '123456',
+            'select'     => 0,
             'timeout'    => 0,
             'expire'     => 0,
             'persistent' => false,
@@ -102,8 +102,13 @@ class OrderLossQueueWorker
             ->where('印件及工序', $task['yjno'])
             ->delete();
 
-        Db::name('工单_质量考核汇总')
+        $insertSql = Db::name('工单_质量考核汇总')
+            ->fetchSql(true)
             ->insertAll($result);
+        $insertRes = Db::query($insertSql);
+        if ($insertRes === false) {
+            throw new \RuntimeException("超节损队列插入失败: {$task['gdbh']}-{$task['yjno']}");
+        }
     }
 
     private function updateProgress($batchId)

+ 56 - 0
application/job/OrderSuperLossJob.php

@@ -0,0 +1,56 @@
+<?php
+
+namespace app\job;
+
+use app\api\controller\OrderSuperLoss;
+use think\Db;
+use think\Log;
+
+class OrderSuperLossJob
+{
+    /**
+     * 队列消费入口(ThinkPHP queue fire)
+     * @param $job
+     * @param array $data
+     */
+    public function fire($job, $data)
+    {
+        try {
+            if (empty($data['gdbh']) || empty($data['yjno'])) {
+                Log::error('超节损队列参数缺失: ' . json_encode($data, JSON_UNESCAPED_UNICODE));
+                $job->delete();
+                return;
+            }
+
+            $api = new OrderSuperLoss();
+            $result = $api->OneOrderSuperLoss($data['gdbh'], $data['yjno']);
+
+            if (empty($result) || !is_array($result)) {
+                Log::warning('超节损队列无可写入数据: ' . $data['gdbh'] . '-' . $data['yjno']);
+                $job->delete();
+                return;
+            }
+
+            Db::name('工单_质量考核汇总')
+                ->where('Gy0_gdbh', $data['gdbh'])
+                ->where('印件及工序', $data['yjno'])
+                ->delete();
+
+            $insertSql = Db::name('工单_质量考核汇总')
+                ->fetchSql(true)
+                ->insertAll($result);
+            $insertRes = Db::query($insertSql);
+            if ($insertRes === false) {
+                throw new \RuntimeException('超节损队列写入失败');
+            }
+            $job->delete();
+        } catch (\Throwable $e) {
+            Log::error('超节损队列执行失败: ' . $e->getMessage() . '; data=' . json_encode($data, JSON_UNESCAPED_UNICODE));
+            if ($job->attempts() >= 3) {
+                $job->delete();
+            } else {
+                $job->release(10);
+            }
+        }
+    }
+}

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff