339 lines
16 KiB
Java
339 lines
16 KiB
Java
package com.example.services;
|
|
|
|
import com.example.services.item.Item;
|
|
import com.example.services.item.ItemOption;
|
|
import com.example.services.item.ItemPrice;
|
|
import com.example.services.item.ItemStock;
|
|
|
|
import javax.ws.rs.GET;
|
|
import javax.ws.rs.Path;
|
|
import javax.ws.rs.PathParam;
|
|
import javax.ws.rs.Produces;
|
|
import javax.ws.rs.QueryParam;
|
|
import javax.ws.rs.core.MediaType;
|
|
import javax.ws.rs.core.Response;
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
import java.sql.DriverManager;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
@Path("/items")
|
|
public class ItemService {
|
|
private static final Logger logger = LoggerFactory.getLogger(DatabaseConnectDOTSOFT.class);
|
|
|
|
@GET
|
|
@Path("/{itemId}")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
public Response getItemById(
|
|
@PathParam("itemId") String itemId,
|
|
@QueryParam("dbHost") String dbHost) {
|
|
|
|
if (itemId == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"itemId parameter is required\"}").build();
|
|
} else if (itemId.length() < 6) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"Length of itemId must be greater than or equal to 6\"}").build();
|
|
}
|
|
|
|
if (dbHost == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
|
|
}
|
|
|
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
|
|
|
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost, "dtv")) {
|
|
String query = "SELECT * FROM dtv.ITM_ITEM WHERE ORGANIZATION_ID = 1 AND ITEM_ID LIKE ?";
|
|
|
|
logger.info(query);
|
|
|
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
|
// Concatenate % to parameter itemId
|
|
statement.setString(1, itemId + "%");
|
|
|
|
try (ResultSet resultSet = statement.executeQuery()) {
|
|
List<Item> itemList = new ArrayList<>();
|
|
|
|
while (resultSet.next()) {
|
|
Item item = mapResultSetToItem(resultSet);
|
|
itemList.add(item);
|
|
}
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
String jsonResponse = objectMapper.writeValueAsString(itemList);
|
|
|
|
return Response.ok(jsonResponse).build();
|
|
}
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
String errorResponse = "{\"error\":\"" + e.getMessage() + "\"}";
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorResponse).build();
|
|
} catch (JsonProcessingException e) {
|
|
e.printStackTrace(); // Gérer les exceptions correctement dans un environnement de production
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\":\"Error processing JSON\"}").build();
|
|
}
|
|
}
|
|
|
|
@GET
|
|
@Path("/{itemId}/options")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
public Response getItemOptionsById(
|
|
@PathParam("itemId") String itemId,
|
|
@QueryParam("dbHost") String dbHost) {
|
|
|
|
if (itemId == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"itemId parameter is required\"}").build();
|
|
} else if (itemId.length() < 6) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"Length of itemId must be greater than or equal to 6\"}").build();
|
|
}
|
|
|
|
if (dbHost == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
|
|
}
|
|
|
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
|
|
|
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost, "dtv")) {
|
|
String query = "SELECT item_id,level_code,level_value,item_availability_code,tax_group_id,Vendor,season_code,create_date,create_user_id,update_date,update_user_id " +
|
|
"FROM dtv.ITM_ITEM_OPTIONS " +
|
|
"WHERE ORGANIZATION_ID = 1 AND ITEM_ID LIKE ?";
|
|
|
|
logger.info(query);
|
|
|
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
|
// Concatenate % to parameter itemId
|
|
statement.setString(1, itemId + "%");
|
|
|
|
try (ResultSet resultSet = statement.executeQuery()) {
|
|
List<ItemOption> itemOptionList = new ArrayList<>();
|
|
|
|
while (resultSet.next()) {
|
|
ItemOption itemOption = mapResultSetToItemOptionDetails(resultSet);
|
|
itemOptionList.add(itemOption);
|
|
}
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
String jsonResponse = objectMapper.writeValueAsString(itemOptionList);
|
|
|
|
return Response.ok(jsonResponse).build();
|
|
}
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
String errorResponse = "{\"error\":\"" + e.getMessage() + "\"}";
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorResponse).build();
|
|
} catch (JsonProcessingException e) {
|
|
e.printStackTrace(); // Gérer les exceptions correctement dans un environnement de production
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\":\"Error processing JSON\"}").build();
|
|
}
|
|
}
|
|
|
|
@GET
|
|
@Path("/{itemId}/price")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
public Response getItemPricesById(
|
|
@PathParam("itemId") String itemId,
|
|
@QueryParam("dbHost") String dbHost) {
|
|
|
|
if (itemId == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"itemId parameter is required\"}").build();
|
|
} else if (itemId.length() < 6) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"Length of itemId must be greater than or equal to 6\"}").build();
|
|
}
|
|
|
|
if (dbHost == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
|
|
}
|
|
|
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
|
|
|
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost, "dtv")) {
|
|
String query = "SELECT item_id, level_code, level_value, itm_price_property_code, effective_date, expiration_date, price, price_qty, external_id, external_system, create_date, create_user_id, update_date, update_user_id " +
|
|
"FROM dtv.itm_item_prices " +
|
|
"WHERE organization_id = 1 AND item_id LIKE ?";
|
|
|
|
logger.info(query);
|
|
|
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
|
// Concatenate % to parameter itemId
|
|
statement.setString(1, itemId + "%");
|
|
|
|
try (ResultSet resultSet = statement.executeQuery()) {
|
|
List<ItemPrice> itemPriceList = new ArrayList<>();
|
|
|
|
while (resultSet.next()) {
|
|
ItemPrice itemPrice = mapResultSetToItemPriceDetails(resultSet);
|
|
itemPriceList.add(itemPrice);
|
|
}
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
String jsonResponse = objectMapper.writeValueAsString(itemPriceList);
|
|
|
|
return Response.ok(jsonResponse).build();
|
|
}
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
String errorResponse = "{\"error\":\"" + e.getMessage() + "\"}";
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorResponse).build();
|
|
} catch (JsonProcessingException e) {
|
|
e.printStackTrace(); // Gérer les exceptions correctement dans un environnement de production
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\":\"Error processing JSON\"}").build();
|
|
}
|
|
}
|
|
|
|
@GET
|
|
@Path("/{itemId}/stock")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
public Response getItemStocksById(
|
|
@PathParam("itemId") String itemId,
|
|
@QueryParam("dbHost") String dbHost) {
|
|
|
|
if (itemId == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"itemId parameter is required\"}").build();
|
|
} else if (itemId.length() < 6) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"Length of itemId must be greater than or equal to 6\"}").build();
|
|
}
|
|
|
|
if (dbHost == null) {
|
|
return Response.status(Response.Status.BAD_REQUEST).entity("{\"error\":\"dbHost parameter is required\"}").build();
|
|
}
|
|
|
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
|
|
|
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost, "dtv")) {
|
|
String query = "SELECT organization_id,rtl_loc_id,inv_location_id,bucket_id,item_id, unitcount,inventory_value,create_date, create_user_id,update_date , update_user_id " +
|
|
"FROM dtv.inv_stock_ledger_acct " +
|
|
"WHERE organization_id = 1 AND item_id LIKE ?";
|
|
|
|
logger.info(query);
|
|
|
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
|
// Concatenate % to parameter itemId
|
|
statement.setString(1, itemId + "%");
|
|
|
|
try (ResultSet resultSet = statement.executeQuery()) {
|
|
List<ItemStock> itemStockList = new ArrayList<>();
|
|
|
|
while (resultSet.next()) {
|
|
ItemStock itemStock = mapResultSetToItemStockDetails(resultSet);
|
|
itemStockList.add(itemStock);
|
|
}
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
String jsonResponse = objectMapper.writeValueAsString(itemStockList);
|
|
|
|
return Response.ok(jsonResponse).build();
|
|
}
|
|
}
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
String errorResponse = "{\"error\":\"" + e.getMessage() + "\"}";
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorResponse).build();
|
|
} catch (JsonProcessingException e) {
|
|
e.printStackTrace(); // Gérer les exceptions correctement dans un environnement de production
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\":\"Error processing JSON\"}").build();
|
|
}
|
|
}
|
|
|
|
private Item mapResultSetToItem(ResultSet resultSet) throws SQLException {
|
|
Item item = new Item();
|
|
item.setOrganizationId(resultSet.getLong("ORGANIZATION_ID"));
|
|
item.setItemId(resultSet.getString("ITEM_ID"));
|
|
item.setOrgCode(resultSet.getString("ORG_CODE"));
|
|
item.setOrgValue(resultSet.getString("ORG_VALUE"));
|
|
item.setName(resultSet.getString("NAME"));
|
|
item.setDescription(resultSet.getString("DESCRIPTION"));
|
|
item.setMerchLevel1(resultSet.getString("MERCH_LEVEL_1"));
|
|
item.setMerchLevel2(resultSet.getString("MERCH_LEVEL_2"));
|
|
item.setMerchLevel3(resultSet.getString("MERCH_LEVEL_3"));
|
|
item.setMerchLevel4(resultSet.getString("MERCH_LEVEL_4"));
|
|
item.setListPrice(resultSet.getInt("LIST_PRICE"));
|
|
item.setMeasureReqFlag(resultSet.getInt("MEASURE_REQ_FLAG"));
|
|
item.setItemLevelCode(resultSet.getString("ITEM_LVLCODE"));
|
|
item.setParentItemId(resultSet.getString("PARENT_ITEM_ID"));
|
|
item.setNotInventoriedFlag(resultSet.getInt("NOT_INVENTORIED_FLAG"));
|
|
item.setSerializedItemFlag(resultSet.getInt("SERIALIZED_ITEM_FLAG"));
|
|
item.setItemTypeCode(resultSet.getString("ITEM_TYPCODE"));
|
|
item.setDtvClassName(resultSet.getString("DTV_CLASS_NAME"));
|
|
item.setDimensionSystem(resultSet.getString("DIMENSION_SYSTEM"));
|
|
item.setDisallowMatrixDisplayFlag(resultSet.getInt("DISALLOW_MATRIX_DISPLAY_FLAG"));
|
|
item.setItemMatrixColor(resultSet.getString("ITEM_MATRIX_COLOR"));
|
|
item.setDimension1(resultSet.getString("DIMENSION1"));
|
|
item.setDimension2(resultSet.getString("DIMENSION2"));
|
|
item.setDimension3(resultSet.getString("DIMENSION3"));
|
|
item.setExternalSystem(resultSet.getString("EXTERNAL_SYSTEM"));
|
|
item.setCreateDate(resultSet.getDate("CREATE_DATE"));
|
|
item.setCreateUserId(resultSet.getString("CREATE_USER_ID"));
|
|
item.setUpdateDate(resultSet.getDate("UPDATE_DATE"));
|
|
item.setUpdateUserId(resultSet.getString("UPDATE_USER_ID"));
|
|
|
|
return item;
|
|
}
|
|
|
|
private ItemOption mapResultSetToItemOptionDetails(ResultSet resultSet) throws SQLException {
|
|
ItemOption itemOption = new ItemOption();
|
|
|
|
itemOption.setItemId(resultSet.getString("ITEM_ID"));
|
|
itemOption.setLevelCode(resultSet.getString("LEVEL_CODE"));
|
|
itemOption.setLevelValue(resultSet.getString("LEVEL_VALUE"));
|
|
itemOption.setItemAvailabilityCode(resultSet.getString("ITEM_AVAILABILITY_CODE"));
|
|
itemOption.setTaxGroupId(resultSet.getString("TAX_GROUP_ID"));
|
|
itemOption.setVendor(resultSet.getString("VENDOR"));
|
|
itemOption.setSeasonCode(resultSet.getString("SEASON_CODE"));
|
|
itemOption.setCreateDate(resultSet.getDate("CREATE_DATE"));
|
|
itemOption.setCreateUserId(resultSet.getString("CREATE_USER_ID"));
|
|
itemOption.setUpdateDate(resultSet.getDate("UPDATE_DATE"));
|
|
itemOption.setUpdateUserId(resultSet.getString("UPDATE_USER_ID"));
|
|
|
|
return itemOption;
|
|
}
|
|
|
|
private ItemPrice mapResultSetToItemPriceDetails(ResultSet resultSet) throws SQLException {
|
|
ItemPrice itemPrices = new ItemPrice();
|
|
|
|
itemPrices.setItemId(resultSet.getString("ITEM_ID"));
|
|
itemPrices.setLevelCode(resultSet.getString("LEVEL_CODE"));
|
|
itemPrices.setLevelValue(resultSet.getString("LEVEL_VALUE"));
|
|
itemPrices.setItmPricePropertyCode(resultSet.getString("ITM_PRICE_PROPERTY_CODE"));
|
|
itemPrices.setEffectiveDate(resultSet.getDate("EFFECTIVE_DATE"));
|
|
itemPrices.setExpirationDate(resultSet.getDate("EXPIRATION_DATE"));
|
|
itemPrices.setPrice(resultSet.getDouble("PRICE"));
|
|
itemPrices.setPriceQty(resultSet.getDouble("PRICE_QTY"));
|
|
itemPrices.setExternalId(resultSet.getString("EXTERNAL_ID"));
|
|
itemPrices.setExternalSystem(resultSet.getString("EXTERNAL_SYSTEM"));
|
|
itemPrices.setCreateDate(resultSet.getDate("CREATE_DATE"));
|
|
itemPrices.setCreateUserId(resultSet.getString("CREATE_USER_ID"));
|
|
itemPrices.setUpdateDate(resultSet.getDate("UPDATE_DATE"));
|
|
itemPrices.setUpdateUserId(resultSet.getString("UPDATE_USER_ID"));
|
|
|
|
return itemPrices;
|
|
}
|
|
|
|
private ItemStock mapResultSetToItemStockDetails(ResultSet resultSet) throws SQLException {
|
|
ItemStock itemStock = new ItemStock();
|
|
|
|
itemStock.setOrganizationId(resultSet.getString("ORGANIZATION_ID"));
|
|
itemStock.setRtlLocId(resultSet.getString("RTL_LOC_ID"));
|
|
itemStock.setInvLocationId(resultSet.getString("INV_LOCATION_ID"));
|
|
itemStock.setBucketId(resultSet.getString("BUCKET_ID"));
|
|
itemStock.setItemId(resultSet.getString("ITEM_ID"));
|
|
itemStock.setUnitCount(resultSet.getInt("UNITCOUNT"));
|
|
itemStock.setInventoryValue(resultSet.getDouble("INVENTORY_VALUE"));
|
|
itemStock.setCreateDate(resultSet.getDate("CREATE_DATE"));
|
|
itemStock.setCreateUserId(resultSet.getString("CREATE_USER_ID"));
|
|
itemStock.setUpdateDate(resultSet.getDate("UPDATE_DATE"));
|
|
itemStock.setUpdateUserId(resultSet.getString("UPDATE_USER_ID"));
|
|
|
|
return itemStock;
|
|
}
|
|
} |