cqpCow 2 yıl önce
ebeveyn
işleme
3d66bbce32

+ 4 - 6
app/Http/Controllers/Api/FyyOrderController.php

@@ -17,7 +17,6 @@ class FyyOrderController extends BaseController
         $array = [
             'sqlserver_host' => $data['host'] ?? '',
             'sqlserver_port' => $data['port'] ?? 0,
-            'sqlserver_database' => $data['database'] ?? '',
             'sqlserver_zt' => $data['zt'] ?? '',
             'sqlserver_account' => $data['account'] ?? '',
             'sqlserver_password' => $data['password'] ?? '',
@@ -80,7 +79,6 @@ class FyyOrderController extends BaseController
         }
     }
 
-
     public function orderList(Request $request)
     {
         $service = new FyyOrderService();
@@ -94,7 +92,6 @@ class FyyOrderController extends BaseController
         }
     }
 
-
     public function orderDetail(Request $request)
     {
         $service = new FyyOrderService();
@@ -110,8 +107,8 @@ class FyyOrderController extends BaseController
 
     public function fyyRefreshOnHandQuantity(Request $request){
         $service = new FyyOrderService();
-        $user = $request->get('auth');
-        list($status,$data) = $service->fyyRefreshOnHandQuantity($request->all());
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->fyyRefreshOnHandQuantity($request->all(),$userData);
 
         if($status){
             return $this->json_return(200,'',$data);
@@ -134,7 +131,8 @@ class FyyOrderController extends BaseController
 
     public function getShipmentOrder(Request $request){
         $service = new FyyOrderService();
-        list($status,$data) = $service->getShipmentOrder($request->all());
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getShipmentOrder($request->all(),$userData);
 
         if($status){
             return $this->json_return(200,'',$data);

+ 18 - 2
app/Http/Controllers/Api/LoginController.php

@@ -5,6 +5,7 @@ use App\Service\EmployeeService;
 use App\Service\TokenService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Redis;
 
 //登录
 class LoginController extends BaseController
@@ -25,8 +26,8 @@ class LoginController extends BaseController
         list($bool, $return) = $result;
         if(! $bool) return $this->json_return(201,'',$return);
 
-        //日志
-        $res = Log::channel('login')->info("登录成功", $return);
+        //账套信息
+        $this->setSqlServer($request->all(), $return['id']);
 
         //生成token
         $jwtToken = TokenService::getToken($return['id']);
@@ -43,10 +44,25 @@ class LoginController extends BaseController
         list($bool, $return) = $result;
         if(! $bool) return $this->json_return(201,'',$return);
 
+        //账套信息
+        $this->setSqlServer($request->all(), $return['id']);
+
         //生成token
         $jwtToken = TokenService::getToken($return['id']);
         $jwtToken = self::MOBILE . $jwtToken;
 
         return $this->json_return(200,'', ['token' => $jwtToken]);
     }
+
+    //设置账套缓存
+    private function setSqlServer($data,$user_id){
+        $array = [
+            'sqlserver_zt' => $data['zt'] ?? '',
+            'sqlserver_account' => $data['account'] ?? '',
+            'sqlserver_password' => $data['password'] ?? '',
+        ];
+        $key = 'fyy_sql_server' . $user_id;
+        Redis::set($key,json_encode($array));
+        Redis::expire($key, 86400);
+    }
 }

+ 3 - 3
app/Jobs/ProcessDataJob.php

@@ -104,7 +104,7 @@ class ProcessDataJob implements ShouldQueue
     private function U8Rdrecord10Save(){
         $service = new FinishedOrderService();
         //标记
-        list($status,$msg) = $service->addInJob($this->data['result'],$this->data['data']);
+        list($status,$msg) = $service->addInJob($this->data['result'],$this->data['data'],$this->user);
         return [$status,$msg];
     }
 
@@ -112,7 +112,7 @@ class ProcessDataJob implements ShouldQueue
     private function U8Rdrecord10SaveMobile(){
         $service = new FinishedOrderService();
         //标记
-        list($status,$msg) = $service->addMobileInJob($this->data['result'],$this->data['data'],$this->data['quantity_count']);
+        list($status,$msg) = $service->addMobileInJob($this->data['result'],$this->data['data'],$this->data['quantity_count'],$this->user);
         return [$status,$msg];
     }
 
@@ -141,7 +141,7 @@ class ProcessDataJob implements ShouldQueue
     //销售单出库
     private function U8Rdrecord32Save(){
         $service = new FyyOrderService();
-        list($status,$msg) = $service->addInJob($this->data['result'],$this->data['data']);
+        list($status,$msg) = $service->addInJob($this->data['result'],$this->data['data'],$this->user);
         return [$status,$msg];
     }
 

+ 74 - 49
app/Service/DispatchService.php

@@ -47,64 +47,25 @@ class DispatchService extends Service
         list($status,$msg) = $this->orderRule($data);
         if(!$status) return [$status,$msg];
 
-        $dispatch_no = $this->setOrderNO();
         try{
             DB::beginTransaction();
 
-            //主表
-            Dispatch::insert(['dispatch_no' => $dispatch_no,'crt_time' => time()]);
-
-            //生产数据的源数据
-            $result = $msg;
-
-            date_default_timezone_set("PRC");
-            $time_tmp = date("Ymd", $data['out_order_no_time'][0]);
-            $process_model = new OrdersProductProcess(['channel' => $time_tmp]);
-
-            $time = time();
-            $equipment_id = is_array($data['equipment_id']) ? $data['equipment_id'] : [$data['equipment_id']];
-            $equipment_id = array_filter($equipment_id);
-            $team_id = is_array($data['team_id']) ? $data['team_id'] : [$data['team_id']];
-            $team_id = array_filter($team_id);
-
-            $insert_emp_sub = [];
-            foreach ($result as $key => $value){
-                $quantity_tmp = $data['quantity'][$key];
-                $result[$key]['dispatch_no'] = $dispatch_no;
-                $result[$key]['process_id'] = $data['process_id'];
-                $result[$key]['dispatch_time_start'] = $data['dispatch_time'][0];
-                $result[$key]['dispatch_time_end'] = $data['dispatch_time'][1];
-                $result[$key]['dispatch_quantity'] = $quantity_tmp;
-                $result[$key]['crt_time'] = $time;
-                $result[$key]['crt_id'] = $user['id'];
-
-                $tmp = $this->makeData($equipment_id,$team_id,$data['employee_id'],$result[$key]);
-                $insert_emp_sub = array_merge_recursive($insert_emp_sub,$tmp);
-
-                $process_model->where('order_product_id',$value['order_product_id'])
-                    ->where('process_id',$data['process_id'])
-                    ->where('dispatch_no','')
-                    ->take($quantity_tmp)
-                    ->update([
-                        'dispatch_no' => $dispatch_no,
-                        'status' => 1
-                    ]);
+            if($data['is_split']){
+                foreach ($msg as $value){
+                    $this->insertDispatch([$value],$data,$user);
+                }
+            }else{
+                $this->insertDispatch($msg,$data,$user);
             }
 
-            DispatchSub::insert($result);
-
-            if(! empty($insert_emp_sub)) DispatchEmpSub::insert($insert_emp_sub);
-
             //反写已派工数量
-            $this->writeDispatchQuantity(array_column($result,'order_product_id'));
+            $this->writeDispatchQuantity(array_column($msg,'order_product_id'));
 
             DB::commit();
         }catch (\Exception $e){
             DB::rollBack();
             return [false,$e->getLine().':'.$e->getMessage()];
         }
-
-        return [true,'保存成功!'];
     }
 
     public function makeData($equipment_id, $team_id,$employee_id,$message){
@@ -181,6 +142,52 @@ class DispatchService extends Service
         return $arr;
     }
 
+    public function insertDispatch($msg, $data, $user){
+        //生产数据的源数据
+        $result = $msg;
+        $time = time();
+
+        $dispatch_no = $this->setOrderNO();
+        //主表
+        Dispatch::insert(['dispatch_no' => $dispatch_no,'crt_time' => $time]);
+
+        date_default_timezone_set("PRC");
+        $time_tmp = date("Ymd", $data['out_order_no_time'][0]);
+        $process_model = new OrdersProductProcess(['channel' => $time_tmp]);
+
+        $equipment_id = is_array($data['equipment_id']) ? $data['equipment_id'] : [$data['equipment_id']];
+        $equipment_id = array_filter($equipment_id);
+        $team_id = is_array($data['team_id']) ? $data['team_id'] : [$data['team_id']];
+        $team_id = array_filter($team_id);
+
+        $insert_emp_sub = [];
+        foreach ($result as $key => $value){
+            $result[$key]['dispatch_no'] = $dispatch_no;
+            $result[$key]['process_id'] = $data['process_id'];
+            $result[$key]['dispatch_time_start'] = $data['dispatch_time'][0];
+            $result[$key]['dispatch_time_end'] = $data['dispatch_time'][1];
+            $result[$key]['dispatch_quantity'] = $value['quantity'];
+            $result[$key]['crt_time'] = $time;
+            $result[$key]['crt_id'] = $user['id'];
+
+            $tmp = $this->makeData($equipment_id,$team_id,$data['employee_id'],$result[$key]);
+            $insert_emp_sub = array_merge_recursive($insert_emp_sub,$tmp);
+
+            $process_model->where('order_product_id',$value['order_product_id'])
+                ->where('process_id',$data['process_id'])
+                ->where('dispatch_no','')
+                ->take($value['quantity'])
+                ->update([
+                    'dispatch_no' => $dispatch_no,
+                    'status' => 1
+                ]);
+        }
+
+        DispatchSub::insert($result);
+
+        if(! empty($insert_emp_sub)) DispatchEmpSub::insert($insert_emp_sub);
+    }
+
     public function del($data){
         if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
 
@@ -275,19 +282,37 @@ class DispatchService extends Service
             ->select('id as order_product_id','sale_orders_product_id','order_no','table_header_mark','product_no','product_title','product_size','product_unit','production_quantity','technology_material','technology_name','wood_name','process_mark','table_body_mark','sale_orders_product_id','out_order_no_time','price','customer_name')
             ->orderBy('id','desc')
             ->get()->toArray();
+        $result_map = array_column($result,null,'order_product_id');
 
         //已派工数据
         $map = $this->getDispatchQuantity($data['id']);
 
+        $total_map = $return = [];
+        if($data['is_split']){
+            foreach ($data['id'] as $key => $value){
+                if(isset($total_map[$value])){
+                    $total_map[$value] += $data['quantity'][$key];
+                }else{
+                    $total_map[$value] = $data['quantity'][$key];
+                }
+                $tmp = $result_map[$value];
+                $tmp['quantity'] = $data['quantity'][$key];
+                $return[] = $tmp;
+            }
+        }
         foreach ($result as $key => $value){
+            //数据校验
+            $quantity_tmp = $total_map[$value['order_product_id']] ?? $data['quantity'][$key];
             if(isset($map[$value['order_product_id']])){
-                if($map[$value['order_product_id']] + $data['quantity'][$key] > $value['production_quantity']) return [false,'派单数量不能大于生产订单数量'];
+                if($map[$value['order_product_id']] + $quantity_tmp > $value['production_quantity']) return [false,'派单数量不能大于生产订单数量'];
             }else{
-                if($data['quantity'][$key] > $value['production_quantity']) return [false,'派单数量不能大于生产订单数量'];
+                if($quantity_tmp > $value['production_quantity']) return [false,'派单数量不能大于生产订单数量'];
             }
+            if(! empty($return)) $result[$key]['quantity'] = $data['quantity'][$key];
         }
 
-        return [true, $result];
+        $array = ! empty($return) ? $return : $result;
+        return [true, $array];
     }
 
     public function fillData($data){

+ 4 - 4
app/Service/FinishedOrderService.php

@@ -76,7 +76,7 @@ class FinishedOrderService extends Service
         return [true,'任务已进入队列!'];
     }
 
-    public function addInJob($result,$data){
+    public function addInJob($result,$data,$user){
         try{
             date_default_timezone_set("PRC");
 
@@ -102,7 +102,7 @@ class FinishedOrderService extends Service
             }
 
             if(! empty($insert_sql_server)){
-                $sqlServerModel = new FyySqlServerService();
+                $sqlServerModel = new FyySqlServerService($user['id']);
                 if($sqlServerModel->error) return [false,$sqlServerModel->error];
                 foreach ($insert_sql_server as $value){
                     list($status,$msg) = $sqlServerModel->U8Rdrecord10Save($value);
@@ -441,7 +441,7 @@ class FinishedOrderService extends Service
         return [true,'任务已进入队列!'];
     }
 
-    public function addMobileInJob($result, $data, $count_arr){
+    public function addMobileInJob($result, $data, $count_arr,$user){
         try{
             //用友数据写入------------
             date_default_timezone_set("PRC");
@@ -466,7 +466,7 @@ class FinishedOrderService extends Service
             }
 
             if(! empty($insert_sql_server)){
-                $sqlServerModel = new FyySqlServerService();
+                $sqlServerModel = new FyySqlServerService($user['id']);
                 if($sqlServerModel->error) return [false,$sqlServerModel->error];
                 foreach ($insert_sql_server as $value){
                     list($status,$msg) = $sqlServerModel->U8Rdrecord10Save($value);

+ 7 - 7
app/Service/FyyOrderService.php

@@ -25,7 +25,7 @@ class FyyOrderService extends Service
 
     public function add($data,$user){
         //获取数据
-        $sqlServerModel = new FyySqlServerService();
+        $sqlServerModel = new FyySqlServerService($user['id']);
         list($status,$return,$return_stock_detail) = $sqlServerModel->getDataFromSqlServer($data);
         if(! $status) return [false, $return];
 
@@ -178,9 +178,9 @@ class FyyOrderService extends Service
         return [true,''];
     }
 
-    public function fyyRefreshOnHandQuantity($data){
+    public function fyyRefreshOnHandQuantity($data,$user){
         //获取数据
-        $sqlServerModel = new FyySqlServerService();
+        $sqlServerModel = new FyySqlServerService($user['id']);
         list($status,$return,$return_product) = $sqlServerModel->getDataFromSqlServerForOnHand($data);
         if(! $status) return [false, $return];
 
@@ -232,9 +232,9 @@ class FyyOrderService extends Service
         return [true,'任务已进入队列!'];
     }
 
-    public function addInJob($result,$data){
+    public function addInJob($result,$data,$user){
         try{
-            $sqlServerModel = new FyySqlServerService();
+            $sqlServerModel = new FyySqlServerService($user['id']);
             if($sqlServerModel->error) return [false,$sqlServerModel->error];
 
             list($status,$msg) = $sqlServerModel->U8Rdrecord32Save($data['post']);
@@ -332,10 +332,10 @@ class FyyOrderService extends Service
         return [true, $list];
     }
 
-    public function getShipmentOrder($data){
+    public function getShipmentOrder($data,$user){
         if(empty($data['time'][0]) || empty($data['time'][1])) return ['false', '时间范围不能为空!'];
 
-        $sqlServerModel = new FyySqlServerService();
+        $sqlServerModel = new FyySqlServerService($user['id']);
         if($sqlServerModel->error) return [false,$sqlServerModel->error];
 
         $result = $sqlServerModel->getDataFromDispatchList($data);

+ 9 - 3
app/Service/FyySqlServerService.php

@@ -22,16 +22,22 @@ class FyySqlServerService extends Service
     public $sAccID = "(default)@999";
     public $sUserID = "demo";
     public $sPassword = "";
+    private $database_select = [
+        '001' => 'UFDATA_001_2023',
+        '002' => 'UFDATA_002_2023',
+        '999' => 'UFDATA_999_2023'
+    ];
 
-    public function __construct()
+    public function __construct($user_id = '')
     {
-        $fyy_array = Redis::get('fyy_sql_server');
+        $key = 'fyy_sql_server' . $user_id;
+        $fyy_array = Redis::get($key);
         if(! empty($fyy_array)) {
             $fyy_array = json_decode($fyy_array,true);
             if(! empty($fyy_array['sqlserver_host'])) $this->host = $fyy_array['sqlserver_host'];
             if(! empty($fyy_array['sqlserver_host_api'])) $this->host_api = $fyy_array['sqlserver_host_api'];
             if(! empty($fyy_array['sqlserver_port'])) $this->port = $fyy_array['sqlserver_port'];
-            if(! empty($fyy_array['sqlserver_database'])) $this->database = $fyy_array['sqlserver_database'];
+            if(! empty($fyy_array['sqlserver_database'])) $this->database = $this->database_select[$fyy_array['sqlserver_zt']];
             if(! empty($fyy_array['sqlserver_zt'])) $this->sAccID = '(default)@' . $fyy_array['sqlserver_zt'];
             if(! empty($fyy_array['sqlserver_account'])) $this->sUserID = $fyy_array['sqlserver_account'];
             if(! empty($fyy_array['sqlserver_password'])) $this->sPassword = $fyy_array['sqlserver_password'];