Browse Source

Merge remote-tracking branch 'origin/dev' into dev

lazhaoqian 3 years ago
parent
commit
99d17d26a3
16 changed files with 678 additions and 530 deletions
  1. 5 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/constant/LandConstant.java
  2. 27 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICommonFileClient.java
  3. 9 0
      blade-service-api/blade-land-api/pom.xml
  4. 45 3
      blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/Order.java
  5. 28 0
      blade-service/blade-client/src/main/java/org/springblade/client/common/controller/CommonFileController.java
  6. 8 0
      blade-service/blade-client/src/main/java/org/springblade/client/common/service/ICommonFileService.java
  7. 20 0
      blade-service/blade-client/src/main/java/org/springblade/client/common/service/impl/CommonFileServiceImpl.java
  8. 3 1
      blade-service/blade-client/src/main/java/org/springblade/client/land/controller/LandDriverController.java
  9. 9 3
      blade-service/blade-client/src/main/java/org/springblade/client/land/controller/LandVehicleController.java
  10. 3 332
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderController.java
  11. 2 178
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderItemController.java
  12. 21 2
      blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderItemService.java
  13. 27 0
      blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderService.java
  14. 147 2
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderItemServiceImpl.java
  15. 323 8
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java
  16. 1 1
      blade-service/blade-system/src/main/java/org/springblade/system/controller/RegionController.java

+ 5 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/constant/LandConstant.java

