Advertisement
aadddrr

GetAuthorizedPartnerListAdvance

Oct 29th, 2018
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.98 KB | None | 0 0
  1. /**
  2.  *
  3.  */
  4. package org.jleaf.erp.master.bo.partner;
  5.  
  6. import java.util.List;
  7.  
  8. import javax.persistence.Query;
  9.  
  10. import org.jleaf.erp.master.MasterConstants;
  11. import org.jleaf.erp.master.bo.ComboIdMasterConstants;
  12. import org.jleaf.erp.master.dao.PartnerDao;
  13. import org.jleaf.erp.master.entity.CtgrPartner;
  14. import org.jleaf.erp.master.entity.Partner;
  15. import org.jleaf.erp.master.entity.PartnerAddress;
  16. import org.jleaf.erp.master.entity.PartnerType;
  17. import org.jleaf.erp.master.entity.PolicyPartner;
  18. import org.jleaf.erp.master.entity.TypePartner;
  19. import org.jleaf.common.CommonConstants;
  20. import org.jleaf.common.entity.ComboValue;
  21. import org.jleaf.common.entity.UserRole;
  22. import org.jleaf.core.AbstractBusinessFunction;
  23. import org.jleaf.core.BusinessFunction;
  24. import org.jleaf.core.CoreExceptionConstants;
  25. import org.jleaf.core.Dto;
  26. import org.jleaf.core.GeneralConstants;
  27. import org.jleaf.core.annotation.ErrorList;
  28. import org.jleaf.core.annotation.Info;
  29. import org.jleaf.core.annotation.InfoIn;
  30. import org.jleaf.core.annotation.InfoOut;
  31. import org.jleaf.core.dao.CriteriaHelper;
  32. import org.jleaf.core.dao.CriteriaHelper.CriteriaHelperEnum;
  33. import org.jleaf.core.dao.QueryBuilder;
  34. import org.jleaf.util.DtoUtil;
  35. import org.jleaf.util.ValidationUtil;
  36. import org.springframework.beans.factory.annotation.Autowired;
  37. import org.springframework.stereotype.Service;
  38.  
  39. /**
  40.  * BusinessFunction: Get partner list by category partner code and keyword of code or name
  41.  *
  42.  * @author WTC, Jun 4, 2012
  43.  * modfied by fredi Dec 11, 2014
  44.  * add criterionHelperenum.BOTH on keyword
  45.  */
  46. @Service
  47. @InfoIn(value= {@Info(name="tenantId", description="tenant id", type=Long.class, required=true),
  48.                 @Info(name="keyword", description="keyword of code or name", type=String.class),
  49.                 @Info(name="ctgrPartnerId", description="category partner id", type=Long.class),
  50.                 @Info(name = "userLoginId", description = "user login id", type = Long.class),
  51.                 @Info(name = "roleLoginId", description = "role login id", type = Long.class)})
  52. @InfoOut(value={@Info(name = "partnerList", description = "list of partner (id, code, name, ctgrPartnerId, ctgrPartnerCode, ctgrPartnerName, extName, npwpId, holdingId, flagHolding, rankCode, rankPropKey, active, version, phone1, phone2, fax1, fax2)", type = List.class)})
  53. @ErrorList(errorKeys = {})
  54. public class GetAuthorizedPartnerListAdvance extends AbstractBusinessFunction implements BusinessFunction {
  55.  
  56.     @Autowired
  57.     private PartnerDao partnerDao;
  58.    
  59.     /* (non-Javadoc)
  60.      * @see org.jleaf.core.BusinessObject#getDescription()
  61.      */
  62.     @Override
  63.     public String getDescription() {
  64.         return "Get partner list by category partner code and keyword of code or name";
  65.     }
  66.  
  67.     /* (non-Javadoc)
  68.      * @see org.jleaf.core.BusinessObject#execute(org.jleaf.core.Dto)
  69.      */
  70.     @SuppressWarnings("unchecked")
  71.     @Override
  72.     public Dto execute(Dto inputDto) throws Exception {
  73.         List<Object[]> result = null;
  74.        
  75.         ValidationUtil.valDtoContainsKey(inputDto, "tenantId");
  76.  
  77.         QueryBuilder builder = new QueryBuilder();
  78.         builder.add("SELECT a.partner_id, a.partner_code, a.partner_name, a.ctgr_partner_id, b.ctgr_partner_code, b.ctgr_partner_name, a.partner_ext_name, a.npwp_id, a.holding_id, ")
  79.                .add(" a.flg_holding, a.rank, d.prop_key, a.active, a.version, COALESCE(c.phone1, ''), COALESCE(c.phone2, ''), COALESCE(c.fax1, ''), COALESCE(c.fax2, '') FROM ")
  80.                .add(Partner.TABLE_NAME)
  81.                .add(" a INNER JOIN ")
  82.                .add(CtgrPartner.TABLE_NAME)
  83.                .add(" b ON b.tenant_id = a.tenant_id AND b.ctgr_partner_id = a.ctgr_partner_id ")
  84.                .add(" INNER JOIN ")
  85.                .add(UserRole.TABLE_NAME)
  86.                .add(" f ON f.user_id = :userLoginId AND f.role_id = :roleLoginId ")
  87.                .add(" INNER JOIN ")
  88.                .add(PolicyPartner.TABLE_NAME)
  89.                .add(" g ON g.ctgr_partner_id = b.ctgr_partner_id AND g.user_role_id = f.user_role_id ")
  90.                .add(" INNER JOIN ")
  91.                .add(ComboValue.TABLE_NAME)
  92.                .add(" d ON d.code = a.rank AND d.combo_id = '" + ComboIdMasterConstants.COMBO_PARTNER_RANK + "' ")
  93.                .add(" LEFT OUTER JOIN ")
  94.                .add(PartnerAddress.TABLE_NAME)
  95.                .add(" c ON c.tenant_id = a.tenant_id AND c.partner_id = a.partner_id AND c.flg_default = :YES ")
  96.                .add(" WHERE a.tenant_id = :tenantId ")
  97.                .add(" AND a.partner_id NOT IN ( ")
  98.                .add("      SELECT z.partner_id FROM ").add(PartnerType.TABLE_NAME).add(" z ")
  99.                .add("      INNER JOIN ").add(TypePartner.TABLE_NAME).add(" y ON z.type_partner_id = y.type_partner_id ")
  100.                .add("      WHERE z.group_partner = :EMPLOYEE ")
  101.                .add(" ) ")
  102.                .addIfNotEquals(inputDto.getLong("ctgrPartnerId"), CommonConstants.ID_NOT_USED," AND b.ctgr_partner_id = " + inputDto.getLong("ctgrPartnerId"))
  103.                .addIfNotEmpty(inputDto.getString("keyword"), new StringBuilder(1024)
  104.                        .append(" AND (")
  105.                        .append(CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("keyword"), "a.partner_code", CriteriaHelperEnum.BOTH))
  106.                        .append(" OR ")
  107.                        .append(CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("keyword"), "a.partner_name", CriteriaHelperEnum.BOTH))
  108.                        .append(") ").toString())
  109.                .add(" ORDER BY a.partner_name ASC ");
  110.        
  111.         Query q = partnerDao.createNativeQuery(builder.toString());
  112.         q.setParameter("tenantId", inputDto.getLong("tenantId"));
  113.         q.setParameter("YES", GeneralConstants.YES);
  114.         q.setParameter("EMPLOYEE", MasterConstants.GROUP_PARTNER_CODE_EMPLOYEE);
  115.         q.setParameter("userLoginId", inputDto.getLong("userLoginId"));
  116.         q.setParameter("roleLoginId", inputDto.getLong("roleLoginId"));
  117.  
  118.         // id, code, name, ctgrPartnerId, extName, npwpId, holdingId, flagHolding, rank, active, phone1, phone2, fax1, fax2
  119.         result = q.getResultList();
  120.         return new Dto().putList("partnerList", DtoUtil.createDtoListFromArray(result,
  121.                 "id", "code", "name", "ctgrPartnerId", "ctgrPartnerCode", "ctgrPartnerName", "extName", "npwpId", "holdingId", "flagHolding", "rankCode", "rankPropKey", "active", "version",
  122.                 "phone1", "phone2", "fax1", "fax2"));
  123.        
  124.        
  125.     }
  126.  
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement