Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- */
- package org.jleaf.erp.master.bo.partner;
- import java.util.List;
- import javax.persistence.Query;
- import org.jleaf.erp.master.MasterConstants;
- import org.jleaf.erp.master.bo.ComboIdMasterConstants;
- import org.jleaf.erp.master.dao.PartnerDao;
- import org.jleaf.erp.master.entity.CtgrPartner;
- import org.jleaf.erp.master.entity.Partner;
- import org.jleaf.erp.master.entity.PartnerAddress;
- import org.jleaf.erp.master.entity.PartnerType;
- import org.jleaf.erp.master.entity.PolicyPartner;
- import org.jleaf.erp.master.entity.TypePartner;
- import org.jleaf.common.CommonConstants;
- import org.jleaf.common.entity.ComboValue;
- import org.jleaf.common.entity.UserRole;
- import org.jleaf.core.AbstractBusinessFunction;
- import org.jleaf.core.BusinessFunction;
- import org.jleaf.core.CoreExceptionConstants;
- import org.jleaf.core.Dto;
- import org.jleaf.core.GeneralConstants;
- import org.jleaf.core.annotation.ErrorList;
- import org.jleaf.core.annotation.Info;
- import org.jleaf.core.annotation.InfoIn;
- import org.jleaf.core.annotation.InfoOut;
- import org.jleaf.core.dao.CriteriaHelper;
- import org.jleaf.core.dao.CriteriaHelper.CriteriaHelperEnum;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.util.DtoUtil;
- import org.jleaf.util.ValidationUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- /**
- * BusinessFunction: Get partner list by category partner code and keyword of code or name
- *
- * @author WTC, Jun 4, 2012
- * modfied by fredi Dec 11, 2014
- * add criterionHelperenum.BOTH on keyword
- */
- @Service
- @InfoIn(value= {@Info(name="tenantId", description="tenant id", type=Long.class, required=true),
- @Info(name="keyword", description="keyword of code or name", type=String.class),
- @Info(name="ctgrPartnerId", description="category partner id", type=Long.class),
- @Info(name = "userLoginId", description = "user login id", type = Long.class),
- @Info(name = "roleLoginId", description = "role login id", type = Long.class)})
- @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)})
- @ErrorList(errorKeys = {})
- public class GetAuthorizedPartnerListAdvance extends AbstractBusinessFunction implements BusinessFunction {
- @Autowired
- private PartnerDao partnerDao;
- /* (non-Javadoc)
- * @see org.jleaf.core.BusinessObject#getDescription()
- */
- @Override
- public String getDescription() {
- return "Get partner list by category partner code and keyword of code or name";
- }
- /* (non-Javadoc)
- * @see org.jleaf.core.BusinessObject#execute(org.jleaf.core.Dto)
- */
- @SuppressWarnings("unchecked")
- @Override
- public Dto execute(Dto inputDto) throws Exception {
- List<Object[]> result = null;
- ValidationUtil.valDtoContainsKey(inputDto, "tenantId");
- QueryBuilder builder = new QueryBuilder();
- 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, ")
- .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 ")
- .add(Partner.TABLE_NAME)
- .add(" a INNER JOIN ")
- .add(CtgrPartner.TABLE_NAME)
- .add(" b ON b.tenant_id = a.tenant_id AND b.ctgr_partner_id = a.ctgr_partner_id ")
- .add(" INNER JOIN ")
- .add(UserRole.TABLE_NAME)
- .add(" f ON f.user_id = :userLoginId AND f.role_id = :roleLoginId ")
- .add(" INNER JOIN ")
- .add(PolicyPartner.TABLE_NAME)
- .add(" g ON g.ctgr_partner_id = b.ctgr_partner_id AND g.user_role_id = f.user_role_id ")
- .add(" INNER JOIN ")
- .add(ComboValue.TABLE_NAME)
- .add(" d ON d.code = a.rank AND d.combo_id = '" + ComboIdMasterConstants.COMBO_PARTNER_RANK + "' ")
- .add(" LEFT OUTER JOIN ")
- .add(PartnerAddress.TABLE_NAME)
- .add(" c ON c.tenant_id = a.tenant_id AND c.partner_id = a.partner_id AND c.flg_default = :YES ")
- .add(" WHERE a.tenant_id = :tenantId ")
- .add(" AND a.partner_id NOT IN ( ")
- .add(" SELECT z.partner_id FROM ").add(PartnerType.TABLE_NAME).add(" z ")
- .add(" INNER JOIN ").add(TypePartner.TABLE_NAME).add(" y ON z.type_partner_id = y.type_partner_id ")
- .add(" WHERE z.group_partner = :EMPLOYEE ")
- .add(" ) ")
- .addIfNotEquals(inputDto.getLong("ctgrPartnerId"), CommonConstants.ID_NOT_USED," AND b.ctgr_partner_id = " + inputDto.getLong("ctgrPartnerId"))
- .addIfNotEmpty(inputDto.getString("keyword"), new StringBuilder(1024)
- .append(" AND (")
- .append(CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("keyword"), "a.partner_code", CriteriaHelperEnum.BOTH))
- .append(" OR ")
- .append(CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("keyword"), "a.partner_name", CriteriaHelperEnum.BOTH))
- .append(") ").toString())
- .add(" ORDER BY a.partner_name ASC ");
- Query q = partnerDao.createNativeQuery(builder.toString());
- q.setParameter("tenantId", inputDto.getLong("tenantId"));
- q.setParameter("YES", GeneralConstants.YES);
- q.setParameter("EMPLOYEE", MasterConstants.GROUP_PARTNER_CODE_EMPLOYEE);
- q.setParameter("userLoginId", inputDto.getLong("userLoginId"));
- q.setParameter("roleLoginId", inputDto.getLong("roleLoginId"));
- // id, code, name, ctgrPartnerId, extName, npwpId, holdingId, flagHolding, rank, active, phone1, phone2, fax1, fax2
- result = q.getResultList();
- return new Dto().putList("partnerList", DtoUtil.createDtoListFromArray(result,
- "id", "code", "name", "ctgrPartnerId", "ctgrPartnerCode", "ctgrPartnerName", "extName", "npwpId", "holdingId", "flagHolding", "rankCode", "rankPropKey", "active", "version",
- "phone1", "phone2", "fax1", "fax2"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement