orderController.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. package controller
  2. import (
  3. "bswas/utilities"
  4. "strconv"
  5. "strings"
  6. )
  7. func OrderFormat(data []map[string]string) ([]interface{}, [][]interface{}, map[string]string) {
  8. row := []interface{}{
  9. "编号","订单状态","备注","接口下发时间","店铺名称","客户","客户订单号","承运人","快递单号","收货人名称","收货人电话",
  10. "省","市","区","收货人地址","波次编号","仓库","快递获取标记","快递获取时间","产品代码","产品条码","明细状态",
  11. "产品名称","订单数量","复核时间","接口取消标记","拣货单打印标记","接口回传标记","接口回传异常备注","订单冻结",
  12. }
  13. column := map[string]int{
  14. "ORDERNO" : 0,
  15. "ORDERCODENAME" : 1,
  16. "NOTES" : 2,
  17. "ADDTIME" : 3,
  18. "ISSUEPARTYNAME" : 4,
  19. "CUSTOMER_DESCR_C" : 5,
  20. "SOREFERENCE1" : 6,
  21. "CARRIERNAME" : 7,
  22. "SOREFERENCE5" : 8,
  23. "C_CONTACT" : 9,
  24. "C_TEL2" : 10,
  25. "C_PROVINCE" : 11,
  26. "C_CITY" : 12,
  27. "C_DISTRICT" : 13,
  28. "C_ADDRESS1" : 14,
  29. "WAVENO" : 15,
  30. "WAREHOUSEID" : 16,
  31. "EDISENDFLAG2" : 17,
  32. "EDISENDTIME2" : 18,
  33. "SKU" : 19,
  34. "ALTERNATE_SKU1" : 20,
  35. "ORDERDETAILCODENAME" : 21,
  36. "DESCR_C" : 22,
  37. "QTYORDERED" : 23,
  38. "CHECKTIME" : 24,
  39. "ERPCANCELFLAG" : 25,
  40. "PICKING_PRINT_FLAG" : 26,
  41. "EDISENDFLAG" : 27,
  42. "EDIREMARKS2" : 28,
  43. "RELEASESTATUS" : 29,
  44. }
  45. list := make([][]interface{},len(data))
  46. mergeRow := make(map[string]string)
  47. var columnName string
  48. var startIndex int
  49. rowAmount := 0
  50. for k,v := range data{
  51. if columnName == v["ORDERNO"] {
  52. rowAmount++
  53. }else{
  54. if rowAmount != 0 {
  55. mergeRow[strconv.Itoa(startIndex+2)] = strconv.Itoa(startIndex+2+rowAmount)
  56. }
  57. columnName = v["ORDERNO"]
  58. startIndex = k
  59. rowAmount = 0
  60. }
  61. if rowAmount != 0 {
  62. mergeRow[strconv.Itoa(startIndex+2)] = strconv.Itoa(startIndex+2+rowAmount)
  63. }
  64. line := make([]interface{},len(row))
  65. for key,value := range column {
  66. if key == "ADDTIME" || key == "EDISENDTIME2" || key == "CHECKTIME"{
  67. line[value] = utilities.DateFormat(v[key], "2006-01-02T15:04:05+08:00")
  68. continue
  69. }
  70. if key == "C_TEL2" && v[key]=="" {
  71. line[value] = v["C_TEL1"]
  72. continue
  73. }
  74. line[value] = v[key]
  75. }
  76. list[k] = line
  77. }
  78. return row,list,mergeRow
  79. }
  80. func OrderWaveFormat(data []map[string]string) ([]interface{}, [][]interface{}) {
  81. row := []interface{}{
  82. "波次号","波次状态","波次规则","波次描述","承运人","操作员","创建时间","拣货单打印人","拣货单打印时间",
  83. "快递单号打印人","快递单号打印时间",
  84. }
  85. column := map[string]int{
  86. "WAVENO" : 0,
  87. "CODENAME_C" : 1,
  88. "WAVERULE" : 2,
  89. "DESCR" : 3,
  90. "DESCR_C" : 4,
  91. "ADDWHO" : 5,
  92. "ADDTIME" : 6,
  93. "pickerPrint" : 7,
  94. "pickerPrintTime" : 8,
  95. "expressPrinting" : 9,
  96. "expressPrintTime" : 10,
  97. }
  98. list := make([][]interface{},len(data))
  99. for k,v := range data{
  100. line := make([]interface{},len(row))
  101. for key,value := range column {
  102. val := ""
  103. if key == "pickerPrint" && v["USERDEFINE1"] != ""{
  104. index := strings.IndexAny(v["USERDEFINE1"],"-PK")
  105. if index != -1{
  106. val = v["USERDEFINE1"][0:index-1]
  107. }
  108. }
  109. if key == "pickerPrintTime" && v["USERDEFINE1"] != ""{
  110. index := strings.IndexAny(v["USERDEFINE1"],"-PK")
  111. if index != -1{
  112. val = v["USERDEFINE1"][index+3:len(v["USERDEFINE1"])-1]
  113. }
  114. }
  115. if key == "expressPrinting" && v["USERDEFINE2"] != ""{
  116. index := strings.IndexAny(v["USERDEFINE2"],"-EX")
  117. if index != -1{
  118. val = v["USERDEFINE2"][0:index-1]
  119. }else{
  120. index := strings.IndexAny(v["USERDEFINE2"],"-Auto")
  121. if index != -1{
  122. val = v["USERDEFINE2"][0:index-1]
  123. }
  124. }
  125. }
  126. if key == "expressPrintTime" && v["USERDEFINE2"] != ""{
  127. index := strings.IndexAny(v["USERDEFINE2"],"-EX")
  128. if index != -1{
  129. val = v["USERDEFINE2"][index+3:len(v["USERDEFINE2"])-1]
  130. }else{
  131. index := strings.IndexAny(v["USERDEFINE2"],"-Auto")
  132. if index != -1{
  133. val = v["USERDEFINE2"][index+5:len(v["USERDEFINE2"])-1]
  134. }
  135. }
  136. }
  137. if val != ""{
  138. line[value] = val
  139. }else{
  140. line[value] = v[key]
  141. }
  142. }
  143. list[k] = line
  144. }
  145. return row, list
  146. }
  147. func MergerOrderIssueData(data map[string]map[string]interface{}, orderPackages []map[string]string,
  148. secondOrderPackages []map[string]string, rejectedBillItems []map[string]string, logs []map[string]string) map[string]map[string]interface{} {
  149. if len(orderPackages) > 0{
  150. data = mergerOrderPackage(data, orderPackages)
  151. }
  152. if len(secondOrderPackages) > 0{
  153. data = mergerSecondOrderPackage(data, secondOrderPackages)
  154. }
  155. if len(rejectedBillItems) > 0{
  156. data = mergerRejectedBillItem(data, rejectedBillItems)
  157. }
  158. if len(logs) > 0{
  159. data = mergerLog(data, logs)
  160. }
  161. return data
  162. }
  163. func mergerOrderPackage(data map[string]map[string]interface{}, orderPackages []map[string]string) map[string]map[string]interface{} {
  164. for _,orderPackage := range orderPackages {
  165. _,isExist := data[orderPackage["order_issue_id"]]["orderPackages"]
  166. if isExist {
  167. data[orderPackage["order_issue_id"]]["orderPackages"] = append(data[orderPackage["order_issue_id"]]["orderPackages"].([]map[string]string),orderPackage)
  168. }else{
  169. sliced := []map[string]string{
  170. orderPackage,
  171. }
  172. data[orderPackage["order_issue_id"]]["orderPackages"] = sliced
  173. }
  174. }
  175. return data
  176. }
  177. func mergerSecondOrderPackage(data map[string]map[string]interface{}, secondOrderPackages []map[string]string) map[string]map[string]interface{} {
  178. for _,secondOrderPackage := range secondOrderPackages {
  179. _,isExist := data[secondOrderPackage["order_issue_id"]]["secondOrderPackages"]
  180. if isExist {
  181. data[secondOrderPackage["order_issue_id"]]["secondOrderPackages"] = append(data[secondOrderPackage["order_issue_id"]]["secondOrderPackages"].([]map[string]string),secondOrderPackage)
  182. }else{
  183. sliced := []map[string]string{
  184. secondOrderPackage,
  185. }
  186. data[secondOrderPackage["order_issue_id"]]["secondOrderPackages"] = sliced
  187. }
  188. }
  189. return data
  190. }
  191. func mergerRejectedBillItem(data map[string]map[string]interface{}, rejectedBillItems []map[string]string) map[string]map[string]interface{} {
  192. for _,rejectedBillItem := range rejectedBillItems {
  193. _,isExist := data[rejectedBillItem["order_issue_id"]]["rejectedBillItems"]
  194. if isExist {
  195. data[rejectedBillItem["order_issue_id"]]["rejectedBillItems"] = append(data[rejectedBillItem["order_issue_id"]]["rejectedBillItems"].([]map[string]string),rejectedBillItem)
  196. }else{
  197. sliced := []map[string]string{
  198. rejectedBillItem,
  199. }
  200. data[rejectedBillItem["order_issue_id"]]["rejectedBillItems"] = sliced
  201. }
  202. }
  203. return data
  204. }
  205. func mergerLog(data map[string]map[string]interface{}, logs []map[string]string) map[string]map[string]interface{} {
  206. for _,log := range logs {
  207. _,isExist := data[log["order_issue_id"]]["logs"]
  208. if isExist {
  209. data[log["order_issue_id"]]["logs"] = append(data[log["order_issue_id"]]["logs"].([]map[string]string),log)
  210. }else{
  211. sliced := []map[string]string{
  212. log,
  213. }
  214. data[log["order_issue_id"]]["logs"] = sliced
  215. }
  216. }
  217. return data
  218. }
  219. func OrderIssueFormat(dataMap map[string]map[string]interface{}) ([]interface{}, [][]interface{}, map[string]string) {
  220. row := []interface{}{
  221. "登记日期","创建日期","客户","店铺","客户订单号","原始承运商","收货人",
  222. "收货电话","省","市","区","收货人地址","原始运单号","原始商品条码","原始商品名称","原始商品数量",
  223. "退单备注","退单商品名","退单商品条码","退单商品数量","退单状态",
  224. "操作类型","说明","操作者","情况说明","问题类别","二次订单号","二次承运商","二次运单号",
  225. "二次商品条码","二次商品名","二次商品数量","最终状态",
  226. "承运商赔偿金额","承运商快递减免",
  227. "宝时赔偿金额","宝时快递减免","事故责任方",
  228. }
  229. column := map[string]int{
  230. "order_issues_created_at" : 0,
  231. "order_created_at" : 1,
  232. "owner_name" : 2,
  233. "shop_name" : 3,
  234. "client_code" : 4,
  235. "logistic_name" : 5,
  236. "consignee_name" : 6,
  237. "consignee_phone" : 7,
  238. "province" : 8,
  239. "city" : 9,
  240. "district" : 10,
  241. "address" : 11,
  242. "order_package_logistic_number" : 12,
  243. "commodity_sku" : 13,
  244. "commodity_name" : 14,
  245. "commodity_amount" : 15,
  246. "remark" : 16,
  247. "name_goods" : 17,
  248. "barcode_goods" : 18,
  249. "rejected_bill_amount" : 19,
  250. "rejecting_status" : 20,
  251. "log_type" : 21,
  252. "log_content" : 22,
  253. "user_name" : 23,
  254. "result_explain" : 24,
  255. "order_issue_type_name" : 25,
  256. "s_o_client_code" : 26,
  257. "s_logistics_name" : 27,
  258. "logistic_number" : 28,
  259. "s_c_sku" : 29,
  260. "s_c_name" : 30,
  261. "s_o_p_c_amount" : 31,
  262. "final_status" : 32,
  263. "logistic_indemnity_money" : 33,
  264. "logistic_express_remission" : 34,
  265. "baoshi_indemnity_money" : 35,
  266. "baoshi_express_remission" : 36,
  267. "user_workgroup_name" : 37,
  268. }
  269. data := make([]map[string]interface{},len(dataMap))
  270. for _,value := range dataMap {
  271. data[value["index"].(int)] = value
  272. }
  273. var list [][]interface{}
  274. mergeRow := make(map[string]string)
  275. rownum := 0
  276. for _,v := range data{
  277. var orderPackages []map[string]string
  278. var secondOrderPackages []map[string]string
  279. var rejectedBillItems []map[string]string
  280. var logs []map[string]string
  281. if v["orderPackages"] != nil {
  282. orderPackages = v["orderPackages"].([]map[string]string)
  283. }
  284. orderPackagesLength := len(orderPackages)
  285. if v["secondOrderPackages"] != nil {
  286. secondOrderPackages = v["secondOrderPackages"].([]map[string]string)
  287. }
  288. secondOrderPackagesLength := len(secondOrderPackages)
  289. if v["rejectedBillItems"] != nil {
  290. rejectedBillItems = v["rejectedBillItems"].([]map[string]string)
  291. }
  292. rejectedBillItemsLength := len(rejectedBillItems)
  293. if v["logs"] != nil {
  294. logs = v["logs"].([]map[string]string)
  295. }
  296. logsLength := len(logs)
  297. count := 1
  298. if orderPackagesLength> count {
  299. count = orderPackagesLength
  300. }
  301. if secondOrderPackagesLength > count {
  302. count = secondOrderPackagesLength
  303. }
  304. if rejectedBillItemsLength > count {
  305. count = rejectedBillItemsLength
  306. }
  307. if logsLength > count {
  308. count = logsLength
  309. }
  310. if count > 1{
  311. mergeRow[strconv.Itoa(rownum+2)] = strconv.Itoa(rownum+1+count)
  312. }
  313. for i := 0; i<count; i++ {
  314. line := make([]interface{},len(row))
  315. for key,value := range column {
  316. if key == "order_created_at" || key == "order_issues_created_at" {
  317. line[value] = utilities.DateFormat(v[key].(string),"2006-01-02T15:04:05Z")
  318. continue
  319. }
  320. if key == "order_package_logistic_number" || key == "commodity_sku" || key == "commodity_name" || key == "commodity_amount"{
  321. if i < orderPackagesLength && orderPackages != nil{
  322. line[value] = orderPackages[i][key]
  323. }else{
  324. line[value] = ""
  325. }
  326. continue
  327. }
  328. if key == "logistic_number" || key == "s_c_sku" || key == "s_c_name" || key == "s_o_p_c_amount"{
  329. if i < secondOrderPackagesLength && secondOrderPackages != nil{
  330. line[value] = secondOrderPackages[i][key]
  331. }else{
  332. line[value] = ""
  333. }
  334. continue
  335. }
  336. if key == "rejected_bill_amount" || key == "name_goods" || key == "barcode_goods" || key == "remark"{
  337. if i < rejectedBillItemsLength && rejectedBillItems != nil{
  338. line[value] = rejectedBillItems[i][key]
  339. }else{
  340. line[value] = ""
  341. }
  342. continue
  343. }
  344. if key == "log_type" || key == "log_content" || key == "user_name"{
  345. if i < logsLength && logs != nil{
  346. line[value] = logs[i][key]
  347. }else{
  348. line[value] = ""
  349. }
  350. continue
  351. }
  352. line[value] = v[key]
  353. }
  354. list = append(list,line)
  355. rownum++
  356. }
  357. }
  358. return row, list, mergeRow
  359. }
  360. func GetOrderIssuesModel(orderIssues []map[string]string)(modelData map[string]map[string]interface{}, orderPackageConditionValue string,
  361. secondOrderPackageConditionValue string, rejectedBillItemConditionValue string, logConditionValue string){
  362. modelData = make(map[string]map[string]interface{})
  363. orderPackageConditionValue = " WHERE order_packages.order_id IN ("
  364. secondOrderPackageConditionValue = " WHERE s_o_p.order_id IN ("
  365. rejectedBillItemConditionValue = " WHERE rejected_bill_items.id_rejected_bill IN ("
  366. logConditionValue = " WHERE order_issue_process_logs.order_issue_id IN ("
  367. for index,value := range orderIssues{
  368. orderIssue := map[string]interface{}{
  369. "index": index,
  370. "id": value["id"],
  371. "district": value["district"],
  372. "address": value["address"],
  373. "city": value["city"],
  374. "province": value["province"],
  375. "consignee_name": value["consignee_name"],
  376. "consignee_phone": value["consignee_phone"],
  377. "client_code": value["client_code"],
  378. "order_created_at": value["order_created_at"],
  379. "logistic_name": value["logistic_name"],
  380. "owner_name": value["owner_name"],
  381. "s_o_client_code": value["s_o_client_code"],
  382. "logistic_number": value["logistic_number"],
  383. "order_issues_created_at": value["order_issues_created_at"],
  384. "shop_name": value["shop_name"],
  385. "rejecting_status": value["rejecting_status"],
  386. "result_explain": value["result_explain"],
  387. "order_issue_type_name": value["order_issue_type_name"],
  388. "final_status": value["final_status"],
  389. "logistic_indemnity_money": value["logistic_indemnity_money"],
  390. "logistic_express_remission": value["logistic_express_remission"],
  391. "baoshi_indemnity_money": value["baoshi_indemnity_money"],
  392. "baoshi_express_remission": value["baoshi_express_remission"],
  393. "user_workgroup_name": value["user_workgroup_name"],
  394. }
  395. modelData[value["id"]] = orderIssue
  396. if index < len(orderIssues)-1{
  397. if value["order_id"] != "" {
  398. orderPackageConditionValue += value["order_id"]+","
  399. }
  400. if value["s_o_id"] != "" {
  401. secondOrderPackageConditionValue += value["s_o_id"]+","
  402. }
  403. if value["rejected_bill_id"] != "" {
  404. rejectedBillItemConditionValue += value["rejected_bill_id"]+","
  405. }
  406. if value["id"] != "" {
  407. logConditionValue += value["id"]+","
  408. }
  409. }else{
  410. if value["order_id"] != "" {
  411. orderPackageConditionValue += value["order_id"]
  412. }
  413. if value["s_o_id"] != "" {
  414. secondOrderPackageConditionValue += value["s_o_id"]
  415. }
  416. if value["rejected_bill_id"] != "" {
  417. rejectedBillItemConditionValue += value["rejected_bill_id"]
  418. }
  419. if value["id"] != "" {
  420. logConditionValue += value["id"]
  421. }
  422. }
  423. }
  424. orderPackageConditionValue += ")"
  425. secondOrderPackageConditionValue += ")"
  426. rejectedBillItemConditionValue += ")"
  427. logConditionValue += ")"
  428. return
  429. }