elwin_jusuf

CountIncentiveProductList

Oct 13th, 2016
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. package org.jleaf.erp.master.bo.incentive;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.persistence.Query;
  6.  
  7. import org.jleaf.common.entity.OU;
  8. import org.jleaf.core.AbstractBusinessFunction;
  9. import org.jleaf.core.BusinessFunction;
  10. import org.jleaf.core.CoreExceptionConstants;
  11. import org.jleaf.core.Dto;
  12. import org.jleaf.core.annotation.ErrorList;
  13. import org.jleaf.core.annotation.Info;
  14. import org.jleaf.core.annotation.InfoIn;
  15. import org.jleaf.core.annotation.InfoOut;
  16. import org.jleaf.core.dao.CriteriaHelper;
  17. import org.jleaf.core.dao.QueryBuilder;
  18. import org.jleaf.erp.master.dao.IncentiveProductDao;
  19. import org.jleaf.erp.master.entity.IncentiveProduct;
  20. import org.jleaf.erp.master.entity.Partner;
  21. import org.jleaf.erp.master.entity.Product;
  22. import org.jleaf.util.DtoUtil;
  23. import org.jleaf.util.ValidationUtil;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26.  
  27.  
  28. /**
  29. *
  30. * @author Elwin Togatorop
  31. *
  32. */
  33.  
  34. @Service
  35. @InfoIn (value = {
  36. @Info(name = "ouId", description = "ou id", type = Long.class, required = true),
  37. @Info(name = "partnerCodeName", description = "partner code name ", type = String.class),
  38. @Info(name = "productCodeName", description = "product code name", type = String.class),
  39. @Info(name = "dateFrom", description = "date from", type = String.class),
  40. @Info(name = "dateTo", description = "date to", type = String.class),
  41. @Info(name = "tenantLoginId", description = "tenant login id", type = Long.class)
  42. })
  43. @InfoOut (value ={
  44. @Info(name = "count", description = "count", type = Long.class)
  45. })
  46. @ErrorList(errorKeys= {CoreExceptionConstants.PARAMETER_NOT_SPECIFIED})
  47.  
  48. public class CountIncentiveProductList extends AbstractBusinessFunction implements BusinessFunction {
  49. //private static final Logger log = LoggerFactory.getLogger(GetIncentiveProductList.class);
  50. @Autowired
  51. private IncentiveProductDao incentiveProductDao;
  52.  
  53. @Override
  54. public String getDescription() {
  55. return "Count Incentive Product list";
  56. }
  57.  
  58.  
  59. @SuppressWarnings("unchecked")
  60. @Override
  61. public Dto execute(Dto inputDto) throws Exception {
  62. List<Object[]> result = null;
  63.  
  64. ValidationUtil.valBlankOrNull(inputDto, "ouId");
  65. ValidationUtil.valDtoContainsKey(inputDto, "partnerCodeName");
  66. ValidationUtil.valDtoContainsKey(inputDto, "productCodeName");
  67. ValidationUtil.valBlankOrNull(inputDto, "dateFrom");
  68. ValidationUtil.valBlankOrNull(inputDto, "dateTo");
  69. ValidationUtil.valBlankOrNull(inputDto, "tenantLoginId");
  70.  
  71.  
  72. Long ouId = inputDto.getLong("ouId");
  73. Long tenantId = inputDto.getLong("tenantLoginId");
  74. String partnerCodeName = inputDto.getString("partnerCodeName");
  75. String productCodeName = inputDto.getString("productCodeName");
  76. String dateFrom = inputDto.getString("dateFrom");
  77. String dateTo = inputDto.getString("dateTo");
  78.  
  79.  
  80. QueryBuilder builder = new QueryBuilder();
  81. builder.add(" SELECT COUNT (1) FROM ")
  82. .add(OU.TABLE_NAME)
  83. .add(" a INNER JOIN ")
  84. .add(IncentiveProduct.TABLE_NAME)
  85. .add(" d ON a.ou_id = d.ou_id ")
  86. .add(" INNER JOIN ")
  87. .add(Partner.TABLE_NAME)
  88. .add(" b ON ")
  89. .add(" d.partner_id = b.partner_id ")
  90. .add(" INNER JOIN ")
  91. .add(Product.TABLE_NAME)
  92. .add(" c ON c.product_id = d.product_id")
  93. .add(" WHERE d.ou_id = :ouId ")
  94. .add(" AND d.tenant_id = :tenantId")
  95. .addIfNotEmpty(partnerCodeName,
  96. " AND ( "
  97. + CriteriaHelper.likeExpressionIgnoreCase(partnerCodeName, "b.partner_code")
  98. + " OR "
  99. + CriteriaHelper.likeExpressionIgnoreCase(partnerCodeName, "b.partner_name")
  100. + ")")
  101. .addIfNotEmpty(productCodeName,
  102. " AND ("
  103. + CriteriaHelper.likeExpressionIgnoreCase(productCodeName, "c.product_code")
  104. + " OR "
  105. + CriteriaHelper.likeExpressionIgnoreCase(productCodeName, "c.product_name")
  106. +")")
  107. .addIfNotEmpty(inputDto.getString("dateFrom"), " AND d.date_from >= '" + inputDto.getString("dateFrom") + "' ")
  108. .addIfNotEmpty(inputDto.getString("dateTo"), " AND d.date_to <= '" + inputDto.getString("dateTo") + "' ");
  109.  
  110.  
  111. Query q = incentiveProductDao.createNativeQuery(builder.toString());
  112. q.setParameter("ouId", ouId);
  113. q.setParameter("tenantId", tenantId);
  114.  
  115. return new Dto().put("count", q.getSingleResult());
  116. }
  117. }
Add Comment
Please, Sign In to add comment