From 3a0462dd07037f8c026f160bf14566e116d1a35a Mon Sep 17 00:00:00 2001 From: zangzhipeng Date: Wed, 3 Jun 2026 16:24:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=96=E5=8D=8F=E8=AE=A2=E5=8D=95=E4=B8=8B?= =?UTF-8?q?=E8=BE=BE=E6=8E=A5=E6=94=B6feign=E6=8E=A5=E5=8F=A3=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=EF=BC=8C=E4=BB=A5=E5=8F=8A=E4=BB=8Eerp=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=9C=80=E6=B1=82=E6=97=A5=E6=9C=9F=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/oem/OemOrderOutProcessor.java | 35 +++++++++++++++++++ .../produce/feign/IWorkOrderRunOutClient.java | 26 ++++++++++++++ .../erpdata/feign/IErpMesRbWoClient.java | 11 ++++++ .../feign/IErpMesRbWoClientFallback.java | 5 +++ .../produce/feign/WorkOrderRunOutClient.java | 27 ++++++++++++++ .../service/impl/WorkOrderRunServiceImpl.java | 32 +++++++++++++++++ .../erpdata/feign/ErpMesRbWoClient.java | 5 +++ .../erpdata/mapper/ErpMesRbWoMapper.java | 8 +++++ .../erpdata/mapper/ErpMesRbWoMapper.xml | 4 +++ .../erpdata/service/IErpMesRbWoService.java | 8 +++++ .../service/impl/ErpMesRbWoServiceImpl.java | 5 +++ 11 files changed, 166 insertions(+) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/oem/OemOrderOutProcessor.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkOrderRunOutClient.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkOrderRunOutClient.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/oem/OemOrderOutProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/oem/OemOrderOutProcessor.java new file mode 100644 index 000000000..ace839ae4 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/oem/OemOrderOutProcessor.java @@ -0,0 +1,35 @@ +package org.springblade.job.processor.oem; + +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.produce.feign.IWorkOrderRunOutClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * 外协订单下达ERP定时任务 + * + * @author zangzhipeng + */ +@Component +@Slf4j +public class OemOrderOutProcessor implements BasicProcessor { + + @Resource + private IWorkOrderRunOutClient workOrderRunOutClient; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("外协订单下达ERP定时任务开始"); + try { + workOrderRunOutClient.oemOrderOut(); + log.info("外协订单下达ERP定时任务执行完毕"); + return new ProcessResult(true); + } catch (Exception e) { + log.error("外协订单下达ERP定时任务执行失败", e); + return new ProcessResult(false, e.getMessage()); + } + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkOrderRunOutClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkOrderRunOutClient.java new file mode 100644 index 000000000..a49cbfd14 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkOrderRunOutClient.java @@ -0,0 +1,26 @@ +package org.springblade.desk.produce.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.core.tool.api.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * 外协订单下达ERP定时任务 Feign接口 + * + * @author zangzhipeng + */ +@FeignClient( + value = AppConstant.APPLICATION_DESK_NAME +) +public interface IWorkOrderRunOutClient { + + String API_PREFIX = "/feign/client/workOrderRunOut"; + String OEM_ORDER_OUT = API_PREFIX + "/oemOrderOut"; + + /** + * 外协订单下达ERP(定时任务调用) + */ + @GetMapping(OEM_ORDER_OUT) + R oemOrderOut(); +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClient.java index aec14320d..a6b57a6aa 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClient.java @@ -8,6 +8,7 @@ import org.springblade.erpdata.pojo.dto.view.MesRbWo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -35,6 +36,7 @@ public interface IErpMesRbWoClient { String SYN_OUTSOURCING = API_PREFIX + "/synOutsourcing"; String SYN_CRAFT = API_PREFIX + "/synCraft"; String SYN_SUPPORTING_FACILITIES = API_PREFIX + "/synSupportingFacilities"; + String GET_DEMAND_DATE = API_PREFIX + "/getDemandDateByWono"; /** * 查询烧结配套信息 @@ -73,4 +75,13 @@ public interface IErpMesRbWoClient { R synCraft(); @GetMapping(SYN_SUPPORTING_FACILITIES) R synSupportingFacilities(); + + /** + * 根据工作订单号查询ERP需求日期 + * + * @param wono 工作订单号 + * @return 需求日期字符串 + */ + @GetMapping(GET_DEMAND_DATE) + R getDemandDateByWono(@RequestParam(required = true) String wono); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClientFallback.java index 14907451f..d1f19c425 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpMesRbWoClientFallback.java @@ -75,4 +75,9 @@ public class IErpMesRbWoClientFallback implements IErpMesRbWoClient { public R synSupportingFacilities() { return R.fail("获取数据失败"); } + + @Override + public R getDemandDateByWono(String wono) { + return R.fail("获取数据失败"); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkOrderRunOutClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkOrderRunOutClient.java new file mode 100644 index 000000000..6f53f7580 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkOrderRunOutClient.java @@ -0,0 +1,27 @@ +package org.springblade.desk.produce.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.RequiredArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.core.tool.api.R; +import org.springblade.desk.produce.service.IWorkOrderRunService; +import org.springframework.web.bind.annotation.RestController; + +/** + * 外协订单下达ERP Feign实现 + * + * @author zangzhipeng + */ +@NonDS +@Hidden +@RestController +@RequiredArgsConstructor +public class WorkOrderRunOutClient implements IWorkOrderRunOutClient { + + private final IWorkOrderRunService workOrderRunService; + + @Override + public R oemOrderOut() { + return workOrderRunService.oemOrderOut(); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index 8d8ac0ce3..15469357f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -43,6 +43,7 @@ import org.springblade.desk.produce.service.IPlateAroundService; import org.springblade.desk.produce.service.IWorkOrderRunService; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.erpdata.feign.IErpDataOemClient; +import org.springblade.erpdata.feign.IErpMesRbWoClient; import org.springblade.system.cache.DictCache; import org.springblade.system.cache.UserCache; import org.springblade.system.pojo.entity.User; @@ -102,6 +103,8 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl result = erpMesRbWoClient.getDemandDateByWono(ypCode); + if (result.isSuccess() && StringUtils.isNotBlank(result.getData())) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sdf.parse(result.getData()); + } + } catch (Exception e) { + log.warn("从ERP查询需求日期失败,ypCode={},使用默认值"); + } + // 默认当前日期+10天 + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DAY_OF_MONTH, 10); + return cal.getTime(); + } + @Transactional(rollbackFor = Exception.class) @Override public R changeOemManufacturer(Long worId, Long ocId) { diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpMesRbWoClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpMesRbWoClient.java index 87f1d51bd..f482859a9 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpMesRbWoClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpMesRbWoClient.java @@ -107,4 +107,9 @@ public class ErpMesRbWoClient implements IErpMesRbWoClient { log.info("同步配套订单定时任务结束"); return R.success(); } + + @Override + public R getDemandDateByWono(String wono) { + return R.data(erpMesRbWoService.getDemandDateByWono(wono)); + } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java index 5f99b5750..7fb1d87f4 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java @@ -20,4 +20,12 @@ public interface ErpMesRbWoMapper extends Mapper { List getYieldPlanErpList(String newlevdateMax); String getNewlevdateMax(String selectTime); + + /** + * 根据工作订单号查询需求日期 + * + * @param wono 工作订单号 + * @return 需求日期字符串 + */ + String getDemandDateByWono(String wono); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml index 2640b1b7d..6e667dcd2 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml @@ -43,4 +43,8 @@ a.wopordat >= TO_DATE(#{selectTime}, 'YYYY-MM-DD HH24:MI:SS') + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbWoService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbWoService.java index 7b153acd6..3d084f33d 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbWoService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbWoService.java @@ -56,4 +56,12 @@ public interface IErpMesRbWoService { * 同步配套数据 */ void synSupportingFacilities(); + + /** + * 根据工作订单号查询ERP需求日期 + * + * @param wono 工作订单号 + * @return 需求日期字符串,查不到返回null + */ + String getDemandDateByWono(String wono); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java index 3cc06cf97..ddac3f5f6 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java @@ -817,6 +817,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { // apsOrderClient.saveOrderList(yieldOrderList); } + @Override + public String getDemandDateByWono(String wono) { + return mesRbWoMapper.getDemandDateByWono(wono); + } + private YieldOrder updateYieldType(YieldOrder yieldOrder,String pritno,String firseq){ //从零件表中查询零件信息 DsPartEntity part=apsOrderClient.getDsCraftListByCode(pritno);