You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

M18TestController.kt 8.2 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package com.ffii.fpsms.m18.web
  2. import com.ffii.core.utils.JwtTokenUtil
  3. import com.ffii.fpsms.m18.M18Config
  4. import com.ffii.fpsms.m18.model.SyncResult
  5. import com.ffii.fpsms.m18.service.*
  6. import com.ffii.fpsms.m18.model.M18BomShopSyncTriggerResult
  7. import com.ffii.fpsms.m18.web.models.M18CommonRequest
  8. import com.ffii.fpsms.modules.master.service.BomService
  9. import com.ffii.fpsms.modules.common.scheduler.service.SchedulerService
  10. import com.ffii.fpsms.modules.master.entity.ItemUom
  11. import com.ffii.fpsms.modules.master.entity.Items
  12. import com.ffii.fpsms.modules.master.entity.ShopRepository
  13. import com.ffii.fpsms.modules.master.enums.ShopType
  14. import com.ffii.fpsms.modules.master.service.ItemUomService
  15. import com.ffii.fpsms.modules.master.service.ItemsService
  16. import com.ffii.fpsms.modules.master.service.ShopService
  17. import com.ffii.fpsms.modules.settings.service.SettingsService
  18. import jakarta.validation.Valid
  19. import org.slf4j.Logger
  20. import org.slf4j.LoggerFactory
  21. import org.springframework.web.bind.annotation.*
  22. @RestController
  23. @RequestMapping("/m18")
  24. class M18TestController (
  25. private val shopRepository: ShopRepository,
  26. private val shopService: ShopService,
  27. private val itemsService: ItemsService,
  28. private val m18MasterDataService: M18MasterDataService,
  29. private val m18PurchaseOrderService: M18PurchaseOrderService,
  30. private val m18Config: M18Config,
  31. private val itemUomService: ItemUomService,
  32. private val m18PurchaseQuotationService: M18PurchaseQuotationService,
  33. private val m18DeliveryOrderService: M18DeliveryOrderService,
  34. val schedulerService: SchedulerService,
  35. private val settingsService: SettingsService,
  36. private val bomService: BomService,
  37. ) {
  38. var logger: Logger = LoggerFactory.getLogger(JwtTokenUtil::class.java)
  39. @GetMapping("/test1")
  40. fun test1(@RequestParam name: String, @RequestParam m18UomId: Long): Items? {
  41. val temp = itemsService.findByNameAndM18UomId(name, m18UomId)
  42. println(name)
  43. println(m18UomId)
  44. println(temp?.id)
  45. return temp
  46. }
  47. @GetMapping("/test2")
  48. fun test2(): List<Long>? {
  49. return shopRepository.findM18IdsByCodeRegexpAndTypeAndDeletedIsFalse("P06|P07", ShopType.SUPPLIER.value)
  50. }
  51. @GetMapping("/test3")
  52. fun test3(@RequestParam m18ItemId: Long): ItemUom? {
  53. val response = itemUomService.findPurchaseUnitByM18ItemId(m18ItemId)
  54. println(response?.item?.id)
  55. println(response?.uom?.id)
  56. return response
  57. }
  58. @GetMapping("/test4")
  59. fun test4(): Any {
  60. return schedulerService.getM18Pos();
  61. }
  62. @PostMapping("/test/bom-shop-sync/{bomId}")
  63. fun testBomShopSync(
  64. @PathVariable bomId: Long,
  65. @RequestParam(required = false) m18HeaderId: Long?,
  66. ): M18BomShopSyncTriggerResult {
  67. return bomService.pushBomToM18ShopIfAllowed(bomId, m18HeaderId)
  68. }
  69. @GetMapping("/test/po-by-code")
  70. fun testSyncPoByCode(
  71. @RequestParam code: String,
  72. @RequestParam(required = false, defaultValue = "false") ifNewer: Boolean,
  73. ): SyncResult {
  74. return if (ifNewer) {
  75. m18PurchaseOrderService.savePurchaseOrderByCodeIfNewer(code)
  76. } else {
  77. m18PurchaseOrderService.savePurchaseOrderByCode(code)
  78. }
  79. }
  80. @GetMapping("/test/do-by-code")
  81. fun testSyncDoByCode(@RequestParam code: String): SyncResult {
  82. return m18DeliveryOrderService.saveDeliveryOrderByCode(code, isExtraSync = false)
  83. }
  84. /** DO(加單):手動按 code 同步,並寫入本地 [DeliveryOrder.isExtra]=true(不做 M18 端加單條件過濾) */
  85. @GetMapping("/test/do-by-code-extra")
  86. fun testSyncDoByCodeExtra(@RequestParam code: String): SyncResult {
  87. // 加單 tab: only sync when it's a NEW order (not existing in local system)
  88. return m18DeliveryOrderService.saveDeliveryOrderByCode(code, isExtraSync = true, newOnly = true)
  89. }
  90. @GetMapping("/test/product-by-code")
  91. fun testSyncProductByCode(@RequestParam code: String): SyncResult {
  92. return m18MasterDataService.saveProductByCode(code)
  93. }
  94. // --------------------------------------------- Scheduler --------------------------------------------- ///
  95. // @GetMapping("/schedule/po")
  96. // fun schedulePo(@RequestParam @Valid newCron: String) {
  97. // settingsService.update(SettingNames.SCHEDULE_M18_PO, newCron);
  98. // schedulerService.scheduleM18PoTask()
  99. // }
  100. // --------------------------------------------- Master Data --------------------------------------------- ///
  101. @GetMapping("/all")
  102. fun m18All() {
  103. val mdRequest = M18CommonRequest()
  104. // Master Data
  105. m18MasterDataService.saveUnits(mdRequest)
  106. m18MasterDataService.saveProducts(mdRequest)
  107. m18MasterDataService.resyncProblemItemUomsFromM18()
  108. m18MasterDataService.saveVendors(mdRequest)
  109. m18MasterDataService.saveBusinessUnits(mdRequest)
  110. m18MasterDataService.saveCurrencies(mdRequest)
  111. m18MasterDataService.saveBoms(mdRequest)
  112. val pqRequest = M18CommonRequest()
  113. m18PurchaseQuotationService.savePurchaseQuotations(pqRequest)
  114. }
  115. // --------------------------------------------- Master Data --------------------------------------------- ///
  116. @PostMapping("/master-data")
  117. fun m18MasterData(@Valid @RequestBody request: M18CommonRequest) {
  118. // Master Data
  119. m18MasterDataService.ensureCunitSeededForAllIfEmpty()
  120. m18MasterDataService.saveUnits(request)
  121. m18MasterDataService.saveProducts(request)
  122. m18MasterDataService.resyncProblemItemUomsFromM18()
  123. m18MasterDataService.saveVendors(request)
  124. m18MasterDataService.saveBusinessUnits(request)
  125. m18MasterDataService.saveCurrencies(request)
  126. // m18MasterDataService.saveBoms(request)
  127. }
  128. @PostMapping("/product")
  129. fun m18Products(@Valid @RequestBody request: M18CommonRequest) {
  130. logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  131. m18MasterDataService.saveProducts(request)
  132. }
  133. @GetMapping("/product/{id}")
  134. fun m18Product(@PathVariable id: Long) {
  135. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  136. m18MasterDataService.saveProduct(id)
  137. }
  138. @PostMapping("/vendor")
  139. fun m18Vendor(@Valid @RequestBody request: M18CommonRequest) {
  140. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  141. m18MasterDataService.saveVendors(request)
  142. }
  143. @PostMapping("/unit")
  144. fun m18Unit(@Valid @RequestBody request: M18CommonRequest) {
  145. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  146. m18MasterDataService.saveUnits(request)
  147. }
  148. @PostMapping("/currency")
  149. fun m18Currency(@Valid @RequestBody request: M18CommonRequest) {
  150. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  151. m18MasterDataService.saveCurrencies(request)
  152. }
  153. @PostMapping("/bom")
  154. fun m18Bom(@Valid @RequestBody request: M18CommonRequest) {
  155. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  156. m18MasterDataService.saveBoms(request)
  157. }
  158. @PostMapping("/businessUnit")
  159. fun m18BusinessUnit(@Valid @RequestBody request: M18CommonRequest) {
  160. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  161. m18MasterDataService.saveBusinessUnits(request)
  162. }
  163. // --------------------------------------------- Purchase Order --------------------------------------------- ///
  164. @PostMapping("/po")
  165. fun m18PO(@Valid @RequestBody request: M18CommonRequest) {
  166. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  167. m18PurchaseOrderService.savePurchaseOrders(request)
  168. }
  169. // --------------------------------------------- Delivery Order --------------------------------------------- ///
  170. @PostMapping("/do")
  171. fun m18DO(@Valid @RequestBody request: M18CommonRequest) {
  172. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  173. m18DeliveryOrderService.saveDeliveryOrders(request)
  174. }
  175. // --------------------------------------------- Purchase Quotation --------------------------------------------- ///
  176. @PostMapping("/pq")
  177. fun m18PQ(@Valid @RequestBody request: M18CommonRequest) {
  178. logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  179. m18PurchaseQuotationService.savePurchaseQuotations(request)
  180. }
  181. }