Commit e5d05c7f authored by đinh thị đầm's avatar đinh thị đầm

Merge branch 'master' of http://git.myitsol.com/hanv/service-campaign

 Conflicts:
	src/main/java/com/viettel/campaign/repository/ccms_full/CampaignCfgRepository.java
parents f79dfbd2 e099d3d4
......@@ -119,7 +119,7 @@
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
<version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
......@@ -131,7 +131,7 @@
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
......
......@@ -123,7 +123,7 @@ public class CampaignJob {
List<CustomerTime> customerTimes = customerTimeService.findByCustomerId(customer.getCustomerId());
customerTimes.parallelStream().forEach(customerTime -> {
log.info("Cap nhat Customer time cua KH ... #{}", customerTime.getCustomerId());
customerTime.setStatus(2);
customerTime.setStatus((short) 2);
customerTime.setUpdateTime(new Date());
customerTimeService.update(customerTime);
});
......
......@@ -19,15 +19,18 @@ import java.util.Date;
public class CustomerTime {
@Id
@GeneratedValue(generator = "CUSTOMER_TIME_SEQ")
@SequenceGenerator(name = "CUSTOMER_TIME_SEQ", sequenceName = "CUSTOMER_TIME_SEQ", allocationSize = 1)
@Basic(optional = false)
@NotNull
@Column(name = "CUSTOMER_TIME_ID")
private Long customerTimeId;
@Column(name = "COMPANY_SITE_ID")
private String companySiteId;
private Long companySiteId;
@Column(name = "CUSTOMER_ID")
private String customerId;
private Long customerId;
@Column(name = "START_TIME")
private Date startTime;
......@@ -36,7 +39,7 @@ public class CustomerTime {
private Date endTime;
@Column(name = "STATUS")
private Integer status;
private Short status;
@Column(name = "CREATE_TIME")
private Date createTime;
......@@ -45,10 +48,10 @@ public class CustomerTime {
private Date updateTime;
@Column(name = "CREATE_BY")
private String createBy;
private Long createBy;
@Column(name = "UPDATE_BY")
private String updateBy;
private Long updateBy;
@Column(name = "CONTACT_CUST_RESULT_ID")
private Long contactCustResultId;
......
......@@ -47,4 +47,6 @@ public interface CampaignCfgRepository extends JpaRepository<CampaignCfg, Long>
@Query("select c from CampaignCfg c where c.companySiteId =:p_company_site_id")
List<CampaignCfg> findAllCampaignCompleteCode();
@Query(value = "FROM CampaignCfg WHERE status = 1 AND completeValue = :completeValue AND companySiteId = :companySiteId")
CampaignCfg findByCompanySiteIdAndCompleteValue(@Param("companySiteId") Long companySiteId, @Param("completeValue") String completeValue);
}
......@@ -22,5 +22,4 @@ public interface CampaignExecuteRepository {
List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto);
List<ContactQuestResultDTO> createListContacQuestResult(List<ContactQuestResultDTO> dtoList);
}
......@@ -12,5 +12,10 @@ import java.util.List;
@Repository
@Transactional(DataSourceQualify.CCMS_FULL)
public interface ContactQuestResultRepository extends JpaRepository<ContactQuestResult, Long> {
List<ContactQuestResultDTO> findByCompanySiteIdAndCampaignId(Long companySiteId, Long campaignId);
List<ContactQuestResult> findByContactCustResultId(Long contactCustResultId);
List<ContactQuestResult> findByCompanySiteIdAndCampaignIdAndCustomerId(Long companySiteId, Long campaignId, Long customerId);
}
......@@ -11,6 +11,8 @@ import java.util.List;
public interface CustomerListMappingRepository extends JpaRepository<CustomerListMapping, Long> {
// ----------- customer ------------ //
@Query("select c from CustomerListMapping c where c.customerId in (:p_ids) and c.customerListId =:p_customer_list_id and c.companySiteId=:p_company_site_id")
List<CustomerListMapping> findAllCustomerListMapping(@Param("p_ids") List<Long> p_ids, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying
@Query("delete from CustomerListMapping c where c.customerId=:p_customer_id and c.customerListId=:p_customer_list_id and c.companySiteId=:p_company_site_id")
......
......@@ -123,7 +123,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sql.append(" CCR.PHONE_NUMBER AS phoneNumber, ");
sql.append(" CUS.NAME AS customerName, ");
sql.append(" CCR.START_CALL AS startCall, ");
sql.append(" CC1.COMPLETE_NAME AS contactStatus, ");
sql.append(" CC1.COMPLETE_NAME AS connectStatus, ");
sql.append(" CC2.COMPLETE_NAME AS surveyStatus, ");
sql.append(" C.STATUS AS status, ");
sql.append(" CCR.STATUS AS recordStatus, ");
......@@ -291,7 +291,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
item.setPhoneNumber((String) obj[5]);
item.setCustomerName((String) obj[6]);
item.setStartCall(obj[7] == null ? null : (Date) obj[7]);
item.setContactStatus((String) obj[8]);
item.setConnectStatus((String) obj[8]);
item.setSurveyStatus((String) obj[9]);
item.setStatus(obj[10] == null ? 0 : ((BigDecimal) obj[10]).shortValueExact());
item.setRecordStatus(obj[11] == null ? 0 : ((BigDecimal) obj[11]).shortValueExact());
......@@ -585,28 +585,4 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
return result;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<ContactQuestResultDTO> createListContacQuestResult(List<ContactQuestResultDTO> dtoList) {
ResultDTO resultDTO = new ResultDTO();
List<ContactQuestResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
try {
// list = contactQuestResultRepository.saveAll(dtoList);
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close();
}
return list;
}
}
......@@ -22,4 +22,6 @@ public interface AgentsService {
ResultDTO searchCampaignAgentSelectByName(int page, int pageSize, Long companySiteId, Long campaignId, String userName, String fullName);
ResultDTO createMultipleCampaignAgent(CampaignAgentRequestDTO campaignAgentRequestDTO);
ResultDTO updateAgent(CampaignAgentDTO campaignAgentDTO);
}
......@@ -32,12 +32,12 @@ public interface CampaignExecuteService {
ResultDTO getCallLog(ReceiveCustLogDTO dto);
ResultDTO getCallStatus(CampaignRequestDTO dto);
ResultDTO getAgentLogout(CampaignRequestDTO dto);
ResultDTO updateContactCustResult(ContactCustResultDTO dto, UserSession userSession);
ResultDTO draftAtTen(ContactCustResultDTO dto, UserSession userSession);
ResultDTO recallCustomer(ContactCustResultDTO dto);
ResultDTO callCustomerEnd(ContactCustResultDTO dto);
......@@ -48,9 +48,15 @@ public interface CampaignExecuteService {
ResultDTO getCustomerInfor(Long companySiteId, Long customerId, Long campaignId);
ResultDTO createListContacQuestResult(List<ContactQuestResultDTO> dtoList);
ResultDTO createListContactQuestResult(List<ContactQuestResultDTO> dtoList);
ResultDTO updateListContactQuestResult(ContactQuestResultDTO dto);
String getDialModeAtCurrent(Long campaignId, Long companySiteId);
ResultDTO getContactCustResultById(Long contactCustResultId);
ResultDTO updateCampaignCustomer(CampaignCustomerDTO dto);
ResultDTO updateSurveyStatus(CustomerTimeDTO dto, UserSession userSession);
}
package com.viettel.campaign.service;
import com.viettel.campaign.model.ccms_full.ContactQuestResult;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.web.dto.*;
import com.viettel.econtact.filter.UserSession;
......@@ -28,4 +29,6 @@ public interface ScenarioService {
XSSFWorkbook buildTemplate() throws IOException;
Map<String, Object> readAndValidateCustomer(String path, Long scenarioId, Long campaignId, Long companySiteId) throws IOException;
List<ContactQuestResult> getContactQuestResult(Long companySiteId, Long campaignId, Long customerId);
}
......@@ -537,4 +537,28 @@ public class AgentsServiceImpl implements AgentsService {
return resultDTO;
}
@Override
public ResultDTO updateAgent(CampaignAgentDTO campaignAgentDTO) {
ResultDTO resultDTO = new ResultDTO();
try {
if (campaignAgentDTO != null) {
Agents agents = new Agents();
agents.setAgentId(campaignAgentDTO.getAgentId().toString());
agents.setCampaignSystemStatus("AVAILABLE");
agentsRepository.save(agents);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
// e.printStackTrace();
}
return resultDTO;
}
}
......@@ -25,6 +25,8 @@ import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@Service
......@@ -71,6 +73,12 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Autowired
ContactQuestResultRepository contactQuestResultRepository;
@Autowired
CampaignCfgRepository cfgRepository;
@Autowired
CustomerRepository customerRepository;
public CampaignExecuteServiceImp() throws NoSuchAlgorithmException {
}
......@@ -495,24 +503,6 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return result;
}
@Override
public ResultDTO getCallStatus(CampaignRequestDTO dto) {
ResultDTO result = new ResultDTO();
// Random r = new Random();
String[] arr = {"ACCEPT", "REJECT", "MISSING"};
if (dto != null) {
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setData(arr[this.rand.nextInt(arr.length)]);
} else {
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}
return result;
}
@Override
public ResultDTO getAgentLogout(CampaignRequestDTO dto) {
ResultDTO result = new ResultDTO();
......@@ -545,17 +535,22 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
try {
if (dto.getEventCall().equalsIgnoreCase("call")) {
ccr = ccResultRepository.save(modelMapper.map(dto, ContactCustResult.class));
} else if (dto.getContactCustResultId() != null) {
}
if (dto.getContactCustResultId() != null) {
ccr = ccResultRepository.getOne(dto.getContactCustResultId());
if (dto.getEventCall().equalsIgnoreCase("ringing")) {
ccr.setCallId(dto.getCallId());
ccr.setUpdateBy(userSession.getUserId());
ccr.setUpdateTime(new Date());
ccr = ccResultRepository.save(ccr);
} else if (dto.getEventCall().equalsIgnoreCase("ended")) {
}
if (dto.getEventCall().equalsIgnoreCase("ended")) {
ccr.setDurationCall(dto.getDurationCall());
ccr.setStartCall(dto.getStartCall());
ccr.setReceiveTime(dto.getReceiveTime()); //
ccr.setReceiveTime(dto.getReceiveTime());
ccr.setPreEndTime(ccResultRepository.getMaxCreateTime(dto.getCampaignId(), dto.getAgentId()));
ccr.setEndTime(dto.getEndTime());
ccr.setWaitTime(dto.getWaitTime());
......@@ -567,8 +562,66 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
ag.setSystemStatus("AVAILABLE");
ag = agentsRepository.save(ag);
}
if (dto.getEventCall().equalsIgnoreCase("endedBeforeTen")) {
ccr.setStatus((short) 0);
ccr.setUpdateBy(userSession.getUserId());
ccr.setUpdateTime(new Date());
ccr = ccResultRepository.save(ccr);
}
}
if (dto.getEventCall().equalsIgnoreCase("endedAfterTen")) {
ccr = modelMapper.map(dto, ContactCustResult.class);
ccr.setPreEndTime(ccResultRepository.getMaxCreateTime(dto.getCampaignId(), dto.getAgentId()));
ccr = ccResultRepository.save(ccr);
}
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setData(ccr);
} catch (Exception e) {
// e.printStackTrace();
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}
return result;
}
@Override
public ResultDTO draftAtTen(ContactCustResultDTO dto, UserSession userSession) {
ResultDTO result = new ResultDTO();
ContactCustResult ccr = new ContactCustResult();
try {
ccResultRepository.deleteById(dto.getContactCustResultId());
ccr.setCompanySiteId(dto.getCompanySiteId());
ccr.setCallStatus(dto.getCallStatus());
ccr.setContactStatus(dto.getContactStatus());
ccr.setStatus(dto.getStatus());
ccr.setDescription(dto.getDescription());
ccr.setCreateTime(new Date());
ccr.setAgentId(dto.getAgentId());
ccr.setCampaignId(dto.getCampaignId());
ccr.setUpdateBy(userSession.getUserId());
ccr.setCustomerId(dto.getCustomerId());
ccr.setDurationCall(dto.getDurationCall());
ccr.setStartCall(dto.getStartCall());
ccr.setReceiveCustLogId(dto.getReceiveCustLogId());
ccr.setCallId(dto.getCallId());
ccr.setPhoneNumber(dto.getPhoneNumber());
ccr.setReceiveTime(dto.getReceiveTime());
ccr.setPreEndTime(ccResultRepository.getMaxCreateTime(dto.getCampaignId(), dto.getAgentId()));
ccr.setRecallTime(dto.getRecallTime());
ccr.setIsFinalRecall(dto.getIsFinalRecall());
ccr.setIsSendEmail(dto.getIsSendEmail());
ccr.setEndTime(dto.getEndTime());
ccr.setWaitTime(dto.getWaitTime());
ccr.setDialMode(dto.getDialMode());
ccr = ccResultRepository.save(ccr);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setData(ccr);
......@@ -650,8 +703,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO countRecallCustomer(Long companySiteId, Long agentId) {
Long count = campaignCustomerRepository.countRecallCustomer(companySiteId, agentId);
ResultDTO resultDTO = new ResultDTO();
Long count = campaignCustomerRepository.countRecallCustomer(companySiteId, agentId);
if (count != null) {
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
......@@ -708,15 +762,15 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO createListContacQuestResult(List<ContactQuestResultDTO> dtoList) {
public ResultDTO createListContactQuestResult(List<ContactQuestResultDTO> dtoList) {
ResultDTO resultDTO = new ResultDTO();
List<ContactQuestResult> lstContactQuestResult = new ArrayList<>();
for (ContactQuestResultDTO item : dtoList) {
lstContactQuestResult.add(modelMapper.map(item, ContactQuestResult.class));
}
try {
for (ContactQuestResultDTO item : dtoList) {
lstContactQuestResult.add(modelMapper.map(item, ContactQuestResult.class));
}
List<ContactQuestResult> dataReturn = new ArrayList<>();
dataReturn = contactQuestResultRepository.saveAll(lstContactQuestResult);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
......@@ -730,6 +784,29 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return resultDTO;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO updateListContactQuestResult(ContactQuestResultDTO dto) {
ResultDTO resultDTO = new ResultDTO();
List<ContactQuestResult> lstContactQuestResult = new ArrayList<>();
try {
lstContactQuestResult = contactQuestResultRepository.findByContactCustResultId(dto.getContactCustResultId());
for (ContactQuestResult item : lstContactQuestResult) {
item.setStatus((short) 0);
}
lstContactQuestResult = contactQuestResultRepository.saveAll(lstContactQuestResult);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setListData(lstContactQuestResult);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
@Override
public String getDialModeAtCurrent(Long campaignId, Long companySiteId) {
// 0: manual, 1- Preview, 2-Progressive, 3-Super Progressive, 4- Predictive
......@@ -743,7 +820,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return lstTimeZone.getDialMode().toString();
}
} catch (Exception e) {
// e.printStackTrace();
e.printStackTrace();
}
return "-1";
......@@ -752,6 +829,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Override
public ResultDTO getContactCustResultById(Long contactCustResultId) {
ResultDTO resultDTO = new ResultDTO();
try {
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
......@@ -763,4 +841,61 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return resultDTO;
}
@Override
public ResultDTO updateCampaignCustomer(CampaignCustomerDTO dto) {
ResultDTO resultDTO = new ResultDTO();
try {
CampaignCustomer cc = campaignCustomerRepository.findCampaignCustomersByCampaignIdAndCustomerId(dto.getCampaignId(), dto.getCustomerId());
cc.setStatus(dto.getStatus());
cc.setAgentId(dto.getAgentId());
cc.setRecallTime(dto.getRecallTime());
cc.setRecallCount(cc.getRecallCount() + 1);
cc.setCallTime(dto.getCallTime());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(cc);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
public ResultDTO updateSurveyStatus(CustomerTimeDTO dto, UserSession userSession) {
ResultDTO resultDTO = new ResultDTO();
try {
CampaignCfg cfg = cfgRepository.findByCompanySiteIdAndCompleteValue(dto.getCompanySiteId(), dto.getCompleteValue());
if (cfg.getIsLock() == 1) {
Customer c = customerRepository.getOne(dto.getCustomerId());
c.setIpccStatus("locked");
c = customerRepository.save(c);
} else {
CustomerTime c = new CustomerTime();
c.setCompanySiteId(dto.getCompanySiteId());
c.setCustomerId(dto.getCustomerId());
c.setStartTime(dto.getStartTime());
LocalDateTime ldt = dto.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().plusDays(cfg.getDurationLock());
c.setEndTime(Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant()));
c.setStatus((short) 1);
c.setCreateTime(new Date());
c.setCreateBy(userSession.getUserId());
c.setUpdateTime(new Date());
c.setUpdateBy(userSession.getUserId());
c.setContactCustResultId(dto.getContactCustResultId());
}
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(null);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
}
......@@ -207,6 +207,11 @@ public class CampaignServiceImpl implements CampaignService {
try {
Campaign entity = campaignRepository.findCampaignByCampaignIdAndCompanySiteId(dto.getCampaignId(), dto.getCompanySiteId());
if (entity != null) {
if(entity.getStatus().equals(dto.getStatus().longValue())) {
result.setDescription("Duplicate status");
result.setErrorCode("02");
return result;
}
entity.setStatus(dto.getStatus().longValue());
entity.setUpdateTime(new Date());
entity.setUpdateBy(dto.getUpdateBy());
......
......@@ -20,6 +20,7 @@ import cz.jirutka.rsql.parser.ast.RSQLVisitor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
......@@ -980,7 +981,7 @@ public class CustomerServiceImpl implements CustomerService {
FileInputStream fis = new FileInputStream(file);
workbook = new XSSFWorkbook(fis);
ByteArrayOutputStream os = new ByteArrayOutputStream();
Sheet sheet = workbook.getSheetAt(0);
XSSFSheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(3);
//<editor-fold desc="Tạo style cho cột kết quả" defaultstate="collapsed">
......@@ -998,7 +999,26 @@ public class CustomerServiceImpl implements CustomerService {
//</editor-fold>
//<editor-fold desc="Kiểm tra header của template" defaultstate="collapsed">
if (row.getPhysicalNumberOfCells() != header.size()) {
if (row.getPhysicalNumberOfCells() > header.size()) {
for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) {
if (sheet.isColumnHidden(i)) {
sheet.setColumnHidden(i, false);
}
if (isColumnNullOrBlank(sheet, i)) {
sheet.shiftColumns(i + 1, i + 1, -1);
sheet.removeMergedRegion(0);
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 13));
}
}
for (int i = 0; i < header.size(); i++) {
Cell cell = row.getCell(i);
if (!cell.getStringCellValue().equals(header.get(i).getTitle().split("#")[0])) {
result.put("content", Files.readAllBytes(file.toPath()));
result.put("message", "template-invalid");
return result;
}
}
} else if (row.getPhysicalNumberOfCells() < header.size()) {
result.put("content", Files.readAllBytes(file.toPath()));
result.put("message", "template-invalid");
return result;
......@@ -1022,7 +1042,10 @@ public class CustomerServiceImpl implements CustomerService {
result.put("content", Files.readAllBytes(file.toPath()));
return result;
} else {
Cell resultCell = sheet.getRow(3).createCell(sheet.getRow(3).getPhysicalNumberOfCells());
Cell resultCell = sheet.getRow(3).getCell(header.size());
if (resultCell == null) {
resultCell = sheet.getRow(3).createCell(header.size());
}
resultCell.setCellValue(BundleUtils.getLangString("customer.result", locale));
resultCell.setCellStyle(resultStyle);
}
......@@ -1398,6 +1421,18 @@ public class CustomerServiceImpl implements CustomerService {
String regexp = "@\"^\\p{L}+$\"";
return str.matches(regexp);
}
private boolean isColumnNullOrBlank(Sheet sheet, int columnIndex) {
for (Row row : sheet) {
if (row.getRowNum() < 3) continue;
Cell cell = row.getCell(columnIndex, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL);
if (cell != null) {
return false;
}
}
return true;
}
//</editor-fold>
@Override
......
......@@ -461,6 +461,12 @@ public class ScenarioServiceImpl implements ScenarioService {
return result;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<ContactQuestResult> getContactQuestResult(Long companySiteId, Long campaignId, Long customerId) {
return questResultRepository.findByCompanySiteIdAndCampaignIdAndCustomerId(companySiteId, campaignId, customerId);
}
private boolean validateMappingQuestion(String mappingQuestion, String currentQuestionCode, List<String> lstQuestionCode) {
if (mappingQuestion != null && mappingQuestion.equals(currentQuestionCode)) return false;
......
......@@ -14,7 +14,7 @@ public class ContactCustResultDTO extends BaseDTO {
private Long contactCustResultId;
private Long companySiteId;
private Short callStatus;
private String contactStatus;
private Short contactStatus;
private Short status;
private Integer satisfaction;
private String description;
......@@ -52,6 +52,7 @@ public class ContactCustResultDTO extends BaseDTO {
private String campaignCode;
private String userName;
private String surveyStatus;
private String connectStatus;
private Boolean enableEdit;
private Integer totalRow;
......
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class CustomerTimeDTO extends BaseDTO {
private Long customerTimeId;
private Long companySiteId;
private Long customerId;
private Date startTime;
private Date endTime;
private Short status;
private Date createTime;
private Date updateTime;
private Long createBy;
private Long updateBy;
private Long contactCustResultId;
private String completeValue;
}
......@@ -82,4 +82,12 @@ public class AgentsController {
result = agentsService.createMultipleCampaignAgent(campaignAgentRequestDTO);
return result;
}
@PostMapping("/updateAgent")
@ResponseBody
public ResultDTO updateAgent(@RequestBody @Valid CampaignAgentDTO requestDTO) {
ResultDTO result = new ResultDTO();
result = agentsService.updateAgent(requestDTO);
return result;
}
}
......@@ -68,13 +68,6 @@ public class CampaignExecuteController {
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/getCallStatus")
@ResponseBody
public ResponseEntity<ResultDTO> getCallStatus(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignExecuteService.getCallStatus(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping("/countRecallCustomer")
@ResponseBody
public ResponseEntity countRecallCustomer(@RequestParam("companySiteId") Long companySiteId, @RequestParam("agentId") Long agentId) {
......@@ -169,7 +162,15 @@ public class CampaignExecuteController {
@ResponseBody
public ResponseEntity<ResultDTO> createListContactQuestResult(@RequestBody List<ContactQuestResultDTO> dtoList) {
ResultDTO result = null;
result = campaignExecuteService.createListContacQuestResult(dtoList);
result = campaignExecuteService.createListContactQuestResult(dtoList);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PutMapping("/updateListContactQuestResult")
@ResponseBody
public ResponseEntity<ResultDTO> updateListContactQuestResult(@RequestBody ContactQuestResultDTO dto) {
ResultDTO result = null;
result = campaignExecuteService.updateListContactQuestResult(dto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
......@@ -186,4 +187,29 @@ public class CampaignExecuteController {
ResultDTO result = campaignExecuteService.getContactCustResultById(contactCustResultId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/draftAtTen")
@ResponseBody
public ResponseEntity<ResultDTO> draftAtTen(@RequestBody ContactCustResultDTO requestDto, HttpServletRequest request) {
String xAuthToken = request.getHeader("X-Auth-Token");
UserSession userSession = (UserSession) RedisUtil.getInstance().get(xAuthToken);
ResultDTO result = campaignExecuteService.draftAtTen(requestDto, userSession);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/updateCampaignCustomer")
@ResponseBody
public ResponseEntity<ResultDTO> updateCampaignCustomer(@RequestBody CampaignCustomerDTO requestDto) {
ResultDTO result = campaignExecuteService.updateCampaignCustomer(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/updateSurveyStatus")
@ResponseBody
public ResponseEntity<ResultDTO> updateSurveyStatus(@RequestBody CustomerTimeDTO requestDto, HttpServletRequest request) {
String xAuthToken = request.getHeader("X-Auth-Token");
UserSession userSession = (UserSession) RedisUtil.getInstance().get(xAuthToken);
ResultDTO result = campaignExecuteService.updateSurveyStatus(requestDto, userSession);
return new ResponseEntity<>(result, HttpStatus.OK);
}
}
......@@ -76,9 +76,11 @@ public class CustomerController {
@PostMapping("/delete")
@ResponseBody
public ResultDTO deleteCustomer(@RequestBody @Valid CustomerRequestDTO customerRequestDTO) {
ResultDTO result = new ResultDTO();
result = customerService.deleteCustomer(customerRequestDTO);
return result;
ResultDTO resultDTO = new ResultDTO();
if (customerRequestDTO != null) {
resultDTO = customerService.deleteCustomer(customerRequestDTO);
}
return resultDTO;
}
@PostMapping("/deleteIds")
......
package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.ContactQuestResult;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.service.ScenarioService;
import com.viettel.campaign.utils.BundleUtils;
......@@ -36,7 +37,7 @@ import java.util.*;
@RestController
@RequestMapping("/ipcc/campaign/scenario")
@CrossOrigin
@CrossOrigin(origins = "*")
public class ScenarioController {
private static final Logger logger = LoggerFactory.getLogger(ScenarioController.class);
......@@ -147,4 +148,9 @@ public class ScenarioController {
return null;
}
@RequestMapping(value = "/getContactQuestResult", method = RequestMethod.GET)
public List<ContactQuestResult> getContactQuestResult(@RequestParam Long companySiteId, @RequestParam Long campaignId, @RequestParam Long customerId) {
return scenarioService.getContactQuestResult(companySiteId, campaignId, customerId);
}
}
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