Commit 1fdd0ee6 authored by Tu Bach's avatar Tu Bach

tubn campaign execute search

parent 6681858b
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -11,6 +13,8 @@ import java.util.List;
@Repository
public interface CampaignExecuteRepository {
List<CampaignDTO> searchCampaignExecute(CampaignRequestDTO campaignRequestDto, Pageable pageable);
//<editor-fold: hungtt>
List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType);
......
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CampaignRepositoryCustom {
ResultDTO searchCampaignExecute(CampaignRequestDTO campaignRequestDto);
ResultDTO search(CampaignRequestDTO requestDto);
......@@ -14,5 +16,5 @@ public interface CampaignRepositoryCustom {
String getMaxCampaignIndex();
ResultDTO checkAllowStatusToPrepare (Long campaignId);
ResultDTO checkAllowStatusToPrepare(Long campaignId);
}
......@@ -2,6 +2,8 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -12,5 +14,10 @@ import java.util.List;
@Repository
public interface TimeRangeDialModeRepository extends JpaRepository<TimeRangeDialMode, Long> {
List<TimeRangeDialMode> findTimeRangeDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
@Query(value = "SELECT * FROM TIME_RANGE_DIAL_MODE r " +
"WHERE r.CAMPAIGN_ID = :campaignId AND r.COMPANY_SITE_ID = :companySiteId AND TO_CHAR(r.START_TIME,'HH24:MI:SS') <= TO_CHAR(SYSDATE,'HH24:MI:SS')", nativeQuery = true)
TimeRangeDialMode findDialModeAtCurrent(@Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
}
......@@ -2,6 +2,8 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -12,5 +14,10 @@ import java.util.List;
@Repository
public interface TimeZoneDialModeRepository extends JpaRepository<TimeZoneDialMode, Long> {
List<TimeZoneDialMode> findTimeZoneDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
@Query(value = "SELECT * FROM TIME_ZONE_DIAL_MODE z " +
"WHERE z.CAMPAIGN_ID = :campaignId AND z.COMPANY_SITE_ID = :companySiteId AND concat(z.HOUR, ':', z.MINUTE) <= TO_CHAR(SYSDATE,'HH24:MI')", nativeQuery = true)
TimeZoneDialMode findDialModeAtCurrent(@Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
}
......@@ -37,141 +37,6 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
@PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager;
@Override
public ResultDTO searchCampaignExecute(CampaignRequestDTO campaignRequestDto) {
ResultDTO result = new ResultDTO();
List<CampaignDTO> lst = new ArrayList<>();
StringBuilder expression = new StringBuilder()
.append(" SELECT C.CAMPAIGN_CODE, C.CAMPAIGN_NAME, C.CONTENT, C.START_TIME, C.END_TIME, C.STATUS, CA.STATUS AS AGENT_STATUS, C.CAMPAIGN_ID ")
.append(" FROM CAMPAIGN C INNER JOIN CAMPAIGN_AGENT CA ON C.CAMPAIGN_ID = CA.CAMPAIGN_ID ")
.append(" WHERE 1 = 1 ")
.append(" AND CA.AGENT_ID = :pAgentId ");
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignCode())) {
expression.append(" AND C.CAMPAIGN_CODE IN (:pCampaignCode) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignName())) {
expression.append(" AND UPPER(C.CAMPAIGN_NAME) LIKE :pCampaignName ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getStatus().longValue())) {
if (campaignRequestDto.getStatus() != 0)
expression.append(" AND C.STATUS = :pStatus ");
else
expression.append(" AND C.STATUS IN (2, 3) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateFr())) {
expression.append(" AND TRUNC(C.START_TIME) >= TRUNC(:pStartTimeFr) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateTo())) {
expression.append(" AND TRUNC(C.START_TIME) <= TRUNC(:pStartTimeTo) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateFr())) {
expression.append(" AND TRUNC(C.END_TIME) >= TRUNC(:pEndTimeFr) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateTo())) {
expression.append(" AND TRUNC(C.END_TIME) <= TRUNC(:pEndTimeTo) ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusFr())) {
expression.append(" AND C.CUSTOMER_NUMBER >= :pCustNumFr ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusTo())) {
expression.append(" AND C.CUSTOMER_NUMBER <= :pCustNumTo ");
}
try {
Query query = entityManager.createNativeQuery(expression.toString());
query.setParameter("pAgentId", campaignRequestDto.getAgentId());
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignCode())) {
String[] lstCode = campaignRequestDto.getCampaignCode().split(",");
query.setParameter("pCampaignCode", lstCode);
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignName())) {
query.setParameter("pCampaignName", "%" +
campaignRequestDto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\\\%")
.replaceAll("_", "\\\\_")
+ "%");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getStatus().longValue())) {
if (campaignRequestDto.getStatus() != 0)
query.setParameter("pStatus", campaignRequestDto.getStatus());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateFr())) {
query.setParameter("pStartTimeFr", campaignRequestDto.getFromDateFr());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateTo())) {
query.setParameter("pStartTimeTo", campaignRequestDto.getFromDateTo());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateFr())) {
query.setParameter("pEndTimeFr", campaignRequestDto.getToDateFr());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateTo())) {
query.setParameter("pEndTimeTo", campaignRequestDto.getToDateTo());
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusFr())) {
query.setParameter("pCustNumFr", campaignRequestDto.getNumOfCusFr());
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusTo())) {
query.setParameter("pCustNumTo", campaignRequestDto.getNumOfCusTo());
}
result.setTotalRow(query.getResultList().size());
Pageable pageable = SQLBuilder.buildPageable(campaignRequestDto);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<Object[]> data = query.getResultList();
for (Object[] obj : data) {
CampaignDTO item = new CampaignDTO();
item.setPage(campaignRequestDto.getPage());
item.setPageSize(campaignRequestDto.getPageSize());
item.setSort(campaignRequestDto.getSort());
item.setCampaignCode((String) obj[0]);
item.setCampaignName((String) obj[1]);
item.setContent((String) obj[2]);
item.setStartTime((Date) obj[3]);
item.setEndTime((Date) obj[4]);
item.setStatus(((BigDecimal) obj[5]).shortValueExact());
item.setAgentStatus(((BigDecimal) obj[6]).shortValueExact());
item.setCampaignId(((BigDecimal) obj[7]).longValueExact());
lst.add(item);
}
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setListData(lst);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override
public ResultDTO search(CampaignRequestDTO requestDto) {
logger.info("Start search campaign::");
......
......@@ -21,4 +21,10 @@ public interface CampaignExecuteService {
List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto);
//</editor-fold>
ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto);
ResultDTO getExecuteCampaign(CampaignRequestDTO requestDto);
ResultDTO getCall(CampaignRequestDTO dto);
}
......@@ -13,7 +13,6 @@ import java.util.List;
import java.util.Map;
public interface CampaignService {
ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto);
ResultDTO search(CampaignRequestDTO requestDto);
......
package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.acd_full.Agents;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import com.viettel.campaign.repository.acd_full.AgentsRepository;
import com.viettel.campaign.repository.ccms_full.CampaignExecuteRepository;
import com.viettel.campaign.repository.ccms_full.CampaignRepositoryCustom;
import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository;
import com.viettel.campaign.service.CampaignExecuteService;
import com.viettel.campaign.utils.BundleUtils;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO;
......@@ -19,9 +28,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.*;
@Service
public class CampaignExecuteServiceImp implements CampaignExecuteService {
......@@ -29,9 +36,22 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
private static final Logger logger = LoggerFactory.getLogger(CampaignExecuteServiceImp.class);
private SimpleDateFormat formatter = new SimpleDateFormat(Constants.DATE_FORMAT.FOMART_DATE_TYPE_1);
@Autowired
CampaignRepositoryCustom campaignRepositoryCustom;
@Autowired
CampaignExecuteRepository campaignExecuteRepository;
@Autowired
AgentsRepository agentsRepository;
@Autowired
TimeZoneDialModeRepository zoneDialModeRepository;
@Autowired
TimeRangeDialModeRepository rangeDialModeRepository;
//<editor-fold: hungtt>
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
......@@ -194,4 +214,83 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
cell.setCellStyle(rowStyle);
}
//</editor-fold: hungtt>
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto) {
ResultDTO result = new ResultDTO();
Map data = new HashMap();
Integer count = campaignExecuteRepository.searchCampaignExecute(requestDto, null).size();
if (count > 0) {
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setTotalRow(count);
result.setListData(campaignExecuteRepository.searchCampaignExecute(requestDto, SQLBuilder.buildPageable(requestDto)));
Agents agents = agentsRepository.getByAgentId(requestDto.getAgentId());
//TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
if (agents.getUserStatus().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("AVAILABLE")) {
//if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0))
data.put("dialModeManual", "1");
}
} else {
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}
return result;
}
@Override
public ResultDTO getExecuteCampaign(CampaignRequestDTO requestDto) {
ResultDTO result = new ResultDTO();
try {
Agents agents = agentsRepository.getByAgentId(requestDto.getAgentId());
//TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
if (agents.getUserStatus().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("LOGOUT")) {
//if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0))
Agents a = new Agents();
a.setAgentId(requestDto.getAgentId());
a.setCampaignSystemStatus("AVAILABLE");
a.setCurrentCampaignId(Long.parseLong(requestDto.getCampaignId()));
saveAgents(a);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Transactional(DataSourceQualify.CCMS_FULL)
public Agents saveAgents(Agents a) {
return agentsRepository.save(a);
}
@Transactional(DataSourceQualify.CCMS_FULL)
public CampaignAgent saveCampaignAgent(CampaignAgent ca) {
return null;
}
@Override
public ResultDTO getCall(CampaignRequestDTO dto) {
ResultDTO result = new ResultDTO();
Map data = new HashMap();
data.put("campaignId", dto.getCampaignId());
Agents agents = agentsRepository.getByAgentId(dto.getAgentId());
TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
return result;
}
}
......@@ -60,12 +60,6 @@ public class CampaignServiceImpl implements CampaignService {
@Autowired
ApParamRepository apParamRepository;
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto) {
return campaignRepositoryCustom.searchCampaignExecute(requestDto);
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO search(CampaignRequestDTO requestDto) {
......
......@@ -39,7 +39,21 @@ public class CampaignController {
@PostMapping("/searchCampaignExecute")
@ResponseBody
public ResponseEntity<ResultDTO> searchCampaignExecute(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignService.searchCampaignExecute(requestDto);
ResultDTO result = campaignExecuteService.searchCampaignExecute(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/getExecuteCampaign")
@ResponseBody
public ResponseEntity<ResultDTO> getExecuteCampaign(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignExecuteService.getExecuteCampaign(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/getCall")
@ResponseBody
public ResponseEntity<ResultDTO> getCall(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignExecuteService.getCall(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
......
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