unknown před 1 dnem
rodič
revize
622f31e30b
1 změnil soubory, kde provedl 59 přidání a 56 odebrání
  1. 59 56
      application/api/controller/WorkOrderSpotCheck.php

+ 59 - 56
application/api/controller/WorkOrderSpotCheck.php

@@ -2985,29 +2985,31 @@ class WorkOrderSpotCheck extends Api{
             $this->error('参数错误');
         }
 
-        // 开启事务
-        Db::startTrans();
+        \db()->startTrans();
 
         try {
-            //获取最大批次号(兼容 GDGL 前缀)
-            $lastBatch = Db::name('物料_库存')
+            $sysRq = date('Y-m-d H:i:s');
+
+            // 获取最大批次号(兼容 GDGL 前缀)
+            $lastBatch = \db('物料_库存')
                 ->where('批次号', 'like', 'GDGL%')
                 ->orderRaw('CAST(SUBSTRING(批次号, 5) AS UNSIGNED) DESC')
                 ->value('批次号');
 
             $currentNumber = $lastBatch ? intval(substr($lastBatch, 4)) : 0;
 
-            $insertInventory = []; // 新入库
-            $updateInventory = []; // 更新库存
-            $insertLogs = [];      // 出入库日志
+            $insertInventory = [];
+            $insertLogs = [];
 
             foreach ($param as $item) {
                 if (empty($item['物料编码']) || empty($item['关联编号']) || !isset($item['number']) || !is_numeric($item['number']) || $item['number'] <= 0) {
                     continue;
                 }
 
+                $qty = intval($item['number']);
+
                 // 唯一KEY:物料编码 + 物料名称 + 关联号 + 未删除
-                $existingBatch = Db::name('物料_库存')
+                $existingBatch = \db('物料_库存')
                     ->where('物料编号', $item['物料编码'])
                     ->where('物料名称', $item['物料名称'])
                     ->where('关联号', $item['关联编号'])
@@ -3015,79 +3017,80 @@ class WorkOrderSpotCheck extends Api{
                     ->value('批次号');
 
                 if ($existingBatch) {
-                    //更新库存
                     $updateData = [
-                        '入仓总量'    => Db::raw('入仓总量 + ' . intval($item['number'])),
-                        '库存数量'    => Db::raw('库存数量 + ' . intval($item['number'])),
-                        '实际门幅'    => $item['实际门幅'],
-                        'departname'  => $item['departname'],
-                        'remark'      => $item['remark'] ?? '',
-                        'sys_rq'      => date('Y-m-d H:i:s'),
+                        '入仓总量'   => Db::raw('入仓总量 + ' . $qty),
+                        '库存数量'   => Db::raw('库存数量 + ' . $qty),
+                        '实际门幅'   => $item['实际门幅'],
+                        'departname' => $item['departname'],
+                        'remark'     => $item['remark'] ?? '',
+                        'sys_rq'     => $sysRq,
                     ];
-
-                    Db::name('物料_库存')
+                    $sql = \db('物料_库存')
                         ->where('批次号', $existingBatch)
+                        ->fetchSql(true)
                         ->update($updateData);
+                    \db()->query($sql);
 
                     $BatchNumber = $existingBatch;
                 } else {
-                    //新增库存
                     $currentNumber++;
                     $BatchNumber = 'GDGL' . $currentNumber;
 
                     $insertInventory[] = [
-                        '批次号'      => $BatchNumber,
-                        '关联号'      => $item['关联编号'],
-                        '物料编号'    => $item['物料编码'],
-                        '物料名称'    => $item['物料名称'],
-                        '入仓总量'    => $item['number'],
-                        '库存数量'    => $item['number'],
-                        '单位'        => $item['单位'],
-                        '实际门幅'    => $item['实际门幅'],
-                        '状态'        => 1,
-                        'departname'  => $item['departname'],
-                        'remark'      => $item['remark'] ?? '',
-                        'sys_id'      => $item['sys_id'],
-                        'sys_rq'      => date('Y-m-d H:i:s'),
+                        '批次号'     => $BatchNumber,
+                        '关联号'     => $item['关联编号'],
+                        '物料编号'   => $item['物料编码'],
+                        '物料名称'   => $item['物料名称'],
+                        '入仓总量'   => $qty,
+                        '库存数量'   => $qty,
+                        '单位'       => $item['单位'],
+                        '实际门幅'   => $item['实际门幅'],
+                        '状态'       => 1,
+                        'departname' => $item['departname'],
+                        'remark'     => $item['remark'] ?? '',
+                        'sys_id'     => $item['sys_id'],
+                        'sys_rq'     => $sysRq,
                     ];
                 }
 
-                //日志
                 $insertLogs[] = [
-                    '批次号' => $BatchNumber,
-                    'order_id' => $item['order_id'],
-                    '款号' => $item['款号'],
-                    '物料编码' => $item['物料编码'],
-                    '物料名称' => $item['物料名称'],
-                    '库存数量' => $item['number'],
-                    'number' => $item['number'],
-                    'rq' => $item['rq'],
-                    'name' => $item['name'],
-                    'sys_id' => $item['sys_id'],
-                    'receipt_number' => $item['receipt_number'],
-                    'departname' => $item['departname'],
-                    'remark' => $item['remark'] ?? '',
-                    '客户编号' => $item['客户编号'],
-                    '款式' => $item['款式'],
-                    'sys_rq' => date('Y-m-d H:i:s'),
+                    '批次号'           => $BatchNumber,
+                    'order_id'         => $item['order_id'],
+                    '款号'             => $item['款号'],
+                    '物料编码'         => $item['物料编码'],
+                    '物料名称'         => $item['物料名称'],
+                    '库存数量'         => $qty,
+                    'number'           => $qty,
+                    'rq'               => $item['rq'],
+                    'name'             => $item['name'],
+                    'sys_id'           => $item['sys_id'],
+                    'receipt_number'   => $item['receipt_number'],
+                    'departname'       => $item['departname'],
+                    'remark'           => $item['remark'] ?? '',
+                    '客户编号'         => $item['客户编号'],
+                    '款式'             => $item['款式'],
+                    'sys_rq'           => $sysRq,
                 ];
             }
 
-            // 批量新增
-            if (!empty($insertInventory)) {
-                Db::name('物料_库存')->fetchSql(true)->insert($insertInventory);
+            if (empty($insertLogs)) {
+                \db()->rollback();
+                $this->error('无有效入库数据');
             }
 
-            // 批量日志
-            if (!empty($insertLogs)) {
-                Db::name('库存_出入库明细')->fetchSql(true)->insert($insertLogs);
+            if (!empty($insertInventory)) {
+                $sql = \db('物料_库存')->fetchSql(true)->insert($insertInventory);
+                \db()->query($sql);
             }
 
-            Db::commit();
+            $sql = \db('库存_出入库明细')->fetchSql(true)->insert($insertLogs);
+            \db()->query($sql);
+
+            \db()->commit();
             $this->success('入库成功');
 
         } catch (\Exception $e) {
-            Db::rollback();
+            \db()->rollback();
             $this->error('操作失败:' . $e->getMessage());
         }
     }