cqp 2 недель назад
Родитель
Сommit
5bcdd8f0ed

+ 11 - 0
app/Http/Controllers/Api/TestController.php

@@ -54,6 +54,17 @@ class TestController extends BaseController
         }
         }
     }
     }
 
 
+    public function updateSalesOrder(Request $request){
+        $common_array = $request->common_param;
+        list($bool, $data) = (new TestService())->updateSalesOrder($request->all(),$common_array);
+
+        if($bool){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function purchaseOrderGet(Request $request){
     public function purchaseOrderGet(Request $request){
         $common_array = $request->common_param;
         $common_array = $request->common_param;
         list($bool, $data) = (new TestService())->purchaseOrderGet($request->all(),$common_array);
         list($bool, $data) = (new TestService())->purchaseOrderGet($request->all(),$common_array);

+ 4 - 0
app/Http/Middleware/CheckU8.php

@@ -40,6 +40,10 @@ class CheckU8
             'site' => $site,
             'site' => $site,
             'api_host' => $site_array['api_host'],
             'api_host' => $site_array['api_host'],
             'api_port' => $site_array['api_port'],
             'api_port' => $site_array['api_port'],
+            'username' => $site_array['username'],
+            'password' => $site_array['password'],
+            'connect_name' => $site_array['connect_name'],
+            'database_port' => $site_array['database_port'],
             'database' => $database,
             'database' => $database,
             'title' => $title
             'title' => $title
         ];
         ];

+ 25 - 2
app/Service/TestService.php

@@ -120,7 +120,7 @@ class TestService extends Service
             'customSQLPath' => 'U8API/SO_SOMain/Get',
             'customSQLPath' => 'U8API/SO_SOMain/Get',
             'paramObj' => [
             'paramObj' => [
                 "@pagesize" => $page,
                 "@pagesize" => $page,
-                "@where" => "AND m.dDate >= '$start_time' AND m.dDate <= '$end_time'",
+                "@where" => "AND m.dDate >= '$start_time' AND m.dDate <= '$end_time' AND m.iStatus = 1",
                 "@code" => $order_number,
                 "@code" => $order_number,
                 "@version" => $version,
                 "@version" => $version,
             ]
             ]
@@ -152,6 +152,7 @@ class TestService extends Service
                 $total_qty = $money = 0;
                 $total_qty = $money = 0;
                 foreach ($detail as $d_value){
                 foreach ($detail as $d_value){
                     $return_detail[] = [
                     $return_detail[] = [
+                        'erp_sale_dt_id' => $d_value['autoid'],
                         'item_no' => $d_value['irowno'],
                         'item_no' => $d_value['irowno'],
                         'material_code' => $d_value['cinvcode'],
                         'material_code' => $d_value['cinvcode'],
                         'brand_name' => $d_value['cdefine28'] ?? '',
                         'brand_name' => $d_value['cdefine28'] ?? '',
@@ -198,6 +199,7 @@ class TestService extends Service
                 $total_qty = $money = 0;
                 $total_qty = $money = 0;
                 foreach ($detail as $d_value){
                 foreach ($detail as $d_value){
                     $return_detail[] = [
                     $return_detail[] = [
+                        'erp_sale_dt_id' => $d_value['autoid'],
                         'material_code' => $d_value['cinvcode'] ?? '',
                         'material_code' => $d_value['cinvcode'] ?? '',
                         'specs' => $d_value['cinvstd'] ?? '',
                         'specs' => $d_value['cinvstd'] ?? '',
                         'unit' => $d_value['cinvm_unit'] ?? '',
                         'unit' => $d_value['cinvm_unit'] ?? '',
@@ -244,6 +246,7 @@ class TestService extends Service
                 $total_qty = $money = 0;
                 $total_qty = $money = 0;
                 foreach ($detail as $d_value){
                 foreach ($detail as $d_value){
                     $return_detail[] = [
                     $return_detail[] = [
+                        'erp_sale_dt_id' => $d_value['autoid'],
                         'material_code' => $d_value['cinvcode'] ?? '',
                         'material_code' => $d_value['cinvcode'] ?? '',
                         'contract_no' => $d_value['cdefine23'] ?? '',
                         'contract_no' => $d_value['cdefine23'] ?? '',
                         'specs' => $d_value['cinvstd'] ?? '',
                         'specs' => $d_value['cinvstd'] ?? '',
@@ -396,6 +399,26 @@ class TestService extends Service
         return [true, $result['data']['DataTable1']];
         return [true, $result['data']['DataTable1']];
     }
     }
 
 
+    public function updateSalesOrder($data, $common_array){
+        if (empty($data['sale_order_details']) || !is_array($data['sale_order_details'])) {
+            return [false, '更新数据不能为空'];
+        }
+        foreach ($data['sale_order_details'] as $index => $value) {
+            $line = $index + 1;
+            if (empty($value['erp_sale_dt_id'])) {
+                return [false, "第{$line}行:明细行ID不能为空"];
+            }
+            if (!isset($value['quantity']) || !is_numeric($value['quantity']) || floatval($value['quantity']) < 0.0) {
+                return [false, "第{$line}行:数量格式错误或必须大于等于0"];
+            }
+        }
+
+        $service = new U8ThirtyPartyDatabaseServerService($common_array);
+        list($status, $msg) = $service->updateSaleOrderDetails($data);
+
+        return [$status, $msg];
+    }
+
     public function materialAddU8($data,$common_array){
     public function materialAddU8($data,$common_array){
         list($status, $msg) = $this->getToken($common_array);
         list($status, $msg) = $this->getToken($common_array);
         if(! $status) return [false, $msg];
         if(! $status) return [false, $msg];
@@ -561,7 +584,7 @@ class TestService extends Service
         $service = new U8ThirtyPartyDatabaseServerService($config[$data['site']]);
         $service = new U8ThirtyPartyDatabaseServerService($config[$data['site']]);
         list($status, $msg) = $service->getStockCountWithPercentage();
         list($status, $msg) = $service->getStockCountWithPercentage();
 
 
-        return [$service, $msg];
+        return [$status, $msg];
     }
     }
 
 
     //-----------------------------------朗峰u8-----
     //-----------------------------------朗峰u8-----

+ 35 - 1
app/Service/U8ThirtyPartyDatabaseServerService.php

@@ -24,7 +24,7 @@ class U8ThirtyPartyDatabaseServerService extends Service
             'driver'   => 'sqlsrv',
             'driver'   => 'sqlsrv',
             'host'     => $data['api_host'],
             'host'     => $data['api_host'],
             'port'     => $data['database_port'],
             'port'     => $data['database_port'],
-            'database' => 'UFDATA_001_2025',
+            'database' => $data['database'],
             'username' => $data['username'],
             'username' => $data['username'],
             'password' => $data['password'],
             'password' => $data['password'],
             'options'  => [
             'options'  => [
@@ -126,4 +126,38 @@ class U8ThirtyPartyDatabaseServerService extends Service
             return [false, $e->getMessage()];
             return [false, $e->getMessage()];
         }
         }
     }
     }
+
+    /**
+     * 更新销售订单明细表 (SO_SODetails) 的 FPurQuan 字段
+     * * @param array $data 包含 sale_order_details 的数组
+     */
+    public function updateSaleOrderDetails($data)
+    {
+        // 2. 开启事务执行更新
+        $db = DB::connection($this->connName);
+        $db->beginTransaction();
+
+        try {
+            foreach ($data['sale_order_details'] as $item) {
+                $autoId = $item['erp_sale_dt_id'];
+                $quantity = floatval($item['quantity']);
+
+                // 3. 执行更新
+                // U8 销售订单子表表名为 SO_SODetails,主键通常是 iSOsID (在某些版本也叫 AutoID)
+                // 根据你的描述,FPurQuan 是我们要更新的目标字段
+                $db->table('SO_SODetails')
+                    ->where('AutoID', $autoId) // 请根据你数据库实际字段名确认是 AutoID 还是 iSOsID
+                    ->update([
+                        'fPurQuan' => $quantity,
+                    ]);
+            }
+
+            $db->commit();
+            return [true, ''];
+
+        } catch (\Throwable $e) {
+            $db->rollBack();
+            return [false, '操作失败:' . $e->getMessage()];
+        }
+    }
 }
 }

+ 3 - 0
config/u.php

@@ -5,6 +5,7 @@ return [
         'api_host' => 'samata2924.imwork.net',
         'api_host' => 'samata2924.imwork.net',
         'api_port' => '47438',
         'api_port' => '47438',
         'database_port' => '55362',
         'database_port' => '55362',
+        'database' => 'UFDATA_001_2025',
         'connect_name' => 'lfmy',
         'connect_name' => 'lfmy',
         'username' => 'sa',
         'username' => 'sa',
         'password' => 'Aa1',
         'password' => 'Aa1',
@@ -13,6 +14,7 @@ return [
         'api_host' => '1ag17727201hq.vicp.fun',
         'api_host' => '1ag17727201hq.vicp.fun',
         'api_port' => '46227',
         'api_port' => '46227',
         'database_port' => '54788',
         'database_port' => '54788',
+        'database' => 'UFDATA_001_2025',
         'connect_name' => 'hclt',
         'connect_name' => 'hclt',
         'username' => 'sa',
         'username' => 'sa',
         'password' => 'Aa1',
         'password' => 'Aa1',
@@ -21,6 +23,7 @@ return [
         'api_host' => '1wz1796225me1.vicp.fun',
         'api_host' => '1wz1796225me1.vicp.fun',
         'api_port' => '42860',
         'api_port' => '42860',
         'database_port' => '41402',
         'database_port' => '41402',
+        'database' => 'UFDATA_001_2025',
         'connect_name' => 'jlwm',
         'connect_name' => 'jlwm',
         'username' => 'sa',
         'username' => 'sa',
         'password' => 'Aa1',
         'password' => 'Aa1',

+ 1 - 0
routes/api.php

@@ -68,6 +68,7 @@ Route::any('recordList', 'Api\TestController@recordList');
 Route::any('getInventoryStock', 'Api\TestController@getInventoryStock');
 Route::any('getInventoryStock', 'Api\TestController@getInventoryStock');
 Route::group(['middleware'=> ['CheckU8']],function ($route){
 Route::group(['middleware'=> ['CheckU8']],function ($route){
     $route->any('salesOrderGet', 'Api\TestController@salesOrderGet');
     $route->any('salesOrderGet', 'Api\TestController@salesOrderGet');
+    $route->any('updateSalesOrder', 'Api\TestController@updateSalesOrder');
     $route->any('purchaseOrderGet', 'Api\TestController@purchaseOrderGet');
     $route->any('purchaseOrderGet', 'Api\TestController@purchaseOrderGet');
     $route->any('materialAddU8', 'Api\TestController@materialAddU8')->middleware('U8Deal');
     $route->any('materialAddU8', 'Api\TestController@materialAddU8')->middleware('U8Deal');
     $route->any('productInAddU8', 'Api\TestController@productInAddU8')->middleware('U8Deal');
     $route->any('productInAddU8', 'Api\TestController@productInAddU8')->middleware('U8Deal');