controller.go 7.5 KB

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