Advertisement
aadddrr

ProcessTrxDataLog

Dec 27th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.92 KB | None | 0 0
  1. package org.jleaf.pos.bo.data;
  2.  
  3. import javax.persistence.Column;
  4.  
  5. import org.apache.log4j.lf5.viewer.LogBrokerMonitor;
  6. import org.jleaf.core.BusinessFunction;
  7. import org.jleaf.core.BusinessTransaction;
  8. import org.jleaf.core.DefaultBusinessTransaction;
  9. import org.jleaf.core.Dto;
  10. import org.jleaf.core.annotation.ErrorList;
  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.entity.BaseEntity;
  15. import org.jleaf.erp.master.MasterConstants;
  16. import org.jleaf.erp.master.bo.admin.CancelClosingAp;
  17. import org.jleaf.pos.PosBoConstants;
  18. import org.jleaf.pos.dao.LogNempilBarangBalanceStockDao;
  19. import org.jleaf.pos.dao.LogProductBalanceStockDao;
  20. import org.jleaf.pos.dao.NempilBarangBalanceStockDao;
  21. import org.jleaf.pos.dao.ProductBalanceDao;
  22. import org.jleaf.pos.dao.ProductBalanceStockDao;
  23. import org.jleaf.pos.entity.LogNempilBarangBalanceStock;
  24. import org.jleaf.pos.entity.LogProductBalanceStock;
  25. import org.jleaf.pos.entity.NempilBarangBalanceStock;
  26. import org.jleaf.pos.entity.ProductBalance;
  27. import org.jleaf.pos.entity.ProductBalanceStock;
  28. import org.jleaf.util.Calc;
  29. import org.jleaf.util.GsonUtil;
  30. import org.slf4j.Logger;
  31. import org.slf4j.LoggerFactory;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.beans.factory.annotation.Qualifier;
  34. import org.springframework.stereotype.Service;
  35.  
  36. /**
  37.  * Trx Data Log Process Helper
  38.  *
  39.  * @author WTC, Jun 2, 2013
  40.  */
  41. /**
  42.  * Menambahkan process untuk in_log_nempil_barang_balance_stock
  43.  * modified by Adrian
  44.  * Jul 7, 2017
  45.  */
  46. //@formatter:off
  47. @Service
  48. @InfoIn(value= {@Info(name = "log", description = "log", type=String.class, required=true)})
  49. @InfoOut(value={})
  50. @ErrorList(errorKeys={})
  51. //@formatter:on
  52. public class ProcessTrxDataLog extends DefaultBusinessTransaction implements BusinessTransaction {
  53.    
  54.     private static final Logger logger = LoggerFactory.getLogger(ProcessTrxDataLog.class);
  55.    
  56.     @Autowired
  57.     private LogProductBalanceStockDao logProductBalanceStockDao;
  58.  
  59.     @Autowired
  60.     private LogNempilBarangBalanceStockDao logNempilBarangBalanceStockDao;
  61.    
  62.     @Autowired
  63.     private ProductBalanceStockDao productBalanceStockDao;
  64.  
  65.     @Autowired
  66.     private NempilBarangBalanceStockDao nempilBarangBalanceStockDao;
  67.    
  68.     @Autowired
  69.     private ProductBalanceDao productBalanceDao;
  70.  
  71.     @Autowired
  72.     @Qualifier("findProductBalanceStockByIndex")
  73.     private BusinessFunction findProductBalanceStockByIndex;
  74.    
  75.     @Autowired
  76.     @Qualifier("isProductBalanceStockExistsByIndex")
  77.     private BusinessFunction isProductBalanceStockExistsByIndex;
  78.    
  79.     @Autowired
  80.     @Qualifier("isNempilBarangBalanceStockExistByIndex")
  81.     private BusinessFunction isNempilBarangBalanceStockExistByIndex;
  82.    
  83.     @Autowired
  84.     @Qualifier("isProductBalanceExistsById")
  85.     private BusinessFunction isProductBalanceExistsById;
  86.  
  87.     private void add(BaseEntity entity, Long userId, String datetime) throws Exception {
  88.         if (entity instanceof LogProductBalanceStock) {
  89.             LogProductBalanceStock logProductBalanceStock = (LogProductBalanceStock)entity;
  90.             logProductBalanceStockDao.persist(logProductBalanceStock);
  91.  
  92.             // Check whether product balance stock exists by index
  93.             Dto checkExistsProductBalanceStockDto = new Dto();
  94.             checkExistsProductBalanceStockDto.put("tenantId", logProductBalanceStock.getTenantId());
  95.             checkExistsProductBalanceStockDto.put("warehouseId", logProductBalanceStock.getWarehouseId());
  96.             checkExistsProductBalanceStockDto.put("productId", logProductBalanceStock.getProductId());
  97.             checkExistsProductBalanceStockDto.put("productBalanceId", logProductBalanceStock.getProductBalanceId());
  98.             checkExistsProductBalanceStockDto.put("productStatus", logProductBalanceStock.getProductStatus());
  99.             Dto resultProductBalanceStockDto = isProductBalanceStockExistsByIndex.execute(checkExistsProductBalanceStockDto);
  100.  
  101.             if (resultProductBalanceStockDto.getBoolean("exists")) {
  102.                 // Set new qty if exists
  103.                 Dto mergeProductBalanceStockDto = resultProductBalanceStockDto.getDto("productBalanceStockDto");
  104.                
  105.                 mergeProductBalanceStockDto.putDouble("qty",
  106.                         new Calc(mergeProductBalanceStockDto.getDouble("qty")).add(logProductBalanceStock.getQty()).doubleValue());
  107.                 prepareUpdateAudit(mergeProductBalanceStockDto, userId, datetime);
  108.                
  109.                 ProductBalanceStock productBalanceStock = GsonUtil.fromDto(mergeProductBalanceStockDto, ProductBalanceStock.class);
  110.                 productBalanceStockDao.merge(productBalanceStock.getId(), productBalanceStock);
  111.             } else {
  112.                 // insert new record if not exists
  113.                 Dto productBalanceStockDto = new Dto();
  114.                 productBalanceStockDto.put("tenantId", logProductBalanceStock.getTenantId());
  115.                 productBalanceStockDto.put("warehouseId", logProductBalanceStock.getWarehouseId());
  116.                 productBalanceStockDto.put("productId", logProductBalanceStock.getProductId());
  117.                 productBalanceStockDto.put("productBalanceId", logProductBalanceStock.getProductBalanceId());
  118.                 productBalanceStockDto.put("baseUomId", logProductBalanceStock.getBaseUomId());
  119.                 productBalanceStockDto.put("qty", logProductBalanceStock.getQty());
  120.                 productBalanceStockDto.put("productStatus", logProductBalanceStock.getProductStatus());
  121.                 prepareInsertAudit(productBalanceStockDto, userId, datetime);
  122.                 prepareUpdateAudit(productBalanceStockDto, userId, datetime);
  123.                
  124.                 ProductBalanceStock productBalanceStock = GsonUtil.fromDto(productBalanceStockDto, ProductBalanceStock.class);
  125.                 productBalanceStockDao.persist(productBalanceStock);
  126.             }
  127.            
  128.         } else if (entity instanceof ProductBalance){
  129.             ProductBalance productBalance = (ProductBalance) entity;
  130.            
  131.             Dto productBalanceDto = new Dto();
  132.             productBalanceDto.put("id", productBalance.getId());
  133.            
  134.             Dto resultProductBalanceDto = new Dto();
  135.             resultProductBalanceDto = isProductBalanceExistsById.execute(productBalanceDto);
  136.            
  137.             if (!resultProductBalanceDto.getBoolean("exists")) {
  138.                 productBalanceDao.persist(productBalance);
  139.             }
  140.         } else if (entity instanceof LogNempilBarangBalanceStock) {
  141.             //Adrian, Jul 7, 2017
  142.             //Process in_log_nempil_barang_balance_stock
  143.            
  144.             LogNempilBarangBalanceStock logNempilBarangBalanceStock = (LogNempilBarangBalanceStock)entity;
  145.             logNempilBarangBalanceStockDao.persist(logNempilBarangBalanceStock);
  146.  
  147.             //Check whether nempil barang balance stock exists by index
  148.             Dto checkExistsNempilBarangBalanceStockDto = new Dto();
  149.             checkExistsNempilBarangBalanceStockDto.put("tenantId", logNempilBarangBalanceStock.getTenantId());
  150.             checkExistsNempilBarangBalanceStockDto.put("ouId", logNempilBarangBalanceStock.getOuId());
  151.             checkExistsNempilBarangBalanceStockDto.put("productCode", logNempilBarangBalanceStock.getProductCode());
  152.             Dto resultNempilBarangBalanceStockDto = isNempilBarangBalanceStockExistByIndex.execute(checkExistsNempilBarangBalanceStockDto);
  153.  
  154.             if (resultNempilBarangBalanceStockDto.getBoolean("isTrue")) {
  155.                 // Set new qty if exists
  156.                 Dto mergeNempilBarangBalanceStockDto = resultNempilBarangBalanceStockDto.getDto("nempilBarangBalanceStockDto");
  157.                
  158.                 mergeNempilBarangBalanceStockDto.putDouble("qty",
  159.                         new Calc(mergeNempilBarangBalanceStockDto.getDouble("qty")).add(logNempilBarangBalanceStock.getQty()).doubleValue());
  160.                 prepareUpdateAudit(mergeNempilBarangBalanceStockDto, userId, datetime);
  161.                
  162.                 NempilBarangBalanceStock nempilBarangBalanceStock = GsonUtil.fromDto(mergeNempilBarangBalanceStockDto, NempilBarangBalanceStock.class);
  163.                 nempilBarangBalanceStockDao.merge(nempilBarangBalanceStock.getId(), nempilBarangBalanceStock);
  164.             } else {
  165.                 // insert new record if not exists
  166.                 Dto nempilBarangBalanceStockDto = new Dto();
  167.                 nempilBarangBalanceStockDto.put("tenantId", logNempilBarangBalanceStock.getTenantId());
  168.                 nempilBarangBalanceStockDto.put("ouId", logNempilBarangBalanceStock.getOuId());
  169.                 nempilBarangBalanceStockDto.put("productCode", logNempilBarangBalanceStock.getProductCode());
  170.                 nempilBarangBalanceStockDto.put("productName", logNempilBarangBalanceStock.getProductName());
  171.                 nempilBarangBalanceStockDto.put("qty", logNempilBarangBalanceStock.getQty());
  172.                 prepareInsertAudit(nempilBarangBalanceStockDto, userId, datetime);
  173.                 prepareUpdateAudit(nempilBarangBalanceStockDto, userId, datetime);
  174.                
  175.                 NempilBarangBalanceStock nempilBarangBalanceStock = GsonUtil.fromDto(nempilBarangBalanceStockDto, NempilBarangBalanceStock.class);
  176.                 nempilBarangBalanceStockDao.persist(nempilBarangBalanceStock);
  177.             }
  178.            
  179.         }
  180.     }
  181.  
  182.     @SuppressWarnings("rawtypes")
  183.     private Class findClassObject(String typeData) {
  184.         if (PosBoConstants.TYPE_DATA_IN_LOG_PRODUCT_BALANCE_STOCK.equals(typeData)) {
  185.             return LogProductBalanceStock.class;
  186.         } else if (PosBoConstants.TYPE_DATA_IN_PRODUCT_BALANCE.equals(typeData)) {
  187.             return ProductBalance.class;
  188.         } else if (PosBoConstants.TYPE_DATA_IN_LOG_NEMPIL_BARANG_BALANCE_STOCK.equals(typeData)) {
  189.             return LogNempilBarangBalanceStock.class;
  190.         }
  191.  
  192.         return null;
  193.     }
  194.  
  195.     @SuppressWarnings("unchecked")
  196.     private void executeAction(String mode, String dataLog, String typeData, Long userId, String datetime) throws Exception {
  197.         logger.debug(">>>>>>>>>>>>>> executeAction typeData: " + typeData);
  198.         logger.debug(">>>>>>>>>>>>>> findClassObject: " + findClassObject(typeData));
  199.         BaseEntity entity = (BaseEntity)GsonUtil.fromDto(new Dto(dataLog), findClassObject(typeData));
  200.         if (PosBoConstants.LOG_MODE_ADD.equals(mode)) {
  201.             add(entity, userId, datetime);
  202.         }
  203.     }
  204.  
  205.     @Override
  206.     public String getDescription() {
  207.         return "process trx data log from server";
  208.     }
  209.  
  210.     @Override
  211.     public Dto prepare(Dto inputDto, Dto originalDto) throws Exception {
  212.         String log = inputDto.getString("log");
  213.  
  214.         logger.debug(">>>>>>>>>>>>> log: " + log);
  215.        
  216.         int dbVersionSeparatorIndex = log.indexOf(MasterConstants.LOG_DATA_SEPARATOR);
  217.         int typeDataSeparatorIndex = log.indexOf(MasterConstants.LOG_DATA_SEPARATOR, dbVersionSeparatorIndex + 1);
  218.         int modeLogSeparatorIndex = log.indexOf(MasterConstants.LOG_DATA_SEPARATOR, typeDataSeparatorIndex + 1);
  219.        
  220.         logger.debug(">>>>>>>>>>>>> typeDataSeparatorIndex: " + typeDataSeparatorIndex);
  221.  
  222.         String dbVersion = log.substring(0, dbVersionSeparatorIndex);
  223.         String typeData = log.substring(dbVersionSeparatorIndex + 1, typeDataSeparatorIndex);
  224.         String mode = log.substring(typeDataSeparatorIndex + 1, modeLogSeparatorIndex);
  225.         String dataLog = log.substring(modeLogSeparatorIndex + 1);
  226.  
  227.         logger.debug(">>>>>>>>>>>>> typeData: " + typeData);
  228.        
  229.         inputDto.put("dbVersion", dbVersion);
  230.         inputDto.put("typeData", typeData);
  231.         inputDto.put("dataLog", dataLog);
  232.         inputDto.put("mode", mode);
  233.  
  234.         return null;
  235.     }
  236.  
  237.     @Override
  238.     public Dto process(Dto inputDto, Dto originalDto) throws Exception {
  239.         String mode = inputDto.getString("mode");
  240.         String dataLog = inputDto.getString("dataLog");
  241.         String typeData = inputDto.getString("typeData");
  242.        
  243.         executeAction(mode, dataLog, typeData, inputDto.getLong("userLoginId"), inputDto.getString("datetime"));
  244.        
  245.         return new Dto();
  246.     }
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement