Zhouzhendong 4 rokov pred
rodič
commit
a11ed7f4b3

+ 16 - 12
app/Http/Controllers/OrderController.php

@@ -33,26 +33,30 @@ class OrderController extends Controller
         /** @var OrderService $orderService */
         $orderService = app('OrderService');
         $request = $request->input();
-        $owners = app('OwnerService')->getIntersectPermitting(['id', 'code']);
+        if (!app("UserService")->checkAdminIdentity(Auth::id())){
+            $owners = app('OwnerService')->getIntersectPermitting(['id', 'code']);
+            $codes = array_column($owners->toArray(), 'code');
+            if ($request['customerid'] ?? false) {
+                $arr = explode(',', $request['customerid']);
+                $request['customerid'] = [];
+                foreach ($arr as $value) {
+                    if (in_array($value, $codes)) $request['customerid'][] = $value;
+                }
+                if (count($request['customerid']) < 1) $request['customerid'] = [''];
+            } else $request['customerid'] = $codes;
+        }else if (isset($request['customerid'])){
+            $request['customerid'] = explode(',', $request['customerid']);
+            if ($request['customerid']<0)unset($request['customerid']);
+        }
         $service = app(LogisticService::class);
         $logistics = $service->getSelection(['id', 'name']);
-        $codes = array_column($owners->toArray(), 'code');
-        if ($request['customerid'] ?? false) {
-            $arr = explode(',', $request['customerid']);
-            $request['customerid'] = [];
-            foreach ($arr as $value) {
-                if (in_array($value, $codes)) $request['customerid'][] = $value;
-            }
-            if (count($request['customerid']) < 1) $request['customerid'] = [''];
-        } else $request['customerid'] = $codes;
-
         $result = $orderService->paginate($request);
         $picktotraceids = $result['picktotraceids'];
         $orders = $result['orders'];
         $orderService->tagOrderByOrderIssue($orders);
         app('WorkOrderService')->tagWorkOrder($orders);
         $commodities = $result['commodities'];
-        $customers = app('OracleBasCustomerService')->getCustomers($codes);
+        $customers =  app('OracleBasCustomerService')->getCustomers($codes ?? null);
         $page = $request["page"] ?? 1;
         $codes = DB::connection('oracle')->table('BAS_CODES')->select('code', 'codename_c')->where('codeid', 'SO_STS')->orderBy('code', 'asc')->get();
         $orderIssueType = OrderIssueType::all();

+ 6 - 3
app/Http/Controllers/TestController.php

@@ -289,9 +289,12 @@ class TestController extends Controller
     private static $delayedHour = 48;
     public function test(Request $request)
     {
-        $prefix = "W".date("ymd")."000000";
-        $code = "123";
-        dd(substr($prefix,0,13-strlen($code)).$code);
+        \App\Authority::query()->where("name","波次修复")->update([
+            "name"          => "波次恢复",
+        ]);
+        $s = new AuthorityService();
+        $s->removeAdminAuth();
+        dd("OK");
 
         $s = new LogisticService();
         dd($s->assertExpressCompany("312087577032867"));

+ 4 - 0
app/Http/Requests/OrderDelivering.php

@@ -13,6 +13,10 @@ class OrderDelivering extends GateRequest
     public function paramHandle()
     {
         $exist = request("orderdate_start") || request("orderdate_end");
+        if (!$exist && request("delayedDeliver")){
+            request()->offsetSet("orderdate_start",date('Y-m-d H:i', strtotime("-15 day")));
+            request()->offsetSet("orderdate_end",date('Y-m-d H:i'));
+        }
         if ($exist && !request("restrict_time"))return;
         if ($exist && request("restrict_time")){
             request()->offsetUnset("orderdate_start");

+ 5 - 5
app/Services/OracleBasCustomerService.php

@@ -50,14 +50,14 @@ class OracleBasCustomerService
             ->whereIn('CustomerId',$customerIDs)
             ->get();
     }
-    public function getCustomers($codes)
+    public function getCustomers($codes = null)
     {
         return $this->cacheService->getOrExecute('OracleBasCustomersAll'.md5(json_encode($codes)),function()use($codes){
-            return OracleBasCustomer::query()->select('customerid','descr_c')
+            $query = OracleBasCustomer::query()->select('customerid','descr_c')
                 ->where('customer_type','OW')
-                ->where('active_flag','Y')
-                ->whereIn('customerid',$codes)
-                ->get();
+                ->where('active_flag','Y');
+            if ($codes!==null)$query->whereIn('customerid',$codes);
+            return $query->get();
         },config('cache.expirations.owners'));
     }
 

+ 55 - 2
app/Services/OrderService.php

@@ -70,6 +70,51 @@ class OrderService
     }
 
 
+    private function delayedChangeParam(array &$params, $page, $paginate)
+    {
+        $startRow = $page ? ($page-1)*$paginate : 0;
+        $endRow = $page ? $page*$paginate : null;
+        $sql = <<<SQL
+    SELECT ORDERNO FROM(
+    SELECT ACT_ALLOCATION_DETAILS.ORDERNO,ROWNUM rn FROM ACT_ALLOCATION_DETAILS
+    LEFT JOIN DOC_ORDER_HEADER ON DOC_ORDER_HEADER.ORDERNO = ACT_ALLOCATION_DETAILS.ORDERNO
+    WHERE CHECKTIME > TO_DATE(NVL(H_EDI_20,H_EDI_03),'yyyy-mm-dd,hh24:mi:ss')+({$params["delayedDeliver"]}/24)
+    AND NVL(H_EDI_20,H_EDI_03) IS NOT NULL AND NVL(DOC_ORDER_HEADER.H_EDI_20,DOC_ORDER_HEADER.H_EDI_03) <> 'ERP订单取消'
+    AND CHECKTIME IS NOT NULL
+SQL;
+        if (isset($paginate["customerid"]) && is_array($paginate["customerid"]) && count($paginate["customerid"])>0){
+            $sql .= " AND CUSTOMERID IN (";
+            foreach ($paginate["customerid"] as $index => $customer){
+                $sql .= "'".$customer."'";
+                if ($index!==count($paginate["customerid"])-1)$sql.=",";
+            }
+            $sql.=")";
+        }
+        $ki = (isset($params["orderdate_start"]) ? 1 : 0) + (isset($params["orderdate_end"]) ? 2 : 0);
+        switch ($ki){
+            case 0:
+                $params["orderdate_start"] = date('Y-m-d H:i', strtotime("-15 day"));
+                $params["orderdate_end"] = date('Y-m-d H:i');
+                $sql.=" AND DOC_ORDER_HEADER.ADDTIME BETWEEN TO_DATE('{$params["orderdate_start"]}:00','yyyy-mm-dd,hh24:mi:ss') AND TO_DATE('{$params["orderdate_end"]}:59','yyyy-mm-dd,hh24:mi:ss')";
+                break;
+            case 1:
+                if (strlen($params["orderdate_start"]) < 11) $params["orderdate_start"] .= ' 00:00';
+                $sql.=" AND DOC_ORDER_HEADER.ADDTIME >= TO_DATE('{$params["orderdate_start"]}:00','yyyy-mm-dd,hh24:mi:ss')";
+                break;
+            case 2:
+                if (strlen($params["orderdate_end"]) < 11) $params["orderdate_end"] .= ' 23:59';
+                $sql.=" AND DOC_ORDER_HEADER.ADDTIME <= TO_DATE('{$params["orderdate_end"]}:59','yyyy-mm-dd,hh24:mi:ss')";
+                break;
+            default:
+                if (strlen($params["orderdate_start"]) < 11) $params["orderdate_start"] .= ' 00:00';
+                if (strlen($params["orderdate_end"]) < 11) $params["orderdate_end"] .= ' 23:59';
+                $sql.=" AND DOC_ORDER_HEADER.ADDTIME BETWEEN TO_DATE('{$params["orderdate_start"]}:00','yyyy-mm-dd,hh24:mi:ss') AND TO_DATE('{$params["orderdate_end"]}:59','yyyy-mm-dd,hh24:mi:ss')";
+        }
+        if ($endRow)$sql .= " AND ROWNUM<=50";
+        $sql .= " ORDER BY ORDERNO) WHERE rn>{$startRow}";
+        $params = ["query" => " AND ORDERNO IN ({$sql})"];
+    }
+
     private function preciseQuery(array $params, $sql)
     {
         $orderdate_start = $params["orderdate_start"] ?? null;
@@ -97,6 +142,9 @@ class OrderService
         $edisendflag = $params["edisendflag"] ?? null;
         $manualflag = $params["manualflag"] ?? null;
         $checkAllSign = $params['checkAllSign'] ?? null;
+        if ($params["query"] ?? false){
+            $sql .= $params["query"];
+        }
         if ($ordernos) {
             $sql .= " AND orderno IN " . $ordernos;
         }
@@ -252,6 +300,11 @@ class OrderService
 
     public function getSql($params, $page = null, $paginate = null)
     {
+        if (isset($params["delayedDeliver"]) && is_numeric($params["delayedDeliver"]) && is_int((int)$params["delayedDeliver"])){
+            if ($page)$page = 1;
+            $this->delayedChangeParam($params, $page, $paginate);
+        }
+
         $checktime_start = $params['checktime_start'] ?? null;
         $checktime_end = $params['checktime_end'] ?? null;
         $checkData = $params['data'] ?? null;
@@ -280,7 +333,7 @@ class OrderService
                          DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1
                           ,DOC_ORDER_HEADER.soreference5,DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
                          DOC_ORDER_HEADER.Picking_Print_Flag,DOC_ORDER_HEADER.EDISENDFLAG
-                          ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime,DOC_ORDER_HEADER.EDIREMARKS2 from (select * from DOC_ORDER_HEADER  order by ADDTIME desc )DOC_ORDER_HEADER where 1=1 ";
+                          ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime,DOC_ORDER_HEADER.EDIREMARKS2 from DOC_ORDER_HEADER where 1=1 ";
         $sql = $this->preciseQuery($params, $sql);
         if ($checkData) {
             if (!is_array($checkData)) $checkData = explode(',', $checkData);
@@ -298,7 +351,7 @@ class OrderService
         }
         if (isset($params["alternate_sku1"])) $page = 1;
         if ($paginate && $page) $sql .= " and ROWNUM<='" . $page * $paginate . "')";
-        if ($paginate && $page) $sql .= " header where header.rn>'" . ($page - 1) * $paginate . "' ";
+        if ($paginate && $page) $sql .= " header where header.rn>'" . ($page - 1) * $paginate . "' order by ADDTIME desc";
         $sql .= ")DOC_ORDER_HEADER left join DOC_ORDER_DETAILS on DOC_ORDER_DETAILS.ORDERNO=DOC_ORDER_HEADER.ORDERNO
                       left join BAS_CODES  order_code on order_code.CODE=DOC_ORDER_HEADER.sostatus and order_code.codeid='SO_STS'
                       left join BAS_CODES  order_detail_code on order_detail_code.CODE=DOC_ORDER_DETAILS.linestatus and order_detail_code.codeid='SO_STS'

+ 17 - 0
database/migrations/2021_09_30_164937_change_authority_add_method_index.php

@@ -65,6 +65,23 @@ class ChangeAuthorityAddMethodIndex extends Migration
                 "method"        => 1,
             ]
         ]);
+
+        $authWaybill1 = \App\Authority::query()->create([
+            "name"          => "订单管理",
+            "parent_id"     => $auth->id,
+            'alias_name'    => \Faker\Provider\Uuid::uuid(),
+            "permission"    => "允许",
+            "route"         => null,
+            "method"        => 4,
+        ]);
+        \App\Authority::query()->create([
+            "name"          => "波次恢复",
+            "parent_id"     => $authWaybill1->id,
+            'alias_name'    => \Faker\Provider\Uuid::uuid(),
+            "permission"    => "允许",
+            "route"         => "order/batchRecover",
+            "method"        => 0,
+        ]);
     }
 
     /**

+ 4 - 5
resources/views/order/index/delivering.blade.php

@@ -558,6 +558,7 @@
                             placeholder: '是否人工回传',
                             data: [{name: 'Y', value: '是'}, {name: 'N', value: '否'}]
                         },
+                        {name: 'delayedDeliver', type: 'input', tip: 'M:延时发货,填写整数,单位/时', placeholder: '延时发货'},
                     ],
                 ];
                 this.form = new query({
@@ -635,11 +636,9 @@
                     let start = "{{$request["orderdate_start"] ?? ''}}";
                     let end = "{{$request["orderdate_end"] ?? ''}}";
                     let time = "{{$request["restrict_time"] ?? ''}}";
-                    if (start && end && time) {
-                        this.changeURLParam("orderdate_start", start);
-                        this.changeURLParam("orderdate_end", end);
-                        this.changeURLParam("restrict_time", time);
-                    }
+                    if (time)this.changeURLParam("restrict_time", time);
+                    if (start)this.changeURLParam("orderdate_start", start);
+                    if (end)this.changeURLParam("orderdate_end", end);
                 },
                 changeURLParam(name, value) {
                     let url = document.URL, resultUrl = ''