liuhairui 8 miesięcy temu
rodzic
commit
d630a63f4e

+ 5 - 6
application/api/controller/Index.php

@@ -1149,11 +1149,6 @@ class Index extends Controller{
 
 
 
-
-
-
-    //下面接口已写好-----暂时未用到
-
     /**
      *当日班组报工产量【缓存】
      * 建议缓存时间,5--10分钟自动更新一次
@@ -1202,7 +1197,7 @@ class Index extends Controller{
         echo date("Y-m-d H:i:s") . ' 存进去了';
     }
 
-    //车缝当日报工数量
+    //当日报工数量
     public function GroupMachineCFyi()
     {
         $redis = redis(); // 连接 Redis
@@ -1287,6 +1282,10 @@ class Index extends Controller{
         return json($res); // 返回最终的 JSON 数据
     }
 
+
+
+    //下面接口已写好-----暂时未用到
+
     //板房车缝当日报工数量
     public function GroupMachinebfCFyi()
     {

+ 227 - 9
application/api/controller/WorkOrder.php

@@ -1568,6 +1568,7 @@ class WorkOrder extends Api
         $params = $this->request->param();
         $updateData = [
             'mod_rq' => date('Y-m-d H:i:s'),
+            'mod_id' => $params['登录用户'],
         ];
         $res = \db('工单_相关附件')->where('UniqId', $params['UniqId'])->update($updateData);
         if ($res) {
@@ -2432,10 +2433,15 @@ class WorkOrder extends Api
             ->join('工单_面料资料 b','a.order_id = b.BOM_工单编号 AND b.BOM_物料编码 = a.物料编码')
             ->join('物料_库存 c','a.物料编码 = c.物料编号 AND a.批次号 = c.批次号')
             ->where('a.receipt_number',$param['receipt'])
-            ->field('a.order_id as 订单编号,a.款号,a.物料名称,a.number as 数量,a.rq as 日期,a.sys_id as 操作机台,
-            a.departname,a.remark,
-            a.receipt_number as 出库单据编号,a.recipient as 领用人员,b.BOM_颜色,c.单位,b.BOM_计划门幅 as 计划门幅,
-            b.BOM_定额门幅 as 定额门幅,c.实际门幅,c.状态,c.库存数量,c.入仓总量')
+            ->field('a.id,a.order_id as 订单编号,a.款号,a.物料名称,a.number as 数量,a.rq as 日期,a.sys_rq as 创建日期,a.sys_id as 操作机台,
+                a.departname,a.remark,a.type as 退还类型,
+                a.receipt_number as 出库单据编号,a.recipient as 领用人员,b.BOM_颜色,c.单位,
+                b.BOM_计划用量 as 计划用料,
+                b.BOM_计划门幅 as 计划门幅,
+                b.BOM_标准用量 as 定额用料,
+                b.BOM_定额门幅 as 定额门幅,
+                c.实际门幅,c.状态,c.库存数量,c.入仓总量
+            ')
             ->whereNull('a.Mod_rq')
             ->select();
         if (empty($list)){
@@ -2470,7 +2476,7 @@ class WorkOrder extends Api
             ->where('Mod_rq', null)
             ->where($where)
             ->where('name',$param['code'])
-            ->order('rq desc')
+            ->order('sys_rq desc')
             ->limit(($page-1)*$limit,$limit)
             ->select();
         // 初始化一个合并后的数组
@@ -2489,6 +2495,7 @@ class WorkOrder extends Api
                     '物料名称' => $item['物料名称'],
                     '总数' => floatval($item['number']),
                     '日期' => $item['rq'],
+                    '创建日期' => $item['sys_rq'],
                     '操作机台' => $item['sys_id'],
                     '领料人员' => $item['recipient'],
                 ];
@@ -2603,10 +2610,6 @@ class WorkOrder extends Api
 
     /**
      * 面料批次列表
-     * @return void
-     * @throws \think\db\exception\DataNotFoundException
-     * @throws \think\db\exception\ModelNotFoundException
-     * @throws \think\exception\DbException
      */
     public function FabricLotList()
     {
@@ -2653,4 +2656,219 @@ class WorkOrder extends Api
         }
     }
 
