Browse Source

订单冻结BUG修复以及数据恢复

Zhouzhendong 5 năm trước cách đây
mục cha
commit
9c30a372c0

+ 46 - 0
app/Http/Controllers/TestController.php

@@ -74,6 +74,7 @@ use App\Services\OracleDocAsnHerderService;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OracleDocWaveDetailService;
 use App\Services\OrderCommodityService;
+use App\Services\OrderFreezeService;
 use App\Services\OrderPackageReceivedSyncService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
@@ -135,6 +136,51 @@ class TestController extends Controller
         dd(substr("2021-01-28",0,7) == date("Y-m"));
     }
 
+
+    public function orderFreeze()
+    {
+        $freezeOrders = [];
+        $orders = Order::query()->whereBetween("updated_at",["2021-01-29 09:00:00","2021-01-29 14:00:00"])
+        ->get()->toArray();
+        foreach ($orders as $param){
+            if ($this->isFreeze($param))$freezeOrders[] = $param["code"];
+        }
+        $this->pushWMS($freezeOrders);
+    }
+
+    private function isFreeze($param)
+    {
+        $status = ['分配完成','创建订单','拣货完成','播种完成'];
+        if (array_search($param["wms_status"],$status)===false)return false;
+
+        $service = new OrderFreezeService();
+        $pools = $service->getFreezes();
+        foreach ($pools as $pool){
+            if ($pool["thawed_at"] && Carbon::parse($pool["thawed_at"])->lte(Carbon::today()))continue;
+            if ($pool["logistic_id"]!=$param["logistic_id"])continue;
+            if ($pool["province_name"] && (mb_strpos($param["province"],$pool["province_name"]) === false))continue;
+            if ($pool["city_name"] && (mb_strpos($param["city"],$pool["city_name"]) === false))continue;
+            if ($pool["district_name"] && (mb_strpos($param["district"],$pool["district_name"]) === false))continue;
+            if ($pool["town_name"] && (mb_strpos($param["address"],$pool["town_name"]) === false))continue;
+            if ($pool["street_name"] && (mb_strpos($param["address"],$pool["street_name"]) === false))continue;
+            return true;
+        }
+        return false;
+    }
+
+    private function pushWMS($freezeOrders)
+    {
+        if (!$freezeOrders)return;
+        $where = "''";
+        foreach ($freezeOrders as $f)$where .= ",'{$f}'";
+        $edit = date("Y-m-d H:i:s");
+        $sql = <<<sql
+UPDATE DOC_ORDER_HEADER SET edittime = TO_DATE({$edit},'yyyy-mm-dd hh24:mi:ss'),releasestatus = 'H',waveno='*',notes = CASE WHEN notes IS NULL THEN '停运' ELSE  notes||',停运' END where ORDERNO in ({$where})
+sql;
+        DB::connection("oracle")->update($sql);
+        LogService::log(__METHOD__,"订单同步-自动冻结",$sql);
+    }
+
     public function syncWeight()
     {
         $pack = OrderPackageCountingRecord::query()->get();

+ 1 - 1
app/Jobs/OrderFreeze.php

@@ -84,7 +84,7 @@ class OrderFreeze implements ShouldQueue
         foreach ($freezeOrders as $f)$where .= ",'{$f}'";
         $edit = date("Y-m-d H:i:s");
         $sql = <<<sql
-UPDATE DOC_ORDER_HEADER SET edittime = TO_DATE({$edit},'yyyy-mm-dd hh24:mi:ss'),releasestatus = 'H',waveno='*',notes = CASE WHEN notes IS NULL THEN '停运' ELSE  notes||',停运' END where ORDERNO in ({$where})
+UPDATE DOC_ORDER_HEADER SET edittime = TO_DATE('{$edit}','yyyy-mm-dd hh24:mi:ss'),releasestatus = 'H',waveno='*',notes = CASE WHEN notes IS NULL THEN '停运' ELSE  notes||',停运' END where ORDERNO in ({$where})
 sql;
         DB::connection("oracle")->update($sql);
         LogService::log(__METHOD__,"订单同步-自动冻结",$sql);

+ 0 - 126
resources/views/test.blade.php

@@ -1,126 +0,0 @@
-@extends('layouts.app')
-
-
-@section('content')
-    <div class="container-fluid">
-        <div class="row">
-            <div class="col-12">
-                <div class="h-1 w-100 text-center font-weight-bold mb-2 text-dark"></div>
-            </div>
-        </div>
-        <div class="row mt-2">
-            <div class="col-10">
-                <div class="row m-0" id="row" >
-                    <div class="col-6" id="vi1" onclick="selected(this)">
-                        <div id="asd">
-                            <video src="#"></video>
-                        </div>
-                    </div>
-                    <canvas class="col-6" id="video1" onclick="selected(this)"></canvas>
-                </div>
-            </div>
-            <div class="col-2 border-left border-3 border-primary text-center">
-                <button class="btn btn-danger" type="button" id="imgPool">离 开 云 诊 室</button>
-            </div>
-            <img style="width: 50px;height: 100px" src="{{asset('images/demoBin.png')}}" class="image" onclick="imgShow(this)">
-            <div id="outer" style="position:fixed;top:0;left:0;background:rgba(0,0,0,0.7);z-index:2;width:100%;height:100%;display:none;">
-            <div id="inner" style="position:absolute;">
-                <img alt="" id="bm" style="border:5px solid #fff;" src="" />
-            </div>
-        </div>
-    </div>
-
-    <script type="text/javascript">
-        /*$(function(){
-            $(".image").click(function(){
-                var _this = $(this);//将当前的pimg元素作为_this传入函数
-                imgShow("#outer", "#inner", "#bm", _this);
-            });
-        });*/
-        function imgShow(e,outer="#outer", inner="#inner", bm="#bm"){
-            let src = e.src;
-            $(bm).attr("src", src);
-            let img = $("<img alt='' src='"+src+"'/>");
-            img.on('load',function(){
-                let windowW = $(window).width();
-                let windowH = $(window).height();
-                let realWidth = this.width;
-                let realHeight = this.height;
-                let imgWidth, imgHeight;
-                let scale = 0.8;
-                if(realHeight>windowH*scale) {
-                    imgHeight = windowH*scale;
-                    imgWidth = imgHeight/realHeight*realWidth;
-                    if(imgWidth>windowW*scale) {
-                        imgWidth = windowW*scale;
-                    }
-                } else if(realWidth>windowW*scale) {
-                    imgWidth = windowW*scale;
-                    imgHeight = imgWidth/realWidth*realHeight;
-                } else {
-                    imgWidth = realWidth;
-                    imgHeight = realHeight;
-                }
-                $(bm).css("width",imgWidth);
-                let w = (windowW-imgWidth)/2;
-                let h = (windowH-imgHeight)/2;
-                $(inner).css({"top":h, "left":w});
-                $(outer).fadeIn("fast");
-            });
-            $(outer).click(function(){
-                $(this).fadeOut("fast");
-            });
-        }
-
-
-        let currentDom = "";
-        let hidden = false;
-        function selected(e){
-            if (currentDom === e.id)return;
-            if (currentDom)$("#"+currentDom).css('box-shadow','');
-            currentDom = e.id;
-            e.style.boxShadow = "0 0 10px 2px red";
-        }
-        document.onkeydown = function(ev) {
-            if(ev.keyCode === 32 && currentDom) {
-                ev.preventDefault();
-                $("#row").append('<canvas class="col-6" id="video2" onclick="selected(this)"></canvas>');
-                let base64 = getBase64Img();
-                let imgPool = $("#imgPool");
-                if (!hidden){
-                    imgPool.after("<button class='btn btn-success mt-2 mb-0' type='button' onclick='uploadImg()'>上 传 截 图</button>");
-                    hidden = true;
-                }
-                imgPool.after("<div class='w-100 mt-2 h-auto' ondblclick='removeImg(this)'><img class='img-fluid images' alt='截图' src='"+base64+"'></div>");
-            }
-        };
-        //获取base64截图
-        function getBase64Img(){
-            let canvas = $('<canvas></canvas>');
-            let video = $("#"+currentDom).children().children()[0];
-            let ctx = canvas[0].getContext('2d');
-            let w = video.videoWidth;
-            let h = video.videoHeight;
-            canvas.attr({
-                width: w,
-                height: h,
-            });
-            ctx.drawImage(video, 0, 0, w, h);
-            return canvas[0].toDataURL('images/png');
-        }
-        function removeImg(e) {
-            e.remove();
-        }
-        function uploadImg() {
-            let list = $(".images");
-            list.each((i,dom)=>{
-                let base64 = dom.src;
-                //单次多请求上传
-            });
-        }
-    </script>
-@endsection
-
-@section('script')
-    <script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.js"></script>
-@stop