Advertisement
Evra70

Untitled

Apr 29th, 2020
598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.94 KB | None | 0 0
  1. package org.jleaf.erp.sls.bo.customer;
  2.  
  3. import java.text.DateFormat;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import java.util.List;
  7.  
  8. import javax.persistence.Query;
  9.  
  10. import org.jleaf.common.entity.User;
  11. import org.jleaf.core.AbstractBusinessFunction;
  12. import org.jleaf.core.BusinessFunction;
  13. import org.jleaf.core.Dto;
  14. import org.jleaf.core.GeneralConstants;
  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.master.bo.partner.FindPartnerByIndex;
  21. import org.jleaf.erp.master.dao.PartnerDao;
  22. import org.jleaf.erp.master.entity.Partner;
  23. import org.jleaf.erp.master.entity.PartnerAddress;
  24. import org.jleaf.erp.master.entity.PartnerCp;
  25. import org.jleaf.erp.master.entity.PartnerType;
  26. import org.jleaf.erp.sls.SalesConstants;
  27. import org.jleaf.erp.sls.dao.SalesmanVisitPlanDao;
  28. import org.jleaf.erp.sls.entity.Order;
  29. import org.jleaf.erp.sls.entity.PolicyCustomerGroupBrand;
  30. import org.jleaf.erp.sls.entity.SalesmanDate;
  31. import org.jleaf.erp.sls.entity.SalesmanVisitPlan;
  32. import org.jleaf.erp.sls.entity.UserPartner;
  33. import org.jleaf.util.DateUtil;
  34. import org.jleaf.util.DtoUtil;
  35. import org.jleaf.util.ValidationUtil;
  36. import org.slf4j.Logger;
  37. import org.slf4j.LoggerFactory;
  38. import org.springframework.beans.factory.annotation.Autowired;
  39. import org.springframework.stereotype.Service;
  40.  
  41. /**
  42.  *
  43.  * @author Ephraim Jehudah, April 09, 2020
  44.  *
  45.  **/
  46.  
  47. //@formatter:off
  48. @Service
  49. @InfoIn(value = {
  50.     @Info(name = "userLoginId", description = "user Login Id", type = Long.class),
  51.     @Info(name = "tenantLoginId", description = "tenant Login Id", type = Long.class),
  52.     @Info(name = "roleLoginId", description = "roleLoginId", type = Long.class),
  53.     @Info(name = "datetime", description = "datetime", type = String.class),
  54.     @Info(name = "tokoId", description = "toko Id", type = Long.class),
  55.     @Info(name = "apiKey", description = "apiKey", type = String.class),
  56. })
  57. @InfoOut(value = {
  58.     @Info(name = "result", description = "result {totalsaldo, totalsaldoduedate, totalsaldonotduedate, totalinvoice, totalinvoiceduedate, totalinvoicenotduedate}", type = Object.class)
  59. })
  60. //@formatter:on
  61. public class FindSummarySaldoHutangByToko extends AbstractBusinessFunction implements BusinessFunction {
  62.     private static final Logger log = LoggerFactory.getLogger(FindSummarySaldoHutangByToko.class);
  63.    
  64.     @Autowired
  65.     PartnerDao partnerDao;
  66.    
  67.    
  68.  
  69.     @Override
  70.     public String getDescription() {
  71.         return "Find Summary Saldo Hutang By Toko";
  72.     }
  73.  
  74.     @SuppressWarnings("unchecked")
  75.     @Override
  76.     public Dto execute(Dto inputDto) throws Exception {
  77.         log.info("Input YANG MASUK BF {} -. {} ", inputDto);
  78.  
  79.         ValidationUtil.valDtoContainsKey(inputDto, "tokoId");
  80.  
  81.         DateFormat dateFormat = new SimpleDateFormat(DateUtil.FORMAT_DATE);
  82.         Date date = new Date();
  83.         String today = dateFormat.format(date);
  84.         Long tokoId = inputDto.getLong("tokoId");
  85.        
  86.         Dto outputDto = new Dto();
  87.         Dto summaryDto = new Dto();
  88.         List<Object[]> result =  null;
  89.        
  90.         Double totalSaldo = new Double(0);
  91.         Double totalInvoice = new Double(0);
  92.         Double totalSaldoDueDate = new Double(0);
  93.         Double totalInvoiceDueDate = new Double(0);
  94.         Double totalSaldoNotDueDate = new Double(0);
  95.         Double totalInvoiceNotDueDate = new Double(0);
  96.  
  97.         //total saldo
  98.         QueryBuilder totalSaldoBuilder = new QueryBuilder();
  99.         totalSaldoBuilder.add("SELECT SUM(amount-payment_amount) AS total_saldo, COUNT(1) AS total_invoice")
  100.         .add(" FROM vw_fi_os_all_invoice_ar")
  101.         .add(" WHERE partner_id = :tokoId");
  102.        
  103.         log.info("Query totalSaldoBuilder BF {} --> {} " , this.getClass(), totalSaldoBuilder.toString());
  104.  
  105.         Query totalSaldoQuery = partnerDao.createNativeQuery(totalSaldoBuilder.toString());
  106.         totalSaldoQuery.setParameter("tokoId",tokoId);
  107.        
  108.         result = totalSaldoQuery.getResultList();
  109.         if(result.size() > 0) {
  110.             totalSaldo = Double.valueOf(result.get(0)[0].toString());
  111.             totalInvoice = Double.valueOf(result.get(0)[1].toString());
  112.         }
  113.                
  114.         summaryDto.put("totalSaldo", totalSaldo);
  115.         summaryDto.put("totalInvoice", totalInvoice);
  116.        
  117.        
  118.       //total saldo belum jatuh tempo
  119.         QueryBuilder totalSaldoNotDueDateBuilder = new QueryBuilder();
  120.         totalSaldoNotDueDateBuilder.add("SELECT SUM(amount-payment_amount) AS total_saldo_not_due_date, COUNT(1) AS total_invoice_not_due_date")
  121.         .add(" FROM vw_fi_os_all_invoice_ar")
  122.         .add(" WHERE partner_id = :tokoId AND due_date > :today");
  123.        
  124.         log.info("Query totalSaldoNotDueDateBuilder BF {} --> {} " , this.getClass(), totalSaldoNotDueDateBuilder.toString());
  125.  
  126.         Query totalSaldoNotDueDateQuery = partnerDao.createNativeQuery(totalSaldoNotDueDateBuilder.toString());
  127.         totalSaldoNotDueDateQuery.setParameter("tokoId",tokoId);
  128.         totalSaldoNotDueDateQuery.setParameter("today",today);
  129.        
  130.         result = totalSaldoNotDueDateQuery.getResultList();
  131.         if(result.size() > 0) {
  132.             totalSaldoNotDueDate = Double.valueOf(result.get(0)[0].toString());
  133.             totalInvoiceNotDueDate = Double.valueOf(result.get(0)[1].toString());
  134.         }
  135.                
  136.         summaryDto.put("totalSaldoNotDueDate", totalSaldoNotDueDate);
  137.         summaryDto.put("totalInvoiceNotDueDate", totalInvoiceNotDueDate);
  138.        
  139.        
  140.       //total saldo sudah jatuh tempo
  141.         QueryBuilder totalSaldoDueDateBuilder = new QueryBuilder();
  142.         totalSaldoDueDateBuilder.add("SELECT SUM(amount-payment_amount) AS total_saldo_due_date, COUNT(1) AS total_invoice_due_date")
  143.         .add(" FROM vw_fi_os_all_invoice_ar")
  144.         .add(" WHERE partner_id = :tokoId AND due_date <= :today");
  145.        
  146.         log.info("Query totalSaldoDueDateBuilder BF {} --> {} " , this.getClass(), totalSaldoDueDateBuilder.toString());
  147.  
  148.         Query totalSaldoDueDateQuery = partnerDao.createNativeQuery(totalSaldoDueDateBuilder.toString());
  149.         totalSaldoDueDateQuery.setParameter("tokoId",tokoId);
  150.         totalSaldoDueDateQuery.setParameter("today",today);
  151.        
  152.         result = totalSaldoDueDateQuery.getResultList();
  153.         if(result.size() > 0) {
  154.             totalSaldoDueDate = Double.valueOf(result.get(0)[0].toString());
  155.             totalInvoiceDueDate = Double.valueOf(result.get(0)[1].toString());
  156.         }
  157.                
  158.         summaryDto.put("totalSaldoDueDate", totalSaldoDueDate);
  159.         summaryDto.put("totalInvoiceDueDate", totalInvoiceDueDate);
  160.        
  161.         outputDto.put("summarySaldoHutangToko", summaryDto);
  162.        
  163.         log.info("Output BF {} --> {} ", this.getClass(), outputDto);
  164.  
  165.         return outputDto;
  166.     }
  167.  
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement