Forráskód Böngészése

出口贸易采购询价、船务询价功能 订单主表加采购核销备注 销售核销备注

lazhaoqian 4 éve
szülő
commit
308e01c64e

+ 10 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -558,6 +558,16 @@ public class Order implements Serializable {
 	 */
 	@ApiModelProperty(value = "是否船务")
 	private String ifShipping;
+	/**
+	 * 采购核价备注
+	 */
+	@ApiModelProperty(value = "采购核价备注")
+	private String purchasePricingRemarks;
+	/**
+	 * 销售核价备注
+	 */
+	@ApiModelProperty(value = "销售核价备注")
+	private String sellPricingRemarks;
 
 
 }

+ 10 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java

@@ -485,5 +485,15 @@ public class Order extends OrderBase {
 	 */
 	@ApiModelProperty(value = "是否船务")
 	private String ifShipping;
+	/**
+	 * 采购核价备注
+	 */
+	@ApiModelProperty(value = "采购核价备注")
+	private String purchasePricingRemarks;
+	/**
+	 * 销售核价备注
+	 */
+	@ApiModelProperty(value = "销售核价备注")
+	private String sellPricingRemarks;
 
 }

+ 8 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/enums/OrderTypeEnum.java

@@ -36,6 +36,14 @@ public enum OrderTypeEnum {
 	 * 询价
 	 */
 	ENQUIRY("XJ"),
+	/**
+	 * 采购询价
+	 */
+	PURCHASE_ENQUIRY("CGXJ"),
+	/**
+	 * 船务询价
+	 */
+	SHIPPING_ENQUIRY("CWXJ"),
 
 
 

+ 7 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderVO.java

@@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 销售或采购订单表视图实体类
@@ -80,6 +81,12 @@ public class OrderVO extends Order {
 	 */
 	@ApiModelProperty(value = "供应商名称")
 	private String corpName;
+	/**
+	 * 回显客户中文名
+	 */
+	@ApiModelProperty(value = "回显客户中文名")
+	@TableField(exist = false)
+	private List<Map<String,Object>> corpsName;
 
 
 

+ 2 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -95,6 +95,8 @@
         <result column="order_status" property="orderStatus"/>
         <result column="if_enquiry" property="ifEnquiry"/>
         <result column="if_shipping" property="ifShipping"/>
+        <result column="purchase_pricing_remarks" property="purchasePricingRemarks"/>
+        <result column="sell_pricing_remarks" property="sellPricingRemarks"/>
     </resultMap>
 
 

+ 212 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/enquiry/PurchaseEnquiry.java

@@ -0,0 +1,212 @@
+package com.trade.purchase.enquiry;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.order.dto.OrderSubmitDto;
+import com.trade.purchase.order.entity.Order;
+import com.trade.purchase.order.entity.OrderFees;
+import com.trade.purchase.order.entity.OrderFiles;
+import com.trade.purchase.order.entity.OrderItems;
+import com.trade.purchase.order.enums.OrderTypeEnum;
+import com.trade.purchase.order.service.IOrderFeesService;
+import com.trade.purchase.order.service.IOrderFilesService;
+import com.trade.purchase.order.service.IOrderItemsService;
+import com.trade.purchase.order.service.IOrderService;
+import com.trade.purchase.order.vo.OrderVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+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;
+
+/**
+ * 出口采购询价 控制器
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/purchase-enquiry")
+@Api(value = "出口采购询价", tags = "出口采购询价接口")
+public class PurchaseEnquiry  extends BladeController {
+
+	private final IOrderService orderService;
+
+	private final IOrderFeesService orderFeesService;
+
+	private final IOrderFilesService orderFilesService;
+
+	private final IOrderItemsService orderItemsService;
+
+	private final String ERROR_MSG = "缺少查询信息";
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/{id}")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入order")
+	public R<OrderVO> detail(@PathVariable(value = "id") String id) {
+		return orderService.getOrderMessage(id);
+	}
+
+	/**
+	 * 分页 出口采购询价
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "查询所有", notes = "传入order")
+	public R<IPage<Order>> list(Order order, Query query) {
+		order.setIsDeleted(0);
+		order.setTenantId(AuthUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
+		order.setTradeType(OrderTypeEnum.EXPORT.getType());
+		IPage<Order> pages = orderService.page(Condition.getPage(query), Condition.getQueryWrapper(order));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 出口采购询价
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<IPage<OrderVO>> page(OrderVO order, Query query) {
+		order.setIsDeleted(0);
+		order.setTenantId(AuthUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
+		order.setTradeType(OrderTypeEnum.EXPORT.getType());
+		IPage<OrderVO> pages = orderService.selectOrderPage(Condition.getPage(query), order);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 出口采购询价
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入order")
+	public R<String> save(@Valid @RequestBody OrderSubmitDto submitDto) {
+		submitDto.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
+		submitDto.setTradeTypeEnum(OrderTypeEnum.EXPORT);
+		return orderService.saveOrderMessage(submitDto);
+	}
+
+	/**
+	 * 修改 出口采购询价
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入order")
+	public R<String> update(@Valid @RequestBody Order order) {
+		if (order.getId() == null) {
+			return R.fail(ERROR_MSG);
+		}
+		order.setIsDeleted(1);
+		return R.status(orderService.updateById(order));
+	}
+
+	/**
+	 * 新增或修改 出口采购询价
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入order")
+	public R<String> submit(@Valid @RequestBody OrderSubmitDto submitDto) {
+		submitDto.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
+		submitDto.setTradeTypeEnum(OrderTypeEnum.EXPORT);
+		return orderService.submitOrderMessage(submitDto);
+	}
+
+	/**
+	 * 采购订单表
+	 */
+	@PostMapping("/removeByItem")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "删除明细信息", notes = "传入order")
+	public R<String> update(@Valid @RequestBody OrderItems order) {
+		if (order.getId() == null) {
+			return R.fail(500, "请选择要删除的数据");
+		}
+		order.setIsDeleted(1);
+		return R.status(orderItemsService.updateById(order));
+	}
+
+	/**
+	 * 删除 出口采购询价
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R<String> remove(@Valid @RequestBody Order order) {
+		if (order.getId() == null){
+			return R.fail(500,"请选择要删除的数据");
+		}
+		return R.status(orderService.removeById(order));
+	}
+	@PostMapping("/remove-byItem")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "删除明细信息", notes = "传入order")
+	public R<String> removeByitem(@Valid @RequestBody OrderItems order) {
+		if (order.getId() == null) {
+			return R.fail(500, "请选择要删除的数据");
+		}
+		return R.status(orderItemsService.removeById(order));
+	}
+
+
+	/**
+	 * 删除费用信息
+	 */
+	@PostMapping("/removeByFees")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除费用信息", notes = "传入order")
+	public R<String> update(@Valid @RequestBody OrderFees order) {
+		if (order.getId() == null) {
+			return R.fail(ERROR_MSG);
+		}
+		order.setIsDeleted(1);
+		return R.status(orderFeesService.updateById(order));
+	}
+
+	/**
+	 * 删除订单文件信息
+	 *
+	 * @param order
+	 * @return
+	 */
+	@PostMapping("/removeByFiles")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "删除文件信息", notes = "传入order")
+	public R<String> update(@Valid @RequestBody OrderFiles order) {
+		if (order.getId() == null) {
+			return R.fail(ERROR_MSG);
+		}
+		order.setIsDeleted(1);
+		return R.status(orderFilesService.updateById(order));
+	}
+
+	/**
+	 * 报价单生成采购询价
+	 * @param order
+	 * @return
+	 */
+	@PostMapping("/savePurchaseEnquiry")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "报价单生成采购询价单", notes = "传入order的id")
+	public R<OrderVO> savePurchaseEnquiry(@Valid @RequestBody Order order){
+		order.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
+		order.setTradeType(OrderTypeEnum.EXPORT.getType());
+		return orderService.savePurchaseEnquiry(order);
+	}
+
+}

+ 183 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/enquiry/ShippingEnquiry.java

@@ -0,0 +1,183 @@
+package com.trade.purchase.enquiry;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.order.dto.OrderSubmitDto;
+import com.trade.purchase.order.entity.Order;
+import com.trade.purchase.order.entity.OrderFees;
+import com.trade.purchase.order.entity.OrderFiles;
+import com.trade.purchase.order.entity.OrderItems;
+import com.trade.purchase.order.enums.OrderTypeEnum;
+import com.trade.purchase.order.service.IOrderFeesService;
+import com.trade.purchase.order.service.IOrderFilesService;
+import com.trade.purchase.order.service.IOrderItemsService;
+import com.trade.purchase.order.service.IOrderService;
+import com.trade.purchase.order.vo.OrderVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+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;
+
+/**
+ * 出口船务询价 控制器
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/shipping-enquiry")
+@Api(value = "出口船务询价", tags = "出口船务询价接口")
+public class ShippingEnquiry extends BladeController {
+
+	private final IOrderService orderService;
+
+	private final IOrderFeesService orderFeesService;
+
+	private final IOrderFilesService orderFilesService;
+
+	private final IOrderItemsService orderItemsService;
+
+	private final String ERROR_MSG = "缺少查询信息";
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/{id}")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入order")
+	public R<OrderVO> detail(@PathVariable(value = "id") String id) {
+		return orderService.getOrderMessage(id);
+	}
+
+	/**
+	 * 分页 出口采购询价
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "查询所有", notes = "传入order")
+	public R<IPage<Order>> list(Order order, Query query) {
+		order.setIsDeleted(0);
+		order.setTenantId(AuthUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.ENQUIRY.getType());
+		order.setTradeType(OrderTypeEnum.EXPORT.getType());
+		IPage<Order> pages = orderService.page(Condition.getPage(query), Condition.getQueryWrapper(order));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 出口采购询价
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<IPage<OrderVO>> page(OrderVO order, Query query) {
+		order.setIsDeleted(0);
+		order.setTenantId(AuthUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.ENQUIRY.getType());
+		order.setTradeType(OrderTypeEnum.EXPORT.getType());
+		IPage<OrderVO> pages = orderService.shippingEnquiry(Condition.getPage(query), order);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 出口采购询价
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入order")
+	public R<String> save(@Valid @RequestBody OrderSubmitDto submitDto) {
+		submitDto.setBillType(OrderTypeEnum.ENQUIRY.getType());
+		submitDto.setTradeTypeEnum(OrderTypeEnum.EXPORT);
+		return orderService.saveOrderMessage(submitDto);
+	}
+
+	/**
+	 * 修改 出口采购询价
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入order")
+	public R<String> update(@Valid @RequestBody Order order) {
+		if (order.getId() == null) {
+			return R.fail(ERROR_MSG);
+		}
+		order.setIfShipping("已提交");
+		return R.status(orderService.updateById(order));
+	}
+
+	/**
+	 * 新增或修改 出口采购询价
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入order")
+	public R<OrderSubmitDto> submit(@Valid @RequestBody OrderSubmitDto submitDto) {
+		submitDto.setBillType(OrderTypeEnum.ENQUIRY.getType());
+		submitDto.setTradeTypeEnum(OrderTypeEnum.EXPORT);
+		return orderService.saveShippingMessage(submitDto);
+	}
+
+	/**
+	 * 采购订单表
+	 */
+	@PostMapping("/removeByItem")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "删除明细信息", notes = "传入order")
+	public R<String> update(@Valid @RequestBody OrderItems order) {
+		if (order.getId() == null) {
+			return R.fail(500, "请选择要删除的数据");
+		}
+		order.setIsDeleted(1);
+		return R.status(orderItemsService.updateById(order));
+	}
+
+	/**
+	 * 删除 出口采购询价
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R<String> remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(orderService.removeByIds(Func.toLongList(ids)));
+	}
+
+
+	/**
+	 * 删除费用信息
+	 */
+	@PostMapping("/removeByFees")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除费用信息", notes = "传入order")
+	public R<String> update(@Valid @RequestBody OrderFees order) {
+		if (order.getId() == null) {
+			return R.fail(ERROR_MSG);
+		}
+		return R.status(orderFeesService.removeById(order));
+	}
+
+	/**
+	 * 删除订单文件信息
+	 *
+	 * @param order
+	 * @return
+	 */
+	@PostMapping("/removeByFiles")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "删除文件信息", notes = "传入order")
+	public R<String> update(@Valid @RequestBody OrderFiles order) {
+		if (order.getId() == null) {
+			return R.fail(ERROR_MSG);
+		}
+		return R.status(orderFilesService.removeById(order));
+	}
+}

+ 2 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml

@@ -95,6 +95,8 @@
         <result column="order_status" property="orderStatus"/>
         <result column="if_enquiry" property="ifEnquiry"/>
         <result column="if_shipping" property="ifShipping"/>
+        <result column="purchase_pricing_remarks" property="purchasePricingRemarks"/>
+        <result column="sell_pricing_remarks" property="sellPricingRemarks"/>
     </resultMap>
 
 

+ 22 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderService.java

@@ -48,4 +48,26 @@ public interface IOrderService extends IService<Order> {
 	 */
 	R<OrderVO> getOrderMessage(String id);
 
+	/**
+	 * 报价单生成采购询价单
+	 * @param order
+	 * @return
+	 */
+	R<OrderVO> savePurchaseEnquiry(Order order);
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param order
+	 * @return
+	 */
+	IPage<OrderVO> shippingEnquiry(IPage<OrderVO> page, OrderVO order);
+
+	/**
+	 * 保存船务询价信息
+	 * @param submitDto
+	 * @return
+	 */
+	R<OrderSubmitDto> saveShippingMessage(OrderSubmitDto submitDto);
+
 }

+ 140 - 10
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -1,6 +1,8 @@
 package com.trade.purchase.order.service.impl;
 
+import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +15,7 @@ import com.trade.purchase.order.component.IOrderSave;
 import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.*;
 import com.trade.purchase.order.enums.OrderStatusEnum;
