supply_order_api_contorller.go 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. package controllers
  2. import (
  3. "XT_New/enums"
  4. "XT_New/models"
  5. "XT_New/service"
  6. "XT_New/utils"
  7. "encoding/json"
  8. "fmt"
  9. "github.com/astaxie/beego"
  10. "reflect"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. type SupplyOrderApiController struct {
  16. BaseAuthAPIController
  17. }
  18. func SupplyOrderApiRegistRouters() {
  19. beego.Router("/api/supply/getinitorder", &SupplyOrderApiController{}, "get:GetInitOrder")
  20. beego.Router("/api/supply/savepurchaseorder", &SupplyOrderApiController{}, "post:SavePurchaseOrder")
  21. beego.Router("/api/supply/getallsupply", &SupplyOrderApiController{}, "get:GetAllSupply")
  22. beego.Router("/api/supply/getallpurchaseorderlist", &SupplyOrderApiController{}, "get:GetAllPurchaseOrderList")
  23. beego.Router("/api/supply/updatepurchaseorder", &SupplyOrderApiController{}, "Post:UpdatePurchaseOrder")
  24. }
  25. func (this *SupplyOrderApiController) GetInitOrder() {
  26. orgId := this.GetAdminUserInfo().CurrentOrgId
  27. //获取药品库数据
  28. baseList, _ := service.GetSupplyDrugList(orgId)
  29. goodList, _ := service.GetSupplyGoodList(orgId)
  30. manufactuerList, _ := service.GetAllManufacturerList(orgId)
  31. goodTypeList, _ := service.GetAllGoodType(orgId)
  32. supplyList, _ := service.GetSupplierList(orgId)
  33. var drugType = "药品类型"
  34. drugTypeParent, _ := service.GetDrugDataConfig(0, drugType)
  35. drugTypeList, _ := service.GetParentDataConfig(drugTypeParent.ID, orgId)
  36. this.ServeSuccessJSON(map[string]interface{}{
  37. "drugList": baseList,
  38. "goodList": goodList,
  39. "manufactuerList": manufactuerList,
  40. "goodTypeList": goodTypeList,
  41. "drugTypeList": drugTypeList,
  42. "supplyList": supplyList,
  43. })
  44. return
  45. }
  46. func (this *SupplyOrderApiController) SavePurchaseOrder() {
  47. supplier_id, _ := this.GetInt64("supplier_name")
  48. start_time := this.GetString("start_time")
  49. end_time := this.GetString("end_time")
  50. timeLayout := "2006-01-02"
  51. loc, _ := time.LoadLocation("Local")
  52. var startTime int64
  53. if len(start_time) > 0 {
  54. theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  55. if err != nil {
  56. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  57. return
  58. }
  59. startTime = theTime.Unix()
  60. }
  61. var endTime int64
  62. if len(end_time) > 0 {
  63. theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  64. if err != nil {
  65. utils.ErrorLog(err.Error())
  66. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  67. return
  68. }
  69. endTime = theTime.Unix()
  70. }
  71. rate_of_concession := this.GetString("rate_of_concession")
  72. rate_of_concession_float, _ := strconv.ParseFloat(rate_of_concession, 64)
  73. discount_amount := this.GetString("discount_amount")
  74. discount_amount_float, _ := strconv.ParseFloat(discount_amount, 64)
  75. fmt.Println("supplier_id23323232323232", supplier_id, startTime, endTime, rate_of_concession, rate_of_concession_float, discount_amount, discount_amount_float)
  76. dataBody := make(map[string]interface{}, 0)
  77. err := json.Unmarshal(this.Ctx.Input.RequestBody, &dataBody)
  78. if err != nil {
  79. utils.ErrorLog(err.Error())
  80. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  81. return
  82. }
  83. //生成订货单
  84. timeStr := time.Now().Format("2006-01-02")
  85. timeArr := strings.Split(timeStr, "-")
  86. orgId := this.GetAdminUserInfo().CurrentOrgId
  87. total, _ := service.FindAllSupplyOrder(orgId)
  88. total = total + 1
  89. warehousing_order := "CGDD" + timeArr[0] + timeArr[1] + timeArr[2] + "00" + strconv.FormatInt(total, 10)
  90. recordDateStr := time.Now().Format("2006-01-02")
  91. recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr)
  92. fmt.Scan("parseDateErr", parseDateErr)
  93. record_date := recordDate.Unix()
  94. info := models.SupplierWarehouseInfo{
  95. Number: warehousing_order,
  96. UserOrgId: orgId,
  97. Creater: this.GetAdminUserInfo().AdminUser.Id,
  98. Ctime: time.Now().Unix(),
  99. Mtime: 0,
  100. Status: 1,
  101. RecordDate: record_date,
  102. IsCheck: 2,
  103. RateOfConcession: rate_of_concession_float,
  104. DiscountAmount: discount_amount_float,
  105. DocumentDate: startTime,
  106. DeliveryDate: endTime,
  107. SupplierId: supplier_id,
  108. }
  109. err = service.CreateSupplyWarehouse(info)
  110. warehouseInfo, _ := service.FindLastSupplyWarehouseInfo(orgId)
  111. var warehousingInfo []*models.SupplierWarehousingInfoOrder
  112. if dataBody["stockIn"] != nil && reflect.TypeOf(dataBody["stockIn"]).String() == "[]interface {}" {
  113. thisStockIn, _ := dataBody["stockIn"].([]interface{})
  114. if len(thisStockIn) > 0 {
  115. for _, item := range thisStockIn {
  116. items := item.(map[string]interface{})
  117. if items["id"] == nil || reflect.TypeOf(items["id"]).String() != "float64" {
  118. utils.ErrorLog("id")
  119. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  120. return
  121. }
  122. id := int64(items["id"].(float64))
  123. if items["supply_count"] == nil || reflect.TypeOf(items["supply_count"]).String() != "float64" {
  124. utils.ErrorLog("supply_count")
  125. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  126. return
  127. }
  128. supply_count := int64(items["supply_count"].(float64))
  129. if items["supply_license_number"] == nil || reflect.TypeOf(items["supply_license_number"]).String() != "string" {
  130. utils.ErrorLog("supply_license_number")
  131. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  132. return
  133. }
  134. supply_license_number := items["supply_license_number"].(string)
  135. if items["supply_price"] == nil || reflect.TypeOf(items["supply_price"]).String() != "string" {
  136. utils.ErrorLog("supply_price")
  137. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  138. return
  139. }
  140. supply_price := items["supply_price"].(string)
  141. supply_price_float, _ := strconv.ParseFloat(supply_price, 64)
  142. if items["supply_remake"] == nil || reflect.TypeOf(items["supply_remake"]).String() != "string" {
  143. utils.ErrorLog("supply_remake")
  144. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  145. return
  146. }
  147. supply_remake := items["supply_remake"].(string)
  148. if items["supply_total_price"] == nil || reflect.TypeOf(items["supply_total_price"]).String() != "string" {
  149. utils.ErrorLog("supply_total_price")
  150. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  151. return
  152. }
  153. supply_total_price := items["supply_total_price"].(string)
  154. supply_total_price_float, _ := strconv.ParseFloat(supply_total_price, 64)
  155. if items["type"] == nil || reflect.TypeOf(items["type"]).String() != "float64" {
  156. utils.ErrorLog("type")
  157. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  158. return
  159. }
  160. is_source := int64(items["type"].(float64))
  161. if items["supply_type"] == nil || reflect.TypeOf(items["supply_type"]).String() != "string" {
  162. utils.ErrorLog("supply_type")
  163. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  164. return
  165. }
  166. supply_type := items["supply_type"].(string)
  167. if items["supply_specification_name"] == nil || reflect.TypeOf(items["supply_specification_name"]).String() != "string" {
  168. utils.ErrorLog("supply_specification_name")
  169. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  170. return
  171. }
  172. supply_specification_name := items["supply_specification_name"].(string)
  173. if items["supply_total"] == nil || reflect.TypeOf(items["supply_total"]).String() != "string" {
  174. utils.ErrorLog("supply_total")
  175. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  176. return
  177. }
  178. supply_total := items["supply_total"].(string)
  179. if items["supply_manufacturer"] == nil || reflect.TypeOf(items["supply_manufacturer"]).String() != "string" {
  180. utils.ErrorLog("supply_manufacturer")
  181. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  182. return
  183. }
  184. supply_manufacturer := items["supply_manufacturer"].(string)
  185. if items["name"] == nil || reflect.TypeOf(items["name"]).String() != "string" {
  186. utils.ErrorLog("name")
  187. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  188. return
  189. }
  190. name := items["name"].(string)
  191. order := models.SupplierWarehousingInfoOrder{
  192. OrderNumber: warehousing_order,
  193. IsSource: is_source,
  194. Count: supply_count,
  195. Price: supply_price_float,
  196. Amount: supply_total_price_float,
  197. Remark: supply_remake,
  198. UserOrgId: orgId,
  199. Ctime: time.Now().Unix(),
  200. Status: 1,
  201. Mtime: 0,
  202. WarehousingId: warehouseInfo.ID,
  203. ProjectId: id,
  204. SupplyLicenseNumber: supply_license_number,
  205. SupplyType: supply_type,
  206. SupplySpecificationName: supply_specification_name,
  207. SupplyTotal: supply_total,
  208. SupplyManufacturer: supply_manufacturer,
  209. Name: name,
  210. }
  211. warehousingInfo = append(warehousingInfo, &order)
  212. }
  213. }
  214. }
  215. for _, item := range warehousingInfo {
  216. err = service.CreateSupplyWarehousingOrder(item)
  217. }
  218. //查询
  219. orderInfo, err := service.GetSupplyWarehousingOrderInfo(warehouseInfo.ID)
  220. if err == nil {
  221. this.ServeSuccessJSON(map[string]interface{}{
  222. "order": warehousingInfo,
  223. "warehouseInfo": warehouseInfo,
  224. "orderInfo": orderInfo,
  225. })
  226. } else {
  227. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  228. }
  229. }
  230. func (this *SupplyOrderApiController) GetAllSupply() {
  231. orgId := this.GetAdminUserInfo().CurrentOrgId
  232. appId := this.GetAdminUserInfo().CurrentAppId
  233. supplyList, err := service.GetSupplierList(orgId)
  234. doctorList, err := service.GetAllDoctor(orgId, appId)
  235. if err == nil {
  236. this.ServeSuccessJSON(map[string]interface{}{
  237. "supplyList": supplyList,
  238. "doctorList": doctorList,
  239. })
  240. } else {
  241. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  242. }
  243. }
  244. func (this *SupplyOrderApiController) GetAllPurchaseOrderList() {
  245. check_id, _ := this.GetInt64("check_id")
  246. start_time := this.GetString("start_time")
  247. end_time := this.GetString("end_time")
  248. timeLayout := "2006-01-02"
  249. loc, _ := time.LoadLocation("Local")
  250. var startTime int64
  251. if len(start_time) > 0 {
  252. theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  253. if err != nil {
  254. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  255. return
  256. }
  257. startTime = theTime.Unix()
  258. }
  259. var endTime int64
  260. if len(end_time) > 0 {
  261. theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  262. if err != nil {
  263. utils.ErrorLog(err.Error())
  264. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  265. return
  266. }
  267. endTime = theTime.Unix()
  268. }
  269. keyword := this.GetString("keyword")
  270. page, _ := this.GetInt64("page")
  271. limit, _ := this.GetInt64("limit")
  272. orgId := this.GetAdminUserInfo().CurrentOrgId
  273. list, total, err := service.GetAllPurchaseOrderList(check_id, startTime, endTime, keyword, page, limit, orgId)
  274. if err == nil {
  275. this.ServeSuccessJSON(map[string]interface{}{
  276. "list": list,
  277. "total": total,
  278. })
  279. } else {
  280. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  281. }
  282. }
  283. func (this *SupplyOrderApiController) UpdatePurchaseOrder() {
  284. supplier_id, _ := this.GetInt64("supplier_name")
  285. start_time := this.GetString("start_time")
  286. end_time := this.GetString("end_time")
  287. timeLayout := "2006-01-02"
  288. loc, _ := time.LoadLocation("Local")
  289. var startTime int64
  290. if len(start_time) > 0 {
  291. theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc)
  292. if err != nil {
  293. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  294. return
  295. }
  296. startTime = theTime.Unix()
  297. }
  298. var endTime int64
  299. if len(end_time) > 0 {
  300. theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc)
  301. if err != nil {
  302. utils.ErrorLog(err.Error())
  303. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  304. return
  305. }
  306. endTime = theTime.Unix()
  307. }
  308. rate_of_concession := this.GetString("rate_of_concession")
  309. rate_of_concession_float, _ := strconv.ParseFloat(rate_of_concession, 64)
  310. discount_amount := this.GetString("discount_amount")
  311. discount_amount_float, _ := strconv.ParseFloat(discount_amount, 64)
  312. warehousing_id, _ := this.GetInt64("id")
  313. number := this.GetString("number")
  314. //fmt.Println("supplier_id23323232323232", supplier_id, startTime, endTime, rate_of_concession, rate_of_concession_float, discount_amount, discount_amount_float)
  315. orgId := this.GetAdminUserInfo().CurrentOrgId
  316. info := models.SupplierWarehouseInfo{
  317. RateOfConcession: rate_of_concession_float,
  318. DiscountAmount: discount_amount_float,
  319. DocumentDate: startTime,
  320. DeliveryDate: endTime,
  321. SupplierId: supplier_id,
  322. Mtime: time.Now().Unix(),
  323. }
  324. service.ModefySupplyWarehouseInfo(warehousing_id, info)
  325. dataBody := make(map[string]interface{}, 0)
  326. err := json.Unmarshal(this.Ctx.Input.RequestBody, &dataBody)
  327. if err != nil {
  328. utils.ErrorLog(err.Error())
  329. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  330. return
  331. }
  332. var warehousingInfo []*models.SupplierWarehousingInfoOrder
  333. var updateWarehousingInfo []*models.SupplierWarehousingInfoOrder
  334. if dataBody["stockIn"] != nil && reflect.TypeOf(dataBody["stockIn"]).String() == "[]interface {}" {
  335. thisStockIn, _ := dataBody["stockIn"].([]interface{})
  336. if len(thisStockIn) > 0 {
  337. for _, item := range thisStockIn {
  338. items := item.(map[string]interface{})
  339. if items["id"] == nil || reflect.TypeOf(items["id"]).String() != "float64" {
  340. utils.ErrorLog("id")
  341. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  342. return
  343. }
  344. id := int64(items["id"].(float64))
  345. if items["project_id"] == nil || reflect.TypeOf(items["project_id"]).String() != "float64" {
  346. utils.ErrorLog("project_id")
  347. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  348. return
  349. }
  350. project_id := int64(items["project_id"].(float64))
  351. if items["supply_count"] == nil || reflect.TypeOf(items["supply_count"]).String() != "float64" {
  352. utils.ErrorLog("supply_count")
  353. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  354. return
  355. }
  356. supply_count := int64(items["supply_count"].(float64))
  357. if items["supply_license_number"] == nil || reflect.TypeOf(items["supply_license_number"]).String() != "string" {
  358. utils.ErrorLog("supply_license_number")
  359. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  360. return
  361. }
  362. supply_license_number := items["supply_license_number"].(string)
  363. if items["supply_price"] == nil || reflect.TypeOf(items["supply_price"]).String() != "string" {
  364. utils.ErrorLog("supply_price")
  365. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  366. return
  367. }
  368. supply_price := items["supply_price"].(string)
  369. supply_price_float, _ := strconv.ParseFloat(supply_price, 64)
  370. if items["supply_remake"] == nil || reflect.TypeOf(items["supply_remake"]).String() != "string" {
  371. utils.ErrorLog("supply_remake")
  372. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  373. return
  374. }
  375. supply_remake := items["supply_remake"].(string)
  376. if items["supply_total_price"] == nil || reflect.TypeOf(items["supply_total_price"]).String() != "string" {
  377. utils.ErrorLog("supply_total_price")
  378. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  379. return
  380. }
  381. supply_total_price := items["supply_total_price"].(string)
  382. supply_total_price_float, _ := strconv.ParseFloat(supply_total_price, 64)
  383. if items["is_source"] == nil || reflect.TypeOf(items["is_source"]).String() != "float64" {
  384. utils.ErrorLog("is_source")
  385. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  386. return
  387. }
  388. is_source := int64(items["is_source"].(float64))
  389. if items["supply_type"] == nil || reflect.TypeOf(items["supply_type"]).String() != "string" {
  390. utils.ErrorLog("supply_type")
  391. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  392. return
  393. }
  394. supply_type := items["supply_type"].(string)
  395. if items["supply_specification_name"] == nil || reflect.TypeOf(items["supply_specification_name"]).String() != "string" {
  396. utils.ErrorLog("supply_specification_name")
  397. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  398. return
  399. }
  400. supply_specification_name := items["supply_specification_name"].(string)
  401. if items["supply_total"] == nil || reflect.TypeOf(items["supply_total"]).String() != "string" {
  402. utils.ErrorLog("supply_total")
  403. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  404. return
  405. }
  406. supply_total := items["supply_total"].(string)
  407. if items["supply_manufacturer"] == nil || reflect.TypeOf(items["supply_manufacturer"]).String() != "string" {
  408. utils.ErrorLog("supply_manufacturer")
  409. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  410. return
  411. }
  412. supply_manufacturer := items["supply_manufacturer"].(string)
  413. if items["name"] == nil || reflect.TypeOf(items["name"]).String() != "string" {
  414. utils.ErrorLog("name")
  415. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  416. return
  417. }
  418. name := items["name"].(string)
  419. if id > 0 {
  420. order := models.SupplierWarehousingInfoOrder{
  421. ID: id,
  422. IsSource: is_source,
  423. Count: supply_count,
  424. Price: supply_price_float,
  425. Amount: supply_total_price_float,
  426. Remark: supply_remake,
  427. Ctime: time.Now().Unix(),
  428. Status: 1,
  429. Mtime: 0,
  430. ProjectId: project_id,
  431. SupplyLicenseNumber: supply_license_number,
  432. SupplyType: supply_type,
  433. SupplySpecificationName: supply_specification_name,
  434. SupplyTotal: supply_total,
  435. SupplyManufacturer: supply_manufacturer,
  436. Name: name,
  437. }
  438. updateWarehousingInfo = append(updateWarehousingInfo, &order)
  439. }
  440. if id == 0 {
  441. order := models.SupplierWarehousingInfoOrder{
  442. OrderNumber: number,
  443. IsSource: is_source,
  444. Count: supply_count,
  445. Price: supply_price_float,
  446. Amount: supply_total_price_float,
  447. Remark: supply_remake,
  448. UserOrgId: orgId,
  449. Ctime: time.Now().Unix(),
  450. Status: 1,
  451. Mtime: 0,
  452. WarehousingId: warehousing_id,
  453. ProjectId: id,
  454. SupplyLicenseNumber: supply_license_number,
  455. SupplyType: supply_type,
  456. SupplySpecificationName: supply_specification_name,
  457. SupplyTotal: supply_total,
  458. SupplyManufacturer: supply_manufacturer,
  459. Name: name,
  460. }
  461. warehousingInfo = append(warehousingInfo, &order)
  462. }
  463. }
  464. }
  465. if len(warehousingInfo) > 0 {
  466. for _, item := range warehousingInfo {
  467. service.CreateSupplyWarehousingOrder(item)
  468. }
  469. }
  470. if len(updateWarehousingInfo) > 0 {
  471. for _, item := range updateWarehousingInfo {
  472. service.ModifySupplyWarehouseOrder(item)
  473. }
  474. }
  475. this.ServeSuccessJSON(map[string]interface{}{
  476. "warehousingInfo": warehousingInfo,
  477. })
  478. }
  479. }