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

导出Excel

parent 20998ac2
...@@ -335,6 +335,13 @@ ...@@ -335,6 +335,13 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId> <artifactId>spring-boot-starter-mail</artifactId>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
...@@ -20,7 +20,7 @@ public class MailConfig { ...@@ -20,7 +20,7 @@ public class MailConfig {
@Value("${customer.transaction.mail.host}") @Value("${customer.transaction.mail.host}")
private String host; private String host;
@Value("${customer.transaction.mail.port}") @Value("${customer.transaction.mail.port}")
private int port = 587; private int port = 465;
@Value("${customer.transaction.mail.password}") @Value("${customer.transaction.mail.password}")
private String password; private String password;
......
...@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -27,6 +28,10 @@ public class ThirdWorkOrderRest { ...@@ -27,6 +28,10 @@ public class ThirdWorkOrderRest {
public JsonResult list(@RequestBody WorkOrderParam param) { public JsonResult list(@RequestBody WorkOrderParam param) {
return thirdWorkOrderService.queryWorkOrder(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 { ...@@ -19,5 +19,9 @@ public class WorkOrderParam {
private String acceptUser; private String acceptUser;
private String priority; private String priority;
private List<String> statusList; 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; ...@@ -2,7 +2,6 @@ package cn.quantgroup.customer.rest.vo.thirdworkorder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class ThirdWorkOrderVo { public class ThirdWorkOrderVo {
...@@ -29,4 +28,6 @@ public class ThirdWorkOrderVo { ...@@ -29,4 +28,6 @@ public class ThirdWorkOrderVo {
private String status; private String status;
//问题描述 //问题描述
private String problemDesc; 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 { ...@@ -16,4 +16,6 @@ public interface IThirdWorkOrderService {
JsonResult<Map<String,Object>> queryWorkOrder(WorkOrderParam param); JsonResult<Map<String,Object>> queryWorkOrder(WorkOrderParam param);
JsonResult export(WorkOrderParam param,String account);
} }
...@@ -72,6 +72,8 @@ public interface IHttpService { ...@@ -72,6 +72,8 @@ public interface IHttpService {
*/ */
String post(String uri, Object parameters); String post(String uri, Object parameters);
String postJson(String uri, Object parameters);
String post(String uri, Map<String, ?> parameters); String post(String uri, Map<String, ?> parameters);
<T> T post(String uri, Map<String, String> headers, Object parameters, Class<T> clazz); <T> T post(String uri, Map<String, String> headers, Object parameters, Class<T> clazz);
......
package cn.quantgroup.customer.service.http; package cn.quantgroup.customer.service.http;
import com.alibaba.fastjson.JSON;
import java.net.URL;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -134,6 +136,20 @@ public class RestTemplateServiceImpl implements IHttpService { ...@@ -134,6 +136,20 @@ public class RestTemplateServiceImpl implements IHttpService {
throw new HttpClientErrorException(entity.getStatusCode()); 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 @Override
public String post(String uri, Map<String, ?> parameters) { public String post(String uri, Map<String, ?> parameters) {
log.info("method post uri:{},parameters:{}", uri, 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; 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.param.thirdworkorder.WorkOrderParam;
import cn.quantgroup.customer.rest.vo.JsonResult; 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.rest.vo.thirdworkorder.ThirdWorkOrderVo;
import cn.quantgroup.customer.service.IKdspService;
import cn.quantgroup.customer.service.IThirdWorkOrderService; import cn.quantgroup.customer.service.IThirdWorkOrderService;
import cn.quantgroup.customer.service.IWorkOrderService; 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.LhpdsSysUser;
import cn.quantgroup.third.customer.entity.WorkflowProcessInstanceTaskAssignee; import cn.quantgroup.third.customer.entity.WorkflowProcessInstanceTaskAssignee;
import cn.quantgroup.third.customer.repo.LhpdsCustomer2Repo; import cn.quantgroup.third.customer.repo.LhpdsCustomer2Repo;
import cn.quantgroup.third.customer.repo.LhpdsSysUserRepo; import cn.quantgroup.third.customer.repo.LhpdsSysUserRepo;
import cn.quantgroup.third.customer.repo.WorkflowProcessInstanceTaskAssigneeRepo; import cn.quantgroup.third.customer.repo.WorkflowProcessInstanceTaskAssigneeRepo;
import java.io.File;
import java.io.FileInputStream;
import java.rmi.MarshalledObject; import java.rmi.MarshalledObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
...@@ -29,7 +38,9 @@ import org.apache.commons.lang3.StringEscapeUtils; ...@@ -29,7 +38,9 @@ import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; 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.convert.converter.Converter;
import org.springframework.core.io.InputStreamResource;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
...@@ -55,56 +66,67 @@ public class ThirdWorkOrderServiceImpl implements IThirdWorkOrderService { ...@@ -55,56 +66,67 @@ public class ThirdWorkOrderServiceImpl implements IThirdWorkOrderService {
@Autowired @Autowired
@Qualifier("entityManagerSecondary") @Qualifier("entityManagerSecondary")
private EntityManager entityManager; private EntityManager entityManager;
@Autowired
private IKdspService iKdspService;
@Value("${customer.transaction.mail.from}")
private String from;
private static int pageSize = 500;
@Override @Override
public JsonResult<Map<String,Object>> queryWorkOrder(WorkOrderParam param) { public JsonResult<Map<String, Object>> queryWorkOrder(WorkOrderParam param) {
long offset = (param.getPageNo()-1) * param.getPageSize(); long offset = (param.getPageNo() - 1) * param.getPageSize();
StringBuffer sql = new StringBuffer(); StringBuffer sql = new StringBuffer();
sql.append("SELECT " sql.append("SELECT "
+ "lc.id,lc.create_user createUser,assignee.assignee acceptUser ,lc.field10 orderId,lc.field17 problemDesc," + "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 " + "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 " + "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(); StringBuffer countSql = new StringBuffer();
countSql.append("SELECT count(1)" countSql.append("SELECT count(1)"
+ "FROM lhpds_customer_2 lc left join lhpds_workflow_process_instance lwpi on lc .id =lwpi.data_id " + "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 " + "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(); StringBuffer conditionSql = new StringBuffer();
if (param.getId()!=null){ if (param.getId() != null) {
conditionSql.append("and lc.id="+param.getId()+" "); conditionSql.append("and lc.id=" + param.getId() + " ");
} }
if (StringUtils.isNotBlank(param.getOrderId())){ if (StringUtils.isNotBlank(param.getOrderId())) {
conditionSql.append("and lc.field10='"+param.getOrderId()+"' "); conditionSql.append("and lc.field10='" + param.getOrderId() + "' ");
} }
if (StringUtils.isNotBlank(param.getProcessInstanceId())){ if (StringUtils.isNotBlank(param.getProcessInstanceId())) {
conditionSql.append("and lwpi.process_instance_id='"+param.getProcessInstanceId()+"' "); conditionSql.append(
"and lwpi.process_instance_id='" + param.getProcessInstanceId() + "' ");
} }
if (StringUtils.isNotBlank(param.getPriority())){ if (StringUtils.isNotBlank(param.getPriority())) {
conditionSql.append("and lwpi.priority='"+param.getPriority()+"' "); conditionSql.append("and lwpi.priority='" + param.getPriority() + "' ");
} }
if (CollectionUtils.isNotEmpty(param.getStatusList())){ if (CollectionUtils.isNotEmpty(param.getStatusList())) {
StringBuffer statusSb = new StringBuffer(); StringBuffer statusSb = new StringBuffer();
for (String s : param.getStatusList()){ for (String s : param.getStatusList()) {
statusSb.append(",'"+s+"'"); 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())){ if (StringUtils.isNotBlank(param.getCreateUser())) {
conditionSql.append("and lc.create_user='"+param.getCreateUser()+"' "); conditionSql.append("and lc.create_user='" + param.getCreateUser() + "' ");
} }
if (StringUtils.isNotBlank(param.getAcceptUser())){ if (StringUtils.isNotBlank(param.getAcceptUser())) {
conditionSql.append("and assignee.assignee='"+param.getAcceptUser()+"' "); conditionSql.append("and assignee.assignee='" + param.getAcceptUser() + "' ");
} }
if (StringUtils.isNotBlank(param.getStartTime()) &&StringUtils.isNotBlank(param.getEndTime()) ) {
if (StringUtils.isNotBlank(conditionSql.toString())){ conditionSql.append("and lc.create_time >='" + param.getStartTime() + "' and lc.create_time <= '"+param.getEndTime()+"'");
sql.append(" where "+conditionSql.toString().substring(3)); }
countSql.append(" where "+conditionSql.toString().substring(3)); 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(" order by lc.id desc");
sql.append( " limit "+offset+","+param.getPageSize()); sql.append(" limit " + offset + "," + param.getPageSize());
Query nativeQuery = entityManager.createNativeQuery(sql.toString()); Query nativeQuery = entityManager.createNativeQuery(sql.toString());
List<Object[]> result = nativeQuery.getResultList(); List<Object[]> result = nativeQuery.getResultList();
Query countQuery = entityManager.createNativeQuery(countSql.toString()); Query countQuery = entityManager.createNativeQuery(countSql.toString());
...@@ -112,78 +134,252 @@ public class ThirdWorkOrderServiceImpl implements IThirdWorkOrderService { ...@@ -112,78 +134,252 @@ public class ThirdWorkOrderServiceImpl implements IThirdWorkOrderService {
Set<String> userSet = new HashSet<>(); Set<String> userSet = new HashSet<>();
Set<String> processInstanceIdSet = new HashSet<>(); Set<String> processInstanceIdSet = new HashSet<>();
for (Object[] objects : result){ for (Object[] objects : result) {
if (objects[1] != null){ if (objects[1] != null) {
userSet.add(objects[1].toString()); userSet.add(objects[1].toString());
} }
if (objects[2] != null){ if (objects[2] != null) {
userSet.add(objects[2].toString()); userSet.add(objects[2].toString());
} }
if (objects[5] != null){ if (objects[5] != null) {
processInstanceIdSet.add(objects[5].toString()); processInstanceIdSet.add(objects[5].toString());
} }
} }
//查询用户名称 //查询用户名称
List<LhpdsSysUser> userList = new ArrayList<>(); List<LhpdsSysUser> userList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(userSet)){ if (CollectionUtils.isNotEmpty(userSet)) {
userList = lhpdsSysUserRepo.getUserByAccountIdList(new ArrayList<>(userSet)); userList = lhpdsSysUserRepo.getUserByAccountIdList(new ArrayList<>(userSet));
} }
Map<String,String> userNameMap = userList.stream().collect( Map<String, String> userNameMap = userList.stream().collect(
Collectors.toMap(LhpdsSysUser::getAccountId, LhpdsSysUser::getNickname,(key1,key2)->key2)); Collectors.toMap(LhpdsSysUser::getAccountId, LhpdsSysUser::getNickname,
(key1, key2) -> key2));
//查询任务id //查询任务id
List<WorkflowProcessInstanceTaskAssignee> taskAssigneeList = new ArrayList<>(); List<WorkflowProcessInstanceTaskAssignee> taskAssigneeList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(processInstanceIdSet)){ if (CollectionUtils.isNotEmpty(processInstanceIdSet)) {
taskAssigneeList = taskAssigneeRepo.getByInstanceIds(new ArrayList<>(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, Collectors.toMap(WorkflowProcessInstanceTaskAssignee::getProcessInstanceId,
WorkflowProcessInstanceTaskAssignee::getTaskId,(key1,key2)->key2)); WorkflowProcessInstanceTaskAssignee::getTaskId, (key1, key2) -> key2));
List<ThirdWorkOrderVo> resultList = new ArrayList<>(); List<ThirdWorkOrderVo> resultList = new ArrayList<>();
for (Object[] objects : result){ for (Object[] objects : result) {
ThirdWorkOrderVo vo = new ThirdWorkOrderVo(); ThirdWorkOrderVo vo = new ThirdWorkOrderVo();
vo.setId(Long.parseLong(objects[0].toString())); vo.setId(Long.parseLong(objects[0].toString()));
if (objects[1] != null){ if (objects[1] != null) {
String name = userNameMap.get(objects[1].toString()); 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); vo.setCreateUser(name);
} }
if (objects[2] != null){ if (objects[2] != null) {
String name = userNameMap.get(objects[2].toString()); 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); vo.setAcceptUser(name);
} }
if (objects[3] != null){ if (objects[3] != null) {
vo.setOrderId(objects[3].toString()); vo.setOrderId(objects[3].toString());
} }
if (objects[4] != null){ if (objects[4] != null) {
vo.setProblemDesc(objects[4].toString()); vo.setProblemDesc(objects[4].toString());
} }
if (objects[5] != null){ if (objects[5] != null) {
vo.setProcessInstanceId(objects[5].toString()); vo.setProcessInstanceId(objects[5].toString());
} }
if (objects[6] != null){ if (objects[6] != null) {
vo.setPriority(objects[6].toString()); vo.setPriority(objects[6].toString());
} }
if (objects[7] != null){ if (objects[7] != null) {
vo.setStatus(objects[7].toString()); vo.setStatus(objects[7].toString());
} }
if (objects[8] != null){ if (objects[8] != null) {
vo.setProcessDefinitionId(objects[8].toString()); vo.setProcessDefinitionId(objects[8].toString());
} }
if (objects[9] != null){ if (objects[9] != null) {
vo.setRealContact(objects[9].toString()); vo.setRealContact(objects[9].toString());
} }
if (objects[10] != null) {
vo.setCreateTime(objects[10].toString());
}
vo.setTaskId(taskAssigneeMap.get(vo.getProcessInstanceId())); vo.setTaskId(taskAssigneeMap.get(vo.getProcessInstanceId()));
resultList.add(vo); resultList.add(vo);
} }
Map<String,Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("total",Integer.parseInt(count.toString())); map.put("total", Integer.parseInt(count.toString()));
map.put("records",resultList); map.put("records", resultList);
return JsonResult.buildSuccessResult("查询成功",map); 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