@@ -8,6 +8,11 @@ package org.springblade.client.constant;
 public interface LandConstant {
 
 	/**
+	 * 陆运订单
+	 */
+	String ORDER = "LAND_ORDER";
+
+	/**
 	 * 陆运车队
 	 */
 	String FLEET = "BASIC_LAND_FLEET";

+ 27 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICommonFileClient.java

@@ -0,0 +1,27 @@
+package org.springblade.client.feign;
+
+import org.springblade.client.entity.CommonFile;
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+@FeignClient(
+	value = LauncherConstant.APPLICATION_CLIENT_NAME
+)
+public interface ICommonFileClient {
+	String API_PREFIX = "/common-file";
+	String GET_LIST = API_PREFIX + "/get-list";
+	String SAVE_LIST = API_PREFIX + "/save-list";
+
+	@GetMapping(GET_LIST)
+	R<List<CommonFile>> getList(Long pid, String source);
+
+	@PostMapping(SAVE_LIST)
+	R saveList(@RequestBody List<CommonFile> fileList);
+
+}

+ 9 - 0
blade-service-api/blade-land-api/pom.xml

@@ -14,4 +14,13 @@
     <version>2.8.2.RELEASE</version>
     <packaging>jar</packaging>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-client-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
 </project>

+ 45 - 3
blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/Order.java

@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springblade.client.entity.CommonFile;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
@@ -91,6 +92,42 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "货物")
 	private String goods;
 	/**
+	 * 订舱代理
+	 */
+	@ApiModelProperty(value = "订舱代理")
+	private Long agentId;
+	/**
+	 * 起运港
+	 */
+	@ApiModelProperty(value = "起运港")
+	private Long polId;
+	/**
+	 * 目的港
+	 */
+	@ApiModelProperty(value = "目的港")
+	private Long podId;
+	/**
+	 * 开船日期
+	 */
+	@ApiModelProperty(value = "开船日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date etd;
+	/**
+	 * 截关日期
+	 */
+	@ApiModelProperty(value = "截关日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date etc;
+	/**
+	 * 截单日期
+	 */
+	@ApiModelProperty(value = "截单日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date siCutoffDate;
+	/**
 	 * 状态(待补充)
 	 */
 	@ApiModelProperty(value = "状态(待补充)")
@@ -106,6 +143,11 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "分管员")
 	private String adminProfiles;
 	/**
+	 * 地址
+	 */
+	@ApiModelProperty(value = "地址")
+	private String addressDetail;
+	/**
 	 * 租户
 	 */
 	@ApiModelProperty(value = "租户")
@@ -150,6 +192,9 @@ public class Order implements Serializable {
 	private List<OrderFee> orderFeeList;
 
 	@TableField(exist = false)
+	private List<CommonFile> fileList;
+
+	@TableField(exist = false)
 	private Integer kind;
 
 	@TableField(exist = false)
@@ -171,9 +216,6 @@ public class Order implements Serializable {
 	private String itemStatusDetail;
 
 	@TableField(exist = false)
-	private String addressDetail;
-
-	@TableField(exist = false)
 	private String beginArrivalTime;
 
 	@TableField(exist = false)

+ 28 - 0
blade-service/blade-client/src/main/java/org/springblade/client/common/controller/CommonFileController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.client.common.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
@@ -28,11 +29,13 @@ import org.springblade.client.vo.CommonFileVO;
 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.Func;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 公共文件表 控制器
@@ -71,6 +74,21 @@ public class CommonFileController extends BladeController {
 	}
 
 	/**
+	 * 列表 公共文件表
+	 */
+	@GetMapping("/get-list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入commonFile")
+	public R<List<CommonFile>> getList(Long pid, String source) {
+		return R.data(commonFileService.list(new LambdaQueryWrapper<CommonFile>()
+			.eq(CommonFile::getPid, pid)
+			.eq(CommonFile::getSource, source)
+			.eq(CommonFile::getTenantId, AuthUtil.getTenantId())
+			.eq(CommonFile::getIsDeleted, 0)
+		));
+	}
+
+	/**
 	 * 自定义分页 公共文件表
 	 */
 	@GetMapping("/page")
@@ -92,6 +110,16 @@ public class CommonFileController extends BladeController {
 	}
 
 	/**
+	 * 新增 公共文件列表
+	 */
+	@PostMapping("/save-list")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入fileList")
+	public R saveList(@RequestBody List<CommonFile> fileList) {
+		return R.status(commonFileService.saveFile(fileList));
+	}
+
+	/**
 	 * 修改 公共文件表
 	 */
 	@PostMapping("/update")

+ 8 - 0
blade-service/blade-client/src/main/java/org/springblade/client/common/service/ICommonFileService.java

@@ -41,6 +41,14 @@ public interface ICommonFileService extends IService<CommonFile> {
 	IPage<CommonFileVO> selectCommonFilePage(IPage<CommonFileVO> page, CommonFileVO commonFile);
 
 	/**
+	 * 保存文件
+	 *
+	 * @param fileList
+	 * @return
+	 */
+	boolean saveFile(List<CommonFile> fileList);
+
+	/**
 	 * 删除文件
 	 *
 	 * @param idList

+ 20 - 0
blade-service/blade-client/src/main/java/org/springblade/client/common/service/impl/CommonFileServiceImpl.java

@@ -20,11 +20,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.client.common.mapper.CommonFileMapper;
 import org.springblade.client.common.service.ICommonFileService;
+import org.springblade.client.constant.LandConstant;
 import org.springblade.client.entity.CommonFile;
 import org.springblade.client.vo.CommonFileVO;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -42,6 +45,23 @@ public class CommonFileServiceImpl extends ServiceImpl<CommonFileMapper, CommonF
 	}
 
 	@Override
+	public boolean saveFile(List<CommonFile> fileList) {
+		fileList.forEach(file -> {
+			if (ObjectUtil.isEmpty(file.getId())) {
+				file.setTenantId(AuthUtil.getTenantId());
+				file.setCreateUser(AuthUtil.getUserId());
+				file.setCreateTime(new Date());
+				baseMapper.insert(file);
+			} else {
+				file.setUpdateUser(AuthUtil.getUserId());
+				file.setUpdateTime(new Date());
+				baseMapper.updateById(file);
+			}
+		});
+		return false;
+	}
+
+	@Override
 	public boolean removeFile(List<Long> idList) {
 		idList.forEach(id -> {
 			CommonFile file = new CommonFile();

+ 3 - 1
blade-service/blade-client/src/main/java/org/springblade/client/land/controller/LandDriverController.java

@@ -93,7 +93,9 @@ public class LandDriverController extends BladeController {
 		pages.getRecords().forEach(record -> {
 			if (ObjectUtil.isNotEmpty(record.getFleetId())) {
 				CorpsDesc fleet = corpsDescService.getById(record.getFleetId());
-				record.setFleetName(fleet.getCname());
+				if (ObjectUtil.isNotEmpty(fleet)) {
+					record.setFleetName(fleet.getCname());
+				}
 			}
 		});
 		return R.data(pages);

+ 9 - 3
blade-service/blade-client/src/main/java/org/springblade/client/land/controller/LandVehicleController.java

@@ -93,7 +93,9 @@ public class LandVehicleController extends BladeController {
 		vehicleChangeList.forEach(vehicleChange -> {
 			if (ObjectUtil.isNotEmpty(vehicleChange.getDriverId())) {
 				LandDriver driver = landDriverService.getById(vehicleChange.getDriverId());
-				vehicleChange.setDriverName(driver.getName());
+				if (ObjectUtil.isNotEmpty(driver)) {
+					vehicleChange.setDriverName(driver.getName());
+				}
 			}
 			if (ObjectUtil.isNotEmpty(vehicleChange.getChangeUser())) {
 				R<User> user = userClient.userInfoById(vehicleChange.getChangeUser());
@@ -119,11 +121,15 @@ public class LandVehicleController extends BladeController {
 		pages.getRecords().forEach(record -> {
 			if (ObjectUtil.isNotEmpty(record.getFleetId())) {
 				CorpsDesc fleet = corpsDescService.getById(record.getFleetId());
-				record.setFleetName(fleet.getCname());
+				if (ObjectUtil.isNotEmpty(fleet)) {
+					record.setFleetName(fleet.getCname());
+				}
 			}
 			if (ObjectUtil.isNotEmpty(record.getDriverId())) {
 				LandDriver driver = landDriverService.getById(record.getDriverId());
-				record.setDriverName(driver.getName());
+				if (ObjectUtil.isNotEmpty(driver)) {
+					record.setDriverName(driver.getName());
+				}
 			}
 		});
 		return R.data(pages);

+ 3 - 332
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderController.java

@@ -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));
 	}
 
 	/**

+ 2 - 178
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderItemController.java

@@ -16,44 +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.LandVehicle;
-import org.springblade.client.feign.ICorpsDescClient;
-import org.springblade.client.feign.ILandDriverClient;
-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.OrderItem;
-import org.springblade.land.service.IOrderAddressService;
 import org.springblade.land.service.IOrderItemService;
-import org.springblade.land.service.IOrderService;
 import org.springblade.land.vo.OrderItemVO;
 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;
 
 /**
  * 陆运订单明细表 控制器
@@ -69,16 +48,6 @@ public class OrderItemController extends BladeController {
 
 	private final IOrderItemService orderItemService;
 
-	private final IOrderService orderService;
-
-	private final IOrderAddressService orderAddressService;
-
-	private final ICorpsDescClient corpsDescClient;
-
-	private final ILandDriverClient landDriverClient;
-
-	private final ILandVehicleClient landVehicleClient;
-
 	/**
 	 * 详情
 	 */
@@ -97,113 +66,7 @@ public class OrderItemController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入orderItem")
 	public R<IPage<OrderItem>> list(OrderItem orderItem, Query query) {
-		String role = AuthUtil.getUserRole();
-
-		List<Long> orderIdList = Collections.emptyList();
-		if (StringUtil.isNotBlank(orderItem.getBillNo()) || StringUtil.isNotBlank(orderItem.getGoods()) || StringUtil.isNotBlank(orderItem.getBelongCompany()) || StringUtil.isNotBlank(orderItem.getStation()) || StringUtil.isNotBlank(orderItem.getFactory())) {
-			orderIdList = orderService.list(new LambdaQueryWrapper<Order>()
-				.like(StringUtil.isNotBlank(orderItem.getBillNo()), Order::getBillNo, orderItem.getBillNo())
-				.like(StringUtil.isNotBlank(orderItem.getGoods()), Order::getGoods, orderItem.getGoods())
-				.like(StringUtil.isNotBlank(orderItem.getBelongCompany()), Order::getBelongCompany, orderItem.getBelongCompany())
-				.like(StringUtil.isNotBlank(orderItem.getStation()), Order::getStation, orderItem.getStation())
-				.like(StringUtil.isNotBlank(orderItem.getFactory()), Order::getFactory, orderItem.getFactory())
-				.between(StringUtil.isNotBlank(orderItem.getBeginArrivalTime()) && StringUtil.isNotBlank(orderItem.getEndArrivalTime()), Order::getArrivalTime, orderItem.getBeginArrivalTime(), orderItem.getEndArrivalTime())
-				.between(StringUtil.isNotBlank(orderItem.getBeginCrateTime()) && StringUtil.isNotBlank(orderItem.getEndCrateTime()), Order::getCreateTime, orderItem.getBeginCrateTime(), orderItem.getEndCrateTime())
-				.eq(Order::getIsDeleted, 0)
-				.eq(Order::getTenantId, AuthUtil.getTenantId())
-			).stream().map(Order::getId).collect(Collectors.toList());
-
-			if (CollectionUtil.isEmpty(orderIdList)) {
-				return R.data(new Page<>());
-			}
-		}
-
-		if (StringUtil.isNotBlank(orderItem.getAddressDetail())) {
-			orderIdList = orderAddressService.list(new LambdaQueryWrapper<OrderAddress>()
-				.select(OrderAddress::getOrderId)
-				.in(CollectionUtil.isNotEmpty(orderIdList), OrderAddress::getOrderId, orderIdList)
-				.like(OrderAddress::getAddress, orderItem.getAddressDetail())
-				.eq(OrderAddress::getIsDeleted, 0)
-				.groupBy(OrderAddress::getOrderId)
-			).stream().map(OrderAddress::getOrderId).collect(Collectors.toList());
-
-			if (CollectionUtil.isEmpty(orderIdList)) {
-				return R.data(new Page<>());
-			}
-		}
-
-		LambdaQueryWrapper<OrderItem> itemQueryWrapper = new LambdaQueryWrapper<>();
-		if (orderItem.getTag() == 4) {
-			itemQueryWrapper.notIn(OrderItem::getStatus, 0, 1);
-		} else if (orderItem.getTag() == 3) {
-			itemQueryWrapper.notIn(OrderItem::getStatus, 0);
-		} else {
-			return R.fail("参数异常");
-		}
-
-		if (role.contains(LandConstant.FLEET_ROLE)) {
-			if (role.contains(LandConstant.LAND_OPERATOR)) {
-				Long fleetId = corpsDescClient.getFleetId(AuthUtil.getUserId());
-				itemQueryWrapper.eq(OrderItem::getFleetId, fleetId);
-			}
-		}
-		if (role.contains(LandConstant.DRIVER_ROLE)) {
-			if (role.contains(LandConstant.LAND_OPERATOR)) {
-				Long driverId = landDriverClient.getDriverId(AuthUtil.getUserId());
-				itemQueryWrapper.eq(OrderItem::getDriverId, driverId);
-			}
-		}
-
-		itemQueryWrapper.in(CollectionUtil.isNotEmpty(orderIdList), OrderItem::getOrderId, orderIdList)
-			.like(StringUtil.isNotBlank(orderItem.getTel()), OrderItem::getTel, orderItem.getTel())
-			.like(StringUtil.isNotBlank(orderItem.getCtnNo()), OrderItem::getCtnNo, orderItem.getCtnNo())
-			.eq(ObjectUtil.isNotEmpty(orderItem.getFleetId()), OrderItem::getFleetId, orderItem.getFleetId())
-			.eq(ObjectUtil.isNotEmpty(orderItem.getVehicleId()), OrderItem::getVehicleId, orderItem.getVehicleId())
-			.eq(ObjectUtil.isNotEmpty(orderItem.getDriverId()), OrderItem::getDriverId, orderItem.getDriverId())
-			.eq(ObjectUtil.isNotEmpty(orderItem.getStatus()), OrderItem::getStatus, orderItem.getStatus())
-			.eq(OrderItem::getKind, 2)
-			.eq(OrderItem::getIsDeleted, 0)
-			.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
-			.orderByDesc(OrderItem::getUpdateTime);
-		IPage<OrderItem> pages = orderItemService.page(Condition.getPage(query), itemQueryWrapper);
-		pages.getRecords().forEach(record -> {
-			Order order = orderService.getById(record.getOrderId());
-			record.setOrderNo(order.getOrderNo());
-			record.setBelongCompany(order.getBelongCompany());
-			record.setBillNo(order.getBillNo());
-			record.setGoods(order.getGoods());
-			record.setStation(order.getStation());
-			record.setFactory(order.getFactory());
-			record.setArrivalTime(order.getArrivalTime());
-
-			if (ObjectUtil.isNotEmpty(record.getFleetId())) {
-				R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(record.getFleetId());
-				if (corpMessage.isSuccess() && corpMessage.getData() != null) {
-					record.setFleetName(corpMessage.getData().getCname());
-				}
-			}
-
-			if (ObjectUtil.isNotEmpty(record.getVehicleId())) {
-				LandVehicle vehicle = landVehicleClient.getVehicle(record.getVehicleId());
-				record.setPlateNo(vehicle.getPlateNo());
-				record.setDriverName(vehicle.getDriverName());
-			}
-
-			// 拼接地址
-			List<OrderAddress> addressList = orderAddressService.list(new LambdaQueryWrapper<OrderAddress>()
-				.eq(OrderAddress::getOrderId, order.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(orderItemService.getList(orderItem, query));
 	}
 
 	/**
@@ -213,46 +76,7 @@ public class OrderItemController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "统计", notes = "传入orderItem")
 	public R count(OrderItem orderItem) {
-		String role = AuthUtil.getUserRole();
-
-		LambdaQueryWrapper<OrderItem> itemQueryWrapper = new LambdaQueryWrapper<>();
-		if (orderItem.getTag() == 4) {
-			itemQueryWrapper.notIn(OrderItem::getStatus, 0, 1);
-		} else if (orderItem.getTag() == 3) {
-			itemQueryWrapper.notIn(OrderItem::getStatus, 0);
-		} else {
-			return R.fail("参数异常");
-		}
-
-		if (role.contains(LandConstant.FLEET_ROLE)) {
-			if (role.contains(LandConstant.LAND_OPERATOR)) {
-				Long fleetId = corpsDescClient.getFleetId(AuthUtil.getUserId());
-				itemQueryWrapper.eq(OrderItem::getFleetId, fleetId);
-			}
-		}
-		if (role.contains(LandConstant.DRIVER_ROLE)) {
-			if (role.contains(LandConstant.LAND_OPERATOR)) {
-				Long driverId = landDriverClient.getDriverId(AuthUtil.getUserId());
-				itemQueryWrapper.eq(OrderItem::getDriverId, driverId);
-			}
-		}
-		itemQueryWrapper.eq(OrderItem::getKind, 2)
-			.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
-			.eq(OrderItem::getIsDeleted, 0);
-		List<OrderItem> itemList = orderItemService.list(itemQueryWrapper);
-		long all = itemList.size();
-		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();
-
-		Map<String, Object> data = new HashMap<>();
-		data.put("all", all);
-		data.put("one", one);
-		data.put("two", two);
-		data.put("three", three);
-		data.put("four", four);
-		return R.data(data);
+		return R.data(orderItemService.getCount(orderItem));
 	}
 
 	/**

+ 21 - 2
blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderItemService.java

@@ -16,12 +16,14 @@
  */
 package org.springblade.land.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.mp.support.Query;
 import org.springblade.land.entity.OrderItem;
 import org.springblade.land.vo.OrderItemVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 陆运订单明细表 服务类
@@ -41,6 +43,23 @@ public interface IOrderItemService extends IService<OrderItem> {
 	IPage<OrderItemVO> selectOrderItemPage(IPage<OrderItemVO> page, OrderItemVO orderItem);
 
 	/**
+	 * 列表 分页
+	 *
+	 * @param orderItem
+	 * @param query
+	 * @return
+	 */
+	IPage<OrderItem> getList(OrderItem orderItem, Query query);
+
+	/**
+	 * 列表 统计
+	 *
+	 * @param orderItem
+	 * @return
+	 */
+	Map<String, Object> getCount(OrderItem orderItem);
+
+	/**
 	 * 删除订单明细
 	 *
 	 * @param idList

+ 27 - 0
blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderService.java

@@ -18,10 +18,12 @@ package org.springblade.land.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.mp.support.Query;
 import org.springblade.land.entity.Order;
 import org.springblade.land.vo.OrderVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 陆运订单表 服务类
@@ -41,6 +43,31 @@ public interface IOrderService extends IService<Order> {
 	IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order);
 
 	/**
+	 * 详情
+	 *
+	 * @param order
+	 * @return
+	 */
+	Order getDetail(Order order);
+
+	/**
+	 * 列表 分页
+	 *
+	 * @param order
+	 * @param query
+	 * @return
+	 */
+	IPage<Order> getList(Order order, Query query);
+
+	/**
+	 * 列表 统计
+	 *
+	 * @param order
+	 * @return
+	 */
+	Map<String, Object> getCount(Order order);
+
+	/**
 	 * 保存订单
 	 *
 	 * @param order

+ 147 - 2
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderItemServiceImpl.java

@@ -19,10 +19,24 @@ package org.springblade.land.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
+import org.springblade.client.constant.LandConstant;
+import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.LandVehicle;
+import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.ILandDriverClient;
+import org.springblade.client.feign.ILandVehicleClient;
+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.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.OrderChange;
 import org.springblade.land.entity.OrderItem;
 import org.springblade.land.mapper.OrderChangeMapper;
@@ -33,8 +47,8 @@ import org.springblade.land.vo.OrderItemVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 陆运订单明细表 服务实现类
@@ -50,12 +64,143 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 
 	private final OrderChangeMapper orderChangeMapper;
 
+	private final ICorpsDescClient corpsDescClient;
+
+	private final ILandDriverClient landDriverClient;
+
+	private final ILandVehicleClient landVehicleClient;
+
 	@Override
 	public IPage<OrderItemVO> selectOrderItemPage(IPage<OrderItemVO> page, OrderItemVO orderItem) {
 		return page.setRecords(baseMapper.selectOrderItemPage(page, orderItem));
 	}
 
 	@Override
+	public IPage<OrderItem> getList(OrderItem orderItem, Query query) {
+		String role = AuthUtil.getUserRole();
+
+		List<Long> orderIdList = Collections.emptyList();
+		if (StringUtil.isNotBlank(orderItem.getBillNo()) || StringUtil.isNotBlank(orderItem.getGoods()) || StringUtil.isNotBlank(orderItem.getBelongCompany()) || StringUtil.isNotBlank(orderItem.getStation()) || StringUtil.isNotBlank(orderItem.getFactory())) {
+			orderIdList = orderMapper.selectList(new LambdaQueryWrapper<Order>()
+				.like(StringUtil.isNotBlank(orderItem.getBillNo()), Order::getBillNo, orderItem.getBillNo())
+				.like(StringUtil.isNotBlank(orderItem.getGoods()), Order::getGoods, orderItem.getGoods())
+				.like(StringUtil.isNotBlank(orderItem.getBelongCompany()), Order::getBelongCompany, orderItem.getBelongCompany())
+				.like(StringUtil.isNotBlank(orderItem.getStation()), Order::getStation, orderItem.getStation())
+				.like(StringUtil.isNotBlank(orderItem.getFactory()), Order::getFactory, orderItem.getFactory())
+				.like(StringUtil.isNotBlank(orderItem.getAddressDetail()), Order::getAddressDetail, orderItem.getAddressDetail())
+				.between(StringUtil.isNotBlank(orderItem.getBeginArrivalTime()) && StringUtil.isNotBlank(orderItem.getEndArrivalTime()), Order::getArrivalTime, orderItem.getBeginArrivalTime(), orderItem.getEndArrivalTime())
+				.between(StringUtil.isNotBlank(orderItem.getBeginCrateTime()) && StringUtil.isNotBlank(orderItem.getEndCrateTime()), Order::getCreateTime, orderItem.getBeginCrateTime(), orderItem.getEndCrateTime())
+				.eq(Order::getIsDeleted, 0)
+				.eq(Order::getTenantId, AuthUtil.getTenantId())
+			).stream().map(Order::getId).collect(Collectors.toList());
+
+			if (CollectionUtil.isEmpty(orderIdList)) {
+				return new Page<>();
+			}
+		}
+
+		LambdaQueryWrapper<OrderItem> itemQueryWrapper = new LambdaQueryWrapper<>();
+		if (orderItem.getTag() == 4) {
+			itemQueryWrapper.notIn(OrderItem::getStatus, 0, 1);
+		} else if (orderItem.getTag() == 3) {
+			itemQueryWrapper.notIn(OrderItem::getStatus, 0);
+		}
+
+		if (role.contains(LandConstant.FLEET_ROLE)) {
+			if (role.contains(LandConstant.LAND_OPERATOR)) {
+				Long fleetId = corpsDescClient.getFleetId(AuthUtil.getUserId());
+				itemQueryWrapper.eq(OrderItem::getFleetId, fleetId);
+			}
+		}
+		if (role.contains(LandConstant.DRIVER_ROLE)) {
+			if (role.contains(LandConstant.LAND_OPERATOR)) {
+				Long driverId = landDriverClient.getDriverId(AuthUtil.getUserId());
+				itemQueryWrapper.eq(OrderItem::getDriverId, driverId);
+			}
+		}
+
+		itemQueryWrapper.in(CollectionUtil.isNotEmpty(orderIdList), OrderItem::getOrderId, orderIdList)
+			.like(StringUtil.isNotBlank(orderItem.getTel()), OrderItem::getTel, orderItem.getTel())
+			.like(StringUtil.isNotBlank(orderItem.getCtnNo()), OrderItem::getCtnNo, orderItem.getCtnNo())
+			.eq(ObjectUtil.isNotEmpty(orderItem.getFleetId()), OrderItem::getFleetId, orderItem.getFleetId())
+			.eq(ObjectUtil.isNotEmpty(orderItem.getVehicleId()), OrderItem::getVehicleId, orderItem.getVehicleId())
+			.eq(ObjectUtil.isNotEmpty(orderItem.getDriverId()), OrderItem::getDriverId, orderItem.getDriverId())
+			.eq(ObjectUtil.isNotEmpty(orderItem.getStatus()), OrderItem::getStatus, orderItem.getStatus())
+			.eq(OrderItem::getKind, 2)
+			.eq(OrderItem::getIsDeleted, 0)
+			.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
+			.orderByDesc(OrderItem::getUpdateTime);
+		IPage<OrderItem> pages = baseMapper.selectPage(Condition.getPage(query), itemQueryWrapper);
+		pages.getRecords().forEach(record -> {
+			Order order = orderMapper.selectById(record.getOrderId());
+			record.setOrderNo(order.getOrderNo());
+			record.setBelongCompany(order.getBelongCompany());
+			record.setBillNo(order.getBillNo());
+			record.setGoods(order.getGoods());
+			record.setStation(order.getStation());
+			record.setFactory(order.getFactory());
+			record.setArrivalTime(order.getArrivalTime());
+			record.setAddressDetail(order.getAddressDetail());
+
+			if (ObjectUtil.isNotEmpty(record.getFleetId())) {
+				R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(record.getFleetId());
+				if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+					record.setFleetName(corpMessage.getData().getCname());
+				}
+			}
+
+			if (ObjectUtil.isNotEmpty(record.getVehicleId())) {
+				LandVehicle vehicle = landVehicleClient.getVehicle(record.getVehicleId());
+				record.setPlateNo(vehicle.getPlateNo());
+				record.setDriverName(vehicle.getDriverName());
+			}
+		});
+		return pages;
+	}
+
+	@Override
+	public Map<String, Object> getCount(OrderItem orderItem) {
+		String role = AuthUtil.getUserRole();
+
+		LambdaQueryWrapper<OrderItem> itemQueryWrapper = new LambdaQueryWrapper<>();
+		if (orderItem.getTag() == 4) {
+			itemQueryWrapper.notIn(OrderItem::getStatus, 0, 1);
+		} else if (orderItem.getTag() == 3) {
+			itemQueryWrapper.notIn(OrderItem::getStatus, 0);
+		}
+
+		if (role.contains(LandConstant.FLEET_ROLE)) {
+			if (role.contains(LandConstant.LAND_OPERATOR)) {
+				Long fleetId = corpsDescClient.getFleetId(AuthUtil.getUserId());
+				itemQueryWrapper.eq(OrderItem::getFleetId, fleetId);
+			}
+		}
+		if (role.contains(LandConstant.DRIVER_ROLE)) {
+			if (role.contains(LandConstant.LAND_OPERATOR)) {
+				Long driverId = landDriverClient.getDriverId(AuthUtil.getUserId());
+				itemQueryWrapper.eq(OrderItem::getDriverId, driverId);
+			}
+		}
+		itemQueryWrapper.eq(OrderItem::getKind, 2)
+			.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
+			.eq(OrderItem::getIsDeleted, 0);
+		List<OrderItem> itemList = baseMapper.selectList(itemQueryWrapper);
+		long all = itemList.size();
+		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();
+
+		Map<String, Object> data = new HashMap<>();
+		data.put("all", all);
+		data.put("one", one);
+		data.put("two", two);
+		data.put("three", three);
+		data.put("four", four);
+		return data;
+	}
+
+	@Override
 	public boolean removeOrderItem(List<Long> idList) {
 		idList.forEach(id -> {
 			OrderItem orderItem = new OrderItem();

+ 323 - 8
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -18,16 +18,24 @@ package org.springblade.land.service.impl;
 
 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
+import org.springblade.client.constant.LandConstant;
+import org.springblade.client.entity.CommonFile;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.FeesDesc;
+import org.springblade.client.entity.LandVehicle;
+import org.springblade.client.feign.ICommonFileClient;
 import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IFeesDescClient;
+import org.springblade.client.feign.ILandVehicleClient;
+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.BeanUtil;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.core.tool.utils.*;
 import org.springblade.land.entity.*;
 import org.springblade.land.mapper.*;
 import org.springblade.land.service.IOrderService;
@@ -37,9 +45,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 /**
@@ -62,13 +69,301 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	private final ICorpsDescClient corpsDescClient;
 
+	private final ILandVehicleClient landVehicleClient;
+
+	private final IFeesDescClient feesDescClient;
+
+	private final ICommonFileClient commonFileClient;
+
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
 		return page.setRecords(baseMapper.selectOrderPage(page, order));
 	}
 
 	@Override
+	public Order getDetail(Order order) {
+		Order detail = baseMapper.selectById(order.getId());
+		if (ObjectUtil.isEmpty(detail)) {
+			return 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 = orderItemMapper.selectList(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 = orderAddressMapper.selectList(new LambdaQueryWrapper<OrderAddress>()
+			.eq(OrderAddress::getOrderId, order.getId())
+			.eq(OrderAddress::getIsDeleted, 0)
+		);
+		detail.setOrderAddressList(orderAddressList);
+
+		List<OrderFee> orderFeeList = orderFeeMapper.selectList(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);
+
+		R<List<CommonFile>> fileList = commonFileClient.getList(order.getId(), LandConstant.ORDER);
+		if (fileList.isSuccess() && fileList.getData() != null) {
+			detail.setFileList(fileList.getData());
+		}
+		return detail;
+	}
+
+	@Override
+	public IPage<Order> getList(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 = orderItemMapper.selectList(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 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())
+			.like(StringUtil.isNotBlank(order.getAddressDetail()), Order::getAddressDetail, order.getAddressDetail())
+			.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());
+			}
+		}
+
+		IPage<Order> pages = baseMapper.selectPage(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 = orderItemMapper.selectList(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 = orderItemMapper.selectList(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(";")));
+				}
+			}
+		});
+		return pages;
+	}
+
+	@Override
+	public Map<String, Object> getCount(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 = baseMapper.selectList(orderQueryWrapper).stream().filter(orderTemp -> orderTemp.getStatus() == 0).map(Order::getId).collect(Collectors.toList());
+			if (CollectionUtil.isNotEmpty(orderIdList)) {
+				List<OrderItem> itemList = orderItemMapper.selectList(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());
+			}
+		}
+
+		orderIdList = baseMapper.selectList(orderQueryWrapper).stream().filter(orderTemp -> orderTemp.getStatus() == 1).map(Order::getId).collect(Collectors.toList());
+		if (CollectionUtil.isNotEmpty(orderIdList)) {
+			List<OrderItem> itemList = orderItemMapper.selectList(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 data;
+	}
+
+	@Override
 	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class)
 	public Long saveOrder(Order order) {
 		if (ObjectUtil.isEmpty(order.getId())) {
 			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
@@ -103,7 +398,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		});
 
-		order.getOrderAddressList().forEach(address -> {
+		List<OrderAddress> addressList = order.getOrderAddressList();
+		addressList.forEach(address -> {
 			if (ObjectUtil.isEmpty(address.getId())) {
 				address.setOrderId(orderId);
 				address.setTenantId(AuthUtil.getTenantId());
@@ -117,6 +413,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		});
 
+		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) {
+			order.setAddressDetail(addressDetail.deleteCharAt(addressDetail.lastIndexOf(";")).toString());
+		}
+		baseMapper.updateById(order);
+
 		order.getOrderFeeList().forEach(fee -> {
 			if (ObjectUtil.isEmpty(fee.getId())) {
 				fee.setOrderId(orderId);
@@ -130,6 +435,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				orderFeeMapper.updateById(fee);
 			}
 		});
+
+		List<CommonFile> fileList = order.getFileList();
+		fileList.forEach(file -> {
+			if (ObjectUtil.isEmpty(file.getId())) {
+				file.setPid(orderId);
+				file.setSource(LandConstant.ORDER);
+			}
+		});
+		commonFileClient.saveList(fileList);
+
 		return orderId;
 	}
 

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/controller/RegionController.java

@@ -66,7 +66,7 @@ public class RegionController extends BladeController {
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入region")
 	public R<RegionVO> detail(Region region) {
-		Region detail = regionService.getOne(Condition.getQueryWrapper(region));
+		Region detail = regionService.getOne(Condition.getQueryWrapper(region).last("limit 1"));
 		return R.data(RegionWrapper.build().entityVO(detail));
 	}