package com.ese.model.dao; import com.ese.model.db.ReservedOrderModel; import com.ese.model.view.ShowItemStatusView; import com.ese.utils.Utils; import org.hibernate.Criteria; import org.hibernate.SQLQuery; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.hibernate.type.IntegerType; import org.hibernate.type.StringType; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.List; @Repository public class ReservedOrderDAO extends GenericDAO<ReservedOrderModel, Integer> { public List<ReservedOrderModel> findByPickingOrderLineId(int pickingOrderLineId){ List<ReservedOrderModel> reservedOrderModels = Utils.getEmptyList(); try { Criteria criteria = getCriteria(); criteria.add(Restrictions.eq("pickingOrderLineModel.id", pickingOrderLineId)); criteria.addOrder(Order.asc("id")); reservedOrderModels = criteria.list(); } catch (Exception e) { log.debug("Exception error findByPickingOrderLineId : ", e); } return reservedOrderModels; } public List<ShowItemStatusView> findByPickingLineId(int pickingOrderLineId){ List<ShowItemStatusView> itemStatusViewList = new ArrayList<ShowItemStatusView>(); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append(" SELECT "); sqlBuilder.append(" ").append(getPrefix()).append(".reserved_order.id AS ID,"); sqlBuilder.append(" ").append(getPrefix()).append(".warehouse.warehouse_code AS WAREHOUSE,"); sqlBuilder.append(" ").append(getPrefix()).append(".reserved_order.location_barcode AS LOCATION,"); sqlBuilder.append(" ").append(getPrefix()).append(".reserved_order.batchno AS BATCH_NO,"); sqlBuilder.append(" ").append(getPrefix()).append(".reserved_order.reserved_qty AS RESERVED_QTY,"); sqlBuilder.append(" ").append(getPrefix()).append(".reserved_order.picked_qty AS PICKED_QTY "); sqlBuilder.append(" FROM ").append(getPrefix()).append(".reserved_order"); sqlBuilder.append(" LEFT JOIN ").append(getPrefix()).append(".location"); sqlBuilder.append(" ON ").append(getPrefix()).append(".reserved_order.location_id = ").append(getPrefix()).append(".location.id"); sqlBuilder.append(" LEFT JOIN ").append(getPrefix()).append(".warehouse"); sqlBuilder.append(" ON ").append(getPrefix()).append(".location.warehouse_id = ").append(getPrefix()).append(".warehouse.id"); sqlBuilder.append(" WHERE ").append(getPrefix()).append(".reserved_order.picking_order_line_id = " ).append(pickingOrderLineId); log.debug("findByPickingOrderId : {}", sqlBuilder.toString()); try { SQLQuery query = getSession().createSQLQuery(sqlBuilder.toString()) .addScalar("ID", IntegerType.INSTANCE) .addScalar("WAREHOUSE", StringType.INSTANCE) .addScalar("LOCATION", StringType.INSTANCE) .addScalar("BATCH_NO", StringType.INSTANCE) .addScalar("RESERVED_QTY", StringType.INSTANCE) .addScalar("PICKED_QTY", IntegerType.INSTANCE); List<Object[]> objects = query.list(); for (Object[] entity : objects) { ShowItemStatusView showItemStatusView = new ShowItemStatusView(); showItemStatusView.setId(Utils.parseInt(entity[0], 0)); showItemStatusView.setWarehouse(Utils.parseString(entity[1], "")); showItemStatusView.setLocation(Utils.parseString(entity[2], "")); showItemStatusView.setBatchNo(Utils.parseString(entity[3], "")); showItemStatusView.setReservedQty(Utils.parseInt(entity[4], 0)); showItemStatusView.setPickedQty(Utils.parseInt(entity[5], 0)); itemStatusViewList.add(showItemStatusView); } } catch (Exception e) { log.debug("Exception SQL : {}", e); } return itemStatusViewList; } public ReservedOrderModel remove(int reservedOrderId){ ReservedOrderModel reservedOrderModel = new ReservedOrderModel(); try { Criteria criteria = getCriteria(); criteria.add(Restrictions.eq("id", reservedOrderId)); reservedOrderModel = (ReservedOrderModel) criteria.uniqueResult(); } catch (Exception e) { log.debug("Exception error remove : ", e); } return reservedOrderModel; } public List<ReservedOrderModel> findByLineId(int pickingLineId){ List<ReservedOrderModel> reservedOrderModelList = Utils.getEmptyList(); try { Criteria criteria = getCriteria(); criteria.add(Restrictions.eq("pickingOrderLineModel.id", pickingLineId)); reservedOrderModelList = criteria.list(); } catch (Exception e) { log.debug("Exception error remove : ", e); } return reservedOrderModelList; } public int reservedOrderQtyByPickingOrderLineId(int pickingOrderlineId){ List<ReservedOrderModel> reservedOrderModels = Utils.getEmptyList(); int reservedQty = 0; try { Criteria criteria = getCriteria(); criteria.add(Restrictions.eq("pickingOrderLineModel.id", pickingOrderlineId)); criteria.addOrder(Order.asc("id")); reservedOrderModels = criteria.list(); } catch (Exception e) { log.debug("Exception error findByPickingOrderLineId : ", e); } for (ReservedOrderModel model : reservedOrderModels){ reservedQty = reservedQty + model.getReservedQty(); } // // StringBuilder sqlBuilder = new StringBuilder(); // sqlBuilder.append(" SELECT ").append(" SUM(").append(getPrefix()).append(".reserved_order.reserved_qty) AS RESERVED_QTY"); // sqlBuilder.append(" FROM ").append(getPrefix()).append(".reserved_order"); // sqlBuilder.append(" WHERE ").append(getPrefix()).append(".reserved_order.picking_order_line_id = " ).append(pickingOrderlineId); // // log.debug("reservedOrderQtyByPickingOrderLineId : {}", sqlBuilder.toString()); // // try { // SQLQuery query = getSession().createSQLQuery(sqlBuilder.toString()) // .addScalar("RESERVED_QTY", IntegerType.INSTANCE); // List<Object[]> objects = query.list(); // // for (Object[] entity : objects) { // log.debug("-------- {}", Utils.parseInt(entity[0])); // reservedQty = Utils.parseInt(entity[0]); // } // } catch (Exception e) { // log.debug("Exception reservedOrderQty : {}", e); // } log.debug("------reservedQty :{}", reservedQty); return reservedQty; } }