Bläddra i källkod

已办列表优化,待办数据新增字段,修复新字段的脚本

wufeng 2 år sedan
förälder
incheckning
e9fef5e52a

+ 38 - 10
app/admin/controller/Proorder.php

@@ -67,13 +67,39 @@ class Proorder extends Base
             if ($param['order_code'] != '') $db->whereLike("a.order_code", '%' . $param['order_code'] . '%');
             if ($param['action_uid'] != '') $db->where('a.action_uid', $param['action_uid']);
 
-            $count = $db->count();
+            $count = $db
+//                ->field("ANY_VALUE(`a`.`id`) id,`a`.order_type,`a`.order_id,GROUP_CONCAT(`a`.`id` ORDER BY `a`.`id` DESC) ids")
+                ->group('a.order_type,a.order_id')
+//                ->order(['a.id'=>'desc'])
+//                ->fetchSql()
+//                ->withAttr('ids', function ($val) {
+//                    $temp = explode(',', $val);
+//                    return $temp[0];
+//                })
+//                ->page($page, $param['size'])
+                ->count('a.id');
 
             $total = ceil($count / $param['size']);
             $page = $param['page'] > $total ? $total : $param['page'];
-            $list = $db
-                ->field("b.apply_id,b.apply_name,a.addtime,a.action_uid,a.action_name,a.order_status,a.order_type,a.order_process,a.order_code,a.order_id,a.id")
+
+            //筛选符合条件的order_type,排除重复数据
+            $order_types = $db
+                ->field("ANY_VALUE(`a`.`id`) id,`a`.order_type,`a`.order_id,GROUP_CONCAT(`a`.`id` ORDER BY `a`.`id` DESC) ids")
+                ->group('a.order_type,a.order_id')
+                ->order(['id' => 'desc'])
+                ->withAttr('ids', function ($val) {
+                    $temp = explode(',', $val);
+                    return $temp[0];
+                })
                 ->page($page, $param['size'])
+                ->select()
+                ->toArray();
+
+            $list = ProcessWait::alias("a")
+                ->field("b.apply_id,b.apply_name,a.addtime,a.action_uid,a.action_name,a.order_status,a.order_type,a.order_process,a.order_code,a.order_id,a.id,a.order_process_finally")
+                ->whereIn('a.id', array_column($order_types, 'ids'))
+                ->leftJoin("workflow b", "a.order_type=b.order_type and a.order_code=b.order_code")
+//                ->page($page, $param['size'])
                 ->order("a.addtime desc")
                 ->select()
                 ->toArray();
@@ -86,15 +112,18 @@ class Proorder extends Base
             $data = [];
             foreach ($list as $value) {
                 $var = Db::name("action_process")
-                    ->where(['order_type' => $value['order_type'], 'order_process' => $value['order_process']])
-                    ->field("status_name,order_process,order_name,roleid")
-                    ->find();
+                    ->where(['order_type' => $value['order_type']])
+                    ->whereIn('order_process', [$value['order_process'], $value['order_process_finally']])
+//                    ->field("status_name,order_process,order_name,roleid")
+                    ->column('status_name,order_process,order_name,roleid', 'order_process');
+//                    ->find();
                 $value['process_name'] = isset($all_process[$value['order_type']]) ? $all_process[$value['order_type']] : '';
-                $value['order_name'] = $var['order_name'];
-                $value['status_name'] = $var['status_name'];
+                $value['order_name'] = $var[$value['order_process']]['order_name'];
+                $value['status_name'] = $var[$value['order_process']]['status_name'];
+                $value['order_process_finally_status_name'] = $var[$value['order_process_finally']]['status_name'];
                 $data[] = $value;
             }
-            return app_show(0, "获取成功", ["list" => $data, 'count' => $count]);
+            return app_show(0, "获取成功", ['count' => $count, 'list' => $data]);
         }
 
 
@@ -324,5 +353,4 @@ class Proorder extends Base
     }
 
 
-
 }

+ 3 - 2
app/admin/model/ProcessWait.php

@@ -38,7 +38,7 @@ class ProcessWait extends Model
         //把上一个节点改成已完成
         Db::name('process_wait')
             ->where(['order_type' => $data['order_type'], 'order_process' => $data['action_status'], 'order_code' => $data['order_code'], 'order_id' => $data['order_id'], 'status' => self::$status_wait])
-            ->update(['status' => self::$status_finish, 'updatetime' => date('Y-m-d H:i:s')]);
+            ->update(['status' => self::$status_finish, 'order_process_finally' => $data['action_process'], 'updatetime' => date('Y-m-d H:i:s')]);
 
         //查询流程下该节点值的id
         $info = Db::name('process')
@@ -130,6 +130,7 @@ class ProcessWait extends Model
                 'action_name' => $data['action_name'],
                 'status' => self::$status_wait,
                 'order_process' => $data['action_process'],
+                'order_process_finally' => $data['action_process'],
                 'addtime' => date('Y-m-d H:i:s'),
                 'updatetime' => date('Y-m-d H:i:s'),
             ];
@@ -145,7 +146,7 @@ class ProcessWait extends Model
                     ->where('is_del', 0)
                     ->column('role_id');
                 $insert_data['roleid'] = implode(',', $roleid);
-                $insert_data['handle_user_list'] = implode(',', get_handle_user_list($info['id'], $data['holder_id'] ?? 0, $info['api_url'],$data['person_id']??0));//handle_user_list当前待处理人的uid集合
+                $insert_data['handle_user_list'] = implode(',', get_handle_user_list($info['id'], $data['holder_id'] ?? 0, $info['api_url'], $data['person_id'] ?? 0));//handle_user_list当前待处理人的uid集合
             }
 
             //增加新的节点

+ 158 - 0
app/command/UpdateProcessWaitFinallyData.php

@@ -0,0 +1,158 @@
+<?php
+declare (strict_types=1);
+
+namespace app\command;
+
+use think\console\Command;
+use think\console\Input;
+use think\console\input\Argument;
+use think\console\input\Option;
+use think\console\Output;
+use think\Exception;
+use think\facade\Db;
+
+class UpdateProcessWaitFinallyData extends Command
+{
+    protected function configure()
+    {
+        // 指令配置
+        $this->setName('UpdateProcessWaitFinallyData')
+            ->setDescription('更新待办数据表中的字段:最终状态值');
+    }
+
+    protected function execute(Input $input, Output $output)
+    {
+        Db::startTrans();
+        try {
+
+            $data = Db::name('process_wait')
+                ->field('order_code,order_type,order_id')
+                ->group('order_code,order_type,order_id')
+                ->whereIn('status', [1, 2])
+                ->cursor();
+
+            foreach ($data as $value) {
+
+                $order_process_finally = 0;
+
+                switch ($value['order_type']) {
+                    //1.采购单流程
+                    case 'CGD':
+                        $order_process_finally = Db::name('purchease_order')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //2.采购单入库流程
+                    case 'RKD':
+                        $order_process_finally = Db::name('purchease_in')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //3.备货申请单流程
+                    case 'BHD':
+                        $order_process_finally = Db::name('purchease')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //4.销售订单流程
+                    case 'XSQRD':
+                        $order_process_finally = Db::name('sale')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //5.发货申请单流程
+                    case 'CKD':
+                        $order_process_finally = Db::name('order_out')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //6.售后申请单流程
+                    case 'SHD':
+                        $order_process_finally = Db::name('order_return')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //7.售后退货单流程
+                    case 'CKTHD':
+                        $order_process_finally = Db::name('order_back')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //8.销售退货单流程
+                    case 'XSTHD':
+                        $order_process_finally = Db::name('sale_return')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //9.采购工差单流程
+                    case 'CGGCD':
+                        $order_process_finally = Db::name('purchease_diff')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //10.销售工差单流程
+                    case 'XSGCD':
+                        $order_process_finally = Db::name('sale_diff')
+                            ->where(['id' => $value['order_id']])
+                            ->value('status', 0);
+                        break;
+                    //11.调拨单流程
+                    case 'DBD':
+                        $order_process_finally = Db::name('allot_stock')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //12.盘点单流程
+                    case 'PDD':
+                        $order_process_finally = Db::name('good_check')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //13.议价单流程
+                    case 'YJD':
+                        $order_process_finally = Db::name('bargain_order')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //14.项目单流程
+                    case 'PRO':
+                        $order_process_finally = Db::name('project')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //15.商品成本流程
+                    case 'SPCB':
+                        $order_process_finally = Db::name('good_basic')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //16.商品上线流程
+                    case 'SPSX':
+                        $order_process_finally = Db::name('good_platform')
+                            ->where(['id' => $value['order_id']])
+                            ->value('exam_status', 0);
+                        break;
+                    //17.活动流程
+                    case 'HD':
+                        $order_process_finally = Db::name('good_activity')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //19.有赞商品上架流程
+                    case 'YZSX':
+                        $order_process_finally = Db::name('platform_youzan')
+                            ->where(['id' => $value['order_id']])
+                            ->value('exam_status', 0);
+                        break;
+                    //20.有赞订单审核流程
+//                case 'YZQRD':
+//                    $order_process_finally = Db::name('')->where(['id' => $value['order_id'], 'is_del' => 0])->value('', 0);
+//                    break;
+                    //22.离职交接流程
+                    case 'LZJJ':
+                        $order_process_finally = Db::name('resign_info')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //23.采购单退货流程
+                    case 'CGTHD':
+                        $order_process_finally = Db::name('purchease_return')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //24.竞价单流程
+                    case 'ZXD':
+                        $order_process_finally = Db::name('consult_order')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+                        break;
+                    //25.商品下线流程
+//                    case 'GOL':
+//                        $order_process_finally = Db::name('good_offline_log')->where(['id' => $value['order_id'], 'is_del' => 0])->value('status', 0);
+//                        break;
+                }
+
+                if ($order_process_finally) Db::name('process_wait')
+                    ->where('order_code', $value['order_code'])
+                    ->where('order_type', $value['order_type'])
+                    ->update(['order_process_finally' => $order_process_finally]);
+            }
+
+            Db::commit();
+
+            $output->writeln('更新成功');
+
+        } catch (Exception $exception) {
+            Db::rollback();
+            $output->writeln('更新失败,' . $exception->getMessage());
+        }
+
+
+    }
+
+
+}