Ver Fonte

2023年8月24日17:42:38

纪新园 há 2 anos atrás
pai
commit
1efade4ee6
27 ficheiros alterados com 565 adições e 37 exclusões
  1. 87 0
      blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/dto/ExportTradingBoxItemOut.java
  2. 6 0
      blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/TradingBox.java
  3. 12 0
      blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/Transport.java
  4. 4 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchives.java
  5. 4 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchivesItem.java
  6. 21 0
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java
  7. 15 4
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/ArchivesTrajectoryController.java
  8. 27 6
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxController.java
  9. 22 9
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxItemController.java
  10. 18 4
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportController.java
  11. 2 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/ArchivesTrajectoryMapper.java
  12. 23 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/ArchivesTrajectoryMapper.xml
  13. 3 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TradingBoxMapper.java
  14. 75 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TradingBoxMapper.xml
  15. 3 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TransportMapper.java
  16. 57 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TransportMapper.xml
  17. 2 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/IArchivesTrajectoryService.java
  18. 3 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/ITradingBoxService.java
  19. 4 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/ITransportService.java
  20. 23 3
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/ArchivesTrajectoryServiceImpl.java
  21. 8 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java
  22. 10 2
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransportServiceImpl.java
  23. 10 2
      blade-service/blade-client/src/main/java/org/springblade/client/equipment/controller/CorpEquipmentArchivesController.java
  24. 16 0
      blade-service/blade-client/src/main/java/org/springblade/client/equipment/controller/CorpEquipmentArchivesItemController.java
  25. 2 2
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  26. 100 3
      blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java
  27. 8 1
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

+ 87 - 0
blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/dto/ExportTradingBoxItemOut.java

@@ -0,0 +1,87 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.box.tube.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 买(卖)箱表实体类
+ *
+ * @author BladeX
+ * @since 2022-11-14
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ExportTradingBoxItemOut implements Serializable {
+
+	/**
+	 * 合同号
+	 */
+	@ExcelProperty(value = "合同号")
+	private String contractNo;
+
+	/**
+	 * 箱号
+	 */
+	@ExcelProperty(value = "箱号")
+	private String code;
+
+	/**
+	 * 最新时间
+	 */
+	@ExcelProperty(value = "最新时间")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date newDate;
+
+	/**
+	 * 最新地点
+	 */
+	@ExcelProperty(value = "最新地点")
+	private String address;
+
+	/**
+	 * 金额
+	 */
+	@ExcelProperty(value = "金额")
+	private BigDecimal amount;
+
+	/**
+	 * 状态
+	 */
+	@ExcelProperty(value = "状态")
+	private String status;
+
+	/**
+	 * 业务类型
+	 */
+	@ExcelProperty(value = "业务类型")
+	private String type;
+
+}

+ 6 - 0
blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/TradingBox.java

@@ -290,6 +290,12 @@ public class TradingBox implements Serializable {
 	private BigDecimal totalAmount;
 
 	/**
+	 * 订单合计金额(美金)
+	 */
+	@ApiModelProperty(value = "订单合计金额(美金)")
+	private BigDecimal totalAmountU;
+
+	/**
 	 * 租金计算起始时间
 	 */
 	@TableField(exist = false)

+ 12 - 0
blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/Transport.java

@@ -146,11 +146,23 @@ public class Transport implements Serializable {
 	 */
 	@ApiModelProperty(value = "订单合计金额")
 	private BigDecimal totalAmount;
+
+	/**
+	 * 订单合计金额(美金)
+	 */
+	@ApiModelProperty(value = "订单合计金额(美金)")
+	private BigDecimal totalAmountU;
 	/**
 	 * 订单超期合计金额
 	 */
 	@ApiModelProperty(value = "订单超期合计金额")
 	private BigDecimal overdueAmount;
+
+	/**
+	 * 订单超期合计金额(美金)
+	 */
+	@ApiModelProperty(value = "订单超期合计金额(美金)")
+	private BigDecimal overdueAmountU;
 	/**
 	 * 备注
 	 */

+ 4 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchives.java

@@ -165,5 +165,9 @@ public class CorpEquipmentArchives implements Serializable {
 	@TableField(exist = false)
 	private List<CorpEquipmentArchivesFiles> filesList;
 
+	//检索
+	@TableField(exist = false)
+	private String retrieval;
+
 
 }

+ 4 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchivesItem.java

@@ -176,5 +176,9 @@ public class CorpEquipmentArchivesItem implements Serializable {
 	@ApiModelProperty(value = "设备id")
 	private Long srcId;
 
+	//检索
+	@TableField(exist = false)
+	private String retrieval;
+
 
 }

+ 21 - 0
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java

@@ -237,4 +237,25 @@ public class AppStockPartsVO {
 
 	private BigDecimal integral;
 
+	/**
+	 * 批发售价
+	 */
+	private BigDecimal wholesalePrice;
+
+	/**
+	 * 汽修厂售价
+	 */
+	private BigDecimal repairDepotPrice;
+
+	/**
+	 * 门店售价
+	 */
+	private BigDecimal storePrice;
+	/**
+	 * 特价
+	 */
+	private BigDecimal specialOffer;
+
+	private BigDecimal price;
+
 }

+ 15 - 4
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/ArchivesTrajectoryController.java

@@ -24,6 +24,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.box.tube.entity.Archives;
 import org.springblade.box.tube.entity.ArchivesTrajectory;
 import org.springblade.box.tube.entity.TradingBoxFees;
 import org.springblade.box.tube.entity.TransportItemFees;
@@ -109,6 +110,7 @@ public class ArchivesTrajectoryController extends BladeController {
 				LambdaQueryWrapper<TransportItemFees> transportItemFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
 				transportItemFeesLambdaQueryWrapper.eq(TransportItemFees::getIsDeleted, 0)
 					.eq(TransportItemFees::getTenantId, AuthUtil.getTenantId())
+					.eq(TransportItemFees::getCode, archivesTrajectory_.getCode())
 					.eq(TransportItemFees::getPid, archivesTrajectory_.getSrcId());
 				transportItemFeesList = transportItemFeesService.list(transportItemFeesLambdaQueryWrapper);
 				if (ObjectUtils.isNotNull(transportItemFeesList) && transportItemFeesList.size() > 0) {
@@ -119,7 +121,7 @@ public class ArchivesTrajectoryController extends BladeController {
 						payCorpId.add(str.toString());
 					}
 					List<CorpsDesc> payCorpsDescList = corpsDescClient.selectByCorpIds(String.join(",", payCorpId));
-					if (ObjectUtils.isNotNull(payCorpsDescList) && payCorpsDescList.size()>0){
+					if (ObjectUtils.isNotNull(payCorpsDescList) && payCorpsDescList.size() > 0) {
 						archivesTrajectory_.setCorpNamePay(payCorpsDescList.stream().map(CorpsDesc::getCname).collect(Collectors.joining()));
 					}
 					archivesTrajectory_.setPay(transportItemFeesList.stream().filter(e -> e.getFeesType() == 1).map(TransportItemFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -130,7 +132,7 @@ public class ArchivesTrajectoryController extends BladeController {
 						collectCorpId.add(str.toString());
 					}
 					List<CorpsDesc> collectCorpsDescList = corpsDescClient.selectByCorpIds(String.join(",", collectCorpId));
-					if (ObjectUtils.isNotNull(collectCorpsDescList) && collectCorpsDescList.size()>0){
+					if (ObjectUtils.isNotNull(collectCorpsDescList) && collectCorpsDescList.size() > 0) {
 						archivesTrajectory_.setCorpNameCollect(collectCorpsDescList.stream().map(CorpsDesc::getCname).collect(Collectors.joining()));
 					}
 					archivesTrajectory_.setCollect(transportItemFeesList.stream().filter(e -> e.getFeesType() == 2).map(TransportItemFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -142,6 +144,7 @@ public class ArchivesTrajectoryController extends BladeController {
 				LambdaQueryWrapper<TradingBoxFees> tradingBoxFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
 				tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getIsDeleted, 0)
 					.eq(TradingBoxFees::getTenantId, AuthUtil.getTenantId())
+					.eq(TradingBoxFees::getCode, archivesTrajectory_.getCode())
 					.eq(TradingBoxFees::getPid, archivesTrajectory_.getSrcId());
 				tradingBoxFeesList = tradingBoxFeesService.list(tradingBoxFeesLambdaQueryWrapper);
 				if (ObjectUtils.isNotNull(tradingBoxFeesList) && tradingBoxFeesList.size() > 0) {
@@ -152,7 +155,7 @@ public class ArchivesTrajectoryController extends BladeController {
 						payCorpId.add(str.toString());
 					}
 					List<CorpsDesc> payCorpsDescList = corpsDescClient.selectByCorpIds(String.join(",", payCorpId));
-					if (ObjectUtils.isNotNull(payCorpsDescList) && payCorpsDescList.size()>0){
+					if (ObjectUtils.isNotNull(payCorpsDescList) && payCorpsDescList.size() > 0) {
 						archivesTrajectory_.setCorpNamePay(payCorpsDescList.stream().map(CorpsDesc::getCname).collect(Collectors.joining()));
 					}
 					archivesTrajectory_.setPay(tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 1).map(TradingBoxFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -163,7 +166,7 @@ public class ArchivesTrajectoryController extends BladeController {
 						collectCorpId.add(str.toString());
 					}
 					List<CorpsDesc> collectCorpsDescList = corpsDescClient.selectByCorpIds(String.join(",", collectCorpId));
-					if (ObjectUtils.isNotNull(collectCorpsDescList) && collectCorpsDescList.size()>0){
+					if (ObjectUtils.isNotNull(collectCorpsDescList) && collectCorpsDescList.size() > 0) {
 						archivesTrajectory_.setCorpNameCollect(collectCorpsDescList.stream().map(CorpsDesc::getCname).collect(Collectors.joining()));
 					}
 
@@ -253,5 +256,13 @@ public class ArchivesTrajectoryController extends BladeController {
 		return R.status(archivesTrajectoryService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 清楚重复数据
+	 */
+	@GetMapping("/clearData")
+	public R clearData() {
+		return archivesTrajectoryService.clearData();
+	}
+
 
 }

+ 27 - 6
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxController.java

@@ -24,6 +24,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.dto.ExportTradingBoxOut;
 import org.springblade.box.tube.entity.*;
 import org.springblade.box.tube.service.ITradingBoxFeesService;
@@ -168,14 +169,14 @@ public class TradingBoxController extends BladeController {
 				tradingBoxItemLambdaQueryWrapper.eq(TradingBoxItem::getPid, tradingBox.getId()).eq(TradingBoxItem::getIsDeleted, 0).eq(TradingBoxItem::getTenantId, AuthUtil.getTenantId());
 				List<TradingBoxItem> tradingBoxItemList = tradingBoxItemService.list(tradingBoxItemLambdaQueryWrapper);
 				for (TradingBoxItem tradingBoxItem : tradingBoxItemList) {
-					if ("JKFC".equals(tradingBoxItem.getSrcBillType()) || "CKZY".equals(tradingBoxItem.getSrcBillType())){
+					if ("JKFC".equals(tradingBoxItem.getSrcBillType()) || "CKZY".equals(tradingBoxItem.getSrcBillType())) {
 						TransportItem transportItem = new TransportItem();
 						transportItem.setId(tradingBoxItem.getSrcId());
 						transportItem.setStockpilingStatus("1");
 						transportItem.setStackingStatus("未堆存");
 						transportItem.setStackingDate(null);
 						transportItemService.updateById(transportItem);
-					}else{
+					} else {
 						TradingBoxItem old = new TradingBoxItem();
 						old.setId(tradingBoxItem.getSrcId());
 						old.setStockpilingStatus("1");
@@ -280,13 +281,13 @@ public class TradingBoxController extends BladeController {
 		lambdaQueryWrapper.orderByDesc(TradingBox::getCreateTime);
 		List<TradingBox> tradingBoxList = tradingBoxService.list(lambdaQueryWrapper);
 		for (TradingBox tradingBox_ : tradingBoxList) {
-			if (tradingBox_.getType().equals("BUY")) {
+			if ("BUY".equals(tradingBox_.getType())) {
 				tradingBox_.setType("买箱");
-			} else if (tradingBox_.getType().equals("SELL")) {
+			} else if ("SELL".equals(tradingBox_.getType())) {
 				tradingBox_.setType("卖箱");
-			} else if (tradingBox_.getType().equals("ZR")) {
+			} else if ("ZR".equals(tradingBox_.getType())) {
 				tradingBox_.setType("租入");
-			} else if (tradingBox_.getType().equals("ZC")) {
+			} else if ("ZC".equals(tradingBox_.getType())) {
 				tradingBox_.setType("租出");
 			} else {
 				tradingBox_.setType("无");
@@ -306,4 +307,24 @@ public class TradingBoxController extends BladeController {
 		return R.data(detail);
 	}
 
+	/**
+	 * 导出 买,卖,租入,租出箱明细
+	 */
+	@GetMapping("/exportTradingBoxItemOut")
+	public void exportTradingBoxItemOut(TradingBox tradingBox, HttpServletResponse response) {
+		tradingBox.setTenantId(AuthUtil.getTenantId());
+		List<ExportTradingBoxItemOut> tradingBoxList = tradingBoxService.exportTradingBoxItemOut(tradingBox);
+		String name = "";
+		if ("BUY".equals(tradingBox.getType())) {
+			name = "买箱";
+		} else if ("SELL".equals(tradingBox.getType())) {
+			name = "卖箱";
+		} else if ("ZR".equals(tradingBox.getType())) {
+			name = "租入";
+		} else if ("ZC".equals(tradingBox.getType())) {
+			name = "租出";
+		}
+		ExcelUtil.export(response, name + "箱明细", "箱数据", tradingBoxList, ExportTradingBoxItemOut.class);
+	}
+
 }

+ 22 - 9
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxItemController.java

@@ -198,7 +198,7 @@ public class TradingBoxItemController extends BladeController {
 					tradingBoxItem.setBoxSource("购买");
 					tradingBoxItem.setStatus("待使用");
 				} else {
-					if (tradingBoxItem.getBoxSource().equals("购买")) {
+					if ("购买".equals(tradingBoxItem.getBoxSource())) {
 						tradingBoxItem.setStatus("卖出");
 					} else {
 						tradingBoxItem.setStatus("退租");
@@ -217,7 +217,10 @@ public class TradingBoxItemController extends BladeController {
 					tradingBoxItemService.updateById(tradingBoxItem);
 					if (ObjectUtils.isNotNull(tradingBoxItem.getCode())) {
 						//更新箱档案信息
-						Archives archivesR = archivesService.getOne(new LambdaQueryWrapper<Archives>().eq(Archives::getIsDeleted, 0).eq(Archives::getTenantId, AuthUtil.getTenantId()).eq(Archives::getCode, tradingBoxItem.getCode()));
+						Archives archivesR = archivesService.getOne(new LambdaQueryWrapper<Archives>().eq(Archives::getIsDeleted, 0)
+							.eq(Archives::getTenantId, AuthUtil.getTenantId())
+							.eq(Archives::getCode, tradingBoxItem.getCode())
+							.eq(Archives::getStatus, ""));
 						Archives archives = new Archives();
 						if (ObjectUtils.isNotNull(archivesR)) {
 							BeanUtil.copy(archivesR, archives);
@@ -248,11 +251,15 @@ public class TradingBoxItemController extends BladeController {
 						}
 						archives.setStatus(tradingBoxItem.getStatus());
 						if (ObjectUtils.isNotNull(archivesR)) {
+							if ("BUY".equals(tradingBox.getType()) ) {
+								if (!"退租".equals(archivesR.getStatus()) && !"卖出".equals(archivesR.getStatus())) {
+									throw new RuntimeException("箱号:" + archivesR.getCode() + "已存在");
+								}
+							}
 							archives.setUpdateTime(new Date());
 							archives.setUpdateUserName(AuthUtil.getUserName());
 							archives.setUpdateUser(AuthUtil.getUserId());
 							archivesService.updateById(archives);
-
 						} else {
 							archives.setCreateUser(AuthUtil.getUserId());
 							archives.setCreateTime(new Date());
@@ -341,9 +348,10 @@ public class TradingBoxItemController extends BladeController {
 		}
 		if (tradingBoxItem.getId() == null) {
 			if (ObjectUtils.isNotNull(tradingBox)) {
-				if (tradingBox.getType().equals("ZR")) {
+				if ("ZR".equals(tradingBox.getType())) {
 					tradingBoxItem.setBoxSource("租入");
-				} else if (tradingBox.getType().equals("ZC")) {
+				} else if ("ZC".equals(tradingBox.getType())) {
+					System.out.println("租出");
 				}
 				if (ObjectUtils.isNull(tradingBoxItem.getRentEndDate()) && ObjectUtils.isNull(tradingBoxItem.getRentStartDate())) {
 					tradingBoxItem.setRentEndDate(tradingBoxItem.getLeaseCommencementDate());
@@ -360,13 +368,13 @@ public class TradingBoxItemController extends BladeController {
 					if (ObjectUtils.isNotNull(tradingBoxItemList1) && tradingBoxItemList1.size() > 0) {
 						throw new RuntimeException("箱号:" + tradingBoxItem.getCode() + "已存在,保存失败");
 					}
-					if (tradingBox.getType().equals("ZR")) {
+					if ("ZR".equals(tradingBox.getType())) {
 						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
 							tradingBoxItem.setStatus("待使用");
 						} else {
 							tradingBoxItem.setStatus("录入");
 						}
-					} else if (tradingBox.getType().equals("ZC")) {
+					} else if ("ZC".equals(tradingBox.getType())) {
 //						tradingBoxItem.setStatus("使用");
 						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
 							tradingBoxItem.setStatus("使用");
@@ -384,13 +392,13 @@ public class TradingBoxItemController extends BladeController {
 					tradingBoxItem.setPid(tradingBox.getId());
 					tradingBoxItemService.save(tradingBoxItem);
 				} else {
-					if (tradingBox.getType().equals("ZR") && "录入".equals(tradingBoxItem.getStatus())) {
+					if ("ZR".equals(tradingBox.getType()) && "录入".equals(tradingBoxItem.getStatus())) {
 						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
 							tradingBoxItem.setStatus("待使用");
 						} else {
 							tradingBoxItem.setStatus("录入");
 						}
-					} else if (tradingBox.getType().equals("ZC") && "录入".equals(tradingBoxItem.getStatus())) {
+					} else if ("ZC".equals(tradingBox.getType()) && "录入".equals(tradingBoxItem.getStatus())) {
 //						tradingBoxItem.setStatus("使用");
 						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
 							tradingBoxItem.setStatus("使用");
@@ -465,6 +473,11 @@ public class TradingBoxItemController extends BladeController {
 						archives.setContractNo(tradingBox.getContractNo());
 						archives.setBoxAccessStatus("");
 						if (ObjectUtils.isNotNull(archivesR)) {
+							if ("ZR".equals(tradingBox.getType()) ) {
+								if (!"退租".equals(archivesR.getStatus()) && !"卖出".equals(archivesR.getStatus())) {
+									throw new RuntimeException("箱号:" + archivesR.getCode() + "已存在");
+								}
+							}
 							archives.setUpdateTime(new Date());
 							archives.setUpdateUserName(AuthUtil.getUserName());
 							archives.setUpdateUser(AuthUtil.getUserId());

+ 18 - 4
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportController.java

@@ -25,10 +25,9 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.dto.ExportTransportOut;
 import org.springblade.box.tube.dto.TransportItemExcelEnter;
-import org.springblade.box.tube.entity.Archives;
-import org.springblade.box.tube.entity.TradingBox;
 import org.springblade.box.tube.entity.Transport;
 import org.springblade.box.tube.service.ITransportService;
 import org.springblade.box.tube.vo.TransportVO;
@@ -44,7 +43,6 @@ import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.ArrayList;
@@ -315,7 +313,7 @@ public class TransportController extends BladeController {
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return transportService.importTransportInfo(excelList, false,corpId,corpName,billType);
+		return transportService.importTransportInfo(excelList, false, corpId, corpName, billType);
 	}
 
 	/**
@@ -355,5 +353,21 @@ public class TransportController extends BladeController {
 		return R.data(generateBill);
 	}
 
+	/**
+	 * 导出 出口装运,进口返程箱明细
+	 */
+	@GetMapping("/exportTransportItemOut")
+	public void exportTradingBoxItemOut(Transport transport, HttpServletResponse response) {
+		transport.setTenantId(AuthUtil.getTenantId());
+		List<ExportTradingBoxItemOut> tradingBoxList = transportService.exportTradingBoxItemOut(transport);
+		String name = "";
+		if ("CKZY".equals(transport.getBillType())) {
+			name = "出口装运";
+		} else if ("JKFC".equals(transport.getBillType())) {
+			name = "进口返程";
+		}
+		ExcelUtil.export(response, name + "箱明细", "箱数据", tradingBoxList, ExportTradingBoxItemOut.class);
+	}
+
 
 }

+ 2 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/ArchivesTrajectoryMapper.java

@@ -21,6 +21,7 @@ import org.springblade.box.tube.vo.ArchivesTrajectoryVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 箱轨迹表 Mapper 接口
@@ -39,4 +40,5 @@ public interface ArchivesTrajectoryMapper extends BaseMapper<ArchivesTrajectory>
 	 */
 	List<ArchivesTrajectoryVO> selectArchivesTrajectoryPage(IPage page, ArchivesTrajectoryVO archivesTrajectory);
 
+    List<Map<String, String>> clearData();
 }

+ 23 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/ArchivesTrajectoryMapper.xml

@@ -23,5 +23,28 @@
     <select id="selectArchivesTrajectoryPage" resultMap="archivesTrajectoryResultMap">
         select * from container_archives_trajectory where is_deleted = 0
     </select>
+    <select id="clearData" resultType="java.util.Map">
+        SELECT
+            count( CODE ) AS count,
+	CODE AS CODE,
+	GROUP_CONCAT( id SEPARATOR ',' ) AS ids
+        FROM
+            `container_archives_trajectory`
+        WHERE
+            tenant_id = '064132'
+          AND is_deleted = '0'
+        GROUP BY
+            CODE,
+            address,
+            new_date,
+            `status`,
+            bill_type,
+            contract_no,
+            corp_id,
+            corp_name,
+            src_id
+        HAVING
+            count > 1;
+    </select>
 
 </mapper>

+ 3 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TradingBoxMapper.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.box.tube.mapper;
 
+import org.apache.ibatis.annotations.Param;
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.entity.TradingBox;
 import org.springblade.box.tube.vo.TradingBoxVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +41,5 @@ public interface TradingBoxMapper extends BaseMapper<TradingBox> {
 	 */
 	List<TradingBoxVO> selectTradingBoxPage(IPage page, TradingBoxVO tradingBox);
 
+    List<ExportTradingBoxItemOut> exportTradingBoxItemOut(@Param("item") TradingBox tradingBox);
 }

+ 75 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TradingBoxMapper.xml

@@ -27,5 +27,80 @@
     <select id="selectTradingBoxPage" resultMap="tradingBoxResultMap">
         select * from container_trading_box where is_deleted = 0
     </select>
+    <select id="exportTradingBoxItemOut" resultType="org.springblade.box.tube.dto.ExportTradingBoxItemOut">
+        SELECT
+            c.contract_no AS contractNo,
+            i.`code` AS CODE,
+            i.new_date AS newDate,
+            i.amount AS amount,
+            i.address AS address,
+            i.`status` AS STATUS,
+        ( CASE c.bill_type WHEN 'CKZY' THEN '出口装运' WHEN 'JKFC' THEN '进口返程' END ) AS type
+        FROM
+        container_transport_item i
+                LEFT JOIN container_transport c ON i.pid = c.id
+        WHERE
+            i.tenant_id = #{item.tenantId}
+          AND i.is_deleted = '0'
+          AND c.is_deleted = '0'
+        <if test='item.effectiveDateList != null and item.effectiveDateList[0] != null and item.effectiveDateList[0]!= ""'>
+            and c.effective_date &gt;= #{item.effectiveDateList[0]}
+        </if>
+        <if test='item.effectiveDateList != null and item.effectiveDateList[1] != null and item.effectiveDateList[1]!= ""'>
+            and c.effective_date &lt;= #{item.effectiveDateList[1]}
+        </if>
+        <if test='item.startingRentDateList != null and item.startingRentDateList[0] != null and item.startingRentDateList[0]!= ""'>
+            and c.starting_rent_date &gt;= #{item.startingRentDateList[0]}
+        </if>
+        <if test='item.startingRentDateList != null and item.startingRentDateList[1] != null and item.startingRentDateList[1]!= ""'>
+            and c.starting_rent_date &lt;= #{item.startingRentDateList[1]}
+        </if>
+        <if test='item.createTimeList != null and item.createTimeList[0] != null and item.createTimeList[0]!= ""'>
+            and c.create_time &gt;= #{item.createTimeList[0]}
+        </if>
+        <if test='item.createTimeList != null and item.createTimeList[1] != null and item.createTimeList[1]!= ""'>
+            and c.create_time &lt;= #{item.createTimeList[1]}
+        </if>
+        <if test='item.updateTimeList != null and item.updateTimeList[0] != null and item.updateTimeList[0]!= ""'>
+            and c.update_time &gt;= #{item.updateTimeList[0]}
+        </if>
+        <if test='item.updateTimeList != null and item.updateTimeList[1] != null and item.updateTimeList[1]!= ""'>
+            and c.update_time &lt;= #{item.updateTimeList[1]}
+        </if>
+        <if test="item.sysNo != null and item.sysNo != ''">
+            AND c.sys_no like CONCAT(CONCAT('%', #{item.sysNo}), '%')
+        </if>
+        <if test="item.contractNo != null and item.contractNo != ''">
+            AND c.contract_no like CONCAT(CONCAT('%', #{item.contractNo}), '%')
+        </if>
+        <if test="item.code != null and item.code != ''">
+            AND c.code like CONCAT(CONCAT('%', #{item.code}), '%')
+        </if>
+        <if test="item.corpId!=null">
+            and c.corp_id = #{item.corpId}
+        </if>
+        <if test="item.departureHarborId!=null">
+            and c.departure_harbor_id = #{item.departureHarborId}
+        </if>
+        <if test="item.objectiveHarborId!=null">
+            and c.objective_harbor_id = #{item.objectiveHarborId}
+        </if>
+        <if test="item.shippingCompanyId!=null">
+            and c.shipping_company_id = #{item.shippingCompanyId}
+        </if>
+        <if test="item.status!=null">
+            and c.status = #{item.status}
+        </if>
+        <if test="item.createUser!=null and item.createUser != ''">
+            and c.create_user = #{item.createUser}
+        </if>
+        <if test="item.updateUser!=null and item.updateUser != ''">
+            and c.update_user = #{item.updateUser}
+        </if>
+        <if test="item.billType!=null and item.billType != ''">
+            and c.bill_type = #{item.billType}
+        </if>
+        order by c.create_time desc
+    </select>
 
 </mapper>

+ 3 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TransportMapper.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.box.tube.mapper;
 
+import org.apache.ibatis.annotations.Param;
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.entity.Transport;
 import org.springblade.box.tube.vo.TransportVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +41,5 @@ public interface TransportMapper extends BaseMapper<Transport> {
 	 */
 	List<TransportVO> selectTransportPage(IPage page, TransportVO transport);
 
+    List<ExportTradingBoxItemOut> exportTradingBoxItemOut(@Param("item") Transport transport);
 }

+ 57 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/mapper/TransportMapper.xml

@@ -38,5 +38,62 @@
     <select id="selectTransportPage" resultMap="transportResultMap">
         select * from container_transport where is_deleted = 0
     </select>
+    <select id="exportTradingBoxItemOut" resultType="org.springblade.box.tube.dto.ExportTradingBoxItemOut">
+        SELECT
+        c.contract_no AS contractNo,
+        i.`code` AS CODE,
+        i.new_date AS newDate,
+        i.amount AS amount,
+        i.address AS address,
+        i.`status` AS STATUS,
+        ( CASE c.type WHEN 'ZR' THEN '租入' WHEN 'ZC' THEN '租出' WHEN 'BUY' THEN '买箱' WHEN 'SELL' THEN '卖箱' END ) AS type
+        FROM
+        container_trading_box_item i
+        LEFT JOIN container_trading_box c ON i.pid = c.id
+        WHERE
+        i.tenant_id = #{item.tenantId}
+        AND i.is_deleted = '0'
+        AND c.is_deleted = '0'
+        <if test='item.purchaseDateList != null and item.purchaseDateList[0] != null and item.purchaseDateList[0]!= ""'>
+            and c.purchase_date &gt;= #{item.purchaseDateList[0]}
+        </if>
+        <if test='item.purchaseDateList != null and item.purchaseDateList[1] != null and item.purchaseDateList[1]!= ""'>
+            and c.purchase_date &lt;= #{item.purchaseDateList[1]}
+        </if>
+        <if test='item.createTimeList != null and item.createTimeList[0] != null and item.createTimeList[0]!= ""'>
+            and c.create_time &gt;= #{item.createTimeList[0]}
+        </if>
+        <if test='item.createTimeList != null and item.createTimeList[1] != null and item.createTimeList[1]!= ""'>
+            and c.create_time &lt;= #{item.createTimeList[1]}
+        </if>
+        <if test='item.updateTimeList != null and item.updateTimeList[0] != null and item.updateTimeList[0]!= ""'>
+            and c.update_time &gt;= #{item.updateTimeList[0]}
+        </if>
+        <if test='item.updateTimeList != null and item.updateTimeList[1] != null and item.updateTimeList[1]!= ""'>
+            and c.update_time &lt;= #{item.updateTimeList[1]}
+        </if>
+        <if test="item.sysNo != null and item.sysNo != ''">
+            AND c.sys_no like CONCAT(CONCAT('%', #{item.sysNo}), '%')
+        </if>
+        <if test="item.contractNo != null and item.contractNo != ''">
+            AND c.contract_no like CONCAT(CONCAT('%', #{item.contractNo}), '%')
+        </if>
+        <if test="item.purchaseCompanyId!=null">
+            and c.purchase_company_id = #{item.purchaseCompanyId}
+        </if>
+        <if test="item.status!=null">
+            and c.status = #{item.status}
+        </if>
+        <if test="item.createUser!=null and item.createUser != ''">
+            and c.create_user = #{item.createUser}
+        </if>
+        <if test="item.updateUser!=null and item.updateUser != ''">
+            and c.update_user = #{item.updateUser}
+        </if>
+        <if test="item.type!=null and item.type != ''">
+            and c.type = #{item.type}
+        </if>
+        order by c.create_time desc
+    </select>
 
 </mapper>

+ 2 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/IArchivesTrajectoryService.java

@@ -20,6 +20,7 @@ import org.springblade.box.tube.entity.ArchivesTrajectory;
 import org.springblade.box.tube.vo.ArchivesTrajectoryVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.tool.api.R;
 
 /**
  * 箱轨迹表 服务类
@@ -38,4 +39,5 @@ public interface IArchivesTrajectoryService extends IService<ArchivesTrajectory>
 	 */
 	IPage<ArchivesTrajectoryVO> selectArchivesTrajectoryPage(IPage<ArchivesTrajectoryVO> page, ArchivesTrajectoryVO archivesTrajectory);
 
+    R clearData();
 }

+ 3 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/ITradingBoxService.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.box.tube.service;
 
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.dto.TradingBoxItemRentExcelEnter;
 import org.springblade.box.tube.entity.TradingBox;
 import org.springblade.box.tube.vo.TradingBoxVO;
@@ -74,4 +75,6 @@ public interface ITradingBoxService extends IService<TradingBox> {
 	R generateBill(TradingBox tradingBox);
 
 	R revokeBill(TradingBox tradingBox);
+
+	List<ExportTradingBoxItemOut> exportTradingBoxItemOut(TradingBox tradingBox);
 }

+ 4 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/ITransportService.java

@@ -18,7 +18,9 @@ package org.springblade.box.tube.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.dto.TransportItemExcelEnter;
+import org.springblade.box.tube.entity.TradingBox;
 import org.springblade.box.tube.entity.Transport;
 import org.springblade.box.tube.entity.TransportItem;
 import org.springblade.box.tube.vo.TransportVO;
@@ -67,4 +69,6 @@ public interface ITransportService extends IService<Transport> {
 	Transport generateBill(Transport transport);
 
 	Transport revokeBill(Transport transport);
+
+	List<ExportTradingBoxItemOut> exportTradingBoxItemOut(Transport transport);
 }

+ 23 - 3
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/ArchivesTrajectoryServiceImpl.java

@@ -16,13 +16,19 @@
  */
 package org.springblade.box.tube.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.box.tube.entity.ArchivesTrajectory;
-import org.springblade.box.tube.vo.ArchivesTrajectoryVO;
 import org.springblade.box.tube.mapper.ArchivesTrajectoryMapper;
 import org.springblade.box.tube.service.IArchivesTrajectoryService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.box.tube.vo.ArchivesTrajectoryVO;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 箱轨迹表 服务实现类
@@ -38,4 +44,18 @@ public class ArchivesTrajectoryServiceImpl extends ServiceImpl<ArchivesTrajector
 		return page.setRecords(baseMapper.selectArchivesTrajectoryPage(page, archivesTrajectory));
 	}
 
+	@Override
+	public R clearData() {
+		List<Map<String, String>> mapList = baseMapper.clearData();
+		for (Map<String, String> item : mapList) {
+			String data = item.get("ids");
+			if (ObjectUtils.isNotNull(data)) {
+				String ids = data.substring(data.indexOf(",") + 1);
+				System.out.println(ids);
+				this.removeByIds(Func.toLongList(ids));
+			}
+		}
+		return R.data("操作成功");
+	}
+
 }

+ 8 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java

@@ -24,6 +24,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.dto.TradingBoxItemRentExcelEnter;
 import org.springblade.box.tube.entity.*;
 import org.springblade.box.tube.mapper.*;
@@ -184,7 +185,8 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			.orderByDesc(TradingBoxItem::getCreateTime);
 		List<TradingBoxItem> tradingBoxItemList = tradingBoxItemService.list(tradingBoxItemLambdaQueryWrapper);
 		if (ObjectUtils.isNotNull(tradingBoxItemList) && tradingBoxItemList.size() > 0) {
-			tradingBox.setTotalAmount(tradingBoxItemList.stream().map(TradingBoxItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			tradingBox.setTotalAmount(tradingBoxItemList.stream().filter(e-> "CNY".equals(e.getCurrency())).map(TradingBoxItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			tradingBox.setTotalAmountU(tradingBoxItemList.stream().filter(e-> "USD".equals(e.getCurrency())).map(TradingBoxItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			//箱号拼接字符串
 			List<String> codes = tradingBoxItemList.stream().map(TradingBoxItem::getCode).distinct().collect(Collectors.toList());
 			if (tradingBoxItemList.size() != codes.size()) {
@@ -1611,6 +1613,11 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		}
 	}
 
+	@Override
+	public List<ExportTradingBoxItemOut> exportTradingBoxItemOut(TradingBox tradingBox) {
+		return baseMapper.exportTradingBoxItemOut(tradingBox);
+	}
+
 	/**
 	 * 订单生成账单 并且推送财务消息
 	 *

+ 10 - 2
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransportServiceImpl.java

@@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
+import org.springblade.box.tube.dto.ExportTradingBoxItemOut;
 import org.springblade.box.tube.dto.TransportItemExcelEnter;
 import org.springblade.box.tube.entity.*;
 import org.springblade.box.tube.mapper.*;
@@ -182,8 +183,10 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 				throw new RuntimeException("本单据明细存在重复箱号,操作失败!");
 			}
 			transport.setCode(String.join(",", codes));
-			transport.setTotalAmount(transportItemList.stream().map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-			transport.setOverdueAmount(transportItemList.stream().map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			transport.setTotalAmount(transportItemList.stream().filter(e-> "CNY".equals(e.getCurrency())).map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			transport.setTotalAmountU(transportItemList.stream().filter(e-> "USD".equals(e.getCurrency())).map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			transport.setOverdueAmount(transportItemList.stream().filter(e-> "CNY".equals(e.getCurrency())).map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			transport.setOverdueAmountU(transportItemList.stream().filter(e-> "USD".equals(e.getCurrency())).map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = transportItemList.stream().filter(e -> ObjectUtils.isNotNull(e.getBoxType())).map(TransportItem::getBoxType).distinct().collect(Collectors.toList());
 			for (String boxType_ : boxType) {
@@ -929,6 +932,11 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 		return selectTransport;
 	}
 
+	@Override
+	public List<ExportTradingBoxItemOut> exportTradingBoxItemOut(Transport transport) {
+		return baseMapper.exportTradingBoxItemOut(transport);
+	}
+
 	/**
 	 * 订单生成账单 并且推送财务消息
 	 *

+ 10 - 2
blade-service/blade-client/src/main/java/org/springblade/client/equipment/controller/CorpEquipmentArchivesController.java

@@ -37,6 +37,7 @@ 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.springblade.salesPart.maintenance.entity.Maintenance;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -86,8 +87,15 @@ public class CorpEquipmentArchivesController extends BladeController {
 			.like(ObjectUtils.isNotNull(corpEquipmentArchives.getContacts()), CorpEquipmentArchives::getContacts, corpEquipmentArchives.getContacts())
 			.lt(ObjectUtils.isNotNull(corpEquipmentArchives.getSigningDateEnd()), CorpEquipmentArchives::getSigningDateEnd, corpEquipmentArchives.getSigningDateEnd())
 			.eq(ObjectUtils.isNotNull(corpEquipmentArchives.getCorpId()), CorpEquipmentArchives::getCorpId, corpEquipmentArchives.getCorpId())
-			.like(ObjectUtils.isNotNull(corpEquipmentArchives.getCorpName()), CorpEquipmentArchives::getCorpName, corpEquipmentArchives.getCorpName())
-			.orderByDesc(CorpEquipmentArchives::getCreateTime);
+			.like(ObjectUtils.isNotNull(corpEquipmentArchives.getCorpName()), CorpEquipmentArchives::getCorpName, corpEquipmentArchives.getCorpName());
+		if (ObjectUtils.isNotNull(corpEquipmentArchives.getRetrieval())) {
+			lambdaQueryWrapper.and(i -> i.like(CorpEquipmentArchives::getCorpName, corpEquipmentArchives.getRetrieval())
+				.or().like(CorpEquipmentArchives::getContactsTel, corpEquipmentArchives.getRetrieval())
+				.or().like(CorpEquipmentArchives::getContacts, corpEquipmentArchives.getRetrieval())
+				.or().like(CorpEquipmentArchives::getAddress, corpEquipmentArchives.getRetrieval())
+			);
+		}
+		lambdaQueryWrapper.orderByDesc(CorpEquipmentArchives::getCreateTime);
 		IPage<CorpEquipmentArchives> pages = corpEquipmentArchivesService.page(Condition.getPage(query), lambdaQueryWrapper);
 		return R.data(pages);
 	}

+ 16 - 0
blade-service/blade-client/src/main/java/org/springblade/client/equipment/controller/CorpEquipmentArchivesItemController.java

@@ -16,13 +16,17 @@
  */
 package org.springblade.client.equipment.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
+
 import javax.validation.Valid;
 
+import org.springblade.client.entity.CorpEquipmentArchives;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
@@ -66,6 +70,18 @@ public class CorpEquipmentArchivesItemController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入corpEquipmentArchivesItem")
 	public R<IPage<CorpEquipmentArchivesItem>> list(CorpEquipmentArchivesItem corpEquipmentArchivesItem, Query query) {
+		LambdaQueryWrapper<CorpEquipmentArchivesItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.like(ObjectUtils.isNotNull(corpEquipmentArchivesItem.getCname()), CorpEquipmentArchivesItem::getCname, corpEquipmentArchivesItem.getCname())
+			.like(ObjectUtils.isNotNull(corpEquipmentArchivesItem.getCode()), CorpEquipmentArchivesItem::getCode, corpEquipmentArchivesItem.getCode())
+			.eq(ObjectUtils.isNotNull(corpEquipmentArchivesItem.getSpecs()), CorpEquipmentArchivesItem::getSpecs, corpEquipmentArchivesItem.getSpecs())
+			.apply(ObjectUtils.isNotNull(corpEquipmentArchivesItem.getCategoryitemId()), "find_in_set(categoryitem_id,'" + corpEquipmentArchivesItem.getCategoryitemId() + "')");
+		if (ObjectUtils.isNotNull(corpEquipmentArchivesItem.getRetrieval())) {
+			lambdaQueryWrapper.and(i -> i.like(CorpEquipmentArchivesItem::getCname, corpEquipmentArchivesItem.getRetrieval())
+				.or().like(CorpEquipmentArchivesItem::getCode, corpEquipmentArchivesItem.getRetrieval())
+				.or().like(CorpEquipmentArchivesItem::getSpecs, corpEquipmentArchivesItem.getRetrieval())
+				.or().apply("find_in_set(categoryitem_id,'" + corpEquipmentArchivesItem.getCategoryitemId() + "')")
+			);
+		}
 		IPage<CorpEquipmentArchivesItem> pages = corpEquipmentArchivesItemService.page(Condition.getPage(query), Condition.getQueryWrapper(corpEquipmentArchivesItem));
 		return R.data(pages);
 	}

+ 2 - 2
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -5934,9 +5934,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						List<Order> orderList1 = baseMapper.selectList(new LambdaQueryWrapper<Order>()
 							.eq(Order::getTenantId, AuthUtil.getTenantId())
 							.eq(Order::getIsDeleted, 0)
-							.eq(Order::getSrcOrderNo, order1.getSrcOrderNo())
+							.eq(Order::getSrcOrderNo, order1.getOrderNo())
 							.eq(Order::getBillType, "CG"));
-						long count = orderList1.stream().filter(e -> "货备齐".equals(e.getFudaPurchaseStatus())).count();
+						long count = orderList1.stream().filter(e -> "货备齐".equals(e.getOrderStatus())).count();
 						if ((orderList1.size() - count) == 1) {
 							order1.setProductionScheduling("货备齐");
 							order1.setOrderStatus("货备齐");

+ 100 - 3
blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java

@@ -483,7 +483,7 @@ public class StockGoodsController extends BladeController {
 			}
 		} else {
 			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNull(corpsAttn)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {
@@ -552,6 +552,103 @@ public class StockGoodsController extends BladeController {
 	}
 
 	/**
+	 * 自定义分页 手机端库存(新-配件)
+	 */
+	@GetMapping("/app-stockPartsPageQB")
+	public R<IPage<AppStockPartsVO>> stockPartsPageQB(HttpServletRequest request, AppStockPartsVO appStockPartsVO, Query query) {
+		System.out.println("Blade-Auth=" + request.getHeader("Blade-Auth"));
+		if (ObjectUtils.isNull(request.getHeader("Blade-Auth"))) {
+			// 获取租户信息
+			R<Tenant> tenant = sysClient.getTenantByAppId(request.getHeader("appId"));
+			if (tenant.isSuccess() && ObjectUtils.isNotNull(tenant.getData())) {
+				appStockPartsVO.setTenantId(tenant.getData().getTenantId());
+			} else {
+				throw new RuntimeException("获取数据失败");
+			}
+		} else {
+			appStockPartsVO.setTenantId(AuthUtil.getTenantId());
+		}
+		if (appStockPartsVO.getLabel() != null && appStockPartsVO.getLabel().length > 0) {
+			appStockPartsVO.setLabels(StringUtil.join(appStockPartsVO.getLabel(), ","));
+		}
+		if (ObjectUtils.isNotNull(appStockPartsVO.getGoodsTypeId())) {
+			List<GoodsType> goodsTypeList = goodsDescClient.getGoodsTypeId(appStockPartsVO.getGoodsTypeId());
+			if (ObjectUtils.isNotNull(goodsTypeList) && goodsTypeList.size() > 0) {
+				List<Long> idList = goodsTypeList.stream().map(GoodsType::getId).distinct().collect(Collectors.toList());
+				StringBuilder ids = new StringBuilder();
+				for (Long id : idList) {
+					ids.append(id).append(",");
+				}
+				ids.append(appStockPartsVO.getGoodsTypeId());
+				appStockPartsVO.setGoodsTypeId(ids.toString());
+			}
+		}
+		String shoppingMall = "";
+		Long corpId = null;
+		if (ObjectUtils.isNotNull(appStockPartsVO.getCorpId())) {
+			CorpsDesc corpsDesc = corpsDescClient.getCorpId(appStockPartsVO.getCorpId());
+			if (ObjectUtils.isNull(corpsDesc)) {
+				throw new RuntimeException("未查到用户信息");
+			} else {
+				shoppingMall = corpsDesc.getShoppingMall();
+			}
+		} else {
+			if (AuthUtil.getUserRole().equals("客户")) {
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
+				if (ObjectUtils.isNull(corpsAttn)) {
+					throw new RuntimeException("未查到用户信息");
+				} else {
+					CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
+					if (ObjectUtils.isNull(corpsDesc)) {
+						throw new RuntimeException("未查到用户信息");
+					} else {
+						shoppingMall = corpsDesc.getShoppingMall();
+						corpId = corpsDesc.getId();
+					}
+				}
+			} else {
+				shoppingMall = "游客";
+			}
+		}
+		appStockPartsVO.setUserType(shoppingMall);
+		String finalShoppingMall = shoppingMall;
+		if ("常买".equals(appStockPartsVO.getLabels())) {
+			appStockPartsVO.setCorpId(corpId);
+			appStockPartsVO.setStandard(sysClient.getParamService("hot.selling.standard"));
+		}
+		IPage<AppStockPartsVO> pages = stockGoodsService.selectAppStockPartsPage(Condition.getPage(query), appStockPartsVO);
+		List<AppStockPartsVO> records = pages.getRecords();
+		if (CollectionUtils.isNotEmpty(records)) {
+			records.forEach(item -> {
+				if (StringUtils.isNotBlank(item.getLabels())) {
+					item.setLabel(item.getLabels().split(","));
+				} else {
+					item.setLabel(new String[]{});
+				}
+				if ("零售价".equals(finalShoppingMall) || "游客".equals(finalShoppingMall)) {
+					item.setSalesPrice(item.getStandardPrice());
+				} else if ("售价1".equals(finalShoppingMall)) {
+					item.setSalesPrice(item.getWholesalePrice());
+				} else if ("售价2".equals(finalShoppingMall)) {
+					item.setSalesPrice(item.getRepairDepotPrice());
+				} else if ("售价3".equals(finalShoppingMall)) {
+					item.setSalesPrice(item.getStorePrice());
+				} else if ("售价4".equals(finalShoppingMall)) {
+					item.setSalesPrice(item.getPrice());
+				} else if ("特价".equals(finalShoppingMall)) {
+					item.setSalesPrice(item.getSpecialOffer());
+				} else {
+					item.setSalesPrice(item.getSpecialOffer());
+				}
+				if (ObjectUtils.isNull(item.getSalesPrice())) {
+					item.setSalesPrice(new BigDecimal("0.00"));
+				}
+			});
+		}
+		return R.data(pages);
+	}
+
+	/**
 	 * 查询库存总数量和总金额
 	 */
 	@GetMapping("/stockPartsTotal")
@@ -585,7 +682,7 @@ public class StockGoodsController extends BladeController {
 		}
 		String shoppingMall = "";
 		if (AuthUtil.getUserRole().equals("客户")) {
-			CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+			CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 			if (ObjectUtils.isNull(corpsAttn)) {
 				throw new RuntimeException("未查到用户信息");
 			} else {
@@ -628,7 +725,7 @@ public class StockGoodsController extends BladeController {
 				}
 			} else {
 				if (AuthUtil.getUserRole().equals("客户")) {
-					CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+					CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 					if (ObjectUtils.isNull(corpsAttn)) {
 						throw new RuntimeException("未查到用户信息");
 					} else {

+ 8 - 1
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

@@ -154,7 +154,14 @@
         t1.update_time AS updateTime,
         t1.arrears AS arrears,
         t1.status AS status,
-        t1.balance_amount AS balanceAmount
+        t1.balance_amount AS balanceAmount,
+        t3.brand AS brand,
+        t3.standard_price AS standardPrice,
+        t3.wholesale_price AS wholesalePrice,
+        t3.repair_depot_price AS repairDepotPrice,
+        t3.store_price AS storePrice,
+        t3.special_offer AS specialOffer,
+        t3.price AS price
         FROM
         business_stock_goods t1
         LEFT JOIN basic_storage_desc t2 ON t1.storage_id = t2.id