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