Commit a980081a authored by Tu Bach's avatar Tu Bach

tubn campaign ticket history

parent 3933b412
package com.viettel.campaign.model;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
@Entity
@Table(name = "TICKET")
@XmlRootElement
@Getter
@Setter
public class Ticket implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator="ticket_seq")
@SequenceGenerator(name="ticket_seq",sequenceName="ticket_seq", allocationSize=1)
@Basic(optional = false)
@NotNull
@Column(name = "TICKET_ID")
private Long ticketId;
@Column(name = "SOURCE_ID")
private Long sourceId;
@Column(name = "CHANEL_ID")
private Long chanelId;
@Column(name = "CREATE_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date createDate;
@Size(max = 200)
@Column(name = "REF_ID")
private String refId;
@Column(name = "CUSTOMER_ID")
private Long customerId;
@Column(name = "TICKET_STATUS")
private Short ticketStatus;
@Column(name = "RESPONSE_STATUS")
private Long responseStatus;
@Column(name = "PRIORITY_ID")
private Short priorityId;
@Column(name = "RESOLVE_SLA")
@Temporal(TemporalType.TIMESTAMP)
private Date resolveSla;
@Column(name = "FIRST_RESPONE_SLA")
@Temporal(TemporalType.TIMESTAMP)
private Date firstResponeSla;
@Size(max = 400)
@Column(name = "AGENT_PROCESS")
private String agentProcess;
@Size(max = 400)
@Column(name = "AGENT_ASSIGN")
private String agentAssign;
@Column(name = "FIRST_RESPONE_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date firstResponeDate;
@Column(name = "RESOLVE_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date resolveDate;
@Column(name = "ASSIGN_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date assignDate;
@Column(name = "SECOND_RESPONE_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date secondResponeDate;
@Size(max = 20)
@Column(name = "AGENT_ID")
private String agentId;
@Size(max = 20)
@Column(name = "AGENT_ASSIGN_ID")
private String agentAssignId;
@Column(name = "TICKET_SLA_ID")
private Long ticketSlaId;
@Column(name = "SITE_ID")
private Long siteId;
@Column(name = "REQUEST_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date requestDate;
@Column(name = "LAST_REQUEST_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date lastRequestDate;
@Column(name = "TICKET_TYPE_ID")
private Long ticketTypeId;
@Column(name = "SECOND_RESPONE_SLA")
@Temporal(TemporalType.TIMESTAMP)
private Date secondResponeSla;
@Column(name = "COOPERATE_ID")
private Long cooperateId;
@Column(name = "POST_TYPE_ID")
private Long postTypeId;
@Column(name = "USER_READ")
private String userRead;
@Column(name = "POST_CUSTOMER")
private Long postCustomer;
@Column(name = "REASON")
private String reason;
@Column(name = "PROCESS")
private String process;
@Column(name = "LAST_UPDATE_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date lastUpdateTime;
@Column(name = "SLA_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date slaDate;
@Column(name = "SLA_PROCESS_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date slaProcessDate;
@Column(name = "SLA_COOPERATE_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date slaCooperateDate;
@Column(name = "SLA_PROCESS_CONFIG")
private Long slaProcessConfig;
@Column(name = "SLA_COOPERATE_CONFIG")
private Long slaCooperateConfig;
// @Column(name = "COMPANY_SITE_ID")
// private Long companySiteId;
@Column(name = "REOPEN_DATE")
private Date reopenDate;
@Column(name = "COMPANY_SITE_ID")
private Long companyId;
@Column(name = "ASSIGN_TYPE")
private Long assignType;
//bo sung ignored va close reason
@Column(name = "IGNORED")
private Long ignored;
@Column(name = "REASON_CAT_ITEM_ID")
private Long reasonCatItemId;
@Column(name = "PROBLEM_CAT_ITEM_ID")
private Long problemCatItemId;
@Column(name = "VIEW_TYPE")
private Long viewType;
@Column(name = "SUBJECT")
private String subject;
@Column(name = "CLASSIFY_REQUIRE_ID")
private Long classifyRequireId;
@Column(name = "AGENT_RECEIVE")
private String agentReceive;
@Lob
@Column(name = "CONTENT_RECEIVE")
private String contentReceive;
}
package com.viettel.campaign.model;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Entity
@Table(name = "TICKET_CAT_STATUS")
@Getter
@Setter
public class TicketCatStatus implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator="ticket_cat_status_seq")
@SequenceGenerator(name="ticket_cat_status_seq",sequenceName="ticket_cat_status_seq", allocationSize=1)
@Basic(optional = false)
@NotNull
@Column(name = "STATUS_ID")
private Long statusId;
@Size(max = 100)
@Column(name = "STATUS_NAME")
private String statusName;
@Size(max = 50)
@Column(name = "STATUS_CODE")
private String statusCode;
@Size(max = 100)
@Column(name = "CREATE_BY")
private String createBy;
@Column(name = "CREATE_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Column(name = "COMPANY_ID")
private Long companyId;
@Column(name = "ACTIVE")
private Short active;
}
package com.viettel.campaign.repository;
import com.viettel.campaign.model.Ticket;
public interface TicketRepository extends BaseRepository<Ticket>, TicketRepositoryCustom {
}
package com.viettel.campaign.repository;
import com.viettel.campaign.web.dto.TicketDTO;
import org.springframework.data.domain.Pageable;
import java.util.List;
public interface TicketRepositoryCustom {
List<TicketDTO> getHistory(String customerId, Pageable pageable);
}
......@@ -61,7 +61,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
item.setContent((String) obj[2]);
item.setStartTime((Date) obj[3]);
item.setEndTime((Date) obj[4]);
item.setStatus((BigDecimal) obj[5]);
item.setStatus(((BigDecimal) obj[5]).shortValueExact());
lst.add(item);
}
......
package com.viettel.campaign.repository.impl;
import com.viettel.campaign.repository.TicketRepositoryCustom;
import com.viettel.campaign.web.dto.TicketDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class TicketRepositoryImpl implements TicketRepositoryCustom {
@Autowired
EntityManager entityManager;
@Override
public List<TicketDTO> getHistory(String customerId, Pageable pageable) {
List<TicketDTO> lst = new ArrayList<>();
String expression = new StringBuilder()
.append(" SELECT T.TICKET_ID, T.CREATE_DATE, T.SUBJECT, TCS.STATUS_NAME, T.RESOLVE_DATE ")
.append(" FROM TICKET T ")
.append(" INNER JOIN TICKET_CAT_STATUS TCS ON T.TICKET_STATUS = TCS.STATUS_ID ")
.append(" WHERE 1 = 1 ")
.append(" AND T.CUSTOMER_ID = :pCustomerId ")
.toString();
try {
Query query = entityManager.createNativeQuery(expression);
query.setParameter("pCustomerId", customerId);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<Object[]> data = query.getResultList();
for (Object[] obj : data) {
TicketDTO item = new TicketDTO();
item.setTicketId(((BigDecimal) obj[0]).longValueExact());
item.setCreateDate((Date) obj[1]);
item.setSubject((String) obj[2]);
item.setStatusName((String) obj[3]);
item.setResolveDate((Date) obj[4]);
lst.add(item);
}
return lst;
} catch (Exception e) {
e.printStackTrace();
}
return lst;
}
}
package com.viettel.campaign.service;
import java.util.Map;
public interface TicketService {
Map getHistory(int page, int pageSize, String sort, String customerId);
}
package com.viettel.campaign.service.impl;
<<<<<<< HEAD:src/main/java/com/viettel/campaign/service/CampaignServiceImpl.java
import com.viettel.campaign.repository.CampaignRepository;
import com.viettel.campaign.web.dto.CampaignDTO;
=======
import com.viettel.campaign.dto.CampaignDTO;
import com.viettel.campaign.dto.ResultDTO;
import com.viettel.campaign.dto.request_dto.CampaignRequestDTO;
import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.repository.CampaignRepository;
import com.viettel.campaign.service.CampaignService;
>>>>>>> anhvd_campaign_mng:src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class CampaignServiceImpl implements CampaignService {
@Autowired(required=true)
CampaignRepository campaignRepository;
@Override
public Map searchCampaignExecute(int page, int pageSize, String sort, String agentId) {
Map result = new HashMap();
List<CampaignDTO> lst = new ArrayList<>();
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(sort));
lst = campaignRepository.searchCampaignExecute(agentId, pageable);
result.put("totalItem", lst.size());
result.put("data", lst);
return result;
}
@Override
public ResultDTO search(CampaignRequestDTO requestDto) {
return campaignRepository.search(requestDto);
}
}
package com.viettel.campaign.service.impl;
import com.viettel.campaign.repository.TicketRepository;
import com.viettel.campaign.service.TicketService;
import com.viettel.campaign.web.dto.TicketDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class TicketServiceImpl implements TicketService {
@Autowired
TicketRepository ticketRepository;
@Override
public Map getHistory(int page, int pageSize, String sort, String customerId) {
Map result = new HashMap();
List<TicketDTO> lst = new ArrayList<>();
lst = ticketRepository.getHistory(customerId, PageRequest.of(page, pageSize, Sort.by(sort)));
result.put("totalItem", lst.size());
result.put("tickets", lst);
return result;
}
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class TicketDTO extends BaseDTO {
private Long ticketId;
private Long sourceId;
private Date createDate;
private String refId;
private Long customerId;
private Short ticketStatus;
private Short responseStatus;
private Short priorityId;
private Date resolveSla;
private Date firstResponeSla;
private String agentProcess;
private Date firstResponeDate;
private Date resolveDate;
private Date assignDate;
private Date secondResponeDate;
private String agentId;
private Long ticketSlaId;
private Long companyId;
private Long siteId;
private Date requestDate;
private Date lastRequestDate;
private Long ticketTypeId;
private Long ticketTypeTemp;
private Date secondResponeSla;
private Long cooperateId;
private String subject;
private String customerName;
private String sourceName;
private Long chanelId;
private int overDue;
private String fromDate;
private String toDate;
private String customerCode;
private String agentAssignId;
private String agentAssign;
private String userLogin;
private Long readed;
private String emailFrom;
private String ticketTypeName;
private Short ticketStatusTemp;
private Short priorityTemp;
private Long postTypeId;
private String postTypeName;
private Long postCustomer;
private Long agentAssignType;
private String reason;
private String process;
private Long agentSiteId;
private String agentRole;
private String agentAssignTemp;
private String agentAssignIdTemp;
private Long siteAssignIdTemp;
private Long siteAssign;
private Double dateDiff;
private String fromUser;
private Long sendType;
private String content;
private Date createDateDetail;
private String toUser;
private String postContent;
private Date postTime;
private String link;
private Long numLike;
private Long numShare;
private Long numView;
private Double timeResponse;
private String name;
private String lastReflect;
private String statusName;
private String priorityName;
private String siteName;
private int maxRow;
private String channelName;
private String sendTypeName;
private Date fromDateValue;
private Date toDateValue;
}
package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.TicketService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/ipcc/ticket")
@CrossOrigin
public class TicketController {
private static final Logger LOGGER = Logger.getLogger(TicketController.class);
@Autowired
TicketService ticketService;
@GetMapping("/getHistory")
@ResponseBody
public ResponseEntity searchCampaignExecute(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort, @RequestParam("customerId") String customerId) {
Map result = ticketService.getHistory(page, pageSize, sort, customerId);
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