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

anhvd commit

parent e167e20a
...@@ -16,6 +16,8 @@ public class Campaign implements Serializable { ...@@ -16,6 +16,8 @@ public class Campaign implements Serializable {
@Id @Id
@NotNull @NotNull
@GeneratedValue(generator = "campaign_seq")
@SequenceGenerator(name = "campaign_seq", sequenceName = "campaign_seq", allocationSize = 1)
@Basic(optional = false) @Basic(optional = false)
@Column(name = "CAMPAIGN_ID") @Column(name = "CAMPAIGN_ID")
private Long campaignId; private Long campaignId;
......
...@@ -18,6 +18,8 @@ import java.util.Date; ...@@ -18,6 +18,8 @@ import java.util.Date;
public class TimeRangeDialMode implements Serializable { public class TimeRangeDialMode implements Serializable {
@Id @Id
@NotNull @NotNull
@GeneratedValue(generator = "TIME_RANGE_DIAL_MODE_SEQ")
@SequenceGenerator(name = "TIME_RANGE_DIAL_MODE_SEQ", sequenceName = "TIME_RANGE_DIAL_MODE_SEQ", allocationSize = 1)
@Basic(optional = false) @Basic(optional = false)
@Column(name = "TIME_RANGE_DIAL_MODE_ID") @Column(name = "TIME_RANGE_DIAL_MODE_ID")
private Long timeRangeDialModeId; private Long timeRangeDialModeId;
......
...@@ -19,9 +19,11 @@ import java.io.Serializable; ...@@ -19,9 +19,11 @@ import java.io.Serializable;
public class TimeZoneDialMode implements Serializable{ public class TimeZoneDialMode implements Serializable{
@Id @Id
@NotNull @NotNull
@GeneratedValue(generator = "TIME_ZONE_DIAL_MODE_SEQ")
@SequenceGenerator(name = "TIME_ZONE_DIAL_MODE_SEQ", sequenceName = "TIME_ZONE_DIAL_MODE_SEQ", allocationSize = 1)
@Basic(optional = false) @Basic(optional = false)
@Column(name = "TIME_ZONE_DIAL_MODE_ID") @Column(name = "TIME_ZONE_DIAL_MODE_ID")
private Long timeRangeDialModeId; private Long timeZoneDialModeId;
@Column(name = "COMPANY_SITE_ID") @Column(name = "COMPANY_SITE_ID")
private Long companySiteId; private Long companySiteId;
......
...@@ -11,4 +11,6 @@ public interface CampaignRepositoryCustom { ...@@ -11,4 +11,6 @@ public interface CampaignRepositoryCustom {
ResultDTO search(CampaignRequestDTO requestDto); ResultDTO search(CampaignRequestDTO requestDto);
ResultDTO findByCampaignCode(CampaignRequestDTO requestDTO); ResultDTO findByCampaignCode(CampaignRequestDTO requestDTO);
String getMaxCampaignIndex();
} }
...@@ -368,9 +368,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -368,9 +368,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
result.setData(dataPage); result.setData(dataPage);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS); result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS); result.setDescription(Constants.ApiErrorDesc.SUCCESS);
session.close();
return result;
} catch (Exception ex) { } catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
result.setErrorCode(Constants.ApiErrorCode.ERROR); result.setErrorCode(Constants.ApiErrorCode.ERROR);
...@@ -381,4 +379,25 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -381,4 +379,25 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return result; return result;
} }
@Override
public String getMaxCampaignIndex() {
logger.info("Start search max campaign code index::");
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
try {
StringBuilder sqlStr = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-max-campaign-code-index"));
SQLQuery query = session.createSQLQuery(sqlStr.toString());
List<String> list = query.list();
if(list.size() > 0) {
return list.get(0);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return null;
}
} }
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.model.Campaign; import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.model.TimeRangeDialMode;
import com.viettel.campaign.model.TimeZoneDialMode; import com.viettel.campaign.model.TimeZoneDialMode;
import com.viettel.campaign.repository.CampaignRepository; import com.viettel.campaign.repository.CampaignRepository;
import com.viettel.campaign.repository.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.TimeZoneDialModeRepository; import com.viettel.campaign.repository.TimeZoneDialModeRepository;
import com.viettel.campaign.repository.impl.CampaignRepositoryImpl; import com.viettel.campaign.repository.impl.CampaignRepositoryImpl;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.CampaignDTO; import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.TimeRangeDialModeDTO;
import com.viettel.campaign.web.dto.TimeZoneDialModeDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
...@@ -18,8 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -18,8 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap; import java.util.*;
import java.util.Map;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -32,6 +35,9 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -32,6 +35,9 @@ public class CampaignServiceImpl implements CampaignService {
@Autowired @Autowired
TimeZoneDialModeRepository timeZoneDialModeRepository; TimeZoneDialModeRepository timeZoneDialModeRepository;
@Autowired
TimeRangeDialModeRepository timeRangeDialModeRepository;
@Autowired @Autowired
ModelMapper modelMapper; ModelMapper modelMapper;
...@@ -54,23 +60,38 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -54,23 +60,38 @@ public class CampaignServiceImpl implements CampaignService {
public ResultDTO addNewCampaign(CampaignDTO campaignDTO) { public ResultDTO addNewCampaign(CampaignDTO campaignDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
Campaign campaign = modelMapper.map(campaignDTO, Campaign.class); Campaign campaign = modelMapper.map(campaignDTO, Campaign.class);
TimeZoneDialMode timeZoneDialMode = new TimeZoneDialMode(); Long campaignId;
List<TimeZoneDialModeDTO> timeZoneDialModes = new ArrayList<>();
List<TimeRangeDialModeDTO> timeRangeDialModes = new ArrayList<>();
List<TimeRangeDialMode> lstTimeRangeModeToInsert = new ArrayList<>();
List<TimeZoneDialMode> lstTimeZoneModeToInser = new ArrayList<>();
try { try {
campaign = campaignRepository.save(campaign); String campaignCode = generateCampaignCode(campaignDTO.getCampaignType(), campaignDTO.getChanel());
campaign.setCampaignCode(campaignCode);
Campaign campaignResult = campaignRepository.save(campaign);
campaignId = campaign.getCampaignId();
//insert sub tables //insert sub tables
if(campaignDTO.getCurrentTimeMode().equals(1)){ if(campaignDTO.getLstTimeRange().size() > 0) {
timeZoneDialMode.setCompanySiteId(campaignDTO.getCompanySiteId()); timeRangeDialModes = campaignDTO.getLstTimeRange();
timeZoneDialMode.setCampaignId(campaign.getCampaignId()); timeRangeDialModes.forEach(item -> {
// timeZoneDialMode.setHour(campaignDTO.getT); item.setCampaignId(campaignId);
TimeRangeDialMode timeRangeDialMode = modelMapper.map(item, TimeRangeDialMode.class);
timeZoneDialModeRepository.save(timeZoneDialMode); lstTimeRangeModeToInsert.add(timeRangeDialMode);
});
timeRangeDialModeRepository.saveAll(lstTimeRangeModeToInsert);
} }
if(campaignDTO.getCurrentTimeMode().equals(2)) { if(campaignDTO.getLstTimeZone().size() > 0) {
timeZoneDialModes = campaignDTO.getLstTimeZone();
timeZoneDialModes.forEach(item -> {
item.setCampaignId(campaignId);
TimeZoneDialMode timeZoneDialMode = modelMapper.map(item, TimeZoneDialMode.class);
lstTimeZoneModeToInser.add(timeZoneDialMode);
});
timeZoneDialModeRepository.saveAll(lstTimeZoneModeToInser);
} }
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setErrorCode(Constants.ApiErrorDesc.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(campaign); resultDTO.setData(campaignResult);
} catch (Exception ex) { } catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
...@@ -97,4 +118,15 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -97,4 +118,15 @@ public class CampaignServiceImpl implements CampaignService {
return result; return result;
} }
private String generateCampaignCode(String campaignType, Short chanel) {
int year = Calendar.getInstance().get(Calendar.YEAR);
String maxIndexStr = campaignRepository.getMaxCampaignIndex();
if(maxIndexStr != null) {
Long maxIndex = Long.valueOf(maxIndexStr) + 1;
String result = campaignType + "_" + String.valueOf(chanel) + "_" + String.valueOf(year) + "_" + maxIndex.toString();
return result;
}
return null;
}
} }
...@@ -4,6 +4,7 @@ import lombok.Getter; ...@@ -4,6 +4,7 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date; import java.util.Date;
import java.util.List;
@Getter @Getter
@Setter @Setter
...@@ -57,6 +58,10 @@ public class CampaignDTO extends BaseDTO { ...@@ -57,6 +58,10 @@ public class CampaignDTO extends BaseDTO {
private Long numOfNotJoinedCus; private Long numOfNotJoinedCus;
private Long numOfLockCus; private Long numOfLockCus;
private String campaignTypeName; private String campaignTypeName;
private Date timeRangeStartTime;
private String timeZoneHour;
private String timeZoneMinute;
private List<TimeRangeDialModeDTO> lstTimeRange;
private List<TimeZoneDialModeDTO> lstTimeZone;
} }
...@@ -10,7 +10,7 @@ import lombok.Setter; ...@@ -10,7 +10,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class TimeZoneDialModeDTO { public class TimeZoneDialModeDTO {
private Long timeRangeDialModeId; private Long timeZoneDialModeId;
private Long companySiteId; private Long companySiteId;
private String hour; private String hour;
private String minute; private String minute;
......
package com.viettel.campaign.web.rest.controller; package com.viettel.campaign.web.rest.controller;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
...@@ -34,14 +35,14 @@ public class CampaignController { ...@@ -34,14 +35,14 @@ public class CampaignController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@RequestMapping(value = "/findByCampaignCode", method = RequestMethod.POST) @RequestMapping(value = "/find-by-campaign-code", method = RequestMethod.POST)
public ResultDTO findByCampaignCode(@RequestBody CampaignRequestDTO dto) { public ResultDTO findByCampaignCode(@RequestBody CampaignRequestDTO dto) {
return campaignService.findByCampaignCode(dto); return campaignService.findByCampaignCode(dto);
} }
@RequestMapping(method = RequestMethod.POST) @RequestMapping(method = RequestMethod.POST)
public ResultDTO addNewCampaign(@RequestBody CampaignRequestDTO dto) { public ResultDTO addNewCampaign(@RequestBody CampaignDTO dto) {
return campaignService.findByCampaignCode(dto); return campaignService.addNewCampaign(dto);
} }
@GetMapping("/countRecallCustomer") @GetMapping("/countRecallCustomer")
......
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