Просмотр исходного кода

GO统一处理简单SQL导出请求的接口

Zhouzhendong 5 лет назад
Родитель
Сommit
3321704cbc

+ 8 - 1
app/Http/Controllers/InventoryController.php

@@ -111,7 +111,14 @@ class InventoryController extends Controller
             $sql=app('inventoryDailyLogService')->getSql($params);
 
         }else $sql=app('inventoryDailyLogService')->getSql(['id'=>$request->data]);
-        $post = Http::post(config('go.export.url'),['type'=>'inventoryDailyLog','sql'=>$sql]);
+
+        $row = ["货主","日期","商品名称","商品编码","商品条码","在库数量","长","宽","高","体积","总占用体积","总毛重"];
+        $column = ["owner_name", "created_at", "commodity_name", "commodity_sku", "commodity_barcode_code",
+            "amount", "commodity_length", "commodity_width", "commodity_height", "commodity_volumn", "volumn_occupied", "gross_weight"];
+        $rule = ["created_at"=> "mysqlDate"];
+        $post = Http::post(config('go.export.url'),['type'=>'unify','sql'=>$sql, 'connection'=>'mysql',
+            'row'=>json_encode($row,JSON_UNESCAPED_UNICODE), 'column'=>json_encode($column), 'rule'=>json_encode($rule)]);
+
         if ($post->status() == 500){
             throw new Exception($post->header("Msg"));
         }

+ 1 - 1
app/Services/InventoryDailyLogService.php

@@ -25,7 +25,7 @@ Class InventoryDailyLogService
     }
 
     public function getSql(array $params){
-        return $this->conditionQuery($params)->selectRaw("inventory_daily_logs.created_at,inventory_daily_logs.amount,inventory_daily_logs.volumn_occupied")
+        return $this->conditionQuery($params)->selectRaw("inventory_daily_logs.created_at,inventory_daily_logs.amount,inventory_daily_logs.volumn_occupied,inventory_daily_logs.gross_weight")
             ->leftJoin('owners','inventory_daily_logs.owner_id','owners.id')
                 ->selectRaw('owners.name owner_name')
             ->leftJoin('commodities','inventory_daily_logs.commodity_id','commodities.id')

+ 58 - 13
serves/excelExportGo/api/controller/controller.go

@@ -16,9 +16,7 @@ func Export(w http.ResponseWriter,req *http.Request)  {
 	e := decoder.Decode(&params)
 	if e != nil{
 		utilities.WriteLog("/api/controller/controller.go:18   参数解析失败!","ERROR")
-		return
 	}
-
 	file := excel.CreateFile(selectCreateFormat(params))
 	if errorMsg.GetMsg() != "" {
 		w.Header().Set("Msg",errorMsg.GetMsg())
@@ -26,7 +24,7 @@ func Export(w http.ResponseWriter,req *http.Request)  {
 		return
 	}
 	if _, err := file.WriteTo(w); err != nil {
-		utilities.WriteLog("/api/controller/controller.go:28   返回二进制流失败!","ERROR")
+		utilities.WriteLog("/api/controller/controller.go:27   返回二进制流失败!","ERROR")
 		return
 	}
 }
@@ -52,7 +50,7 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 		var val base
 		err := json.Unmarshal([]byte(params["data"]),&val)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:44  JSON解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:53  JSON解析失败!","ERROR")
 		}
 		row = val.ROW
 		list = val.LIST
@@ -99,7 +97,7 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 		}else{
 			err := json.Unmarshal([]byte(params["data"]), &data)
 			if err != nil {
-				utilities.WriteLog("/api/controller/controller.go:91   库存数据json解析失败!","ERROR")
+				utilities.WriteLog("/api/controller/controller.go:100   库存数据json解析失败!","ERROR")
 			}
 		}
 		row, list = InventoryFormat(data, true)
@@ -109,13 +107,10 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 		}else{
 			err := json.Unmarshal([]byte(params["data"]), &data)
 			if err != nil {
-				utilities.WriteLog("/api/controller/controller.go:101   全部库存数据json解析失败!","ERROR")
+				utilities.WriteLog("/api/controller/controller.go:110   全部库存数据json解析失败!","ERROR")
 			}
 		}
 		row, list = InventoryFormat(data, false)
-	case "inventoryDailyLog":
-		data = orm.GetMysqlData(params["sql"])
-		row, list = InventoryDailyLogFormat(data)
 	case "process":
 		data = orm.GetMysqlData(params["sql"])
 		row, list, mergeRow = ProcessFormat(data)