+
+    /**
+     * 仓库管理
+     * 入库、出库、退还更新
+     */
+    public function rApictedit()
+    {
+        if (!$this->request->isPost()) {
+            $this->error('请求错误');
+        }
+
+        $param = Request::instance()->post();
+        if (empty($param)) {
+            $this->error('参数错误');
+        }
+
+        $logData = []; // 日志记录数组
+        $now = date('Y-m-d H:i:s');
+
+        foreach ($param as $item) {
+            $id = $item['id'] ?? null;
+            $newQty = floatval($item['数量'] ?? 0);
+            $name = $item['name'] ?? '';
+            $returnType = $item['退还类型'] ?? '';
+            $sysId = $item['sys_id'] ?? '未知用户';
+
+            if (!$id || !$name) {
+                $this->error('缺少必要参数');
+            }
+
+            // 获取设备_报工日志 原记录
+            $record = \db('设备_报工日志')
+                ->field('id, 批次号, number, type')
+                ->where('name', $name)
+                ->where('id', $id)
+                ->find();
+
+            if (!$record) {
+                $this->error("未找到 ID 为 {$id} 的记录");
+            }
+
+            $batchNo = $record['批次号'];
+            $oldQty = floatval($record['number']);
+            $diff = $newQty - $oldQty;
+
+            // === 修改设备_报工日志.number(如果有变化) ===
+            if ($diff != 0) {
+                $updateSql = \db('设备_报工日志')
+                    ->where('id', $id)
+                    ->where('name', $name)
+                    ->fetchSql(true)
+                    ->update(['number' => $newQty]);
+
+                \db()->query($updateSql); // 执行 SQL
+
+                // 写入日志,增加 ids 字段
+                $logData[] = [
+                    '批次号' => $batchNo,
+                    '操作字段' => 'number',
+                    '原值' => $oldQty,
+                    '新值' => $newQty,
+                    '操作人' => $sysId,
+                    '操作类型' => $name,
+                    '操作时间' => $now,
+                    '修改表' => '设备_报工日志',
+                    'ids' => $id
+                ];
+            }
+
+            // === 获取同批次的记录以统计新合计 ===
+            $sameBatchList = \db('设备_报工日志')
+                ->field('number')
+                ->where('name', $name)
+                ->where('批次号', $batchNo)
+                ->select();
+
+            $newTotal = array_sum(array_column($sameBatchList, 'number'));
+
+            // === 获取物料_库存信息(加上 id 字段) ===
+            $inventory = \db('物料_库存')
+                ->field('id, 入仓总量, 领用数量, 库存数量, 退还数量')
+                ->where('批次号', $batchNo)
+                ->find();
+
+            if ($inventory) {
+                $stockId = $inventory['id']; // 记录当前库存表的 id
+                $inQty = floatval($inventory['入仓总量']);
+                $stockQty = floatval($inventory['库存数量']);
+                $useQty = floatval($inventory['领用数量']);
+                $returnQty = floatval($inventory['退还数量']);
+
+                if ($name == '入库') {
+                    $newIn = $inQty + $diff;
+                    $newStock = $stockQty + $diff;
+
+                    $updateFields = [];
+
+                    if ($newIn != $inQty) {
+                        $updateFields['入仓总量'] = $newIn;
+
+                        $logData[] = [
+                            '批次号' => $batchNo,
+                            '操作字段' => '入仓总量',
+                            '原值' => $inQty,
+                            '新值' => $newIn,
+                            '操作人' => $sysId,
+                            '操作类型' => '入库',
+                            '操作时间' => $now,
+                            '修改表' => '物料_库存',
+                            'ids' => $stockId
+                        ];
+                    }
+
+                    if ($newStock != $stockQty) {
+                        $updateFields['库存数量'] = $newStock;
+
+                        $logData[] = [
+                            '批次号' => $batchNo,
+                            '操作字段' => '库存数量',
+                            '原值' => $stockQty,
+                            '新值' => $newStock,
+                            '操作人' => $sysId,
+                            '操作类型' => '入库',
+                            '操作时间' => $now,
+                            '修改表' => '物料_库存',
+                            'ids' => $stockId
+                        ];
+                    }
+
+                    if (!empty($updateFields)) {
+                        $updateStockSql = \db('物料_库存')
+                            ->where('id', $stockId)
+                            ->fetchSql(true)
+                            ->update($updateFields);
+
+                        \db()->query($updateStockSql);
+                    }
+                }
+
+                elseif ($name == '出库') {
+                    if ($newTotal != $useQty) {
+                        // 计算新的库存数量
+                        $newStock = $inQty - $newTotal + $returnQty; // 入仓 - 领用 + 退还(可选)
+
+                        $updateFields = [
+                            '领用数量' => $newTotal,
+                            '库存数量' => $newStock
+                        ];
+
+                        $updateStockSql = \db('物料_库存')
+                            ->where('id', $stockId)
+                            ->fetchSql(true)
+                            ->update($updateFields);
+
+                        \db()->query($updateStockSql);
+
+                        $logData[] = [
+                            '批次号' => $batchNo,
+                            '操作字段' => '领用数量',
+                            '原值' => $useQty,
+                            '新值' => $newTotal,
+                            '操作人' => $sysId,
+                            '操作类型' => '出库',
+                            '操作时间' => $now,
+                            '修改表' => '物料_库存',
+                            'ids' => $stockId
+                        ];
+
+                        $logData[] = [
+                            '批次号' => $batchNo,
+                            '操作字段' => '库存数量',
+                            '原值' => $stockQty,
+                            '新值' => $newStock,
+                            '操作人' => $sysId,
+                            '操作类型' => '出库',
+                            '操作时间' => $now,
+                            '修改表' => '物料_库存',
+                            'ids' => $stockId
+                        ];
+                    }
+                }
+
+                elseif ($name == '退还') {
+                    if ($returnType == '退面料' && $newTotal != $returnQty) {
+                        $updateStockSql = \db('物料_库存')
+                            ->where('id', $stockId)
+                            ->fetchSql(true)
+                            ->update(['退还数量' => $newTotal]);
+
+                        \db()->query($updateStockSql);
+
+                        $logData[] = [
+                            '批次号' => $batchNo,
+                            '操作字段' => '退还数量',
+                            '原值' => $returnQty,
+                            '新值' => $newTotal,
+                            '操作人' => $sysId,
+                            '操作类型' => '退还',
+                            '操作时间' => $now,
+                            '修改表' => '物料_库存',
+                            'ids' => $stockId
+                        ];
+                    }
+                }
+            }
+        }
+
+        // 批量写入日志
+        if (!empty($logData)) {
+            \db('物料_库存日志')->insertAll($logData);
+        }
+
+        $this->success('更新成功');
+    }
+
 }

