From 86637e6a48cc4511e34fe426d5a617e3ee018dfa Mon Sep 17 00:00:00 2001 From: huangjiayang <5265313@qq.com> Date: 星期五, 09 五月 2025 13:21:52 +0800 Subject: [PATCH] 【ADD】1.新增同步物料库存数据任务 2.增加刷新BOM数据功能代码 --- aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateStandardRequire.java | 4 aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsMaterialStorageManagementJobServiceImpl.java | 221 +++++++++++++ aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsBomController.java | 12 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlateStandardRequireErrorController.java | 12 aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java | 28 + aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteLineController.java | 12 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java | 28 + aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml | 7 aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java | 5 aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java | 26 + aps-common/aps-common-core/src/main/java/com/aps/common/core/constant/ServiceNameConstants.java | 10 aps-api/aps-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 2 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteHeaderController.java | 12 aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialStorageManagementJob.java | 162 +++++++++ aps-modules/aps-job/src/main/java/com/aps/job/service/IApsMaterialStorageManagementJobService.java | 82 ++++ aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java | 33 + aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml | 7 aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java | 5 aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java | 12 aps-modules/aps-job/src/main/resources/mapper/job/ApsMaterialStorageManagementJobMapper.xml | 152 ++++++++ aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java | 32 + aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteJobFallbackFactory.java | 26 + aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java | 1 aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteJobService.java | 28 + aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsMaterialStorageManagementJobMapper.java | 88 +++++ 25 files changed, 977 insertions(+), 30 deletions(-) diff --git a/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java b/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java new file mode 100644 index 0000000..541813a --- /dev/null +++ b/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java @@ -0,0 +1,28 @@ +package com.aps.system.api; + +import com.aps.common.core.constant.SecurityConstants; +import com.aps.common.core.constant.ServiceNameConstants; +import com.aps.common.core.domain.R; +import com.aps.system.api.factory.RemoteCoreFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestHeader; + +/** + * 浠诲姟鏈嶅姟 + * + * @author hjy + */ +@FeignClient(contextId = "remoteCoreService", value = ServiceNameConstants.CORE_SERVICE, fallbackFactory = RemoteCoreFallbackFactory.class) +public interface RemoteCoreService +{ + + /** + * 鍒锋柊BOM鏁版嵁鍒癛edis + * @param source + * @return + */ + @PostMapping("/ApsBomHeader/setBomDataToRedis") + R<Boolean> setBomDataToRedis(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + +} diff --git a/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteJobService.java b/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteJobService.java new file mode 100644 index 0000000..c3f1be5 --- /dev/null +++ b/aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteJobService.java @@ -0,0 +1,28 @@ +package com.aps.system.api; + +import com.aps.common.core.constant.SecurityConstants; +import com.aps.common.core.constant.ServiceNameConstants; +import com.aps.common.core.domain.R; +import com.aps.system.api.factory.RemoteJobFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestHeader; + +/** + * 浠诲姟鏈嶅姟 + * + * @author hjy + */ +@FeignClient(contextId = "remoteJobService", value = ServiceNameConstants.JOB_SERVICE, fallbackFactory = RemoteJobFallbackFactory.class) +public interface RemoteJobService +{ + + /** + * 鍒锋柊BOM鍏ㄩ噺鏁版嵁 + * @param source + * @return + */ + @PostMapping("/job/refreshBomData") + R<Boolean> refreshBomData(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + +} diff --git a/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java b/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java new file mode 100644 index 0000000..b2d846d --- /dev/null +++ b/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java @@ -0,0 +1,26 @@ +package com.aps.system.api.factory; + +import com.aps.common.core.domain.R; +import com.aps.system.api.RemoteCoreService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 鐢ㄦ埛鏈嶅姟闄嶇骇澶勭悊 + * + * @author ruoyi + */ +@Component +public class RemoteCoreFallbackFactory implements FallbackFactory<RemoteCoreService> +{ + private static final Logger log = LoggerFactory.getLogger(RemoteCoreFallbackFactory.class); + + @Override + public RemoteCoreService create(Throwable throwable) + { + log.error("浠诲姟鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage()); + return source -> R.fail("BOM鏁版嵁瀛樺偍鍒癛edis涓け璐�:" + throwable.getMessage()); + } +} diff --git a/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteJobFallbackFactory.java b/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteJobFallbackFactory.java new file mode 100644 index 0000000..12659b1 --- /dev/null +++ b/aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteJobFallbackFactory.java @@ -0,0 +1,26 @@ +package com.aps.system.api.factory; + +import com.aps.common.core.domain.R; +import com.aps.system.api.RemoteJobService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 鐢ㄦ埛鏈嶅姟闄嶇骇澶勭悊 + * + * @author ruoyi + */ +@Component +public class RemoteJobFallbackFactory implements FallbackFactory<RemoteJobService> +{ + private static final Logger log = LoggerFactory.getLogger(RemoteJobFallbackFactory.class); + + @Override + public RemoteJobService create(Throwable throwable) + { + log.error("浠诲姟鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage()); + return source -> R.fail("鍒锋柊BOM鏁版嵁澶辫触:" + throwable.getMessage()); + } +} diff --git a/aps-api/aps-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/aps-api/aps-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 6d7e80c..e149c00 100644 --- a/aps-api/aps-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/aps-api/aps-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1,5 @@ com.aps.system.api.factory.RemoteUserFallbackFactory com.aps.system.api.factory.RemoteLogFallbackFactory com.aps.system.api.factory.RemoteFileFallbackFactory +com.aps.system.api.factory.RemoteJobFallbackFactory +com.aps.system.api.factory.RemoteCoreFallbackFactory diff --git a/aps-common/aps-common-core/src/main/java/com/aps/common/core/constant/ServiceNameConstants.java b/aps-common/aps-common-core/src/main/java/com/aps/common/core/constant/ServiceNameConstants.java index 52c3fea..25642ad 100644 --- a/aps-common/aps-common-core/src/main/java/com/aps/common/core/constant/ServiceNameConstants.java +++ b/aps-common/aps-common-core/src/main/java/com/aps/common/core/constant/ServiceNameConstants.java @@ -21,4 +21,14 @@ * 鏂囦欢鏈嶅姟鐨剆erviceid */ public static final String FILE_SERVICE = "aps-file"; + + /** + * aps鏈嶅姟鐨剆erviceid + */ + public static final String CORE_SERVICE = "aps-core"; + + /** + * 浠诲姟鏈嶅姟鐨剆erviceid + */ + public static final String JOB_SERVICE = "aps-job"; } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsBomController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsBomController.java index 16a850c..065ef6e 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsBomController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsBomController.java @@ -31,7 +31,7 @@ /** * 鏌ヨBOM鏁版嵁绠$悊鍒楄〃 */ - @RequiresPermissions("apsBom:list") + @RequiresPermissions("Aps:apsBom:list") @GetMapping("/list") public TableDataInfo list(ApsBom apsBom) { @@ -43,7 +43,7 @@ /** * 瀵煎嚭BOM鏁版嵁绠$悊鍒楄〃 */ - @RequiresPermissions("apsBom:export") + @RequiresPermissions("Aps:apsBom:export") @Log(title = "BOM鏁版嵁绠$悊", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ApsBom apsBom) @@ -56,7 +56,7 @@ /** * 鑾峰彇BOM鏁版嵁绠$悊璇︾粏淇℃伅 */ - @RequiresPermissions("apsBom:query") + @RequiresPermissions("Aps:apsBom:query") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -66,7 +66,7 @@ /** * 鏂板BOM鏁版嵁绠$悊 */ - @RequiresPermissions("apsBom:add") + @RequiresPermissions("Aps:apsBom:add") @Log(title = "BOM鏁版嵁绠$悊", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ApsBom apsBom) @@ -77,7 +77,7 @@ /** * 淇敼BOM鏁版嵁绠$悊 */ - @RequiresPermissions("apsBom:edit") + @RequiresPermissions("Aps:apsBom:edit") @Log(title = "BOM鏁版嵁绠$悊", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ApsBom apsBom) @@ -88,7 +88,7 @@ /** * 鍒犻櫎BOM鏁版嵁绠$悊 */ - @RequiresPermissions("apsBom:remove") + @RequiresPermissions("Aps:apsBom:remove") @Log(title = "BOM鏁版嵁绠$悊", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java index 0aeb3f6..d26a61c 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsBomHeaderController.java @@ -1,5 +1,7 @@ package com.aps.core.controller.mainPlan; +import com.aps.common.core.constant.SecurityConstants; +import com.aps.common.core.domain.R; import com.aps.common.core.utils.poi.ExcelUtil; import com.aps.common.core.web.controller.BaseController; import com.aps.common.core.web.domain.AjaxResult; @@ -9,6 +11,7 @@ import com.aps.common.security.annotation.RequiresPermissions; import com.aps.core.domain.ApsBomHeader; import com.aps.core.service.IApsBomHeaderService; +import com.aps.system.api.RemoteJobService; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -30,11 +33,14 @@ @Autowired private IApsBomHeaderService apsBomHeaderService; + @Autowired + private RemoteJobService remoteJobService; + /** * 鏌ヨBOM Header 鏁版嵁绠$悊鍒楄〃 */ - @RequiresPermissions("aps:ApsBomHeader:list") + @RequiresPermissions("Aps:ApsBomHeader:list") @GetMapping("/list") public TableDataInfo list(ApsBomHeader apsBomHeader) { @@ -104,6 +110,26 @@ return toAjax(apsBomHeaderService.deleteApsBomHeaderByIds(ids)); } + /** + * 鍒锋柊鍏ㄩ噺BOM鏁版嵁 + */ + @RequiresPermissions("Aps:ApsBomHeader:refreshBomData") + @PostMapping("/refreshBomData") + public void refreshBomData() + { + R<Boolean> res = remoteJobService.refreshBomData(SecurityConstants.INNER); + if (R.isSuccess(res)) + { + apsBomHeaderService.setBomDataToRedis(""); + } + } + + @PostMapping("/setBomDataToRedis") + public void setBomDataToRedis() + { + apsBomHeaderService.setBomDataToRedis(""); + } + @PostMapping("/test") public void test() { diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlateStandardRequireErrorController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlateStandardRequireErrorController.java index a5e2539..4aae62e 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlateStandardRequireErrorController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlateStandardRequireErrorController.java @@ -37,7 +37,7 @@ */ @Operation(summary = "鏌ヨ閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭垪琛�", description = "鍒嗛〉鏌ヨ") - //@RequiresPermissions("ApsPlateStandardRequireError:ApsPlateStandardRequireError:list") + @RequiresPermissions("Aps:ApsPlateStandardRequireError:list") @GetMapping("/list") public TableDataInfo list(ApsPlateStandardRequireError apsPlateStandardRequireError) { @@ -50,7 +50,7 @@ * 瀵煎嚭閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭垪琛� */ @Operation(summary = "瀵煎嚭閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭垪琛�", description = "瀵煎嚭") - //@RequiresPermissions("ApsPlateStandardRequireError:ApsPlateStandardRequireError:export") + @RequiresPermissions("Aps:ApsPlateStandardRequireError:export") @Log(title = "閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭�", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ApsPlateStandardRequireError apsPlateStandardRequireError) @@ -64,7 +64,7 @@ * 鑾峰彇閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭缁嗕俊鎭� */ @Operation(summary = "鑾峰彇閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭缁嗕俊鎭�", description = "鏍规嵁id鑾峰彇") - //@RequiresPermissions("ApsPlateStandardRequireError:ApsPlateStandardRequireError:query") + @RequiresPermissions("Aps:ApsPlateStandardRequireError:query") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -75,7 +75,7 @@ * 鏂板閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭� */ @Operation(summary = "鏂板閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭�", description = "鍗曚釜鏂板") - //@RequiresPermissions("ApsPlateStandardRequireError:ApsPlateStandardRequireError:add") + @RequiresPermissions("Aps:ApsPlateStandardRequireError:add") @Log(title = "閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭�", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ApsPlateStandardRequireError apsPlateStandardRequireError) @@ -87,7 +87,7 @@ * 淇敼閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭� */ @Operation(summary = "淇敼閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭�", description = "鍗曚釜淇敼") - //@RequiresPermissions("ApsPlateStandardRequireError:ApsPlateStandardRequireError:edit") + @RequiresPermissions("Aps:ApsPlateStandardRequireError:edit") @Log(title = "閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭�", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ApsPlateStandardRequireError apsPlateStandardRequireError) @@ -99,7 +99,7 @@ * 鍒犻櫎閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭� */ @Operation(summary = "鍒犻櫎閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭�", description = "鎵归噺鍒犻櫎") - // @RequiresPermissions("ApsPlateStandardRequireError:ApsPlateStandardRequireError:remove") + @RequiresPermissions("Aps:ApsPlateStandardRequireError:remove") @Log(title = "閽i噾鏍囧噯闇�姹傚紓甯镐俊鎭�", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteHeaderController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteHeaderController.java index b48cc01..bfd9b80 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteHeaderController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteHeaderController.java @@ -34,7 +34,7 @@ * 鏌ヨ鏍囧噯宸ヨ壓璺嚎Header鍒楄〃 */ - @RequiresPermissions("aps:ApsStandardProcessRouteHeader:list") + @RequiresPermissions("Aps:ApsStandardProcessRouteHeader:list") @GetMapping("/list") public TableDataInfo list(ApsStandardProcessRouteHeader apsStandardProcessRouteHeader) { @@ -47,7 +47,7 @@ * 瀵煎嚭鏍囧噯宸ヨ壓璺嚎Header鍒楄〃 */ - @RequiresPermissions("aps:ApsStandardProcessRouteHeader:export") + @RequiresPermissions("Aps:ApsStandardProcessRouteHeader:export") @Log(title = "鏍囧噯宸ヨ壓璺嚎Header", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ApsStandardProcessRouteHeader apsStandardProcessRouteHeader) @@ -60,7 +60,7 @@ /** * 鑾峰彇鏍囧噯宸ヨ壓璺嚎Header璇︾粏淇℃伅 */ - @RequiresPermissions("aps:ApsStandardProcessRouteHeader:query") + @RequiresPermissions("Aps:ApsStandardProcessRouteHeader:query") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -70,7 +70,7 @@ /** * 鏂板鏍囧噯宸ヨ壓璺嚎Header */ - @RequiresPermissions("aps:ApsStandardProcessRouteHeader:add") + @RequiresPermissions("Aps:ApsStandardProcessRouteHeader:add") @Log(title = "鏍囧噯宸ヨ壓璺嚎Header", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ApsStandardProcessRouteHeader apsStandardProcessRouteHeader) @@ -81,7 +81,7 @@ /** * 淇敼鏍囧噯宸ヨ壓璺嚎Header */ - @RequiresPermissions("aps:ApsStandardProcessRouteHeader:edit") + @RequiresPermissions("Aps:ApsStandardProcessRouteHeader:edit") @Log(title = "鏍囧噯宸ヨ壓璺嚎Header", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ApsStandardProcessRouteHeader apsStandardProcessRouteHeader) @@ -92,7 +92,7 @@ /** * 鍒犻櫎鏍囧噯宸ヨ壓璺嚎Header */ - @RequiresPermissions("aps:ApsStandardProcessRouteHeader:remove") + @RequiresPermissions("Aps:ApsStandardProcessRouteHeader:remove") @Log(title = "鏍囧噯宸ヨ壓璺嚎Header", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteLineController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteLineController.java index 16abad2..cd8d9a7 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteLineController.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteLineController.java @@ -33,7 +33,7 @@ /** * 鏌ヨ鏍囧噯宸ヨ壓璺嚎Line鍒楄〃 */ - @RequiresPermissions("ApsStandardProcessRouteLine:ApsStandardProcessRouteLine:list") + @RequiresPermissions("Aps:ApsStandardProcessRouteLine:list") @GetMapping("/list") public TableDataInfo list(ApsStandardProcessRouteLine apsStandardProcessRouteLine) { @@ -45,7 +45,7 @@ /** * 瀵煎嚭鏍囧噯宸ヨ壓璺嚎Line鍒楄〃 */ - @RequiresPermissions("ApsStandardProcessRouteLine:ApsStandardProcessRouteLine:export") + @RequiresPermissions("Aps:ApsStandardProcessRouteLine:export") @Log(title = "鏍囧噯宸ヨ壓璺嚎Line", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ApsStandardProcessRouteLine apsStandardProcessRouteLine) @@ -58,7 +58,7 @@ /** * 鑾峰彇鏍囧噯宸ヨ壓璺嚎Line璇︾粏淇℃伅 */ - @RequiresPermissions("ApsStandardProcessRouteLine:ApsStandardProcessRouteLine:query") + @RequiresPermissions("Aps:ApsStandardProcessRouteLine:query") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -68,7 +68,7 @@ /** * 鏂板鏍囧噯宸ヨ壓璺嚎Line */ - @RequiresPermissions("ApsStandardProcessRouteLine:ApsStandardProcessRouteLine:add") + @RequiresPermissions("Aps:ApsStandardProcessRouteLine:add") @Log(title = "鏍囧噯宸ヨ壓璺嚎Line", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ApsStandardProcessRouteLine apsStandardProcessRouteLine) @@ -79,7 +79,7 @@ /** * 淇敼鏍囧噯宸ヨ壓璺嚎Line */ - @RequiresPermissions("ApsStandardProcessRouteLine:ApsStandardProcessRouteLine:edit") + @RequiresPermissions("Aps:ApsStandardProcessRouteLine:edit") @Log(title = "鏍囧噯宸ヨ壓璺嚎Line", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ApsStandardProcessRouteLine apsStandardProcessRouteLine) @@ -90,7 +90,7 @@ /** * 鍒犻櫎鏍囧噯宸ヨ壓璺嚎Line */ - @RequiresPermissions("ApsStandardProcessRouteLine:ApsStandardProcessRouteLine:remove") + @RequiresPermissions("Aps:ApsStandardProcessRouteLine:remove") @Log(title = "鏍囧噯宸ヨ壓璺嚎Line", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateStandardRequire.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateStandardRequire.java index 708c875..580b70c 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateStandardRequire.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateStandardRequire.java @@ -65,14 +65,17 @@ private BigDecimal netRequirement; /** 璁″垝寮�宸ユ棩 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "璁″垝寮�宸ユ棩") private Date startDate; /** 璁″垝瀹屽伐鏃� */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "璁″垝瀹屽伐鏃�") private Date completeDate; /** 闇�姹傛棩鏈� */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "闇�姹傛棩鏈�") private Date demandDate; @@ -100,6 +103,7 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "寤鸿瀹屾垚鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date suggestedCompletionDate; + /** 寤惰繜椋庨櫓鏍囪瘑 */ private String hasDelayRisk; diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java b/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java index 5616aa4..f49c745 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.aps.common.core.constant.Constants; +import com.aps.common.core.constant.SecurityConstants; import com.aps.common.core.exception.job.TaskException; import com.aps.common.core.utils.StringUtils; import com.aps.common.core.utils.poi.ExcelUtil; diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialStorageManagementJob.java b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialStorageManagementJob.java new file mode 100644 index 0000000..5d1a72c --- /dev/null +++ b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialStorageManagementJob.java @@ -0,0 +1,162 @@ +package com.aps.job.domain; + +import com.aps.common.core.annotation.Excel; +import com.aps.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 鐗╂枡搴撳瓨绠$悊瀵硅薄 aps_material_storage_management_job + * + * @author hjy + * @date 2025-05-08 + */ +@Schema(description = "鐗╂枡搴撳瓨绠$悊瀹炰綋绫�") +public class ApsMaterialStorageManagementJob extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @Schema(description = "id") + private Long id; + + /** 鏂欏彿 */ + @Excel(name = "鏂欏彿") + @Schema(description = "鏂欏彿") + private String itemNumber; + + /** 鏁伴噺 */ + @Excel(name = "鏁伴噺") + @Schema(description = "鏁伴噺") + private BigDecimal num; + + /** 閫傜敤宸ュ巶 */ + @Excel(name = "閫傜敤宸ュ巶") + @Schema(description = "閫傜敤宸ュ巶") + private String applicableFactories; + + /** 闆嗘垚鏃ユ湡 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "闆嗘垚鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd") + @Schema(description = "闆嗘垚鏃ユ湡") + private Date integrationDate; + + /** 鍒锋柊鏃ユ湡 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "鍒锋柊鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd") + @Schema(description = "鍒锋柊鏃ユ湡") + private Date refreshDate; + + /** 鍓╀綑搴撳瓨 */ + @Excel(name = "鍓╀綑搴撳瓨") + @Schema(description = "鍓╀綑搴撳瓨") + private BigDecimal remainderStock; + + /** 淇敼鐗堟湰 */ + @Excel(name = "淇敼鐗堟湰") + @Schema(description = "淇敼鐗堟湰") + private Double version; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setItemNumber(String itemNumber) + { + this.itemNumber = itemNumber; + } + + public String getItemNumber() + { + return itemNumber; + } + + public void setNum(BigDecimal num) + { + this.num = num; + } + + public BigDecimal getNum() + { + return num; + } + + public void setApplicableFactories(String applicableFactories) + { + this.applicableFactories = applicableFactories; + } + + public String getApplicableFactories() + { + return applicableFactories; + } + + public void setIntegrationDate(Date integrationDate) + { + this.integrationDate = integrationDate; + } + + public Date getIntegrationDate() + { + return integrationDate; + } + + public void setRefreshDate(Date refreshDate) + { + this.refreshDate = refreshDate; + } + + public Date getRefreshDate() + { + return refreshDate; + } + + public void setRemainderStock(BigDecimal remainderStock) + { + this.remainderStock = remainderStock; + } + + public BigDecimal getRemainderStock() + { + return remainderStock; + } + + public void setVersion(Double version) + { + this.version = version; + } + + public Double getVersion() + { + return version; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("itemNumber", getItemNumber()) + .append("num", getNum()) + .append("applicableFactories", getApplicableFactories()) + .append("integrationDate", getIntegrationDate()) + .append("refreshDate", getRefreshDate()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remainderStock", getRemainderStock()) + .append("version", getVersion()) + .toString(); + } +} diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java index 5854349..e2302d9 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomHeaderJobMapper.java @@ -79,4 +79,9 @@ * @return */ public void deleteApsBomHeader(); + + /** + * 鍒犻櫎涓棿琛˙OM Header鏁版嵁 + */ + public void deleteApsBomHeaderJob(); } diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java index 3d2385d..6990931 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsBomLineJobMapper.java @@ -79,4 +79,9 @@ */ public void deleteApsBomLine() ; + /** + * 鍒犻櫎涓棿琛˙OM Line鏁版嵁 + */ + public void deleteApsBomLineJob() ; + } diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsMaterialStorageManagementJobMapper.java b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsMaterialStorageManagementJobMapper.java new file mode 100644 index 0000000..c701221 --- /dev/null +++ b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsMaterialStorageManagementJobMapper.java @@ -0,0 +1,88 @@ +package com.aps.job.mapper; + +import com.aps.job.domain.ApsMaterialStorageManagementJob; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 鐗╂枡搴撳瓨绠$悊Mapper鎺ュ彛 + * + * @author hjy + * @date 2025-05-08 + */ +public interface ApsMaterialStorageManagementJobMapper +{ + /** + * 鏌ヨ鐗╂枡搴撳瓨绠$悊 + * + * @param id 鐗╂枡搴撳瓨绠$悊涓婚敭 + * @return 鐗╂枡搴撳瓨绠$悊 + */ + public ApsMaterialStorageManagementJob selectApsMaterialStorageManagementJobById(Long id); + + /** + * 鏌ヨ鐗╂枡搴撳瓨绠$悊鍒楄〃 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 鐗╂枡搴撳瓨绠$悊闆嗗悎 + */ + public List<ApsMaterialStorageManagementJob> selectApsMaterialStorageManagementJobList(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob); + + /** + * 鏂板鐗╂枡搴撳瓨绠$悊 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 缁撴灉 + */ + public int insertApsMaterialStorageManagementJob(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob); + + /** + * 淇敼鐗╂枡搴撳瓨绠$悊 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 缁撴灉 + */ + public int updateApsMaterialStorageManagementJob(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob); + + /** + * 鍒犻櫎鐗╂枡搴撳瓨绠$悊 + * + * @param id 鐗╂枡搴撳瓨绠$悊涓婚敭 + * @return 缁撴灉 + */ + public int deleteApsMaterialStorageManagementJobById(Long id); + + /** + * 鎵归噺鍒犻櫎鐗╂枡搴撳瓨绠$悊 + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteApsMaterialStorageManagementJobByIds(Long[] ids); + + /** + * 鎵归噺鎻掑叆鐗╂枡搴撳瓨鏁版嵁 + * @param list + * @return + */ + public int insertApsMaterialStorageBatch(@Param("list") List<ApsMaterialStorageManagementJob> list); + + /** + * 鎵归噺鎻掑叆鐗╂枡搴撳瓨鏁版嵁鍒颁笟鍔¤〃 + * @return + */ + public void insertIntoApsMaterialStorage(); + + /** + * 鍒犻櫎鐗╂枡搴撳瓨鏁版嵁 + * @return + */ + public void deleteApsMaterialStorage(); + + /** + * 鍒犻櫎涓棿琛ㄧ墿鏂欏簱瀛樻暟鎹� + */ + public void deleteApsMaterialStorageJob(); + +} diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java index 2804618..47385d5 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsBomHeaderJobService.java @@ -65,4 +65,16 @@ * @return */ public boolean syncBomData(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList); + + /** + * 鍚屾bom鏁版嵁瀹氭椂浠诲姟 + * @param pageIndex + * @param pageSize + * @param orgCode + * @param itemCodeList + * @return + */ + public boolean syncBomDataJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList); + + } diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsMaterialStorageManagementJobService.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsMaterialStorageManagementJobService.java new file mode 100644 index 0000000..332a35f --- /dev/null +++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsMaterialStorageManagementJobService.java @@ -0,0 +1,82 @@ +package com.aps.job.service; + +import com.aps.job.domain.ApsMaterialStorageManagementJob; + +import java.util.List; + +/** + * 鐗╂枡搴撳瓨绠$悊Service鎺ュ彛 + * + * @author hjy + * @date 2025-05-08 + */ +public interface IApsMaterialStorageManagementJobService +{ + /** + * 鏌ヨ鐗╂枡搴撳瓨绠$悊 + * + * @param id 鐗╂枡搴撳瓨绠$悊涓婚敭 + * @return 鐗╂枡搴撳瓨绠$悊 + */ + public ApsMaterialStorageManagementJob selectApsMaterialStorageManagementJobById(Long id); + + /** + * 鏌ヨ鐗╂枡搴撳瓨绠$悊鍒楄〃 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 鐗╂枡搴撳瓨绠$悊闆嗗悎 + */ + public List<ApsMaterialStorageManagementJob> selectApsMaterialStorageManagementJobList(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob); + + /** + * 鏂板鐗╂枡搴撳瓨绠$悊 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 缁撴灉 + */ + public int insertApsMaterialStorageManagementJob(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob); + + /** + * 淇敼鐗╂枡搴撳瓨绠$悊 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 缁撴灉 + */ + public int updateApsMaterialStorageManagementJob(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob); + + /** + * 鎵归噺鍒犻櫎鐗╂枡搴撳瓨绠$悊 + * + * @param ids 闇�瑕佸垹闄ょ殑鐗╂枡搴撳瓨绠$悊涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + public int deleteApsMaterialStorageManagementJobByIds(Long[] ids); + + /** + * 鍒犻櫎鐗╂枡搴撳瓨绠$悊淇℃伅 + * + * @param id 鐗╂枡搴撳瓨绠$悊涓婚敭 + * @return 缁撴灉 + */ + public int deleteApsMaterialStorageManagementJobById(Long id); + + /** + * 鍚屾鐗╂枡搴撳瓨鏁版嵁 + * @param pageIndex + * @param pageSize + * @param orgCode + * @param itemCodeList + * @return + */ + public boolean syncApsMaterialStorageData(int pageIndex, int pageSize, String orgCode, String itemCodeList); + + /** + * 鍚屾鍏ㄩ噺鐗╂枡搴撳瓨鏁版嵁瀹氭椂浠诲姟 + * @param pageIndex + * @param pageSize + * @param orgCode + * @param itemCodeList + * @return + */ + public boolean syncApsMaterialStorageDataJob(int pageIndex, int pageSize, String orgCode, String itemCodeList); +} diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java index 3a1fa14..c307d96 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsBomHeaderJobServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; @@ -39,9 +40,6 @@ @Autowired private ApsBomLineJobMapper apsBomLineJobMapper; - /** - * 鑾峰彇璁㈠崟鎺ュ彛 - * */ @Value("${u9.bomJobUrl}") private String getBomUrl; @@ -223,4 +221,33 @@ } return true; } + + /** + * 鍏ㄩ噺鍚屾BOM鏁版嵁瀹氭椂浠诲姟 + * @param pageIndex + * @param pageSize + * @param orgCode + * @param itemCodeList + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public boolean syncBomDataJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList){ + try { + apsBomHeaderJobMapper.deleteApsBomHeaderJob(); + apsBomLineJobMapper.deleteApsBomLineJob(); + boolean res = syncBomData(pageIndex, pageSize, orgCode, itemCodeList); + if(!res){ + return false; + } + apsBomHeaderJobMapper.deleteApsBomHeader(); + apsBomLineJobMapper.deleteApsBomLine(); + apsBomHeaderJobMapper.insertIntoApsBomHeader(); + apsBomLineJobMapper.insertIntoApsBomLine(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + return true; + } } diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsMaterialStorageManagementJobServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsMaterialStorageManagementJobServiceImpl.java new file mode 100644 index 0000000..7126cfb --- /dev/null +++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsMaterialStorageManagementJobServiceImpl.java @@ -0,0 +1,221 @@ +package com.aps.job.service.impl; + +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.aps.common.core.utils.DateUtils; +import com.aps.common.core.utils.StringUtils; +import com.aps.job.domain.ApsMaterialStorageManagementJob; +import com.aps.job.domain.ApsWorkOrderJobLog; +import com.aps.job.mapper.ApsMaterialStorageManagementJobMapper; +import com.aps.job.mapper.ApsWorkOrderJobLogMapper; +import com.aps.job.service.IApsMaterialStorageManagementJobService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; + +import java.util.ArrayList; +import java.util.List; + +/** + * 鐗╂枡搴撳瓨绠$悊Service涓氬姟灞傚鐞� + * + * @author hjy + * @date 2025-05-08 + */ +@Service +public class ApsMaterialStorageManagementJobServiceImpl implements IApsMaterialStorageManagementJobService +{ + @Autowired + private ApsMaterialStorageManagementJobMapper apsMaterialStorageManagementJobMapper; + + @Value("${u9.materialStorageUrl}") + private String getMaterialStorageUrl; + + @Autowired + private ApsWorkOrderJobLogMapper jobLogMapper; + + @Autowired + private RestTemplate restTemplate; + + /** + * 鏌ヨ鐗╂枡搴撳瓨绠$悊 + * + * @param id 鐗╂枡搴撳瓨绠$悊涓婚敭 + * @return 鐗╂枡搴撳瓨绠$悊 + */ + @Override + public ApsMaterialStorageManagementJob selectApsMaterialStorageManagementJobById(Long id) + { + return apsMaterialStorageManagementJobMapper.selectApsMaterialStorageManagementJobById(id); + } + + /** + * 鏌ヨ鐗╂枡搴撳瓨绠$悊鍒楄〃 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 鐗╂枡搴撳瓨绠$悊 + */ + @Override + public List<ApsMaterialStorageManagementJob> selectApsMaterialStorageManagementJobList(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob) + { + return apsMaterialStorageManagementJobMapper.selectApsMaterialStorageManagementJobList(apsMaterialStorageManagementJob); + } + + /** + * 鏂板鐗╂枡搴撳瓨绠$悊 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 缁撴灉 + */ + @Override + public int insertApsMaterialStorageManagementJob(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob) + { + apsMaterialStorageManagementJob.setCreateTime(DateUtils.getNowDate()); + return apsMaterialStorageManagementJobMapper.insertApsMaterialStorageManagementJob(apsMaterialStorageManagementJob); + } + + /** + * 淇敼鐗╂枡搴撳瓨绠$悊 + * + * @param apsMaterialStorageManagementJob 鐗╂枡搴撳瓨绠$悊 + * @return 缁撴灉 + */ + @Override + public int updateApsMaterialStorageManagementJob(ApsMaterialStorageManagementJob apsMaterialStorageManagementJob) + { + apsMaterialStorageManagementJob.setUpdateTime(DateUtils.getNowDate()); + return apsMaterialStorageManagementJobMapper.updateApsMaterialStorageManagementJob(apsMaterialStorageManagementJob); + } + + /** + * 鎵归噺鍒犻櫎鐗╂枡搴撳瓨绠$悊 + * + * @param ids 闇�瑕佸垹闄ょ殑鐗╂枡搴撳瓨绠$悊涓婚敭 + * @return 缁撴灉 + */ + @Override + public int deleteApsMaterialStorageManagementJobByIds(Long[] ids) + { + return apsMaterialStorageManagementJobMapper.deleteApsMaterialStorageManagementJobByIds(ids); + } + + /** + * 鍒犻櫎鐗╂枡搴撳瓨绠$悊淇℃伅 + * + * @param id 鐗╂枡搴撳瓨绠$悊涓婚敭 + * @return 缁撴灉 + */ + @Override + public int deleteApsMaterialStorageManagementJobById(Long id) + { + return apsMaterialStorageManagementJobMapper.deleteApsMaterialStorageManagementJobById(id); + } + + @Override + public boolean syncApsMaterialStorageData(int pageIndex, int pageSize, String orgCode, String itemCodeList) { + JSONObject requestBody = new JSONObject(); + ResponseEntity<String> response = null; + ApsWorkOrderJobLog jobLog = new ApsWorkOrderJobLog(); + try { + // 璁剧疆璇锋眰澶� + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + // 璁剧疆璇锋眰浣� + while (true) { + jobLog = new ApsWorkOrderJobLog(); + requestBody = new JSONObject(); + requestBody.put("PageIndex", pageIndex); + requestBody.put("PageSize", pageSize); + if(!StringUtils.isEmpty(orgCode)){ + requestBody.put("OrgCode", orgCode); + } + // 鍒涘缓HttpEntity瀵硅薄 + HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers); + // 鍙戦�丳OST璇锋眰 + response = restTemplate.postForEntity(getMaterialStorageUrl, request, String.class); + JSONObject responseBodyJson = JSONObject.parseObject(response.getBody()); + if (response.getStatusCode().is2xxSuccessful() && "200".equals(responseBodyJson.getString("status"))) { + JSONArray jsonArray = responseBodyJson.getJSONArray("data"); + if (!jsonArray.isEmpty()) { + List<ApsMaterialStorageManagementJob> storageList = new ArrayList<>(); + for (Object o : jsonArray) { + JSONObject storage = (JSONObject) o; + ApsMaterialStorageManagementJob materialStorage = new ApsMaterialStorageManagementJob(); + materialStorage.setId(IdUtil.getSnowflakeNextId()); + materialStorage.setItemNumber(storage.getString("ItemCode")); + materialStorage.setNum(storage.getBigDecimal("StoreQty")); + materialStorage.setApplicableFactories(storage.getString("OrgCode")); + storageList.add(materialStorage); + } + List<ApsMaterialStorageManagementJob> temp = new ArrayList<>(); + for(int i=0;i<storageList.size();i++){ + temp.add(storageList.get(i)); + if(temp.size()>=20){ + apsMaterialStorageManagementJobMapper.insertApsMaterialStorageBatch(temp); + temp = new ArrayList<>(); + } + } + jobLog.setRequestData(requestBody.toJSONString()); + jobLog.setPageNum(Long.valueOf(pageIndex)); + jobLog.setPageCount(Long.valueOf(pageSize)); + jobLog.setCreateTime(DateUtils.getNowDate()); + jobLog.setBizType("storage"); + jobLog.setResult("storage:"+storageList.size()); + jobLogMapper.insertApsWorkOrderJobLog(jobLog); + pageIndex++; + }else{ + break; + } + }else{ + jobLog.setRequestData(requestBody.toJSONString()); + jobLog.setResponseData(response.getBody()); + jobLog.setPageNum(Long.valueOf(pageIndex)); + jobLog.setPageCount(Long.valueOf(pageSize)); + jobLog.setCreateTime(DateUtils.getNowDate()); + jobLog.setBizType("storage"); + jobLog.setResult("error"); + jobLogMapper.insertApsWorkOrderJobLog(jobLog); + break; + } + } + } catch (Exception e) { + e.printStackTrace(); + jobLog.setRequestData(requestBody.toJSONString()); + jobLog.setResponseData(response.getBody()); + jobLog.setPageNum(Long.valueOf(pageIndex)); + jobLog.setPageCount(Long.valueOf(pageSize)); + jobLog.setCreateTime(DateUtils.getNowDate()); + jobLog.setBizType("storage"); + jobLog.setResult("error"); + jobLogMapper.insertApsWorkOrderJobLog(jobLog); + return false; + } + return true; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public boolean syncApsMaterialStorageDataJob(int pageIndex, int pageSize, String orgCode, String itemCodeList) { + try { + apsMaterialStorageManagementJobMapper.deleteApsMaterialStorageJob(); + boolean res = syncApsMaterialStorageData(pageIndex, pageSize, orgCode, itemCodeList); + if(!res){ + return false; + } + apsMaterialStorageManagementJobMapper.deleteApsMaterialStorage(); + apsMaterialStorageManagementJobMapper.insertIntoApsMaterialStorage(); + return true; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + +} diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java b/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java index c48844c..837a54d 100644 --- a/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java +++ b/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java @@ -1,9 +1,13 @@ package com.aps.job.task; +import com.aps.common.core.constant.SecurityConstants; import com.aps.common.core.utils.StringUtils; import com.aps.job.param.ApsWorkOrderJobParam; +import com.aps.job.service.IApsBomHeaderJobService; +import com.aps.job.service.IApsMaterialStorageManagementJobService; import com.aps.job.service.IApsWorkOrderJobService; import com.aps.job.service.IApsWorkOrderProcessService; +import com.aps.system.api.RemoteCoreService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -26,6 +30,15 @@ @Autowired private IApsWorkOrderJobService iApsWorkOrderJobService; + + @Autowired + private IApsBomHeaderJobService iApsBomHeaderJobService; + + @Autowired + private RemoteCoreService remoteCoreService; + + @Autowired + private IApsMaterialStorageManagementJobService apsMaterialStorageManagementJobService; public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { @@ -133,4 +146,23 @@ iApsWorkOrderJobService.syncGasPipingData(); iApsWorkOrderProcessService.syncProcessRouteData(); } + + /** + * 鍚屾鍏ㄩ噺BOM鏁版嵁瀹氭椂浠诲姟 + */ + public void syncBomDataJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList) + { + boolean res = iApsBomHeaderJobService.syncBomDataJob(pageIndex, pageSize, orgCode, itemCodeList); + if(res){ + remoteCoreService.setBomDataToRedis(SecurityConstants.INNER); + } + } + + /** + * 鍚屾鍏ㄩ噺搴撳瓨鏁版嵁瀹氭椂浠诲姟 + */ + public void syncApsMaterialStorageDataJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList) + { + apsMaterialStorageManagementJobService.syncApsMaterialStorageDataJob(pageIndex, pageSize, orgCode, itemCodeList); + } } diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml index 1eec45e..1f527b8 100644 --- a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml +++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml @@ -150,9 +150,14 @@ FROM aps_bom_header_job </insert> - <!-- 鍒犻櫎 aps_process_route 琛ㄤ腑鐨勬暟鎹� --> + <!-- 鍒犻櫎 aps_bom_header 琛ㄤ腑鐨勬暟鎹� --> <delete id="deleteApsBomHeader"> DELETE FROM aps_bom_header </delete> + <!-- 鍒犻櫎 aps_bom_header_job 琛ㄤ腑鐨勬暟鎹� --> + <delete id="deleteApsBomHeaderJob"> + DELETE FROM aps_bom_header_job + </delete> + </mapper> \ No newline at end of file diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml index 452300d..84e470b 100644 --- a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml +++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml @@ -198,9 +198,14 @@ FROM aps_bom_line_job </insert> - <!-- 鍒犻櫎 aps_process_route 琛ㄤ腑鐨勬暟鎹� --> + <!-- 鍒犻櫎 aps_bom_line 琛ㄤ腑鐨勬暟鎹� --> <delete id="deleteApsBomLine"> DELETE FROM aps_bom_line </delete> + <!-- 鍒犻櫎 aps_bom_line_job 琛ㄤ腑鐨勬暟鎹� --> + <delete id="deleteApsBomLineJob"> + DELETE FROM aps_bom_line_job + </delete> + </mapper> \ No newline at end of file diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsMaterialStorageManagementJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsMaterialStorageManagementJobMapper.xml new file mode 100644 index 0000000..ce3ec29 --- /dev/null +++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsMaterialStorageManagementJobMapper.xml @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.aps.job.mapper.ApsMaterialStorageManagementJobMapper"> + + <resultMap type="ApsMaterialStorageManagementJob" id="ApsMaterialStorageManagementJobResult"> + <result property="id" column="id" /> + <result property="itemNumber" column="item_number" /> + <result property="num" column="num" /> + <result property="applicableFactories" column="applicable_factories" /> + <result property="integrationDate" column="integration_date" /> + <result property="refreshDate" column="refresh_date" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="remainderStock" column="remainder_stock" /> + <result property="version" column="version" /> + </resultMap> + + <sql id="selectApsMaterialStorageManagementJobVo"> + select id, item_number, num, applicable_factories, integration_date, refresh_date, create_by, create_time, update_by, update_time, remainder_stock, version from aps_material_storage_management_job + </sql> + + <select id="selectApsMaterialStorageManagementJobList" parameterType="ApsMaterialStorageManagementJob" resultMap="ApsMaterialStorageManagementJobResult"> + <include refid="selectApsMaterialStorageManagementJobVo"/> + <where> + <if test="itemNumber != null and itemNumber != ''"> and item_number = #{itemNumber}</if> + <if test="num != null "> and num = #{num}</if> + <if test="applicableFactories != null and applicableFactories != ''"> and applicable_factories = #{applicableFactories}</if> + <if test="integrationDate != null "> and integration_date = #{integrationDate}</if> + <if test="refreshDate != null "> and refresh_date = #{refreshDate}</if> + <if test="remainderStock != null "> and remainder_stock = #{remainderStock}</if> + <if test="version != null "> and version = #{version}</if> + </where> + </select> + + <select id="selectApsMaterialStorageManagementJobById" parameterType="Long" resultMap="ApsMaterialStorageManagementJobResult"> + <include refid="selectApsMaterialStorageManagementJobVo"/> + where id = #{id} + </select> + + <insert id="insertApsMaterialStorageManagementJob" parameterType="ApsMaterialStorageManagementJob"> + insert into aps_material_storage_management_job + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null">id,</if> + <if test="itemNumber != null">item_number,</if> + <if test="num != null">num,</if> + <if test="applicableFactories != null">applicable_factories,</if> + <if test="integrationDate != null">integration_date,</if> + <if test="refreshDate != null">refresh_date,</if> + <if test="createBy != null">create_by,</if> + <if test="createTime != null">create_time,</if> + <if test="updateBy != null">update_by,</if> + <if test="updateTime != null">update_time,</if> + <if test="remainderStock != null">remainder_stock,</if> + <if test="version != null">version,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null">#{id},</if> + <if test="itemNumber != null">#{itemNumber},</if> + <if test="num != null">#{num},</if> + <if test="applicableFactories != null">#{applicableFactories},</if> + <if test="integrationDate != null">#{integrationDate},</if> + <if test="refreshDate != null">#{refreshDate},</if> + <if test="createBy != null">#{createBy},</if> + <if test="createTime != null">#{createTime},</if> + <if test="updateBy != null">#{updateBy},</if> + <if test="updateTime != null">#{updateTime},</if> + <if test="remainderStock != null">#{remainderStock},</if> + <if test="version != null">#{version},</if> + </trim> + </insert> + + <update id="updateApsMaterialStorageManagementJob" parameterType="ApsMaterialStorageManagementJob"> + update aps_material_storage_management_job + <trim prefix="SET" suffixOverrides=","> + <if test="itemNumber != null">item_number = #{itemNumber},</if> + <if test="num != null">num = #{num},</if> + <if test="applicableFactories != null">applicable_factories = #{applicableFactories},</if> + <if test="integrationDate != null">integration_date = #{integrationDate},</if> + <if test="refreshDate != null">refresh_date = #{refreshDate},</if> + <if test="createBy != null">create_by = #{createBy},</if> + <if test="createTime != null">create_time = #{createTime},</if> + <if test="updateBy != null">update_by = #{updateBy},</if> + <if test="updateTime != null">update_time = #{updateTime},</if> + <if test="remainderStock != null">remainder_stock = #{remainderStock},</if> + <if test="version != null">version = #{version},</if> + </trim> + where id = #{id} + </update> + + <delete id="deleteApsMaterialStorageManagementJobById" parameterType="Long"> + delete from aps_material_storage_management_job where id = #{id} + </delete> + + <delete id="deleteApsMaterialStorageManagementJobByIds" parameterType="String"> + delete from aps_material_storage_management_job where id in + <foreach item="id" collection="array" open="(" separator="," close=")"> + #{id} + </foreach> + </delete> + + <insert id="insertApsMaterialStorageBatch"> + INSERT INTO aps_material_storage_management_job ( + id, + item_number, + num, + applicable_factories, + create_time + ) VALUES + <foreach collection="list" item="item" separator=","> + ( + #{item.id}, + #{item.itemNumber}, + #{item.num}, + #{item.applicableFactories}, + now() + ) + </foreach> + </insert> + + <!-- 鎻掑叆鏁版嵁鍒� aps_material_storage_management --> + <insert id="insertIntoApsMaterialStorage"> + INSERT INTO aps_material_storage_management ( + id, + item_number, + num, + applicable_factories, + create_time + ) + SELECT + id, + item_number, + num, + applicable_factories, + now() + FROM aps_material_storage_management_job + </insert> + + <!-- 鍒犻櫎 aps_material_storage_management 琛ㄤ腑鐨勬暟鎹� --> + <delete id="deleteApsMaterialStorage"> + DELETE FROM aps_material_storage_management + </delete> + + <!-- 鍒犻櫎 aps_material_storage_management_job 琛ㄤ腑鐨勬暟鎹� --> + <delete id="deleteApsMaterialStorageJob"> + DELETE FROM aps_material_storage_management_job + </delete> + +</mapper> \ No newline at end of file -- Gitblit v1.9.3