Commit 68811cd2 by wangli

mybatisplus to jpa

1 parent f390e67c
package com.dituhui.pea.order.service.impl; package com.dituhui.pea.order.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dao.*; import com.dituhui.pea.order.dao.OrderEventDao;
import com.dituhui.pea.order.dao.OrderInfoDao;
import com.dituhui.pea.order.dto.OrderChangeListDTO; import com.dituhui.pea.order.dto.OrderChangeListDTO;
import com.dituhui.pea.order.dto.WorkbenchSummaryResp; import com.dituhui.pea.order.dto.WorkbenchSummaryResp;
import com.dituhui.pea.order.entity.OrderEventEntity; import com.dituhui.pea.order.entity.OrderEventEntity;
import com.dituhui.pea.order.entity.OrderInfoEntity;
import com.dituhui.pea.order.entity.OrderInfo; import com.dituhui.pea.order.entity.OrderInfo;
import com.dituhui.pea.order.entity.OrderInfoEntity;
import com.dituhui.pea.order.service.WorkbenchService; import com.dituhui.pea.order.service.WorkbenchService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -17,8 +17,15 @@ import org.springframework.data.domain.PageRequest; ...@@ -17,8 +17,15 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
...@@ -28,44 +35,44 @@ public class WorkbenchServiceImpl implements WorkbenchService { ...@@ -28,44 +35,44 @@ public class WorkbenchServiceImpl implements WorkbenchService {
private OrderEventDao orderEventDao; private OrderEventDao orderEventDao;
@Autowired @Autowired
private OrderInfoMPDao orderInfoMPDao; private OrderInfoDao orderInfoDao;
@Autowired @Autowired
private OrderInfoDao orderInfoDao; private EntityManager entityManager;
@Override @Override
public Result<?> getOrderChangeList(OrderChangeListDTO.Request reqDTO) { public Result<?> getOrderChangeList(OrderChangeListDTO.Request reqDTO) {
Pageable pageable = PageRequest.of(reqDTO.getPage() - 1, reqDTO.getSize()); Pageable pageable = PageRequest.of(reqDTO.getPage() - 1, reqDTO.getSize());
Page<OrderEventEntity> page; Page<OrderEventEntity> page;
String levelType = reqDTO.getLevelType(); String levelType = reqDTO.getLevelType();
String levelValue = reqDTO.getLevelValue(); String levelValue = reqDTO.getLevelValue();
Date date = DateUtil.parse(reqDTO.getDate()); Date date = DateUtil.parse(reqDTO.getDate());
if ("cluster".equals(levelType)) { if ("cluster".equals(levelType)) {
page = orderEventDao.findAllByClusterId(levelValue, date, pageable); page = orderEventDao.findAllByClusterId(levelValue, date, pageable);
} else if ("branch".equals(levelType)) { } else if ("branch".equals(levelType)) {
page = orderEventDao.findAllByBranchId(levelValue, date, pageable); page = orderEventDao.findAllByBranchId(levelValue, date, pageable);
} else { } else {
page = orderEventDao.findAllByGroupId(levelValue, date, pageable); page = orderEventDao.findAllByGroupId(levelValue, date, pageable);
} }
List<OrderChangeListDTO.Content> contents = new ArrayList<>(); List<OrderChangeListDTO.Content> contents = new ArrayList<>();
for (OrderEventEntity entity : page.getContent()) { for (OrderEventEntity entity : page.getContent()) {
OrderChangeListDTO.Content content = new OrderChangeListDTO.Content(); OrderChangeListDTO.Content content = new OrderChangeListDTO.Content();
OrderInfoEntity orderInfoEntity = orderInfoDao.getByOrderId(entity.getOrderId()); OrderInfoEntity orderInfoEntity = orderInfoDao.getByOrderId(entity.getOrderId());
content.setOrderId(entity.getOrderId()) content.setOrderId(entity.getOrderId())
.setCustomerName(orderInfoEntity.getName()) .setCustomerName(orderInfoEntity.getName())
.setOperator(entity.getOperator()) .setOperator(entity.getOperator())
.setDescription(entity.getDescription()) .setDescription(entity.getDescription())
.setMemo(entity.getMemo()) .setMemo(entity.getMemo())
.setUpdateTime(entity.getUpdateTime()); .setUpdateTime(entity.getUpdateTime());
contents.add(content); contents.add(content);
} }
OrderChangeListDTO.Result rs = new OrderChangeListDTO.Result(); OrderChangeListDTO.Result rs = new OrderChangeListDTO.Result();
rs.setTotal(page.getTotalElements()) rs.setTotal(page.getTotalElements())
.setPages(page.getTotalPages()) .setPages(page.getTotalPages())
.setPageSize(page.getSize()) .setPageSize(page.getSize())
.setContent(contents); .setContent(contents);
return Result.success(rs); return Result.success(rs);
} }
@Override @Override
public Result<?> getWorkbenchSummary(String levelType, String levelValue, LocalDate dt) { public Result<?> getWorkbenchSummary(String levelType, String levelValue, LocalDate dt) {
...@@ -89,27 +96,95 @@ public class WorkbenchServiceImpl implements WorkbenchService { ...@@ -89,27 +96,95 @@ public class WorkbenchServiceImpl implements WorkbenchService {
} }
private List<Map<String, Object>> queryCountByAppointmentMethod(String levelType, String levelValue, LocalDate dt) { private List<Map<String, Object>> queryCountByAppointmentMethod(String levelType, String levelValue, LocalDate dt) {
QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
wrapper.select("appointment_method, appointment_status, COUNT(*) as count") CriteriaQuery<Object[]> criteriaQuery = criteriaBuilder.createQuery(Object[].class);
.lambda() Root<OrderInfo> root = criteriaQuery.from(OrderInfo.class);
.eq(OrderInfo::getDt, dt)
.eq(levelType.equals("cluster"), OrderInfo::getOrgClusterId, levelValue) criteriaQuery.multiselect(
.eq(levelType.equals("branch"), OrderInfo::getOrgBranchId, levelValue) root.get("appointmentMethod"),
.eq(levelType.equals("group"), OrderInfo::getOrgGroupId, levelValue) root.get("appointmentStatus"),
.groupBy(OrderInfo::getAppointmentMethod, OrderInfo::getAppointmentStatus); criteriaBuilder.count(root).alias("count")
return orderInfoMPDao.selectMaps(wrapper); );
Predicate datePredicate = criteriaBuilder.equal(root.get("dt"), dt);
Predicate levelPredicate = null;
if ("cluster".equals(levelType)) {
levelPredicate = criteriaBuilder.equal(root.get("orgClusterId"), levelValue);
} else if ("branch".equals(levelType)) {
levelPredicate = criteriaBuilder.equal(root.get("orgBranchId"), levelValue);
} else if ("group".equals(levelType)) {
levelPredicate = criteriaBuilder.equal(root.get("orgGroupId"), levelValue);
}
if (levelPredicate != null) {
criteriaQuery.where(datePredicate, levelPredicate);
} else {
criteriaQuery.where(datePredicate);
}
criteriaQuery.groupBy(root.get("appointmentMethod"), root.get("appointmentStatus"));
TypedQuery<Object[]> typedQuery = entityManager.createQuery(criteriaQuery);
List<Object[]> results = typedQuery.getResultList();
List<Map<String, Object>> mappedResults = results.stream()
.map(result -> {
Map<String, Object> map = Map.of(
"appointmentMethod", result[0],
"appointmentStatus", result[1],
"count", result[2]
);
return map;
})
.collect(Collectors.toList());
return mappedResults;
} }
private List<Map<String, Object>> queryCountByOrderStatus(String levelType, String levelValue, LocalDate dt) { public List<Map<String, Object>> queryCountByOrderStatus(String levelType, String levelValue, LocalDate dt) {
QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
wrapper.select("service_status, COUNT(*) as count") CriteriaQuery<Object[]> criteriaQuery = criteriaBuilder.createQuery(Object[].class);
.lambda() Root<OrderInfo> root = criteriaQuery.from(OrderInfo.class);
.eq(OrderInfo::getDt, dt)
.eq(levelType.equals("cluster"), OrderInfo::getOrgClusterId, levelValue) criteriaQuery.multiselect(
.eq(levelType.equals("branch"), OrderInfo::getOrgBranchId, levelValue) root.get("serviceStatus"),
.eq(levelType.equals("group"), OrderInfo::getOrgGroupId, levelValue) criteriaBuilder.count(root).alias("count")
.groupBy(OrderInfo::getServiceStatus); );
return orderInfoMPDao.selectMaps(wrapper);
Predicate datePredicate = criteriaBuilder.equal(root.get("dt"), dt);
Predicate levelPredicate = null;
if ("cluster".equals(levelType)) {
levelPredicate = criteriaBuilder.equal(root.get("orgClusterId"), levelValue);
} else if ("branch".equals(levelType)) {
levelPredicate = criteriaBuilder.equal(root.get("orgBranchId"), levelValue);
} else if ("group".equals(levelType)) {
levelPredicate = criteriaBuilder.equal(root.get("orgGroupId"), levelValue);
}
if (levelPredicate != null) {
criteriaQuery.where(datePredicate, levelPredicate);
} else {
criteriaQuery.where(datePredicate);
}
criteriaQuery.groupBy(root.get("serviceStatus"));
TypedQuery<Object[]> typedQuery = entityManager.createQuery(criteriaQuery);
List<Object[]> results = typedQuery.getResultList();
List<Map<String, Object>> mappedResults = results.stream()
.map(result -> {
Map<String, Object> map = Map.of(
"serviceStatus", result[0],
"count", result[1]
);
return map;
})
.collect(Collectors.toList());
return mappedResults;
} }
private HashMap<String, Long> transAppointmentMethod(List<Map<String, Object>> results) { private HashMap<String, Long> transAppointmentMethod(List<Map<String, Object>> results) {
...@@ -211,12 +286,10 @@ public class WorkbenchServiceImpl implements WorkbenchService { ...@@ -211,12 +286,10 @@ public class WorkbenchServiceImpl implements WorkbenchService {
return items; return items;
} }
private <T> HashMap<String, List<T>> packParams(String key, T ...values) { private <T> HashMap<String, List<T>> packParams(String key, T... values) {
HashMap<String, List<T>> map = new HashMap<>(); HashMap<String, List<T>> map = new HashMap<>();
List<T> value = new ArrayList<>(); List<T> value = new ArrayList<>();
for(T v: values){ Collections.addAll(value, values);
value.add(v);
}
map.put(key, value); map.put(key, value);
return map; return map;
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!