package controller import ( "bswas/excel" "bswas/orm" "bswas/utilities" "encoding/json" "fmt" "net/http" ) func Export(w http.ResponseWriter,req *http.Request) { errorMsg := utilities.NewError() decoder := json.NewDecoder(req.Body) var params map[string]string // 解析参数 存入map e := decoder.Decode(¶ms) if e != nil{ utilities.WriteLog("/api/controller/controller.go:17 参数解析失败!","ERROR") return } file := excel.CreateFile(selectModule(params)) if errorMsg.GetMsg() != "" { w.Header().Set("Msg",errorMsg.GetMsg()) w.WriteHeader(500) return } if _, err := file.WriteTo(w); err != nil { utilities.WriteLog("/api/controller/controller.go:22 返回二进制流失败!","ERROR") return } } func selectModule(params map[string]string) (row []interface{}, list [][]interface{}, mergeRow map[string]string, mergeColumn []string) { var data []map[string]string switch params["type"] { case "waybill": data = orm.GetMysqlData(params["sql"]) row, list = WaybillFormat(data) case "waybillDelivering": data = orm.GetMysqlData(params["sql"]) row, list = WaybillDeliveringFormat(data) case "waybillFinancial": data = orm.GetMysqlData(params["sql"]) row, list = WaybillFinancialFormat(data) case "rejected": data = orm.GetMysqlData(params["sql"]) row, list, mergeRow = RejectedFormat(data) mergeColumn = []string{ "A","B","C","D","E","F","G","H","I","J","K","T","U", } case "rejectedStatistics": data = orm.GetMysqlData(params["sql"]) row, list = RejectedStatisticsFormat(data) case "order": data = orm.GetOracleData(params["sql"]) row, list, mergeRow = OrderFormat(data) mergeColumn = []string{ "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P", "Q","R","S","Z","AA","AB","AC","AD", } case "orderWave": data = orm.GetOracleData(params["sql"]) row, list = OrderWaveFormat(data) case "package": data = orm.GetMysqlData(params["sql"]) row, list = PackageFormat(data) case "packageIssuedException": data = orm.GetMysqlData(params["sql"]) row, list = PackageIssuedExceptionFormat(data) case "packageCreateException": data = orm.GetMysqlData(params["sql"]) row, list = PackageCreateExceptionFormat(data) case "inventory": if params["sql"] != "" { data = orm.GetOracleData(params["sql"]) }else{ err := json.Unmarshal([]byte(params["data"]), &data) if err != nil { utilities.WriteLog("/api/controller/controller.go:73 库存数据json解析失败!","ERROR") } } row, list = InventoryFormat(data, true) case "allInventory": if params["sql"] != "" { data = orm.GetOracleData(params["sql"]) }else{ err := json.Unmarshal([]byte(params["data"]), &data) if err != nil { utilities.WriteLog("/api/controller/controller.go:83 全部库存数据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) mergeColumn = []string{ "A","B","C","D","E","F","G","H","I", } case "processStatistic": data = orm.GetMysqlData(params["sql"]) row, list = ProcessStatisticFormat(data) case "laborReport": err := json.Unmarshal([]byte(params["data"]), &data) if err != nil { utilities.WriteLog("/api/controller/controller.go:102 临时工报表数据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:110 订单问题件数据json解析失败!","ERROR") } if sqlList["orderPackageSql"] == "" || sqlList["secondOrderPackageSql"] == "" || sqlList["orderIssueSql"] == "" || sqlList["rejectedBillItemSql"] == "" || sqlList["logSql"] == ""{ return } orderIssues := orm.GetMysqlData(sqlList["orderIssueSql"]) if len(orderIssues) < 1 { break } modelData, orderPackageConditionValue, secondOrderPackageConditionValue, rejectedBillItemConditionValue, logConditionValue := GetOrderIssuesModel(orderIssues) orderPackages := make([]map[string]string,0) secondOrderPackages := make([]map[string]string,0) rejectedBillItems := make([]map[string]string,0) logs := make([]map[string]string,0) OP := len(orderPackageConditionValue) SOP := len(secondOrderPackageConditionValue) RB := len(rejectedBillItemConditionValue) L := len(logConditionValue) if orderPackageConditionValue[OP-2:] != "()"{ if orderPackageConditionValue[OP-2:OP-1] == "," { orderPackageConditionValue = orderPackageConditionValue[0:OP-2] + orderPackageConditionValue[OP-1:] } orderPackages = orm.GetMysqlData(sqlList["orderPackageSql"]+orderPackageConditionValue) } if secondOrderPackageConditionValue[len(secondOrderPackageConditionValue)-2:] != "()"{ if secondOrderPackageConditionValue[SOP-2:SOP-1] == "," { secondOrderPackageConditionValue = secondOrderPackageConditionValue[0:SOP-2] + secondOrderPackageConditionValue[SOP-1:] } secondOrderPackages = orm.GetMysqlData(sqlList["secondOrderPackageSql"]+secondOrderPackageConditionValue) } if rejectedBillItemConditionValue[len(rejectedBillItemConditionValue)-2:] != "()"{ if rejectedBillItemConditionValue[RB-2:RB-1] == "," { rejectedBillItemConditionValue = rejectedBillItemConditionValue[0:RB-2] + rejectedBillItemConditionValue[RB-1:] } rejectedBillItems = orm.GetMysqlData(sqlList["rejectedBillItemSql"]+rejectedBillItemConditionValue) } if logConditionValue[len(logConditionValue)-2:] != "()"{ if logConditionValue[L-2:L-1] == "," { logConditionValue = logConditionValue[0:L-2] + logConditionValue[L-1:] } logs = orm.GetMysqlData(sqlList["logSql"]+logConditionValue) } result := MergerOrderIssueData(modelData,orderPackages,secondOrderPackages,rejectedBillItems,logs) row, list, mergeRow = OrderIssueFormat(result) mergeColumn = []string{ "A","B","C","D","E","F","G","H","I","J","K","L", "U","Y","Z","AA","AF","AG","AH","AI","AJ","AK", } case "packageStatistic": type paramList struct { ROW []interface{} `json:"row"` LIST []map[int]string `json:"list"` } request := paramList{} err := json.Unmarshal([]byte(params["data"]), &request) if err != nil { utilities.WriteLog("/api/controller/controller.go:137 称重统计数据json解析失败!","ERROR") } row, list = PackageStatisticFormat(request.ROW, request.LIST) case "inventoryAccountMission": fmt.Println(params["data"]) err := json.Unmarshal([]byte(params["data"]), &data) if err != nil { fmt.Println(err) utilities.WriteLog("/api/controller/controller.go:178 库存盘点数据json解析失败!","ERROR") } row, list = InventoryAccountMissionFormat(data) case "inventoryCompare": data = orm.GetMysqlData(params["sql"]) row, list = InventoryCompareFormat(data) } return row,list,mergeRow,mergeColumn }