+import com.trade.purchase.order.enums.OrderTypeEnum;
 import com.trade.purchase.order.mapper.OrderMapper;
 import com.trade.purchase.order.service.IOrderService;
 import com.trade.purchase.order.vo.OrderVO;
@@ -23,9 +26,11 @@ import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
+import org.springblade.client.feign.ISerialClient;
 import org.springblade.client.vo.CorpsDescVO;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
@@ -33,10 +38,9 @@ import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -54,6 +58,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	private OrderItemsServiceImpl orderItemsService;//订单明细表
 	private OrderModifyServiceImpl orderModifyService;//订单修改日志
 	private IUserClient userClient;//获取用户信息
+	private ISerialClient serialClient;//生成系统编号
 	private IFeesDescClient feesDescClient;//获取费用信息
 	private IGoodsDescClient goodsDescClient;//获取商品信息
 	private ICorpsDescClient corpsDescClient;//获取客户信息
@@ -75,14 +80,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			// 转VO
 			List<OrderVO> copy = BeanUtil.copy(records, OrderVO.class);
 			// 获取客户信息
-			/*R<List<CorpsDescVO>> listR = corpsDescClient.selCorpsDetails(AuthUtil.getTenantId());
-			if (!listR.isSuccess() || CollectionUtils.isEmpty(listR.getData())) {
-				throw new OrderException("找不到客户信息");
+			if (CollectionUtils.isNotEmpty(copy)){
+				copy.stream().forEach(item ->{
+					if (item.getCorpId() != null){
+						R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());
+						if (corpMessage.isSuccess() && corpMessage.getData() != null){
+							item.setCorpName(corpMessage.getData().getCname());
+						}
+					}
+				});
 			}
-			copy.forEach(li -> {
-				Optional<CorpsDescVO> first = listR.getData().stream().filter(corp -> Objects.equals(corp.getId(), li.getCorpId())).findFirst();
-				first.ifPresent(corpsDescVO -> li.setCorpName(corpsDescVO.getCname()));
-			});*/
 			List<OrderVO> orderVOList = records.stream().map(OrderMapstructMapper.INSTANCE::toVo).collect(Collectors.toList());
 			page.setRecords(copy);
 		}
