Commit 56267616 authored by Tu Bach's avatar Tu Bach

Merge branch 'master' into tubn

parents 62da5898 c22b9114
......@@ -28,5 +28,5 @@ public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer,
@Query(value = "SELECT COUNT(1) FROM ScenarioAnswer WHERE 1 = 1 AND code = :code AND scenarioQuestionId = :scenarioQuestionId AND scenarioAnswerId <> :scenarioAnswerId")
Integer countDuplicateScenarioCode(@Param("code") String code, @Param("scenarioQuestionId") Long scenarioQuestionId, @Param("scenarioAnswerId") Long scenarioAnswerId);
ScenarioAnswer findScenarioAnswerByScenarioQuestionIdAndCode(Long questionId, String code);
ScenarioAnswer findScenarioAnswerByCode(String code);
}
......@@ -171,7 +171,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) {
query.setParameter("p_name", "%" +
requestDto.getCampaignName().toUpperCase()
requestDto.getCampaignName().trim().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\\\%")
.replaceAll("_", "\\\\_")
......
......@@ -9,7 +9,7 @@ import java.util.List;
public interface AgentsService {
ResultDTO getAgentsByAgentId(String agentId);
ResultDTO getAllAgentByCompanySiteId(int page, int pageSize, Long companySiteId);
ResultDTO getAllAgentByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
ResultDTO getAllAgentSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
......@@ -17,7 +17,7 @@ public interface AgentsService {
ResultDTO deleteCampaignAgentById(List<Long> campaignAgentId);
ResultDTO searchCampaignAgentByName(int page, int pageSize, Long companySiteId, String userName, String fullName);
ResultDTO searchCampaignAgentByName(int page, int pageSize, Long campaignId, Long companySiteId, String userName, String fullName);
ResultDTO searchCampaignAgentSelectByName(int page, int pageSize, Long companySiteId, Long campaignId, String userName, String fullName);
......
......@@ -62,7 +62,7 @@ public class AgentsServiceImpl implements AgentsService {
@Override
@Transactional(DataSourceQualify.ACD_FULL)
public ResultDTO getAllAgentByCompanySiteId(int page, int pageSize, Long companySiteId) {
public ResultDTO getAllAgentByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId) {
ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
......@@ -83,36 +83,41 @@ public class AgentsServiceImpl implements AgentsService {
StringBuilder sb = new StringBuilder();
sb.append("SELECT");
sb.append(" a.USER_ID userId,");
sb.append(" a.USER_NAME userName,");
sb.append(" a.STATUS status,");
sb.append(" a.FULL_NAME fullName,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" b.FILTER_TYPE filterType,");
sb.append(" b.CAMPAIGN_AGENT_ID campaignAgentId,");
sb.append(" d.ROLE_CODE roleCode");
sb.append(" FROM VSA_USERS a");
sb.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sb.append(" INNER JOIN USER_ROLE c on a.USER_ID = c.USER_ID");
sb.append(" INNER JOIN ROLE d on c.ROLE_ID = d.ROLE_ID");
sb.append(" vu.USER_ID userId,");
sb.append(" vu.USER_NAME userName,");
sb.append(" vu.STATUS status,");
sb.append(" vu.FULL_NAME fullName,");
sb.append(" vu.COMPANY_SITE_ID companySiteId,");
sb.append(" r.ROLE_CODE roleCode");
sb.append(" FROM VSA_USERS vu");
sb.append(" INNER JOIN USER_ROLE ur on vu.USER_ID = ur.USER_ID");
sb.append(" INNER JOIN ROLE r on ur.ROLE_ID = r.ROLE_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND a.STATUS = 1");
sb.append(" AND b.AGENT_ID IS NULL");
sb.append(" AND d.ROLE_CODE IN ('AGENT', 'SUPERVISOR')");
sb.append(" ORDER BY UPPER(a.FULL_NAME)");
sb.append(" AND vu.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND vu.STATUS = 1");
sb.append(" AND r.ROLE_CODE IN ('AGENT', 'SUPERVISOR')");
sb.append(" AND vu.USER_ID NOT IN (SELECT vu.USER_ID userId");
sb.append(" FROM VSA_USERS vu");
sb.append(" LEFT JOIN CAMPAIGN_AGENT ca on vu.USER_ID = ca.AGENT_ID");
sb.append(" INNER JOIN USER_ROLE ur on vu.USER_ID = ur.USER_ID");
sb.append(" INNER JOIN ROLE r on ur.ROLE_ID = r.ROLE_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND vu.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND vu.STATUS = 1");
sb.append(" AND ca.CAMPAIGN_ID = :p_campaign_id");
sb.append(" AND r.ROLE_CODE IN ('AGENT', 'SUPERVISOR'))");
sb.append(" ORDER BY UPPER(vu.FULL_NAME)");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_campaign_id", campaignId);
query.addScalar("userId", new LongType());
query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType());
query.addScalar("companySiteId", new LongType());
query.addScalar("filterType", new ShortType());
query.addScalar("campaignAgentId", new LongType());
query.addScalar("roleCode", new StringType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
......@@ -276,7 +281,7 @@ public class AgentsServiceImpl implements AgentsService {
}
@Override
public ResultDTO searchCampaignAgentByName(int page, int pageSize, Long companySiteId, String userName, String fullName) {
public ResultDTO searchCampaignAgentByName(int page, int pageSize, Long campaignId, Long companySiteId, String userName, String fullName) {
ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
......@@ -320,12 +325,13 @@ public class AgentsServiceImpl implements AgentsService {
sqlStrBuilder.append(" AND d.ROLE_CODE IN ('AGENT', 'SUPERVISOR')");
sqlStrBuilder.append(" AND a.STATUS = 1");
sqlStrBuilder.append(" AND b.AGENT_ID IS NULL");
sqlStrBuilder.append(" AND (b.CAMPAIGN_ID IS NULL OR b.CAMPAIGN_ID <> :p_campaign_id)");
sqlStrBuilder.append(" ORDER BY UPPER(a.FULL_NAME)");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_campaign_id", campaignId);
if (!DataUtil.isNullOrEmpty(userName)) {
query.setParameter("p_user_name", "%" +
......
......@@ -2,9 +2,7 @@ package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.*;
//import com.viettel.campaign.model.UserActionLog;
import com.viettel.campaign.repository.ccms_full.*;
//import com.viettel.campaign.repository.UserActionLogRepository;
import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.utils.BundleUtils;
import com.viettel.campaign.utils.Constants;
......@@ -14,7 +12,9 @@ import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.modelmapper.ModelMapper;
......@@ -22,12 +22,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
//import com.viettel.campaign.model.UserActionLog;
//import com.viettel.campaign.repository.UserActionLogRepository;
@Service
@Transactional(rollbackFor = Exception.class)
public class CampaignServiceImpl implements CampaignService {
......@@ -637,20 +636,26 @@ public class CampaignServiceImpl implements CampaignService {
List<CustomerListDTO> listCustomerDto = dto.getLstCustomerCampaign();
try {
// Thuc hien them giam khach hang
for (CustomerListDTO customerListDTO : listCustomerDto) {
for (CustomerListDTO customerListDTO : listCustomerDto) { // Duyet tung customerList
if (customerListDTO.getTotalCusAddRemove() > 0) { // Them khach hang
// Lay ra danh sach khach hang phu hop de them
List<Customer> listCustomerToAdd = customerRepository.findAllCutomerNotInCampagin(customerListDTO.getCustomerListId(), campaignId);
for (int i = 0; i < customerListDTO.getTotalCusAddRemove(); i++) {
CampaignCustomer campaignCustomerEntity = new CampaignCustomer();
campaignCustomerEntity.setCampaignId(campaignId);
campaignCustomerEntity.setCustomerId(listCustomerToAdd.get(i).getCustomerId());
campaignCustomerEntity.setStatus((short) 0);
campaignCustomerEntity.setRecallCount(0L);
campaignCustomerEntity.setCustomerListId(customerListDTO.getCustomerListId());
campaignCustomerEntity.setCompanySiteId(companySiteId);
campaignCustomerEntity.setInCampaignStatus((short) 1);
campaignCustomerRepository.save(campaignCustomerEntity);
int numOfCusInList = listCustomerToAdd.size(); // Số khách hàng còn lại của chiến dịch chưa đc add vào campaign
for (int i = 0, j = 0; (i < customerListDTO.getTotalCusAddRemove() && j < numOfCusInList); j++) {
if (campaignCustomerRepository.findCampaignCustomerByCampaignIdAndCompanySiteIdAndCustomerId(campaignId, companySiteId, listCustomerToAdd.get(j).getCustomerId()) != null) { // Khach hang đã đc chèn vào campaign theo individual
continue;
} else {
CampaignCustomer campaignCustomerEntity = new CampaignCustomer();
campaignCustomerEntity.setCampaignId(campaignId);
campaignCustomerEntity.setCustomerId(listCustomerToAdd.get(j).getCustomerId());
campaignCustomerEntity.setStatus((short) 0);
campaignCustomerEntity.setRecallCount(0L);
campaignCustomerEntity.setCustomerListId(customerListDTO.getCustomerListId());
campaignCustomerEntity.setCompanySiteId(companySiteId);
campaignCustomerEntity.setInCampaignStatus((short) 1);
campaignCustomerRepository.save(campaignCustomerEntity);
i += 1;
}
}
} else if (customerListDTO.getTotalCusAddRemove() < 0){ // Loai bo khach hang
long custToDel = Math.abs(customerListDTO.getTotalCusAddRemove());
......
......@@ -388,7 +388,7 @@ public class ScenarioServiceImpl implements ScenarioService {
}
if ((rawDataList.get(i)[7] != null && !rawDataList.get(i)[7].toString().trim().equals(""))) {
if ((rawDataList.get(i)[7].toString().trim().equals(tmpCurrentQuestionCode)) ||
validateMappingQuestion(rawDataList.get(i)[7].toString().trim(), tmpCurrentQuestionCode, lstImportQuestionCodes))
!validateMappingQuestion(rawDataList.get(i)[7].toString().trim(), tmpCurrentQuestionCode, lstImportQuestionCodes))
sb.append(BundleUtils.getLangString("scenario.mappingQuestion.invalid"));
}
......@@ -399,7 +399,6 @@ public class ScenarioServiceImpl implements ScenarioService {
resultCell.setCellValue(sb.toString());
isValid = false;
} else {
// isValid = true;
resultCell.setCellValue(BundleUtils.getLangString("ok"));
}
sb = new StringBuilder();
......@@ -416,18 +415,18 @@ public class ScenarioServiceImpl implements ScenarioService {
});
//for import mapping question from xls: update mapping question id for answer
// lstAnswerTmp.forEach(item -> {
// if (item.getMappingQuestionCode() != null && item.getMappingQuestionId() == null) {
// ScenarioQuestion question = questionRepository.findScenarioQuestionByCodeAndCompanySiteId(item.getMappingQuestionCode(), item.getCompanySiteId());
// if (question != null) {
// ScenarioAnswer answerForUpdate = answerRepository.findScenarioAnswerByScenarioQuestionIdAndCode(question.getScenarioQuestionId(), item.code);
// if(answerForUpdate != null) {
// answerForUpdate.setMappingQuestionId(question.getScenarioQuestionId());
// answerRepository.save(answerForUpdate);
// }
// }
// }
// });
lstAnswerTmp.forEach(item -> {
if (item.getMappingQuestionCode() != null && item.getMappingQuestionId() == null) {
ScenarioQuestion question = questionRepository.findScenarioQuestionByCodeAndCompanySiteId(item.getMappingQuestionCode(), item.getCompanySiteId());
if (question != null) {
ScenarioAnswer answerForUpdate = answerRepository.findScenarioAnswerByCode(item.code);
if(answerForUpdate != null) {
answerForUpdate.setMappingQuestionId(question.getScenarioQuestionId());
answerRepository.save(answerForUpdate);
}
}
}
});
workbook.write(os);
os.flush();
......@@ -448,7 +447,6 @@ public class ScenarioServiceImpl implements ScenarioService {
result.put("message", BundleUtils.getLangString("customer.errorValidate", locale));
}finally {
if (workbook != null) workbook.close();
//result.put("code", Constants.FILE_UPLOAD_RESP_CODE.ERROR);
}
return result;
}
......@@ -456,13 +454,11 @@ public class ScenarioServiceImpl implements ScenarioService {
private boolean validateMappingQuestion(String mappingQuestion, String currentQuestionCode, List<String> lstQuestionCode) {
if (mappingQuestion != null && mappingQuestion.equals(currentQuestionCode)) return false;
String duplicateCode = lstQuestionCode.stream().
filter(p -> (p.equals(mappingQuestion) && p.equals(currentQuestionCode))).
String existMappingQuestionCode = lstQuestionCode.stream().
filter(p -> (p.equals(mappingQuestion) && !p.equals(currentQuestionCode))).
findAny().orElse(null);
if (duplicateCode == null) return false;
if (existMappingQuestionCode == null) return false;
String notMappedCode = lstQuestionCode.stream().filter(p -> (!p.equals(mappingQuestion))).findAny().orElse(null);
if (notMappedCode != null) return false;
return true;
}
......@@ -534,6 +530,8 @@ public class ScenarioServiceImpl implements ScenarioService {
q.setLstAnswers(answers);
});
questionOrderIndex = null;
lstQuestions.forEach(q2 -> {
List<ScenarioAnswerDTO> lstAnswers = q2.getLstAnswers();
lstAnswers.forEach(a2 -> {
......
package com.viettel.campaign.web.dto.request_dto;
import com.viettel.campaign.web.dto.BaseDTO;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CustomerQueryDTO extends BaseDTO {
String join ;
Long field;
String operator;
String condition;
String type;
}
......@@ -33,8 +33,8 @@ public class AgentsController {
@GetMapping("/findAll")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = agentsService.getAllAgentByCompanySiteId(page, pageSize, companySiteId);
public ResponseEntity<ResultDTO> listAgentByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentByCompanySiteId(page, pageSize, companySiteId, campaignId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
......@@ -63,8 +63,8 @@ public class AgentsController {
@GetMapping("/searchCampaignAgent")
@ResponseBody
public ResponseEntity<ResultDTO> searchCampaignAgent(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("userName") String userName, @RequestParam("fullName") String fullName) {
ResultDTO result = agentsService.searchCampaignAgentByName(page, pageSize, companySiteId, userName, fullName);
public ResponseEntity<ResultDTO> searchCampaignAgent(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("campaignId") Long campaignId, @RequestParam("companySiteId") Long companySiteId, @RequestParam("userName") String userName, @RequestParam("fullName") String fullName) {
ResultDTO result = agentsService.searchCampaignAgentByName(page, pageSize, campaignId, companySiteId, userName, fullName);
return new ResponseEntity<>(result, HttpStatus.OK);
}
......
......@@ -316,7 +316,7 @@ public class CustomerController {
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@PostMapping("/searchCustomizeFields")
@PostMapping("/searchIndividualCustomer")
@ResponseBody
public ResponseEntity searchCustomizeFields(@RequestBody CampaignCustomerDTO campaignCustomerDTO ) {
ResultDTO result = customerService.searchCustomizeFields(campaignCustomerDTO);
......
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