cqpCow 1 year ago
parent
commit
1d799e59de
2 changed files with 77 additions and 18 deletions
  1. 54 3
      app/Service/ConstructionService.php
  2. 23 15
      app/Service/U8ServerService.php

+ 54 - 3
app/Service/ConstructionService.php

@@ -11,6 +11,7 @@ use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderProductInfo;
+use App\Model\ScheduleInfo;
 use App\Model\SeeRange;
 use App\Model\Storehouse;
 use Illuminate\Support\Facades\DB;
@@ -57,6 +58,10 @@ class ConstructionService extends Service
             $model->storehouse_id = $data['storehouse_id'] ?? 0;
             $model->start_time = $data['start_time'] ?? 0;
             $model->end_time = $data['end_time'] ?? 0;
+            $model->schedule_id = $data['schedule_id'] ?? 0;
+            $model->day_stamp = $data['day_stamp'] ?? 0;
+            $model->day_start_stamp = $data['day_start_stamp'] ?? 0;
+            $model->day_end_stamp = $data['day_end_stamp'] ?? 0;
             $model->save();
             $time = time();
 
@@ -117,6 +122,8 @@ class ConstructionService extends Service
                 ProductInventoryService::changeLockNumber($user,$msg[0],$msg[1]);
             }
 
+            if(! empty($data['schedule_info_id'])) ScheduleInfo::where('id',$data['schedule_info_id'])->update(['is_use' => 1]);
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -163,6 +170,10 @@ class ConstructionService extends Service
             $model->storehouse_id = $data['storehouse_id'] ?? 0;
             $model->start_time = $data['start_time'] ?? 0;
             $model->end_time = $data['end_time'] ?? 0;
+            $model->schedule_id = $data['schedule_id'] ?? 0;
+            $model->day_stamp = $data['day_stamp'] ?? 0;
+            $model->day_start_stamp = $data['day_start_stamp'] ?? 0;
+            $model->day_end_stamp = $data['day_end_stamp'] ?? 0;
             $model->save();
             $time = time();
 
@@ -216,6 +227,8 @@ class ConstructionService extends Service
                 ProductInventoryService::changeLockNumber($user,$msg[0],[]);
             }
 
+            if(! empty($data['schedule_info_id'])) ScheduleInfo::where('id',$data['schedule_info_id'])->update(['is_use' => 1]);
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -256,6 +269,15 @@ class ConstructionService extends Service
             //锁定库存释放
             ProductInventoryService::changeLockNumber($user,[],$product_save);
 
+            //排班修改
+            $schedule = ScheduleInfo::where('del_time',0)
+                ->where('schedule_id',$construction['schedule_id'])
+                ->where('start_time',$construction['day_start_stamp'])
+                ->where('end_time',$construction['day_end_stamp'])
+                ->where('is_use','>', ScheduleInfo::not_use)
+                ->first();
+            if(! empty($schedule)) ScheduleInfo::where('id',$schedule->id)->update(['is_use' => ScheduleInfo::not_use]);
+
             DB::commit();
         }catch (\Exception $exception){
             DB::rollBack();
@@ -452,7 +474,6 @@ class ConstructionService extends Service
         if(! empty($data['service_price'])){
             $res = $this->checkNumber($data['service_price']);
             if(! $res) return [false,'服务价格请输入不超过两位小数并且大于0的数值'];
-            if(! $res) return [false,'服务价格请输入不超过两位小数并且大于0的数值'];
         }
         if(! empty($data['construction_time'])) $data['construction_time'] = $this->changeDateToDateMin($data['construction_time']);
         if(! empty($data['handover_time'])) $data['handover_time'] = $this->changeDateToDateMin($data['handover_time']);
@@ -464,9 +485,12 @@ class ConstructionService extends Service
 //            if(empty($data['construction_contact'])) return [false,'联系方式不能为空'];
 //            if(empty($data['address1']) || empty($data['address2'])) return [false,'地址不能为空'];
         }
+        //校验排班
+        if(empty($data['schedule_id']) ||empty($data['day_stamp']) || empty($data['day_start_stamp']) || empty($data['day_end_stamp'])) return [false,'排班时间信息不能为空'];
+
         //所属部门 以及  顶级部门
         if(empty($data['depart_id'])) {
-            $data['depart_id'] = $this->getDepart($user);
+            $data['depart_id'] = $this->getDepazrt($user);
             $data['top_depart_id'] = $user['depart_map'][$data['depart_id']] ?? 0;
         }
 
@@ -520,7 +544,18 @@ class ConstructionService extends Service
                 ->where('start_time', '<=', $data['end_time'])
                 ->where('end_time', '>=', $data['start_time'])
                 ->exists();
-            if($bool)  return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
+            if($bool) return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
+
+            $schedule = ScheduleInfo::where('del_time',0)
+                ->where('day',$data['day_stamp'])
+                ->where('start_time',$data['day_start_stamp'])
+                ->where('end_time',$data['day_end_stamp'])
+                ->where('is_use',ScheduleInfo::not_use)
+                ->first();
+            if(! empty($schedule)) return [false,'该时间段排班已满或不存在!'];
+            $data['schedule_info_id'] = $schedule->id;
+            list($status,$msg) = $this->limitingSendRequestBackg(ScheduleInfo::limit_key . $schedule->id);
+            if(! $status) return [false,'操作频繁,请稍等!'];
         }else{
             if(empty($data['id'])) return [false,'ID不能为空'];
             $bool = Construction::where('del_time',0)
@@ -530,6 +565,22 @@ class ConstructionService extends Service
                 ->where('end_time', '>=', $data['start_time'])
                 ->exists();
             if($bool)  return [false,'合同:' . $sale['order_number'] . '在' . $start_time . '——' . $end_time . '已下施工单'];
+
+            $construction = Construction::where('id',$data['id'])->first();
+            if(empty($construction)) return [false,'施工单不存在或已被删除'];
+            $construction = $construction->toArray();
+            if($construction['day_stamp'] != $data['day_stamp'] || $construction['day_start_stamp'] != $data['day_start_stamp'] && $construction['day_end_stamp'] != $data['day_end_stamp']) {
+                $schedule = ScheduleInfo::where('del_time',0)
+                    ->where('day',$data['day_stamp'])
+                    ->where('start_time',$data['day_start_stamp'])
+                    ->where('end_time',$data['day_end_stamp'])
+                    ->where('is_use',ScheduleInfo::not_use)
+                    ->first();
+                if(! empty($schedule)) return [false,'该时间段排班已满或不存在!'];
+                $data['schedule_info_id'] = $schedule->id;
+                list($status,$msg) = $this->limitingSendRequestBackg(ScheduleInfo::limit_key . $schedule->id);
+                if(! $status) return [false,'操作频繁,请稍等!'];
+            }
         }
 
         return [true, [$product_submit, $product_save]];

+ 23 - 15
app/Service/U8ServerService.php

@@ -192,9 +192,9 @@ class U8ServerService extends Service
 
             //最终数据
             $post['data'] = [
-                "cpoid"=>$value['order_number'],
-                "dpodate"=>date("Y-m-d H:i:s",$value['crt_time']),
-                "cmemo"=>"T9同步采购单",
+                "cpoid"=>"",
+                "dpodate"=>date("Y-m-d",$value['crt_time']),
+                "cmemo"=>"T9采购单:" . $value['order_number'],
                 "cmaker"=>"admin",
                 "cmaketime"=>$time,
                 "IsExamine"=>false,
@@ -323,11 +323,12 @@ class U8ServerService extends Service
 
             //最终数据
             $post['data'] = [
-                "csocode"=>$value['order_number'],
+                "csocode"=>'',
                 "ddate"=> $time,
                 "cmaker"=>"admin",
                 "dcreatesystime"=>$time1,
                 "cstcode"=>"",
+                "cbustype" => $value['cbustype'], //业务类型
                 "cstname"=>$value['cstname'], //销售类型
                 "ccuscode"=>"",
                 "ccusabbname"=>$value['ccusabbname'], //客户简称
@@ -335,7 +336,7 @@ class U8ServerService extends Service
                 "cdepname"=>$value['cdepname'], // 部门名称
                 "cpersoncode"=>"", //业务员编码 暂时不要
                 "itaxrate"=>"0",
-                "cmemo"=>"T9同步销售订单",
+                "cmemo"=>"T9销售订单:". $value['order_number'],
                 "cdefine1"=>"",
                 "cdefine2"=>"",
                 "cdefine3"=>"",
@@ -420,7 +421,7 @@ class U8ServerService extends Service
         $supplier = Supplier::whereIn('id',array_unique(array_column($main,'supplier')))
             ->pluck('title','id')
             ->toArray();
-        $depart = Depart::whereIn('id',array_unique(array_column($main,'top_depart_id')))
+        $depart = Depart::whereIn('id',array_unique(array_column($main,'depart_id')))
             ->pluck('title','id')
             ->toArray();
         $emp = Employee::whereIn('id',array_unique(array_column($main,'purchase_id')))
@@ -441,13 +442,19 @@ class U8ServerService extends Service
 
             //计算金额
             if($value['rate'] > 0){
+//                    ipertaxrate 税率
+//                    iunitprice 原币单价
+//                    itaxprice 原币含税单价
+//                    isum 原币价税合计
+//                    imoney 原币无税金额
+//                    itax 原币税额
                 $value['ipertaxrate'] = $value['rate'];
                 $rate = round($value['rate'] / 100,2);
-                $value['iunitprice'] = round($value['price'] / $rate,2);
+                $value['iunitprice'] = round($value['price'] / (1 + $rate),2);
                 $value['itaxprice'] = $value['price'];
-                $value['isum'] = $value['price'] * $value['number'];
-                $value['imoney'] = $value['iunitprice'] * $value['number'];
-                $value['itax'] = $value['isum'] - $value['imoney'];
+                $value['isum'] = round($value['price'] * $value['number'],2);
+                $value['imoney'] = round($value['iunitprice'] * $value['number'],2);
+                $value['itax'] = round($value['isum'] - $value['imoney'],2);
             }else{
                 $value['ipertaxrate'] = 0;
                 $value['iunitprice'] = $value['price'];
@@ -460,8 +467,9 @@ class U8ServerService extends Service
             $sub_map[$value['purchase_order_id']][] = $value;
         }
         foreach ($main as $key => $value){
+            $main[$key]['cptname'] = $supplier[$value['supplier']] ?? "";
             $main[$key]['cvenname'] = $supplier[$value['supplier']] ?? "";
-            $main[$key]['cdepname'] = $depart[$value['top_depart_id']] ?? "";
+            $main[$key]['cdepname'] = $depart[$value['depart_id']] ?? "";
             $main[$key]['cpersoncode'] = $emp[$value['purchase_id']] ?? "";
             $main[$key]['product'] = $sub_map[$value['id']] ?? [];
         }
@@ -509,11 +517,11 @@ class U8ServerService extends Service
             if($value['rate'] > 0){
                 $value['ipertaxrate'] = $value['rate'];
                 $rate = round($value['rate'] / 100,2);
-                $value['iunitprice'] = round($value['price'] / $rate,2);
+                $value['iunitprice'] = round($value['price'] / (1 + $rate),2);
                 $value['itaxprice'] = $value['price'];
-                $value['isum'] = $value['price'] * $value['number'];
-                $value['imoney'] = $value['iunitprice'] * $value['number'];
-                $value['itax'] = $value['isum'] - $value['imoney'];
+                $value['isum'] = round($value['price'] * $value['number'],2);
+                $value['imoney'] = round($value['iunitprice'] * $value['number'],2);
+                $value['itax'] = round($value['isum'] - $value['imoney'],2);
             }else{
                 $value['ipertaxrate'] = 0;
                 $value['iunitprice'] = $value['price'];