From c9d4ba37c1f681b12e24014013fa9a28734bad42 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 20 八月 2026 17:00:02 +0800
Subject: [PATCH] feat 功能修正
---
yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiForecastServiceImpl.java | 45 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiForecastServiceImpl.java b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiForecastServiceImpl.java
index 5455fb5..6f183d3 100644
--- a/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiForecastServiceImpl.java
+++ b/yudao-module-bi/src/main/java/cn/iocoder/yudao/module/bi/service/decision/BiForecastServiceImpl.java
@@ -1,14 +1,22 @@
package cn.iocoder.yudao.module.bi.service.decision;
+import cn.hutool.core.date.DateUtil;
+import cn.iocoder.yudao.module.bi.controller.admin.decision.vo.DecisionForecastWorkOrderCreateReqVO;
import cn.iocoder.yudao.module.bi.dal.dataobject.decision.BiForecastDataDO;
import cn.iocoder.yudao.module.bi.dal.mysql.decision.BiForecastDataMapper;
+import cn.iocoder.yudao.module.mes.api.workorder.MesProWorkOrderApi;
+import cn.iocoder.yudao.module.mes.api.workorder.dto.MesProWorkOrderCreateReqDTO;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.bi.enums.ErrorCodeConstants.BI_FORECAST_NOT_EXISTS;
/**
* 璐熻嵎棰勬祴 Service 瀹炵幇
@@ -21,8 +29,15 @@
@Service
public class BiForecastServiceImpl implements BiForecastService {
+ /**
+ * 宸ュ崟鏉ユ簮绫诲瀷锛氳礋鑽烽娴嬶紙涓庡瓧鍏� mes_pro_work_order_source_type 鐨� value=4 涓�鑷达級
+ */
+ private static final Integer WORK_ORDER_SOURCE_TYPE_FORECAST = 4;
+
@Resource
private BiForecastDataMapper forecastDataMapper;
+ @Resource
+ private MesProWorkOrderApi mesProWorkOrderApi;
@Override
public List<BiForecastDataDO> getForecastList(String forecastCode, LocalDateTime beginTime, LocalDateTime endTime) {
@@ -48,4 +63,32 @@
forecastDataMapper.insert(forecast);
}
-}
\ No newline at end of file
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Long createWorkOrderFromForecast(DecisionForecastWorkOrderCreateReqVO reqVO) {
+ // 1. 鏍¢獙棰勬祴鏁版嵁瀛樺湪
+ BiForecastDataDO forecast = forecastDataMapper.selectById(reqVO.getForecastId());
+ if (forecast == null) {
+ throw exception(BI_FORECAST_NOT_EXISTS);
+ }
+ // 2. 缁勮宸ュ崟 DTO 骞惰皟鐢� MES API 鍒涘缓锛堟棤浜у搧宸ュ崟锛岃烦 BOM锛�
+ MesProWorkOrderCreateReqDTO dto = new MesProWorkOrderCreateReqDTO();
+ dto.setCode(generateWorkOrderCode());
+ dto.setName(reqVO.getWorkOrderName() != null
+ ? reqVO.getWorkOrderName()
+ : ("璐熻嵎棰勬祴-" + forecast.getForecastName()));
+ dto.setType(reqVO.getWorkOrderType());
+ dto.setOrderSourceType(WORK_ORDER_SOURCE_TYPE_FORECAST);
+ dto.setOrderSourceCode(forecast.getForecastCode());
+ dto.setRequestDate(reqVO.getRequestDate());
+ dto.setQuantity(reqVO.getQuantity());
+ dto.setRemark(reqVO.getRemark());
+ return mesProWorkOrderApi.createWorkOrder(dto);
+ }
+
+ private String generateWorkOrderCode() {
+ return "GZ" + DateUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss")
+ + String.format("%03d", (int) (Math.random() * 1000));
+ }
+
+}
--
Gitblit v1.9.3