Commit ed8fc845 authored by ='s avatar =

Merge remote-tracking branch 'origin/master'

parents d42969f6 b7ca4979
No preview for this file type
log4j.rootLogger=INFO, R, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=[%t] %d{dd/MM/yyyy HH:mm:ss} %5p %c{1}: (%L) : %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.DatePattern='.'yyyy-MM-dd
log4j.appender.R.File=log/campaign.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%t] %d{dd/MM/yyyy HH:mm:ss} %5p %c{1}: (%L) : %m%n
\ No newline at end of file
[main] 19/08/2019 17:50:53 INFO RedisUtil: (38) : Start connect Redis: 10.60.156.82:8011,10.60.156.82:8012,10.60.156.82:8013,10.60.156.82:8014,10.60.156.82:8015,10.60.156.82:8016
[main] 19/08/2019 17:53:34 INFO RedisUtil: (38) : Start connect Redis: 10.60.156.82:8011,10.60.156.82:8012,10.60.156.82:8013,10.60.156.82:8014,10.60.156.82:8015,10.60.156.82:8016
...@@ -127,11 +127,6 @@ ...@@ -127,11 +127,6 @@
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
<version>3.17</version> <version>3.17</version>
</dependency> </dependency>
<dependency>
<groupId>com.cronutils</groupId>
<artifactId>cron-utils</artifactId>
<version>9.0.1</version>
</dependency>
<dependency> <dependency>
<groupId>org.quartz-scheduler</groupId> <groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId> <artifactId>quartz</artifactId>
...@@ -153,45 +148,8 @@ ...@@ -153,45 +148,8 @@
</dependencies> </dependencies>
<!--<dependencyManagement>-->
<!--<dependencies>-->
<!--<dependency>-->
<!--<groupId>org.springframework.cloud</groupId>-->
<!--<artifactId>spring-cloud-dependencies</artifactId>-->
<!--<version>${spring-cloud.version}</version>-->
<!--<type>pom</type>-->
<!--<scope>import</scope>-->
<!--</dependency>-->
<!--</dependencies>-->
<!--</dependencyManagement>-->
<build> <build>
<plugins> <plugins>
<!--<plugin>-->
<!--<groupId>org.asciidoctor</groupId>-->
<!--<artifactId>asciidoctor-maven-plugin</artifactId>-->
<!--<version>1.5.3</version>-->
<!--<executions>-->
<!--<execution>-->
<!--<id>generate-docs</id>-->
<!--<phase>prepare-package</phase>-->
<!--<goals>-->
<!--<goal>process-asciidoc</goal>-->
<!--</goals>-->
<!--<configuration>-->
<!--<backend>html</backend>-->
<!--<doctype>book</doctype>-->
<!--</configuration>-->
<!--</execution>-->
<!--</executions>-->
<!--<dependencies>-->
<!--<dependency>-->
<!--<groupId>org.springframework.restdocs</groupId>-->
<!--<artifactId>spring-restdocs-asciidoctor</artifactId>-->
<!--<version>${spring-restdocs.version}</version>-->
<!--</dependency>-->
<!--</dependencies>-->
<!--</plugin>-->
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
......
package com.viettel.campaign.config; package com.viettel.campaign.config;
//import com.viettel.campaign.job.CampaignJob; //import com.viettel.campaign.job.CampaignJob;
import com.viettel.campaign.job.CampaignJob; import com.viettel.campaign.job.CampaignJob;
import com.viettel.campaign.service.ApParamService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger; import org.springframework.scheduling.support.CronTrigger;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
......
...@@ -31,27 +31,27 @@ public class CorsFilter implements Filter { ...@@ -31,27 +31,27 @@ public class CorsFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) req; HttpServletRequest request = (HttpServletRequest) req;
chain.doFilter(req, resp); // chain.doFilter(req, resp);
// if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
// chain.doFilter(req, resp); chain.doFilter(req, resp);
// return; return;
// } }
// if ("/".equals(request.getRequestURI())) { if ("/".equals(request.getRequestURI())) {
// chain.doFilter(req, resp); chain.doFilter(req, resp);
// return; return;
// } }
// String xAuthToken = request.getHeader("X-Auth-Token"); String xAuthToken = request.getHeader("X-Auth-Token");
// if (xAuthToken == null || "".equals(xAuthToken)) { if (xAuthToken == null || "".equals(xAuthToken)) {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null."); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
// return; return;
// } }
// Object obj = RedisUtil.getInstance().get(xAuthToken); Object obj = RedisUtil.getInstance().get(xAuthToken);
// if (obj instanceof UserSession) { if (obj instanceof UserSession) {
// chain.doFilter(req, resp); chain.doFilter(req, resp);
// } else { } else {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid."); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
// } }
} }
@Override @Override
......
...@@ -16,7 +16,7 @@ import java.util.List; ...@@ -16,7 +16,7 @@ import java.util.List;
@Repository @Repository
public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer, Long> { public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer, Long> {
List<ScenarioAnswer> findByScenarioQuestionIdAndCompanySiteIdAndStatus(Long scenarioQuestionId, Long companySiteId, Short status); List<ScenarioAnswer> findByScenarioQuestionIdAndCompanySiteIdAndStatusOrderByOrderIndex(Long scenarioQuestionId, Long companySiteId, Short status);
@Query(value="SELECT MAX(orderIndex) FROM ScenarioAnswer WHERE scenarioQuestionId = :scenarioQuestionId AND companySiteId = :companySiteId AND status = 1") @Query(value="SELECT MAX(orderIndex) FROM ScenarioAnswer WHERE scenarioQuestionId = :scenarioQuestionId AND companySiteId = :companySiteId AND status = 1")
Long getMaxAnswerOrderId(@Param("scenarioQuestionId") Long scenarioQuestionId, @Param("companySiteId") Long companySiteId); Long getMaxAnswerOrderId(@Param("scenarioQuestionId") Long scenarioQuestionId, @Param("companySiteId") Long companySiteId);
......
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ScenarioQuestionDTO;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
public interface ScenarioQuestionRepositoryCustom { public interface ScenarioQuestionRepositoryCustom {
Integer countDuplicateQuestionCode(ScenarioQuestionDTO questionDTO);
} }
package com.viettel.campaign.repository.ccms_full.impl; package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.ccms_full.ScenarioQuestionRepositoryCustom; import com.viettel.campaign.repository.ccms_full.ScenarioQuestionRepositoryCustom;
import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.web.dto.ScenarioQuestionDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.util.List;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
@Repository @Repository
public class ScenarioQuestionRepositoryImpl implements ScenarioQuestionRepositoryCustom { public class ScenarioQuestionRepositoryImpl implements ScenarioQuestionRepositoryCustom {
private static final Logger logger = LogManager.getLogger(ScenarioQuestionRepositoryImpl.class);
@Override
public Integer countDuplicateQuestionCode(ScenarioQuestionDTO questionDTO) {
logger.info("Start search duplicate quest code row::");
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Integer count = null;
try {
StringBuilder sb = new StringBuilder();
//SELECT COUNT(1) FROM ScenarioQuestion WHERE code = :code AND scenarioId = :scenarioId AND campaignId = :campaignId AND companySiteId = :companySiteId AND status = 1"
sb.append("SELECT COUNT(1) FROM SCENARIO_QUESTION WHERE 1 = 1 AND STATUS = 1 ");
if (questionDTO.getScenarioQuestionId() != null) {
sb.append(" AND SCENARIO_QUESTION_ID <> :p_question_id ");
}
if (questionDTO.getCode() != null) {
sb.append(" AND CODE = :p_code ");
}
if (questionDTO.getCampaignId() != null) {
sb.append(" AND CAMPAIGN_ID = :p_campaign_id");
}
if (questionDTO.getCompanySiteId() != null) {
sb.append(" AND COMPANY_SITE_ID = :p_site_id");
}
SQLQuery query = session.createSQLQuery(sb.toString());
if (questionDTO.getScenarioQuestionId() != null) {
query.setParameter("p_question_id", questionDTO.getScenarioQuestionId());
}
if (questionDTO.getCode() != null) {
query.setParameter("p_code", questionDTO.getCode());
}
if (questionDTO.getCampaignId() != null) {
query.setParameter("p_campaign_id", questionDTO.getCampaignId());
}
if (questionDTO.getCompanySiteId() != null) {
query.setParameter("p_site_id", questionDTO.getCompanySiteId());
}
final List<BigDecimal> obj = query.list();
for (BigDecimal i : obj) {
if (i != null) {
count = i.intValue();
}
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return count;
}
} }
...@@ -14,7 +14,10 @@ public interface ScenarioQuestionService { ...@@ -14,7 +14,10 @@ public interface ScenarioQuestionService {
Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId); Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId);
Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId); Integer countDuplicateQuestionCode(ScenarioQuestionDTO questionDTO);
ResultDTO delete(ScenarioQuestionDTO scenarioQuestionDTO); ResultDTO delete(ScenarioQuestionDTO scenarioQuestionDTO);
ResultDTO update(ScenarioQuestionDTO scenarioQuestionDTO);
} }
...@@ -43,7 +43,7 @@ public class ScenarioAnswerServiceImpl implements ScenarioAnswerService { ...@@ -43,7 +43,7 @@ public class ScenarioAnswerServiceImpl implements ScenarioAnswerService {
public ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId) { public ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
List<ScenarioAnswer> lst = scenarioAnswerRepository.findByScenarioQuestionIdAndCompanySiteIdAndStatus(scenarioQuestionId, companySiteId, (short) 1); List<ScenarioAnswer> lst = scenarioAnswerRepository.findByScenarioQuestionIdAndCompanySiteIdAndStatusOrderByOrderIndex(scenarioQuestionId, companySiteId, (short) 1);
resultDTO.setData(lst); resultDTO.setData(lst);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
......
...@@ -2,10 +2,7 @@ package com.viettel.campaign.service.impl; ...@@ -2,10 +2,7 @@ package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.*; import com.viettel.campaign.model.ccms_full.*;
import com.viettel.campaign.repository.ccms_full.CampaignLogRepository; import com.viettel.campaign.repository.ccms_full.*;
import com.viettel.campaign.repository.ccms_full.CampaignRepository;
import com.viettel.campaign.repository.ccms_full.ScenarioAnswerRepository;
import com.viettel.campaign.repository.ccms_full.ScenarioQuestionRepository;
import com.viettel.campaign.service.ScenarioQuestionService; import com.viettel.campaign.service.ScenarioQuestionService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
...@@ -46,6 +43,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -46,6 +43,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
@Autowired @Autowired
ModelMapper modelMapper; ModelMapper modelMapper;
@Autowired
ScenarioQuestionRepositoryCustom questionRepositoryCustom;
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findByScenarioIdAndCampaignIdAndCompanySiteId(Long scenarioId, Long campaignId, Long companySiteId) { public ResultDTO findByScenarioIdAndCampaignIdAndCompanySiteId(Long scenarioId, Long campaignId, Long companySiteId) {
...@@ -71,6 +71,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -71,6 +71,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
List<ScenarioAnswer> lstAnswersToInsert = new ArrayList<>(); List<ScenarioAnswer> lstAnswersToInsert = new ArrayList<>();
try { try {
ScenarioQuestion scenarioQuestion = modelMapper.map(scenarioQuestionDTO, ScenarioQuestion.class); ScenarioQuestion scenarioQuestion = modelMapper.map(scenarioQuestionDTO, ScenarioQuestion.class);
scenarioQuestion.setCreateTime(new Date()); scenarioQuestion.setCreateTime(new Date());
scenarioQuestion.setStatus((short) 1); scenarioQuestion.setStatus((short) 1);
scenarioQuestionRepository.save(scenarioQuestion); scenarioQuestionRepository.save(scenarioQuestion);
...@@ -85,19 +86,23 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -85,19 +86,23 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
ScenarioAnswer answer = modelMapper.map(item, ScenarioAnswer.class); ScenarioAnswer answer = modelMapper.map(item, ScenarioAnswer.class);
lstAnswersToInsert.add(answer); lstAnswersToInsert.add(answer);
}); });
scenarioAnswerRepository.saveAll(lstAnswersToInsert); scenarioAnswerRepository.saveAll(lstAnswersToInsert);
CampaignLog campaignLogAnswer = new CampaignLog();
campaignLogAnswer.setCompanySiteId(scenarioQuestion.getCompanySiteId()); for (ScenarioAnswer a : lstAnswersToInsert) {
campaignLogAnswer.setCreateTime(new Date()); CampaignLog campaignLogAnswer = new CampaignLog();
campaignLogAnswer.setAgentId(null); campaignLogAnswer.setCompanySiteId(scenarioQuestion.getCompanySiteId());
campaignLogAnswer.setTableName("SCENARIO_ANSWER"); campaignLogAnswer.setCreateTime(new Date());
campaignLogAnswer.setColumnName(null); campaignLogAnswer.setAgentId(null);
campaignLogAnswer.setPreValue(null); campaignLogAnswer.setTableName("SCENARIO_ANSWER");
campaignLogAnswer.setPostValue(null); campaignLogAnswer.setColumnName(null);
campaignLogAnswer.setDescription("Them moi cau tra loi rieng le"); campaignLogAnswer.setPreValue(null);
campaignLogAnswer.setCampaignId(scenarioQuestion.getCampaignId()); campaignLogAnswer.setPostValue(null);
campaignLogAnswer.setCustomerId(scenarioQuestion.getScenarioQuestionId()); campaignLogAnswer.setCampaignId(scenarioQuestion.getCampaignId());
campaignLogRepository.save(campaignLogAnswer); campaignLogAnswer.setCustomerId(a.getScenarioAnswerId());
campaignLogAnswer.setDescription("Them moi cau tra loi");
campaignLogRepository.save(campaignLogAnswer);
}
} }
CampaignLog campaignLog = new CampaignLog(); CampaignLog campaignLog = new CampaignLog();
...@@ -128,8 +133,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -128,8 +133,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
public Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId) { public Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId) {
try { try {
Long index = scenarioQuestionRepository.getMaxOrderId(scenarioId, campaignId, companySiteId); Long index = scenarioQuestionRepository.getMaxOrderId(scenarioId, campaignId, companySiteId);
if(index == null) return 0L; else return index; if (index == null) return 0L;
}catch (Exception ex) { else return index;
} catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
} }
return null; return null;
...@@ -137,9 +143,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -137,9 +143,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId) { public Integer countDuplicateQuestionCode(ScenarioQuestionDTO questionDTO) {
try { try {
return scenarioQuestionRepository.countDuplicateQuestionCode(code, scenarioId, campaignId, companySiteId); return questionRepositoryCustom.countDuplicateQuestionCode(questionDTO);
} catch (Exception ex) { } catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
} }
...@@ -193,9 +199,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -193,9 +199,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
campaignLog.setCustomerId(scenarioQuestionDTO.getScenarioQuestionId()); campaignLog.setCustomerId(scenarioQuestionDTO.getScenarioQuestionId());
campaignLogRepository.save(campaignLog); campaignLogRepository.save(campaignLog);
List<ScenarioAnswer> lstAnswer = scenarioAnswerRepository.findByScenarioQuestionIdAndCompanySiteIdAndStatus(scenarioQuestion.getScenarioQuestionId(), List<ScenarioAnswer> lstAnswer = scenarioAnswerRepository.findByScenarioQuestionIdAndCompanySiteIdAndStatusOrderByOrderIndex(scenarioQuestion.getScenarioQuestionId(),
scenarioQuestion.getCompanySiteId(), (short) 1); scenarioQuestion.getCompanySiteId(), (short) 1);
if(lstAnswer.size() > 0) { if (lstAnswer.size() > 0) {
lstAnswer.forEach(answer -> { lstAnswer.forEach(answer -> {
answer.setStatus((short) 0); answer.setStatus((short) 0);
answer.setDeleteTime(new Date()); answer.setDeleteTime(new Date());
...@@ -222,4 +228,87 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -222,4 +228,87 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
return resultDTO; return resultDTO;
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO update(ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = new ResultDTO();
List<ScenarioAnswerDTO> lstAnswers = new ArrayList<>();
List<ScenarioAnswer> lstAnswersToInsert = new ArrayList<>();
if (scenarioQuestionDTO.getScenarioQuestionId() == null) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
//ScenarioQuestion scenarioQuestion = modelMapper.map(scenarioQuestionDTO, ScenarioQuestion.class);
ScenarioQuestion questionTmp = scenarioQuestionRepository.findScenarioQuestionByScenarioQuestionId(scenarioQuestionDTO.getScenarioQuestionId());
if (questionTmp != null) {
//questionTmp.setCode(scenarioQuestionDTO.getCode());
//questionTmp.setOrderIndex(scenarioQuestionDTO.getOrderIndex());
// questionTmp.setIsDefault(scenarioQuestionDTO.getIsDefault());
// questionTmp.setIsRequire(scenarioQuestionDTO.getIsRequire());
// questionTmp.setQuestion(scenarioQuestionDTO.getQuestion());
// questionTmp.setType(scenarioQuestionDTO.getType());
scenarioQuestionRepository.save(questionTmp);
CampaignLog campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(questionTmp.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setAgentId(null);
campaignLog.setTableName("SCENARIO_QUESTION");
campaignLog.setColumnName(null);
campaignLog.setPreValue(null);
campaignLog.setPostValue(null);
campaignLog.setDescription("Chinh sua cau hoi rieng le");
campaignLog.setCampaignId(questionTmp.getCampaignId());
campaignLog.setCustomerId(questionTmp.getScenarioQuestionId());
campaignLogRepository.save(campaignLog);
// if (scenarioQuestionDTO.getLstAnswers().size() > 0) {
// lstAnswers = scenarioQuestionDTO.getLstAnswers();
//
// lstAnswers.forEach(item -> {
// CampaignLog campaignLogAnswer = new CampaignLog();
// campaignLogAnswer.setCompanySiteId(scenarioQuestion.getCompanySiteId());
// campaignLogAnswer.setCreateTime(new Date());
// campaignLogAnswer.setAgentId(null);
// campaignLogAnswer.setTableName("SCENARIO_ANSWER");
// campaignLogAnswer.setColumnName(null);
// campaignLogAnswer.setPreValue(null);
// campaignLogAnswer.setPostValue(null);
// campaignLogAnswer.setCampaignId(scenarioQuestion.getCampaignId());
//
// if (item.getScenarioAnswerId() != null) {
// ScenarioAnswer answer = modelMapper.map(item, ScenarioAnswer.class);
// scenarioAnswerRepository.save(answer);
// campaignLogAnswer.setCustomerId(answer.getScenarioAnswerId());
// campaignLogAnswer.setDescription("Chinh sua cau tra loi");
// campaignLogRepository.save(campaignLogAnswer);
// } else {
// item.setCode(scenarioQuestion.getScenarioQuestionId() + "_" + item.getOrderIndex());
// item.setScenarioQuestionId(scenarioQuestion.getScenarioQuestionId());
// item.setCreateTime(new Date());
// item.setStatus((short) 1);
// ScenarioAnswer answer = modelMapper.map(item, ScenarioAnswer.class);
// scenarioAnswerRepository.save(answer);
// campaignLogAnswer.setCustomerId(answer.getScenarioAnswerId());
// campaignLogAnswer.setDescription("Them moi cau tra loi");
// campaignLogRepository.save(campaignLogAnswer);
// }
// });
// }
}
resultDTO.setData(questionTmp);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
} }
...@@ -79,6 +79,7 @@ public class ScenarioServiceImpl implements ScenarioService { ...@@ -79,6 +79,7 @@ public class ScenarioServiceImpl implements ScenarioService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO sortQuestionAndAnswer(ScenarioDTO scenarioDTO) { public ResultDTO sortQuestionAndAnswer(ScenarioDTO scenarioDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
......
package com.viettel.campaign.utils; package com.viettel.campaign.utils;
import com.cronutils.model.definition.CronDefinition;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.model.time.ExecutionTime;
import com.cronutils.parser.CronParser;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.logging.log4j.util.Strings;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
import org.quartz.CronExpression; import org.quartz.CronExpression;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.ZonedDateTime;
import java.util.Date; import java.util.Date;
import java.util.Optional;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import static com.cronutils.model.CronType.QUARTZ;
import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.NANOSECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS;
...@@ -29,11 +20,24 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS; ...@@ -29,11 +20,24 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
@Slf4j @Slf4j
public final class DateTimeUtil { public final class DateTimeUtil {
public static final long DAY_IN_MILLIS = 86400000L; public static final long DAY_IN_MILLIS = 86400000L;
public static interface DateTimeProvider { long now(); }
public static interface DateTimeProvider {
long now();
}
private static final AtomicReference<DateTimeProvider> PROVIDER = new AtomicReference<DateTimeProvider>(); private static final AtomicReference<DateTimeProvider> PROVIDER = new AtomicReference<DateTimeProvider>();
public static final DateTimeProvider getProvider() { return PROVIDER.get(); }
public static final DateTimeProvider getProvider() {
return PROVIDER.get();
}
static { static {
PROVIDER.set(new DateTimeProvider() { @Override public long now() { return System.currentTimeMillis(); } }); PROVIDER.set(new DateTimeProvider() {
@Override
public long now() {
return System.currentTimeMillis();
}
});
} }
public static Date currentTime() { public static Date currentTime() {
...@@ -47,7 +51,8 @@ public final class DateTimeUtil { ...@@ -47,7 +51,8 @@ public final class DateTimeUtil {
public static final Date date(final long millis) { public static final Date date(final long millis) {
final int offset = getTimeZoneOffset(millis); final int offset = getTimeZoneOffset(millis);
long t = millis - ((t = (millis + offset) % DAY_IN_MILLIS) < 0 ? DAY_IN_MILLIS + t : t); long t = millis - ((t = (millis + offset) % DAY_IN_MILLIS) < 0 ? DAY_IN_MILLIS + t : t);
t = t + (offset - getTimeZoneOffset(t)); return new Date(t); t = t + (offset - getTimeZoneOffset(t));
return new Date(t);
} }
public static int getTimeZoneOffset(long millis) { public static int getTimeZoneOffset(long millis) {
...@@ -74,8 +79,8 @@ public final class DateTimeUtil { ...@@ -74,8 +79,8 @@ public final class DateTimeUtil {
} }
public static String format(String pattern, Date date, String defaultValue) { public static String format(String pattern, Date date, String defaultValue) {
if(date == null) return defaultValue; if (date == null) return defaultValue;
return format(pattern ,date.getTime()); return format(pattern, date.getTime());
} }
/** /**
...@@ -84,6 +89,7 @@ public final class DateTimeUtil { ...@@ -84,6 +89,7 @@ public final class DateTimeUtil {
public static boolean isValid(final long millis) { public static boolean isValid(final long millis) {
return millis > 0L; return millis > 0L;
} }
/** /**
* *
*/ */
...@@ -99,9 +105,9 @@ public final class DateTimeUtil { ...@@ -99,9 +105,9 @@ public final class DateTimeUtil {
* *
*/ */
public static boolean isRun(String cron, Date lastCheck){ public static boolean isRun(String cron, Date lastCheck) {
boolean isOk = false; boolean isOk = false;
String format="dd-MMM-YYYY hh:mm:ss"; String format = "dd-MMM-YYYY hh:mm:ss";
// String cronExpression="* * 12 ? * FRI *"; // String cronExpression="* * 12 ? * FRI *";
SimpleDateFormat sdf = new SimpleDateFormat(format); SimpleDateFormat sdf = new SimpleDateFormat(format);
CronExpression expression = null; CronExpression expression = null;
...@@ -110,14 +116,14 @@ public final class DateTimeUtil { ...@@ -110,14 +116,14 @@ public final class DateTimeUtil {
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
Date currentDate = new Date(); Date currentDate = new Date();
assert expression != null; assert expression != null;
Date lastDate = expression.getNextValidTimeAfter(lastCheck); Date lastDate = expression.getNextValidTimeAfter(lastCheck);
long interval = lastDate.getTime() - currentDate.getTime(); long interval = lastDate.getTime() - currentDate.getTime();
if(interval <= 0){ if (interval <= 0) {
isOk = true; isOk = true;
} }
return isOk; return isOk;
} }
} }
...@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@RequestMapping("/ipcc/campaign/scenario-question") @RequestMapping("/ipcc/campaign/scenario-question")
@CrossOrigin @CrossOrigin("*")
public class ScenarioQuestionController { public class ScenarioQuestionController {
@Autowired @Autowired
ScenarioQuestionService scenarioQuestionService; ScenarioQuestionService scenarioQuestionService;
...@@ -39,8 +39,21 @@ public class ScenarioQuestionController { ...@@ -39,8 +39,21 @@ public class ScenarioQuestionController {
return scenarioQuestionService.getMaxOrderId(scenarioId, campaignId, companySiteId); return scenarioQuestionService.getMaxOrderId(scenarioId, campaignId, companySiteId);
} }
@RequestMapping(value = "/count-duplicate-question-code", method = RequestMethod.GET) @RequestMapping(value = "/count-duplicate-question-code", method = RequestMethod.POST)
public Integer countDuplicateQuestionCode(@RequestParam String code, @RequestParam Long scenarioId, @RequestParam Long campaignId, @RequestParam Long companySiteId) { public Integer countDuplicateQuestionCode(@RequestBody ScenarioQuestionDTO questionDTO) {
return scenarioQuestionService.countDuplicateQuestionCode(code, scenarioId, campaignId, companySiteId); return scenarioQuestionService.countDuplicateQuestionCode(questionDTO);
} }
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public ResponseEntity<ResultDTO> deleteQuestion(@RequestBody ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = scenarioQuestionService.delete(scenarioQuestionDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@RequestMapping(value="/update", method = RequestMethod.PUT)
public ResponseEntity<ResultDTO> update(@RequestBody ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = scenarioQuestionService.update(scenarioQuestionDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
} }
package com.viettel.econtact;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ServiceCampaignApplicationTests {
@Test
public void contextLoads() {
}
}
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