@@ -165,6 +172,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (createUser.isSuccess()) {
 			vo.setCreateUserName(createUser.getData().getName());
 		}
+		//获取客户中文名
+		if (orderMessage.getCorpId() != null){
+			R<List<Map<String,Object>>> corpMessage = corpsDescClient.getCorpsMessage(orderMessage.getCorpId().toString());
+			if (corpMessage.isSuccess() && corpMessage.getData() != null){
+				vo.setCorpsName(corpMessage.getData());
+			}
+		}
 		//获取订单明细信息
 		List<OrderItems> orderItemsList = this.getOrderItems(vo.getId());
 		if (CollectionUtils.isNotEmpty(orderItemsList)) {
@@ -191,6 +205,100 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	/**
+	 * 报价单生成采购询价单
+	 * @param order
+	 * @return
+	 */
+	@Override
+	@Transactional
+	public R<OrderVO> savePurchaseEnquiry(Order order) {
+		Order purchaseEnquiry = baseMapper.selectById(order.getId());
+		//获取系统编号
+		R billNo = serialClient.getBillNo(order.getBillType());
+		if (!billNo.isSuccess()){
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			return R.fail(500,"生成系统编号失败");
+		}
+		purchaseEnquiry.setSrcId(purchaseEnquiry.getId());
+		purchaseEnquiry.setSrcOrderNo(purchaseEnquiry.getSysNo());
+		purchaseEnquiry.setSysNo((String) billNo.getData());
+		purchaseEnquiry.setUpdateUser(SecureUtil.getUserId());
+		purchaseEnquiry.setUpdateTime(new Date());
+		purchaseEnquiry.setIfEnquiry("已提交");
+		purchaseEnquiry.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
+		purchaseEnquiry.setTradeType(OrderTypeEnum.EXPORT.getType());
+		purchaseEnquiry.setId(null);
+		baseMapper.insert(purchaseEnquiry);
+		OrderVO vo = OrderMapstructMapper.INSTANCE.toVo(purchaseEnquiry);
+		//保存明细数据
+		List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId())
+			.eq("tenant_id", SecureUtil.getTenantId()).eq("is_deleted", 0).orderByAsc("sort"));
+		if (CollectionUtils.isNotEmpty(list)){
+			list.stream().forEach(item ->{
+				item.setId(null);
+				item.setPid(purchaseEnquiry.getId());
+				item.setUpdateUser(SecureUtil.getUserId());
+				item.setUpdateTime(new Date());
+				orderItemsService.save(item);
+			});
+		}
+		vo.setItemsVOList(list.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList()));
+		return R.data(vo);
+	}
+
+	@Override
+	public IPage<OrderVO> shippingEnquiry(IPage<OrderVO> page, OrderVO order) {
+		LambdaQueryWrapper<Order> lambdaQuery = Wrappers.<Order>lambdaQuery();
+		// 组装查询条件
+		pageShippingEnquiry(lambdaQuery, order);
+
+		Page<Order> orderPage = this.page(new Page<>(page.getCurrent(), page.getSize()), lambdaQuery);
+		if (CollectionUtils.isNotEmpty(orderPage.getRecords())) {
+			List<Order> records = orderPage.getRecords();
+			// 转VO
+			List<OrderVO> copy = BeanUtil.copy(records, OrderVO.class);
+			// 获取客户信息
+			/*R<List<CorpsDescVO>> listR = corpsDescClient.selCorpsDetails(AuthUtil.getTenantId());
+			if (!listR.isSuccess() || CollectionUtils.isEmpty(listR.getData())) {
+				throw new OrderException("找不到客户信息");
+			}
+			copy.forEach(li -> {
+				Optional<CorpsDescVO> first = listR.getData().stream().filter(corp -> Objects.equals(corp.getId(), li.getCorpId())).findFirst();
+				first.ifPresent(corpsDescVO -> li.setCorpName(corpsDescVO.getCname()));
+			});*/
+			List<OrderVO> orderVOList = records.stream().map(OrderMapstructMapper.INSTANCE::toVo).collect(Collectors.toList());
+			page.setRecords(copy);
+		}
+		page.setTotal(orderPage.getTotal());
+		return page;
+	}
+
+	/**
+	 * 船务询价修改费用信息
+	 * @param submitDto
+	 * @return
+	 */
+	@Override
+	public R<OrderSubmitDto> saveShippingMessage(OrderSubmitDto submitDto) {
+		if (CollectionUtils.isNotEmpty(submitDto.getOrderFeesList())){
+			submitDto.getOrderFeesList().stream().forEach(item ->{
+				item.setTenantId(SecureUtil.getTenantId());
+				if (item.getId() == null){
+					item.setCreateUser(SecureUtil.getUserId());
+					item.setCreateTime(new Date());
+					item.setPid(submitDto.getId());
+					orderFeesService.save(item);
+				}else {
+					item.setUpdateUser(SecureUtil.getUserId());
+					item.setUpdateTime(new Date());
+					orderFeesService.updateById(item);
+				}
+			});
+		}
+		return R.data(submitDto);
+	}
+
+	/**
 	 * 获取订单明细数据
 	 *
 	 * @param orderId 订单id
@@ -259,5 +367,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 		return orderFeesList;
 	}
+	/**
+	 * 组装查询条件
+	 *
+	 * @param lambdaQuery 查询信息
+	 * @param order       查询条件
+	 */
+	private void pageShippingEnquiry(LambdaQueryWrapper<Order> lambdaQuery, OrderVO order) {
+		lambdaQuery.eq(Func.notNull(order.getCorpId()), Order::getCorpId, order.getCorpId());
+		lambdaQuery.eq(Func.isNotBlank(order.getPaymentType()), Order::getPaymentType, order.getPaymentType());
+		lambdaQuery.eq(Func.isNotBlank(order.getPackageRemarks()), Order::getPackageRemarks, order.getPackageRemarks());
+		lambdaQuery.eq(Func.notNull(order.getOceanFreight()), Order::getOceanFreight, order.getOceanFreight());
+		lambdaQuery.eq(Order::getTenantId, AuthUtil.getTenantId());
+		lambdaQuery.eq(Order::getBillType, order.getBillType());
+		lambdaQuery.eq(Order::getTradeType, order.getTradeType());
+		lambdaQuery.like(Func.isNotBlank(order.getSysNo()), Order::getSysNo, order.getSysNo());
+		lambdaQuery.like(Func.isNotBlank(order.getBanks()), Order::getBanks, order.getBanks());
+		lambdaQuery.like(Func.isNotBlank(order.getSrcOrderNo()), Order::getSrcOrderNo, order.getSrcOrderNo());
+		lambdaQuery.like(Func.isNotBlank(order.getBanksAccountName()), Order::getBanksAccountName, order.getBanksAccountName());
+		lambdaQuery.ne(Order::getIfShipping,"无");
+		lambdaQuery.between(Func.isNotBlank(order.getArrivalDateStart()), Order::getRequiredArrivalDate,
+			order.getArrivalDateStart(), order.getArrivalDateEnd());
+	}
 
 }