Procházet zdrojové kódy

Merge branch 'master' of ssh://was.baoshi56.com:10022/var/git/bswas

eric2h před 4 roky
rodič
revize
d656423833

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

@@ -5,7 +5,10 @@ namespace App\Http\Controllers;
 use App\Components\AsyncResponse;
 use App\Components\Database;
 use App\Components\ErrorPush;
+use App\Services\WaybillService;
+use App\Waybill;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
 
 class TestController extends Controller
 {
@@ -27,6 +30,15 @@ class TestController extends Controller
         }
     }
     public function test(){
+        $arr = DB::connection("oracle")->select(DB::raw("SELECT LOCATIONID FROM INV_LOT_LOC_ID
+where LOCATIONID like 'IDE%' and CUSTOMERID in ('PUHE')
+group by CUSTOMERID,LOCATIONID order by CUSTOMERID"));
+        $str = "";
+
+        foreach ($arr as $item){
+            $str .= '"'.$item->locationid.'",';
+        }
+        dd($str);
     }
 }
 

+ 1 - 1
app/LaborCompanyDispatchDetail.php

@@ -5,7 +5,6 @@ namespace App;
 use Illuminate\Database\Eloquent\Model;
 
 use App\Traits\ModelLogChanging;
-
 class LaborCompanyDispatchDetail extends Model
 {
     use ModelLogChanging;
@@ -15,6 +14,7 @@ class LaborCompanyDispatchDetail extends Model
         'name',//临时工姓名
         'gender',//性别
         'age',//年龄
+        'card_id',//身份证
     ];
 
     static public $enums = [

+ 0 - 1
app/Services/DbOpenService.php

@@ -27,7 +27,6 @@ class DbOpenService
             "Accept" => "application/json"
         ];
         $body = $this->formatWaybillData($waybill);
-
         try {
             $response = httpPost(config('api_logistic.DB.prod.uri')['create_order'], $body, $header);
             if (!$response["result"])return null;

+ 2 - 1
app/Services/ReceivingTaskService.php

@@ -123,10 +123,11 @@ class ReceivingTaskService
      */
     public function overtimeToCompleteTask()
     {
-        $yesterday = Carbon::now()->subDays(1)->format("Ym--d");
+        $yesterday = Carbon::now()->subDays(1)->format("Y-m-d");
         ReceivingTask::query()
             ->where('created_at', '>=', $yesterday . ' 00:00:00')
             ->where('created_at', '<=', $yesterday . ' 23:59:59')
+            ->whereNull('end_at')
             ->whereIn('status', ['创建', '进行中'])
             ->update(['status' => '超时完成']);
 

+ 2 - 0
app/Services/WorkOrderExpressAbnormalService.php

@@ -212,6 +212,8 @@ class WorkOrderExpressAbnormalService extends WorkOrderService
             'status' => '未同步',
             'type' => '结束',
         ]);
+        $this->endOrderIssueAndSyncProcessLogs($detail);
+        $this->logService->createLog($detail, '终审', $process_progress.'-宝时终审');
     }
 
 }

+ 38 - 9
app/Services/WorkOrderService.php

@@ -363,7 +363,11 @@ class WorkOrderService
          * @var WorkOrder $work_order
          */
         $work_order = $detail->workOrder;
-        $order_issue = OrderIssue::query()->where('order_id', $work_order->order_id)->first();
+        $order_issue = OrderIssue::query()->withTrashed()->where('order_id', $work_order->order_id)->first();
+        if($order_issue->deleted_at ?? false){
+            $order_issue->restore();
+        }
+        $orderIssueType = app(OrderIssueTypeService::class)->firstOrCreate(['name' => '错漏发']);
         if (!$order_issue) {
             $order_issue = OrderIssue::query()->create([
                 'order_id' => $work_order->order_id,
@@ -382,16 +386,18 @@ class WorkOrderService
             'user_owner_group_id' => $work_order->user_owner_group_id,
         ]);
 
-        $work_order_user_workgroup_ids = $work_order->userWorkGroups()->get()->map(function($item){
+        $work_order_user_workgroup_ids = $work_order->userWorkGroups()->get()->map(function ($item) {
             return $item->id;
         })->toArray();
 
-        $order_issue_work_groups = $order_issue->userWorkgroups()->get()->map(function($item){
+        $order_issue_work_groups = $order_issue->userWorkgroups()->get()->map(function ($item) {
             return $item->id;
-        } )->toArray();
-        $order_issue->userWorkgroups()->attach(array_diff($work_order_user_workgroup_ids,$order_issue_work_groups));
+        })->toArray();
+        $order_issue->userWorkgroups()->attach(array_diff($work_order_user_workgroup_ids, $order_issue_work_groups));
         $process_logs = $detail->processLogs()->where('status', '未同步')->get();
-        $order_issue->logs()->insert($process_logs->map((function ($process_log) use ($order_issue) {
+
+
+        $processLogs = $process_logs->map((function ($process_log) use ($order_issue) {
             return [
                 'order_issue_id' => $order_issue->id,
                 'user_id' => $process_log->user_id,
@@ -401,14 +407,37 @@ class WorkOrderService
                 'type' => $process_log->type,
                 'tag' => $process_log->tag,
             ];
-        }))->toArray());
+        }))->toArray();
+        if ($detail->order_issue_type_id == $orderIssueType->id) {
+            $commodityLog = $detail->commodities()->where('check_result', '!=', '核实未错漏发')->get()->map(function ($item) use ($order_issue) {
+                $count = 0;
+                $abnormalAmount = intval($item->abnormal_amount);
+                $baoShiCheckAmount = intval($item->bao_shi_check_amount);
+                if ($item->abnormal_type === '少发') {
+                    $count = $baoShiCheckAmount  - $abnormalAmount;
+                } else if ($item->abnormal_type === '多发') {
+                    $count =  $abnormalAmount- $baoShiCheckAmount;
+                }
+                return [
+                    'order_issue_id' => $order_issue->id,
+                    'user_id' => Auth::id(),
+                    'content' => $item->sku . ' ' . $item->commodity->name . ' ' . $item->abnormal_type . '(' . $count.')',
+                    'created_at' => $item->updated_at,
+                    'updated_at' => $item->updated_at,
+                    'type' => '处理',
+                    'tag' => 0
+                ];
+            })->toArray();
+            $processLogs = array_merge($commodityLog, $processLogs);
+        }
+        $order_issue->logs()->insert($processLogs);
         $this->orderIssueService->endOrderIssues([$order_issue->id]);
         $detail->processLogs()->where('status', '未同步')->update(['status' => '同步']);
     }
 
-    public function customRejectedStatus($ids,$customRejectedStatus): int
+    public function customRejectedStatus($ids, $customRejectedStatus): int
     {
-        return WorkOrder::query()->whereIn('id',$ids)->update(['custom_rejected_status' => $customRejectedStatus]);
+        return WorkOrder::query()->whereIn('id', $ids)->update(['custom_rejected_status' => $customRejectedStatus]);
     }
 
 }

+ 7 - 7
app/Traits/LogisticSyncTrait.php

@@ -30,6 +30,8 @@ trait LogisticSyncTrait
         }
         /** @var \Carbon\Carbon $sent_at */
         $sent_at = $orderPackage->sent_at;
+        /** @var \Carbon\Carbon $issue_time 订单下发时间 */
+        $issue_time = $orderPackage->order->created_at;
         /**执行该方法时,默认没有异常,
          *1. 之前有异常的件,
          *  1.1 新的状态是无异常的可以更新为正常
@@ -39,22 +41,20 @@ trait LogisticSyncTrait
          *  2.2 新的状态异常更新为对应异常
          */
         $data['exception_status'] = '';
-        $created_at = Carbon::parse($orderPackage->created_at);
         //当天的16:30
         $transfer_status = $data['transfer_status'] ?? [];
         if (empty($sent_at)) {//没复核
             if (empty($transfer_status)) {//没有路由信息
                 //延迟发货
-                $created_at_clone = deep_copy($created_at);
-                if ($created_at->gt($created_at_clone->startOfDay()->addHours(16)->addMinutes(30))) {//下午16.30的单
-                    $created_at_clone = deep_copy($created_at);
-                    if ($created_at_clone->addDay()->endOfDay()->lt(now())) {//超过第二天的24时
-                        $created_at_clone = deep_copy($created_at);
+                $issue_time_clone = deep_copy($issue_time);
+                if ($issue_time->gt($issue_time_clone->startOfDay()->addHours(16)->addMinutes(30))) {//下午16:30的单
+                    $issue_time_clone = deep_copy($issue_time);
+                    if ($issue_time_clone->addDay()->endOfDay()->lt(now())) {//超过第二天的24时
                         $data['exception_status'] = '延迟发货';
                         $data['is_delay_deliver'] = true;
                     }
                 } else {
-                    if ($created_at_clone->endOfDay()->lt(now())) {//超过当天的24时
+                    if ($issue_time_clone->endOfDay()->lt(now())) {//超过当天的24时
                         $data['exception_status'] = '延迟发货';
                         $data['is_delay_deliver'] = true;
                     }

+ 32 - 0
database/migrations/2022_03_15_080709_add_card_id_to_labor_company_dispatch_details_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddCardIdToLaborCompanyDispatchDetailsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('labor_company_dispatch_details', function (Blueprint $table) {
+            $table->string("card_id")->nullable()->comment("身份证号");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('labor_company_dispatch_details', function (Blueprint $table) {
+            $table->dropColumn("card_id");
+        });
+    }
+}

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

@@ -1150,7 +1150,7 @@
                             item.issue_type_name = detail.issue_type ? detail.issue_type.name : '';
                             return item;
                         });
-                        commodities.push(...(commodity_items ?? []))
+                        commodities.push(...(commodity_items ?commodity_items: []))
                     });
                     return commodities.filter(item => {
                         if (!isCurrent) {
@@ -1893,8 +1893,8 @@
                         {process_result: '少发,不补发', option: ['已完成入库','完成']},
                         {process_result: '核实未错漏发', option: ['确认未错漏发']},
                     ];
-                    return items.filter(e => process_result === e.process_result).map(e => e.option).shift() ?? [];
-
+                    let shift =  items.filter(e => process_result === e.process_result).map(e => e.option).shift() ;
+                    return shift ? shift : [];
                 },
                 getOwnerMistakeProcessResultInfo(process_result, item) {
                     let items = [
@@ -1904,7 +1904,8 @@
                         {process_result: "少发,不补发", option: ['商家做入库单,选择明细和数量','不入库'],},
                         {process_result: "核实未错漏发", option: ['确认未错漏发'],},
                     ];
-                    let options = items.filter(e => e.process_result === process_result).map(e => e.option).shift() ?? [];
+                    let shift = items.filter(e => e.process_result === process_result).map(e => e.option).shift();
+                    let options = shift  ? shift : []
                     if (options.length === 0) {
                         item.process_result_info = options[0];
                     }

+ 5 - 1
resources/views/personnel/laborApply/dispatch/detail/create.blade.php

@@ -31,7 +31,11 @@
                                     <input class="form-control" type="number" :name="'users['+i+'][age]'"
                                            :id="'users['+i+'][age]'">
                                 </div>
-
+                                <label class="col-lg-1 col-sm-3 col-form-label" :for="'users['+i+'][cardId]'">身份证</label>
+                                <div class="col-lg-2 col-sm-12">
+                                    <input class="form-control" type="text" :name="'users['+i+'][card_id]'"
+                                           :id="'users['+i+'][card_id]'">
+                                </div>
                                 <div v-if="i!==0" class="col-1 ml-1">
                                     <button class="btn btn-sm btn-primary float-right" type="button"
                                             @click="items.splice(i,1)">-

+ 6 - 1
resources/views/personnel/laborApply/dispatch/detail/edit.blade.php

@@ -32,7 +32,12 @@
                                            :value="item.age"
                                            :id="'users['+i+'][age]'">
                                 </div>
-
+                                <label class="col-lg-1 col-sm-3 col-form-label" :for="'users['+i+'][cardId]'">身份证</label>
+                                <div class="col-lg-2 col-sm-12">
+                                    <input class="form-control" type="text" :name="'users['+i+'][card_id]'"
+                                           :value="item.card_id"
+                                           :id="'users['+i+'][card_id]'">
+                                </div>
                                 <div v-if="i!==0" class="col-1 ml-1">
                                     <button class="btn btn-sm btn-primary float-right" type="button"
                                             @click="items.splice(i,1)">-

+ 2 - 0
resources/views/personnel/laborApply/dispatch/index.blade.php

@@ -77,6 +77,7 @@
                                     <td>@{{ v.name }}</td>
                                     <td>@{{ v.gender }}</td>
                                     <td>@{{ v.age }}</td>
+                                    <td>@{{ v.card_id }}</td>
                                 </tr>
                             </table>
                             <table v-else style="margin: 0;padding: 0">
@@ -84,6 +85,7 @@
                                     <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].name }}</td>
                                     <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].gender }}</td>
                                     <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].age }}</td>
+                                    <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].card_id }}</td>
                                 </tr>
                             </table>
                             <a href="javascript:void(0)"

+ 63 - 21
resources/views/station/monitor/show.blade.php

@@ -217,7 +217,8 @@
                                            placeholder="点选此处写入料箱号,可以省略IDE前缀和0,多个用空格分隔,例入:5121 156"></textarea>
                                             <button class="btn btn-info btn-lg" @click="manuallyTakeBoxOut">出库</button>
                                             <button class="btn btn-success btn-lg" @click="manuallyTakeBoxOutTwo">二期出库</button>
-<!--                                            <button class="btn btn-sm btn-primary btn-lg" @click="paddingEmptyBox">填充空箱</button>-->
+                                            <button class="btn btn-success btn-lg" @click="manuallyTakeBoxInTwo">二期入库</button>
+                                            <button class="btn btn-sm btn-primary btn-lg" @click="paddingEmptyBox">填充空箱</button>
                                             <div class="row mt-1">
                                                 <select class="form-control ml-3" v-model="type" style="width:150px">
                                                     <option v-for="strategy in strategies" :value="strategy.code">@{{ strategy.name }}</option>
@@ -451,19 +452,22 @@
                         if(obj.dataType !== "heartbeat"){
                             this.box = obj.code;
                             let list = [];
-                            (JSON.parse(obj.list)).forEach(info => {
-                                list.push({
-                                    status : "待处理",
-                                    commodity : {
-                                        name : "",
-                                        barcodes : [
-                                            {code : info.barcode},
-                                            {code : info.barcodeAs},
-                                        ],
-                                    },
-                                    amount : info.quantity
+                            let arr = (JSON.parse(obj.list));
+                            if (arr && arr.length>0){
+                                arr.forEach(info => {
+                                    list.push({
+                                        status : "待处理",
+                                        commodity : {
+                                            name : "",
+                                            barcodes : [
+                                                {code : info.barcode},
+                                                {code : info.barcodeAs},
+                                            ],
+                                        },
+                                        amount : info.quantity
+                                    })
                                 })
-                            })
+                            }
                             this.list = list;
                         }
                     });
@@ -575,7 +579,7 @@
                         type: "get",
                         success : (res,status)=>{
                             if (res.code === 200 && res.data){
-                                window.tempTip.success("开始执行");
+                                window.tempTip.showSuccess("开始执行");
                             } else {
                                 window.tempTip.show(res.message);
                             }
@@ -586,11 +590,7 @@
                         timeout:3000,
                     })
                 },
-                manuallyTakeBoxOutTwo(){
-                    if (this.inputs.manuallyTakeBox.text.length === 13 && this.inputs.manuallyTakeBox.text.substring(0,1) === "W"){
-                        this._waveOutBound(this.inputs.manuallyTakeBox.text);
-                        return;
-                    }
+                _formatBoxes(){
                     let arr = this.inputs.manuallyTakeBox.text.trim().split(/\s+/);
                     if (arr.length===0){
                         return;
@@ -602,7 +602,49 @@
                             boxes.push(before.substring(0,before.length - box.length)+box);
                         }
                     });
-                    if (boxes.length === 0){
+                    return boxes;
+                },
+                manuallyTakeBoxInTwo(){
+                    let boxes = this._formatBoxes();
+                    if (boxes.length===0){
+                        return;
+                    }
+                    window.tempTip.inputVal('请输入货主名称:',(code)=>{
+                        let obj = {
+                            "boxCodes":boxes,
+                            "toLocations":null,
+                            "owner":code,
+                        }
+                        $.ajax({
+                            url: this.baseUrl+"device/robot/hairou/task/createInBound/custom",
+                            type: "post",
+                            headers: {'Content-Type':'application/json;charset=utf8'},
+                            data: JSON.stringify(obj),
+                            success : (res,status)=>{
+                                if (res.code === 200 && res.data){
+                                    window.tempTip.showSuccess("开始执行");
+                                } else {
+                                    window.tempTip.show(res.message);
+                                }
+                            },
+                            error : (err,status)=>{
+                                window.tempTip.show("系统错误");
+                            },
+                            timeout:3000,
+                        })
+                    });
+                },
+                manuallyTakeBoxOutTwo(){
+                    if (this.inputs.manuallyTakeBox.text.length === 13 && this.inputs.manuallyTakeBox.text.substring(0,1) === "W"){
+                        this._waveOutBound(this.inputs.manuallyTakeBox.text);
+                        return;
+                    }
+                    let arr = this.inputs.manuallyTakeBox.text.trim().split(/\s+/);
+                    if (arr.length===0){
+                        return;
+                    }
+                    let boxes = this._formatBoxes();
+                    if (boxes.length===0){
                         return;
                     }
                     let obj = {
@@ -617,7 +659,7 @@
                         data: JSON.stringify(obj),
                         success : (res,status)=>{
                             if (res.code === 200 && res.data){
-                                window.tempTip.success("开始执行");
+                                window.tempTip.showSuccess("开始执行");
                             } else {
                                 window.tempTip.show(res.message);
                             }