Commit 611f44b9 authored by yajun.zhang's avatar yajun.zhang

导出Excel

parent 20998ac2
......@@ -335,6 +335,13 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies>
</project>
......@@ -20,7 +20,7 @@ public class MailConfig {
@Value("${customer.transaction.mail.host}")
private String host;
@Value("${customer.transaction.mail.port}")
private int port = 587;
private int port = 465;
@Value("${customer.transaction.mail.password}")
private String password;
......
......@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -27,6 +28,10 @@ public class ThirdWorkOrderRest {
public JsonResult list(@RequestBody WorkOrderParam param) {
return thirdWorkOrderService.queryWorkOrder(param);
}
@PostMapping("/export")
public JsonResult export(@RequestBody WorkOrderParam param,@RequestHeader("account") String account) {
return thirdWorkOrderService.export(param,account);
}
}
......@@ -19,5 +19,9 @@ public class WorkOrderParam {
private String acceptUser;
private String priority;
private List<String> statusList;
private String startTime;
private String endTime;
}
package cn.quantgroup.customer.rest.vo.thirdworkorder;
import com.alibaba.excel.annotation.ExcelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ThirdWorkOrderExportVo implements Serializable {
/**
* 工单信息
*/
//创建时间
@ExcelProperty(value = "创建时间", index = 0)
private String createTime;
//小结id
@ExcelProperty(value = "小结id", index = 1)
private String id;
//工单id
@ExcelProperty(value = "工单id", index = 2)
private String processInstanceId;
//反馈渠道
@ExcelProperty(value = "反馈渠道", index = 3)
private String feedbackChannel;
//问题细分二级
@ExcelProperty(value = "问题细分", index = 4)
private String questionLevel;
//订单id
@ExcelProperty(value = "订单id", index = 6)
private String orderNo;
//问题描述
@ExcelProperty(value = "问题描述", index = 13)
private String problemDesc;
//工单创建人
@ExcelProperty(value = "一级客服", index = 14)
private String createUser;
//工单受理人
@ExcelProperty(value = "二级客服", index = 15)
private String acceptUser;
//工单状态
@ExcelProperty(value = "工单状态", index = 16)
private String status;
//关单时间
@ExcelProperty(value = "关闭工单时间", index = 18)
private String closeTime;
/**
* 订单信息
*/
/**
* 订单no
*/
// private String orderNo;
/**
* sku分类名称
*/
@ExcelProperty(value = "商品分类", index = 5)
private String categroyName;
/**
* 下单时间
*/
@ExcelProperty(value = "下单时间", index = 7)
private String orderTime;
/**
* 发货时间
*/
@ExcelProperty(value = "发货时间", index = 8)
private String deliveryAt;
/**
* 供应商名称
*/
@ExcelProperty(value = "供应商名称", index = 9)
private String supplierName;
/**
* 商品名称
*/
@ExcelProperty(value = "商品名称", index = 10)
private String skuName;
/**
* 支付金额
*/
@ExcelProperty(value = "支付金额", index = 11)
private BigDecimal payAmount;
/**
* 订单状态
*/
@ExcelProperty(value = "订单状态", index = 12)
private Integer orderStatus;
/**
* 物流单号
*/
@ExcelProperty(value = "物流单号", index = 17)
private String deliveryNo;
}
......@@ -2,7 +2,6 @@ package cn.quantgroup.customer.rest.vo.thirdworkorder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ThirdWorkOrderVo {
......@@ -29,4 +28,6 @@ public class ThirdWorkOrderVo {
private String status;
//问题描述
private String problemDesc;
//问题描述
private String createTime;
}
package cn.quantgroup.customer.service;
import cn.quantgroup.customer.model.kaordermapping.ApplyRequestHistory;
import cn.quantgroup.customer.model.kaordermapping.ChannelConfigurationResult;
import cn.quantgroup.customer.model.kaordermapping.LoanOrderMapping;
import cn.quantgroup.customer.model.order.CallbackRecordList;
import cn.quantgroup.customer.rest.param.ordermapping.OrderQueryParam;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderExportVo;
import java.util.List;
import java.util.Map;
/**
* @author Wang Xiangwei
* @version 2020/3/9
*/
public interface IKdspService {
JsonResult<List<ThirdWorkOrderExportVo>> getOrderDetailForWorkOder(List<String> orderNos);
}
......@@ -16,4 +16,6 @@ public interface IThirdWorkOrderService {
JsonResult<Map<String,Object>> queryWorkOrder(WorkOrderParam param);
JsonResult export(WorkOrderParam param,String account);
}
......@@ -72,6 +72,8 @@ public interface IHttpService {
*/
String post(String uri, Object parameters);
String postJson(String uri, Object parameters);
String post(String uri, Map<String, ?> parameters);
<T> T post(String uri, Map<String, String> headers, Object parameters, Class<T> clazz);
......
package cn.quantgroup.customer.service.http;
import com.alibaba.fastjson.JSON;
import java.net.URL;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -134,6 +136,20 @@ public class RestTemplateServiceImpl implements IHttpService {
throw new HttpClientErrorException(entity.getStatusCode());
}
@Override
public String postJson(String uri, Object parameters) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 将JSON数据和请求头封装成HttpEntity
HttpEntity<String> entity = new HttpEntity<>(JSON.toJSONString(parameters), headers);
// 发送POST请求
ResponseEntity<String> response = restTemplate.postForEntity(uri, entity, String.class);
// 输出响应内容
return response.getBody();
}
@Override
public String post(String uri, Map<String, ?> parameters) {
log.info("method post uri:{},parameters:{}", uri, parameters);
......
package cn.quantgroup.customer.service.impl;
import static cn.quantgroup.customer.constant.Constant.GSON;
import cn.quantgroup.customer.enums.ErrorCodeEnum;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderExportVo;
import cn.quantgroup.customer.service.IKdspService;
import cn.quantgroup.customer.service.http.IHttpService;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
* @author Wang Xiangwei
* @version 2020/3/9
*/
@Slf4j
@Service
public class KdspServiceImpl implements IKdspService {
// @Value("${kdsp.operation.http}")
private String kdspOperationUrl;
@Autowired
private IHttpService httpService;
@Override
public JsonResult<List<ThirdWorkOrderExportVo>> getOrderDetailForWorkOder(
List<String> orderNos) {
String url = "http://kdsp-operation-yxm.liangkebang.net/api/kdsp/op/order/getOrderDetailForWorkOder";
JsonResult<List<ThirdWorkOrderExportVo>> jsonResult = null;
try {
String result = httpService.postJson(url, orderNos);
jsonResult = GSON.fromJson(result, JsonResult.class);
log.info("工单查询订单详情返回值:{}", result);
} catch (Exception ex) {
log.error("工单查询订单详情异常",ex);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.NET_ERROR.getMessage(), null);
}
return jsonResult;
}
}
package cn.quantgroup.customer.service.impl;
import cn.quantgroup.customer.rest.param.mail.SendMailParam;
import cn.quantgroup.customer.rest.param.thirdworkorder.WorkOrderParam;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderExportVo;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderVo;
import cn.quantgroup.customer.service.IKdspService;
import cn.quantgroup.customer.service.IThirdWorkOrderService;
import cn.quantgroup.customer.service.IWorkOrderService;
import cn.quantgroup.customer.util.DateUtil;
import cn.quantgroup.customer.util.EasyExcelUtil;
import cn.quantgroup.customer.util.MailUtil;
import cn.quantgroup.third.customer.entity.LhpdsSysUser;
import cn.quantgroup.third.customer.entity.WorkflowProcessInstanceTaskAssignee;
import cn.quantgroup.third.customer.repo.LhpdsCustomer2Repo;
import cn.quantgroup.third.customer.repo.LhpdsSysUserRepo;
import cn.quantgroup.third.customer.repo.WorkflowProcessInstanceTaskAssigneeRepo;
import java.io.File;
import java.io.FileInputStream;
import java.rmi.MarshalledObject;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
......@@ -29,7 +38,9 @@ import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.io.InputStreamResource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
......@@ -55,56 +66,67 @@ public class ThirdWorkOrderServiceImpl implements IThirdWorkOrderService {
@Autowired
@Qualifier("entityManagerSecondary")
private EntityManager entityManager;
@Autowired
private IKdspService iKdspService;
@Value("${customer.transaction.mail.from}")
private String from;
private static int pageSize = 500;
@Override
public JsonResult<Map<String,Object>> queryWorkOrder(WorkOrderParam param) {
long offset = (param.getPageNo()-1) * param.getPageSize();
public JsonResult<Map<String, Object>> queryWorkOrder(WorkOrderParam param) {
long offset = (param.getPageNo() - 1) * param.getPageSize();
StringBuffer sql = new StringBuffer();
sql.append("SELECT "
+ "lc.id,lc.create_user createUser,assignee.assignee acceptUser ,lc.field10 orderId,lc.field17 problemDesc,"
+ "lwpi.process_instance_id processInstanceId,lwpi.priority priority,lwpi.global_state status,lwpi.process_definition_id processDefinitionId,lwpi.contact realContact "
+ "lwpi.process_instance_id processInstanceId,lwpi.priority priority,lwpi.global_state status,lwpi.process_definition_id processDefinitionId,lwpi.contact realContact,"
+ "lc.create_time "
+ "FROM lhpds_customer_2 lc left join lhpds_workflow_process_instance lwpi on lc .id =lwpi.data_id "
+ "left join lhpds_workflow_process_instance_task_assignee assignee "
+ "on lwpi.process_instance_id = assignee.process_instance_id and assignee.task_name ='处理工单' and assignee.state =0 " );
+ "on lwpi.process_instance_id = assignee.process_instance_id and assignee.task_name ='处理工单' and assignee.state =0 ");
StringBuffer countSql = new StringBuffer();
countSql.append("SELECT count(1)"
+ "FROM lhpds_customer_2 lc left join lhpds_workflow_process_instance lwpi on lc .id =lwpi.data_id "
+ "left join lhpds_workflow_process_instance_task_assignee assignee "
+ "on lwpi.process_instance_id = assignee.process_instance_id and assignee.task_name ='处理工单' and assignee.state =0 " );
+ "on lwpi.process_instance_id = assignee.process_instance_id and assignee.task_name ='处理工单' and assignee.state =0 ");
StringBuffer conditionSql = new StringBuffer();
if (param.getId()!=null){
conditionSql.append("and lc.id="+param.getId()+" ");
if (param.getId() != null) {
conditionSql.append("and lc.id=" + param.getId() + " ");
}
if (StringUtils.isNotBlank(param.getOrderId())){
conditionSql.append("and lc.field10='"+param.getOrderId()+"' ");
if (StringUtils.isNotBlank(param.getOrderId())) {
conditionSql.append("and lc.field10='" + param.getOrderId() + "' ");
}
if (StringUtils.isNotBlank(param.getProcessInstanceId())){
conditionSql.append("and lwpi.process_instance_id='"+param.getProcessInstanceId()+"' ");
if (StringUtils.isNotBlank(param.getProcessInstanceId())) {
conditionSql.append(
"and lwpi.process_instance_id='" + param.getProcessInstanceId() + "' ");
}
if (StringUtils.isNotBlank(param.getPriority())){
conditionSql.append("and lwpi.priority='"+param.getPriority()+"' ");
if (StringUtils.isNotBlank(param.getPriority())) {
conditionSql.append("and lwpi.priority='" + param.getPriority() + "' ");
}
if (CollectionUtils.isNotEmpty(param.getStatusList())){
StringBuffer statusSb = new StringBuffer();
for (String s : param.getStatusList()){
statusSb.append(",'"+s+"'");
if (CollectionUtils.isNotEmpty(param.getStatusList())) {
StringBuffer statusSb = new StringBuffer();
for (String s : param.getStatusList()) {
statusSb.append(",'" + s + "'");
}
conditionSql.append("and lwpi.global_state in ("+statusSb.substring(1)+") ");
conditionSql.append("and lwpi.global_state in (" + statusSb.substring(1) + ") ");
}
if (StringUtils.isNotBlank(param.getCreateUser())){
conditionSql.append("and lc.create_user='"+param.getCreateUser()+"' ");
if (StringUtils.isNotBlank(param.getCreateUser())) {
conditionSql.append("and lc.create_user='" + param.getCreateUser() + "' ");
}
if (StringUtils.isNotBlank(param.getAcceptUser())){
conditionSql.append("and assignee.assignee='"+param.getAcceptUser()+"' ");
if (StringUtils.isNotBlank(param.getAcceptUser())) {
conditionSql.append("and assignee.assignee='" + param.getAcceptUser() + "' ");
}
if (StringUtils.isNotBlank(conditionSql.toString())){
sql.append(" where "+conditionSql.toString().substring(3));
countSql.append(" where "+conditionSql.toString().substring(3));
if (StringUtils.isNotBlank(param.getStartTime()) &&StringUtils.isNotBlank(param.getEndTime()) ) {
conditionSql.append("and lc.create_time >='" + param.getStartTime() + "' and lc.create_time <= '"+param.getEndTime()+"'");
}
if (StringUtils.isNotBlank(conditionSql.toString())) {
sql.append(" where " + conditionSql.toString().substring(3));
countSql.append(" where " + conditionSql.toString().substring(3));
}
sql.append(" order by lc.id desc");
sql.append( " limit "+offset+","+param.getPageSize());
sql.append(" limit " + offset + "," + param.getPageSize());
Query nativeQuery = entityManager.createNativeQuery(sql.toString());
List<Object[]> result = nativeQuery.getResultList();
Query countQuery = entityManager.createNativeQuery(countSql.toString());
......@@ -112,78 +134,252 @@ public class ThirdWorkOrderServiceImpl implements IThirdWorkOrderService {
Set<String> userSet = new HashSet<>();
Set<String> processInstanceIdSet = new HashSet<>();
for (Object[] objects : result){
if (objects[1] != null){
for (Object[] objects : result) {
if (objects[1] != null) {
userSet.add(objects[1].toString());
}
if (objects[2] != null){
if (objects[2] != null) {
userSet.add(objects[2].toString());
}
if (objects[5] != null){
if (objects[5] != null) {
processInstanceIdSet.add(objects[5].toString());
}
}
//查询用户名称
List<LhpdsSysUser> userList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(userSet)){
if (CollectionUtils.isNotEmpty(userSet)) {
userList = lhpdsSysUserRepo.getUserByAccountIdList(new ArrayList<>(userSet));
}
Map<String,String> userNameMap = userList.stream().collect(
Collectors.toMap(LhpdsSysUser::getAccountId, LhpdsSysUser::getNickname,(key1,key2)->key2));
Map<String, String> userNameMap = userList.stream().collect(
Collectors.toMap(LhpdsSysUser::getAccountId, LhpdsSysUser::getNickname,
(key1, key2) -> key2));
//查询任务id
List<WorkflowProcessInstanceTaskAssignee> taskAssigneeList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(processInstanceIdSet)){
taskAssigneeList = taskAssigneeRepo.getByInstanceIds(new ArrayList<>(processInstanceIdSet));
if (CollectionUtils.isNotEmpty(processInstanceIdSet)) {
taskAssigneeList = taskAssigneeRepo.getByInstanceIds(
new ArrayList<>(processInstanceIdSet));
}
Map<String,String> taskAssigneeMap = taskAssigneeList.stream().collect(
Map<String, String> taskAssigneeMap = taskAssigneeList.stream().collect(
Collectors.toMap(WorkflowProcessInstanceTaskAssignee::getProcessInstanceId,
WorkflowProcessInstanceTaskAssignee::getTaskId,(key1,key2)->key2));
WorkflowProcessInstanceTaskAssignee::getTaskId, (key1, key2) -> key2));
List<ThirdWorkOrderVo> resultList = new ArrayList<>();
for (Object[] objects : result){
for (Object[] objects : result) {
ThirdWorkOrderVo vo = new ThirdWorkOrderVo();
vo.setId(Long.parseLong(objects[0].toString()));
if (objects[1] != null){
if (objects[1] != null) {
String name = userNameMap.get(objects[1].toString());
name = StringUtils.isBlank(name) ? objects[1].toString():objects[1].toString()+"("+userNameMap.get(objects[1].toString())+")";
name = StringUtils.isBlank(name) ? objects[1].toString()
: objects[1].toString() + "(" + userNameMap.get(objects[1].toString()) + ")";
vo.setCreateUser(name);
}
if (objects[2] != null){
if (objects[2] != null) {
String name = userNameMap.get(objects[2].toString());
name = StringUtils.isBlank(name) ? objects[2].toString():objects[2].toString()+"("+userNameMap.get(objects[2].toString())+")";
name = StringUtils.isBlank(name) ? objects[2].toString()
: objects[2].toString() + "(" + userNameMap.get(objects[2].toString()) + ")";
vo.setAcceptUser(name);
}
if (objects[3] != null){
if (objects[3] != null) {
vo.setOrderId(objects[3].toString());
}
if (objects[4] != null){
if (objects[4] != null) {
vo.setProblemDesc(objects[4].toString());
}
if (objects[5] != null){
if (objects[5] != null) {
vo.setProcessInstanceId(objects[5].toString());
}
if (objects[6] != null){
if (objects[6] != null) {
vo.setPriority(objects[6].toString());
}
if (objects[7] != null){
if (objects[7] != null) {
vo.setStatus(objects[7].toString());
}
if (objects[8] != null){
if (objects[8] != null) {
vo.setProcessDefinitionId(objects[8].toString());
}
if (objects[9] != null){
if (objects[9] != null) {
vo.setRealContact(objects[9].toString());
}
if (objects[10] != null) {
vo.setCreateTime(objects[10].toString());
}
vo.setTaskId(taskAssigneeMap.get(vo.getProcessInstanceId()));
resultList.add(vo);
}
Map<String,Object> map = new HashMap<>();
map.put("total",Integer.parseInt(count.toString()));
map.put("records",resultList);
return JsonResult.buildSuccessResult("查询成功",map);
Map<String, Object> map = new HashMap<>();
map.put("total", Integer.parseInt(count.toString()));
map.put("records", resultList);
return JsonResult.buildSuccessResult("查询成功", map);
}
@Override
public JsonResult export(WorkOrderParam param,String account) {
try {
StringBuffer sql = new StringBuffer();
sql.append("SELECT lc.create_time,lc.id,lc.field14,lc.field51,lc.create_user createUser,assignee.assignee acceptUser,"
+ "lc.field10 orderId,lc.field17 problemDesc,lwpi.process_instance_id processInstanceId,"
+ "lwpi.global_state status,lwpi.close_time "
+ "FROM lhpds_customer_2 lc left join lhpds_workflow_process_instance lwpi on lc .id =lwpi.data_id "
+ "left join lhpds_workflow_process_instance_task_assignee assignee "
+ "on lwpi.process_instance_id = assignee.process_instance_id and assignee.task_name ='处理工单' and assignee.state =0 " );
StringBuffer countSql = new StringBuffer();
countSql.append("SELECT count(1)"
+ "FROM lhpds_customer_2 lc left join lhpds_workflow_process_instance lwpi on lc .id =lwpi.data_id "
+ "left join lhpds_workflow_process_instance_task_assignee assignee "
+ "on lwpi.process_instance_id = assignee.process_instance_id and assignee.task_name ='处理工单' and assignee.state =0 " );
StringBuffer conditionSql = new StringBuffer();
if (param.getId()!=null){
conditionSql.append("and lc.id="+param.getId()+" ");
}
if (StringUtils.isNotBlank(param.getOrderId())){
conditionSql.append("and lc.field10='"+param.getOrderId()+"' ");
}
if (StringUtils.isNotBlank(param.getProcessInstanceId())){
conditionSql.append("and lwpi.process_instance_id='"+param.getProcessInstanceId()+"' ");
}
if (StringUtils.isNotBlank(param.getPriority())){
conditionSql.append("and lwpi.priority='"+param.getPriority()+"' ");
}
if (CollectionUtils.isNotEmpty(param.getStatusList())){
StringBuffer statusSb = new StringBuffer();
for (String s : param.getStatusList()){
statusSb.append(",'"+s+"'");
}
conditionSql.append("and lwpi.global_state in ("+statusSb.substring(1)+") ");
}
if (StringUtils.isNotBlank(param.getCreateUser())){
conditionSql.append("and lc.create_user='"+param.getCreateUser()+"' ");
}
if (StringUtils.isNotBlank(param.getAcceptUser())){
conditionSql.append("and assignee.assignee='"+param.getAcceptUser()+"' ");
}
if (StringUtils.isNotBlank(conditionSql.toString())){
sql.append(" where "+conditionSql.toString().substring(3));
countSql.append(" where "+conditionSql.toString().substring(3));
}
sql.append(" order by lc.id desc");
Query countQuery = entityManager.createNativeQuery(countSql.toString());
Object countResult = countQuery.getSingleResult();
int count = Integer.parseInt(countResult.toString());
if (count == 0){
// return ;
}
int pageNo = (count + pageSize - 1) / pageSize;
List<ThirdWorkOrderExportVo> exportVos = new ArrayList<>();
List<ThirdWorkOrderExportVo> dbData = new ArrayList<>();
List<ThirdWorkOrderExportVo> kdspResult = new ArrayList<>();
for (int i = 1;i <= pageNo;i++){
List<String> orderNos = new ArrayList<>();
long offset = (param.getPageNo() - 1) * param.getPageSize();
String tempSql = sql.toString() + " limit "+offset+","+pageSize;
Query nativeQuery = entityManager.createNativeQuery(tempSql);
List<Object[]> result = nativeQuery.getResultList();
ThirdWorkOrderExportVo exportVo = new ThirdWorkOrderExportVo();
for (Object[] objects : result) {
if (objects[0] != null) {
exportVo.setCreateTime(objects[0].toString());
}
if (objects[1] != null) {
exportVo.setId(objects[1].toString());
}
if (objects[2] != null) {
exportVo.setFeedbackChannel(objects[2].toString());
}
if (objects[3] != null) {
exportVo.setQuestionLevel(objects[3].toString());
}
if (objects[4] != null) {
exportVo.setCreateUser(objects[4].toString());
}
if (objects[5] != null) {
exportVo.setAcceptUser(objects[5].toString());
}
if (objects[6] != null) {
exportVo.setOrderNo(objects[6].toString());
orderNos.add(exportVo.getOrderNo());
}
if (objects[7] != null) {
exportVo.setProblemDesc(objects[7].toString());
}
if (objects[8] != null) {
exportVo.setProcessInstanceId(objects[8].toString());
}
if (objects[9] != null) {
exportVo.setStatus(objects[9].toString());
}
if (objects[10] != null) {
exportVo.setCloseTime(objects[10].toString());
}
dbData.add(exportVo);
}
JsonResult<List<ThirdWorkOrderExportVo>> orderDetailForWorkOder = iKdspService.getOrderDetailForWorkOder(
orderNos);
if (!orderDetailForWorkOder.isSuccess()){
}
List<ThirdWorkOrderExportVo> data = orderDetailForWorkOder.getData();
if (CollectionUtils.isNotEmpty(data)){
kdspResult.addAll(data);
}
}
Map<String, List<ThirdWorkOrderExportVo>> groupBy = kdspResult.stream().collect(Collectors.groupingBy(ThirdWorkOrderExportVo::getOrderNo));
for (ThirdWorkOrderExportVo exportVo : dbData){
List<ThirdWorkOrderExportVo> temp = groupBy.get(exportVo.getOrderNo());
if (CollectionUtils.isEmpty(temp)){
exportVos.add(exportVo);
continue;
}
for (ThirdWorkOrderExportVo orderExportVo : temp){
orderExportVo.setId(exportVo.getId());
orderExportVo.setProcessInstanceId(exportVo.getProcessInstanceId());
orderExportVo.setCreateUser(exportVo.getCreateUser());
orderExportVo.setAcceptUser(exportVo.getAcceptUser());
orderExportVo.setStatus(exportVo.getStatus());
orderExportVo.setProblemDesc(exportVo.getProblemDesc());
orderExportVo.setCreateTime(exportVo.getCreateTime());
orderExportVo.setFeedbackChannel(exportVo.getFeedbackChannel());
orderExportVo.setQuestionLevel(exportVo.getQuestionLevel());
orderExportVo.setCloseTime(exportVo.getCloseTime());
exportVos.add(orderExportVo);
}
}
String date = DateUtil.format(new Date(), DateUtil.YYYYMMDDHHMMSS);
String path =this.getClass().getResource("/").getPath()+ "工单导出"+DateUtil.format(new Date(),DateUtil.YYYYMMDDHHMMSS) +".xlsx";
File file = new File(path);
EasyExcelUtil.write(path,ThirdWorkOrderExportVo.class,exportVos);
SendMailParam mailParam = new SendMailParam();
mailParam.setSubject("工单导出"+date);
mailParam.setReceiver(new String[]{account+"@quantgroup.com"});
mailParam.setSender(from);
mailParam.setContentText("工单导出");
mailParam.setAttachmentFileName(file.getName());
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
mailParam.setInputStreamSource(resource);
MailUtil.sendHtmlAndAttachmentMail(mailParam);
if (file.exists()){
file.delete();
}
}catch (Exception ex){
log.error("导出excel异常",ex);
}finally {
}
return JsonResult.buildSuccessResult("查询成功","");
}
}
package cn.quantgroup.customer.util;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderExportVo;
import com.alibaba.excel.EasyExcel;
import java.util.List;
/**
* @author :dongjianhua
* @date :Created in 2019/10/28 10:20
* @description:excel处理工具类
* @modified By:
* @version: 1.0
*/
public class EasyExcelUtil {
public static void write(String filePath,Class clas,List exportVos) {
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(filePath, clas).sheet("数据").doWrite(exportVos);
}
}
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