diff --git a/src/main/java/com/gaotao/modules/api/entity/issueAndReturnVo/InventoryPartVo.java b/src/main/java/com/gaotao/modules/api/entity/issueAndReturnVo/InventoryPartVo.java new file mode 100644 index 00000000..64dca41d --- /dev/null +++ b/src/main/java/com/gaotao/modules/api/entity/issueAndReturnVo/InventoryPartVo.java @@ -0,0 +1,17 @@ +package com.gaotao.modules.api.entity.issueAndReturnVo; + +import lombok.Data; + +@Data +public class InventoryPartVo { + private String contract; + private String description; + private String netVolume; + private String netWeight; + private String partNo; + private String partType; + private String typeDesignation; + private String unitMeasure; + /*耐久天数*/ + private int durabilityDays; +} diff --git a/src/main/java/com/gaotao/modules/api/service/IfsApiIssueAndReturnService.java b/src/main/java/com/gaotao/modules/api/service/IfsApiIssueAndReturnService.java new file mode 100644 index 00000000..ef8b802f --- /dev/null +++ b/src/main/java/com/gaotao/modules/api/service/IfsApiIssueAndReturnService.java @@ -0,0 +1,11 @@ +package com.gaotao.modules.api.service; + +import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo; + +import java.util.List; + +public interface IfsApiIssueAndReturnService { + + List getInventoryPart(String partNo, String site); + +} diff --git a/src/main/java/com/gaotao/modules/api/service/impl/IfsApiIssueAndReturnServiceImpl.java b/src/main/java/com/gaotao/modules/api/service/impl/IfsApiIssueAndReturnServiceImpl.java new file mode 100644 index 00000000..19ba2dee --- /dev/null +++ b/src/main/java/com/gaotao/modules/api/service/impl/IfsApiIssueAndReturnServiceImpl.java @@ -0,0 +1,48 @@ +package com.gaotao.modules.api.service.impl; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.gaotao.common.exception.XJException; +import com.gaotao.common.utils.HttpUtils; +import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo; +import com.gaotao.modules.api.service.IfsApiIssueAndReturnService; +import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo; +import jakarta.transaction.Transactional; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Service +public class IfsApiIssueAndReturnServiceImpl implements IfsApiIssueAndReturnService { + + @Value("${custom.ifs-url}") + private String ifsUrl; + @Value("${custom.ifs-ifsDBName}") + private String ifsDBName; + @Value("${custom.ifs-domainUserID}") + private String domainUserID; + + @Override + public List getInventoryPart(String partNo, String site){ + try{ + Map params = Map.of( + "ifsDBName", ifsDBName, + "domainUserID", domainUserID, + "ifsSiteID", site, + "ifsPartNo", partNo + ); + ObjectMapper objectMapper = new ObjectMapper(); + String jsonBody = objectMapper.writeValueAsString(params); + String ifsResponse = HttpUtils.doGetWithBody(ifsUrl+"InventoryPart",jsonBody,null); + ObjectMapper mapper = new ObjectMapper(); + List inventoryPartVos = mapper.readValue(ifsResponse, new TypeReference>() { + }); + + return inventoryPartVos; + }catch (Exception e){ + throw new XJException("获取IFS物料列表失败: " + e.getMessage()); + } + } +} diff --git a/src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java b/src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java index d26877d5..49c00c59 100644 --- a/src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java +++ b/src/main/java/com/gaotao/modules/production/controller/ProductionReturnController.java @@ -5,8 +5,10 @@ package com.gaotao.modules.production.controller; */ import com.gaotao.common.utils.R; +import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo; import com.gaotao.modules.notify.entity.vo.ShopOrderVo; import com.gaotao.modules.production.entity.dto.ProductionReturnDto; +import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo; import com.gaotao.modules.production.service.ProductionIssueService; import com.gaotao.modules.production.service.ProductionReturnService; import org.springframework.beans.factory.annotation.Autowired; @@ -36,4 +38,26 @@ public class ProductionReturnController { return R.error(e.getMessage()); } } + + /** + * 获取工单发料记录列表(直接退料) + */ + @PostMapping("/getIssueForShopOrder") + public R getIssueForShopOrder(@RequestBody ProductionReturnDto dto){ + try { + List issueForShopOrder = productionReturnService.getIssueForShopOrder(dto.getWorkOrderNo(), dto.getSite()); + return R.ok().put("issueForShopOrder", issueForShopOrder); + } catch (Exception e) { + return R.error(e.getMessage()); + } + } + + /** + * 获取物料库存信息 + */ + @PostMapping("/getInventoryPart") + public R getInventoryPart(@RequestBody ProductionReturnDto dto){ + List inventoryPart = productionReturnService.getInventoryPart(dto.getPartNo(), dto.getSite()); + return R.ok().put("inventoryPart", inventoryPart); + } } diff --git a/src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java b/src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java index f1ec4ba1..2bc9c307 100644 --- a/src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java +++ b/src/main/java/com/gaotao/modules/production/entity/dto/ProductionReturnDto.java @@ -50,4 +50,9 @@ public class ProductionReturnDto implements Serializable { */ private String workOrderNo; + /** + * 物料编号 + */ + private String partNo; + } diff --git a/src/main/java/com/gaotao/modules/production/entity/vo/IssueForShopOrderVo.java b/src/main/java/com/gaotao/modules/production/entity/vo/IssueForShopOrderVo.java index 8d7f50c0..662b9cd4 100644 --- a/src/main/java/com/gaotao/modules/production/entity/vo/IssueForShopOrderVo.java +++ b/src/main/java/com/gaotao/modules/production/entity/vo/IssueForShopOrderVo.java @@ -1,26 +1,80 @@ package com.gaotao.modules.production.entity.vo; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.math.BigDecimal; @Data public class IssueForShopOrderVo { - private String SOURCE_REF1; - private String SOURCE_REF2; - private String SOURCE_REF3; - private String SOURCE_REF4; - private long TRANSACTION_ID; - private long ACCOUNTING_ID; - private String CONTRACT; - private String PART_NO; - private String LOCATION_NO; - private String LOT_BATCH_NO; - private String SERIAL_NO; - private String WAIV_DEV_REJ_NO; - private int ACTIVITY_SEQ; - private String ENG_CHG_LEVEL; - private BigDecimal QUANTITY; - private BigDecimal QTY_REVERSED; - private long HANDLING_UNIT_ID; -} + + // 对应JSON中的 SOURCE_REF1(使用@JsonProperty指定JSON字段名,避免映射错误) + @JsonProperty("SOURCE_REF1") + private String sourceRef1; + + // 对应JSON中的 SOURCE_REF2 + @JsonProperty("SOURCE_REF2") + private String sourceRef2; + + // 对应JSON中的 SOURCE_REF3 + @JsonProperty("SOURCE_REF3") + private String sourceRef3; + + // 对应JSON中的 SOURCE_REF4(JSON中为字符串"1",故用String类型;若实际为数字可改为Integer) + @JsonProperty("SOURCE_REF4") + private String sourceRef4; + + // 对应JSON中的 TRANSACTION_ID(整数型,用Long避免超出Integer范围) + @JsonProperty("TRANSACTION_ID") + private Long transactionId; + + // 对应JSON中的 ACCOUNTING_ID(整数型,用Long避免超出Integer范围) + @JsonProperty("ACCOUNTING_ID") + private Long accountingId; + + // 对应JSON中的 CONTRACT(字符串类型,如"55") + @JsonProperty("CONTRACT") + private String contract; + + // 对应JSON中的 PART_NO(物料编号) + @JsonProperty("PART_NO") + private String partNo; + + // 对应JSON中的 LOCATION_NO(库位编号) + @JsonProperty("LOCATION_NO") + private String locationNo; + + // 对应JSON中的 LOT_BATCH_NO(批次号) + @JsonProperty("LOT_BATCH_NO") + private String lotBatchNo; + + // 对应JSON中的 SERIAL_NO(序列号) + @JsonProperty("SERIAL_NO") + private String serialNo; + + // 对应JSON中的 WAIV_DEV_REJ_NO(豁免/偏差/拒收编号,此处为"*") + @JsonProperty("WAIV_DEV_REJ_NO") + private String waivDevRejNo; + + // 对应JSON中的 ACTIVITY_SEQ(活动序列,整数型) + @JsonProperty("ACTIVITY_SEQ") + private Integer activitySeq; + + // 对应JSON中的 ENG_CHG_LEVEL(工程变更等级,字符串类型) + @JsonProperty("ENG_CHG_LEVEL") + private String engChgLevel; + + // 对应JSON中的 QUANTITY(数量,含小数,用BigDecimal保证精度,避免浮点误差) + @JsonProperty("QUANTITY") + private BigDecimal quantity; + + // 对应JSON中的 QTY_REVERSED(反向数量,含小数,用BigDecimal) + @JsonProperty("QTY_REVERSED") + private BigDecimal qtyReversed; + + // 对应JSON中的 HANDLING_UNIT_ID(处理单元ID,整数型) + @JsonProperty("HANDLING_UNIT_ID") + private Integer handlingUnitId; + + +} \ No newline at end of file diff --git a/src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java b/src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java index dd69467d..1efdec0c 100644 --- a/src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java +++ b/src/main/java/com/gaotao/modules/production/service/ProductionReturnService.java @@ -1,5 +1,6 @@ package com.gaotao.modules.production.service; +import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo; import com.gaotao.modules.notify.entity.vo.ShopOrderVo; import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo; @@ -21,4 +22,6 @@ public interface ProductionReturnService { * @return */ List getIssueForShopOrder(String workOrderNo, String site); + + List getInventoryPart(String partNo, String site); } diff --git a/src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java b/src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java index cd04f60d..c0c472c7 100644 --- a/src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java +++ b/src/main/java/com/gaotao/modules/production/service/impl/ProductionReturnServiceImpl.java @@ -4,11 +4,15 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.gaotao.common.exception.XJException; import com.gaotao.common.utils.HttpUtils; +import com.gaotao.modules.api.entity.issueAndReturnVo.InventoryPartVo; +import com.gaotao.modules.api.service.IfsApiIssueAndReturnService; import com.gaotao.modules.notify.entity.vo.ShopOrderMaterialVo; import com.gaotao.modules.notify.entity.vo.ShopOrderVo; import com.gaotao.modules.production.entity.vo.IssueForShopOrderVo; import com.gaotao.modules.production.service.ProductionIssueService; import com.gaotao.modules.production.service.ProductionReturnService; +import jakarta.transaction.Transactional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -25,6 +29,8 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { private String ifsDBName; @Value("${custom.ifs-domainUserID}") private String domainUserID; + @Autowired + private IfsApiIssueAndReturnService ifsApiIssueAndReturnService; @Override public List getReturnWorkOrderInfo(String workOrderNo, String site) { @@ -82,6 +88,13 @@ public class ProductionReturnServiceImpl implements ProductionReturnService { } + @Override + @Transactional + public List getInventoryPart(String partNo, String site) { + List part = ifsApiIssueAndReturnService.getInventoryPart(partNo, site); + return part; + } + public boolean validateWorkOrderStatus(String workOrderNo, String site) { // 工单状态为已下达或已开工时允许发料 return true;