controller.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package controller
  2. import (
  3. "bswas/excel"
  4. "bswas/orm"
  5. "bswas/utilities"
  6. "encoding/json"
  7. "fmt"
  8. "net/http"
  9. )
  10. func Export(w http.ResponseWriter,req *http.Request) {
  11. errorMsg := utilities.NewError()
  12. decoder := json.NewDecoder(req.Body)
  13. var params map[string]string
  14. // 解析参数 存入map
  15. e := decoder.Decode(&params)
  16. if e != nil{
  17. utilities.WriteLog("/api/controller/controller.go:17 参数解析失败!","ERROR")
  18. return
  19. }
  20. file := excel.CreateFile(selectModule(params))
  21. if errorMsg.GetMsg() != "" {
  22. w.Header().Set("Msg",errorMsg.GetMsg())
  23. w.WriteHeader(500)
  24. return
  25. }
  26. if _, err := file.WriteTo(w); err != nil {
  27. utilities.WriteLog("/api/controller/controller.go:22 返回二进制流失败!","ERROR")
  28. return
  29. }
  30. }
  31. func selectModule(params map[string]string) (row []interface{}, list [][]interface{}, mergeRow map[string]string, mergeColumn []string) {
  32. var data []map[string]string
  33. switch params["type"] {
  34. case "waybill":
  35. data = orm.GetMysqlData(params["sql"])
  36. row, list = WaybillFormat(data)
  37. case "waybillDelivering":
  38. data = orm.GetMysqlData(params["sql"])
  39. row, list = WaybillDeliveringFormat(data)
  40. case "waybillFinancial":
  41. data = orm.GetMysqlData(params["sql"])
  42. row, list = WaybillFinancialFormat(data)
  43. case "rejected":
  44. data = orm.GetMysqlData(params["sql"])
  45. row, list, mergeRow = RejectedFormat(data)
  46. mergeColumn = []string{
  47. "A","B","C","D","E","F","G","H","I","J","K","T","U",
  48. }
  49. case "rejectedStatistics":
  50. data = orm.GetMysqlData(params["sql"])
  51. row, list = RejectedStatisticsFormat(data)
  52. case "order":
  53. data = orm.GetOracleData(params["sql"])
  54. row, list, mergeRow = OrderFormat(data)
  55. mergeColumn = []string{
  56. "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P",
  57. "Q","R","S","Z","AA","AB","AC","AD",
  58. }
  59. case "orderWave":
  60. data = orm.GetOracleData(params["sql"])
  61. row, list = OrderWaveFormat(data)
  62. case "package":
  63. data = orm.GetMysqlData(params["sql"])
  64. row, list = PackageFormat(data)
  65. case "packageIssuedException":
  66. data = orm.GetMysqlData(params["sql"])
  67. row, list = PackageIssuedExceptionFormat(data)
  68. case "packageCreateException":
  69. data = orm.GetMysqlData(params["sql"])
  70. row, list = PackageCreateExceptionFormat(data)
  71. case "inventory":
  72. if params["sql"] != "" {
  73. data = orm.GetOracleData(params["sql"])
  74. }else{
  75. err := json.Unmarshal([]byte(params["data"]), &data)
  76. if err != nil {
  77. utilities.WriteLog("/api/controller/controller.go:73 库存数据json解析失败!","ERROR")
  78. }
  79. }
  80. row, list = InventoryFormat(data, true)
  81. case "allInventory":
  82. if params["sql"] != "" {
  83. data = orm.GetOracleData(params["sql"])
  84. }else{
  85. err := json.Unmarshal([]byte(params["data"]), &data)
  86. if err != nil {
  87. utilities.WriteLog("/api/controller/controller.go:83 全部库存数据json解析失败!","ERROR")
  88. }
  89. }
  90. row, list = InventoryFormat(data, false)
  91. case "inventoryDailyLog":
  92. data = orm.GetMysqlData(params["sql"])
  93. row, list = InventoryDailyLogFormat(data)
  94. case "process":
  95. data = orm.GetMysqlData(params["sql"])
  96. row, list, mergeRow = ProcessFormat(data)
  97. mergeColumn = []string{
  98. "A","B","C","D","E","F","G","H","I",
  99. }
  100. case "processStatistic":
  101. data = orm.GetMysqlData(params["sql"])
  102. row, list = ProcessStatisticFormat(data)
  103. case "laborReport":
  104. err := json.Unmarshal([]byte(params["data"]), &data)
  105. if err != nil {
  106. utilities.WriteLog("/api/controller/controller.go:102 临时工报表数据json解析失败!","ERROR")
  107. }
  108. row, list = LaborReportFormat(data)
  109. case "orderIssue":
  110. sqlList := make(map[string]string)
  111. err := json.Unmarshal([]byte(params["sqlList"]), &sqlList)
  112. if err != nil {
  113. utilities.WriteLog("/api/controller/controller.go:110 订单问题件数据json解析失败!","ERROR")
  114. }
  115. if sqlList["orderPackageSql"] == "" || sqlList["secondOrderPackageSql"] == "" || sqlList["orderIssueSql"] == "" || sqlList["rejectedBillItemSql"] == "" || sqlList["logSql"] == ""{
  116. return
  117. }
  118. orderIssues := orm.GetMysqlData(sqlList["orderIssueSql"])
  119. if len(orderIssues) < 1 {
  120. break
  121. }
  122. modelData, orderPackageConditionValue, secondOrderPackageConditionValue, rejectedBillItemConditionValue, logConditionValue := GetOrderIssuesModel(orderIssues)
  123. orderPackages := make([]map[string]string,0)
  124. secondOrderPackages := make([]map[string]string,0)
  125. rejectedBillItems := make([]map[string]string,0)
  126. logs := make([]map[string]string,0)
  127. OP := len(orderPackageConditionValue)
  128. SOP := len(secondOrderPackageConditionValue)
  129. RB := len(rejectedBillItemConditionValue)
  130. L := len(logConditionValue)
  131. if orderPackageConditionValue[OP-2:] != "()"{
  132. if orderPackageConditionValue[OP-2:OP-1] == "," {
  133. orderPackageConditionValue = orderPackageConditionValue[0:OP-2] + orderPackageConditionValue[OP-1:]
  134. }
  135. orderPackages = orm.GetMysqlData(sqlList["orderPackageSql"]+orderPackageConditionValue)
  136. }
  137. if secondOrderPackageConditionValue[len(secondOrderPackageConditionValue)-2:] != "()"{
  138. if secondOrderPackageConditionValue[SOP-2:SOP-1] == "," {
  139. secondOrderPackageConditionValue = secondOrderPackageConditionValue[0:SOP-2] + secondOrderPackageConditionValue[SOP-1:]
  140. }
  141. secondOrderPackages = orm.GetMysqlData(sqlList["secondOrderPackageSql"]+secondOrderPackageConditionValue)
  142. }
  143. if rejectedBillItemConditionValue[len(rejectedBillItemConditionValue)-2:] != "()"{
  144. if rejectedBillItemConditionValue[RB-2:RB-1] == "," {
  145. rejectedBillItemConditionValue = rejectedBillItemConditionValue[0:RB-2] + rejectedBillItemConditionValue[RB-1:]
  146. }
  147. rejectedBillItems = orm.GetMysqlData(sqlList["rejectedBillItemSql"]+rejectedBillItemConditionValue)
  148. }
  149. if logConditionValue[len(logConditionValue)-2:] != "()"{
  150. if logConditionValue[L-2:L-1] == "," {
  151. logConditionValue = logConditionValue[0:L-2] + logConditionValue[L-1:]
  152. }
  153. logs = orm.GetMysqlData(sqlList["logSql"]+logConditionValue)
  154. }
  155. result := MergerOrderIssueData(modelData,orderPackages,secondOrderPackages,rejectedBillItems,logs)
  156. row, list, mergeRow = OrderIssueFormat(result)
  157. mergeColumn = []string{
  158. "A","B","C","D","E","F","G","H","I","J","K","L",
  159. "U","Y","Z","AA","AF","AG","AH","AI","AJ","AK",
  160. }
  161. case "packageStatistic":
  162. type paramList struct {
  163. ROW []interface{} `json:"row"`
  164. LIST []map[int]string `json:"list"`
  165. }
  166. request := paramList{}
  167. err := json.Unmarshal([]byte(params["data"]), &request)
  168. if err != nil {
  169. utilities.WriteLog("/api/controller/controller.go:137 称重统计数据json解析失败!","ERROR")
  170. }
  171. row, list = PackageStatisticFormat(request.ROW, request.LIST)
  172. case "inventoryAccountMission":
  173. fmt.Println(params["data"])
  174. err := json.Unmarshal([]byte(params["data"]), &data)
  175. if err != nil {
  176. fmt.Println(err)
  177. utilities.WriteLog("/api/controller/controller.go:178 库存盘点数据json解析失败!","ERROR")
  178. }
  179. row, list = InventoryAccountMissionFormat(data)
  180. case "inventoryCompare":
  181. data = orm.GetMysqlData(params["sql"])
  182. row, list = InventoryCompareFormat(data)
  183. }
  184. return row,list,mergeRow,mergeColumn
  185. }