Commit 15328f33 authored by yajun.zhang's avatar yajun.zhang

查询三方工单

parent cd461d13
package cn.quantgroup.customer.rest;
import cn.quantgroup.customer.model.workorder.WorkOrderStatus;
import cn.quantgroup.customer.rest.param.thirdworkorder.WorkOrderParam;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.service.IThirdWorkOrderService;
import cn.quantgroup.customer.service.IWorkOrderService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: 三方系统工单查询
* @create: 2024-03-25
*/
@Slf4j
@RestController
@RequestMapping("user")
public class ThirdWorkOrderRest {
@Autowired
private IThirdWorkOrderService thirdWorkOrderService;
@PostMapping("/list")
public JsonResult list(@RequestBody WorkOrderParam param) {
return thirdWorkOrderService.queryWorkOrder(param);
}
}
package cn.quantgroup.customer.rest.param.thirdworkorder;
import lombok.Data;
/**
* @author yajun.zhang
* @version 2024/3/25
*/
@Data
public class WorkOrderParam {
private Integer pageNo =1;
private Integer pageSize=10;
private Long id;
private String processInstanceId;
private String orderId;
private String createUser;
private String acceptUser;
private String priority;
private String status;
}
package cn.quantgroup.customer.rest.vo.thirdworkorder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ThirdWorkOrderVo {
//小结id
private Long id;
//工单id
private String processInstanceId;
//订单id
private String orderId;
//工单创建人
private String createUser;
//工单受理人
private String acceptUser;
//优先级
private String priority;
//工单状态
private String status;
//问题描述
private String problemDesc;
}
package cn.quantgroup.customer.service;
import cn.quantgroup.customer.rest.param.thirdworkorder.WorkOrderParam;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderVo;
import java.util.Map;
import org.springframework.data.domain.Page;
/**
* @description:
* @author:tao
* @create: 2020-08-14 15:23
*/
public interface IThirdWorkOrderService {
JsonResult<Map<String,Object>> queryWorkOrder(WorkOrderParam param);
}
package cn.quantgroup.customer.service.impl;
import cn.quantgroup.customer.rest.param.thirdworkorder.WorkOrderParam;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderVo;
import cn.quantgroup.customer.service.IThirdWorkOrderService;
import cn.quantgroup.customer.service.IWorkOrderService;
import cn.quantgroup.third.customer.repo.LhpdsCustomer2Repo;
import java.rmi.MarshalledObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
/**
* @description:
* @author:tao
* @create: 2020-08-14 15:24
*/
@Slf4j
@Service
public class ThirdWorkOrderServiceImpl implements IThirdWorkOrderService {
@Autowired
private LhpdsCustomer2Repo customer2Repo;
@Autowired
@Qualifier("entityManagerSecondary")
private EntityManager entityManager;
@Override
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 "
+ "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 (StringUtils.isNotBlank(param.getStatus())){
conditionSql.append("and lwpi.global_state='"+param.getStatus()+"'");
}
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( " limit "+offset+","+param.getPageSize());
Query nativeQuery = entityManager.createNativeQuery(sql.toString());
List<Object[]> result = nativeQuery.getResultList();
Query countQuery = entityManager.createNativeQuery(countSql.toString());
Object count = countQuery.getSingleResult();
List<ThirdWorkOrderVo> resultList = new ArrayList<>();
for (Object[] objects : result){
ThirdWorkOrderVo vo = new ThirdWorkOrderVo();
vo.setId(Long.parseLong(objects[0].toString()));
if (objects[1] != null){
vo.setCreateUser(objects[1].toString());
}
if (objects[2] != null){
vo.setAcceptUser(String.valueOf(objects[2]));
}
if (objects[3] != null){
vo.setOrderId(objects[3].toString());
}
if (objects[4] != null){
vo.setProblemDesc(objects[4].toString());
}
if (objects[5] != null){
vo.setProcessInstanceId(objects[5].toString());
}
if (objects[6] != null){
vo.setPriority(objects[6].toString());
}
if (objects[7] != null){
vo.setStatus(objects[7].toString());
}
resultList.add(vo);
}
Map<String,Object> map = new HashMap<>();
map.put("total",Integer.parseInt(count.toString()));
map.put("records",resultList);
return JsonResult.buildSuccessResult("查询成功",map);
}
}
package cn.quantgroup.third.customer.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Entity
@Table(name = "lhpds_customer_2")
@ToString
@Builder
@Getter
@Setter
@AllArgsConstructor
public class LhpdsCustomer2 {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
// 主键
private Long id;
// 创建时间
private String createTime;
// 修改时间
private String modifiedTime;
// 创建人
private String createUser;
// 修改人
private String modifiedUser;
// 主叫号码
private String callNumber;
// 会话id
private String sessionId;
// 客户id
private String customerId;
// 分配时间
private String distributeTime;
// 公海时间
private String highseasTime;
// 负责人
private String manager;
// 系统标签
private String sysLabel;
// 自定义标签
private String label;
// 回电电话
private String field9;
// 订单号
private String field10;
// 商品渠道
private String field11;
// 商品名称
private String field12;
// 下单时间
private String field13;
// 反馈渠道
private String field14;
// 升级业务类型
private String field15;
// 解决方式
private String field16;
// 小结内容
private String field17;
// 一级分类
private String field18;
// 二级分类
private String field19;
// 三级分类
private String field20;
// 四级分类
private String field21;
// 多文件上传
private String field22;
// 供应商名称
private String field23;
// 工单类型
private String field24;
// 一级分类
private String field25;
// 二级分类
private String field26;
// 三级分类
private String field27;
// 四级分类
private String field28;
// 京东订单ID
private String field29;
// 商品渠道
private String field30;
// 收货人电话
private String field31;
// 商品名称
private String field32;
// 商品名称
private String field33;
// 商品名称
private String field34;
// 升级业务类型
private String field35;
// 升级业务类型
private String field36;
// 时间选择器
private String field37;
// 是否涉及退款
private String field38;
// 用户要求补偿金额(元/券)
private String field39;
// 责任方
private String field40;
// 实际补偿金额(元/券)
private String field41;
// 实际节省金额(元/券)
private String field42;
// 是否在48h解决
private String field43;
// 是否48h解决
private String field44;
// 未在48h解决原因
private String field45;
// 48h未解决原因
private String field46;
// 是否在首响范围内
private String field47;
// 未在首响范围内原因
private String field48;
// 是否涉及退款
private String field49;
// 一级
private String field50;
// 二级
private String field51;
// 是否在首响范围内
private String field52;
// 是否48h解决
private String field53;
// 是否48h解决
private String field54;
// 未48h解决原因
private String field55;
// 商品品类
private String field56;
// 订单金额
private String field57;
}
package cn.quantgroup.third.customer.entity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Entity
@Table(name = "lhpds_sys_user")
@ToString
@Builder
@Getter
@Setter
@AllArgsConstructor
public class LhpdsSysUser {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
// 用户编号
private Long id;
// 用户帐号
private String accountId;
// 用户昵称(在线字段)
private String nickname;
// 用户姓名
private String username;
// 用户密码
private String password;
// 盐值
private String field11;
private String salt;
// 用户类型(1-普通用户 2-在线用户 3-坐席用户 4-在线+坐席)
private Integer userType;
// 用户等级(在线字段 取值1-5)
private Integer level;
// 创建时间
private Date createTime;
// 创建人员
private String createUser;
// 更新时间
private Date updateTime;
// 更新人员
private String updateUser;
// 是否首次登录(默认为0 0-首次登录 1-不是首次登录)
private Integer isFirstLogin;
// 错误密码次数(默认值为0)
private Integer loginFailCount;
// 登录超限锁定时间
private Date loginLockingTime;
// 最大同时会话量(在线字段 取值0-100)
private Integer maxCurrentSessionCount;
// 状态(默认为0,0-启用 1-禁用 2-删除)
private Integer status;
// 预留字段01 to field20
private String field01;
private String field02;
private String field03;
private String field04;
private String field05;
private String field06;
private String field07;
private String field08;
private String field09;
private String field10;
private String field12;
private String field13;
private String field14;
private String field15;
private String field16;
private String field17;
private String field18;
private String field19;
private String field20;
// Constructors, getters, and setters
}
package cn.quantgroup.third.customer.entity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Entity
@Table(name = "lhpds_workflow_process_instance")
@ToString
@Builder
@Getter
@Setter
@AllArgsConstructor
public class WorkflowProcessInstance {
@Id
@Column(name = "process_instance_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
// 主键
private String processInstanceId;
// 流程定义id
private String processDefinitionId;
// 子母工单状态,0-普通工单,1-母工单,2-子工单
private Integer parentChildrenType;
// 是否关闭,0-否,1-是
private Integer isClosed;
// 工单状态
private String globalState;
// 优先级
private String priority;
// 来源
private String source;
// 工单创建人
private String createUser;
// 工单创建时间
private Date createTime;
// 工单最后修改人
private String modifiedUser;
// 工单最后修改时间
private Date modifiedTime;
// 工单关闭人
private String closeUser;
// 工单关闭时间
private Date closeTime;
// 会话id
private String sessionId;
// 客户联系方式
private String contact;
// 业务分类id
private String templateGroupId;
// 业务类型id
private String templateId;
// 数据id
private String dataId;
// 排序id
private String sortId;
// 工单编号
private String orderId;
// Getters and setters for all fields
}
package cn.quantgroup.third.customer.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Entity
@Table(name = "lhpds_workflow_process_instance_task_assignee")
@ToString
@Builder
@Getter
@Setter
@AllArgsConstructor
public class WorkflowProcessInstanceTaskAssignee {
@Id
@Column(name = "process_instance_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
// 流程实例id
private String processInstanceId;
// 任务id
private String taskId;
// 受理人
private String assignee;
// 任务状态
private String taskState;
// 任务名称
private String taskName;
// 状态
private int state;
}
package cn.quantgroup.third.customer.repo;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderVo;
import cn.quantgroup.third.customer.entity.LhpdsCustomer2;
import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
public interface LhpdsCustomer2Repo extends JpaRepository<LhpdsCustomer2, Long> , JpaSpecificationExecutor<LhpdsCustomer2> {
/* @Query(value = "SELECT new cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderVo (lc.id,lwpi.processInstanceId,lc.field10,lc.createUser,"
+ "assignee.assignee,lwpi.priority,lwpi.global_state,lc.field17)"
+ "FROM LhpdsCustomer2 lc left join WorkflowProcessInstance lwpi on lc .id =lwpi.dataId "
+ "left join WorkflowProcessInstanceTaskAssignee assignee "
+ "on lwpi.processInstanceId = assignee.processInstanceId and assignee.taskName ='处理工单' and assignee.state =0", nativeQuery = true)
Page<ThirdWorkOrderVo> findWorkOrder(String a,Pageable pageable);
*/
/* @Query(value = "SELECT new cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderVo ()"
+ "lc.id,lc.create_user,assignee.assignee ,lc.field10 orderId,lc.field17 problemDesc,lwpi.process_instance_id ,lwpi.priority ,lwpi.global_state "
+ "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", nativeQuery = true)
Page<ThirdWorkOrderVo> findWorkOrder(String a,Pageable pageable);*/
}
package cn.quantgroup.third.customer.repo;
import cn.quantgroup.customer.rest.vo.thirdworkorder.ThirdWorkOrderVo;
import cn.quantgroup.third.customer.entity.LhpdsCustomer2;
import cn.quantgroup.third.customer.entity.WorkflowProcessInstance;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
public interface WorkflowProcessInstanceRepo extends JpaRepository<WorkflowProcessInstance, Long> , JpaSpecificationExecutor<WorkflowProcessInstance> {
}
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