+ 4 - 57
application/api/controller/WorkOrderSpotCheck.php

@@ -2798,7 +2798,7 @@ class WorkOrderSpotCheck extends Api{
             ->join('工单关联表 c','b.BOM_物料编码 = c.物料编号 AND b.BOM_工单编号 = c.订单编号')
             ->field('a.批次号,c.关联编号,b.BOM_物料编码,b.BOM_物料名称,a.入仓总量,a.库存数量,a.领用数量,a.退还数量,a.单位,a.实际门幅,
             a.departname,
-            b.BOM_工单编号,b.BOM_颜色,b.BOM_计划门幅,b.BOM_定额门幅,b.BOM_计划用量 as 计划用料,b.BOM_标准用量 as 定额用料')
+            b.BOM_工单编号,b.BOM_颜色,b.BOM_计划门幅 as 计划门幅,b.BOM_定额门幅,b.BOM_计划用量 as 计划用料,b.BOM_标准用量 as 定额用料')
             ->where('c.关联编号',$param['关联编号'])
             ->where('c.订单编号',$param['订单编号'])
             ->where('b.BOM_物料编码',$param['物料编码'])
@@ -2861,8 +2861,8 @@ class WorkOrderSpotCheck extends Api{
                 'departname'  => $item['departname'],
                 'remark' => isset($item['remark']) ? $item['remark'] : '',
                 'sys_rq'   => date('Y-m-d H:i:s'),
-                '退还数量' => $returnQuantity, // 确保数据不会被覆盖
-                '库存数量' => $stockQuantity, // 确保数据不会被覆盖
+                '退还数量' => $returnQuantity,
+                '库存数量' => $stockQuantity,
             ];
 
             $InventorySql = \db('物料_库存')
@@ -2890,66 +2890,13 @@ class WorkOrderSpotCheck extends Api{
                 'remark' => isset($item['remark']) ? $item['remark'] : '',
                 '客户编号'     => $item['客户编号'],
                 '款式'        => $item['款式'],
+                'type' =>  $item['type'],
                 'sys_rq'      => date('Y-m-d H:i:s'),
             ];
             $sql = \db('设备_报工日志')->fetchSql(true)->insert($ReportData);
             \db()->query($sql);
         }
         $this->success('成功');
-//        foreach ($param as $item){
-//            //搜索批次号库存表中中数据
-//            $number = \db('物料_库存')
-//                ->where('批次号',$item['批次号'])
-//                ->where('关联号',$item['关联编号'])
-//                ->where('物料编号',$item['物料编码'])
-//                ->field('库存数量,退还数量')
-//                ->find();
-//            if ($item['type'] === '退面料'){
-//                //构建库存表数据
-//                $InventoryData = [
-//                    '退还数量' => $number['退还数量'] + (int)$item['number'],
-//                    '库存数量' => $number['库存数量'] + (int)$item['number'],
-//                ];
-//            }elseif ($item['type'] === '退厂商'){
-//                $InventoryData = [
-//                    '退还数量' => $number['退还数量'],
-//                    '库存数量' => $number['库存数量'] - (int)$item['number'],
-//                ];
-//            }else{
-//                $InventoryData = [
-//                    '退还数量' => $number['退还数量'],
-//                    '库存数量' => $number['库存数量'],
-//                ];
-//            }
-//            $ReportData = $item;
-//            unset($ReportData['关联编号']);
-//            unset($ReportData['实际门幅']);
-//            $ReportData['批次号'] = $item['批次号'];
-//            $ReportData['rq'] = date('Y-m-d H:i:s',time());
-//            $ReportData['库存数量'] = $InventoryData['库存数量'];
-//            //创建事务,存储库存表数据和入库报工表数据
-//            db()->startTrans();
-//            try {
-//                //存储库存表数据
-//                $InventorySql = \db('物料_库存')
-//                    ->where('批次号',$item['批次号'])
-//                    ->where('关联号',$item['关联编号'])
-//                    ->where('物料编号',$item['物料编码'])
-//                    ->fetchSql(true)
-//                    ->update($InventoryData);
-//                \db()->query($InventorySql);
-//                //存储入库报工表数据
-//                $ReportSql = \db('设备_报工日志')->fetchSql(true)->insert($ReportData);
-//                \db()->query($ReportSql);
-//
-//                //提交事务
-//                \db()->commit();
-//            }catch (\Exception $e){
-//                \db()->rollback();
-//                $this->error($e->getMessage());
-//            }
-//        }
-//        $this->success('成功');
     }
 
 }