aadddrr

[BACKUP] [3.5.0.0] pos-jleaf-bo-pos-spooring

Jul 7th, 2017
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package org.jleaf.pos.bo.data;
  2.  
  3. import javax.persistence.Column;
  4.  
  5. import org.jleaf.core.BusinessFunction;
  6. import org.jleaf.core.BusinessTransaction;
  7. import org.jleaf.core.DefaultBusinessTransaction;
  8. import org.jleaf.core.Dto;
  9. import org.jleaf.core.annotation.ErrorList;
  10. import org.jleaf.core.annotation.Info;
  11. import org.jleaf.core.annotation.InfoIn;
  12. import org.jleaf.core.annotation.InfoOut;
  13. import org.jleaf.core.entity.BaseEntity;
  14. import org.jleaf.erp.master.MasterConstants;
  15. import org.jleaf.pos.PosBoConstants;
  16. import org.jleaf.pos.dao.LogProductBalanceStockDao;
  17. import org.jleaf.pos.dao.ProductBalanceDao;
  18. import org.jleaf.pos.dao.ProductBalanceStockDao;
  19. import org.jleaf.pos.entity.LogProductBalanceStock;
  20. import org.jleaf.pos.entity.ProductBalance;
  21. import org.jleaf.pos.entity.ProductBalanceStock;
  22. import org.jleaf.util.Calc;
  23. import org.jleaf.util.GsonUtil;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.beans.factory.annotation.Qualifier;
  26. import org.springframework.stereotype.Service;
  27.  
  28. /**
  29.  * Trx Data Log Process Helper
  30.  *
  31.  * @author WTC, Jun 2, 2013
  32.  */
  33. //@formatter:off
  34. @Service
  35. @InfoIn(value= {@Info(name = "log", description = "log", type=String.class, required=true)})
  36. @InfoOut(value={})
  37. @ErrorList(errorKeys={})
  38. //@formatter:on
  39. public class ProcessTrxDataLog extends DefaultBusinessTransaction implements BusinessTransaction {
  40.  
  41.     @Autowired
  42.     private LogProductBalanceStockDao logProductBalanceStockDao;
  43.  
  44.     @Autowired
  45.     private ProductBalanceStockDao productBalanceStockDao;
  46.    
  47.     @Autowired
  48.     private ProductBalanceDao productBalanceDao;
  49.  
  50.     @Autowired
  51.     @Qualifier("findProductBalanceStockByIndex")
  52.     private BusinessFunction findProductBalanceStockByIndex;
  53.    
  54.     @Autowired
  55.     @Qualifier("isProductBalanceStockExistsByIndex")
  56.     private BusinessFunction isProductBalanceStockExistsByIndex;
  57.    
  58.     @Autowired
  59.     @Qualifier("isProductBalanceExistsById")
  60.     private BusinessFunction isProductBalanceExistsById;
  61.  
  62.     private void add(BaseEntity entity, Long userId, String datetime) throws Exception {
  63.         if (entity instanceof LogProductBalanceStock) {
  64.             LogProductBalanceStock logProductBalanceStock = (LogProductBalanceStock)entity;
  65.             logProductBalanceStockDao.persist(logProductBalanceStock);
  66.  
  67.             // Check whether product balance stock exists by index
  68.             Dto checkExistsProductBalanceStockDto = new Dto();
  69.             checkExistsProductBalanceStockDto.put("tenantId", logProductBalanceStock.getTenantId());
  70.             checkExistsProductBalanceStockDto.put("warehouseId", logProductBalanceStock.getWarehouseId());
  71.             checkExistsProductBalanceStockDto.put("productId", logProductBalanceStock.getProductId());
  72.             checkExistsProductBalanceStockDto.put("productBalanceId", logProductBalanceStock.getProductBalanceId());
  73.             checkExistsProductBalanceStockDto.put("productStatus", logProductBalanceStock.getProductStatus());
  74.             Dto resultProductBalanceStockDto = isProductBalanceStockExistsByIndex.execute(checkExistsProductBalanceStockDto);
  75.  
  76.             if (resultProductBalanceStockDto.getBoolean("exists")) {
  77.                 // Set new qty if exists
  78.                 Dto mergeProductBalanceStockDto = resultProductBalanceStockDto.getDto("productBalanceStockDto");
  79.                
  80.                 mergeProductBalanceStockDto.putDouble("qty",
  81.                         new Calc(mergeProductBalanceStockDto.getDouble("qty")).add(logProductBalanceStock.getQty()).doubleValue());
  82.                 prepareUpdateAudit(mergeProductBalanceStockDto, userId, datetime);
  83.                
  84.                 ProductBalanceStock productBalanceStock = GsonUtil.fromDto(mergeProductBalanceStockDto, ProductBalanceStock.class);
  85.                 productBalanceStockDao.merge(productBalanceStock.getId(), productBalanceStock);
  86.             } else {
  87.                 // insert new record if not exists
  88.                 Dto productBalanceStockDto = new Dto();
  89.                 productBalanceStockDto.put("tenantId", logProductBalanceStock.getTenantId());
  90.                 productBalanceStockDto.put("warehouseId", logProductBalanceStock.getWarehouseId());
  91.                 productBalanceStockDto.put("productId", logProductBalanceStock.getProductId());
  92.                 productBalanceStockDto.put("productBalanceId", logProductBalanceStock.getProductBalanceId());
  93.                 productBalanceStockDto.put("baseUomId", logProductBalanceStock.getBaseUomId());
  94.                 productBalanceStockDto.put("qty", logProductBalanceStock.getQty());
  95.                 productBalanceStockDto.put("productStatus", logProductBalanceStock.getProductStatus());
  96.                 prepareInsertAudit(productBalanceStockDto, userId, datetime);
  97.                 prepareUpdateAudit(productBalanceStockDto, userId, datetime);
  98.                
  99.                 ProductBalanceStock productBalanceStock = GsonUtil.fromDto(productBalanceStockDto, ProductBalanceStock.class);
  100.                 productBalanceStockDao.persist(productBalanceStock);
  101.             }
  102.            
  103.         } else if (entity instanceof ProductBalance){
  104.             ProductBalance productBalance = (ProductBalance) entity;
  105.            
  106.             Dto productBalanceDto = new Dto();
  107.             productBalanceDto.put("id", productBalance.getId());
  108.            
  109.             Dto resultProductBalanceDto = new Dto();
  110.             resultProductBalanceDto = isProductBalanceExistsById.execute(productBalanceDto);
  111.            
  112.             if (!resultProductBalanceDto.getBoolean("exists")) {
  113.                 productBalanceDao.persist(productBalance);
  114.             }
  115.         }
  116.     }
  117.  
  118.     @SuppressWarnings("rawtypes")
  119.     private Class findClassObject(String typeData) {
  120.         if (PosBoConstants.TYPE_DATA_IN_LOG_PRODUCT_BALANCE_STOCK.equals(typeData)) {
  121.             return LogProductBalanceStock.class;
  122.         } else if (PosBoConstants.TYPE_DATA_IN_PRODUCT_BALANCE.equals(typeData)) {
  123.             return ProductBalance.class;
  124.         }
  125.  
  126.         return null;
  127.     }
  128.  
  129.     @SuppressWarnings("unchecked")
  130.     private void executeAction(String mode, String dataLog, String typeData, Long userId, String datetime) throws Exception {
  131.         BaseEntity entity = (BaseEntity)GsonUtil.fromDto(new Dto(dataLog), findClassObject(typeData));
  132.         if (PosBoConstants.LOG_MODE_ADD.equals(mode)) {
  133.             add(entity, userId, datetime);
  134.         }
  135.     }
  136.  
  137.     @Override
  138.     public String getDescription() {
  139.         return "process trx data log from server";
  140.     }
  141.  
  142.     @Override
  143.     public Dto prepare(Dto inputDto, Dto originalDto) throws Exception {
  144.         String log = inputDto.getString("log");
  145.  
  146.         int dbVersionSeparatorIndex = log.indexOf(MasterConstants.LOG_DATA_SEPARATOR);
  147.         int typeDataSeparatorIndex = log.indexOf(MasterConstants.LOG_DATA_SEPARATOR, dbVersionSeparatorIndex + 1);
  148.         int modeLogSeparatorIndex = log.indexOf(MasterConstants.LOG_DATA_SEPARATOR, typeDataSeparatorIndex + 1);
  149.  
  150.         String dbVersion = log.substring(0, dbVersionSeparatorIndex);
  151.         String typeData = log.substring(dbVersionSeparatorIndex + 1, typeDataSeparatorIndex);
  152.         String mode = log.substring(typeDataSeparatorIndex + 1, modeLogSeparatorIndex);
  153.         String dataLog = log.substring(modeLogSeparatorIndex + 1);
  154.  
  155.         inputDto.put("dbVersion", dbVersion);
  156.         inputDto.put("typeData", typeData);
  157.         inputDto.put("dataLog", dataLog);
  158.         inputDto.put("mode", mode);
  159.  
  160.         return null;
  161.     }
  162.  
  163.     @Override
  164.     public Dto process(Dto inputDto, Dto originalDto) throws Exception {
  165.         String mode = inputDto.getString("mode");
  166.         String dataLog = inputDto.getString("dataLog");
  167.         String typeData = inputDto.getString("typeData");
  168.        
  169.         executeAction(mode, dataLog, typeData, inputDto.getLong("userLoginId"), inputDto.getString("datetime"));
  170.        
  171.         return new Dto();
  172.     }
  173. }
Add Comment
Please, Sign In to add comment