Advertisement
aadddrr

GetApprovedSoMlmListForNewSalesSupportByArea

Jul 17th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.01 KB | None | 0 0
  1. package org.jleaf.erp.sls.bo.newinquirysomlmforss;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.persistence.Query;
  6.  
  7. import org.jleaf.core.AbstractBusinessFunction;
  8. import org.jleaf.core.BusinessFunction;
  9. import org.jleaf.core.Dto;
  10. import org.jleaf.core.GeneralConstants;
  11. import org.jleaf.core.annotation.Info;
  12. import org.jleaf.core.annotation.InfoIn;
  13. import org.jleaf.core.annotation.InfoOut;
  14. import org.jleaf.core.dao.CriteriaHelper;
  15. import org.jleaf.core.dao.CriteriaHelper.CriteriaHelperEnum;
  16. import org.jleaf.core.dao.QueryBuilder;
  17. import org.jleaf.erp.master.entity.Partner;
  18. import org.jleaf.erp.master.entity.Product;
  19. import org.jleaf.erp.master.entity.ProductCatalog;
  20. import org.jleaf.erp.mlm.entity.Ds;
  21. import org.jleaf.erp.mlm.entity.DsArea;
  22. import org.jleaf.erp.sls.SalesMlmConstantsForPaloma;
  23. import org.jleaf.erp.sls.dao.SalesOrderMlmDao;
  24. import org.jleaf.erp.sls.entity.SalesOrderMlm;
  25. import org.jleaf.erp.sls.entity.SalesOrderMlmItem;
  26. import org.jleaf.erp.sls.entity.SoApprovedStatus;
  27. import org.jleaf.util.DtoUtil;
  28. import org.slf4j.Logger;
  29. import org.slf4j.LoggerFactory;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.stereotype.Service;
  32.  
  33. /**
  34.  *
  35.  * @author Julius, 24 Jan 2018
  36.  *
  37.  */
  38.  
  39. @Service
  40. @InfoIn(value = {
  41.         @Info(name = "tenantLoginId", description = "tenant login id", type = Long.class),
  42.         @Info(name = "partnerId", description = "partner id ", type = Long.class, required = false),
  43.         @Info(name = "ouId", description = "ou id ", type = Long.class, required = false),
  44.         @Info(name = "startDate", description = "start date", type = String.class, required = false),
  45.         @Info(name = "endDate", description = "end date", type = String.class, required = false),
  46.         @Info(name = "docNo", description = "doc no", type = String.class, required = false),
  47.         @Info(name = "flgPicking", description = "flag Picking", type = String.class, required = false),
  48.         @Info(name = "flgScan", description = "flag Scan", type = String.class, required = false),
  49.         @Info(name = "flgPacking", description = "flag Packing", type = String.class, required = false),
  50.         @Info(name = "flgShipment", description = "flg Shipment", type = String.class, required = false),
  51.         @Info(name = "flgDropship", description = "flg Dropship", type = String.class, required = false),
  52.         @Info(name = "statusSo", description = "status So", type = String.class, required = false),
  53.         @Info(name = "sortById", description = "sort by 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 = { @Info(name = "soMlmList", description = "list so mlm(soId,tenantId,docNo,docDate,partnerId,partnerName,partnerCode,remark,flgPicking,flgScan,flgPacking,flgDelivery,statusDoc, totalHargaNetto, nilaiKomisi, totalPembelian, additionalCost, nextRoleForSubmit,autoApprovalTime,autoApprovalName,ssApprovalTime,ssApprovalName,financeApprovalTime,financeApprovalName,lastScanPickingTime,lastScanPickingName, flgSoOnline)", type = List.class) })
  58.  
  59. public class GetApprovedSoMlmListForNewSalesSupportByArea extends AbstractBusinessFunction implements
  60.         BusinessFunction {
  61.    
  62.     @SuppressWarnings("unused")
  63.     private static final Logger log = LoggerFactory.getLogger(GetApprovedSoMlmListForNewSalesSupportByArea.class);
  64.  
  65.     @Autowired
  66.     SalesOrderMlmDao salesOrderMlmDao;
  67.  
  68.     public String getDescription() {
  69.         return "sales order mlm approved List";
  70.     }
  71.  
  72.     @SuppressWarnings("unchecked")
  73.     public Dto execute(Dto inputDto) throws Exception {
  74.         List<Object[]> result = null;
  75.         //log.info("ini isi input dto di get approved"+inputDto);
  76.        
  77.         String sortField = inputDto.getString("sortField");
  78.         String sortOrder = inputDto.getString("sortOrder");
  79.         String productCodeName = inputDto.getString("productCodeName");
  80.         String productCatalogCodeName = inputDto.getString("productCatalogCodeName");
  81.        
  82.         StringBuilder dynamicQuery = new StringBuilder(200);
  83.         //String dynamicQuery = GeneralConstants.EMPTY_VALUE;
  84.        
  85.         if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_PEMBELIAN )){
  86.             dynamicQuery.append(" ORDER BY total_pembelian ");
  87.         }else if (sortField.equals(SalesMlmConstantsForPaloma.DOC_NO)){
  88.             dynamicQuery.append(" ORDER BY A.doc_no ");
  89.         }else if (sortField.equals(SalesMlmConstantsForPaloma.DOC_DATE)){
  90.             dynamicQuery.append(" ORDER BY A.doc_date ");
  91.         }else if (sortField.equals(SalesMlmConstantsForPaloma.PARTNER_CODE)){
  92.             dynamicQuery.append(" ORDER BY B.partner_code ");
  93.         }else if (sortField.equals(SalesMlmConstantsForPaloma.PARTNER_NAME)){
  94.             dynamicQuery.append(" ORDER BY B.partner_name ");
  95.         }else if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_HARGA_MEMBER)){
  96.             dynamicQuery.append(" ORDER BY total_harga_member ");
  97.         }else if (sortField.equals(SalesMlmConstantsForPaloma.NEXT_ROLE_FOR_SUBMIT)){
  98.             dynamicQuery.append(" ORDER BY next_role_for_submit ");
  99.         }else if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_HARGA_MEMBER_TERKIRIM)){
  100.             dynamicQuery.append(" ORDER BY total_harga_member_terkirim ");
  101.         }else if (sortField.equals(SalesMlmConstantsForPaloma.TOTAL_PEMBELIAN_TERKIRIM)){
  102.             dynamicQuery.append(" ORDER BY total_pembelian_terkirim ");
  103.         }else if (sortField.equals(SalesMlmConstantsForPaloma.DS_AREA)){
  104.             dynamicQuery.append(" ORDER BY I.area_name ");
  105.         }
  106.        
  107.         if (sortOrder.equals(SalesMlmConstantsForPaloma.DECENDING)){
  108.             dynamicQuery.append(" DESC ");
  109.         }else if (sortOrder.equals(SalesMlmConstantsForPaloma.ASCENDING)){
  110.             dynamicQuery.append(" ASC ");
  111.         }
  112.        
  113.         QueryBuilder builder = new QueryBuilder();
  114.         builder.add(" SELECT A.so_mlm_id, A.tenant_id, A.doc_no, ")
  115.                 .add(" to_char(to_timestamp(A.doc_date, 'YYYYMMDDHH24MISS'),'DD-MM-YYYY') AS docDate,")
  116.                 .add(" A.partner_id, ")
  117.                 .add(" B.partner_name, B.partner_code, A.remark, A.flg_picking, ")
  118.                 .add(" A.flg_scan, A.flg_packing, A.flg_shipment, A.flg_dropship, A.ou_id, A.status_doc, ")
  119.                 .add(" CASE WHEN C.last_print_picking_time != '' THEN  to_char(to_timestamp(C.last_print_picking_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END  AS waktu_cetak_so, ")
  120.                 .add(" C.last_print_picking_user, ")
  121.                 .add(" TRIM(TO_CHAR(D.total_catalog_price_amount, '999G999G999G999G990')) AS total_catalog_price_amount, TRIM(TO_CHAR(D.delivered_total_catalog_price_amount, '999G999G999G999G990')) AS delivered_total_catalog_price_amount, ")
  122.                 .add(" TRIM(TO_CHAR(D.total_member_price_amount, '999G999G999G999G990')) AS total_harga_member, TRIM(TO_CHAR(D.delivered_total_member_price_amount, '999G999G999G999G990')) AS total_harga_member_terkirim, ")
  123.                 .add(" TRIM(TO_CHAR(D.total_commission_amount, '999G999G999G999G990')) AS total_commission_amount, TRIM(TO_CHAR(D.delivered_total_commission_amount, '999G999G999G999G990')) AS delivered_total_commission_amount, ")
  124.                 .add(" TRIM(TO_CHAR(D.total_invoiced_amount, '999G999G999G999G990')) AS total_pembelian, TRIM(TO_CHAR(D.delivered_total_invoiced_amount, '999G999G999G999G990')) AS total_pembelian_terkirim, ")
  125.                 .add(" TRIM(TO_CHAR(D.total_additional_cost, '999G999G999G999G990')) AS total_additional_cost, TRIM(TO_CHAR(D.delivered_total_additional_cost, '999G999G999G999G990')) AS delivered_total_additional_cost, ")
  126.                 .add(" TRIM(TO_CHAR(D.total_member_price_amount, '999G999G999G999G990')) AS total_harga_netto, TRIM(TO_CHAR((D.delivered_total_member_price_amount - D.delivered_total_commission_amount), '999G999G999G999G990')) AS delivered_total_harga_netto, ")
  127.                 .add(" f_get_next_role_for_submit_inquiry_so_mlm_for_paloma(A.tenant_id, A.so_mlm_id) AS next_role_for_submit, ")
  128.                 .add(" CASE WHEN C.last_auto_approve_time != '' THEN to_char(to_timestamp(C.last_auto_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS autoApprovalTime, ")
  129.                 .add(" COALESCE(C.last_auto_approve_user,'') AS autoApprovalName, ")
  130.                 .add(" CASE WHEN C.last_ss_approve_time != '' THEN to_char(to_timestamp(C.last_ss_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS ssApprovalTime, ")
  131.                 .add(" COALESCE(C.last_ss_approve_user,'') AS ssApprovalName, ")
  132.                 .add(" CASE WHEN C.last_fin_approve_time != '' THEN to_char(to_timestamp(C.last_fin_approve_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END AS financeApprovalTime, ")
  133.                 .add(" COALESCE(C.last_fin_approve_user,'') AS financeApprovalName, ")
  134.                 .add(" CASE WHEN C.last_scan_picking_time != '' THEN to_char(to_timestamp(C.last_scan_picking_time, 'YYYYMMDDHH24MISS'),'DD-MON-YYYY HH24:MI:SS') ELSE '' END  AS lastScanPickingTime, ")
  135.                 .add(" COALESCE(C.last_scan_picking_user,'') AS lastScanPickingName, ")
  136.                 .add(" A.status_so, A.so_mlm_id, A.version,A.flg_tutup_so, A.workflow_status, I.area_name ")
  137.                 .add(" , :YES AS flgSoOnline ")
  138.                 .add(" FROM ").add(SalesOrderMlm.TABLE_NAME).add(" A ")
  139.                 .add(" INNER JOIN ").add(Partner.TABLE_NAME).add(" B on B.partner_id = A.partner_id ")
  140.                 .add(" LEFT JOIN ").add(SoApprovedStatus.TABLE_NAME).add(" C ON A.so_mlm_id = C.so_mlm_id ")
  141.                 .add(" INNER JOIN sl_so_mlm_totals D ON A.so_mlm_id = D.so_mlm_id ")
  142.                 .add(" INNER JOIN ").add(Ds.TABLE_NAME).add(" H ON A.partner_id = H.partner_id ")
  143.                 .add(" INNER JOIN ").add(DsArea.TABLE_NAME).add(" I ON H.ds_area_id = I.ds_area_id ")
  144.                 .add(" WHERE A.status_so IN ").add(inputDto.getString("statusSo"))
  145.                 .add(" AND f_authorize_user_role_policy_ds_area(:tenantLoginId,:userLoginId,:roleLoginId,H.ds_area_id) = 1 ")
  146.                 .add(" AND A.doc_date BETWEEN :startDate AND :endDate")
  147.                 .add(" AND A.ou_id = :ouId")
  148.                 .addIfNotEquals(inputDto.get("tenantLoginId"), GeneralConstants.NULL_REF_VALUE_LONG,  " AND A.tenant_id = :tenantLoginId ")
  149.                 .addIfNotNull(inputDto.get("docNo")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("docNo"), " A.doc_no ", CriteriaHelperEnum.BOTH))
  150.                 .addIfNotNull(inputDto.get("flgDropship")," AND "+ CriteriaHelper.likeExpressionIgnoreCase(inputDto.getString("flgDropship"), " A.flg_dropship "))
  151.                 .addIfNotEquals(inputDto.get("partnerId"), GeneralConstants.NULL_REF_VALUE_LONG, " AND A.partner_id = "+inputDto.getLong("partnerId"))
  152.                 .add(" AND NOT EXISTS ( SELECT 1 from sl_so_mlm_cicilan_status Y WHERE Y.so_mlm_id=A.so_mlm_id ) ");
  153.                
  154.         if(!productCatalogCodeName.equals(GeneralConstants.EMPTY_VALUE) || !productCodeName.equals(GeneralConstants.EMPTY_VALUE)){
  155.         builder.add(" AND EXISTS ( ")
  156.                 .add(" SELECT 1 FROM ")
  157.                 .add(SalesOrderMlm.TABLE_NAME).add(" D ")
  158.                 .add(" INNER JOIN ").add(SalesOrderMlmItem.TABLE_NAME).add(" E ON E.so_mlm_id = D.so_mlm_id")
  159.                 .add(" INNER JOIN ").add(ProductCatalog.TABLE_NAME).add(" F ON E.product_catalog_id = F.product_catalog_id")
  160.                 .add(" INNER JOIN ").add(Product.TABLE_NAME).add(" G ON F.product_id = G.product_id")
  161.                 .add(" WHERE D.so_mlm_id = A.so_mlm_id ")
  162.                 .addIfNotEmpty(productCatalogCodeName , new StringBuilder().append(" AND (").append(CriteriaHelper.likeExpressionIgnoreCase(productCatalogCodeName, " F.product_catalog_code "))
  163.                         .append(" OR ").append(CriteriaHelper.likeExpressionIgnoreCase(productCatalogCodeName, " F.product_catalog_name ")).append(")").toString())
  164.                 .addIfNotEmpty(productCodeName , new StringBuilder().append(" AND (").append(CriteriaHelper.likeExpressionIgnoreCase(productCodeName, " G.product_code "))
  165.                         .append(" OR ").append(CriteriaHelper.likeExpressionIgnoreCase(productCodeName, " G.product_name ")).append(")").toString())
  166.                 .add(" GROUP BY D.so_mlm_id ")
  167.                 .add(" ) ");
  168.         }
  169.         builder.add(" GROUP BY A.so_mlm_id, A.tenant_id, A.doc_no, A.doc_date, A.partner_id, B.partner_name, B.partner_code, ")
  170.                 .add(" A.remark, A.flg_picking, A.flg_scan, A.flg_packing, A.flg_shipment, A.flg_dropship, A.ou_id, A.status_doc, ")
  171.                 .add(" C.last_print_picking_time, C.last_print_picking_user, C.last_fin_approve_time, C.last_fin_approve_user, ")
  172.                 .add(" C.last_auto_approve_time, C.last_auto_approve_user, C.last_ss_approve_time, C.last_ss_approve_user,")
  173.                 .add(" C.last_scan_picking_time,  C.last_scan_picking_user, D.total_catalog_price_amount, D.delivered_total_catalog_price_amount, ")
  174.                 .add(" D.total_member_price_amount, D.delivered_total_member_price_amount, D.total_commission_amount, D.delivered_total_commission_amount, ")
  175.                 .add(" D.total_invoiced_amount, D.delivered_total_invoiced_amount, D.total_additional_cost, D.delivered_total_additional_cost, I.area_name ")
  176.                 .add(dynamicQuery.toString());
  177.                 if(inputDto.getLong("limit")!=null) builder.add(" LIMIT " + inputDto.getLong("limit"));
  178.                 if(inputDto.getLong("offset")!=null) builder.add(" OFFSET " + inputDto.getLong("offset")); 
  179.  
  180.                 //log.debug("querynya:::"+builder.toString());
  181.                 //log.info("querynya:::"+builder.toString());
  182.        
  183.         Query query = salesOrderMlmDao.createNativeQuery(builder.toString());
  184.         query.setParameter("startDate", inputDto.get("startDate"));
  185.         query.setParameter("endDate", inputDto.get("endDate"));
  186.         query.setParameter("ouId", inputDto.get("ouId"));
  187.         query.setParameter("tenantLoginId",inputDto.get("tenantLoginId"));
  188.         query.setParameter("userLoginId",inputDto.get("userLoginId"));
  189.         query.setParameter("roleLoginId",inputDto.get("roleLoginId"));
  190.         query.setParameter("NO", GeneralConstants.NO);
  191.  
  192.         result = query.getResultList();
  193.        
  194.         Dto outputDto = new Dto().putList("soMlmList", DtoUtil
  195.                 .createDtoListFromArray(result, "soId",
  196.                         "tenantId", "docNo", "docDate",
  197.                         "partnerId", "partnerName",
  198.                         "partnerCode", "remark", "flgPicking", "flgScan", "flgPacking", "flgShipment", "flgDropship", "ouId", "statusDoc",
  199.                         "waktuCetakSo","userCetakSo", "totalHargaKatalog", "totalHargaKatalogTerkirim","totalHargaMember", "totalHargaMemberTerkirim",
  200.                         "nilaiKomisi", "nilaiKomisiTerkirim","totalPembelian","totalPembelianTerkirim", "additionalCost", "additionalCostTerkirim",
  201.                         "totalHargaNetto", "deliveredTotalHargaNetto", "nextRoleForSubmit",
  202.                         "autoApprovalTime","autoApprovalName","ssApprovalTime","ssApprovalName","financeApprovalTime","financeApprovalName",
  203.                         "lastScanPickingTime","lastScanPickingName","statusSo","soMlmId","soVersion","statusTutupSo","workflowStatus", "dsAreaName"));
  204.        
  205.        
  206.         return outputDto;
  207.     }
  208.    
  209.  
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement