Преглед изворни кода

成品入仓、印件操作日志优化

qiuenguang пре 2 дана
родитељ
комит
3d610f218c

+ 2 - 2
application/api/controller/FinishedProductWarehousing.php

@@ -1208,11 +1208,11 @@ public function getList()
 
         $rows2 = db('成品入仓')
             ->where('jjcp_sj','>=',$date)
-            ->where('jjcp_smb','<>','末 板')
             ->group('jjcp_gdbh, jjcp_cpdh')
+            ->having("SUM(CASE WHEN jjcp_smb LIKE '%末%' THEN 1 ELSE 0 END) = 0")
             ->column("CONCAT( jjcp_gdbh, '-',  jjcp_yjno) AS gdyj, max(jjcp_smb) as jjcp_smb,
             sum(jjcp_sl) as jjcp_sls, left(max(jjcp_sj),10) as jjcp_sj,UniqId");
-
+        
         $data = [];
         foreach($data1 as $key=>$value){
             if(array_key_exists($key,$rows2)){

+ 111 - 43
application/api/controller/WorkOrder.php

@@ -786,43 +786,6 @@ class WorkOrder extends Api
         }else{
             $this->error('失败');
         }
-//        $UniqId = [];
-//        $lastId = \db('工单_工艺资料')->field('rtrim(UniqId) as id')->order('UniqId desc')->find();
-//        if ($lastId['id']>10000000){
-//            $lastUniqId = $lastId['id'];
-//        }else{
-//            $lastUniqId = 10000000;
-//        }
-//        foreach ($param as $key=>$value){
-//            $UniqId[$key] = $value['UniqId'];
-//        }
-//        $processList = \db('工单_工艺资料')->where('UniqId','in',$UniqId)->select();
-//        if (empty($processList)){
-//            $this->success('未找到工艺资料');
-//        }
-//        halt($processList);
-//        $data = [];
-//        foreach ($param as $key=>$value){
-//            foreach ($processList as $k=>$v){
-//                if ($value['UniqId'] = $v['UniqId']){
-//                    $data[$key] = $v;
-//                    $data[$key]['Gy0_gxh'] = $value['gxh'];
-//                    $data[$key]['Gy0_gdbh'] = $value['workOrder'];
-//                    $data[$key]['UniqId'] = $lastUniqId + $key + 1;
-//                }
-//            }
-//        }
-//        $res = \db('工单_工艺资料')->where(['Gy0_gdbh'=>$param[0]['workOrder']])->delete();
-//        if ($res !== false){
-//            $result = \db('工单_工艺资料')->insertAll($data);
-//            if ($result !== false){
-//                $this->success('成功');
-//            }else{
-//                $this->error('失败');
-//            }
-//        }else{
-//            $this->error('失败');
-//        }
     }
 
     /**
@@ -1092,7 +1055,8 @@ class WorkOrder extends Api
         if (empty($param) || isset($param['Uniqid']) === false){
             $this->error('参数错误');
         }
-        $param['Yj_Gdbh'] = \db('工单_印件资料')->where('Uniqid',$param['Uniqid'])->value('Yj_Gdbh');
+        $oldPrint = \db('工单_印件资料')->where('Uniqid',$param['Uniqid'])->find();
+        $param['Yj_Gdbh'] = $oldPrint ? $oldPrint['Yj_Gdbh'] : null;
         $data = [
             'Yj_Gdbh' =>$param['Yj_Gdbh'],
             'yj_Yjno' =>$param['yjno'],
@@ -1121,6 +1085,28 @@ class WorkOrder extends Api
         $UniqId = $param['Uniqid'];
         $sql = \db('工单_印件资料')->where('Uniqid',$UniqId)->fetchSql(true)->update($data);
         $res = Db::query($sql);
+        if ($res !== false && !empty($oldPrint)){
+            $logs = [];
+            foreach ($data as $field => $newValue) {
+                $oldValue = array_key_exists($field, $oldPrint) ? $oldPrint[$field] : '';
+                if (trim((string)$oldValue) === trim((string)$newValue)) {
+                    continue;
+                }
+                $logs[] = [
+                    'Yj_Gdbh'     => $oldPrint['Yj_Gdbh'],
+                    'yj_Yjno'     => $data['yj_Yjno'],
+                    'yj_Yjdh'     => $data['yj_Yjdh'],
+                    'yj_yjmc'     => $data['yj_yjmc'],
+                    'PrintUniqid' => $UniqId,
+                    '操作类型'     => '修改',
+                    '字段名'       => $field,
+                    '修改前'       => trim((string)$oldValue),
+                    '修改后'       => trim((string)$newValue),
+                    'sys_id'      => isset($param['sys_id']) ? $param['sys_id'] : '',
+                ];
+            }
+            $this->savePrintOperateLog($logs);
+        }
         $process = \db('工单_工艺资料')
             ->where('Gy0_gdbh',$data['Yj_Gdbh'])
             ->where('Gy0_yjno',$data['yj_Yjno'])
@@ -1541,8 +1527,7 @@ class WorkOrder extends Api
             }else{
                 $list[$key]['印件及工序名称'] = $value['yjno'].'-'.$value['gxh'].'-->'.$value['gxmc'];
             }
-            // $list[$key]['转序数'] = (int)($value['计划接货数']/$value['ls']);
-            // $list[$key]['报废定额'] = (int)($value['计划损耗']/$value['ls']);
+
             $list[$key]['转序数'] = $value['计划接货数'];
             $list[$key]['报废定额'] = $value['计划损耗'];
             if ((int)$value['计划接货数'] === 0){
@@ -1865,6 +1850,7 @@ class WorkOrder extends Api
             $list['Mod_rq'] = $param['Mod_rq'];
             unset($list['Uniqid']);
             $workSql = \db('工单_基本资料')->fetchSql(true)->insert($list);
+            $workAction = '新增工单基本资料行';
         }else{
             $data['Gd_cpdh'] = $param['yj_Yjdh'];
             $data['Gd_cpmc'] = $param['yj_yjmc'];
@@ -1873,6 +1859,7 @@ class WorkOrder extends Api
                 ->where('行号',$param['yj_Yjno'])
                 ->fetchSql(true)
                 ->update($data);
+            $workAction = '更新工单基本资料行';
         }
 
         //开启事务
@@ -1881,6 +1868,18 @@ class WorkOrder extends Api
             $sql = \db('工单_印件资料')->fetchSql(true)->insert($param);
             $res = \db()->query($sql);
             $workRes = \db()->query($workSql);
+            if ($res !== false && $workRes !== false){
+                $this->savePrintOperateLog([[
+                    'Yj_Gdbh'     => $param['Yj_Gdbh'],
+                    'yj_Yjno'     => $param['yj_Yjno'],
+                    'yj_Yjdh'     => isset($param['yj_Yjdh']) ? $param['yj_Yjdh'] : '',
+                    'yj_yjmc'     => isset($param['yj_yjmc']) ? $param['yj_yjmc'] : '',
+                    'PrintUniqid' => $param['Uniqid'],
+                    '操作类型'     => '新增',
+                    'sys_id'      => isset($param['Sys_id']) ? $param['Sys_id'] : '',
+                    '备注'         => $workAction,
+                ]]);
+            }
             //提交事务
             \db()->commit();
         } catch (\Exception $e) {
@@ -2009,15 +2008,36 @@ class WorkOrder extends Api
             $this->error('参数错误');
         }
         $printId = explode(',',$param['UniqId']);
+        $printRows = \db('工单_印件资料')->where('Uniqid','in',$printId)->select();
+        $printMap = [];
+        foreach ($printRows as $row) {
+            $printMap[$row['Uniqid']] = $row;
+        }
         $i = 0;
+        $logs = [];
         foreach ($printId as $value){
             $res = \db('工单_印件资料')
                 ->where('Uniqid',$value)
                 ->delete();
             if ($res === false){
                 $i++;
+                continue;
+            }
+            if ($res && isset($printMap[$value])) {
+                $row = $printMap[$value];
+                $logs[] = [
+                    'Yj_Gdbh'     => $row['Yj_Gdbh'],
+                    'yj_Yjno'     => $row['yj_Yjno'],
+                    'yj_Yjdh'     => $row['yj_Yjdh'],
+                    'yj_yjmc'     => $row['yj_yjmc'],
+                    'PrintUniqid' => $row['Uniqid'],
+                    '操作类型'     => '删除',
+                    '修改前'       => trim((string)$row['yj_yjmc']),
+                    'sys_id'      => isset($param['sys_id']) ? $param['sys_id'] : '',
+                ];
             }
         }
+        $this->savePrintOperateLog($logs);
         if ($i === 0){
             $this->success('删除成功');
         }else{
@@ -2448,7 +2468,6 @@ class WorkOrder extends Api
                     $PrintList[$key]['yj_ls'] = $value['yj_ls'];
                     $PrintList[$key]['yj_平张投料'] = $number;
                     $PrintList[$key]['Sys_id'] = $value['sys_id'];
-//                    $PrintList[$key]['Uniqid'] = $PrintLastId + $key + 1;
                     $PrintList[$key]['Sys_rq'] = date('Y-m-d H:i:s',time());
                     $PrintList[$key]['Mod_rq'] = date('Y-m-d H:i:s',time());
                     array_push($arr,[$value['yj_yjno'],$v['行号']]);
@@ -2528,13 +2547,28 @@ class WorkOrder extends Api
             $ProcessList[$key]['超节损核算单价'] = 0;
             $ProcessList[$key]['Gy0_sj1'] = '1900-01-01 00:00:00';
             $ProcessList[$key]['Gy0_sj2'] = '1900-01-01 00:00:00';
-//            $ProcessList[$key]['UniqId'] = $ProcesslastId + $key + 1;
             $ProcessList[$key]['PD_WG'] = '1900-01-01 00:00:00';
             $ProcessList[$key]['Sys_rq'] = date('Y-m-d H:i:s', time());
             unset($ProcessList[$key]['Gy0_Oil'],$ProcessList[$key]['Gy0_Ms'],$ProcessList[$key]['Gy0_Ks'],$ProcessList[$key]['UniqID'],$ProcessList[$key]['Gy0_cpdh'],$ProcessList[$key]['gy0_gxmc'],$ProcessList[$key]['Gy0_site']);
         }
+        $oldPrintCount = \db('工单_印件资料')->where('Yj_Gdbh',$param['workorder'])->count();
+        $oldProcessCount = \db('工单_工艺资料')->where('Gy0_gdbh',$param['workorder'])->count();
+        $copyRemark = '产品代号'.$param['productCode'].',方案'.$param['option'].',原印件'.$oldPrintCount.'条、原工艺'.$oldProcessCount.'条已替换';
+        $printLogs = [];
+        foreach ($PrintList as $item) {
+            $printLogs[] = [
+                'Yj_Gdbh'  => $param['workorder'],
+                'yj_Yjno'  => isset($item['yj_Yjno']) ? $item['yj_Yjno'] : '',
+                'yj_Yjdh'  => isset($item['yj_Yjdh']) ? $item['yj_Yjdh'] : '',
+                'yj_yjmc'  => isset($item['yj_yjmc']) ? $item['yj_yjmc'] : '',
+                '操作类型'  => '引用',
+                'sys_id'   => isset($param['sys_id']) ? $param['sys_id'] : '',
+                '备注'      => $copyRemark,
+            ];
+        }
         //插入数据
         \db()->startTrans();
+        $copied = false;
         try {
             \db('工单_工艺资料')->where('Gy0_gdbh',$param['workorder'])->delete();
             $processSql = \db('工单_工艺资料')->fetchSql(true)->insertAll($ProcessList);
@@ -2543,9 +2577,12 @@ class WorkOrder extends Api
             $printSql = \db('工单_印件资料')->fetchSql(true)->insertAll($PrintList);
             \db()->query($printSql);
             \db()->commit();
+            $copied = true;
         }catch (\Exception $e){
             \db()->rollback();
-//            echo $e->getMessage();
+        }
+        if ($copied) {
+            $this->savePrintOperateLog($printLogs);
         }
         //计算工序计划生产数量
         if ($number !== null){
@@ -3316,6 +3353,37 @@ class WorkOrder extends Api
         ]);
     }
 
+    /**
+     * 写入印件操作日志
+     * @param array $rows
+     * @return void
+     */
+    protected function savePrintOperateLog(array $rows)
+    {
+        if (empty($rows)) {
+            return;
+        }
+        $now = date('Y-m-d H:i:s');
+        $logs = [];
+        foreach ($rows as $row) {
+            $logs[] = [
+                'Yj_Gdbh'     => isset($row['Yj_Gdbh']) ? $row['Yj_Gdbh'] : '',
+                'yj_Yjno'     => isset($row['yj_Yjno']) ? $row['yj_Yjno'] : '',
+                'yj_Yjdh'     => isset($row['yj_Yjdh']) ? $row['yj_Yjdh'] : '',
+                'yj_yjmc'     => isset($row['yj_yjmc']) ? $row['yj_yjmc'] : '',
+                'PrintUniqid' => isset($row['PrintUniqid']) ? $row['PrintUniqid'] : '',
+                '操作类型'     => isset($row['操作类型']) ? $row['操作类型'] : '',
+                '字段名'       => isset($row['字段名']) ? $row['字段名'] : '',
+                '修改前'       => isset($row['修改前']) ? $row['修改前'] : '',
+                '修改后'       => isset($row['修改后']) ? $row['修改后'] : '',
+                'sys_id'      => isset($row['sys_id']) ? $row['sys_id'] : '',
+                'sys_rq'      => $now,
+                '备注'         => isset($row['备注']) ? $row['备注'] : '',
+            ];
+        }
+        \db('工单_印件操作日志')->insertAll($logs);
+    }
+
     /**
      * 判断工单完工日期是否为空
      * @param mixed $date