package com.ese.model.dao;
import com.ese.model.db.StockMovementInModel;
import com.ese.model.view.StockMovementInView;
import com.ese.model.view.report.SubIncomingViewReport;
import com.ese.utils.Utils;
import org.hibernate.SQLQuery;
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 StockMovementInDAO extends GenericDAO<StockMovementInModel, Integer>{
public List<StockMovementInView> findstockMovementOutByStockInOutId(int stockInOutId){
log.debug("findstockMovementOutByStockInOutId(). {}", stockInOutId);
List<StockMovementInView> stockMovementInViewViews = new ArrayList<StockMovementInView>();
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("SELECT ");
sqlBuilder.append(" ").append(getPrefix()).append(".stock_movement_in.id AS ID,");
sqlBuilder.append(" ").append(getPrefix()).append(".item_master.itemid AS ITEM,");
sqlBuilder.append(" ").append(getPrefix()).append(".item_master.DSGThaiItemDescription AS ITEM_DESC,");
sqlBuilder.append(" ").append(getPrefix()).append(".stock_movement_in.sn_barcode AS BARCODE,");
sqlBuilder.append(" ").append(getPrefix()).append(".stock_movement_in.status AS STATUS ");
sqlBuilder.append(" FROM ").append(getPrefix()).append(".stock_movement_in");
sqlBuilder.append(" LEFT JOIN ").append(getPrefix()).append(".inv_onhand");
sqlBuilder.append(" ON ").append(getPrefix()).append(".stock_movement_in.sn_barcode = ").append(getPrefix()).append(".inv_onhand.sn_barcode");
sqlBuilder.append(" LEFT JOIN ").append(getPrefix()).append(".item_master");
sqlBuilder.append(" ON ").append(getPrefix()).append(".item_master.id = ").append(getPrefix()).append(".inv_onhand.item_id");
sqlBuilder.append(" WHERE ").append(getPrefix()).append(".stock_movement_in.stock_inout_id = ").append(stockInOutId);
log.debug(sqlBuilder.toString());
try {
SQLQuery query = getSession().createSQLQuery(sqlBuilder.toString())
.addScalar("ID", IntegerType.INSTANCE)
.addScalar("ITEM", StringType.INSTANCE)
.addScalar("ITEM_DESC", StringType.INSTANCE)
.addScalar("BARCODE", StringType.INSTANCE)
.addScalar("STATUS", IntegerType.INSTANCE);
List<Object[]> objects = query.list();
int i = 1;
for (Object[] entity : objects) {
StockMovementInView stockMovementInView = new StockMovementInView();
stockMovementInView.setId(Utils.parseInt(entity[0]));
stockMovementInView.setItemId(Utils.parseString(entity[1]));
stockMovementInView.setItemDesc(Utils.parseString(entity[2]));
stockMovementInView.setBarcode(Utils.parseString(entity[3]));
stockMovementInView.setStatus(Utils.parseInt(entity[4]));
stockMovementInViewViews.add(stockMovementInView);
}
} catch (Exception e) {
log.debug("Exception SQL : {}", e);
}
return stockMovementInViewViews;
}
public List<SubIncomingViewReport> findSubReportByStickInoutId(int stockInOutId){
log.debug("findSubReportByStickInoutId(). {}", stockInOutId);
List<SubIncomingViewReport> subIncomingViewReportsList = new ArrayList<SubIncomingViewReport>();
StringBuilder sqlBuilder = new StringBuilder();
// sqlBuilder.append("SELECT ");
// sqlBuilder.append(" ").append(getPrefix()).append(".stock_movement_in.stock_inout_id AS STOCK_INOUT_ID,");
//
// sqlBuilder.append(" coalesce(").append(getPrefix()).append(".stock_movement_in.pallet_barcode,'') AS PALLET_BARCODE,");
// sqlBuilder.append(" coalesce(").append(getPrefix()).append(".stock_movement_in.sn_barcode,'') AS SN_BARCODE,");
// sqlBuilder.append(" coalesce(").append(getPrefix()).append(".inv_onhand.batchno,'') AS BATCH_NO,");
//
//
// //sqlBuilder.append(" ").append(getPrefix()).append(".stock_movement_in.pallet_barcode AS PALLET_BARCODE,");
// //sqlBuilder.append(" ").append(getPrefix()).append(".stock_movement_in.sn_barcode AS SN_BARCODE,");
// //sqlBuilder.append(" ").append(getPrefix()).append(".stock_movement_in.batchno AS BATCH_NO,");
// sqlBuilder.append(" ").append(getPrefix()).append(".item_master.ItemId AS ITEM_ID,");
// sqlBuilder.append(" ").append(getPrefix()).append(".item_master.DSGThaiItemDescription AS ITEM_DESC,");
// sqlBuilder.append(" coalesce(").append(getPrefix()).append(".item_master.DSG_InternalItemId,'') AS ITEM_INTERNAL ,");
//
// sqlBuilder.append(" ").append(getPrefix()).append(".warehouse.warehouse_code AS WAREHOUSE_CODE,");
// sqlBuilder.append(" ").append(getPrefix()).append(".location.location_barcode AS LOCATION_BARCODE,");
// sqlBuilder.append(" coalesce(").append("p2.qty,1) AS QTY");
//
//
// sqlBuilder.append(" FROM ").append(getPrefix()).append(".stock_movement_in");
// sqlBuilder.append(" INNER JOIN ").append(getPrefix()).append(".inv_onhand");
// sqlBuilder.append(" ON ").append(getPrefix()).append(".stock_movement_in.sn_barcode = ").append(getPrefix()).append(".inv_onhand.sn_barcode");
// sqlBuilder.append(" INNER JOIN ").append(getPrefix()).append(".item_master");
// sqlBuilder.append(" ON ").append(getPrefix()).append(".item_master.id = ").append(getPrefix()).append(".inv_onhand.item_id");
//
// //pongwisit<
// sqlBuilder.append(" INNER JOIN ").append(getPrefix()).append(".pallet");
// sqlBuilder.append(" ON ").append(getPrefix()).append(".pallet.id = ").append(getPrefix()).append(".inv_onhand.pallet_id");
// sqlBuilder.append(" INNER JOIN ").append(getPrefix()).append(".warehouse");
// sqlBuilder.append(" ON ").append(getPrefix()).append(".warehouse.id = ").append(getPrefix()).append(".pallet.warehouse_id");
// sqlBuilder.append(" INNER JOIN ").append(getPrefix()).append(".location");
// sqlBuilder.append(" ON ").append(getPrefix()).append(".location.id = ").append(getPrefix()).append(".pallet.location_id");
// sqlBuilder.append(" LEFT JOIN ").append(getPrefix()).append(".pallet p2");
// sqlBuilder.append(" ON ").append("p2.pallet_barcode = ").append(getPrefix()).append(".stock_movement_in.pallet_barcode");
//
// //>pongwisit
//
// sqlBuilder.append(" WHERE ").append(getPrefix()).append(".stock_movement_in.stock_inout_id = ").append(stockInOutId);
// sqlBuilder.append(" SELECT ")
// .append(getPrefix()).append(".stock_movement_in.stock_inout_id AS STOCK_INOUT_ID, ")
// .append(getPrefix()).append(".pallet.pallet_barcode AS PALLET_BARCODE, ")
// .append(getPrefix()).append(".stock_movement_in.sn_barcode AS SN_BARCODE, ")
// .append(getPrefix()).append(".inv_buffer.batchno AS BATCH_NO, ")
// .append(getPrefix()).append(".item_master.ItemId AS ITEM_ID, ")
// .append(getPrefix()).append(".item_master.DSGThaiItemDescription AS ITEM_DESC ")
// .append(" FROM ")
// .append(getPrefix()).append(".stock_movement_in INNER JOIN ")
// .append(getPrefix()).append(".inv_buffer ON ")
// .append(getPrefix()).append(".stock_movement_in.sn_barcode = ")
// .append(getPrefix()).append(".inv_buffer.sn_barcode ")
// .append(" INNER JOIN ")
// .append(getPrefix()).append(".item_master ON ")
// .append(getPrefix()).append(".inv_buffer.item_id = ")
// .append(getPrefix()).append(".item_master.id INNER JOIN ")
// .append(getPrefix()).append(".pallet ON ")
// .append(getPrefix()).append(".inv_buffer.pallet_id = ")
// .append(getPrefix()).append(".pallet.id ")
// .append(" where ")
// .append(getPrefix()).append(".stock_movement_in.stock_inout_id = ").append(stockInOutId);
// 11/11/2015 by bird
// sqlBuilder.append(" select ")
// .append(" count(").append(getPrefix()).append(".stock_movement_in.stock_inout_id) as STOCK_INOUT_ID, ")
// .append(" ").append(getPrefix()).append(".pallet.pallet_barcode as PALLET_BARCODE, ")
// .append(" ").append(getPrefix()).append(".stock_movement_in.sn_barcode as SN_BARCODE, ")
// .append(" ").append(getPrefix()).append(".inv_onhand.batchno as BATCH_NO, ")
// .append(" ").append(getPrefix()).append(".working_area.name as WORKING_NAME, ")
// .append(" ").append(getPrefix()).append(".location.location_barcode as LOCATION_BARCODE, ")
// .append(" ").append(getPrefix()).append(".item_master.ItemId as ITEM_ID, ")
// .append(" ").append(getPrefix()).append(".item_master.DSGThaiItemDescription as ITEM_DESC")
// .append(" FROM ").append(getPrefix()).append(".stock_movement_in ")
// .append(" INNER JOIN ").append(getPrefix()).append(".inv_onhand ON ")
// .append(getPrefix()).append(".stock_movement_in.sn_barcode = ").append(getPrefix()).append(".inv_onhand.sn_barcode ")
// .append(" INNER JOIN ").append(getPrefix()).append(".item_master ON ")
// .append(getPrefix()).append(".inv_onhand.item_id = ").append(getPrefix()).append(".item_master.id ")
//
// .append(" INNER JOIN ").append(getPrefix()).append(".location ON ")
// .append(getPrefix()).append(".inv_onhand.location_id = ").append(getPrefix()).append(".location.id ")
// .append(" INNER JOIN ").append(getPrefix()).append(".working_area ON ")
// .append(getPrefix()).append(".inv_onhand.working_area_id = ").append(getPrefix()).append(".working_area.id ")
//
// .append(" LEFT JOIN ").append(getPrefix()).append(".pallet ON ")
// .append(getPrefix()).append(".inv_onhand.pallet_id = ").append(getPrefix()).append(".pallet.id ")
// .append(" where ").append(getPrefix()).append(".stock_movement_in.stock_inout_id = ").append(stockInOutId)
// .append(" GROUP BY ").append(getPrefix()).append(".stock_movement_in.stock_inout_id, ").append(getPrefix()).append(".pallet.pallet_barcode, ")
// .append(getPrefix()).append(".stock_movement_in.sn_barcode, ").append(getPrefix()).append(".inv_onhand.batchno, ").append(getPrefix()).append(".working_area.name, ")
// .append(getPrefix()).append(".location.location_barcode, ").append(getPrefix()).append(".item_master.ItemId, ").append(getPrefix()).append(".item_master.DSGThaiItemDescription");
sqlBuilder.append(" SELECT ")
.append(" COUNT(").append(getPrefix()).append(".stock_movement_in.stock_inout_id) AS STOCK_INOUT_ID, ")
.append(" COALESCE(").append(getPrefix()).append(".stock_movement_in.pallet_barcode, ' ' ) AS PALLET_BARCODE, ")
.append(" ").append(getPrefix()).append(".stock_movement_in.sn_barcode AS SN_BARCODE, ")
.append(" ").append(getPrefix()).append(".inv_onhand.batchno AS BATCH_NO, ")
.append(" ").append(getPrefix()).append(".warehouse.warehouse_code AS WAREHOUSE, ")
.append(" ").append(getPrefix()).append(".location.location_barcode AS LOCATION_BARCODE, ")
.append(" ").append(getPrefix()).append(".item_master.ItemId AS ITEM_ID, ")
.append(" ").append(getPrefix()).append(".item_master.DSGThaiItemDescription AS ITEM_DESC, ")
.append(" ").append(getPrefix()).append(".item_master.DSG_InternalItemId AS ITEM_INTERNAL ")
.append(" FROM ").append(getPrefix()).append(".stock_movement_in ")
.append(" INNER JOIN ").append(getPrefix()).append(".inv_onhand ")
.append(" ON ").append(getPrefix()).append(".stock_movement_in.sn_barcode = ").append(getPrefix()).append(".inv_onhand.sn_barcode ")
.append(" INNER JOIN ").append(getPrefix()).append(".item_master ")
.append(" ON ").append(getPrefix()).append(".inv_onhand.item_id = ").append(getPrefix()).append(".item_master.id ")
.append(" INNER JOIN ").append(getPrefix()).append(".location ")
.append(" ON ").append(getPrefix()).append(".stock_movement_in.location_id = ").append(getPrefix()).append(".location.id ")
.append(" LEFT JOIN ").append(getPrefix()).append(".warehouse ")
.append(" ON ").append(getPrefix()).append(".location.warehouse_id = ").append(getPrefix()).append(".warehouse.id ")
.append(" WHERE ").append(getPrefix()).append(".stock_movement_in.stock_inout_id = ").append(stockInOutId)
.append(" GROUP BY ").append(getPrefix()).append(".stock_movement_in.stock_inout_id, ").append(getPrefix()).append(".stock_movement_in.pallet_barcode, ")
.append(getPrefix()).append(".stock_movement_in.sn_barcode, ").append(getPrefix()).append(".inv_onhand.batchno, ").append(getPrefix()).append(".warehouse.warehouse_code, ")
.append(getPrefix()).append(".location.location_barcode, ").append(getPrefix()).append(".item_master.ItemId, ").append(getPrefix()).append(".item_master.DSGThaiItemDescription, ")
.append(getPrefix()).append(".item_mASter.DSG_InternalItemId");
log.debug(sqlBuilder.toString());
try {
SQLQuery query = getSession().createSQLQuery(sqlBuilder.toString())
.addScalar("STOCK_INOUT_ID", IntegerType.INSTANCE)
.addScalar("PALLET_BARCODE", StringType.INSTANCE)
.addScalar("SN_BARCODE", StringType.INSTANCE)
.addScalar("BATCH_NO", StringType.INSTANCE)
.addScalar("WAREHOUSE", StringType.INSTANCE)
.addScalar("LOCATION_BARCODE", StringType.INSTANCE)
.addScalar("ITEM_ID", StringType.INSTANCE)
.addScalar("ITEM_DESC", StringType.INSTANCE)
.addScalar("ITEM_INTERNAL", StringType.INSTANCE);
List<Object[]> objects = query.list();
int i = 1;
for (Object[] entity : objects) {
SubIncomingViewReport subIncomingViewReport = new SubIncomingViewReport();
subIncomingViewReport.setNo(i);
subIncomingViewReport.setStockInoutId(Utils.parseInt(entity[0]));
subIncomingViewReport.setPalletBarcode(Utils.parseString(entity[1]));
subIncomingViewReport.setSnBarcode(Utils.parseString(entity[2]));
subIncomingViewReport.setBatchNo(Utils.parseString(entity[3]));
subIncomingViewReport.setWarehouseBarcode(Utils.parseString(entity[4]));
subIncomingViewReport.setLocationBarcode(Utils.parseString(entity[5]));
subIncomingViewReport.setItemNo(Utils.parseString(entity[6]));
subIncomingViewReport.setItemDesc(Utils.parseString(entity[7]));
subIncomingViewReport.setItemInternal(Utils.parseString(entity[8]));
subIncomingViewReportsList.add(subIncomingViewReport);
i++;
}
} catch (Exception e) {
log.debug("Exception SQL : {}", e);
}
return subIncomingViewReportsList;
}
}