|
|
@@ -16,47 +16,23 @@
|
|
|
*/
|
|
|
package org.springblade.land.controller;
|
|
|
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
-import org.springblade.client.constant.LandConstant;
|
|
|
-import org.springblade.client.entity.CorpsDesc;
|
|
|
-import org.springblade.client.entity.FeesDesc;
|
|
|
-import org.springblade.client.entity.LandVehicle;
|
|
|
-import org.springblade.client.feign.ICorpsDescClient;
|
|
|
-import org.springblade.client.feign.IFeesDescClient;
|
|
|
-import org.springblade.client.feign.ILandVehicleClient;
|
|
|
import org.springblade.core.boot.ctrl.BladeController;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
-import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
-import org.springblade.core.tool.utils.CollectionUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
-import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
-import org.springblade.core.tool.utils.StringUtil;
|
|
|
import org.springblade.land.entity.Order;
|
|
|
-import org.springblade.land.entity.OrderAddress;
|
|
|
-import org.springblade.land.entity.OrderFee;
|
|
|
-import org.springblade.land.entity.OrderItem;
|
|
|
-import org.springblade.land.service.IOrderAddressService;
|
|
|
-import org.springblade.land.service.IOrderFeeService;
|
|
|
-import org.springblade.land.service.IOrderItemService;
|
|
|
import org.springblade.land.service.IOrderService;
|
|
|
import org.springblade.land.vo.OrderVO;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.validation.Valid;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 陆运订单表 控制器
|
|
|
@@ -72,18 +48,6 @@ public class OrderController extends BladeController {
|
|
|
|
|
|
private final IOrderService orderService;
|
|
|
|
|
|
- private final IOrderItemService orderItemService;
|
|
|
-
|
|
|
- private final IOrderAddressService orderAddressService;
|
|
|
-
|
|
|
- private final IOrderFeeService orderFeeService;
|
|
|
-
|
|
|
- private final ICorpsDescClient corpsDescClient;
|
|
|
-
|
|
|
- private final ILandVehicleClient landVehicleClient;
|
|
|
-
|
|
|
- private final IFeesDescClient feesDescClient;
|
|
|
-
|
|
|
/**
|
|
|
* 详情
|
|
|
*/
|
|
|
@@ -91,67 +55,7 @@ public class OrderController extends BladeController {
|
|
|
@ApiOperationSupport(order = 1)
|
|
|
@ApiOperation(value = "详情", notes = "传入order")
|
|
|
public R<Order> detail(Order order) {
|
|
|
- Order detail = orderService.getById(order.getId());
|
|
|
- if (ObjectUtil.isEmpty(detail)) {
|
|
|
- return R.data(detail);
|
|
|
- }
|
|
|
-
|
|
|
- if (!ObjectUtil.isEmpty(detail.getCorpId())) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(detail.getCorpId());
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- detail.setCorpName(corpMessage.getData().getCname());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- List<OrderItem> orderItemList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
|
|
|
- .eq(OrderItem::getOrderId, order.getId())
|
|
|
- .eq(OrderItem::getKind, order.getKind())
|
|
|
- .eq(OrderItem::getIsDeleted, 0)
|
|
|
- );
|
|
|
- orderItemList.forEach(orderItem -> {
|
|
|
- if (ObjectUtil.isNotEmpty(orderItem.getFleetId())) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(orderItem.getFleetId());
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- orderItem.setFleetName(corpMessage.getData().getCname());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (ObjectUtil.isNotEmpty(orderItem.getVehicleId())) {
|
|
|
- LandVehicle vehicle = landVehicleClient.getVehicle(orderItem.getVehicleId());
|
|
|
- orderItem.setPlateNo(vehicle.getPlateNo());
|
|
|
- orderItem.setDriverName(vehicle.getDriverName());
|
|
|
- orderItem.setTel(vehicle.getTel());
|
|
|
- }
|
|
|
- });
|
|
|
- detail.setOrderItemList(orderItemList);
|
|
|
-
|
|
|
- List<OrderAddress> orderAddressList = orderAddressService.list(new LambdaQueryWrapper<OrderAddress>()
|
|
|
- .eq(OrderAddress::getOrderId, order.getId())
|
|
|
- .eq(OrderAddress::getIsDeleted, 0)
|
|
|
- );
|
|
|
- detail.setOrderAddressList(orderAddressList);
|
|
|
-
|
|
|
- List<OrderFee> orderFeeList = orderFeeService.list(new LambdaQueryWrapper<OrderFee>()
|
|
|
- .eq(OrderFee::getOrderId, order.getId())
|
|
|
- .eq(OrderFee::getIsDeleted, 0)
|
|
|
- );
|
|
|
- orderFeeList.forEach(orderFee -> {
|
|
|
- if (!ObjectUtil.isEmpty(orderFee.getCorpId())) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(orderFee.getCorpId());
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- orderFee.setCorpName(corpMessage.getData().getCname());
|
|
|
- }
|
|
|
- }
|
|
|
- if (!ObjectUtil.isEmpty(orderFee.getFeeId())) {
|
|
|
- R<FeesDesc> feesMessage = feesDescClient.detail(orderFee.getFeeId());
|
|
|
- if (feesMessage.isSuccess() && feesMessage.getData() != null) {
|
|
|
- orderFee.setFeeName(feesMessage.getData().getCname());
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- detail.setOrderFeeList(orderFeeList);
|
|
|
-
|
|
|
- return R.data(detail);
|
|
|
+ return R.data(orderService.getDetail(order));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -161,178 +65,7 @@ public class OrderController extends BladeController {
|
|
|
@ApiOperationSupport(order = 2)
|
|
|
@ApiOperation(value = "分页", notes = "传入order")
|
|
|
public R<IPage<Order>> list(Order order, Query query) {
|
|
|
- String role = AuthUtil.getUserRole();
|
|
|
-
|
|
|
- LambdaQueryWrapper<Order> orderQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
-
|
|
|
- Integer itemStatus = order.getItemStatus();
|
|
|
- List<Long> orderIdList = Collections.emptyList();
|
|
|
- if (ObjectUtil.isNotEmpty(itemStatus)) {
|
|
|
- orderIdList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
|
|
|
- .select(OrderItem::getOrderId)
|
|
|
- .eq(itemStatus != 999, OrderItem::getStatus, itemStatus)
|
|
|
- .eq(itemStatus != 999,OrderItem::getKind, 2)
|
|
|
- .eq(itemStatus == 999,OrderItem::getKind, 1)
|
|
|
- .eq(OrderItem::getIsDeleted, 0)
|
|
|
- .eq(OrderItem::getTenantId, AuthUtil.getTenantId())
|
|
|
- .groupBy(OrderItem::getOrderId)
|
|
|
- ).stream().map(OrderItem::getOrderId).collect(Collectors.toList());
|
|
|
-
|
|
|
- if (CollectionUtil.isEmpty(orderIdList)) {
|
|
|
- return R.data(new Page<>());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (StringUtil.isNotBlank(order.getAddressDetail())) {
|
|
|
- orderIdList = orderAddressService.list(new LambdaQueryWrapper<OrderAddress>()
|
|
|
- .select(OrderAddress::getOrderId)
|
|
|
- .in(CollectionUtil.isNotEmpty(orderIdList), OrderAddress::getOrderId, orderIdList)
|
|
|
- .like(OrderAddress::getAddress, order.getAddressDetail())
|
|
|
- .eq(OrderAddress::getIsDeleted, 0)
|
|
|
- .groupBy(OrderAddress::getOrderId)
|
|
|
- ).stream().map(OrderAddress::getOrderId).collect(Collectors.toList());
|
|
|
-
|
|
|
- if (CollectionUtil.isEmpty(orderIdList)) {
|
|
|
- return R.data(new Page<>());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- orderQueryWrapper.in(CollectionUtil.isNotEmpty(orderIdList), Order::getId, orderIdList)
|
|
|
- .eq(ObjectUtil.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId())
|
|
|
- .eq(ObjectUtil.isNotEmpty(itemStatus) && itemStatus == 999, Order::getStatus, 0)
|
|
|
- .like(StringUtil.isNotBlank(order.getBillNo()), Order::getBillNo, order.getBillNo())
|
|
|
- .like(StringUtil.isNotBlank(order.getGoods()), Order::getGoods, order.getGoods())
|
|
|
- .like(StringUtil.isNotBlank(order.getBelongCompany()), Order::getBelongCompany, order.getBelongCompany())
|
|
|
- .like(StringUtil.isNotBlank(order.getStation()), Order::getStation, order.getStation())
|
|
|
- .like(StringUtil.isNotBlank(order.getFactory()), Order::getFactory, order.getFactory())
|
|
|
- .between(StringUtil.isNotBlank(order.getBeginArrivalTime()) && StringUtil.isNotBlank(order.getEndArrivalTime()), Order::getArrivalTime, order.getBeginArrivalTime(), order.getEndArrivalTime())
|
|
|
- .between(StringUtil.isNotBlank(order.getBeginCrateTime()) && StringUtil.isNotBlank(order.getEndCrateTime()), Order::getCreateTime, order.getBeginCrateTime(), order.getEndCrateTime())
|
|
|
- .eq(Order::getIsDeleted, 0)
|
|
|
- .eq(Order::getTenantId, AuthUtil.getTenantId());
|
|
|
-
|
|
|
- if (order.getKind() == 1) {
|
|
|
- orderQueryWrapper.orderByDesc(Order::getCreateTime);
|
|
|
- if (role.contains(LandConstant.CORP_ROLE)) {
|
|
|
- if (role.contains(LandConstant.LAND_OPERATOR)) {
|
|
|
- orderQueryWrapper.eq(Order::getCreateUser, AuthUtil.getUserId());
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (order.getKind() == 2) {
|
|
|
- orderQueryWrapper.orderByDesc(Order::getUpdateTime);
|
|
|
- orderQueryWrapper.eq(Order::getStatus, 1);
|
|
|
- if (role.contains(LandConstant.LAND_OPERATOR)) {
|
|
|
- orderQueryWrapper.like(Order::getAdminProfiles, AuthUtil.getUserId());
|
|
|
- }
|
|
|
- } else {
|
|
|
- return R.fail("参数异常");
|
|
|
- }
|
|
|
-
|
|
|
- IPage<Order> pages = orderService.page(Condition.getPage(query), orderQueryWrapper);
|
|
|
- pages.getRecords().forEach(record -> {
|
|
|
- if (!ObjectUtil.isEmpty(record.getCorpId())) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(record.getCorpId());
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- record.setCorpName(corpMessage.getData().getCname());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 列表箱量显示处理
|
|
|
- if (record.getStatus() == 0) {
|
|
|
- List<OrderItem> itemList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
|
|
|
- .eq(OrderItem::getOrderId, record.getId())
|
|
|
- .eq(OrderItem::getKind, 1)
|
|
|
- .eq(OrderItem::getIsDeleted, 0));
|
|
|
-
|
|
|
- if (CollectionUtil.isNotEmpty(itemList)) {
|
|
|
- StringBuilder ctnDetail = new StringBuilder();
|
|
|
- Integer statusCount = 0;
|
|
|
- for (OrderItem item : itemList) {
|
|
|
- ctnDetail.append(item.getCtnType()).append("×").append(item.getCtnQuantity()).append(",");
|
|
|
- statusCount += item.getCtnQuantity();
|
|
|
- }
|
|
|
- if (ctnDetail.length() > 0) {
|
|
|
- record.setCtnDetail(ctnDetail.deleteCharAt(ctnDetail.lastIndexOf(",")).toString());
|
|
|
- }
|
|
|
- record.setItemStatusDetail("未提交(" + statusCount + ")");
|
|
|
- }
|
|
|
- } else {
|
|
|
- List<OrderItem> itemList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
|
|
|
- .eq(OrderItem::getOrderId, record.getId())
|
|
|
- .eq(OrderItem::getKind, 2)
|
|
|
- .eq(OrderItem::getIsDeleted, 0));
|
|
|
-
|
|
|
- if (CollectionUtil.isNotEmpty(itemList)) {
|
|
|
- // 全部
|
|
|
- Map<String, Long> ctnMap = itemList.stream().collect(Collectors.groupingBy(OrderItem::getCtnType, Collectors.counting()));
|
|
|
- StringBuilder ctnDetail = new StringBuilder();
|
|
|
- for (Map.Entry<String, Long> entry : ctnMap.entrySet()) {
|
|
|
- ctnDetail.append(entry.getKey()).append("×").append(entry.getValue()).append(",");
|
|
|
- }
|
|
|
- if (ctnDetail.length() > 0) {
|
|
|
- record.setCtnDetail(ctnDetail.deleteCharAt(ctnDetail.lastIndexOf(",")).toString());
|
|
|
- }
|
|
|
-
|
|
|
- // 已派
|
|
|
- Map<String, Long> dispatchCtnMap = itemList.stream().filter(item -> item.getStatus() == 1).collect(Collectors.groupingBy(OrderItem::getCtnType, Collectors.counting()));
|
|
|
- StringBuilder dispatchCtnDetail = new StringBuilder();
|
|
|
- for (Map.Entry<String, Long> entry : dispatchCtnMap.entrySet()) {
|
|
|
- dispatchCtnDetail.append(entry.getKey()).append("×").append(entry.getValue()).append(",");
|
|
|
- }
|
|
|
- if (dispatchCtnDetail.length() > 0) {
|
|
|
- record.setDispatchCtnDetail(dispatchCtnDetail.deleteCharAt(dispatchCtnDetail.lastIndexOf(",")).toString());
|
|
|
- }
|
|
|
-
|
|
|
- // 受理
|
|
|
- Map<String, Long> sendCtnMap = itemList.stream().filter(item -> item.getStatus() == 2).collect(Collectors.groupingBy(OrderItem::getCtnType, Collectors.counting()));
|
|
|
- StringBuilder sendCtnDetail = new StringBuilder();
|
|
|
- for (Map.Entry<String, Long> entry : sendCtnMap.entrySet()) {
|
|
|
- sendCtnDetail.append(entry.getKey()).append("×").append(entry.getValue()).append(",");
|
|
|
- }
|
|
|
- if (sendCtnDetail.length() > 0) {
|
|
|
- record.setSendCtnDetail(sendCtnDetail.deleteCharAt(sendCtnDetail.lastIndexOf(",")).toString());
|
|
|
- }
|
|
|
-
|
|
|
- // 拼接状态
|
|
|
- long zero = itemList.stream().filter(item -> item.getStatus() == 0).count();
|
|
|
- long one = itemList.stream().filter(item -> item.getStatus() == 1).count();
|
|
|
- long two = itemList.stream().filter(item -> item.getStatus() == 2).count();
|
|
|
- long three = itemList.stream().filter(item -> item.getStatus() == 3).count();
|
|
|
- long four = itemList.stream().filter(item -> item.getStatus() == 4).count();
|
|
|
- String statusDetail = "";
|
|
|
- if (zero > 0) {
|
|
|
- statusDetail += "未调度(" + zero + ");";
|
|
|
- }
|
|
|
- if (one > 0) {
|
|
|
- statusDetail += "未派车(" + one + ");";
|
|
|
- }
|
|
|
- if (two > 0) {
|
|
|
- statusDetail += "未受理(" + two + ");";
|
|
|
- }
|
|
|
- if (three > 0) {
|
|
|
- statusDetail += "未完工(" + three + ");";
|
|
|
- }
|
|
|
- if (four > 0) {
|
|
|
- statusDetail += "工单关闭(" + four + ");";
|
|
|
- }
|
|
|
- record.setItemStatusDetail(statusDetail.substring(0, statusDetail.lastIndexOf(";")));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 拼接地址
|
|
|
- List<OrderAddress> addressList = orderAddressService.list(new LambdaQueryWrapper<OrderAddress>()
|
|
|
- .eq(OrderAddress::getOrderId, record.getId())
|
|
|
- .eq(OrderAddress::getIsDeleted, 0)
|
|
|
- .orderByAsc(OrderAddress::getSort)
|
|
|
- );
|
|
|
- StringBuilder addressDetail = new StringBuilder();
|
|
|
- for (OrderAddress address : addressList) {
|
|
|
- addressDetail.append(address.getSort()).append(":").append(address.getCorpName()).append("——").append(address.getAddress()).append(";\n");
|
|
|
- }
|
|
|
- if (addressDetail.length() > 0) {
|
|
|
- record.setAddressDetail(addressDetail.deleteCharAt(addressDetail.lastIndexOf(";")).toString());
|
|
|
- }
|
|
|
- });
|
|
|
- return R.data(pages);
|
|
|
+ return R.data(orderService.getList(order, query));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -342,69 +75,7 @@ public class OrderController extends BladeController {
|
|
|
@ApiOperationSupport(order = 2)
|
|
|
@ApiOperation(value = "统计", notes = "传入order")
|
|
|
public R count(Order order) {
|
|
|
- long all = 0;
|
|
|
- long last = 0;
|
|
|
- long zero = 0;
|
|
|
- long one = 0;
|
|
|
- long two = 0;
|
|
|
- long three = 0;
|
|
|
- long four = 0;
|
|
|
-
|
|
|
- String role = AuthUtil.getUserRole();
|
|
|
-
|
|
|
- List<Long> orderIdList;
|
|
|
- LambdaQueryWrapper<Order> orderQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- orderQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(Order::getIsDeleted, 0);
|
|
|
-
|
|
|
- if (order.getKind() == 1) {
|
|
|
- if (role.contains(LandConstant.CORP_ROLE)) {
|
|
|
- if (role.contains(LandConstant.LAND_OPERATOR)) {
|
|
|
- orderQueryWrapper.eq(Order::getCreateUser, AuthUtil.getUserId());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- orderIdList = orderService.list(orderQueryWrapper).stream().filter(orderTemp -> orderTemp.getStatus() == 0).map(Order::getId).collect(Collectors.toList());
|
|
|
- if (CollectionUtil.isNotEmpty(orderIdList)) {
|
|
|
- List<OrderItem> itemList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
|
|
|
- .in(OrderItem::getOrderId, orderIdList)
|
|
|
- .eq(OrderItem::getKind, 1)
|
|
|
- .eq(OrderItem::getIsDeleted, 0));
|
|
|
-
|
|
|
- last += itemList.stream().mapToInt(OrderItem::getCtnQuantity).sum();
|
|
|
- }
|
|
|
- } else if (order.getKind() == 2) {
|
|
|
- if (role.contains(LandConstant.LAND_OPERATOR)) {
|
|
|
- orderQueryWrapper.like(Order::getAdminProfiles, AuthUtil.getUserId());
|
|
|
- }
|
|
|
- } else {
|
|
|
- return R.fail("参数异常");
|
|
|
- }
|
|
|
-
|
|
|
- orderIdList = orderService.list(orderQueryWrapper).stream().filter(orderTemp -> orderTemp.getStatus() == 1).map(Order::getId).collect(Collectors.toList());
|
|
|
- if (CollectionUtil.isNotEmpty(orderIdList)) {
|
|
|
- List<OrderItem> itemList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
|
|
|
- .in(OrderItem::getOrderId, orderIdList)
|
|
|
- .eq(OrderItem::getKind, 2)
|
|
|
- .eq(OrderItem::getIsDeleted, 0));
|
|
|
-
|
|
|
- all = itemList.size();
|
|
|
- zero = itemList.stream().filter(item -> item.getStatus() == 0).count();
|
|
|
- one = itemList.stream().filter(item -> item.getStatus() == 1).count();
|
|
|
- two = itemList.stream().filter(item -> item.getStatus() == 2).count();
|
|
|
- three = itemList.stream().filter(item -> item.getStatus() == 3).count();
|
|
|
- four = itemList.stream().filter(item -> item.getStatus() == 4).count();
|
|
|
- }
|
|
|
-
|
|
|
- Map<String, Object> data = new HashMap<>();
|
|
|
- data.put("all", all + last);
|
|
|
- data.put("last", last);
|
|
|
- data.put("zero", zero);
|
|
|
- data.put("one", one);
|
|
|
- data.put("two", two);
|
|
|
- data.put("three", three);
|
|
|
- data.put("four", four);
|
|
|
- return R.data(data);
|
|
|
+ return R.data(orderService.getCount(order));
|
|
|
}
|
|
|
|
|
|
/**
|