Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

199 строки
8.0 KiB

  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(@RequestParam code: String): SyncResult {
  71. return m18PurchaseOrderService.savePurchaseOrderByCode(code)
  72. }
  73. @GetMapping("/test/do-by-code")
  74. fun testSyncDoByCode(@RequestParam code: String): SyncResult {
  75. return m18DeliveryOrderService.saveDeliveryOrderByCode(code, isExtraSync = false)
  76. }
  77. /** DO(加單):手動按 code 同步,並寫入本地 [DeliveryOrder.isExtra]=true(不做 M18 端加單條件過濾) */
  78. @GetMapping("/test/do-by-code-extra")
  79. fun testSyncDoByCodeExtra(@RequestParam code: String): SyncResult {
  80. // 加單 tab: only sync when it's a NEW order (not existing in local system)
  81. return m18DeliveryOrderService.saveDeliveryOrderByCode(code, isExtraSync = true, newOnly = true)
  82. }
  83. @GetMapping("/test/product-by-code")
  84. fun testSyncProductByCode(@RequestParam code: String): SyncResult {
  85. return m18MasterDataService.saveProductByCode(code)
  86. }
  87. // --------------------------------------------- Scheduler --------------------------------------------- ///
  88. // @GetMapping("/schedule/po")
  89. // fun schedulePo(@RequestParam @Valid newCron: String) {
  90. // settingsService.update(SettingNames.SCHEDULE_M18_PO, newCron);
  91. // schedulerService.scheduleM18PoTask()
  92. // }
  93. // --------------------------------------------- Master Data --------------------------------------------- ///
  94. @GetMapping("/all")
  95. fun m18All() {
  96. val mdRequest = M18CommonRequest()
  97. // Master Data
  98. m18MasterDataService.saveUnits(mdRequest)
  99. m18MasterDataService.saveProducts(mdRequest)
  100. m18MasterDataService.resyncProblemItemUomsFromM18()
  101. m18MasterDataService.saveVendors(mdRequest)
  102. m18MasterDataService.saveBusinessUnits(mdRequest)
  103. m18MasterDataService.saveCurrencies(mdRequest)
  104. m18MasterDataService.saveBoms(mdRequest)
  105. val pqRequest = M18CommonRequest()
  106. m18PurchaseQuotationService.savePurchaseQuotations(pqRequest)
  107. }
  108. // --------------------------------------------- Master Data --------------------------------------------- ///
  109. @PostMapping("/master-data")
  110. fun m18MasterData(@Valid @RequestBody request: M18CommonRequest) {
  111. // Master Data
  112. m18MasterDataService.ensureCunitSeededForAllIfEmpty()
  113. m18MasterDataService.saveUnits(request)
  114. m18MasterDataService.saveProducts(request)
  115. m18MasterDataService.resyncProblemItemUomsFromM18()
  116. m18MasterDataService.saveVendors(request)
  117. m18MasterDataService.saveBusinessUnits(request)
  118. m18MasterDataService.saveCurrencies(request)
  119. // m18MasterDataService.saveBoms(request)
  120. }
  121. @PostMapping("/product")
  122. fun m18Products(@Valid @RequestBody request: M18CommonRequest) {
  123. logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  124. m18MasterDataService.saveProducts(request)
  125. }
  126. @GetMapping("/product/{id}")
  127. fun m18Product(@PathVariable id: Long) {
  128. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  129. m18MasterDataService.saveProduct(id)
  130. }
  131. @PostMapping("/vendor")
  132. fun m18Vendor(@Valid @RequestBody request: M18CommonRequest) {
  133. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  134. m18MasterDataService.saveVendors(request)
  135. }
  136. @PostMapping("/unit")
  137. fun m18Unit(@Valid @RequestBody request: M18CommonRequest) {
  138. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  139. m18MasterDataService.saveUnits(request)
  140. }
  141. @PostMapping("/currency")
  142. fun m18Currency(@Valid @RequestBody request: M18CommonRequest) {
  143. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  144. m18MasterDataService.saveCurrencies(request)
  145. }
  146. @PostMapping("/bom")
  147. fun m18Bom(@Valid @RequestBody request: M18CommonRequest) {
  148. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  149. m18MasterDataService.saveBoms(request)
  150. }
  151. @PostMapping("/businessUnit")
  152. fun m18BusinessUnit(@Valid @RequestBody request: M18CommonRequest) {
  153. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  154. m18MasterDataService.saveBusinessUnits(request)
  155. }
  156. // --------------------------------------------- Purchase Order --------------------------------------------- ///
  157. @PostMapping("/po")
  158. fun m18PO(@Valid @RequestBody request: M18CommonRequest) {
  159. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  160. m18PurchaseOrderService.savePurchaseOrders(request)
  161. }
  162. // --------------------------------------------- Delivery Order --------------------------------------------- ///
  163. @PostMapping("/do")
  164. fun m18DO(@Valid @RequestBody request: M18CommonRequest) {
  165. //logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  166. m18DeliveryOrderService.saveDeliveryOrders(request)
  167. }
  168. // --------------------------------------------- Purchase Quotation --------------------------------------------- ///
  169. @PostMapping("/pq")
  170. fun m18PQ(@Valid @RequestBody request: M18CommonRequest) {
  171. logger.info("Access token: ${m18Config.ACCESS_TOKEN}")
  172. m18PurchaseQuotationService.savePurchaseQuotations(request)
  173. }
  174. }