Advertisement
aadddrr

GetAuthorizedTopSellingProductBalanceStockListForRequestGood

Mar 30th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.81 KB | None | 0 0
  1. package org.jleaf.erp.inv.bo.productbalancestock;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.persistence.Query;
  6.  
  7. import org.jleaf.common.entity.UserRole;
  8. import org.jleaf.core.AbstractBusinessFunction;
  9. import org.jleaf.core.BusinessFunction;
  10. import org.jleaf.core.CoreException;
  11. import org.jleaf.core.CoreExceptionConstants;
  12. import org.jleaf.core.Dto;
  13. import org.jleaf.core.GeneralConstants;
  14. import org.jleaf.core.annotation.ErrorList;
  15. import org.jleaf.core.annotation.Info;
  16. import org.jleaf.core.annotation.InfoIn;
  17. import org.jleaf.core.annotation.InfoOut;
  18. import org.jleaf.core.dao.CriteriaHelper;
  19. import org.jleaf.core.dao.QueryBuilder;
  20. import org.jleaf.erp.inv.bo.InventoryCustomConstantsForXCom;
  21. import org.jleaf.erp.inv.dao.InventoryDao;
  22. import org.jleaf.erp.inv.entity.ProductBalance;
  23. import org.jleaf.erp.inv.entity.ProductBalanceStock;
  24. import org.jleaf.erp.master.entity.CtgrProduct;
  25. import org.jleaf.erp.master.entity.PolicyProduct;
  26. import org.jleaf.erp.master.entity.PolicyWarehouse;
  27. import org.jleaf.erp.master.entity.Product;
  28. import org.jleaf.erp.master.entity.SubCtgrProduct;
  29. import org.jleaf.erp.master.entity.Uom;
  30. import org.jleaf.erp.master.entity.Warehouse;
  31. import org.jleaf.util.DtoUtil;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.stereotype.Service;
  34.  
  35. /**
  36.  *
  37.  * @author Adrian
  38.  * Mar 30, 2017
  39.  */
  40.  
  41. @Service
  42. @InfoIn(value = {
  43.         @Info(name = "tenantId", description = "tenant id", type = Long.class),
  44.         @Info(name = "warehouseId", description = "warehouse from id", type = Long.class),
  45.         @Info(name = "subCtgrProductId", description = "sub ctgr product id", type = Long.class),
  46.         @Info(name = "productCodeName", description = "product code / name", type = String.class),
  47.         @Info(name = "serialNumber", description = "serial No", type = String.class),
  48.         @Info(name = "dateFrom", description = "date from", type = String.class),
  49.         @Info(name = "dateTo", description = "date to", type = String.class),
  50.         @Info(name = "ouId", description = "ou id warehouse from", type = Long.class),
  51.         @Info(name = "active", description = "flag product active / tidak", type = String.class),
  52.         @Info(name = "userLoginId", description = "user login id", type = Long.class),
  53.         @Info(name = "roleLoginId", description = "role login id", type = Long.class),
  54.         @Info(name = "limit", description = "limit", type = Long.class),
  55.         @Info(name = "offset", description = "offset", type = Long.class)
  56. })
  57. @InfoOut(value = {
  58.         @Info(name = "productBalanceStockList", description = "list of product balance stock (id, warehouseId, warehouseCode, warehouseName, productId, productCode, productName, ctgrProductId, ctgrProductCode, ctgrProductName, subCtgrProductId, subCtgrProductCode, subCtgrProductName, productBalanceId, serialNumber, lotNumber, productExpiredDate, productYearMade, qty, baseUomId, baseUomCode, baseUomName, minQty, maxQty, productStatus)", type = List.class)
  59. })
  60. @ErrorList(errorKeys = {
  61.         CoreExceptionConstants.DTO_CANNOT_NULL
  62. })
  63. public class GetAuthorizedTopSellingProductBalanceStockListForRequestGoodsTransferOut extends AbstractBusinessFunction implements BusinessFunction {
  64.    
  65.     @Autowired
  66.     InventoryDao inventoryDao;
  67.  
  68.     public String getDescription() {
  69.         return "get authorized product balance stock list for goods transfer";
  70.     }
  71.  
  72.     @SuppressWarnings("unchecked")
  73.     public Dto execute(Dto inputDto) throws Exception {
  74.         if (inputDto == null) {
  75.             throw new CoreException(CoreExceptionConstants.DTO_CANNOT_NULL);
  76.         }
  77.  
  78.         List<Object[]> result = null;
  79.        
  80.         QueryBuilder builder = new QueryBuilder();
  81.         builder.add("SELECT a.product_balance_stock_id, a.warehouse_id, b.warehouse_code, b.warehouse_name, a.product_id, c.product_code, c.product_name, c.ctgr_product_id, d.ctgr_product_code, d.ctgr_product_name, c.sub_ctgr_product_id, e.sub_ctgr_product_code, e.sub_ctgr_product_name, a.product_balance_id, f.serial_number, f.lot_number, f.product_expired_date, f.product_year_made, SUM(a.qty) AS qty, c.base_uom_id, g.uom_code, g.uom_name, c.min_qty, c.max_qty, a.product_status FROM ")
  82.                .add(ProductBalanceStock.TABLE_NAME)
  83.                .add(" a INNER JOIN ")
  84.                .add(Warehouse.TABLE_NAME)
  85.                .add(" b ON a.warehouse_id = b.warehouse_id ")
  86.                .add(" INNER JOIN ")
  87.                .add(Product.TABLE_NAME)
  88.                .add(" c ON a.product_id = c.product_id ")
  89.                .add(" INNER JOIN ")
  90.                .add(CtgrProduct.TABLE_NAME)
  91.                .add(" d ON c.ctgr_product_id = d.ctgr_product_id ")
  92.                .add(" INNER JOIN ")
  93.                .add(SubCtgrProduct.TABLE_NAME)
  94.                .add(" e ON c.sub_ctgr_product_id = e.sub_ctgr_product_id ")
  95.                .add(" INNER JOIN ")
  96.                .add(ProductBalance.TABLE_NAME)
  97.                .add(" f ON a.product_balance_id = f.product_balance_id ")
  98.                .add(" INNER JOIN ")
  99.                .add(Uom.TABLE_NAME)
  100.                .add(" g ON c.base_uom_id = g.uom_id ")
  101.                .add(" INNER JOIN ")
  102.                .add(UserRole.TABLE_NAME)
  103.                .add(" h ON h.user_id = :userLoginId AND h.role_id = :roleLoginId ")
  104.                .add(" INNER JOIN ")
  105.                .add(PolicyProduct.TABLE_NAME)
  106.                .add(" i ON i.sub_ctgr_product_id = c.sub_ctgr_product_id AND i.user_role_id = h.user_role_id ")
  107.                .add(" INNER JOIN ")
  108.                .add(PolicyWarehouse.TABLE_NAME)
  109.                .add(" j ON j.warehouse_id = a.warehouse_id AND j.user_role_id = h.user_role_id ")
  110.                .add(" WHERE a.tenant_id = :tenantId ")
  111.                .addIfNotEquals(inputDto.getLong("warehouseId"), GeneralConstants.NULL_REF_VALUE_LONG, " AND a.warehouse_id = " + inputDto.getLong("warehouseId") + " ")
  112.                .addIfNotEquals(inputDto.getLong("subCtgrProductId"), GeneralConstants.NULL_REF_VALUE_LONG, " AND c.sub_ctgr_product_id = " + inputDto.getLong("subCtgrProductId") + " ")
  113.                .addIfNotEmpty(inputDto.getString("productCodeName"), " AND (" + CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("productCodeName"), "c.product_code") + " OR " + CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("productCodeName"), "c.product_name") + ")")
  114.                .addIfNotEmpty(inputDto.getString("serialNumber"), " AND " + CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("serialNumber"), "f.serial_number"))
  115.                .addIfNotEmpty(inputDto.getString("active"), " AND c.active = '" + inputDto.getString("active") + "'")
  116.                .add(" AND A.product_id IN ( SELECT L.product_id FROM ")
  117.                .add(InventoryCustomConstantsForXCom.I_TRX_POS_TABLE_NAME)
  118.                .add(" K INNER JOIN ")
  119.                .add(InventoryCustomConstantsForXCom.I_TRX_POS_ITEM_TABLE_NAME)
  120.                .add(" L ON K.trx_pos_id = L.trx_pos_id AND K.tenant_id = L.tenant_id AND K.process_no = L.process_no ")
  121.                .add(" INNER JOIN ")
  122.                .add(InventoryCustomConstantsForXCom.M_COMMISION_OU_TABLE_NAME)
  123.                .add(" M ON L.tenant_id = M.tenant_id AND L.group_product_ou_id = M.group_product_ou_id ")
  124.                .add(" WHERE K.tenant_id = :tenantId AND K.ou_id = :ouId AND K.doc_date BETWEEN :dateFrom AND :dateTo AND K.doc_date BETWEEN M.date_from AND M.date_to AND M.flg_promo = :NO ")
  125.                .add(" AND NOT EXISTS( SELECT 1 FROM ")
  126.                .add(InventoryCustomConstantsForXCom.I_TRX_LOG_VOIDED_POS_TABLE_NAME)
  127.                .add(" N WHERE K.tenant_id = N.tenant_id AND K.doc_no = N.doc_no AND K.doc_date = N.doc_date AND K.ou_id = N.ou_id ) ")
  128.                .add(" GROUP BY L.product_id ) ")
  129.                .add(" GROUP BY a.product_balance_stock_id, a.warehouse_id, b.warehouse_code, b.warehouse_name, a.product_id, c.product_code, c.product_name, c.ctgr_product_id, d.ctgr_product_code, d.ctgr_product_name, c.sub_ctgr_product_id, e.sub_ctgr_product_code, e.sub_ctgr_product_name, a.product_balance_id, f.serial_number, f.lot_number, f.product_expired_date, f.product_year_made, c.base_uom_id, g.uom_code, g.uom_name, c.min_qty, c.max_qty, a.product_status ");
  130.    
  131.                
  132.         Query q = inventoryDao.createNativeQuery(builder.toString());
  133.         q.setParameter("tenantId", inputDto.getLong("tenantId"));
  134.         q.setParameter("userLoginId", inputDto.getLong("userLoginId"));
  135.         q.setParameter("roleLoginId", inputDto.getLong("roleLoginId"));
  136.         q.setParameter("dateFrom", inputDto.getString("dateFrom"));
  137.         q.setParameter("dateTo", inputDto.getString("dateTo"));
  138.         q.setParameter("NO", GeneralConstants.NO);
  139.         q.setParameter("ouId", inputDto.getLong("ouId"));
  140.  
  141.         Long limit = inputDto.getLong("limit");
  142.         Long offset = inputDto.getLong("offset");
  143.         if(limit!=null && offset!=null){
  144.             q.setMaxResults(limit.intValue());
  145.             q.setFirstResult(offset.intValue());
  146.         }
  147.        
  148.         result = q.getResultList();
  149.         return new Dto().putList("productBalanceStockList", DtoUtil.createDtoListFromArray(result,
  150.                 "id", "warehouseId", "warehouseCode", "warehouseName", "productId", "productCode", "productName", "ctgrProductId", "ctgrProductCode", "ctgrProductName", "subCtgrProductId", "subCtgrProductCode", "subCtgrProductName", "productBalanceId", "serialNumber", "lotNumber", "productExpiredDate", "productYearMade", "qty", "baseUomId", "baseUomCode", "baseUomName", "minQty", "maxQty", "productStatus"));
  151.     }
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement