diff --git a/src/main/java/com/gaotao/common/utils/IfsClientUtil.java b/src/main/java/com/gaotao/common/utils/IfsClientUtil.java deleted file mode 100644 index 2997957..0000000 --- a/src/main/java/com/gaotao/common/utils/IfsClientUtil.java +++ /dev/null @@ -1,532 +0,0 @@ -package com.gaotao.common.utils; - -import lombok.Getter; -import lombok.Setter; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * IFS接口调用工具类 - * 基于IFS接口清单实现 - */ -@Setter -@Getter -@Component -public class IfsClientUtil { - /** - * -- GETTER -- - * 获取IFS基础URL - * -- SETTER -- - * 设置IFS基础URL - - */ - @Value("${custom.ifs-url}") - private String ifsUrl; - - // ==================== View接口 (IFSV-xxx) ==================== - - /** - * IFSV-01: Inventory Part - 物料信息查询 - */ - public ResponseData getInventoryPart(String site, String partNo) { - String url = ifsUrl + "/api/inventory/part"; - Map params = new HashMap<>(); - params.put("site", site); - if (partNo != null) { - params.put("partNo", partNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-02: Purchase Part - 采购物料信息查询 - */ - public ResponseData getPurchasePart(String site, String partNo) { - String url = ifsUrl + "/api/purchase/part"; - Map params = new HashMap<>(); - params.put("site", site); - if (partNo != null) { - params.put("partNo", partNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-3ailability Control ID - 可用性控制ID查询 - */ - public ResponseData getAvailabilityControlId(String site, String controlId) { - String url = ifsUrl + "/api/availability/control"; - Map params = new HashMap<>(); - params.put("site", site); - if (controlId != null) { - params.put("controlId", controlId); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-4: 供应商信息查询 - */ - public ResponseData getSupplierInfo(String site, String supplierId) { - String url = ifsUrl + "/api/supplier/info"; - Map params = new HashMap<>(); - params.put("site", site); - if (supplierId != null) { - params.put("supplierId", supplierId); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-005客户信息查询 - */ - public ResponseData getCustomerInfo(String site, String customerId) { - String url = ifsUrl + "/api/customer/info"; - Map params = new HashMap<>(); - params.put("site", site); - if (customerId != null) { - params.put("customerId", customerId); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-6 客户地址信息查询 - */ - public ResponseData getCustomerAddress(String site, String customerId, String addressId) { - String url = ifsUrl + "/api/customer/address"; - Map params = new HashMap<>(); - params.put("site", site); - if (customerId != null) { - params.put("customerId", customerId); - } - if (addressId != null) { - params.put("addressId", addressId); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-007采购订单查询 - */ - public ResponseData getPurchaseOrder(String site, String poNo) { - String url = ifsUrl + "/api/purchase/order"; - Map params = new HashMap<>(); - params.put("site", site); - if (poNo != null) { - params.put("poNo", poNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-8: 采购订单行查询 - */ - public ResponseData getPurchaseOrderLine(String site, String poNo, String lineNo) { - String url = ifsUrl + "/api/purchase/order/line"; - Map params = new HashMap<>(); - params.put("site", site); - if (poNo != null) { - params.put("poNo", poNo); - } - if (lineNo != null) { - params.put("lineNo", lineNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-9 检验结果记录查询 - */ - public ResponseData getInspectionResult(String site, String inspectionNo) { - String url = ifsUrl + "/api/inspection/result"; - Map params = new HashMap<>(); - params.put("site", site); - if (inspectionNo != null) { - params.put("inspectionNo", inspectionNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-010生产订单查询 - */ - public ResponseData getProductionOrder(String site, String woNo) { - String url = ifsUrl + "/api/production/order"; - Map params = new HashMap<>(); - params.put("site", site); - if (woNo != null) { - params.put("woNo", woNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-11 生产订单物料查询 - */ - public ResponseData getProductionOrderMaterial(String site, String woNo) { - String url = ifsUrl + "/api/production/order/material"; - Map params = new HashMap<>(); - params.put("site", site); - if (woNo != null) { - params.put("woNo", woNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-014采购订单行物料查询 - */ - public ResponseData getPurchaseOrderLineMaterial(String site, String poNo, String lineNo) { - String url = ifsUrl + "/api/purchase/order/line/material"; - Map params = new HashMap<>(); - params.put("site", site); - if (poNo != null) { - params.put("poNo", poNo); - } - if (lineNo != null) { - params.put("lineNo", lineNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-15terial Requisition查询 - */ - public ResponseData getMaterialRequisition(String site, String mrNo) { - String url = ifsUrl + "/api/material/requisition"; - Map params = new HashMap<>(); - params.put("site", site); - if (mrNo != null) { - params.put("mrNo", mrNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-16terial Requisition Material Line查询 - */ - public ResponseData getMaterialRequisitionLine(String site, String mrNo) { - String url = ifsUrl + "/api/material/requisition/line"; - Map params = new HashMap<>(); - params.put("site", site); - if (mrNo != null) { - params.put("mrNo", mrNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-017hipment查询 - */ - public ResponseData getShipment(String site, String shipmentNo) { - String url = ifsUrl + "/api/shipment"; - Map params = new HashMap<>(); - params.put("site", site); - if (shipmentNo != null) { - params.put("shipmentNo", shipmentNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-18: Shipment Line查询 - */ - public ResponseData getShipmentLine(String site, String shipmentNo) { - String url = ifsUrl + "/api/shipment/line"; - Map params = new HashMap<>(); - params.put("site", site); - if (shipmentNo != null) { - params.put("shipmentNo", shipmentNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-019: Customer Order查询 - */ - public ResponseData getCustomerOrder(String site, String coNo) { - String url = ifsUrl + "/api/customer/order"; - Map params = new HashMap<>(); - params.put("site", site); - if (coNo != null) { - params.put("coNo", coNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-020ustomer Order Line查询 - */ - public ResponseData getCustomerOrderLine(String site, String coNo) { - String url = ifsUrl + "/api/customer/order/line"; - Map params = new HashMap<>(); - params.put("site", site); - if (coNo != null) { - params.put("coNo", coNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-021 RMA查询 - */ - public ResponseData getRma(String site, String rmaNo) { - String url = ifsUrl + "/api/rma"; - Map params = new HashMap<>(); - params.put("site", site); - if (rmaNo != null) { - params.put("rmaNo", rmaNo); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSV-022MA Line查询 - */ - public ResponseData getRmaLine(String site, String rmaNo) { - String url = ifsUrl + "/api/rma/line"; - Map params = new HashMap<>(); - params.put("site", site); - if (rmaNo != null) { - params.put("rmaNo", rmaNo); - } - return HttpClientUtil.doGet(url, params); - } - - // ==================== API接口 (IFSA-xxx) ==================== - - /** - * IFSA-1: 库位信息API - */ - public ResponseData getLocationInfo(String site, String locationId) { - String url = ifsUrl + "/api/location/info"; - Map params = new HashMap<>(); - params.put("site", site); - if (locationId != null) { - params.put("locationId", locationId); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSA-2: 仓库信息API - */ - public ResponseData getWarehouseInfo(String site, String warehouseId) { - String url = ifsUrl + "/api/warehouse/info"; - Map params = new HashMap<>(); - params.put("site", site); - if (warehouseId != null) { - params.put("warehouseId", warehouseId); - } - return HttpClientUtil.doGet(url, params); - } - - /** - * IFSA-003采购订单接收 - */ - public ResponseData receivePurchaseOrder(Object receiveData) { - String url = ifsUrl + "/api/purchase/order/receive"; - return HttpClientUtil.doPostByRaw(url, receiveData); - } - - /** - * IFSA-04采购订单接收单取消 - */ - public ResponseData cancelPurchaseOrderReceive(Object cancelData) { - String url = ifsUrl + "/api/purchase/order/receive/cancel"; - return HttpClientUtil.doPostByRaw(url, cancelData); - } - - /** - * IFSA-005购订单检验合格入库 - */ - public ResponseData qualifiedInbound(Object inboundData) { - String url = ifsUrl + "/api/purchase/order/qualified/inbound"; - return HttpClientUtil.doPostByRaw(url, inboundData); - } - - /** - * IFSA-006生产订单发料 - */ - public ResponseData issueProductionOrder(Object issueData) { - String url = ifsUrl + "/api/production/order/issue"; - return HttpClientUtil.doPostByRaw(url, issueData); - } - - /** - * IFSA-007生产订单退料 - */ - public ResponseData returnProductionOrder(Object returnData) { - String url = ifsUrl + "/api/production/order/return"; - return HttpClientUtil.doPostByRaw(url, returnData); - } - - /** - * IFSA-008生产订单入库 - */ - public ResponseData inboundProductionOrder(Object inboundData) { - String url = ifsUrl + "/api/production/order/inbound"; - return HttpClientUtil.doPostByRaw(url, inboundData); - } - - /** - * IFSA-009生产订单退库 - */ - public ResponseData returnProductionInbound(Object returnData) { - String url = ifsUrl + "/api/production/order/inbound/return"; - return HttpClientUtil.doPostByRaw(url, returnData); - } - - /** - * IFSA-10 委外PO发料(包含预留) - */ - public ResponseData issueOutsourcePO(Object issueData) { - String url = ifsUrl + "/api/outsource/po/issue"; - return HttpClientUtil.doPostByRaw(url, issueData); - } - - /** - * IFSA-011委外PO退料 - */ - public ResponseData returnOutsourcePO(Object returnData) { - String url = ifsUrl + "/api/outsource/po/return"; - return HttpClientUtil.doPostByRaw(url, returnData); - } - - /** - * IFSA-12terial Requisition发料(包含预留) - */ - public ResponseData issueMaterialRequisition(Object issueData) { - String url = ifsUrl + "/api/material/requisition/issue"; - return HttpClientUtil.doPostByRaw(url, issueData); - } - - /** - * IFSA-13terial Requisition退料 - */ - public ResponseData returnMaterialRequisition(Object returnData) { - String url = ifsUrl + "/api/material/requisition/return"; - return HttpClientUtil.doPostByRaw(url, returnData); - } - - /** - * IFSA-014基于Shipment的Reserve/Create Pick List/Report Picking - */ - public ResponseData processShipmentPicking(Object pickingData) { - String url = ifsUrl + "/api/shipment/picking"; - return HttpClientUtil.doPostByRaw(url, pickingData); - } - - /** - * IFSA-016销售订单发货 - */ - public ResponseData deliverSalesOrder(Object deliveryData) { - String url = ifsUrl + "/api/sales/order/deliver"; - return HttpClientUtil.doPostByRaw(url, deliveryData); - } - - /** - * IFSA-019MA处理 - 入库 - */ - public ResponseData processRmaInbound(Object rmaData) { - String url = ifsUrl + "/api/rma/inbound"; - return HttpClientUtil.doPostByRaw(url, rmaData); - } - - /** - * IFSA-020MA处理 - 报废 - */ - public ResponseData processRmaScrap(Object rmaData) { - String url = ifsUrl + "/api/rma/scrap"; - return HttpClientUtil.doPostByRaw(url, rmaData); - } - - /** - * IFSA-21: Execute - */ - public ResponseData executeTask(Object executeData) { - String url = ifsUrl + "/api/execute"; - return HttpClientUtil.doPostByRaw(url, executeData); - } - - /** - * IFSA-022 */ - public ResponseData moveInventory(Object moveData) { - String url = ifsUrl + "/api/inventory/move"; - return HttpClientUtil.doPostByRaw(url, moveData); - } - - /** - * IFSA-23ceive from Transit - */ - public ResponseData receiveFromTransit(Object receiveData) { - String url = ifsUrl + "/api/transit/receive"; - return HttpClientUtil.doPostByRaw(url, receiveData); - } - - /** - * IFSA-024 */ - public ResponseData scrapInventory(Object scrapData) { - String url = ifsUrl + "/api/inventory/scrap"; - return HttpClientUtil.doPostByRaw(url, scrapData); - } - - /** - * IFSA-25: 其他入库 - */ - public ResponseData otherInbound(Object inboundData) { - String url = ifsUrl + "/api/inventory/other/inbound"; - return HttpClientUtil.doPostByRaw(url, inboundData); - } - - /** - * IFSA-26: 其他出库 - */ - public ResponseData otherOutbound(Object outboundData) { - String url = ifsUrl + "/api/inventory/other/outbound"; - return HttpClientUtil.doPostByRaw(url, outboundData); - } - - /** - * IFSA-027 */ - public ResponseData inventoryGain(Object gainData) { - String url = ifsUrl + "/api/inventory/gain"; - return HttpClientUtil.doPostByRaw(url, gainData); - } - - /** - * IFSA-028 */ - public ResponseData inventoryLoss(Object lossData) { - String url = ifsUrl + "/api/inventory/loss"; - return HttpClientUtil.doPostByRaw(url, lossData); - } - - /** - * IFSA-029hange WDR - */ - public ResponseData changeWdr(Object wdrData) { - String url = ifsUrl + "/api/wdr/change"; - return HttpClientUtil.doPostByRaw(url, wdrData); - } - - /** - * IFSA-030: Change Availability Control ID - */ - public ResponseData changeAvailabilityControlId(Object controlData) { - String url = ifsUrl + "/api/availability/control/change"; - return HttpClientUtil.doPostByRaw(url, controlData); - } - - /** - * IFSA-031: Change Expiration Date - */ - public ResponseData changeExpirationDate(Object expirationData) { - String url = ifsUrl + "/api/expiration/date/change"; - return HttpClientUtil.doPostByRaw(url, expirationData); - } - -} diff --git a/src/main/java/com/gaotao/modules/base/service/Impl/FontServiceImpl.java b/src/main/java/com/gaotao/modules/base/service/Impl/FontServiceImpl.java index 36232c2..b3a0f5f 100644 --- a/src/main/java/com/gaotao/modules/base/service/Impl/FontServiceImpl.java +++ b/src/main/java/com/gaotao/modules/base/service/Impl/FontServiceImpl.java @@ -22,8 +22,8 @@ public class FontServiceImpl implements FontService { // 中文字体映射 FONT_FILE_MAPPING.put("Microsoft YaHei", "MSYH.TTF"); FONT_FILE_MAPPING.put("微软雅黑", "MSYH.TTF"); - FONT_FILE_MAPPING.put("SimSun", "SIMSUN.TTC"); - FONT_FILE_MAPPING.put("宋体", "SIMSUN.TTC"); + FONT_FILE_MAPPING.put("SimSun", "SIMSUN.TTF"); + FONT_FILE_MAPPING.put("宋体", "SIMSUN.TTF"); FONT_FILE_MAPPING.put("SimHei", "SIMHEI.TTF"); FONT_FILE_MAPPING.put("黑体", "SIMHEI.TTF"); FONT_FILE_MAPPING.put("KaiTi", "KAITI.TTF"); diff --git a/src/main/java/com/gaotao/modules/base/utils/ZplGenerator.java b/src/main/java/com/gaotao/modules/base/utils/ZplGenerator.java index 93070fd..cc5999e 100644 --- a/src/main/java/com/gaotao/modules/base/utils/ZplGenerator.java +++ b/src/main/java/com/gaotao/modules/base/utils/ZplGenerator.java @@ -208,9 +208,31 @@ public class ZplGenerator { // 设置字符编码 fontCmd.append("^CI28"); - // 根据字体族选择字体 + // 字体与字母映射,默认ARIAL为A + Map fontLetterMap = new HashMap<>(); + fontLetterMap.put("ARIAL.TTF", "A"); + fontLetterMap.put("MSYH.TTF", "B"); + fontLetterMap.put("SIMSUN.TTC", "C"); + fontLetterMap.put("SIMHEI.TTF", "D"); + fontLetterMap.put("KAITI.TTF", "E"); + fontLetterMap.put("SIMFANG.TTF", "F"); + fontLetterMap.put("TIMES.TTF", "G"); + fontLetterMap.put("COUR.TTF", "H"); + fontLetterMap.put("HELV.TTF", "I"); + fontLetterMap.put("VERDANA.TTF", "J"); + fontLetterMap.put("GEORGIA.TTF", "K"); + fontLetterMap.put("TAHOMA.TTF", "L"); + fontLetterMap.put("TREBUC.TTF", "M"); + fontLetterMap.put("LUCON.TTF", "N"); + fontLetterMap.put("IMPACT.TTF", "O"); + fontLetterMap.put("COMIC.TTF", "P"); + fontLetterMap.put("PALA.TTF", "Q"); + fontLetterMap.put("GARA.TTF", "R"); + fontLetterMap.put("BOOKOS.TTF", "S"); + String fontFamily = element.getFontFamily(); String fontFile = null; + String fontLetter = "A"; // 默认A if (fontFamily != null && !"default".equals(fontFamily)) { // 优先使用FontService获取字体文件 @@ -218,27 +240,29 @@ public class ZplGenerator { fontFile = fontService.getFontFilePath(fontFamily); log.debug("通过FontService获取字体文件: {} -> {}", fontFamily, fontFile); } - // 如果FontService没有找到,使用静态映射 if (fontFile == null) { fontFile = mapFontFamilyToFile(fontFamily); log.debug("通过静态映射获取字体文件: {} -> {}", fontFamily, fontFile); } - if (fontFile != null) { - fontCmd.append(" ^CWJ,E:").append(fontFile); + fontLetter = fontLetterMap.getOrDefault(fontFile, "A"); + fontCmd.append(" ^CW").append(fontLetter).append(",E:").append(fontFile); } else { - // 使用系统默认字体 - fontCmd.append(" ^CWJ,E:ARIAL.TTF"); + fontCmd.append(" ^CWA,E:ARIAL.TTF"); log.warn("未找到字体文件映射,使用默认字体: {}", fontFamily); } } else { - // 默认使用ARIAL.TTF - fontCmd.append(" ^CWJ,E:ARIAL.TTF"); + fontCmd.append(" ^CWA,E:ARIAL.TTF"); } - // 设置字体大小 - fontCmd.append(" ^CFJ,").append(fontSize); + // 设置字体大小,中文字体用J,其它用对应字母 + if (fontFile != null && (fontFile.equals("MSYH.TTF") || fontFile.equals("SIMSUN.TTC") || fontFile.equals("SIMHEI.TTF") + || fontFile.equals("KAITI.TTF") || fontFile.equals("SIMFANG.TTF"))) { + fontCmd.append(" ^CFJ,").append(fontSize); + } else { + fontCmd.append(" ^CF").append(fontLetter).append(",").append(fontSize); + } return fontCmd.toString(); } @@ -255,7 +279,7 @@ public class ZplGenerator { return "MSYH.TTF"; case "SimSun": case "宋体": - return "SIMSUN.TTC"; + return "SIMSUN.TTF"; case "SimHei": case "黑体": return "SIMHEI.TTF"; diff --git a/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java b/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java index 07fcb0b..9d85dfd 100644 --- a/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java +++ b/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java @@ -23,7 +23,6 @@ import com.gaotao.modules.trans.service.TransDetailService; import com.gaotao.modules.trans.service.TransDetailSubService; import com.gaotao.modules.trans.service.TransHeaderService; import com.gaotao.modules.trans.service.TransNoControlService; -import com.gaotao.modules.warehouse.entity.InventoryStock; import com.gaotao.modules.warehouse.service.InventoryStockService; import jakarta.transaction.Transactional; import org.apache.shiro.SecurityUtils; @@ -56,8 +55,6 @@ public class PoServiceImpl extends ServiceImpl implemen private HandlingUnitDetailService handlingUnitDetailService; @Autowired private AgvClientUtil agvClientUtil; - @Autowired - private IfsClientUtil ifsClientUtil; @Value("${custom.ifs-url}") private String ifsUrl; @@ -67,7 +64,6 @@ public class PoServiceImpl extends ServiceImpl implemen @Override public List> getPoList(PurchaseOrderDto purchaseOrder) { try { - // 使用IfsClientUtil获取PO数据 // 注意:这里应该根据实际的IFS接口调用方式进行调整 // 如果需要获取多行数据,可能需要先获取PO头,再获取行数据 Map params = Map.of( @@ -100,171 +96,6 @@ public class PoServiceImpl extends ServiceImpl implemen } } - private ResponseData testIfsClientUtil() { - ResponseData ifsResponse = new ResponseData(); - ifsResponse.setSuccess(true); - ifsResponse.setCode("SUCCESS"); - ifsResponse.setMsg("模拟IFS采购订单成功"); - - java.util.List> list = new java.util.ArrayList<>(); - - java.util.Map po1 = new java.util.HashMap<>(); - po1.put("site", "1"); - po1.put("poNumber", "PO00001"); - po1.put("orderNo", "ORD00001"); - po1.put("lineNo", "1"); - po1.put("relNo", "R001"); - po1.put("wdr", "WDR001"); - po1.put("partNo", "MAT001"); - po1.put("partDesc", "物料A"); - po1.put("unit", "PCS"); - po1.put("orderQty", new java.math.BigDecimal(100)); - po1.put("receivedQty", new java.math.BigDecimal(20)); - po1.put("unitPerBox", new java.math.BigDecimal(10)); - po1.put("needHandlingUnit", "Y"); - po1.put("needCheck", "N"); - po1.put("needPallet", "Y"); - po1.put("warehouseType", "AUTO"); - po1.put("workshopFlag", "N"); - po1.put("cuttingFlag", "N"); - - java.util.Map po2 = new java.util.HashMap<>(); - po2.put("site", "2"); - po2.put("poNumber", "PO00002"); - po2.put("orderNo", "ORD00002"); - po2.put("lineNo", "2"); - po2.put("relNo", "R002"); - po2.put("wdr", "WDR002"); - po2.put("partNo", "MAT002"); - po2.put("partDesc", "物料B"); - po2.put("unit", "BOX"); - po2.put("orderQty", new java.math.BigDecimal(50)); - po2.put("receivedQty", new java.math.BigDecimal(10)); - po2.put("unitPerBox", new java.math.BigDecimal(5)); - po2.put("needHandlingUnit", "N"); - po2.put("needCheck", "Y"); - po2.put("needPallet", "N"); - po2.put("warehouseType", "MANUAL"); - po2.put("workshopFlag", "Y"); - po2.put("cuttingFlag", "Y"); - - list.add(po1); - list.add(po2); - - ifsResponse.setObj(list); - ifsResponse.setCount(list.size()); - return ifsResponse; - } - - /** - * 解析IFS返回的PO数据 - */ - @SuppressWarnings("unchecked") - private List parseIFSPOData(Object ifsData) { - List poList = new ArrayList<>(); - try { - if (ifsData == null) { - log.warn("IFS返回数据为空"); - return poList; - } - // 假设IFS返回的是JSON数组格式 - if (ifsData instanceof List rawList) { - for (Object item : rawList) { - if (item instanceof Map) { - Map poData = (Map) item; - PurchaseOrderDto po = createPurchaseOrderDto(poData); - poList.add(po); - } - } - } else { - log.warn("IFS返回数据格式不正确,期望List类型,实际类型: {}", ifsData.getClass().getSimpleName()); - } - - log.info("解析IFS PO数据完成,共{}条记录", poList.size()); - return poList; - } catch (Exception e) { - log.error("解析IFS PO数据异常: {}", e.getMessage()); - throw new XJException("解析PO数据失败: " + e.getMessage()); - } - } - - /** - * 创建PurchaseOrderDto对象 - */ - private PurchaseOrderDto createPurchaseOrderDto(Map poData) { - PurchaseOrderDto po = new PurchaseOrderDto(); - try { - // 映射IFS字段到PO实体 - 安全地处理null值 - po.setSite(getStringValue(poData, "site")); - po.setPoNumber(getStringValue(poData, "poNumber")); - po.setOrderNo(getStringValue(poData, "orderNo")); - po.setLineNo(getStringValue(poData, "lineNo")); - po.setRelNo(getStringValue(poData, "relNo")); - po.setWdr(getStringValue(poData, "wdr")); - po.setPartNo(getStringValue(poData, "partNo")); - po.setDesc(getStringValue(poData, "partDesc")); - po.setUnit(getStringValue(poData, "unit")); - - // 数量信息 - 安全地处理数值转换 - po.setQty(getBigDecimalValue(poData, "orderQty", BigDecimal.ZERO)); - po.setRecvQty(getBigDecimalValue(poData, "receivedQty", BigDecimal.ZERO)); - po.setThisRecvQty(po.getQty().subtract(po.getRecvQty())); // 待接收数量 - po.setUnitPerBox(getBigDecimalValue(poData, "unitPerBox", BigDecimal.ONE)); - - // 业务控制字段(从物料主数据获取) - po.setNeedHandlingUnit(getStringValue(poData, "needHandlingUnit", "N")); - po.setNeedCheck(getStringValue(poData, "needCheck", "N")); - po.setNeedPallet(getStringValue(poData, "needPallet", "N")); - po.setWarehouseType(getStringValue(poData, "warehouseType", "MANUAL")); - po.setWorkshopFlag(getStringValue(poData, "workshopFlag", "N")); - po.setCuttingFlag(getStringValue(poData, "cuttingFlag", "N")); - } catch (Exception e) { - log.error("创建PurchaseOrderDto对象异常: {}", e.getMessage()); - throw new RuntimeException("创建PO对象失败: " + e.getMessage()); - } - return po; - } - - /** - * 安全地获取字符串值 - */ - private String getStringValue(Map map, String key) { - return getStringValue(map, key, null); - } - - /** - * 安全地获取字符串值,带默认值 - */ - private String getStringValue(Map map, String key, String defaultValue) { - Object value = map.get(key); - if (value == null) { - return defaultValue; - } - return String.valueOf(value); - } - - /** - * 安全地获取BigDecimal值 - */ - private BigDecimal getBigDecimalValue(Map map, String key, BigDecimal defaultValue) { - Object value = map.get(key); - if (value == null) { - return defaultValue; - } - try { - if (value instanceof BigDecimal) { - return (BigDecimal) value; - } else if (value instanceof Number) { - return new BigDecimal(value.toString()); - } else { - return new BigDecimal(String.valueOf(value)); - } - } catch (NumberFormatException e) { - log.warn("无法转换{}为BigDecimal,使用默认值: {}", value, defaultValue); - return defaultValue; - } - } - @Override @Transactional public void saveTrans(TransDetailDto inData) { @@ -651,7 +482,7 @@ public class PoServiceImpl extends ServiceImpl implemen log.info("同步接收记录到IFS,PO号: {}", inData.getPoNo()); // 使用IfsClientUtil同步接收记录 - ResponseData ifsResponse = ifsClientUtil.receivePurchaseOrder(ifsRequest); + ResponseData ifsResponse = null; if (ifsResponse != null && "SUCCESS".equals(ifsResponse.getCode())) { log.info("IFS同步成功,PO号: {}", inData.getPoNo());