diff --git a/src/main/java/com/gaotao/modules/oa/controller/ProductionBomController.java b/src/main/java/com/gaotao/modules/oa/controller/ProductionBomController.java index 40e0199..c5323c8 100644 --- a/src/main/java/com/gaotao/modules/oa/controller/ProductionBomController.java +++ b/src/main/java/com/gaotao/modules/oa/controller/ProductionBomController.java @@ -46,15 +46,13 @@ public class ProductionBomController { bindingResult.getFieldErrors().forEach(error -> errorMsg.append(error.getField()).append(": ").append(error.getDefaultMessage()).append("; ") ); - log.warn("生产订单BOM推送请求参数验证失败: {}", errorMsg.toString()); - return OaResponseDto.failure("参数验证失败: " + errorMsg.toString()); + log.warn("生产订单BOM推送请求参数验证失败: {}", errorMsg); + return OaResponseDto.failure("参数验证失败: " + errorMsg); } // 处理生产订单BOM推送 OaResponseDto response = productionBomService.processProductionBom(request); - log.info("生产订单BOM推送处理完成,结果: {}", response.getCode()); - return response; } catch (RuntimeException e) { diff --git a/src/main/java/com/gaotao/modules/oa/controller/ProductionOrderController.java b/src/main/java/com/gaotao/modules/oa/controller/ProductionOrderController.java index 2635356..2bb2fb8 100644 --- a/src/main/java/com/gaotao/modules/oa/controller/ProductionOrderController.java +++ b/src/main/java/com/gaotao/modules/oa/controller/ProductionOrderController.java @@ -52,9 +52,7 @@ public class ProductionOrderController { // 处理生产订单推送 OaResponseDto response = productionOrderService.processProductionOrder(request); - log.info("生产订单推送处理完成,结果: {}", response.getCode()); - return response; } catch (RuntimeException e) { diff --git a/src/main/java/com/gaotao/modules/oa/service/impl/ProductionBomServiceImpl.java b/src/main/java/com/gaotao/modules/oa/service/impl/ProductionBomServiceImpl.java index a65237b..7aa0500 100644 --- a/src/main/java/com/gaotao/modules/oa/service/impl/ProductionBomServiceImpl.java +++ b/src/main/java/com/gaotao/modules/oa/service/impl/ProductionBomServiceImpl.java @@ -1,17 +1,18 @@ package com.gaotao.modules.oa.service.impl; -import com.gaotao.modules.oa.dao.SoBomMapper; import com.gaotao.modules.oa.dto.OaResponseDto; import com.gaotao.modules.oa.dto.ProductionBomItemDto; import com.gaotao.modules.oa.dto.ProductionBomRequestDto; import com.gaotao.modules.oa.service.ProductionBomService; -import com.gaotao.modules.orderIssure.entity.SoBomData; +import com.gaotao.modules.report.dao.ProcedureDao; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import java.util.*; + /** * 生产订单BOM服务实现类 */ @@ -20,7 +21,7 @@ import org.springframework.util.StringUtils; public class ProductionBomServiceImpl implements ProductionBomService { @Autowired - private SoBomMapper soBomMapper; + private ProcedureDao procedureDao; @Override @Transactional @@ -41,25 +42,8 @@ public class ProductionBomServiceImpl implements ProductionBomService { continue; } - // 2. 根据method执行不同操作 - switch (item.getMethod()) { - case "0": // 新增 - processNewBom(item); - break; - case "1": // 修改 - processUpdateBom(item); - break; - case "2": // 关闭(标记删除) - processUpdateBom(item); - break; - case "3": // 删除 - processDeleteBom(item); - break; - default: - failCount++; - errorMessages.append("BOM项").append(item.getOrderNo()).append("-").append(item.getItemNo()).append("操作方法无效; "); - continue; - } + // 2. 调用存储过程UspInsertShopOrder + callUspInsertShopOrder(item); successCount++; log.info("处理生产订单BOM成功,订单号: {}, 行号: {}, 操作: {}", @@ -90,55 +74,49 @@ public class ProductionBomServiceImpl implements ProductionBomService { } /** - * 处理新增BOM + * 调用存储过程UspInsertShopOrder + * 注意:BOM数据需要映射到生产订单存储过程参数 */ - private void processNewBom(ProductionBomItemDto item) { - SoBomData soBomData = new SoBomData(); - mapItemToSoBom(item, soBomData); + private void callUspInsertShopOrder(ProductionBomItemDto item) { + List params = new ArrayList<>(); - soBomMapper.saveSoBom(soBomData); - log.debug("新增生产订单BOM: {}-{}", item.getOrderNo(), item.getItemNo()); - } - - /** - * 处理修改BOM - */ - private void processUpdateBom(ProductionBomItemDto item) { - SoBomData soBomData = new SoBomData(); - mapItemToSoBom(item, soBomData); + // 按照存储过程参数顺序添加参数,BOM数据映射到生产订单参数 + params.add(item.getSite()); // @site + params.add(item.getBuNo()); // @buNo + params.add(item.getOrderNo()); // @orderNo + params.add(""); // @status - BOM默认状态 + params.add(""); // @statusTmp - BOM默认状态 + params.add(""); // @enterDate - 当前时间 + params.add(""); // @needDate - 当前时间 + params.add(""); // @planStartDate + params.add(""); // @originalNeedDate + params.add(""); // @closeDate + params.add(""); // @orderType - BOM默认订单类型 + params.add(item.getComponentPartNo()); // @partNo - 使用组件物料编号 + params.add(item.getQtyRequired() != null ? item.getQtyRequired().doubleValue() : 0.0); // @lotSize - 使用需求数量 + params.add("BOM"); // @bomRevNo - BOM标识 + params.add("ROUTING"); // @routingRevNo - 默认工艺路线 + params.add(""); // @projectID + params.add(""); // @customerId + params.add(""); // @batchNo + params.add(item.getRemark()); // @orderref1 - 使用备注 + params.add(item.getIssueMethod()); // @orderref2 - 使用领料方式 + params.add(item.getMethod()); // @method - soBomMapper.updateSoBom(soBomData); - log.debug("修改生产订单BOM: {}-{}", item.getOrderNo(), item.getItemNo()); - } - - /** - * 处理删除BOM - */ - private void processDeleteBom(ProductionBomItemDto item) { - soBomMapper.deleteSoBom(item.getSite(), item.getOrderNo(), item.getItemNo()); - log.debug("删除生产订单BOM: {}-{}", item.getOrderNo(), item.getItemNo()); - } - - /** - * 将DTO映射到SoBomData - */ - private void mapItemToSoBom(ProductionBomItemDto item, SoBomData soBomData) { - soBomData.setSite(item.getSite()); - soBomData.setOrderNo(item.getOrderNo()); - soBomData.setItemNo(item.getItemNo()); - soBomData.setComponentPartno(item.getComponentPartNo()); - soBomData.setQtyAssembly(item.getQtyAssembly()); - soBomData.setQtyFixedscrapt(item.getQtyFixedScrapt()); - soBomData.setScraptFactor(item.getScraptFactor()); - soBomData.setRemark(item.getRemark()); - soBomData.setQtyRequired(item.getQtyRequired()); - soBomData.setQtyReserved(item.getQtyReserved()); - soBomData.setQtyNotified(item.getQtyNotified()); - soBomData.setIssueMethod(item.getIssueMethod()); - soBomData.setOutboundWarehouseId(item.getOutBoundWareHouseId()); + // 执行存储过程 + List> resultList = procedureDao.getProcedureData("UspInsertShopOrder", params); + + // 判断执行结果 + if (resultList != null && !resultList.isEmpty()) { + String code = String.valueOf(resultList.get(0).get("resultCode")); + if ("400".equalsIgnoreCase(code)) { + String msg = String.valueOf(resultList.get(0).get("resultMsg")); + throw new RuntimeException(msg); + } + } - // 注意:数据库表有operation_no和RMType_DB字段,但SoBom实体类中没有对应的属性 - // 这些字段将通过XML映射直接处理,实体类不需要对应的setter方法 + log.debug("调用存储过程UspInsertShopOrder成功,BOM订单号: {}, 行号: {}, 操作: {}", + item.getOrderNo(), item.getItemNo(), getMethodDesc(item.getMethod())); } /** diff --git a/src/main/java/com/gaotao/modules/oa/service/impl/ProductionOrderServiceImpl.java b/src/main/java/com/gaotao/modules/oa/service/impl/ProductionOrderServiceImpl.java index a067c40..5a5e18a 100644 --- a/src/main/java/com/gaotao/modules/oa/service/impl/ProductionOrderServiceImpl.java +++ b/src/main/java/com/gaotao/modules/oa/service/impl/ProductionOrderServiceImpl.java @@ -1,19 +1,18 @@ package com.gaotao.modules.oa.service.impl; +import com.gaotao.common.utils.DateUtils; import com.gaotao.modules.oa.dto.OaResponseDto; import com.gaotao.modules.oa.dto.ProductionOrderItemDto; import com.gaotao.modules.oa.dto.ProductionOrderRequestDto; import com.gaotao.modules.oa.service.ProductionOrderService; -import com.gaotao.modules.shopOrder.dao.ShopOrderMapper; -import com.gaotao.modules.shopOrder.entity.ShopOrderData; +import com.gaotao.modules.report.dao.ProcedureDao; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; -import java.util.Date; +import java.util.*; /** * 生产订单服务实现类 @@ -23,7 +22,7 @@ import java.util.Date; public class ProductionOrderServiceImpl implements ProductionOrderService { @Autowired - private ShopOrderMapper shopOrderMapper; + private ProcedureDao procedureDao; @Override @Transactional @@ -44,25 +43,8 @@ public class ProductionOrderServiceImpl implements ProductionOrderService { continue; } - // 2. 根据method执行不同操作 - switch (item.getMethod()) { - case "0": // 新增 - processNewOrder(item); - break; - case "1": // 修改 - processUpdateOrder(item); - break; - case "2": // 关闭 - processCloseOrder(item); - break; - case "3": // 删除 - processDeleteOrder(item); - break; - default: - failCount++; - errorMessages.append("订单").append(item.getOrderNo()).append("操作方法无效; "); - continue; - } + // 2. 调用存储过程UspInsertShopOrder + callUspInsertShopOrder(item); successCount++; log.info("处理生产订单成功,订单号: {}, 操作: {}", item.getOrderNo(), getMethodDesc(item.getMethod())); @@ -91,83 +73,47 @@ public class ProductionOrderServiceImpl implements ProductionOrderService { } /** - * 处理新增订单 + * 调用存储过程UspInsertShopOrder */ - private void processNewOrder(ProductionOrderItemDto item) { - ShopOrderData shopOrder = new ShopOrderData(); - mapItemToShopOrder(item, shopOrder); - shopOrder.setEnterDate(item.getEnterDate() != null ? item.getEnterDate() : new Date()); - shopOrder.setUserName("OA_SYSTEM"); + private void callUspInsertShopOrder(ProductionOrderItemDto item) { + List params = new ArrayList<>(); - shopOrderMapper.saveShopOrderData2(shopOrder); - log.debug("新增生产订单: {}", item.getOrderNo()); - } - - /** - * 处理修改订单 - */ - private void processUpdateOrder(ProductionOrderItemDto item) { - ShopOrderData shopOrder = new ShopOrderData(); - mapItemToShopOrder(item, shopOrder); - shopOrder.setUserName("OA_SYSTEM"); + // 按照存储过程参数顺序添加参数 + params.add(item.getSite()); // @site + params.add(item.getBuNo()); // @buNo + params.add(item.getOrderNo()); // @orderNo + params.add(item.getStatus()); // @status + params.add(item.getStatusTmp()); // @statusTmp + params.add(DateUtils.format(item.getEnterDate() != null ? item.getEnterDate() : new Date())); // @enterDate + params.add(DateUtils.format(item.getNeedDate())); // @needDate + params.add(DateUtils.format(item.getPlanStartDate())); // @planStartDate + params.add(item.getOriginalNeedDate() != null ? DateUtils.format(item.getOriginalNeedDate()) : ""); // @originalNeedDate + params.add(item.getCloseDate() != null ? DateUtils.format(item.getCloseDate()) : ""); // @closeDate + params.add(item.getOrderType()); // @orderType + params.add(item.getPartNo()); // @partNo + params.add(item.getLotSize()); // @lotSize + params.add(item.getBomRevNo()); // @bomRevNo + params.add(item.getRoutingRevNo()); // @routingRevNo + params.add(item.getProjectID()); // @projectID + params.add(item.getCustomerId()); // @customerId + params.add(item.getBatchNo()); // @batchNo + params.add(item.getOrderref1()); // @orderref1 + params.add(item.getOrderref2()); // @orderref2 + params.add(item.getMethod()); // @method - shopOrderMapper.saveShopOrderData(shopOrder); - log.debug("修改生产订单: {}", item.getOrderNo()); - } - - /** - * 处理关闭订单 - */ - private void processCloseOrder(ProductionOrderItemDto item) { - ShopOrderData shopOrder = new ShopOrderData(); - shopOrder.setSite(item.getSite()); - shopOrder.setOrderNo(item.getOrderNo()); - shopOrder.setStatus("已关闭"); - shopOrder.setStatusTmp("已关闭"); - shopOrder.setCloseDate(item.getCloseDate() != null ? item.getCloseDate() : new Date()); - shopOrder.setUserName("OA_SYSTEM"); + // 执行存储过程 + List> resultList = procedureDao.getProcedureData("UspInsertShopOrder", params); - shopOrderMapper.saveShopOrderData(shopOrder); - log.debug("关闭生产订单: {}", item.getOrderNo()); - } - - /** - * 处理删除订单 - */ - private void processDeleteOrder(ProductionOrderItemDto item) { - ShopOrderData shopOrder = new ShopOrderData(); - shopOrder.setSite(item.getSite()); - shopOrder.setOrderNo(item.getOrderNo()); - shopOrder.setUserName("OA_SYSTEM"); + // 判断执行结果 + if (resultList != null && !resultList.isEmpty()) { + String code = String.valueOf(resultList.get(0).get("resultCode")); + if ("400".equalsIgnoreCase(code)) { + String msg = String.valueOf(resultList.get(0).get("resultMsg")); + throw new RuntimeException(msg); + } + } - shopOrderMapper.deleteShopOrderData(shopOrder); - log.debug("删除生产订单: {}", item.getOrderNo()); - } - - /** - * 将DTO映射到ShopOrderData - */ - private void mapItemToShopOrder(ProductionOrderItemDto item, ShopOrderData shopOrder) { - shopOrder.setSite(item.getSite()); - shopOrder.setOrderNo(item.getOrderNo()); - shopOrder.setStatus(item.getStatus()); - shopOrder.setStatusTmp(item.getStatusTmp()); - shopOrder.setEnterDate(item.getEnterDate()); - shopOrder.setNeedDate(item.getNeedDate()); - shopOrder.setPlanStartDate(item.getPlanStartDate()); - shopOrder.setOriginalNeedDate(item.getOriginalNeedDate()); - shopOrder.setCloseDate(item.getCloseDate()); - shopOrder.setOrderType(item.getOrderType()); - shopOrder.setPartNo(item.getPartNo()); - shopOrder.setLotSize(item.getLotSize()); - shopOrder.setbOMRevNo(item.getBomRevNo()); - shopOrder.setRoutingRevNo(item.getRoutingRevNo()); - shopOrder.setProjectID(item.getProjectID()); - shopOrder.setCustomerID(item.getCustomerId()); - shopOrder.setBatchNo(item.getBatchNo()); - shopOrder.setOrderRef1(item.getOrderref1()); - shopOrder.setOrderRef2(item.getOrderref2()); - shopOrder.setBuNo(item.getBuNo()); + log.debug("调用存储过程UspInsertShopOrder成功,订单号: {}, 操作: {}", item.getOrderNo(), getMethodDesc(item.getMethod())); } /** diff --git a/src/main/java/com/gaotao/modules/oa/service/impl/ProductionRoutingServiceImpl.java b/src/main/java/com/gaotao/modules/oa/service/impl/ProductionRoutingServiceImpl.java index a9577a7..74a3528 100644 --- a/src/main/java/com/gaotao/modules/oa/service/impl/ProductionRoutingServiceImpl.java +++ b/src/main/java/com/gaotao/modules/oa/service/impl/ProductionRoutingServiceImpl.java @@ -1,17 +1,18 @@ package com.gaotao.modules.oa.service.impl; -import com.gaotao.modules.base.entity.SORoutingData; -import com.gaotao.modules.oa.dao.SoRoutingMapper; import com.gaotao.modules.oa.dto.OaResponseDto; import com.gaotao.modules.oa.dto.ProductionRoutingItemDto; import com.gaotao.modules.oa.dto.ProductionRoutingRequestDto; import com.gaotao.modules.oa.service.ProductionRoutingService; +import com.gaotao.modules.report.dao.ProcedureDao; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import java.util.*; + /** * 生产订单工艺路线服务实现类 */ @@ -20,7 +21,7 @@ import org.springframework.util.StringUtils; public class ProductionRoutingServiceImpl implements ProductionRoutingService { @Autowired - private SoRoutingMapper soRoutingMapper; + private ProcedureDao procedureDao; @Override @Transactional @@ -41,25 +42,8 @@ public class ProductionRoutingServiceImpl implements ProductionRoutingService { continue; } - // 2. 根据method执行不同操作 - switch (item.getMethod()) { - case "0": // 新增 - processNewRouting(item); - break; - case "1": // 修改 - processUpdateRouting(item); - break; - case "2": // 关闭(标记删除) - processUpdateRouting(item); - break; - case "3": // 删除 - processDeleteRouting(item); - break; - default: - failCount++; - errorMessages.append("工艺路线项").append(item.getOrderNo()).append("-").append(item.getItemNo()).append("操作方法无效; "); - continue; - } + // 2. 调用存储过程UspInsertShopOrder + callUspInsertShopOrder(item); successCount++; log.info("处理生产订单工艺路线成功,订单号: {}, 工序号: {}, 操作: {}", @@ -90,77 +74,49 @@ public class ProductionRoutingServiceImpl implements ProductionRoutingService { } /** - * 处理新增工艺路线 + * 调用存储过程UspInsertShopOrder + * 注意:工艺路线数据需要映射到生产订单存储过程参数 */ - private void processNewRouting(ProductionRoutingItemDto item) { - SORoutingData routingData = new SORoutingData(); - mapItemToRouting(item, routingData); + private void callUspInsertShopOrder(ProductionRoutingItemDto item) { + List params = new ArrayList<>(); - soRoutingMapper.saveSoRouting(routingData); - log.debug("新增生产订单工艺路线: {}-{}", item.getOrderNo(), item.getItemNo()); - } - - /** - * 处理修改工艺路线 - */ - private void processUpdateRouting(ProductionRoutingItemDto item) { - SORoutingData routingData = new SORoutingData(); - mapItemToRouting(item, routingData); + // 按照存储过程参数顺序添加参数,工艺路线数据映射到生产订单参数 + params.add(item.getSite()); // @site + params.add(item.getBuNo()); // @buNo + params.add(item.getOrderNo()); // @orderNo + params.add("已下达"); // @status - 工艺路线默认状态 + params.add("已下达"); // @statusTmp - 工艺路线默认状态 + params.add(new Date()); // @enterDate - 当前时间 + params.add(item.getPlanStartTime() != null ? item.getPlanStartTime() : new Date()); // @needDate - 使用计划开始时间 + params.add(item.getPlanStartTime()); // @planStartDate - 计划开始时间 + params.add(null); // @originalNeedDate + params.add(item.getPlanFinishTime()); // @closeDate - 使用计划完成时间 + params.add("生产订单"); // @orderType - 工艺路线默认订单类型 + params.add(item.getPartNo() != null ? item.getPartNo() : ""); // @partNo - 使用产出物料编号 + params.add(item.getQtyRequired() != null ? item.getQtyRequired() : 0.0); // @lotSize - 使用需加工数量 + params.add("BOM"); // @bomRevNo - 默认BOM版本 + params.add("ROUTING"); // @routingRevNo - 工艺路线标识 + params.add(""); // @projectID + params.add(""); // @customerId + params.add(""); // @batchNo + params.add(item.getRemark()); // @orderref1 - 使用备注 + params.add(item.getOperationDesc()); // @orderref2 - 使用工序名称 + params.add(item.getMethod()); // @method - soRoutingMapper.updateSoRouting(routingData); - log.debug("修改生产订单工艺路线: {}-{}", item.getOrderNo(), item.getItemNo()); - } - - /** - * 处理删除工艺路线 - */ - private void processDeleteRouting(ProductionRoutingItemDto item) { - soRoutingMapper.deleteSoRouting(item.getSite(), item.getOrderNo(), item.getItemNo()); - log.debug("删除生产订单工艺路线: {}-{}", item.getOrderNo(), item.getItemNo()); - } - - /** - * 将DTO映射到SORoutingData - */ - private void mapItemToRouting(ProductionRoutingItemDto item, SORoutingData routingData) { - routingData.setSite(item.getSite()); - routingData.setOrderNo(item.getOrderNo()); - routingData.setItemNo(item.getItemNo()); - - // 映射主要字段 - routingData.setOperationDesc(item.getOperationDesc()); - routingData.setWorkCenterNo(item.getWorkCenterNo()); - routingData.setMachSetupTime(item.getMachSetupTime()); - routingData.setMachRunFactor(item.getMachRunFactor()); - routingData.setFactorUnitDb(item.getFactorUnitDb()); - routingData.setFactorUnit(item.getFactorUnit()); + // 执行存储过程 + List> resultList = procedureDao.getProcedureData("UspInsertShopOrder", params); - // 映射数量相关字段 - routingData.setQtyRequired(item.getQtyRequired()); - routingData.setTimeRequired(item.getTimeRequired()); - routingData.setCrewsize(item.getCrewSize()); - routingData.setEfficiency(item.getEfficiency()); - - // 映射时间字段 - routingData.setPlanStartTime(item.getPlanStartTime()); - routingData.setPlanFinishTime(item.getPlanFinishTime()); - - // 映射字符串字段 - routingData.setRemark(item.getRemark()); - routingData.setClosedFlag(item.getClosedFlag() != null ? item.getClosedFlag() : "N"); - routingData.setOutWorkFlag(item.getOutWorkFlag() != null ? item.getOutWorkFlag() : "N"); - routingData.setPartNo(item.getPartNo()); - routingData.setOutWorkPartNo(item.getOutWorkPartNo()); + // 判断执行结果 + if (resultList != null && !resultList.isEmpty()) { + String code = String.valueOf(resultList.get(0).get("resultCode")); + if ("400".equalsIgnoreCase(code)) { + String msg = String.valueOf(resultList.get(0).get("resultMsg")); + throw new RuntimeException(msg); + } + } - // 初始化其他字段为默认值 - routingData.setQtyReported(0.0); - routingData.setQtyApprove(0.0); - routingData.setTimeReported(0.0); - routingData.setQtyScrapt(0.0); - routingData.setQtyOnPR(0.0); - routingData.setQtyOnPO(0.0); - routingData.setScheduledFlag("N"); - routingData.setQtyScheduled(0.0); + log.debug("调用存储过程UspInsertShopOrder成功,工艺路线订单号: {}, 工序号: {}, 操作: {}", + item.getOrderNo(), item.getItemNo(), getMethodDesc(item.getMethod())); } /**