Kaynağa Gözat

Merge branch 'master' into zzd

zhouzhendong 4 yıl önce
ebeveyn
işleme
8d919aaf5b

+ 6 - 1
app/Filters/OrderIssueFilters.php

@@ -251,7 +251,12 @@ class OrderIssueFilters
 
     public function logistic($logistic_id)
     {
-        $this->getOrderQuery()->where('orders.logistic_id',$logistic_id);
+        if (strpos($logistic_id, ',') || strpos($logistic_id, ',') || strpos($logistic_id, ' ')) {
+            $arr = array_filter(preg_split('/[,, ]+/is', $logistic_id));
+            $this->getOrderQuery()->whereIn('orders.logistic_id',$arr);
+        } else {
+            $this->getOrderQuery()->where('orders.logistic_id',$logistic_id);
+        }
     }
 
     public function custom_code($custom_code)

+ 16 - 1
app/Filters/RequirementFilters.php

@@ -4,6 +4,7 @@
 namespace App\Filters;
 
 use App\Order;
+use App\Requirement;
 use App\RequirementUser;
 use App\Services\UserService;
 use Illuminate\Http\Request;
@@ -25,6 +26,8 @@ class RequirementFilters
         'finished_at_end',
         'created_at_start',
         'created_at_end',
+        'requirement_id',
+        'status'
     ];
 
     public function __construct(Request $request)
@@ -46,7 +49,7 @@ class RequirementFilters
 
     public function creator_id($creator_id)
     {
-        $this->queryBuilder->where('user_id', $creator_id);
+        $this->queryBuilder->where('u];ser_id', $creator_id);
     }
 
     private function worker_ids($worker_ids)
@@ -93,4 +96,16 @@ class RequirementFilters
     {
         $this->queryBuilder->where('title', 'like', $title.'%');
     }
+
+    //        'requirement_id',
+    //        'status'
+    public function status($status)
+    {
+        $this->queryBuilder->where('status', Requirement::$enums['status'][$status]);
+    }
+
+    public function requirement_id($requirement_id)
+    {
+        $this->queryBuilder->where('id', $requirement_id);
+    }
 }

+ 4 - 2
app/Http/Controllers/CustomerController.php

@@ -18,6 +18,7 @@ use App\Services\OwnerBillReportService;
 use App\Services\OwnerReportService;
 use App\Services\OwnerService;
 use App\Store;
+use App\UserWorkgroup;
 use Exception;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
@@ -100,7 +101,8 @@ class CustomerController extends Controller
         $customers = app('CustomerService')->getSelection();
         $ownerGroups = app('UserOwnerGroupService')->getSelection();
         $params = request()->input();
-        return response()->view('customer.project.index',compact("owners","models","customers","ownerGroups","params"));
+        $userWorkGroups = UserWorkgroup::all();
+        return response()->view('customer.project.index',compact("owners","models","customers","ownerGroups","params",'userWorkGroups'));
     }
 
     public function projectIndexExport(Request $request)
@@ -551,7 +553,7 @@ class CustomerController extends Controller
         $month = request("month");
         $owner = request("owner");
         $sql = <<<sql
-SELECT owner_id,SUM(IFNULL(work_fee,0)) AS work_fee,SUM(IFNULL(logistic_fee,0)) AS logistic_fee 
+SELECT owner_id,SUM(IFNULL(work_fee,0)) AS work_fee,SUM(IFNULL(logistic_fee,0)) AS logistic_fee
 FROM owner_fee_details WHERE worked_at LIKE ? AND ((type = '发货' AND logistic_fee IS NOT NULL AND work_fee IS NOT NULL) OR (type <> '发货' AND work_fee IS NOT NULL))
 sql;
         if ($owner && count($owner)>0){

+ 1 - 3
app/Http/Controllers/DischargeTaskController.php

@@ -148,13 +148,11 @@ class DischargeTaskController extends Controller
     {
         $this->gate('人事管理-卸货-结算报表-查询');
 
-        $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner', 'warehouse'])->filter($filters)->orderByDesc('id')->get();
-
+        $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner', 'warehouse'])->filter($filters)->orderByDesc('income_at')->get();
         $row = ['日期', '客户名称', '仓库', '作业名称', '入库单号', '数量', '单位', '收入单价', '收入合计', '装卸队', '数量', '单位', '支出单价', '支出合计', '状态', '收入备注', '支出备注'];
         $json = app('DischargeTaskService')->getStatementsJson($dischargeTasks);
 
         return Export::make($row, $json, "卸货结算报表");
-        //return app(ExportService::class)->json($row, $json, "卸货结算报表");
     }
 
     public function receipt(Request $request)

+ 8 - 5
app/Http/Controllers/HandInStorageController.php

@@ -146,13 +146,14 @@ class HandInStorageController extends Controller
         if (!$info['location']||!$info['amount']||!$info['trackNumber']||!$info['barCode']) $this->error('参数错误');
         if (count($request->input('checkData'))==0) $this->error('请勾选要上架任务');
         $checkData=$request->input('checkData')[0];
-        $location=OracleBasLocation::query()
-                ->where('locationid',$info['location'])
-                ->where('status','OK')
-                ->first();
-        if (!$location)$this->error('目标库位不存在');
         /** @var HandInStorageService $handInStorageService  */
         $handInStorageService=app('HandInStorageService');
+        //判断当前库位是否能放该商品
+        $res=$handInStorageService->checkLocation($info,$checkData);
+        if ($res===1)$this->error('库位不存在');
+        if ($res===2)$this->error('库位:产品和批次不可混放');
+        if ($res===3)$this->error('库位:不能混放批次');
+        if ($res===4)$this->error('库位:产品不能混放');
         try {
             $result = $handInStorageService->fluxHandPa($info, $checkData);
             if ($result)$this->success("上架成功");
@@ -163,4 +164,6 @@ class HandInStorageController extends Controller
     }
 
 
+
+
 }

+ 37 - 5
app/Http/Controllers/RequirementController.php

@@ -35,7 +35,7 @@ class RequirementController extends Controller
     {
         $requirement->fill($request->all());
         $requirement->user_id = Auth::id();
-        $requirement->status = '已发布';
+        $requirement->status = '待接收';
         $requirement->save();
         return redirect()->route('requirements.index', $requirement->id)->with('success', '需求创建成功!');
     }
@@ -74,18 +74,26 @@ class RequirementController extends Controller
 
     }
 
-    public function begin(Requirement $requirement)
+    public function begin(Requirement $requirement,Request $request)
     {
         $this->authorize('begin', $requirement);
-        $requirement->status = '已开始';
+        $requirement->status = '开发中';
         $requirement->began_at = now();
+        if (count($request->users) > 0) {
+            $attachData = [];
+            foreach ($request->users as $worker) {
+                $attachData[] = $worker['name'];
+            }
+            $requirement->workers()->sync($attachData);
+        }
+
         $requirement->save();
         return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已开始执行');
     }
 
     public function finish(Request $request, Requirement $requirement)
     {
-        $requirement->status = '已完成';
+        $requirement->status = '待验收';
         if (count($request->users) > 0) {
             $attachData = [];
             foreach ($request->users as $worker) {
@@ -95,6 +103,30 @@ class RequirementController extends Controller
         }
         $requirement->finished_at = now();
         $requirement->save();
-        return redirect()->route('requirements.show', $requirement->id)->with('success', '需求已完成');
+        return redirect()->route('requirements.show', $requirement->id)->with('success', '需求等待验收');
+    }
+
+    public function review(Requirement $requirement,Request $request)
+    {
+        //验收通过
+        if ($request->flag==="1") {
+            $requirement->status = '验收通过';
+        }
+        //验收未通过
+        if ($request->flag==="0") {
+            $requirement->status = '验收未通过';
+        }
+        $requirement->reviewed_at = now();
+        $requirement->save();
+        return redirect()->route('requirements.show', $requirement->id)->with('success', '验收完成');
+    }
+
+    public function againReview(Requirement $requirement,Request $request)
+    {
+        $requirement->status = '开发中';
+        $requirement->finished_at = null;
+        $requirement->reviewed_at = null;
+        $requirement->save();
+        return redirect()->route('requirements.show', $requirement->id)->with('success', '再次申请验收流程完成');
     }
 }

+ 0 - 1
app/OwnerLogisticFeeDetail.php

@@ -44,7 +44,6 @@ class OwnerLogisticFeeDetail extends Model
     public static function buildSelectData($data): array
     {
         return [
-            'owner_fee_detail_id' => $data['owner_fee_detail_id'] ?? '',
             'logistic_bill' => $data['logistic_bill'] ?? '',
             'initial_weight' => $data['initial_weight'] ?? '',
             'additional_weight' => $data['additional_weight'] ?? '',

+ 1 - 1
app/OwnerStoreOutFeeDetail.php

@@ -23,7 +23,7 @@ class OwnerStoreOutFeeDetail extends Model
         'price_remark',//价格描述
         'tax_fee',//税费
         'sku',//商家编码
-        'packingMaterialFee',//耗材费
+        'packing_material_fee',//耗材费
         'barcode',//商品条码
         'work_name',//作业名称
         'fee',//费用

+ 2 - 2
app/Policies/RequirementPolicy.php

@@ -27,11 +27,11 @@ class RequirementPolicy
 
     public function destroy(User $user, \App\Requirement $requirement)
     {
-        return $requirement->status != '已完成';
+        return $requirement->status == '待接收';
     }
 
     public function begin(User $user ,\App\Requirement $requirement)
     {
-        return $requirement->status == '已发布';
+        return $requirement->status == '待接收';
     }
 }

+ 7 - 3
app/Requirement.php

@@ -25,19 +25,23 @@ class Requirement extends Model
         'status',//状态
         'began_at',//开始时间
         'finished_at',//完成时间
+        'reviewed_at',//验收时间
     ];
 
     public $dates = [
         'began_at',//开始时间
         'finished_at',//完成时间
+        'reviewed_at',//验收时间
     ];
 
     static public $enums=[
         'status'=>[
             ''=>0,
-            '已发布'=>1,
-            '已开始'=>2,
-            '已完成'=>3,
+            '待接收'=>1,
+            '开发中'=>2,
+            '待验收'=>3,
+            '验收通过'=>4,
+            '验收未通过'=>5,
         ],
     ];
     function __construct(array $attributes = [])

+ 1 - 5
app/Services/DischargeTaskService.php

@@ -123,13 +123,9 @@ class DischargeTaskService
     {
         $json = [];
         foreach ($dischargeTasks as $dischargeTask) {
-
             /** @var DischargeTask $dischargeTask */
-            /** @var Carbon $date */
-            $date = $dischargeTask['created_at'];
-
             $json[] = [
-                $date->toDateTimeString() ,                          // 日期
+                $dischargeTask['income_at'],                        // 日期
                 $dischargeTask->owner->name ?? '',                  // 客户名称
                 $dischargeTask->warehouse->name ?? '',              // 仓库
                 DischargeTask::types[$dischargeTask['type']] ?? '',   // 作业名称

+ 240 - 180
app/Services/HandInStorageService.php

@@ -4,10 +4,13 @@ namespace App\Services;
 
 use App\CommodityBarcode;
 use App\OracleBasCode;
+use App\OracleBasLocation;
+use App\OracleBasLotId;
 use App\OracleBasSKU;
 use App\OracleDOCASNDetail;
 use App\OracleDOCASNHeader;
 use App\OracleInvLotAtt;
+use App\OracleInvLotLocId;
 use App\Traits\ServiceAppAop;
 use App\ValueStore;
 use Carbon\Carbon;
@@ -23,16 +26,68 @@ class HandInStorageService
 {
     use ServiceAppAop;
 
+    public function checkLocation(array $info, array $param)
+    {
+        $location = OracleBasLocation::query()
+            ->where('locationid', $info['location'])
+            ->where('status', 'OK')
+            ->first();
+
+        if (!$location) return 1;//库位不存在
+
+        if ($location['mix_flag'] == 'N' && $location['mix_lotflag'] == 'N') { // 库位:产品和批次都不可混放
+            $inv = OracleInvLotLocId::query()->where('locationid', $info['location'])->first();
+
+            if (!$inv) return true; //当前库位无库存余量 可直接入库
+
+            if ($inv['customerid'] == $param['customerid'] && $inv['sku'] == $param['sku']
+                && $inv['lotnum'] == $param['plantolotnum'])
+                return true;
+            else return 2; //库位:产品和批次不可混放
+        }
+
+
+        if ($location['mix_flag'] == 'Y' && $location['mix_lotflag'] == 'N') {//库位:产品可混放,批次不可
+            $invs = OracleInvLotLocId::query()->where('locationid', $info['location'])->get();
+
+            if ($invs->count() == 0) return true; //当前库位无库存余量 可直接入库
+
+            $skuInvs = [];    // 库位没有该商品
+            foreach ($invs as $inv) {
+                if ($inv['customerid'] != $param['customerid'] || $inv['sku'] != $param['sku']) {  // 库位没有该商品
+                    $skuInvs[] = $inv;
+                    continue;
+                }
+                if ($inv['lotnum'] == $param['plantolotnum']) return true; // 批次相同
+                return 3;   //库位:产品相同,不能混放批次
+            }
+            if (count($skuInvs) == count($invs)) return true;
+        }
+        if ($location['mix_flag'] == 'N' && $location['mix_lotflag'] == 'Y') {  //库位:产品不可混放,批次可混放
+            $inv = OracleInvLotLocId::query()->where('locationid', $info['location'])->first();
+            if (!$inv) return true; //当前库位无库存余量 可直接入库
+
+            if ($inv['customerid'] == $param['customerid'] || $inv['sku'] == $param['sku']) return true;
+            else return 4; //库位:产品不能混放
+        }
+        // 库位
+        return true;
+    }
 
+    /**
+     * @param array $info
+     * @return int|mixed
+     * 校验asn单号是否能收货
+     */
     public function checkAsnOperation(array $info)
     {
-        if (!$info['customerid']||!$info['asntype']){
-            $asn=OracleDOCASNHeader::query()
-            ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
-            ->where('asnno',$info['asnno'])
-            ->whereIn('asnstatus',['00','30'])
-            ->first();
-            if (!$asn)return 1; //无效asn单号
+        if (!$info['customerid'] || !$info['asntype']) {
+            $asn = OracleDOCASNHeader::query()
+                ->select(['asnno', 'asnreference1', 'asnstatus', 'addtime', 'customerid', 'asntype'])
+                ->where('asnno', $info['asnno'])
+                ->whereIn('asnstatus', ['00', '30'])
+                ->first();
+            if (!$asn) return 1; //无效asn单号
             return $this->whetherDeliver($asn);
         }
         return $this->whetherDeliver($info);
@@ -40,8 +95,8 @@ class HandInStorageService
 
     private function whetherDeliver($asn)
     {
-        if ($asn['asntype']!='XNRK' && $asn['asntype']!='THRK' && $asn['asntype']!='F31'){
-            $res=app(DeliveryAppointmentService::class)->checkOperableAsn($asn['asnno'],$asn['customerid']);
+        if ($asn['asntype'] != 'XNRK' && $asn['asntype'] != 'THRK' && $asn['asntype'] != 'F31') {
+            $res = app(DeliveryAppointmentService::class)->checkOperableAsn($asn['asnno'], $asn['customerid']);
             if ($res) return $asn;
             else return 2; //当前asn单号无预约记录
         }
@@ -57,27 +112,27 @@ class HandInStorageService
     public function selectAsn($asn)
     {
         if (!$asn) return OracleDOCASNHeader::query()
-            ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
-            ->where('asnstatus','00')
+            ->select(['asnno', 'asnreference1', 'asnstatus', 'addtime', 'customerid', 'asntype'])
+            ->where('asnstatus', '00')
             ->orderByDesc('addtime')
             ->limit(50)
             ->get();
 
-        if (strpos(strtoupper($asn),'ASN')!==false){
+        if (strpos(strtoupper($asn), 'ASN') !== false) {
             return OracleDOCASNHeader::query()
-                ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
-                ->where('asnno',$asn)
-                ->whereIn('asnstatus',['00','30'])
+                ->select(['asnno', 'asnreference1', 'asnstatus', 'addtime', 'customerid', 'asntype'])
+                ->where('asnno', $asn)
+                ->whereIn('asnstatus', ['00', '30'])
                 ->get();
-        }else {
-            $asns=OracleDOCASNHeader::query()
-                ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
-                ->where('customerid',strtoupper($asn))
-                ->whereIn('asnstatus',['00','30'])
+        } else {
+            $asns = OracleDOCASNHeader::query()
+                ->select(['asnno', 'asnreference1', 'asnstatus', 'addtime', 'customerid', 'asntype'])
+                ->where('customerid', strtoupper($asn))
+                ->whereIn('asnstatus', ['00', '30'])
                 ->get();
-            if ($asns->count()>0){
+            if ($asns->count() > 0) {
                 return $asns;
-            }else{
+            } else {
                 $sql = <<<SQL
  SELECT DOC_ASN_HEADER.ASNNO,DOC_ASN_HEADER.addtime,DOC_ASN_HEADER.asnreference1,DOC_ASN_HEADER.customerid,DOC_ASN_HEADER.asnstatus,DOC_ASN_HEADER.asntype FROM DOC_ASN_HEADER
                   LEFT JOIN DOC_ASN_DETAILS ON DOC_ASN_HEADER.ASNNO = DOC_ASN_DETAILS.ASNNO
@@ -85,7 +140,7 @@ class HandInStorageService
 WHERE DOC_ASN_HEADER.ASNSTATUS in ('00','30') and (BAS_SKU.ALTERNATE_SKU1 = ? OR BAS_SKU.ALTERNATE_SKU2 = ?  OR BAS_SKU.ALTERNATE_SKU3 = ?)
 group by DOC_ASN_HEADER.ASNNO,DOC_ASN_HEADER.addtime,DOC_ASN_HEADER.asnreference1,DOC_ASN_HEADER.customerid,DOC_ASN_HEADER.asnstatus,DOC_ASN_HEADER.asntype
 SQL;
-                return DB::connection("oracle")->select(DB::raw($sql),[$asn,$asn,$asn]);
+                return DB::connection("oracle")->select(DB::raw($sql), [$asn, $asn, $asn]);
             }
         }
 
@@ -104,8 +159,8 @@ SQL;
 FROM DOC_ASN_DETAILS LEFT JOIN BAS_SKU ON DOC_ASN_DETAILS.CUSTOMERID = BAS_SKU.CUSTOMERID AND DOC_ASN_DETAILS.SKU = BAS_SKU.SKU
 WHERE asnno = ? AND linestatus IN ('00','30')
 sql;
-        $asn_details = DB::connection("oracle")->select(DB::raw($sql),[$asnno]);
-        if (count($asn_details)>0)return $asn_details;
+        $asn_details = DB::connection("oracle")->select(DB::raw($sql), [$asnno]);
+        if (count($asn_details) > 0) return $asn_details;
         else return array();
     }
 
@@ -115,7 +170,7 @@ sql;
      * @return Builder|Model|object|null
      *根据sku 或者条码获取asn_detail
      */
-    public function getAsnDetail($asnno,$skuOrBarcode)
+    public function getAsnDetail($asnno, $skuOrBarcode)
     {
         $sql = <<<sql
 SELECT DOC_ASN_DETAILS.sku,DOC_ASN_DETAILS.expectedqty,DOC_ASN_DETAILS.skudescrc,
@@ -123,13 +178,13 @@ SELECT DOC_ASN_DETAILS.sku,DOC_ASN_DETAILS.expectedqty,DOC_ASN_DETAILS.skudescrc
          LEFT JOIN BAS_SKU ON DOC_ASN_DETAILS.CUSTOMERID = BAS_SKU.CUSTOMERID AND DOC_ASN_DETAILS.SKU = BAS_SKU.SKU
 WHERE ASNNO = ? AND LINESTATUS IN ('00','30') AND (ALTERNATE_SKU1 = ? OR ALTERNATE_SKU2 = ?  OR ALTERNATE_SKU3 = ?)
 sql;
-        $asn_detail = DB::connection("oracle")->selectOne(DB::raw($sql),[$asnno,$skuOrBarcode,$skuOrBarcode,$skuOrBarcode]);
-        if ($asn_detail)return $asn_detail;
+        $asn_detail = DB::connection("oracle")->selectOne(DB::raw($sql), [$asnno, $skuOrBarcode, $skuOrBarcode, $skuOrBarcode]);
+        if ($asn_detail) return $asn_detail;
         else return OracleDOCASNDetail::query()
-            ->select(['sku','expectedqty','skudescrc','asnlineno','asnno','receivedqty'])
-            ->where('asnno',$asnno)
-            ->where('sku',$skuOrBarcode)
-            ->whereIn('linestatus',['00','30'])
+            ->select(['sku', 'expectedqty', 'skudescrc', 'asnlineno', 'asnno', 'receivedqty'])
+            ->where('asnno', $asnno)
+            ->where('sku', $skuOrBarcode)
+            ->whereIn('linestatus', ['00', '30'])
             ->first();
     }
 
@@ -140,8 +195,8 @@ sql;
     public function getQualityStatus()
     {
         return Cache::remember('BAS_CODE_QLT_STS', 600, function () {
-            return OracleBasCode::query()->select(['codeid','code','codename_c'])
-                ->where('codeid','QLT_STS')
+            return OracleBasCode::query()->select(['codeid', 'code', 'codename_c'])
+                ->where('codeid', 'QLT_STS')
                 ->get();
         });
     }
@@ -153,8 +208,8 @@ sql;
     public function getAttributeLocation()
     {
         return Cache::remember('BAS_CODE_CUS_UDFPC', 600, function () {
-            return OracleBasCode::query()->select(['codeid','code','codename_c'])
-                ->where('codeid','CUS_UDFPC')
+            return OracleBasCode::query()->select(['codeid', 'code', 'codename_c'])
+                ->where('codeid', 'CUS_UDFPC')
                 ->get();
         });
     }
@@ -165,12 +220,12 @@ sql;
      * @return mixed
      * 根据customerid和sku 查询商品关联的批次属性规则
      */
-    public function getBasSkuLotId($customerid,$sku)
+    public function getBasSkuLotId($customerid, $sku)
     {
-        return Cache::remember('bas_sku_lot_'.$customerid.'_'.$sku, 600, function ()use($customerid,$sku) {
-            return OracleBasSKU::query()->select(['customerid','sku','lotid'])
-                ->where('customerid',$customerid)
-                ->where('sku',$sku)
+        return Cache::remember('bas_sku_lot_' . $customerid . '_' . $sku, 600, function () use ($customerid, $sku) {
+            return OracleBasSKU::query()->select(['customerid', 'sku', 'lotid'])
+                ->where('customerid', $customerid)
+                ->where('sku', $sku)
                 ->with('lotId')
                 ->first();
         });
@@ -181,7 +236,7 @@ sql;
      * @return array
      * 根据商品条码  获取完全收货状态  部分收货状态的 PA任务
      */
-    public function getTsk(string $trackNumber,string $barCode): array
+    public function getTsk(string $trackNumber, string $barCode): array
     {
         $sql = <<<sql
 SELECT TSK_TASKLISTS.CustomerID,TSK_TASKLISTS.Sku,TSK_TASKLISTS.PlanToLotNum,TSK_TASKLISTS.PlanToID,DOC_ASN_DETAILS.SKUDESCRC,sum(TSK_TASKLISTS.PlanToQty) AS QTY
@@ -197,8 +252,8 @@ WHERE
   AND TSK_TASKLISTS.PlanToID= ?
   group by TSK_TASKLISTS.CustomerID,TSK_TASKLISTS.Sku,TSK_TASKLISTS.PlanToLotNum,TSK_TASKLISTS.PlanToID,DOC_ASN_DETAILS.SKUDESCRC
 sql;
-        $tasks = DB::connection("oracle")->select(DB::raw($sql),[$barCode,$barCode,$barCode,$trackNumber]);
-        if (!$tasks)return [];
+        $tasks = DB::connection("oracle")->select(DB::raw($sql), [$barCode, $barCode, $barCode, $trackNumber]);
+        if (!$tasks) return [];
         else return $tasks;
     }
 
@@ -208,11 +263,11 @@ sql;
      */
     public function fluxHandPa(array $info, array $taskParam): bool
     {
-        $tasks=$this->selectFluxTask($taskParam,$info['amount']);
-        if (!$tasks)return false; //获取任务失败
-        return DB::connection("oracle")->transaction(function ()use($tasks,$info){ //单体嵌套事务 回滚FLUX失败任务
-            foreach ($tasks as $task){
-                if (!app("StorageService")->fluxPA($task,$info['location'])){
+        $tasks = $this->selectFluxTask($taskParam, $info['amount']);
+        if (!$tasks) return false; //获取任务失败
+        return DB::connection("oracle")->transaction(function () use ($tasks, $info) { //单体嵌套事务 回滚FLUX失败任务
+            foreach ($tasks as $task) {
+                if (!app("StorageService")->fluxPA($task, $info['location'])) {
                     DB::connection("oracle")->rollBack();
                     return false; //上架失败
                 }
@@ -227,29 +282,29 @@ sql;
      * @return array
      * 根据跟踪号,货主,sku,批次 获取任务列表   再通过数量 进行任务的重组(拆分或选定)
      */
-    public function selectFluxTask($taskParam,$amount): array
+    public function selectFluxTask($taskParam, $amount): array
     {
-        /** @var StorageService $storageService  */
-        $storageService=app('StorageService');
+        /** @var StorageService $storageService */
+        $storageService = app('StorageService');
         $sql = <<<sql
 select * from TSK_TASKLISTS where customerid = ? AND sku = ? AND plantoid = ? AND plantolotnum = ? AND TASKPROCESS = '00' AND TASKTYPE = 'PA'
 sql;
-        $tasks = DB::connection("oracle")->select(DB::raw($sql),[$taskParam['customerid'],$taskParam['sku'],$taskParam['plantoid'],$taskParam['plantolotnum']]);
-        if (!$tasks)return [];
+        $tasks = DB::connection("oracle")->select(DB::raw($sql), [$taskParam['customerid'], $taskParam['sku'], $taskParam['plantoid'], $taskParam['plantolotnum']]);
+        if (!$tasks) return [];
         $nums = [];
         $sum = 0;
         $maxIndex = null;
-        foreach ($tasks as $i => $task){
-            if ((int)$task->fmqty == $amount)return [$task];
+        foreach ($tasks as $i => $task) {
+            if ((int)$task->fmqty == $amount) return [$task];
             $nums[] = (int)$task->fmqty;
             $sum += (int)$task->fmqty;
-            if ((int)$task->fmqty>$amount)$maxIndex = $i;
+            if ((int)$task->fmqty > $amount) $maxIndex = $i;
         }
-        if ($sum<$amount)return []; //上架数大于入库数
-        $result = $storageService->getMatch($nums,$amount);
-        if (!$result)return $storageService->splitTask($tasks,$maxIndex,$amount);
+        if ($sum < $amount) return []; //上架数大于入库数
+        $result = $storageService->getMatch($nums, $amount);
+        if (!$result) return $storageService->splitTask($tasks, $maxIndex, $amount);
         $arr = [];
-        foreach ($result as $index)$arr[] = $tasks[$index];
+        foreach ($result as $index) $arr[] = $tasks[$index];
         return $arr;
     }
 
@@ -260,37 +315,39 @@ sql;
      */
     public function fluxHandIn(array $info)
     {
-        $lotatt=array_filter($info,function ($key){
-            return strpos($key,'lotatt')===0;
-        },ARRAY_FILTER_USE_KEY);
-        $invlotatt=[];
-        for ($i=1;$i<=8;$i++){$invlotatt["lotatt0{$i}"]=null;}
-        foreach ($invlotatt as $key=>&$item){
-            foreach ($lotatt as $key1=>$item1){
-                if ($key===$key1) $item=$item1;
+        $lotatt = array_filter($info, function ($key) {
+            return strpos($key, 'lotatt') === 0;
+        }, ARRAY_FILTER_USE_KEY);
+        $invlotatt = [];
+        for ($i = 1; $i <= 8; $i++) {
+            $invlotatt["lotatt0{$i}"] = null;
+        }
+        foreach ($invlotatt as $key => &$item) {
+            foreach ($lotatt as $key1 => $item1) {
+                if ($key === $key1) $item = $item1;
             }
         }
-        $who= 'WAS'.(Auth::user() ? '-'.Auth::user()["name"] : '');
-        $time=Carbon::now()->toDateTimeString();
-        return DB::connection("oracle")->transaction(function ()use ($info,$invlotatt,$who,$time){
+        $who = 'WAS' . (Auth::user() ? '-' . Auth::user()["name"] : '');
+        $time = Carbon::now()->toDateTimeString();
+        return DB::connection("oracle")->transaction(function () use ($info, $invlotatt, $who, $time) {
             //flux 批次号
-            $lotNum=$this->getOrCreateLotNum($info,$invlotatt,$who,$time);
-            if (!$lotNum){
+            $lotNum = $this->getOrCreateLotNum($info, $invlotatt, $who, $time);
+            if (!$lotNum) {
                 DB::connection("oracle")->rollBack();
                 return false;
             }
             //flux 创建入库事务
-            $actTransactionLog=$this->setFluxActTransactionLog($info,$lotNum,$who,$time);
-            if (!$actTransactionLog){
+            $actTransactionLog = $this->setFluxActTransactionLog($info, $lotNum, $who, $time);
+            if (!$actTransactionLog) {
                 DB::connection("oracle")->rollBack();
                 return false;
             }
             //flux 创建上架任务
-            $this->setFluxTskTaskListPA($info,$invlotatt, $actTransactionLog, $who, $time);
+            $this->setFluxTskTaskListPA($info, $invlotatt, $actTransactionLog, $who, $time);
             //flux 完善库存余量
-            $this->updateFluxInv($info,$lotNum,$who,$time,$actTransactionLog);
+            $this->updateFluxInv($info, $lotNum, $who, $time, $actTransactionLog);
             //flux 更新asn_detail 和 asn_header 状态
-            return $this->updateFluxAsn($info,$invlotatt,$time,$who);
+            return $this->updateFluxAsn($info, $invlotatt, $time, $who);
         });
 
     }
@@ -300,100 +357,101 @@ sql;
      */
     public function updateFluxAsn(array $info, array $invlotatt, $time, $who): bool
     {
-        $db=DB::connection("oracle");
-        $asn=OracleDOCASNHeader::query()
+        $db = DB::connection("oracle");
+        $asn = OracleDOCASNHeader::query()
             ->withCount('asnDetails')
             ->with('asnDetails')
-            ->where('asnno',$info['asnno'])
+            ->where('asnno', $info['asnno'])
             ->first();
-        if (!$asn||!$asn->asnDetails||!$asn->asn_details_count) return false;
-        $asnDetails=$asn->asnDetails;
-        $receiveAsn=null;
-        foreach ($asnDetails as $asnDetail){
-            if ($asnDetail['asnno']==$info['asnno'] &&
-                $asnDetail['asnlineno']==$info['asnlineno'] &&
-                $asnDetail['customerid']==$info['customerid'] &&
-                $asnDetail['sku']==$info['sku']) $receiveAsn=$asnDetail;
+        if (!$asn || !$asn->asnDetails || !$asn->asn_details_count) return false;
+        $asnDetails = $asn->asnDetails;
+        $receiveAsn = null;
+        foreach ($asnDetails as $asnDetail) {
+            if ($asnDetail['asnno'] == $info['asnno'] &&
+                $asnDetail['asnlineno'] == $info['asnlineno'] &&
+                $asnDetail['customerid'] == $info['customerid'] &&
+                $asnDetail['sku'] == $info['sku']) $receiveAsn = $asnDetail;
         }
-        return $db->transaction(function ()use($db,$info,$receiveAsn,$invlotatt,$time,$who,$asn){
-            if ($receiveAsn && (int)$receiveAsn['receivedqty']+(int)$info['amount']<(int)$receiveAsn['expectedqty']){
+        return $db->transaction(function () use ($db, $info, $receiveAsn, $invlotatt, $time, $who, $asn) {
+            if ($receiveAsn && (int)$receiveAsn['receivedqty'] + (int)$info['amount'] < (int)$receiveAsn['expectedqty']) {
                 //asn_detail 收货数量+已收数量<预期数量
                 $db->update(DB::raw("UPDATE DOC_ASN_DETAILS SET receivedqty = receivedqty + ?,receivedqty_each = receivedqty_each + ?,linestatus = '30',holdrejectcode ='OK',
                 reserve_flag ='Y',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),receivedtime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ?,
              lotatt01 =?,lotatt02 =?,lotatt03 =?,lotatt04 =?,lotatt05 =?,lotatt06 =?,lotatt07 =?,lotatt08=? WHERE asnno = ? and asnlineno = ?"),
-                    [(int)$info['amount'],(int)$info['amount'],$time,$time,$who,$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
-                        $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],$info['asnno'],$info['asnlineno']]);
+                    [(int)$info['amount'], (int)$info['amount'], $time, $time, $who, $invlotatt['lotatt01'], $invlotatt['lotatt02'], $invlotatt['lotatt03'], $invlotatt['lotatt04'],
+                        $invlotatt['lotatt05'], $invlotatt['lotatt06'], $invlotatt['lotatt07'], $invlotatt['lotatt08'], $info['asnno'], $info['asnlineno']]);
                 //asn_header 部分收货状态
                 $db->update(DB::raw("UPDATE DOC_ASN_HEADER SET asnstatus = '30',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ? WHERE asnno = ?"),
-                    [$time,$who,$info['asnno']]);
-            }elseif ($receiveAsn && (int)$receiveAsn['receivedqty']+(int)$info['amount']==(int)$receiveAsn['expectedqty']){
+                    [$time, $who, $info['asnno']]);
+            } elseif ($receiveAsn && (int)$receiveAsn['receivedqty'] + (int)$info['amount'] == (int)$receiveAsn['expectedqty']) {
                 //asn_detail 收货数量+已收数量=预期数量
                 $db->update(DB::raw("UPDATE DOC_ASN_DETAILS SET receivedqty=receivedqty+?,receivedqty_each=receivedqty_each+?,linestatus = '40',
                 edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),receivedtime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ?,holdrejectcode='OK',
                 reserve_flag='Y',lotatt01=?,lotatt02=?,lotatt03=?,lotatt04=?,lotatt05=?,lotatt06=?,lotatt07=?,lotatt08=? WHERE asnno = ? and asnlineno = ?"),
-                    [(int)$info['amount'],(int)$info['amount'],$time,$time,$who,$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
-                        $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],$info['asnno'],$info['asnlineno']]);
+                    [(int)$info['amount'], (int)$info['amount'], $time, $time, $who, $invlotatt['lotatt01'], $invlotatt['lotatt02'], $invlotatt['lotatt03'], $invlotatt['lotatt04'],
+                        $invlotatt['lotatt05'], $invlotatt['lotatt06'], $invlotatt['lotatt07'], $invlotatt['lotatt08'], $info['asnno'], $info['asnlineno']]);
                 //当asn_detail 所有状态都为完全收货是  asn_header 状态修改为 完全收货(asnstatus=40)
-                if (OracleDOCASNDetail::query()->where('asnno',$info['asnno'])->where('linestatus',40)->count()==$asn->asn_details_count){
+                if (OracleDOCASNDetail::query()->where('asnno', $info['asnno'])->where('linestatus', 40)->count() == $asn->asn_details_count) {
                     $db->update(DB::raw("UPDATE DOC_ASN_HEADER SET asnstatus = '40',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ? WHERE asnno = ?"),
-                        [$time,$who,$info['asnno']]);
-                }else {
+                        [$time, $who, $info['asnno']]);
+                } else {
                     //asn_header 部分收货状态
                     $db->update(DB::raw("UPDATE DOC_ASN_HEADER SET asnstatus = '30',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ? WHERE asnno = ?"),
-                        [$time,$who,$info['asnno']]);
+                        [$time, $who, $info['asnno']]);
                 }
             }
             return true;
         });
     }
+
     /**
      * @throws \Throwable
      */
     public function updateFluxInv(array $info, $lotNum, $who, $time, array $actTransactionLog)
     {
         $db = DB::connection("oracle");
-        $db->transaction(function ()use ($db,$info,$lotNum,$actTransactionLog,$who,$time){
+        $db->transaction(function () use ($db, $info, $lotNum, $actTransactionLog, $who, $time) {
             //更新 inv_lot 批次 库存表
-            $invLot=$db->selectOne(DB::raw("SELECT * FROM INV_LOT WHERE lotnum = ? AND customerid = ? AND sku = ? "),[
-                $lotNum,$info['customerid'],$info['sku']
+            $invLot = $db->selectOne(DB::raw("SELECT * FROM INV_LOT WHERE lotnum = ? AND customerid = ? AND sku = ? "), [
+                $lotNum, $info['customerid'], $info['sku']
             ]);
-            if ($invLot)$db->update(DB::raw("UPDATE INV_LOT SET qty = qty+?,edittime=?,editwho=? WHERE lotnum = ? AND customerid = ? AND sku = ?"),[
-                (int)$info['amount'],$time,$who,$lotNum,$info['customerid'],$info['sku'],
+            if ($invLot) $db->update(DB::raw("UPDATE INV_LOT SET qty = qty+?,edittime=?,editwho=? WHERE lotnum = ? AND customerid = ? AND sku = ?"), [
+                (int)$info['amount'], $time, $who, $lotNum, $info['customerid'], $info['sku'],
             ]);
-            else $db->insert(DB::raw("INSERT INTO INV_LOT VALUES(?,?,?,?,0,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?)"),[
-                $lotNum,$info['customerid'],$info['sku'],$info['amount'],$time,$who, $time,$who
+            else $db->insert(DB::raw("INSERT INTO INV_LOT VALUES(?,?,?,?,0,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?)"), [
+                $lotNum, $info['customerid'], $info['sku'], $info['amount'], $time, $who, $time, $who
             ]);
             //更新 inv_lot_loc_id 批次/库位/跟踪号 库存表
-            $invLotId = $db->selectOne(DB::raw("SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND locationid = ? AND customerid = ? AND sku = ? AND traceid = ? FOR UPDATE"),[
-                $lotNum,$actTransactionLog['location'],$actTransactionLog['customerid'],$actTransactionLog['sku'],$actTransactionLog['trackid']
+            $invLotId = $db->selectOne(DB::raw("SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND locationid = ? AND customerid = ? AND sku = ? AND traceid = ? FOR UPDATE"), [
+                $lotNum, $actTransactionLog['location'], $actTransactionLog['customerid'], $actTransactionLog['sku'], $actTransactionLog['trackid']
             ]);
 
-            if ($info['location']){ //存在目标库位
-                $invLotIdHasPreLocation = $db->selectOne(DB::raw("SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND locationid = ? AND customerid = ? AND sku = ? AND traceid = ? FOR UPDATE"),[
-                    $lotNum,$info['location'],$actTransactionLog['customerid'],$actTransactionLog['sku'],$actTransactionLog['trackid']
+            if ($info['location']) { //存在目标库位
+                $invLotIdHasPreLocation = $db->selectOne(DB::raw("SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND locationid = ? AND customerid = ? AND sku = ? AND traceid = ? FOR UPDATE"), [
+                    $lotNum, $info['location'], $actTransactionLog['customerid'], $actTransactionLog['sku'], $actTransactionLog['trackid']
                 ]);
 
-                if ($invLotIdHasPreLocation)$db->update(DB::raw("UPDATE inv_lot_loc_id SET qtypa = qtypa+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
-                    (int)$info['amount'],$time,$who,$lotNum,$info['location'],$actTransactionLog['trackid']
+                if ($invLotIdHasPreLocation) $db->update(DB::raw("UPDATE inv_lot_loc_id SET qtypa = qtypa+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"), [
+                    (int)$info['amount'], $time, $who, $lotNum, $info['location'], $actTransactionLog['trackid']
                 ]);
-                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',?,null)"),[
-                    $lotNum,$info['location'],$actTransactionLog['trackid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],0,$time,$who,$time,$who,(int)$info['amount']
+                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',?,null)"), [
+                    $lotNum, $info['location'], $actTransactionLog['trackid'], $actTransactionLog['customerid'], $actTransactionLog['sku'], 0, $time, $who, $time, $who, (int)$info['amount']
                 ]);
 
-                if ($invLotId)$db->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty+?,qtymvout = qtymvout+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
-                    (int)$info['amount'],(int)$info['amount'],$time,$who,$lotNum,$actTransactionLog['location'],$actTransactionLog['trackid']
+                if ($invLotId) $db->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty+?,qtymvout = qtymvout+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"), [
+                    (int)$info['amount'], (int)$info['amount'], $time, $who, $lotNum, $actTransactionLog['location'], $actTransactionLog['trackid']
                 ]);
-                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,?,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',0,null)"),[
-                    $lotNum,$actTransactionLog['location'],$actTransactionLog['trackid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],(int)$info['amount'],(int)$info['amount'],
-                    $time,$who,$time,$who,
+                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,?,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',0,null)"), [
+                    $lotNum, $actTransactionLog['location'], $actTransactionLog['trackid'], $actTransactionLog['customerid'], $actTransactionLog['sku'], (int)$info['amount'], (int)$info['amount'],
+                    $time, $who, $time, $who,
                 ]);
 
-            }else{
-                if ($invLotId)$db->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
-                    (int)$info['amount'],$time,$who,$lotNum,$actTransactionLog['location'],$actTransactionLog['trackid']
+            } else {
+                if ($invLotId) $db->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"), [
+                    (int)$info['amount'], $time, $who, $lotNum, $actTransactionLog['location'], $actTransactionLog['trackid']
                 ]);
-                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',0,null)"),[
-                    $lotNum,$actTransactionLog['location'],$actTransactionLog['trackid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],(int)$info['amount'],$time,$who,$time,$who,
+                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',0,null)"), [
+                    $lotNum, $actTransactionLog['location'], $actTransactionLog['trackid'], $actTransactionLog['customerid'], $actTransactionLog['sku'], (int)$info['amount'], $time, $who, $time, $who,
                 ]);
             }
         });
@@ -405,19 +463,19 @@ sql;
     public function setFluxTskTaskListPA(array $info, array $invlotatt, $actTransactionLog, $who, $time)
     {
         $db = DB::connection("oracle");
-        $db->transaction(function ()use ($db,$info,$invlotatt,$actTransactionLog,$who,$time){
+        $db->transaction(function () use ($db, $info, $invlotatt, $actTransactionLog, $who, $time) {
             $sql = <<<sql
 INSERT INTO TSK_TASKLISTS VALUES(?,'1','PA',?,?,'ASN',?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,null,null,?,?,?,?,?,?,?,?,null,null,null,null,
     0,0,0,0,null,?,null,null,null,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),null,null,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),'N',null,null,
     ?,?,?,'N',null,?,'*',null,null,null,'N',null,null)
 sql;
-            $db->insert(DB::raw($sql),[
-                $actTransactionLog['tsid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],$actTransactionLog['docno'],$actTransactionLog['doclineno'],
-                $actTransactionLog['lotNum'],$actTransactionLog['packid'],'EA',$info['amount'],$info['amount'],$actTransactionLog['location'],$actTransactionLog['location'],
-                $actTransactionLog['trackid'],$actTransactionLog['lotNum'],$actTransactionLog['packid'],'EA',$info['amount'],$info['amount'],
-                $info['location'],$info['location'],$actTransactionLog['trackid'],'00','Putaway Task','3',$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
-                $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],$actTransactionLog['trid'],$who,$time,null,null,null,null,
-                $actTransactionLog['userdefine1'],$actTransactionLog['userdefine2'],$actTransactionLog['userdefine3'],$actTransactionLog['warehouseid']
+            $db->insert(DB::raw($sql), [
+                $actTransactionLog['tsid'], $actTransactionLog['customerid'], $actTransactionLog['sku'], $actTransactionLog['docno'], $actTransactionLog['doclineno'],
+                $actTransactionLog['lotNum'], $actTransactionLog['packid'], 'EA', $info['amount'], $info['amount'], $actTransactionLog['location'], $actTransactionLog['location'],
+                $actTransactionLog['trackid'], $actTransactionLog['lotNum'], $actTransactionLog['packid'], 'EA', $info['amount'], $info['amount'],
+                $info['location'], $info['location'], $actTransactionLog['trackid'], '00', 'Putaway Task', '3', $invlotatt['lotatt01'], $invlotatt['lotatt02'], $invlotatt['lotatt03'], $invlotatt['lotatt04'],
+                $invlotatt['lotatt05'], $invlotatt['lotatt06'], $invlotatt['lotatt07'], $invlotatt['lotatt08'], $actTransactionLog['trid'], $who, $time, null, null, null, null,
+                $actTransactionLog['userdefine1'], $actTransactionLog['userdefine2'], $actTransactionLog['userdefine3'], $actTransactionLog['warehouseid']
             ]);
         });
     }
@@ -431,66 +489,67 @@ sql;
      * @throws \Throwable
      * 创建入库事务
      */
-    public function setFluxActTransactionLog(array $info,$lotNum,$who,$time)
+    public function setFluxActTransactionLog(array $info, $lotNum, $who, $time)
     {
         $db = DB::connection("oracle");
-        return $db->transaction(function ()use ($db,$info,$lotNum,$time,$who){
-            if ($info['trackNumber'])$trackNumber=$info['trackNumber'];
-            else $trackNumber=substr(md5($time),0,30);
-            $asnHeader=OracleDOCASNHeader::query()->where('asnno',$info['asnno'])->first();
-            $asnDetail=OracleDOCASNDetail::query()->where('asnno',$info['asnno'])->where('sku',$info['sku'])->first();
+        return $db->transaction(function () use ($db, $info, $lotNum, $time, $who) {
+            if ($info['trackNumber']) $trackNumber = $info['trackNumber'];
+            else $trackNumber = substr(md5($time), 0, 30);
+            $asnHeader = OracleDOCASNHeader::query()->where('asnno', $info['asnno'])->first();
+            $asnDetail = OracleDOCASNDetail::query()->where('asnno', $info['asnno'])->where('sku', $info['sku'])->first();
             $sql = <<<sql
 INSERT INTO ACT_TRANSACTION_LOG VALUES(?,'IN',?,?,?,?,'ASN',?,?,?,?,?,?,?,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,
 TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,?,null,null,null,?,?,?,?,?,?,?,?,
 ?,?,?,?,'1','Y',null,?,?,?,?,null,null,?,null,null)
 sql;
-            list($trid,$max) = app('StorageService')->getTrNumber();
-            list($tsid,$max) = $this->getTsNum();
-            $db->insert(DB::raw($sql),[
-                $trid,$asnDetail->customerid,$asnDetail->sku,
-                $asnDetail->asnno,$asnDetail->asnlineno,$lotNum,$asnDetail->receivinglocation,'*',$asnDetail->packid,'EA',$info['amount'],$info['amount'],'99',$time,$who,
-                $time,$who,$time,$asnDetail->customerid,$asnDetail->sku,$trackNumber,$asnDetail->receivinglocation,$who,$asnDetail->packid,'EA',$info['amount'],$info['amount'],$lotNum,
-                '*','0','N',$tsid,substr($asnDetail->receivinglocation,-4),$asnHeader->userdefine1,$asnHeader->userdefine2,
-                $asnHeader->userdefine3,'O'
+            list($trid, $max) = app('StorageService')->getTrNumber();
+            list($tsid, $max) = $this->getTsNum();
+            $db->insert(DB::raw($sql), [
+                $trid, $asnDetail->customerid, $asnDetail->sku,
+                $asnDetail->asnno, $asnDetail->asnlineno, $lotNum, $asnDetail->receivinglocation, '*', $asnDetail->packid, 'EA', $info['amount'], $info['amount'], '99', $time, $who,
+                $time, $who, $time, $asnDetail->customerid, $asnDetail->sku, $trackNumber, $asnDetail->receivinglocation, $who, $asnDetail->packid, 'EA', $info['amount'], $info['amount'], $lotNum,
+                '*', '0', 'N', $tsid, substr($asnDetail->receivinglocation, -4), $asnHeader->userdefine1, $asnHeader->userdefine2,
+                $asnHeader->userdefine3, 'O'
             ]);
             app('StorageService')->setTrNumber();
             $this->setTsNum();
-            $actTransactionLog=[
-                'trid'=>$trid,'docno'=>$asnDetail->asnno,'customerid'=>$asnDetail->customerid,'sku'=>$asnDetail->sku,'doclineno'=>$asnDetail->asnlineno,'lotNum'=>$lotNum,'location'=>$asnDetail->receivinglocation,
-                'packid'=>$asnDetail->packid,'tsid'=>$tsid,'warehouseid'=>substr($asnDetail->receivinglocation,-4),'userdefine1'=>$asnHeader->userdefine1,'userdefine2'=>$asnHeader->userdefine2,
-                'userdefine3'=>$asnHeader->userdefine3,'trackid'=>$trackNumber
+            $actTransactionLog = [
+                'trid' => $trid, 'docno' => $asnDetail->asnno, 'customerid' => $asnDetail->customerid, 'sku' => $asnDetail->sku, 'doclineno' => $asnDetail->asnlineno, 'lotNum' => $lotNum, 'location' => $asnDetail->receivinglocation,
+                'packid' => $asnDetail->packid, 'tsid' => $tsid, 'warehouseid' => substr($asnDetail->receivinglocation, -4), 'userdefine1' => $asnHeader->userdefine1, 'userdefine2' => $asnHeader->userdefine2,
+                'userdefine3' => $asnHeader->userdefine3, 'trackid' => $trackNumber
             ];
             return $actTransactionLog;
         });
     }
+
     /**
      * @param array $info
      * @return mixed
      * @throws \Throwable
      * 或去flux 批次号
      */
-    public function getOrCreateLotNum(array $info,array $invlotatt,$who,$time)
+    public function getOrCreateLotNum(array $info, array $invlotatt, $who, $time)
     {
-        $invlotatt['customerid']=$info['customerid'];
-        $invlotatt['sku']=$info['sku'];
+        $invlotatt['customerid'] = $info['customerid'];
+        $invlotatt['sku'] = $info['sku'];
         //根据批次规则查询或新建批次
-        $lotnum=OracleInvLotAtt::query()->where($invlotatt)->value('lotnum');
+        $lotnum = OracleInvLotAtt::query()->where($invlotatt)->value('lotnum');
         if ($lotnum) return $lotnum;
 
         $db = DB::connection("oracle");
-        list($num,$max)=$this->getLtNum();
-        return $db->transaction(function ()use($db,$info,$invlotatt,$num,$who,$time){
-           $sql = <<<sql
+        list($num, $max) = $this->getLtNum();
+        return $db->transaction(function () use ($db, $info, $invlotatt, $num, $who, $time) {
+            $sql = <<<sql
 INSERT INTO INV_LOT_ATT VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,
 TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?)
 sql;
-           $db->insert(DB::raw($sql),[
-               $num,$info['customerid'],$info['sku'],$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
-               $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],null,null,null,null,$time,$who,$time,$who,$time,null
-           ]);
-           $this->setLtNum();
-           return $num;
-       });
+            $db->insert(DB::raw($sql), [
+                $num, $info['customerid'], $info['sku'], $invlotatt['lotatt01'], $invlotatt['lotatt02'], $invlotatt['lotatt03'], $invlotatt['lotatt04'],
+                $invlotatt['lotatt05'], $invlotatt['lotatt06'], $invlotatt['lotatt07'], $invlotatt['lotatt08'], null, null, null, null, $time, $who, $time, $who, $time, null
+            ]);
+            $this->setLtNum();
+            return $num;
+        });
 
     }
 
@@ -500,11 +559,11 @@ sql;
      */
     private function getLtNum(): array
     {
-        $val = ValueStore::query()->select("value")->where("name","flux_lt_number")->lockForUpdate()->first();
-        if (!$val)$val = ValueStore::query()->create(["name"=>"flux_lt_number","value"=>'0']);
-        $max = $val->value+1;
+        $val = ValueStore::query()->select("value")->where("name", "flux_lt_number")->lockForUpdate()->first();
+        if (!$val) $val = ValueStore::query()->create(["name" => "flux_lt_number", "value" => '0']);
+        $max = $val->value + 1;
         $number = sprintf("%07d", $max);
-        return array ('WLT'.$number,$max);
+        return array('WLT' . $number, $max);
     }
 
     /**
@@ -514,20 +573,21 @@ sql;
     {
         ValueStore::query()
             ->select("value")
-            ->where("name","flux_lt_number")
-            ->update(["value"=>DB::raw("value+1")]);
+            ->where("name", "flux_lt_number")
+            ->update(["value" => DB::raw("value+1")]);
     }
+
     /**
      * 获取批次号
      * @return array
      */
     private function getTsNum(): array
     {
-        $val = ValueStore::query()->select("value")->where("name","flux_ts_number")->lockForUpdate()->first();
-        if (!$val)$val = ValueStore::query()->create(["name"=>"flux_ts_number","value"=>'0']);
-        $max = $val->value+1;
+        $val = ValueStore::query()->select("value")->where("name", "flux_ts_number")->lockForUpdate()->first();
+        if (!$val) $val = ValueStore::query()->create(["name" => "flux_ts_number", "value" => '0']);
+        $max = $val->value + 1;
         $number = sprintf("%07d", $max);
-        return array ('WTS'.$number,$max);
+        return array('WTS' . $number, $max);
     }
 
     /**
@@ -537,7 +597,7 @@ sql;
     {
         ValueStore::query()
             ->select("value")
-            ->where("name","flux_ts_number")
-            ->update(["value"=>DB::raw("value+1")]);
+            ->where("name", "flux_ts_number")
+            ->update(["value" => DB::raw("value+1")]);
     }
 }

+ 4 - 1
app/Services/OwnerService.php

@@ -267,7 +267,10 @@ class OwnerService
                 else $builder->where('owner_id',$param);
                 continue;
             }
-
+            if ($column == 'user_work_group'){
+                $builder->where("user_workgroup_id",$param);
+                continue;
+            }
             if (is_array($param))$builder->whereIn($column,$param);
             else $builder->where($column,$param);
         }

+ 1 - 1
database/factories/OwnerStoreOutFeeDetailFactory.php

@@ -33,7 +33,7 @@ $factory->define(OwnerStoreOutFeeDetail::class, function (Faker $faker) {
         'step' => $faker->randomElement($step),
         'tax_fee' => random_int(1, 100),//税费
         'sku' => $faker->uuid,//商家编码
-        'packingMaterialFee' => random_int(1, 100),//耗材费
+        'packing_material_fee' => random_int(1, 100),//耗材费
         'barcode' => $faker->uuid,//商品条码
         'work_name' => $faker->randomElement($work_names),//作业名称
         'fee' => $price * $amount,//费用

+ 32 - 0
database/migrations/2021_08_04_174608_add_check_time_to_requirements_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddCheckTimeToRequirementsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('requirements', function (Blueprint $table) {
+            $table->timestamp('reviewed_at')->nullable()->comment('验收时间');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('requirements', function (Blueprint $table) {
+            $table->dropColumn('reviewed_at');
+        });
+    }
+}

+ 88 - 0
database/migrations/2021_08_05_165443_add_nullable_to_owner_fee_details_table.php

@@ -0,0 +1,88 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddNullableToOwnerFeeDetailsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('owner_logistic_fee_details', function (Blueprint $table) {
+            $table->decimal('initial_weight')->nullable()->change();
+            $table->decimal('initial_weight_price')->nullable()->change();
+            $table->decimal('additional_weight')->nullable()->change();
+            $table->decimal('additional_price')->nullable()->change();
+            $table->decimal('additional_weigh_weight')->nullable()->change();
+            $table->decimal('tax_fee')->nullable()->change();
+            $table->decimal('fee')->nullable()->change();
+        });
+        Schema::table('owner_store_fee_details', function (Blueprint $table) {
+            $table->decimal('unit_price')->nullable()->change();
+            $table->decimal('fee')->nullable()->change();
+            $table->decimal('packing_material_fee')->nullable()->change();
+        });
+        Schema::table('owner_store_out_fee_details', function (Blueprint $table) {
+            $table->renameColumn('packingMaterialFee', 'packing_material_fee');
+        });
+        Schema::table('owner_store_out_fee_details', function (Blueprint $table) {
+            $table->decimal('unit_price')->nullable()->change();
+            $table->string('price_remark')->nullable()->change();
+            $table->decimal('tax_fee')->nullable()->change();
+            $table->decimal('packing_material_fee')->nullable()->change();
+            $table->decimal('fee')->nullable()->change();
+        });
+        Schema::table('owner_way_bill_fee_details', function (Blueprint $table) {
+            $table->decimal('fuel_fee')->nullable()->change();
+            $table->decimal('service_fee')->nullable()->change();
+            $table->decimal('originate_fee')->nullable()->change();
+            $table->decimal('price')->nullable()->change();
+            $table->decimal('delivery_fee')->nullable()->change();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('owner_logistic_fee_details', function (Blueprint $table) {
+            $table->decimal('initial_weight')->change();
+            $table->decimal('initial_weight_price')->change();
+            $table->decimal('additional_weight')->change();
+            $table->decimal('additional_price')->change();
+            $table->decimal('additional_weigh_weight')->nullable()->change();
+            $table->decimal('tax_fee')->change();
+            $table->decimal('fee')->change();
+        });
+        Schema::table('owner_store_fee_details', function (Blueprint $table) {
+            $table->decimal('unit_price')->change();
+            $table->decimal('fee')->change();
+            $table->decimal('packing_material_fee')->change();
+        });
+        Schema::table('owner_store_out_fee_details', function (Blueprint $table) {
+            $table->renameColumn('packing_material_fee', 'packingMaterialFee');
+        });
+        Schema::table('owner_store_out_fee_details', function (Blueprint $table) {
+            $table->decimal('unit_price')->change();
+            $table->string('price_remark')->change();
+            $table->decimal('tax_fee')->change();
+            $table->decimal('packing_material_fee')->change();
+            $table->decimal('fee')->change();
+        });
+        Schema::table('owner_way_bill_fee_details', function (Blueprint $table) {
+            $table->decimal('fuel_fee')->change();
+            $table->decimal('service_fee')->change();
+            $table->decimal('originate_fee')->change();
+            $table->decimal('price')->change();
+            $table->decimal('delivery_fee')->change();
+        });
+    }
+}

+ 4 - 1
resources/views/customer/project/index.blade.php

@@ -133,20 +133,23 @@
                 ownerSubjection:{!! json_encode(\App\Owner::subjection,JSON_UNESCAPED_UNICODE) !!},
                 selectTr:'',
                 id:"",
+                user_work_groups:  [@foreach($userWorkGroups as $userWorkGroup){name:"{{$userWorkGroup->id}}",value:"{{$userWorkGroup->name}}"},@endforeach]
             },
             mounted(){
                 $('#container').removeClass('d-none');
                 let data=[
                     [
                         {name:'user_owner_group_id',type:'select',tip:'项目小组',placeholder: '项目小组',data:this.ownerGroups},
+                        {name:'user_work_group',type:'select',tip: '仓库小组搜索',placeholder: '仓库小组',data:this.user_work_groups},
+
                         {name:'created_at_start',type:'time',tip:['选择显示创建日期的起始时间','']},
                         {name:'ids',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的项目'],
                             placeholder:['项目','定位或多选项目'],data:this.models},
                         {name:'contract_number',type:'input',tip: '合同号:可在左侧增加百分号(%)进行模糊搜索',placeholder: '合同号'},
                     ],[
                         {name:'customers',type:'select_multiple_select',tip:['客户','定位或多选项目'],placeholder: ['客户','定位或多选项目'],data:this.customers},
-                        {name:'created_at_end',type:'time',tip:['选择显示创建日期的结束时间','']},
                         {name:'using_type',type:'select',placeholder: '用仓类型',data:[{name:"常温",value:"常温"},{name:"恒温",value:"恒温"}]},
+                        {name:'created_at_end',type:'time',tip:['选择显示创建日期的结束时间','']},
                     ],
                 ];
                 this.form = new query({

+ 0 - 1
resources/views/order/issue/index.blade.php

@@ -970,7 +970,6 @@
                     {name: '部分退回', value: '部分退回'},
                     {name: '差异退回', value: '差异退回'},
                     {name: '超量退回', value: '超量退回'},
-                    {name: '全部退回', value: '全部退回'},
                 ],
                 logistics: [
                         @foreach($logistics as $logistic)

+ 2 - 2
resources/views/personnel/discharge/statement/index.blade.php

@@ -65,8 +65,8 @@
                         placeholder: ['货主', '定位或多选货主'],
                         data: _this.owners
                     },
-                    {name: 'created_at_start', type: 'dateTime', tip: '创建开始日期'},
-                    {name: 'created_at_end', type: 'dateTime', tip: '创建结束日期'},
+                    {name: 'income_at_start', type: 'dateTime', tip: '创建开始日期'},
+                    {name: 'income_at_end', type: 'dateTime', tip: '创建结束日期'},
                     {name: 'numbers', type: 'input', tip: '可支持多入库单号,模糊搜索可在两侧增加百分号(%)进行', placeholder: '入库单号'},
                     {name: 'status', type: 'select', tip: '状态', data: status, placeholder: '状态'},
                 ], [

+ 78 - 35
resources/views/requirement/index.blade.php

@@ -12,17 +12,39 @@
                     @click="selectTr===i+1?selectTr=0:selectTr=i+1"
                     :class="selectTr===i+1?'focusing' : ''">
                     <td><input class="checkItem" type="checkbox" :value="requirement.id"></td>
-                    <td>@{{ i+1 }}</td>
+                    <td>@{{ requirement.id }}</td>
                     <td>@{{ requirement.creator.name }}</td>
                     <td>@{{ requirement.score }}</td>
                     <td>@{{ requirement.title }}</td>
-                    <td :title="requirement.content" class="d-inline-block text-truncate" style="max-width: 300px;">@{{ requirement.content }}</td>
+                    <td :title="requirement.content" class="text-truncate" style="max-width: 300px;">@{{
+                        requirement.content }}
+                    </td>
                     <td><span :class="calStatusClass(requirement.status)">@{{ requirement.status }}</span></td>
+                    <td>
+                        <div v-if="requirement.workers.length>0 && requirement.showMore"
+                             class="text-overflow-warp-200 up" :id="'route-'+i">
+                            <p v-for="worker in requirement.workers">
+                                @{{ worker.name}}
+                            </p>
+                        </div>
+                        <div class="text-overflow-warp-200 " v-else>
+                            @{{ requirement.workers.length>0? requirement.workers[0].name:'' }}
+                        </div>
+                        <div @click="requirement.showMore=!requirement.showMore" v-if="requirement.workers.length > 1">
+                            <label class="text-center mt-0 p-0 cursor-pointer pull-left">
+                                <span class="fa"
+                                      :class="requirement.showMore ? 'fa-angle-double-down' : 'fa-angle-double-right'"></span>
+                                &nbsp;<span v-if="requirement.showMore">收起</span><span
+                                    v-else>展开</span>&nbsp;@{{ requirement.workers.length }} 条
+                            </label>
+                        </div>
+                    </td>
                     <td>@{{ requirement.began_at }}</td>
                     <td>@{{ requirement.finished_at }}</td>
+                    <td>@{{ requirement.reviewed_at }}</td>
                     <td>@{{ requirement.created_at }}</td>
                     <td>
-                        <form v-if="requirement.status!=='已完成'" :action="targetUrl(requirement.id)" method="post"
+                        <form v-if="requirement.status==='待接收'" :action="targetUrl(requirement.id)" method="post"
                               style="display: inline-block;"
                               onsubmit="return confirm('您确定要删除吗?');">
                             {{ csrf_field() }}
@@ -31,16 +53,11 @@
                                 <i class="far fa-trash-alt"></i> 删
                             </button>
                         </form>
-                        <form v-if="requirement.status==='已发布'" :action="targetUrl(requirement.id)+'/edit'" method="get"
-                              style="display: inline-block;"
-                              onsubmit="return">
-                            <button type="submit" class="btn btn-outline-info btn-sm">
-                                <i class="far fa-trash-alt"></i> 改
-                            </button>
-                        </form>
-
                         <button type="submit" class="btn btn-outline-info btn-sm">
-                            <i class="far fa-trash-alt"></i> <a :href="targetUrl(requirement.id)">查</a>
+                            <i class="far fa-trash-alt"></i> <a :href="targetUrl(requirement.id)">
+                                <span v-if="requirement.status ==='待验收'">验</span>
+                                <span v-else>查</span>
+                            </a>
                         </button>
                     </td>
                 </tr>
@@ -79,6 +96,25 @@
                 $(".up").slideUp();
                 let data = [
                     [
+                        {
+                            name: 'requirement_id',
+                            type: 'input',
+                            tip: '输入任务号',
+                            placeholder: '任务号',
+                        },
+                        {
+                            name: 'status',
+                            type: 'select',
+                            tip: '选择状态',
+                            placeholder: '状态',
+                            data:[
+                                {name:'待接收',value:'待接收'},
+                                {name:'开发中',value:'开发中'},
+                                {name:'待验收',value:'待验收'},
+                                {name:'验收通过',value:'验收通过'},
+                                {name:'验收未通过',value:'验收未通过'},
+                            ]
+                        },
                         {
                             name: 'creator_id',
                             type: 'select',
@@ -99,17 +135,6 @@
                             placeholder: ['执行人', '定位或多选'],
                             data: this.workers
                         },
-                        {
-                            name: 'began_at_start',
-                            type: 'dateTime',
-                            tip: '选择任务开始的起始时间'
-                        },
-                        {
-                            name: 'began_at_end',
-                            type: 'dateTime',
-                            tip: '选择任务开始的截止时间'
-                        },
-
                     ],
                     [
                         {
@@ -131,7 +156,19 @@
                             name: 'created_at_end',
                             type: 'dateTime',
                             tip: '选择任务创建的截止时间'
-                        }
+                        },
+                        {
+                            name: 'began_at_start',
+                            type: 'dateTime',
+                            tip: '选择任务开始的起始时间'
+                        },
+                        {
+                            name: 'began_at_end',
+                            type: 'dateTime',
+                            tip: '选择任务开始的截止时间'
+                        },
+
+
                     ]
                 ];
                 _this.form = new query({
@@ -140,14 +177,17 @@
                 });
                 _this.form.init();
                 let column = [
-                    {name: 'index', value: '序号', neglect: true},
+                    // {name: 'index', value: '序号', neglect: true},
+                    {name: 'requirement_id', value: '任务号'},
                     {name: 'creator_name', value: '创建人'},
                     {name: 'score', value: '分数'},
                     {name: 'title', value: '标题'},
                     {name: 'content', value: '内容'},
                     {name: 'status', value: '状态'},
-                    {name: 'began_at', value: '开始时间'},
+                    {name: 'workers', value: '完成人'},
+                    {name: 'began_at', value: '接收时间'},
                     {name: 'finished_at', value: '完成时间'},
+                    {name: 'reviewed_at', value: '验收时间'},
                     {name: 'created_at', value: '创建时间'},
                     {name: 'operation', value: '操作'},
                 ];
@@ -159,25 +199,28 @@
                     restorationColumn: 'addtime',
                     fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
                 }).init();
-
+                _this.requirements = _this.requirements.map(item => {
+                    item.showMore = false
+                    return item;
+                });
             },
             methods: {
-                {{--edit(id) {--}}
-                    {{--    location.href = "{{url('finance/settlementBills/ownerSundryFeeDetails')}}/" + id + "/edit";--}}
-                    {{--},--}}
                 targetUrl(id) {
                     return "{{ url('requirements') }}/" + id;
                 },
 
                 calStatusClass(status) {
                     switch (status) {
-                        case '已发布':
-                            return "badge badge-info";
-                        case '已开始':
+                        case '待接收':
+                            return "badge badge-primary";
+                        case '开发中':
                             return "badge badge-warning";
-                        case '已完成':
+                        case '待验收':
+                            return "badge badge-info";
+                        case '验收通过':
                             return "badge badge-success";
-
+                        case '验收未通过':
+                            return "badge badge-danger";
                     }
                 }
             },

+ 83 - 33
resources/views/requirement/show.blade.php

@@ -29,7 +29,7 @@
                 </div>
             </div>
         </div>
-        @if($requirement->status==='已发布')
+        @if($requirement->status==='待接收')
             <div class="col-12 text-center mt-4">
                 <form action="{{ route('requirements.edit',$requirement->id) }}" method="get"
                       style="display: inline-block;"
@@ -45,73 +45,122 @@
                           style="display: inline-block;"
                           onsubmit="return confirm('您确定要开始吗?');">
                         {{ csrf_field() }}
+                        <div class="form-group">
+                            <template v-for="(item,i) in items">
+                                <div class="row">
+                                    <div class="col-auto mb-4">
+                                        <select class="form-control" :name="'users['+i+'][name]'"
+                                                required {{ $requirement->workers->count()>0 ? 'disabled' :''}}>
+                                            <option value="" hidden disabled selected>请选择用户
+                                            </option>
+                                            @foreach ($workers as $value)
+                                                <option
+                                                    value="{{ $value->id }}">
+                                                    {{ $value->name }}
+                                                </option>
+                                            @endforeach
+                                        </select>
+                                    </div>
+                                    <div v-if="i!==0" class="col-1 mb-4 mt-1">
+                                        <button class="btn btn-sm btn-primary float-right" type="button"
+                                                @click="items.splice(i,1)">-
+                                        </button>
+                                    </div>
+                                </div>
+                            </template>
+                            <button class="btn btn-sm btn-primary float-right" type="button"
+                                    @click="addItem">添加
+                            </button>
+                        </div>
                         <button type="submit" class="btn btn-success btn-sm">
-                            <i class="far fa-trash-alt"></i> 开始任务
+                            <i class="far fa-trash-alt"></i> 开始开发
                         </button>
                     </form>
                 </div>
             </div>
 
-        @elseif($requirement->status==='已开始')
+        @elseif($requirement->status==='开发中')
             <div class="col-12">
                 <div class="text-center m-4">
                     <form action="{{ route('requirements.finish',$requirement->id) }}" method="post"
-                          style="display: inline-block;">
+                          style="display: inline-block;"
+                          onsubmit="return confirm('您确定要完成开发吗?');">
                         {{ csrf_field() }}
                         <div class="form-group">
-                            <template v-for="(item,i) in items">
+                            @foreach($requirement->workers as $worker)
                                 <div class="row">
-                                   <div class="col-5 mb-4">
-                                       <select class="form-control" :name="'users['+i+'][name]'"
-                                               required {{ $requirement->workers->count()>0 ? 'disabled' :''}}>
-                                           <option value="" hidden disabled selected>请选择用户
-                                           </option>
-                                           @foreach ($workers as $value)
-                                               <option
-                                                   value="{{ $value->id }}">
-                                                   {{ $value->name }}
-                                               </option>
-                                           @endforeach
-                                       </select>
-                                   </div>
+                                    <div class="col-5 mb-4">
+                                        <input class="form-control" disabled value="{{ $worker->name }}"></input>
+                                        <input class="form-control" hidden
+                                               :name="'users['+ {{ $loop->index }} +'][name]'"
+                                               value="{{ $worker->id }}"></input>
+                                    </div>
                                     <div class="col-5 mb-4">
                                         <input class="form-control" type="number"
-                                               :name="'users['+i+'][score]'"
+                                               :name="'users['+ {{ $loop->index }} +'][score]'"
                                                placeholder="请填写分数"
                                                required></input>
                                     </div>
-                                    <div v-if="i!==0" class="col-1 mb-4 mt-1">
-                                        <button class="btn btn-sm btn-primary float-right" type="button"
-                                                @click="items.splice(i,1)">-
-                                        </button>
-                                    </div>
                                 </div>
-                            </template>
-                            <div>
-                                <button class="btn btn-sm btn-primary float-right" type="button"
-                                        @click="addItem">添加
-                                </button>
-                            </div>
+                            @endforeach
                         </div>
                         <div class="well well-sm">
-                            <button type="submit" class="btn btn-primary"> 完结需求</button>
+                            <button type="submit" class="btn btn-primary"> 完成开发</button>
                         </div>
                     </form>
                 </div>
             </div>
-        @elseif($requirement->status==='已完成')
+        @elseif($requirement->status==='待验收')
             <div class="col-12 text-center">
                 @foreach($requirement->workers as $worker)
                     <div class="row">
                         <div class="col-5 m-4">姓名: {{ $worker->name }}</div>
                         <div class="col-5 m-4">分数:{{ $worker->pivot->score }}</div>
                     </div>
+                @endforeach
+            </div>
+            <div class="m-4">
+                <form action="{{ route('requirements.review',$requirement->id) }}" method="post"
+                      style="display: inline-block;"
+                      onsubmit="return confirm('您确定要完成验收吗?');">
+                    {{ csrf_field() }}
+                    <input type="number" name="flag" hidden :value="reviewFlag">
+
+                        <button @click="reviewFlag=1" type="submit" class="btn btn-primary"> 验收通过</button>
+
 
+                        <button @click="reviewFlag=0" type="submit" class="btn btn-danger"> 验收未通过</button>
+
+                </form>
+            </div>
+        @elseif($requirement->status==='验收通过')
+            <div class="col-12 text-center">
+                    @foreach($requirement->workers as $worker)
+                        <div class="row">
+                            <div class="col-5 m-4">姓名: {{ $worker->name }}</div>
+                            <div class="col-5 m-4">分数:{{ $worker->pivot->score }}</div>
+                        </div>
+                    @endforeach
+            </div>
+        @elseif($requirement->status==='验收未通过')
+            <div class="col-12 text-center">
+                @foreach($requirement->workers as $worker)
+                    <div class="row">
+                        <div class="col-5 m-4">姓名: {{ $worker->name }}</div>
+                        <div class="col-5 m-4">分数:{{ $worker->pivot->score }}</div>
+                    </div>
                 @endforeach
             </div>
+            <div class="m-4">
+                <form action="{{ route('requirements.againReview',$requirement->id) }}" method="post"
+                      style="display: inline-block;"
+                      onsubmit="return confirm('您确定要再次申请验收流程吗?');">
+                    {{ csrf_field() }}
+                    <button type="submit" class="btn btn-primary"> 再次申请验收流程</button>
 
+                </form>
+            </div>
         @endif
-    </div>
 @endsection
 @section('lastScript')
     <script>
@@ -119,6 +168,7 @@
             el: "#list",
             data: {
                 items: [{}],
+                reviewFlag: 0,
                 @if($requirement->id)
                 workers: {!! $workers !!},
                 @endif

+ 5 - 2
resources/views/store/handInStorage/receiveDetailPage.blade.php

@@ -270,9 +270,11 @@
                                 this.asnDetails=res.data.data;
                                 this.$forceUpdate()
                                 return;
+                            }else {
+                                window.tempTip.setDuration(2000);
+                                window.tempTip.show(res.data.data);
+                                this.isInit=true;
                             }
-                            window.tempTip.setDuration(2000);
-                            window.tempTip.show(res.data.data);
                         }).catch(err=>{
                         window.tempTip.setDuration(2000);
                         window.tempTip.show("网络错误:"+err);
@@ -295,6 +297,7 @@
                                 window.tempTip.setDuration(2000);
                                 window.tempTip.showSuccess(res.data.data);
                                 this.info={};
+                                this.asnDetails=[];
                                 this.$forceUpdate();
                                 document.getElementById("sku").focus();
                                 return;

+ 2 - 0
routes/web.php

@@ -1005,6 +1005,8 @@ Route::group(['middleware'=>'auth'],function ($route){
         Route::patch('{requirement}','RequirementController@update')->name('requirements.update');
         Route::get('{requirement}','RequirementController@show')->name('requirements.show');
         Route::get('{requirement}/edit','RequirementController@edit')->name('requirements.edit');
+        Route::post('{requirement}/review','RequirementController@review')->name('requirements.review');
+        Route::post('{requirement}/againReview','RequirementController@againReview')->name('requirements.againReview');
     });
 
 });