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

anhvd commit timezone utils

parent 3e912a05
......@@ -4,10 +4,7 @@ import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.CampaignCustomer;
import com.viettel.campaign.repository.ccms_full.CampaignCustomerRepository;
import com.viettel.campaign.repository.ccms_full.CampaignRepositoryCustom;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.utils.*;
import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.logging.log4j.LogManager;
......@@ -29,10 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@Repository
public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
......@@ -52,6 +46,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
@Override
public ResultDTO search(CampaignRequestDTO requestDto) {
TimeZone tzClient = TimeZoneUtils.getZoneMinutes((long) requestDto.getTimezoneOffset());
logger.info("Start search campaign::");
ResultDTO result = new ResultDTO();
......@@ -131,16 +126,16 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
sb.append(" AND a.STATUS IN (:p_statuses) ");
}
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateFr())) {
sb.append(" AND TO_DATE(a.START_TIME, 'DD-MM-RR') >= TO_DATE(:p_frDateFr, 'YYYYMMDD')");
sb.append(" AND a.START_TIME >= TO_DATE(:p_frDateFr, 'DD/MM/YYYY HH24:MI:SS')");
}
if (!DataUtil.isNullOrEmpty(requestDto.getToDateFr())) {
sb.append(" AND TO_DATE(a.START_TIME, 'DD-MM-RR') <= TO_DATE(:p_toDateFr, 'YYYYMMDD')");
sb.append(" AND a.START_TIME <= TO_DATE(:p_toDateFr, 'DD/MM/YYYY HH24:MI:SS')");
}
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateTo())) {
sb.append(" AND TO_DATE(a.END_TIME, 'DD-MM-RR') >= TO_DATE(:p_frDateTo, 'YYYYMMDD')");
sb.append(" AND a.END_TIME >= TO_DATE(:p_frDateTo, 'DD/MM/YYYY HH24:MI:SS')");
}
if (!DataUtil.isNullOrEmpty(requestDto.getToDateTo())) {
sb.append(" AND TO_DATE(a.END_TIME, 'DD-MM-RR') <= TO_DATE(:p_toDateTo, 'YYYYMMDD')");
sb.append(" AND a.END_TIME <= TO_DATE(:p_toDateTo, 'DD/MM/YYYY HH24:MI:SS')");
}
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
sb.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr");
......@@ -185,16 +180,16 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
query.setParameterList("p_statuses", statuses);
}
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateFr())) {
query.setParameter("p_frDateFr", requestDto.getFromDateFr());
query.setParameter("p_frDateFr", TimeZoneUtils.toDateStringWithTimeZone(DateTimeUtil.parseDate("YYYYMMdd",requestDto.getFromDateFr()), tzClient));
}
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateTo())) {
query.setParameter("p_frDateTo", requestDto.getFromDateTo());
query.setParameter("p_frDateTo", TimeZoneUtils.toDateStringWithTimeZone(DateTimeUtil.parseDate("YYYYMMdd",requestDto.getFromDateTo()), tzClient));
}
if (!DataUtil.isNullOrEmpty(requestDto.getToDateFr())) {
query.setParameter("p_toDateFr", requestDto.getToDateFr());
query.setParameter("p_toDateFr", TimeZoneUtils.toDateStringWithTimeZone(DateTimeUtil.parseDate("YYYYMMdd",requestDto.getToDateFr()), tzClient));
}
if (!DataUtil.isNullOrEmpty(requestDto.getToDateTo())) {
query.setParameter("p_toDateTo", requestDto.getToDateTo());
query.setParameter("p_toDateTo", TimeZoneUtils.toDateStringWithTimeZone(DateTimeUtil.parseDate("YYYYMMdd",requestDto.getToDateTo()), tzClient));
}
if (!DataUtil.isNullOrEmpty(requestDto.getTypes())) {
String[] types = requestDto.getTypes().split(",");
......@@ -247,10 +242,18 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
query.setMaxResults(pageable.getPageSize());
}
List<CampaignDTO> data = query.list();
data.forEach(item -> {
item.setStartTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getStartTime(),tzClient)));
item.setEndTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getEndTime(),tzClient)));
});
Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count);
result.setData(dataPage);
} else {
List<CampaignDTO> dataExport = query.list();
dataExport.forEach(item -> {
item.setStartTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getStartTime(),tzClient)));
item.setEndTime(DateTimeUtil.parseDate("dd/MM/yyyy HH:mm:ss",TimeZoneUtils.toDateStringWithTimeZone(item.getEndTime(),tzClient)));
});
result.setData(dataExport);
}
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
......
......@@ -357,7 +357,7 @@ public class CampaignServiceImpl implements CampaignService {
entity.setUpdateBy(campaignDTO.getUpdateBy());
entity.setEndTime(campaignDTO.getEndTime());
campaignRepository.save(entity);
//campaignRepository.save(entity);
UserActionLogDTO userActionLog = new UserActionLogDTO();
userActionLog.setAgentId(null);
......@@ -368,7 +368,7 @@ public class CampaignServiceImpl implements CampaignService {
userActionLog.setEndTime(null);
userActionLog.setObjectId(entity.getCampaignId());
userActionLog.setActionType((short) 6);
userActionLogRepository.insertToUserActionLog(userActionLog);
//userActionLogRepository.insertToUserActionLog(userActionLog);
resultDTO.setData(entity);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
......
......@@ -69,6 +69,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
ResultDTO resultDTO = new ResultDTO();
List<ScenarioAnswerDTO> lstAnswers = new ArrayList<>();
List<ScenarioAnswer> lstAnswersToInsert = new ArrayList<>();
scenarioQuestionDTO.setQuestion(scenarioQuestionDTO.getQuestion().trim());
try {
ScenarioQuestion scenarioQuestion = modelMapper.map(scenarioQuestionDTO, ScenarioQuestion.class);
......
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.viettel.campaign.utils;
import org.apache.log4j.Logger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
/**
*
* @author phamky
*/
public class TimeZoneUtils {
private static Long getTimeZone(TimeZone tz) {
return TimeUnit.MILLISECONDS.toHours(tz.getRawOffset());
}
private static Long getTimeZoneToMinutes(TimeZone tz) {
return TimeUnit.MILLISECONDS.toMinutes(tz.getRawOffset());
}
public static String toQueryTimeZoneZero(Date date){
String dateStr = toDateStringWithTimeZoneZero(date);
return "to_date( '"+dateStr+"', 'DD/MM/YYYY HH24:MI:SS')";
}
public static String changeTimeZoneString(String dateStr, TimeZone tz){
try {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date = sdf.parse(dateStr);
sdf.setTimeZone(tz);
return sdf.format(date);
} catch (ParseException ex) {
}
return "";
}
public static String changeTimeZoneStringPattern(String dateStr, TimeZone tz, String pattern){
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date = sdf1.parse(dateStr);
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
sdf.setTimeZone(tz);
return sdf.format(date);
} catch (ParseException ex) {
}
return "";
}
public static String toDateStringWithTimeZoneZero(Date date){
TimeZone tz = getZone(0l);
return toDateStringWithTimeZone(date, tz);
}
public static String toDateStringWithTimeZonePattern(Date date, long tz, String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
sdf.setTimeZone(getZone(tz));
return sdf.format(date);
}
// public static String toHourStringWithTimeZonePattern(Long hour, long tz){
// SimpleDateFormat sdf = new SimpleDateFormat(pattern);
// sdf.setTimeZone(getZone(tz));
// return sdf.format(date);
// }
public static String toDateStringWithTimeZonePattern(Date date, TimeZone tz, String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
sdf.setTimeZone(tz);
return sdf.format(date);
}
public static String toDateStringWithTimeZone(Date date, TimeZone tz){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
sdf.setTimeZone(tz);
return sdf.format(date);
}
public static TimeZone getZone(Long timeZone){
if(timeZone == null){
//timezone is null, return default
return TimeZone.getDefault();
}
String[] ids = TimeZone.getAvailableIDs();
for (String id : ids) {
TimeZone tz = TimeZone.getTimeZone(id);
if(getTimeZone(tz).equals(timeZone)){
//zone need change
return tz;
}
}
return TimeZone.getDefault();
}
public static TimeZone getZoneMinutes(Long timeZone){
if(timeZone == null){
//timezone is null, return default
return TimeZone.getDefault();
}
String[] ids = TimeZone.getAvailableIDs();
for (String id : ids) {
TimeZone tz = TimeZone.getTimeZone(id);
if(getTimeZoneToMinutes(tz).equals(timeZone)){
//zone need change
return tz;
}
}
return TimeZone.getDefault();
}
public static Date changeTimeZone(Date date, Long timeZone){
if(timeZone == null){
//timezone is null, do not change timezone
return date;
}
String[] ids = TimeZone.getAvailableIDs();
for (String id : ids) {
TimeZone tz = TimeZone.getTimeZone(id);
if(getTimeZone(tz).equals(timeZone)){
//zone need change
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(tz);
try {
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date newDate = df2.parse(df.format(date));
System.out.println(df2.format(newDate));
return newDate;
} catch (ParseException ex) {
}
}
}
return date;
}
public static void main(String args[]){
Date date = new Date();
System.out.println(changeTimeZone(date, -6l));
System.out.println(changeTimeZone(date, 0l));
System.out.println(getZone(0l));
}
}
......@@ -66,4 +66,7 @@ public class CampaignDTO extends BaseDTO {
private String sessionId;
private Long numOfInteractedCus;
private Long numOfNotInteractedCus;
//timezone to get true date
private Double timezone;
}
server:
port: 9999
port: 1111
spring:
application:
name: campaign
......
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