inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
@@ -178,7 +178,7 @@ @GetMapping("/getIfsOrder") public Result<?> getIfsOrder() { HashMap<String, Object> map = new HashMap<>(); map.put("LOCATION_NO", "1302;WG-04-001"); // map.put("LOCATION_NO", "1302;WG-04-001"); map.put("STATE_DB", "To be Inspected"); insOrderService.getIfsOrder(map, false); return Result.success(); inspect-server/src/main/java/com/ruoyi/inspect/dto/IfsPartPropsRecordDTO.java
@@ -6,8 +6,19 @@ @Data public class IfsPartPropsRecordDTO extends IfsPartPropsRecord { /** * é¶ä»¶å· */ private String partNo; /** * æ¹æ¬¡å· */ private String lotBatchNo; /** * IFSå */ private String contract; } inspect-server/src/main/java/com/ruoyi/inspect/dto/ReportPageDto.java
@@ -9,6 +9,9 @@ @Data public class ReportPageDto extends InsReport implements Serializable { @ApiModelProperty(value = "IFSå") private String contract; @ApiModelProperty(value = "å§æç¼å·") private String entrustCode; inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
@@ -82,7 +82,7 @@ jresult.put("data", new JSONArray()); JSONObject jsonObject = new JSONObject(); generateIfsStockQueryParams(jsonObject, ifsStockQueryDTO, ifsStockQueryDTO.getPage(), ifsStockQueryDTO.getLimit()); Result result = ifsApiUtils.getIfsStock(jsonObject.toJSONString()); Result result = ifsApiUtils.getIfsStock("ZTNS",jsonObject.toJSONString()); if (result.getCode() == 200) { JSONObject data = (JSONObject) JSON.toJSON(result.getData()); JSONArray array = new JSONArray(); inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java
@@ -42,9 +42,6 @@ @Autowired private IfsSplitOrderRecordMapper ifsSplitOrderRecordMapper; @Value("${ifs.contract}") public String contract; @Override @Transactional(rollbackFor = Exception.class) public boolean saveOrUpdateProps(IfsPartPropsRecordDTO ifsPartPropsRecord) { @@ -61,7 +58,7 @@ inAttrMap.put("SYSCODE", "LIMS"); inAttrMap.put("SYSMODEL", "åºåç©ææ¹æ¬¡å±æ§ä¿®æ¹"); HashMap<String, Object> batchInfoMap = new HashMap<>(); batchInfoMap.put("CONTRACT",contract);//å batchInfoMap.put("CONTRACT",ifsPartPropsRecord.getContract());//å batchInfoMap.put("PART_NO",ifsPartPropsRecord.getPartNo());//é¶ä»¶å· batchInfoMap.put("LOT_BATCH_NO",ifsPartPropsRecord.getLotBatchNo());//æ¹æ¬¡å· batchInfoMap.put("ATTR1",ifsPartPropsRecord.getDrumNo());//è½½å ·ç¼å· @@ -74,7 +71,7 @@ batchInfoMap.put("ATTR24","0");//åå²é¢çæ°é batchInfoMap.put("ACTION_TYPE",actionType);//æä½ç±»å inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap)); Result result = ifsApiUtils.importPartLotAttr(JSONUtil.toJsonStr(inAttrMap)); Result result = ifsApiUtils.importPartLotAttr(ifsPartPropsRecord.getContract(),JSONUtil.toJsonStr(inAttrMap)); if(result.getCode()!=200){ throw new RuntimeException("åºåç©ææ¹æ¬¡å±æ§æ´æ°å¤±è´¥ï¼"+result.getMessage()); } inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -25,6 +25,7 @@ import com.ruoyi.basic.pojo.StandardProductList; import com.ruoyi.basic.pojo.StructureItemParameter; import com.ruoyi.basic.pojo.StructureTestObject; import com.ruoyi.common.config.ifs.IfsProperties; import com.ruoyi.common.constant.InsOrderTypeConstants; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.domain.entity.User; @@ -561,7 +562,7 @@ */ @Override public void getIfsOrder(Map<String, Object> map, Boolean isSplitOrder) { List<Map<String, Object>> inventory = ifsApiUtils.getInventory(JSONUtil.toJsonStr(map)); List<Map<String, Object>> inventory = ifsApiUtils.getInventory(map); if (inventory.isEmpty()) { return; } @@ -807,6 +808,8 @@ ifsInventoryQuantity.setIsCopper(1); ifsInventoryQuantity.setIsQuarter(0); ifsInventoryQuantity.setInspectStatus(0); ifsInventoryQuantity.setOrderType(OrderType.RAW.getValue()); ifsInventoryQuantity.setMaterialProp("01Cu"); ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived()); ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas()); @@ -1204,7 +1207,7 @@ resultMap.put("SYSCODE", "LIMS"); resultMap.put("SYSMODEL", "ç»è®°éè´æ£éªç»æ"); resultMap.put("BATCH_INFO", resultList); Result result = ifsApiUtils.getProcurementResults(JSONUtil.toJsonStr(resultMap)); Result result = ifsApiUtils.getProcurementResults(one.getContract(),JSONUtil.toJsonStr(resultMap)); if (result.getCode() != 200) { throw new ErrorException("IFSç»è®°éè´æ£éªç»æå¤±è´¥: " + result.getMessage()); } @@ -1235,8 +1238,14 @@ * TODO åç»éè¦è°ç¨IFSçæ¥å£ ç§»å ¥çåºä½å· toLocation */ // æ£éªåç§»åº //1301:åææåæ ¼åºï¼CP-02-001:æååº toLocation = StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue()) ? "1301" : "CP-02-001"; //1.æ ¹æ®ifsåè·å对åºåºä½é ç½® IfsProperties properties = ifsApiUtils.getPropByContract(one.getContract()); //2.å¤æè®¢åç±»åæ¯å¦ä¸ºåææ if(StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue())){ toLocation = properties.getRawQualifiedLocation(); }else{ toLocation = properties.getProductQualifiedLocation(); } Map<String, Object> moveResultMap = new HashMap<>(); List<Map<String, Object>> moveResultList = new ArrayList<>(); Map<String, Object> moveMap = new HashMap<>(); @@ -1259,7 +1268,7 @@ moveResultMap.put("SYSMODEL", "æ£éªåç§»åº"); moveResultMap.put("BATCH_INFO", moveResultList); Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap)); Result result1 = ifsApiUtils.moveReceipt(one.getContract(),JSONUtil.toJsonStr(moveResultMap)); // 妿æå¿ 须为é¶ä»¶æå®æ¹å·æ¥ééè¦éæ°æäº¤ç§»åºä¿¡æ¯å»æå®æ¹å· if (result1.getCode() != 200) { String message = result1.getMessage(); @@ -1309,7 +1318,7 @@ resultMap.put("SYSMODEL", "ä¿®æ¹éè´è®¢åæ¹æ¬¡å·"); resultMap.put("BATCH_INFO", resultList); Result result = ifsApiUtils.updateMoveReceiptLot(JSONUtil.toJsonStr(resultMap)); Result result = ifsApiUtils.updateMoveReceiptLot(one.getContract(),JSONUtil.toJsonStr(resultMap)); if (result.getCode() != 200) { throw new ErrorException("IFSä¿®æ¹æ¹æ¬¡å·å¤±è´¥: " + result.getMessage()); @@ -1341,7 +1350,7 @@ moveResultMap.put("SYSMODEL", "æ£éªåç§»åº"); moveResultMap.put("BATCH_INFO", moveResultList); Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap)); Result result1 = ifsApiUtils.moveReceipt(one.getContract(),JSONUtil.toJsonStr(moveResultMap)); if (result1.getCode() != 200) { throw new ErrorException("IFSæ£éªåç§»åºå¤±è´¥: " + result1.getMessage()); } inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -895,7 +895,7 @@ inAttrMap.put("BATCH_INFO", batchInfoData); String inAttr = JSONObject.toJSONString(inAttrMap); //è°ç¨ifsæ¥å£ Result result = ifsApiUtils.updateMoveReceiptLot(inAttr); Result result = ifsApiUtils.updateMoveReceiptLot(ifsInventoryQuantity.getContract(),inAttr); if(result.getCode()!=200){ throw new RuntimeException("IFSéè´æ¥æ¶æ´æ¹æ¹å·è¯·æ±å¼å¸¸ï¼"+result.getMessage()); } @@ -917,7 +917,7 @@ } //ifsæ´æ¹æ¹å·æ¥å£è°ç¨æåï¼æåæ°æåçifs订åå¹¶æ¥æ£ Map<String, Object> map = new HashMap<>(); map.put("LOCATION_NO","1302"); // map.put("LOCATION_NO","1302"); map.put("STATE_DB","To be Inspected"); map.put("PART_NO",ifsInventoryQuantity.getPartNo()); map.put("ORDER_NO",ifsInventoryQuantity.getOrderNo()); inspect-server/src/main/java/com/ruoyi/inspect/task/RawMaterIalSchedule.java
@@ -24,7 +24,7 @@ @Scheduled(fixedDelay = 1200000) public void getIfsOrderTiming() { Map<String, Object> map = new HashMap<>(); map.put("LOCATION_NO","1302"); // map.put("LOCATION_NO","1302"); map.put("STATE_DB","To be Inspected"); insOrderService.getIfsOrder(map,false); } inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java
@@ -73,4 +73,10 @@ private String lotBatchNo; /** * ifså */ private String contract; } inspect-server/src/main/java/com/ruoyi/inspect/vo/InsOrderPlanVO.java
@@ -9,6 +9,9 @@ private Integer id; @ApiModelProperty("IFSå") private String contract; @ApiModelProperty("å§æç¼å·") private String entrustCode; inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -510,6 +510,7 @@ </select> <select id="selectOrderInfoById" resultType="com.ruoyi.inspect.vo.IfsOrderVO"> select io.*, iiq.contract, iiq.is_split_order, iiq.order_type AS ifs_order_type, iiq.part_no, inspect-server/src/main/resources/mapper/InsReportMapper.xml
@@ -22,7 +22,8 @@ ip.son_laboratory, iiq.update_batch_no, iiq.part_desc, iiq.supplier_name iiq.supplier_name, iiq.contract from ins_report ir left join ins_order io on io.id = ir.ins_order_id LEFT JOIN ifs_inventory_quantity iiq ON iiq.id = io.ifs_inventory_id inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -193,7 +193,7 @@ ira.temp_url_pdf, iiq.is_copper, iiq.is_split_order, iiq.contract, CASE WHEN io.ifs_inventory_id IS NOT NULL THEN iiq.update_batch_no ELSE io.update_batch_no ruoyi-admin-ztns/src/main/resources/application-druid.yml
@@ -153,12 +153,25 @@ examiningUrl: # https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=21993616-9966-4fe4-81b0-68e99a40c964 ifs: contract: ZTNS contract-key-get: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo= contract-key-post: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo= custorder: http://192.168.20.47/PurchService.ashx? custorder-port: http://192.168.20.47:8008/PurchService.ashx? erp-services: http://192.168.20.47:8081 props: - contract: ZTNS #ä¸å¤©èä¸å contract-key-get: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo= #get请æ±å¯é¥ contract-key-post: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo= #post请æ±å¯é¥ custorder: http://192.168.20.47/PurchService.ashx? #get请æ±å°å custorder-port: http://192.168.20.47:8008/PurchService.ashx? #post请æ±å°å erp-services: http://192.168.20.47:8081 #erp请æ±å°å tobe-inspected-location: 1302 #å¾ æ£åºä½ raw-qualified-location: 1301 #åææåæ ¼åºä½ product-qualified-location: CP-02-001 #æååæ ¼åºä½ - contract: KJNS #ç§æèä¸å contract-key-get: ueWGmvzoc4iR0y%2FsP6iOMeYn3ohC45KTCl3dZ94WaNk%3D #get请æ±å¯é¥ contract-key-post: ueWGmvzoc4iR0y/sP6iOMeYn3ohC45KTCl3dZ94WaNk= #post请æ±å¯é¥ custorder: http://192.168.20.50/PurchService.ashx? #get请æ±å°å custorder-port: http://192.168.20.50:8008/PurchService.ashx? #post请æ±å°å erp-services: http://192.168.20.50:8081 #erp请æ±å°å tobe-inspected-location: A101 #å¾ æ£åºä½ raw-qualified-location: A201 #åææåæ ¼åºä½ product-qualified-location: C101 #æååæ ¼åºä½ mes: ztns: ruoyi-admin-ztns/src/main/resources/application-ztns.yml
@@ -154,12 +154,25 @@ person: https://ztt-connector.ztt.cn/api/org/v1/employees/simple/ ifs: contract: ZTNS contract-key-get: NmAkSXwoAeRF2NWF6dnsVc2O+kH2X3XuNVFbfDtnaFU= contract-key-post: NmAkSXwoAeRF2NWF6dnsVc2O+kH2X3XuNVFbfDtnaFU= custorder: http://192.168.20.50/PurchService.ashx? custorder-port: http://192.168.20.50:8008/PurchService.ashx? erp-services: http://192.168.20.50:8081 props: - contract: ZTNS #ä¸å¤©èä¸å contract-key-get: NmAkSXwoAeRF2NWF6dnsVc2O+kH2X3XuNVFbfDtnaFU= #get请æ±å¯é¥ contract-key-post: NmAkSXwoAeRF2NWF6dnsVc2O+kH2X3XuNVFbfDtnaFU= #post请æ±å¯é¥ custorder: http://192.168.20.50/PurchService.ashx? #get请æ±å°å custorder-port: http://192.168.20.50:8008/PurchService.ashx? #post请æ±å°å erp-services: http://192.168.20.50:8081 #erp请æ±å°å tobe-inspected-location: 1302 #å¾ æ£åºä½ raw-qualified-location: 1301 #åææåæ ¼åºä½ product-qualified-location: CP-02-001 #æååæ ¼åºä½ - contract: KJNS #ç§æèä¸å contract-key-get: ueWGmvzoc4iR0y%2FsP6iOMeYn3ohC45KTCl3dZ94WaNk%3D #get请æ±å¯é¥ contract-key-post: ueWGmvzoc4iR0y/sP6iOMeYn3ohC45KTCl3dZ94WaNk= #post请æ±å¯é¥ custorder: http://192.168.20.50/PurchService.ashx? #get请æ±å°å custorder-port: http://192.168.20.50:8008/PurchService.ashx? #post请æ±å°å erp-services: http://192.168.20.50:8081 #erp请æ±å°å tobe-inspected-location: A101 #å¾ æ£åºä½ raw-qualified-location: A201 #åææåæ ¼åºä½ product-qualified-location: C101 #æååæ ¼åºä½ mes: ztns: ruoyi-common/src/main/java/com/ruoyi/common/config/ifs/IfsConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.common.config.ifs; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.util.List; /** * é ç½®æ å°å®ä½ç±» */ @Configuration @ConfigurationProperties(prefix = "ifs") @Data public class IfsConfig { private List<IfsProperties> props; } ruoyi-common/src/main/java/com/ruoyi/common/config/ifs/IfsProperties.java
ÎļþÃû´Ó ruoyi-common/src/main/java/com/ruoyi/common/config/IfsProperties.java ÐÞ¸Ä @@ -1,15 +1,11 @@ package com.ruoyi.common.config; package com.ruoyi.common.config.ifs; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; /** * @Author zhuo * @Date 2024/9/29 */ @Configuration @ConfigurationProperties(prefix = "ifs") @Data public class IfsProperties { @@ -22,7 +18,6 @@ * ç§é¥-get */ private String contractKeyGet; /** * ç§é¥-post @@ -43,4 +38,20 @@ * 8081 */ private String erpServices; /** * å¾ æ£åºä½ */ private String tobeInspectedLocation; /** * åææåæ ¼åºä½ */ private String rawQualifiedLocation; /** * æååæ ¼åºä½ */ private String productQualifiedLocation; } ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java
@@ -6,13 +6,15 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.config.ifs.IfsConfig; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.config.IfsProperties; import com.ruoyi.common.config.ifs.IfsProperties; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -25,27 +27,35 @@ @Component public class IfsApiUtils { private IfsProperties ifsProperties; private IfsConfig ifsConfig; public IfsProperties getPropByContract(String contract){ return ifsConfig.getProps().stream().filter(f-> StringUtils.equals(contract,f.getContract())).findFirst().orElse(new IfsProperties()); } /** * æ¥è¯¢éè´è®¢åæªæ£éª */ public List<Map<String, Object>> getInventory(String inAttr) { public List<Map<String, Object>> getInventory(Map<String,Object> inAttrMap) { List<Map<String, Object>> maps = new ArrayList<>(); ifsConfig.getProps().forEach(ifsProp->{ String procedureName = "QUERY_POL_RECEIPT_STD"; JSONObject stockMap = getJsonObject(procedureName, inAttr); String body = HttpRequest.post(ifsProperties.getCustorderPort()).form(stockMap).execute().body(); inAttrMap.put("LOCATION_NO",ifsProp.getTobeInspectedLocation()); String inAttr = JSONUtil.toJsonStr(inAttrMap); JSONObject stockMap = getJsonObject(procedureName, inAttr,ifsProp.getContract(),ifsProp.getContractKeyPost()); String body = HttpRequest.post(ifsProp.getCustorderPort()).form(stockMap).execute().body(); ObjectMapper objectMapper = new ObjectMapper(); try { Map map = objectMapper.readValue(body, Map.class); List<Map<String, Object>> maps = objectMapper.readValue(JSONUtil.toJsonStr(map.get("LIST_INFO")), new TypeReference<List<Map<String, Object>>>() { }); maps.addAll(objectMapper.readValue(JSONUtil.toJsonStr(map.get("LIST_INFO")), new TypeReference<List<Map<String, Object>>>() { })); log.info("è·åéè´è®¢å-->>" + maps); return maps; } catch (JsonProcessingException e) { e.printStackTrace(); throw new RuntimeException(e); } }); return maps; } @@ -53,8 +63,8 @@ /** * ç»è®°éè´æ£éªç»æSTD */ public Result getProcurementResults(String inAttr) { return getResult("REGIST_INSPECTION_RESULTS_STD", inAttr, ifsProperties.getCustorder(), "ç»è®°éè´æ£éªç»æ-->"); public Result getProcurementResults(String contract,String inAttr) { return getResult(contract,"REGIST_INSPECTION_RESULTS_STD", inAttr, "GET", "ç»è®°éè´æ£éªç»æ-->"); } @@ -64,8 +74,8 @@ * @param inAttr * @return */ public Result moveReceipt(String inAttr) { return getResult("MOVE_RECEIPT_STD", inAttr, ifsProperties.getCustorder(), "æ£éªåç§»åº-->"); public Result moveReceipt(String contract,String inAttr) { return getResult(contract,"MOVE_RECEIPT_STD", inAttr, "GET", "æ£éªåç§»åº-->"); } @@ -75,8 +85,8 @@ * @param inAttr * @return */ public Result updateMoveReceiptLot(String inAttr) { return getResult("MODIFY_PURCH_RECEIPT_LOT_STD", inAttr, ifsProperties.getCustorder(), "ä¿®æ¹éè´è®¢åæ¹æ¬¡å·-->"); public Result updateMoveReceiptLot(String contract,String inAttr) { return getResult(contract,"MODIFY_PURCH_RECEIPT_LOT_STD", inAttr, "GET", "ä¿®æ¹éè´è®¢åæ¹æ¬¡å·-->"); } @@ -87,8 +97,8 @@ * @param inAttr * @return */ public Result getIfsStock(String inAttr) { return getResult("QUERY_INVENTORY_INFO_STD", inAttr, ifsProperties.getCustorderPort(), "æ¥è¯¢åºåä¿¡æ¯-->"); public Result getIfsStock(String contract,String inAttr) { return getResult(contract,"QUERY_INVENTORY_INFO_STD", inAttr, "POST", "æ¥è¯¢åºåä¿¡æ¯-->"); } /** @@ -97,25 +107,28 @@ * @param inAttr * @return */ public Result importPartLotAttr(String inAttr) { return getResult("IMPORT_PART_LOT_ATTR_STD", inAttr, ifsProperties.getCustorder(), "åºåç©ææ¹æ¬¡å±æ§æ°å¢ä¿®æ¹æ¥å£-->"); public Result importPartLotAttr(String contract,String inAttr) { return getResult(contract,"IMPORT_PART_LOT_ATTR_STD", inAttr, "GET", "åºåç©ææ¹æ¬¡å±æ§æ°å¢ä¿®æ¹æ¥å£-->"); } /** * éç¨æ¥å£ * @param contract IFSå * @param procedureName æ¹æ³å * @param inAttr ä¼ å * @param url å°å * @param urlType 请æ±ç±»åï¼GET/POSTï¼ * @param image æ¶æ¯ * @return */ private Result<?> getResult(String procedureName, String inAttr, String url, String image) { private Result<?> getResult(String contract,String procedureName, String inAttr, String urlType, String image) { IfsProperties ifsProperties = getPropByContract(contract); JSONObject stockMap = new JSONObject(); stockMap.put("procedureName", procedureName); stockMap.put("contract", ifsProperties.getContract()); stockMap.put("contractKey", ifsProperties.getContractKeyPost()); stockMap.put("userId", "lims_user"); stockMap.put("inAttr", inAttr); String url = StringUtils.equals("GET",urlType)?ifsProperties.getCustorder():ifsProperties.getCustorderPort(); String body = HttpRequest.post(url).form(stockMap).execute().body(); log.info(image + body); ObjectMapper objectMapper = new ObjectMapper(); @@ -139,11 +152,11 @@ * @param inAttr 请æ±åæ° * @return */ private JSONObject getJsonObject(String procedureName, String inAttr) { private JSONObject getJsonObject(String procedureName, String inAttr,String contract,String contractKeyPost) { JSONObject stockMap = new JSONObject(); stockMap.put("procedureName", procedureName); stockMap.put("contract", ifsProperties.getContract()); stockMap.put("contractKey", ifsProperties.getContractKeyPost()); stockMap.put("contract", contract); stockMap.put("contractKey", contractKeyPost); stockMap.put("userId", "lims_user"); stockMap.put("inAttr", inAttr); return stockMap;