@@ -128,14 +123,14 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 	case "laborReport":
 		err := json.Unmarshal([]byte(params["data"]), &data)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:120   临时工报表数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:126   临时工报表数据json解析失败!","ERROR")
 		}
 		row, list = LaborReportFormat(data)
 	case "orderIssue":
 		sqlList := make(map[string]string)
 		err := json.Unmarshal([]byte(params["sqlList"]), &sqlList)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:129   订单问题件数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:133   订单问题件数据json解析失败!","ERROR")
 		}
 		if sqlList["orderPackageSql"] == "" || sqlList["secondOrderPackageSql"] == "" || sqlList["orderIssueSql"] == "" || sqlList["rejectedBillItemSql"] == "" || sqlList["logSql"] == ""{
 			return
@@ -191,18 +186,68 @@ func selectModule(params map[string]string) (row []interface{}, list [][]interfa
 		request := paramList{}
 		err := json.Unmarshal([]byte(params["data"]), &request)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:183   称重统计数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:189   称重统计数据json解析失败!","ERROR")
 		}
 		row, list = PackageStatisticFormat(request.ROW, request.LIST)
 	case "inventoryAccountMission":
 		err := json.Unmarshal([]byte(params["data"]), &data)
 		if err != nil {
-			utilities.WriteLog("/api/controller/controller.go:189   库存盘点数据json解析失败!","ERROR")
+			utilities.WriteLog("/api/controller/controller.go:195   库存盘点数据json解析失败!","ERROR")
 		}
 		row, list = InventoryAccountMissionFormat(data)
 	case "inventoryCompare":
 		data = orm.GetMysqlData(params["sql"])
 		row, list = InventoryCompareFormat(data)
+	case "unify":
+		var column []string
+		var rule map[string]string
+		err := json.Unmarshal([]byte(params["row"]), &row)
+		if err != nil {
+			utilities.WriteLog("/api/controller/controller.go:206   参数传递错误!","ERROR")
+		}
+		err = json.Unmarshal([]byte(params["column"]), &column)
+		if err != nil {
+			utilities.WriteLog("/api/controller/controller.go:210   参数传递错误!","ERROR")
+		}
+		err = json.Unmarshal([]byte(params["rule"]), &rule)
+		if params["connection"] == "oracle" {
+			data = orm.GetOracleData(params["sql"])
+		}else{
+			data = orm.GetMysqlData(params["sql"])
+		}
+		list = unifyFormat(data, column, rule)
 	}
 	return row,list,mergeRow,mergeColumn
 }
+
+func unifyFormat(data []map[string]string, row []string, rule map[string]string) [][]interface{}{
+	rowLen := len(row)
+	column :=  make(map[string]int,rowLen)
+	for i,c := range row {
+		column[c] = i
+	}
+
+	list := make([][]interface{},len(data))
+	for k,v := range data{
+		line := make([]interface{},rowLen)
+		for key,value := range column {
+			if rule[key] != ""{
+				line[value] = dataFormat(rule[key], v[key])
+				continue
+			}
+			line[value] = v[key]
+		}
+		list[k] = line
+	}
+	return list
+}
+
+func dataFormat(ruleType string,value string)string{
+	switch ruleType {
+		case "oracleDate":
+			value = utilities.DateFormat(value, "2006-01-02T15:04:05+08:00")
+		case "mysqlDate":
+			value = utilities.DateFormat(value,"2006-01-02T15:04:05Z")
+	}
+	return value
+}

+ 0 - 31
serves/excelExportGo/api/controller/inventoryController.go

@@ -23,37 +23,6 @@ func InventoryFormat(data []map[string]string, requestType bool) ([]interface{},
 	return row, list
 }
 
-func InventoryDailyLogFormat(data []map[string]string) ([]interface{}, [][]interface{})  {
-	row := []interface{}{
-		"货主","日期","商品名称","商品编码","商品条码","在库数量","长","宽","高","体积","总占用体积",
-	}
-	column := map[string]int{
-		"owner_name" : 0,
-		"created_at" : 1,
-		"commodity_name" : 2,
-		"commodity_sku" : 3,
-		"commodity_barcode_code" : 4,
-		"amount" : 5,
-		"commodity_length" : 6,
-		"commodity_width" : 7,
-		"commodity_height" : 8,
-		"commodity_volumn" : 9,
-		"volumn_occupied" : 10,
-	}
-	list := make([][]interface{},len(data))
-	for k,v := range data{
-		line := make([]interface{},len(row))
-		for key,value := range column {
-			if key == "created_at" {
-				line[value] = utilities.DateFormat(v[key],"2006-01-02T15:04:05Z")
-				continue
-			}
-			line[value] = v[key]
-		}
-		list[k] = line
-	}
-	return row, list
-}
 func InventoryAccountMissionFormat(data []map[string]string) ([]interface{}, [][]interface{})  {
 	row := []interface{}{
 		"库位","产品名","商品条码","商品编码","生产日期","失效日期","批号","盘点人","ERP属性仓","质量状态","库存数量",