From 65821c62abc156bc0142ec405c5dc58da4e2296c Mon Sep 17 00:00:00 2001 From: Rui_Li <877258667@qq.com> Date: Fri, 17 Jan 2025 14:45:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eapi=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/spring/ifs/api/BaseSearchApi.java | 87 ++++++++++++++++++ .../com/spring/ifs/api/BaseSearchApiTest.java | 89 +++++++++++++++++++ .../com/spring/ifs/bean/BaseSearchBean.java | 43 +++++++++ .../spring/ifs/bean/BaseSearchBeanTest.java | 50 ++++++++++- .../ifs/controller/TestIfsController.java | 46 ++++++++++ 5 files changed, 314 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/spring/ifs/api/BaseSearchApi.java b/src/main/java/com/spring/ifs/api/BaseSearchApi.java index fefc094a..7d0dc4aa 100644 --- a/src/main/java/com/spring/ifs/api/BaseSearchApi.java +++ b/src/main/java/com/spring/ifs/api/BaseSearchApi.java @@ -331,4 +331,91 @@ public class BaseSearchApi { return resultItems; } } + + /** + * @description: 根据条件查询库存件的成本价 + * @author LR + * @date 2025/1/17 11:36 + * @version 1.0 + */ + public static InventoryPartUnitCostSumVo getInventoryValueByPartNo(Server srv, String contract, String partNo) throws APException { + StringBuilder searchSql = new StringBuilder(); + searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT site, PART_NO, CONFIGURATION_ID, LOT_BATCH_NO, SERIAL_NO,"); + searchSql.append(" ifsapp.Inventory_Part_Unit_Cost_API.Get_Inventory_Value_By_Method(CONTRACT,PART_NO,CONFIGURATION_ID,LOT_BATCH_NO,SERIAL_NO) inventoryValue"); + searchSql.append(" FROM ifsapp.INVENTORY_PART_UNIT_COST_SUM pcs"); + searchSql.append(" WHERE pcs.CONTRACT = : contract AND pcs.PART_NO = :partNo AND pcs.CONFIGURATION_ID = '*'"); + //设置查询的入参 + Map inParam = new HashMap<>(); + inParam.put("contract", contract); + inParam.put("partNo", partNo); + //调用查询的通用方法 + RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam); + //判断能否返回 + if (recordCollection == null) { + return null; + } else { + //调用通用的处理方法 返回Map + Map resultMap = IfsConverterToMap.ConverterIfsToMap(recordCollection.get(0)); + InventoryPartUnitCostSumVo resultRow = new InventoryPartUnitCostSumVo(); + //设置参数 + resultRow.setIfsRowId(resultMap.get("IFSROWID")); + resultRow.setIfsRowVersion(resultMap.get("IFSROWVERSION")); + resultRow.setSite(resultMap.get("SITE")); + resultRow.setPartNo(resultMap.get("PART_NO")); + resultRow.setConfigurationId(resultMap.get("CONFIGURATION_ID")); + resultRow.setLotBatchNo(resultMap.get("LOT_BATCH_NO")); + resultRow.setSerialNo(resultMap.get("SERIAL_NO")); + resultRow.setInventoryValue(resultMap.get("INVENTORYVALUE")); + return resultRow; + } + } + + /** + * @description: 查询技术等级的属性列表 + * @author LR + * @date 2025/1/17 14:12 + * @version 1.0 + */ + public static List getTechnicalAttributesByCon(Server srv, String technicalSpecNo) throws APException { + StringBuilder searchSql = new StringBuilder(); + searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, TECHNICAL_SPEC_NO, TECHNICAL_CLASS, ATTRIB_NUMBER, ATTRIBUTE,"); + searchSql.append(" VALUE_NO, LOWER_LIMIT, UPPER_LIMIT, INFO, ALT_VALUE_NO, ALT_UNIT,"); + searchSql.append(" CASE WHEN objtype = 'TechnicalSpecNumeric' THEN 'Numeric'"); + searchSql.append(" WHEN objtype = 'TechnicalSpecAlphanum' THEN 'Alpha' ELSE '' END attributeType"); + searchSql.append(" FROM ifsapp.TECHNICAL_SPECIFICATION_BOTH"); + searchSql.append(" WHERE TECHNICAL_SPEC_NO = :technicalSpecNo"); + + //设置查询的入参 + Map inParam = new HashMap<>(); + inParam.put("technicalSpecNo", technicalSpecNo); + //调用查询的通用方法 + RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam); + //判断能否返回 + if (recordCollection == null) { + return new ArrayList<>(); + } else { + List technicalAttributes = new ArrayList<>(); + //处理结果集 + List> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection); + //获取数据转bean + for (int i = 0; i < resultList.size(); i++) { + Map tempMap = resultList.get(i); + TechnicalAttribute tempItem = new TechnicalAttribute(); + //设置参数 + tempItem.setIfsRowId(tempMap.get("IFSROWID")); + tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION")); + tempItem.setTechnicalSpecNo(tempMap.get("TECHNICAL_SPEC_NO")); + tempItem.setTechnicalClass(tempMap.get("TECHNICAL_CLASS")); + tempItem.setAttribute(tempMap.get("ATTRIBUTE")); + tempItem.setValueNo(tempMap.get("VALUE_NO")); + tempItem.setLowerLimit(tempMap.get("LOWER_LIMIT")); + tempItem.setUpperLimit(tempMap.get("UPPER_LIMIT")); + tempItem.setInfo(tempMap.get("INFO")); + tempItem.setAttributeType(tempMap.get("ATTRIBUTETYPE")); + //添加对象 + technicalAttributes.add(tempItem); + } + return technicalAttributes; + } + } } diff --git a/src/main/java/com/spring/ifs/api/BaseSearchApiTest.java b/src/main/java/com/spring/ifs/api/BaseSearchApiTest.java index 1bd22ceb..b1c5a3fb 100644 --- a/src/main/java/com/spring/ifs/api/BaseSearchApiTest.java +++ b/src/main/java/com/spring/ifs/api/BaseSearchApiTest.java @@ -3,6 +3,7 @@ package com.spring.ifs.api; import com.spring.ifs.data.*; import com.spring.ifs.utils.IfsConverterToMap; import com.spring.ifs.utils.IfsPlsqlUtils; +import com.spring.modules.part.vo.InventoryPartUnitCostSumVo; import ifs.fnd.ap.APException; import ifs.fnd.ap.RecordCollection; import ifs.fnd.ap.Server; @@ -325,4 +326,92 @@ public class BaseSearchApiTest { return resultItems; } } + + /** + * @description: 根据条件查询库存件的成本价 + * @author LR + * @date 2025/1/17 11:36 + * @version 1.0 + */ + public static InventoryValue getInventoryValueByPartNo(Server srv, String contract, String partNo) throws APException { + StringBuilder searchSql = new StringBuilder(); + searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT site, PART_NO, CONFIGURATION_ID, LOT_BATCH_NO, SERIAL_NO,"); + searchSql.append(" ifsapp.Inventory_Part_Unit_Cost_API.Get_Inventory_Value_By_Method(CONTRACT,PART_NO,CONFIGURATION_ID,LOT_BATCH_NO,SERIAL_NO) inventoryValue"); + searchSql.append(" FROM ifsapp.INVENTORY_PART_UNIT_COST_SUM pcs"); + searchSql.append(" WHERE pcs.CONTRACT = : contract AND pcs.PART_NO = :partNo AND pcs.CONFIGURATION_ID = '*'"); + //设置查询的入参 + Map inParam = new HashMap<>(); + inParam.put("contract", contract); + inParam.put("partNo", partNo); + //调用查询的通用方法 + RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam); + //判断能否返回 + if (recordCollection == null) { + return null; + } else { + //调用通用的处理方法 返回Map + Map resultMap = IfsConverterToMap.ConverterIfsToMap(recordCollection.get(0)); + InventoryValue resultRow = new InventoryValue(); + //设置参数 + resultRow.setIfsRowId(resultMap.get("IFSROWID")); + resultRow.setIfsRowVersion(resultMap.get("IFSROWVERSION")); + resultRow.setSite(resultMap.get("SITE")); + resultRow.setPartNo(resultMap.get("PART_NO")); + resultRow.setConfigurationId(resultMap.get("CONFIGURATION_ID")); + resultRow.setLotBatchNo(resultMap.get("LOT_BATCH_NO")); + resultRow.setSerialNo(resultMap.get("SERIAL_NO")); + resultRow.setInventoryValue(resultMap.get("INVENTORYVALUE")); + return resultRow; + } + } + + /** + * @description: 查询技术等级的属性列表 + * @author LR + * @date 2025/1/17 14:12 + * @version 1.0 + */ + public static List getTechnicalAttributesByCon(Server srv, String technicalSpecNo) throws APException { + StringBuilder searchSql = new StringBuilder(); + searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, TECHNICAL_SPEC_NO, TECHNICAL_CLASS, ATTRIB_NUMBER, ATTRIBUTE,"); + searchSql.append(" VALUE_NO, LOWER_LIMIT, UPPER_LIMIT, INFO, ALT_VALUE_NO, ALT_UNIT,"); + searchSql.append(" CASE WHEN objtype = 'TechnicalSpecNumeric' THEN 'Numeric'"); + searchSql.append(" WHEN objtype = 'TechnicalSpecAlphanum' THEN 'Alpha' ELSE '' END attributeType"); + searchSql.append(" FROM ifsapp.TECHNICAL_SPECIFICATION_BOTH"); + searchSql.append(" WHERE TECHNICAL_SPEC_NO = :technicalSpecNo"); + + //设置查询的入参 + Map inParam = new HashMap<>(); + inParam.put("technicalSpecNo", technicalSpecNo); + //调用查询的通用方法 + RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam); + //判断能否返回 + if (recordCollection == null) { + return new ArrayList<>(); + } else { + List technicalAttributes = new ArrayList<>(); + //处理结果集 + List> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection); + //获取数据转bean + for (int i = 0; i < resultList.size(); i++) { + Map tempMap = resultList.get(i); + TechnicalAttribute tempItem = new TechnicalAttribute(); + //设置参数 + tempItem.setIfsRowId(tempMap.get("IFSROWID")); + tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION")); + tempItem.setTechnicalSpecNo(tempMap.get("TECHNICAL_SPEC_NO")); + tempItem.setTechnicalClass(tempMap.get("TECHNICAL_CLASS")); + tempItem.setAttribute(tempMap.get("ATTRIBUTE")); + tempItem.setValueNo(tempMap.get("VALUE_NO")); + tempItem.setLowerLimit(tempMap.get("LOWER_LIMIT")); + tempItem.setUpperLimit(tempMap.get("UPPER_LIMIT")); + tempItem.setInfo(tempMap.get("INFO")); + tempItem.setAttributeType(tempMap.get("ATTRIBUTETYPE")); + //添加对象 + technicalAttributes.add(tempItem); + } + return technicalAttributes; + } + } + } \ No newline at end of file diff --git a/src/main/java/com/spring/ifs/bean/BaseSearchBean.java b/src/main/java/com/spring/ifs/bean/BaseSearchBean.java index 885b3f09..9c794ff1 100644 --- a/src/main/java/com/spring/ifs/bean/BaseSearchBean.java +++ b/src/main/java/com/spring/ifs/bean/BaseSearchBean.java @@ -2,6 +2,7 @@ package com.spring.ifs.bean; import com.spring.ifs.api.BaseSearchApi; import com.spring.ifs.api.IfsServer; +import com.spring.ifs.api.TechnicalClassApi; import com.spring.ifs.data.*; import com.spring.modules.base.vo.PersonnelLevelVo; import com.spring.modules.part.entity.PartInformationEntity; @@ -17,6 +18,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @description: 基础查询的实现类 @@ -146,5 +148,46 @@ public class BaseSearchBean { } + /** + * @description: 按照条件查询库存件的成本 + * @author LR + * @date 2025/1/17 11:40 + * @version 1.0 + */ + public InventoryPartUnitCostSumVo getInventoryValueByPartNo(Server srv, PartInformationEntity inData) throws APException { + //查询的参数 + String site = inData.getSite(); + String partNo = inData.getPartNo(); + logger.info("库存件cost value请求参数 域:"+site+",物料编码:"+partNo); + InventoryPartUnitCostSumVo resultRow = BaseSearchApi.getInventoryValueByPartNo(srv, site, partNo); + //判断null + if(resultRow == null) { + throw new APException("库存机按成本不存在!"); + } + logger.info("返回集合大小:"+resultRow.toString()); + return resultRow; + } + + /** + * @description: 按照条件查询技术等级的数据 + * @author LR + * @date 2025/1/17 13:20 + * @version 1.0 + */ + public List getTechnicalAttributesByCon(BaseSearchData inData) throws APException { + String username = inData.getIfsUsername(); + String password = inData.getIfsPassword(); + String keyRef = inData.getKeyRef(); + String luName = inData.getLuName() ; + //获取连接 + Server srv = ifsServer.getIfsServer(username, password); + //查询主表对应的信息 + Map resultMap = TechnicalClassApi.getTechnicalClass(srv, luName, keyRef); + //获取关联键 + String technicalSpecNo = resultMap.get("TECHNICAL_SPEC_NO"); + //查询技术等级属性的列表数据 + List resultList = BaseSearchApi.getTechnicalAttributesByCon(srv, technicalSpecNo); + return resultList; + } } diff --git a/src/main/java/com/spring/ifs/bean/BaseSearchBeanTest.java b/src/main/java/com/spring/ifs/bean/BaseSearchBeanTest.java index 4985169a..ce9ba22d 100644 --- a/src/main/java/com/spring/ifs/bean/BaseSearchBeanTest.java +++ b/src/main/java/com/spring/ifs/bean/BaseSearchBeanTest.java @@ -1,8 +1,12 @@ package com.spring.ifs.bean; +import com.spring.ifs.api.BaseSearchApi; import com.spring.ifs.api.BaseSearchApiTest; import com.spring.ifs.api.IfsServer; +import com.spring.ifs.api.TechnicalClassApi; import com.spring.ifs.data.*; +import com.spring.modules.part.entity.PartInformationEntity; +import com.spring.modules.part.vo.InventoryPartUnitCostSumVo; import ifs.fnd.ap.APException; import ifs.fnd.ap.Server; import org.slf4j.Logger; @@ -12,6 +16,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @description: 基础查询的实现类 @@ -159,6 +164,49 @@ public class BaseSearchBeanTest { return resultList; } + /** + * @description: 按照条件查询库存件的成本 + * @author LR + * @date 2025/1/17 11:40 + * @version 1.0 + */ + public InventoryValue getInventoryValueByPartNo(BaseSearchData inData) throws APException { + //查询的参数 + String site = inData.getSite(); + String partNo = inData.getPartNo(); + String username = inData.getIfsUsername(); + String password = inData.getIfsPassword(); + logger.info("库存件cost value请求参数 域:"+site+",物料编码:"+partNo); + //获取连接 + Server srv = ifsServer.getIfsServer(username, password); + InventoryValue resultRow = BaseSearchApiTest.getInventoryValueByPartNo(srv, site, partNo); + //判断null + if(resultRow == null) { + throw new APException("库存机按成本不存在!"); + } + logger.info("返回集合大小:"+resultRow.toString()); + return resultRow; + } - + /** + * @description: 按照条件查询技术等级的数据 + * @author LR + * @date 2025/1/17 13:20 + * @version 1.0 + */ + public List getTechnicalAttributesByCon(BaseSearchData inData) throws APException { + String username = inData.getIfsUsername(); + String password = inData.getIfsPassword(); + String keyRef = inData.getKeyRef(); + String luName = inData.getLuName() ; + //获取连接 + Server srv = ifsServer.getIfsServer(username, password); + //查询主表对应的信息 + Map resultMap = TechnicalClassApi.getTechnicalClass(srv, luName, keyRef); + //获取关联键 + String technicalSpecNo = resultMap.get("TECHNICAL_SPEC_NO"); + //查询技术等级属性的列表数据 + List resultList = BaseSearchApi.getTechnicalAttributesByCon(srv, technicalSpecNo); + return resultList; + } } \ No newline at end of file diff --git a/src/main/java/com/spring/ifs/controller/TestIfsController.java b/src/main/java/com/spring/ifs/controller/TestIfsController.java index da519d3a..d28ac273 100644 --- a/src/main/java/com/spring/ifs/controller/TestIfsController.java +++ b/src/main/java/com/spring/ifs/controller/TestIfsController.java @@ -6,6 +6,7 @@ import com.spring.modules.part.entity.APIEntity.RecipeIfsAlternative; import com.spring.modules.part.entity.APIEntity.RecipeIfsHeader; import com.spring.modules.part.entity.APIEntity.RecipeIfsItem; import ifs.fnd.ap.APException; +import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -37,6 +38,8 @@ public class TestIfsController { private ToolServiceBeanTest toolServiceBean; @Autowired private RecipeServiceBeanTest recipeServiceBean; + @Autowired + private ListableBeanFactory listableBeanFactory; /** @@ -149,6 +152,49 @@ public class TestIfsController { return resultMap; } + /** + * @description: 库存件成本查询 + * @author LR + * @date 2025/1/17 11:44 + * @version 1.0 + */ + @PostMapping("/getInventoryValueByPartNo") + public Object getInventoryValueByPartNo(@RequestBody BaseSearchData inData) throws APException { + Map resultMap = new HashMap(); + try { + InventoryValue returnRow = baseSearchBeanTest.getInventoryValueByPartNo(inData); + resultMap.put("obj", returnRow); + resultMap.put("code", 200); + resultMap.put("msg", "操作成功!"); + } catch (Exception e) { + resultMap.put("code", 400); + resultMap.put("msg", e.getMessage()); + } + return resultMap; + } + + /** + * @description: 按照条件查询技术等级的数据 + * @author LR + * @date 2025/1/17 13:18 + * @version 1.0 + */ + @PostMapping("/getTechnicalAttributesByCon") + public Object getTechnicalAttributesByCon(@RequestBody BaseSearchData inData) throws APException { + Map resultMap = new HashMap(); + try { + List returnlist = baseSearchBeanTest.getTechnicalAttributesByCon(inData); + resultMap.put("obj", returnlist); + resultMap.put("total", returnlist.size()); + resultMap.put("code", 200); + resultMap.put("msg", "操作成功!"); + } catch (Exception e) { + resultMap.put("code", 400); + resultMap.put("msg", e.getMessage()); + } + return resultMap; + } + /** * @description: 查询物料件 * @author LR