Commit dc1821a0 authored by Vu Duy Anh's avatar Vu Duy Anh

anhvd commit hibernate util + campaign mng services

parent 0ccb72e3
...@@ -93,6 +93,8 @@ ...@@ -93,6 +93,8 @@
<dependency> <dependency>
<groupId>com.oracle</groupId> <groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId> <artifactId>ojdbc7</artifactId>
<!-- <scope>system</scope>-->
<!-- <systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>-->
<version>1.0</version> <version>1.0</version>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -10,4 +10,7 @@ import java.io.Serializable; ...@@ -10,4 +10,7 @@ import java.io.Serializable;
public class BaseDTO implements Serializable { public class BaseDTO implements Serializable {
protected String keySet; protected String keySet;
protected int pageSize;
protected int page;
protected String sort;
} }
package com.viettel.campaign.dto.request_dto; package com.viettel.campaign.dto.request_dto;
import com.viettel.campaign.dto.BaseDTO;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -12,10 +13,7 @@ import java.util.Date; ...@@ -12,10 +13,7 @@ import java.util.Date;
@Getter @Getter
@Setter @Setter
public class CampaignRequestDTO { public class CampaignRequestDTO extends BaseDTO {
int pageSize;
int page;
String sort;
String campaignCode; String campaignCode;
String campaignName; String campaignName;
Short status; Short status;
......
...@@ -3,14 +3,20 @@ package com.viettel.campaign.repository.impl; ...@@ -3,14 +3,20 @@ package com.viettel.campaign.repository.impl;
import com.viettel.campaign.dto.CampaignDTO; import com.viettel.campaign.dto.CampaignDTO;
import com.viettel.campaign.dto.ResultDTO; import com.viettel.campaign.dto.ResultDTO;
import com.viettel.campaign.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.dto.request_dto.CampaignRequestDTO;
import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.repository.CampaignRepositoryCustom; import com.viettel.campaign.repository.CampaignRepositoryCustom;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.*;
import com.viettel.campaign.utils.DataUtil; import org.hibernate.SQLQuery;
import com.viettel.campaign.utils.DateTimeUtil; import org.hibernate.Session;
import com.viettel.campaign.utils.SQLBuilder; import org.hibernate.SessionFactory;
import org.hibernate.hql.internal.ast.util.SessionFactoryHelper;
import org.hibernate.transform.Transformers;
import org.hibernate.type.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
import org.springframework.jdbc.object.SqlQuery;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import sun.jvm.hotspot.ui.action.ShowAction;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query; import javax.persistence.Query;
...@@ -42,8 +48,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -42,8 +48,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
for (Object[] obj : data) { for (Object[] obj : data) {
CampaignDTO item = new CampaignDTO(); CampaignDTO item = new CampaignDTO();
item.setCampaignId((Long)obj[0]); item.setCampaignId((Long) obj[0]);
item.setCampaignName((String)obj[1]); item.setCampaignName((String) obj[1]);
item.setStatus((Short) obj[0]); item.setStatus((Short) obj[0]);
lst.add(item); lst.add(item);
...@@ -56,26 +62,49 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -56,26 +62,49 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
public ResultDTO search(CampaignRequestDTO requestDto) { public ResultDTO search(CampaignRequestDTO requestDto) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
try { try {
String sqlStr = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-by-params"); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
// sqlStr.append(" SELECT CAMPAIGN_CODE campaignCode, CAMPAIGN_NAME campaignName, CAMPAIGN_TYPE campaignType, CHANEL chanel, START_TIME startTime, END_TIME endTime, CUSTOMER_NUMBER customerNumber, STATUS status FROM CAMPAIGN WHERE 1 = 1 ");
// if(!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { sqlStr.append(" AND UPPER(CAMPAIGN_CODE) LIKE :code"); } Session session = sessionFactory.openSession();
// if(!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) { sqlStr.append(" AND UPPER(CAMPAIGN_NAME) LIKE :name"); } session.beginTransaction();
// if(requestDto.getStatus() != null) { sqlStr.append(" AND STATUS = :status"); }
// if(requestDto.getFromDateFr() != null && DateTimeUtil.isValid(requestDto.getFromDateFr().getTime())) { sqlStr.append(" AND START_TIME >= :frDateFr"); } StringBuilder sqlStr = new StringBuilder();
// if(requestDto.getFromDateTo() != null && DateTimeUtil.isValid(requestDto.getFromDateTo().getTime())) { sqlStr.append(" AND START_TIME <= :frDateTo"); } sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-by-params"));
// if(requestDto.getToDateFr() != null && DateTimeUtil.isValid(requestDto.getToDateFr().getTime())) { sqlStr.append(" AND END_TIME >= :toDateFr"); } if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
// if(requestDto.getToDateTo() != null && DateTimeUtil.isValid(requestDto.getToDateTo().getTime())) { sqlStr.append(" AND END_TIME <= :toDateTo"); } sqlStr.append(" AND UPPER(CAMPAIGN_CODE) LIKE :p_code");
// if(!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) { }
//// sqlStr.append(" AND ") if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) {
// } sqlStr.append(" AND UPPER(CAMPAIGN_NAME) LIKE :p_name");
// if(!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) { }
// if (requestDto.getStatus() != null) {
// } sqlStr.append(" AND STATUS = :p_status");
// if(requestDto.getType() != null) { sqlStr.append(" AND CAMPAIGN_TYPE = :type"); } }
// if(requestDto.getChanel() != null) { sqlStr.append(" AND CHANEL = :chanel"); } if (requestDto.getFromDateFr() != null && DateTimeUtil.isValid(requestDto.getFromDateFr().getTime())) {
sqlStr.append(" AND START_TIME >= :p_frDateFr");
}
if (requestDto.getFromDateTo() != null && DateTimeUtil.isValid(requestDto.getFromDateTo().getTime())) {
sqlStr.append(" AND START_TIME <= :p_frDateTo");
}
if (requestDto.getToDateFr() != null && DateTimeUtil.isValid(requestDto.getToDateFr().getTime())) {
sqlStr.append(" AND END_TIME >= :p_toDateFr");
}
if (requestDto.getToDateTo() != null && DateTimeUtil.isValid(requestDto.getToDateTo().getTime())) {
sqlStr.append(" AND END_TIME <= :p_toDateTo");
}
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
// sqlStr.append(" AND ")
}
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
}
if (requestDto.getType() != null) {
sqlStr.append(" AND CAMPAIGN_TYPE = :p_type");
}
if (requestDto.getChanel() != null) {
sqlStr.append(" AND CHANEL = :p_chanel");
}
Query query = entityManager.createNativeQuery(sqlStr, CampaignDTO.class); // Query query = entityManager.createNativeQuery(sqlStr.toString(), Campaign.class);
SQLQuery query = session.createSQLQuery(sqlStr.toString());
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
query.setParameter("p_code", "%" + query.setParameter("p_code", "%" +
requestDto.getCampaignCode().toUpperCase() requestDto.getCampaignCode().toUpperCase()
...@@ -84,6 +113,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -84,6 +113,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
.replaceAll("_", "\\\\_") .replaceAll("_", "\\\\_")
+ "%"); + "%");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) {
query.setParameter("p_name", "%" + query.setParameter("p_name", "%" +
requestDto.getCampaignName().toUpperCase() requestDto.getCampaignName().toUpperCase()
...@@ -92,6 +122,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -92,6 +122,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
.replaceAll("_", "\\\\_") .replaceAll("_", "\\\\_")
+ "%"); + "%");
} }
if (requestDto.getStatus() != null) { if (requestDto.getStatus() != null) {
query.setParameter("p_status", requestDto.getStatus()); query.setParameter("p_status", requestDto.getStatus());
} }
...@@ -114,21 +145,35 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -114,21 +145,35 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
query.setParameter("p_chanel", requestDto.getChanel()); query.setParameter("p_chanel", requestDto.getChanel());
} }
List<CampaignDTO> dataCount = query.getResultList(); query.addScalar("campaignId", new LongType());
long count = dataCount.size(); query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("campaignType", new StringType());
query.addScalar("chanel", new ShortType());
query.addScalar("startTime", new DateType());
query.addScalar("endTime", new DateType());
query.addScalar("customerNumber", new LongType());
query.addScalar("status", new ShortType());
query.setResultTransformer(Transformers.aliasToBean(CampaignDTO.class));
int count = 0;
List<CampaignDTO> list = query.list();
if (list.size() > 0) {
count = query.list().size();
}
Pageable pageable = buildPageable(requestDto); Pageable pageable = buildPageable(requestDto);
if (pageable != null) { if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize()); query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize()); query.setMaxResults(pageable.getPageSize());
} }
List<CampaignDTO> data = query.getResultList(); List<CampaignDTO> data = query.list();
Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count); Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count);
result.setData(dataPage); result.setData(dataPage);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS); result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS); result.setDescription(Constants.ApiErrorDesc.SUCCESS);
session.close();
return result; return result;
}catch (Exception ex) { } catch (Exception ex) {
} }
result.setErrorCode(Constants.ApiErrorCode.ERROR); result.setErrorCode(Constants.ApiErrorCode.ERROR);
...@@ -143,4 +188,9 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -143,4 +188,9 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
pageable = new PageRequest(obj.getPage(), obj.getPageSize(), sort); pageable = new PageRequest(obj.getPage(), obj.getPageSize(), sort);
return pageable; return pageable;
} }
// private CampaignDTO mappingData(Object[] object) {
// CampaignDTO dto = new CampaignDTO();
//
// }
} }
package com.viettel.campaign.utils;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
/**
* @author anhvd_itsol
*/
public class HibernateUtil {
private static SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory()
{
try
{
if (sessionFactory == null)
{
Configuration configuration = new Configuration().configure(HibernateUtil.class.getResource("/hibernate.cfg.xml"));
StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
serviceRegistryBuilder.applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
return sessionFactory;
} catch (Throwable ex)
{
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
public static void shutdown()
{
getSessionFactory().close();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@10.60.157.135:1521:vt</property>
<property name="hibernate.connection.username">CCMS_FULL</property>
<property name="hibernate.connection.password">CCMS_FULL#123</property>
<property name="hibernate.connection.pool_size">64</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
</session-factory>
</hibernate-configuration>
SELECT SELECT
CAMPAIGN_ID campaignId,
CAMPAIGN_CODE campaignCode, CAMPAIGN_CODE campaignCode,
CAMPAIGN_NAME campaignName, CAMPAIGN_NAME campaignName,
CAMPAIGN_TYPE campaignType, CAMPAIGN_TYPE campaignType,
...@@ -9,24 +10,3 @@ SELECT ...@@ -9,24 +10,3 @@ SELECT
STATUS status STATUS status
FROM CAMPAIGN FROM CAMPAIGN
WHERE 1 = 1 WHERE 1 = 1
AND (:p_code IS NULL OR (:p_code IS NOT NULL AND UPPER(CAMPAIGN_CODE) LIKE :p_code ))
AND (:p_name IS NULL OR (:p_name IS NOT NULL AND UPPER(CAMPAIGN_NAME) LIKE :p_name ))
AND (:p_status IS NULL OR (:p_status IS NOT NULL AND STATUS = :status))
AND ((:p_frDateFr IS NULL AND :p_frDateTo IS NULL)
OR ((:p_frDateFr IS NOT NULL AND :p_frDateTo IS NOT NULL) AND
(trunc(START_TIME) BETWEEN TO_DATE(:p_frDateFr, 'YYYYMMDD') AND TO_DATE(:p_frDateTo, 'YYYYMMDD')))
OR ((:p_frDateFr IS NOT NULL AND :p_frDateTo IS NULL)
AND (trunc(START_TIME) >= TO_DATE(:p_frDateFr, 'YYYYMMDD')))
OR ((:p_frDateFr IS NULL AND :p_frDateTo IS NOT NULL)
AND (trunc(START_TIME) <= TO_DATE(:p_frDateTo, 'YYYYMMDD')))
)
AND ((:p_toDateFr IS NULL AND :p_toDateTo IS NULL)
OR ((:p_toDateFr IS NOT NULL AND :p_toDateTo IS NOT NULL) AND
(trunc(END_TIME) BETWEEN TO_DATE(:p_toDateFr, 'YYYYMMDD') AND TO_DATE(:p_toDateTo, 'YYYYMMDD')))
OR ((:p_toDateFr IS NOT NULL AND :p_toDateTo IS NULL)
AND (trunc(END_TIME) >= TO_DATE(:p_toDateFr, 'YYYYMMDD')))
OR ((:p_toDateFr IS NULL AND :p_toDateTo IS NOT NULL)
AND (trunc(END_TIME) <= TO_DATE(:p_toDateTo, 'YYYYMMDD')))
)
AND (:p_type IS NULL OR (:p_type IS NOT NULL AND CAMPAIGN_TYPE = :p_type))
AND (:p_chanel IS NULL OR (:p_chanel IS NOT NULl AND CHANEL = :p_chanel))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment