纪新园 3 лет назад
Родитель
Сommit
3d7c5b614a

+ 36 - 0
blade-common/src/main/java/org/springblade/common/constant/TenantConstant.java

@@ -68,4 +68,40 @@ public interface TenantConstant {
 	 */
 	String PAYMENT_PARAMETER = "payment.parameter";
 
+	/**
+	 * 订单审核流程
+	 */
+	String APPROVAL_PROCESS = "approval.process";
+
+	/**
+	 * 运费抵消比例
+	 */
+	String OFFSET_RATIO = "offset.ratio";
+
+	/**
+	 * 退货审批-id(XS)
+	 */
+	String RETURN_APPROVAL_ID_XS = "return.approval.id.XS";
+
+	/**
+	 * 退货审批-审批字段
+	 */
+	String RETURN_APPROVAL_FIELD = "return.approval.field";
+
+	/**
+	 * 退货审批-审批名(XS)
+	 */
+	String RETURN_APPROVAL_NAME_XS = "return.approval.name.XS";
+
+	/**
+	 * 退货审批-id(CG)
+	 */
+	String RETURN_APPROVAL_ID_CG = "return.approval.id.CG";
+
+
+	/**
+	 * 退货审批-审批名(CG)
+	 */
+	String RETURN_APPROVAL_NAME_CG = "return.approval.name.CG";
+
 }

+ 4 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/LandOrder.java

@@ -419,4 +419,8 @@ public class LandOrder implements Serializable {
 	//货物体积总和
 	@TableField(exist = false)
 	private Double volumeSum;
+
+	//同步账单(0否1是)
+	@TableField(exist = false)
+	private String synchronization;
 }

+ 16 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/OrderFee.java

@@ -197,4 +197,20 @@ public class OrderFee implements Serializable {
 	@TableField(exist = false)
 	private List<CommonFile> fileList;
 
+	/**
+	 * 生成货款
+	 */
+	@ApiModelProperty(value = "生成货款")
+	private Integer submitPay;
+	/**
+	 * 结算金额
+	 */
+	@ApiModelProperty(value = "结算金额")
+	private BigDecimal settlementAmount;
+	/**
+	 * 结算时间
+	 */
+	@ApiModelProperty(value = "结算时间")
+	private Date settlementDate;
+
 }

+ 18 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/feign/ILandClient.java

@@ -1,10 +1,13 @@
 package org.springblade.land.feign;
 
 import org.springblade.core.tool.api.R;
+import org.springblade.land.entity.LandOrder;
+import org.springblade.land.entity.OrderFee;
 import org.springblade.land.entity.OrderItem;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -17,7 +20,22 @@ public interface ILandClient {
 
 	String LIST_REPORT = LAND_ORDER_ITEM + "/list-report";
 
+	String LIST_LAND_ORDER = LAND_ORDER_ITEM + "/listLandOrder";
+
+	String GET_ORDER_FEE_BY_ID = LAND_ORDER_ITEM + "/getOrderFeeById";
+
 	@PostMapping(LIST_REPORT)
 	R<List<OrderItem>> listReport(@RequestBody OrderItem orderItem);
 
+	@PostMapping("/order/listLandOrder")
+	R<List<LandOrder>> listLandOrder(@RequestBody LandOrder landOrder);
+
+	//通过id查询费用明细
+	@PostMapping("/order-fee/getOrderFeeById")
+	R<OrderFee> getOrderFeeById(@RequestParam("id") Long id);
+
+	//修改费用明细
+	@PostMapping("/order-fee/update")
+	R updateOrderFee( @RequestBody OrderFee orderFee);
+
 }

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

@@ -198,7 +198,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
 			if (ObjectUtils.isNotNull(repair.getTotalAmount())) {
 				repair.setTotalAmount(repairItemList.stream().map(RepairItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			}
-			StringBuilder boxTypeNumber = new StringBuilder();
+			/*StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = repairItemList.stream().map(RepairItem::getBoxType).distinct().collect(Collectors.toList());
 			for (String boxType_ : boxType) {
 				if (ObjectUtils.isNotNull(boxType) && boxType.size() > 0) {
@@ -208,7 +208,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
 					}
 				}
 			}
-			repair.setBoxTypeNumber(boxTypeNumber.toString());
+			repair.setBoxTypeNumber(boxTypeNumber.toString());*/
 			for (RepairItem repairItem : repairItemList) {
 				//明细
 				List<Files> itemFilesList = repairItem.getItemFilesList();

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

@@ -212,7 +212,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			//箱号拼接字符串
 			List<String> codes = tradingBoxItemList.stream().map(TradingBoxItem::getCode).distinct().collect(Collectors.toList());
 			tradingBox.setCode(String.join(",", codes));
-			StringBuilder boxTypeNumber = new StringBuilder();
+			/*StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = tradingBoxItemList.stream().map(TradingBoxItem::getBoxType).distinct().collect(Collectors.toList());
 			for (String boxType_ : boxType) {
 				if (ObjectUtils.isNotNull(boxType) && boxType.size() > 0) {
@@ -222,7 +222,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 					}
 				}
 			}
-			tradingBox.setBoxTypeNumber(boxTypeNumber.toString());
+			tradingBox.setBoxTypeNumber(boxTypeNumber.toString());*/
 			for (TradingBoxItem tradingBoxItem : tradingBoxItemList) {
 				if ("BUY".equals(tradingBox.getType())) {
 					tradingBoxItem.setBoxSource("购买");
@@ -450,7 +450,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			List<String> codes = tradingBoxItemList.stream().map(TradingBoxItem::getCode).distinct().collect(Collectors.toList());
 			tradingBox.setCode(String.join(",", codes));
 
-			StringBuilder boxTypeNumber = new StringBuilder();
+			/*StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = tradingBoxItemList.stream().map(TradingBoxItem::getBoxType).distinct().collect(Collectors.toList());
 			for (String boxType_ : boxType) {
 				if (ObjectUtils.isNotNull(boxType) && boxType.size() > 0) {
@@ -460,7 +460,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 					}
 				}
 			}
-			tradingBox.setBoxTypeNumber(boxTypeNumber.toString());
+			tradingBox.setBoxTypeNumber(boxTypeNumber.toString());*/
 			for (TradingBoxItem tradingBoxItem : tradingBoxItemList) {
 				if (tradingBox.getType().equals("ZR")) {
 					tradingBoxItem.setBoxSource("租入");

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

@@ -204,7 +204,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 			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));
-			StringBuilder boxTypeNumber = new StringBuilder();
+			/*StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = transportItemList.stream().map(TransportItem::getBoxType).distinct().collect(Collectors.toList());
 			for (String boxType_ : boxType) {
 				if (ObjectUtils.isNotNull(boxType) && boxType.size() > 0) {
@@ -214,7 +214,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 					}
 				}
 			}
-			transport.setBoxTypeNumber(boxTypeNumber.toString());
+			transport.setBoxTypeNumber(boxTypeNumber.toString());*/
 			for (TransportItem transportItem : transportItemList) {
 				//明细数据修改添加
 				if (transportItem.getId() == null) {

+ 48 - 12
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderController.java

@@ -16,33 +16,40 @@
  */
 package org.springblade.land.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+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 net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 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.Func;
+import org.springblade.core.tool.utils.*;
 import org.springblade.land.constant.LandConst;
 import org.springblade.land.entity.LandOrder;
+import org.springblade.land.entity.OrderItem;
 import org.springblade.land.excel.*;
 import org.springblade.land.service.IOrderService;
 import org.springblade.land.vo.OrderAcctVO;
 import org.springblade.land.vo.OrderVO;
+import org.springblade.system.user.entity.User;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 陆运订单表 控制器
@@ -162,13 +169,14 @@ public class OrderController extends BladeController {
 
 	/**
 	 * 陆运散货修改状态
-	 * @param id 		主表id
-	 * @param status	状态
+	 *
+	 * @param id     主表id
+	 * @param status 状态
 	 * @return
 	 */
 	@GetMapping("/statusBulkLoad")
 	@ApiOperation(value = "散货修改状态", notes = "传入order")
-	public R statusBulkLoad(Long id,Integer status) {
+	public R statusBulkLoad(Long id, Integer status) {
 		return R.data(orderService.statusBulkLoad(id, status));
 	}
 
@@ -259,7 +267,7 @@ public class OrderController extends BladeController {
 				list = BeanUtil.copy(acct, DdzxAcctExcel.class);
 			}
 			ExcelUtil.export(response, "陆运台账", "陆运台账", list, DdzxAcctExcel.class);
-		}else if (role.contains(LandConst.ROLE_PT) && role.contains(LandConst.ROLE_FGDD)
+		} else if (role.contains(LandConst.ROLE_PT) && role.contains(LandConst.ROLE_FGDD)
 			&& !role.contains(LandConst.ROLE_DUZX) && !role.contains(LandConst.DDZX_MANAGER)) {
 			List<PtAcctExcel> list = new ArrayList<>();
 			if (CollectionUtils.isNotEmpty(acct)) {
@@ -272,25 +280,27 @@ public class OrderController extends BladeController {
 				list = BeanUtil.copy(acct, CdAcctExcel.class);
 			}
 			ExcelUtil.export(response, "陆运台账", "陆运台账", list, CdAcctExcel.class);
-		} else if (role.contains(LandConst.ROLE_ADMIN)){
+		} else if (role.contains(LandConst.ROLE_ADMIN)) {
 			List<AllAcctExcel> list = new ArrayList<>();
 			if (CollectionUtils.isNotEmpty(acct)) {
 				list = BeanUtil.copy(acct, AllAcctExcel.class);
 			}
 			ExcelUtil.export(response, "陆运台账", "陆运台账", list, AllAcctExcel.class);
-		}else if (role.contains(LandConst.ROLE_PT) && role.contains(LandConst.ROLE_ZDD)){
+		} else if (role.contains(LandConst.ROLE_PT) && role.contains(LandConst.ROLE_ZDD)) {
 			List<PtZddAcctExcel> list = new ArrayList<>();
 			if (CollectionUtils.isNotEmpty(acct)) {
 				list = BeanUtil.copy(acct, PtZddAcctExcel.class);
 			}
 			ExcelUtil.export(response, "陆运台账", "陆运台账", list, PtZddAcctExcel.class);
-		}{
+		}
+		{
 			throw new RuntimeException("用户无导出权限");
 		}
 	}
 
 	/**
 	 * 散货台账导出
+	 *
 	 * @param acctVO
 	 */
 	@GetMapping("/bulkCargo-export")
@@ -317,19 +327,19 @@ public class OrderController extends BladeController {
 				list = BeanUtil.copy(acct, bulkCargoCdExcel.class);
 			}
 			ExcelUtil.export(response, "散货台账", "散货台账", list, bulkCargoCdExcel.class);
-		} else if (role.contains(LandConst.ROLE_ADMIN)){//admin看所有
+		} else if (role.contains(LandConst.ROLE_ADMIN)) {//admin看所有
 			List<bulkCargoAllExcel> list = new ArrayList<>();
 			if (CollectionUtils.isNotEmpty(acct)) {
 				list = BeanUtil.copy(acct, bulkCargoAllExcel.class);
 			}
 			ExcelUtil.export(response, "散货台账", "散货台账", list, bulkCargoAllExcel.class);
-		}else if (role.equals("平台,总调度")){//平台总调度增加利润
+		} else if (role.equals("平台,总调度")) {//平台总调度增加利润
 			List<bulkCargoPtZddExcel> list = new ArrayList<>();
 			if (CollectionUtils.isNotEmpty(acct)) {
 				list = BeanUtil.copy(acct, bulkCargoPtZddExcel.class);
 			}
 			ExcelUtil.export(response, "散货台账", "散货台账", list, bulkCargoPtZddExcel.class);
-		}else {
+		} else {
 			throw new RuntimeException("用户无导出权限");
 		}
 	}
@@ -350,4 +360,30 @@ public class OrderController extends BladeController {
 		return R.data(orderService.fileList(id));
 	}
 
+
+	/**
+	 * 分页 陆运订单表
+	 */
+	@GetMapping("/listLandOrder")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<List<LandOrder>> listLandOrder(@RequestBody LandOrder order) {
+		LambdaQueryWrapper<LandOrder> orderQueryWrapper = new LambdaQueryWrapper<>();
+		orderQueryWrapper.eq(ObjectUtil.isNotEmpty(order.getCorpId()), LandOrder::getCorpId, order.getCorpId())
+			.eq(LandOrder::getIsDeleted, 0)
+			.eq(LandOrder::getTenantId, AuthUtil.getTenantId())
+			.ne(LandOrder::getShippingMode, "散货");
+		return R.data(orderService.list(orderQueryWrapper));
+	}
+
+	/**
+	 * 生成账单
+	 */
+	@GetMapping("/generateBill")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入order")
+	public R<LandOrder> generateBill(LandOrder order) {
+		return R.data(orderService.generateBill(order));
+	}
+
 }

+ 7 - 1
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderFeeController.java

@@ -161,7 +161,7 @@ public class OrderFeeController extends BladeController {
 	 */
 	@PostMapping("/confirm")
 	public R confirm(@RequestParam Long orderId, @RequestParam Long itemId) {
-		return R.status(orderFeeService.confirm(orderId,itemId));
+		return R.status(orderFeeService.confirm(orderId, itemId));
 	}
 
 	/**
@@ -188,4 +188,10 @@ public class OrderFeeController extends BladeController {
 		return R.data(orderFeeService.plateNo(orderId, fleetId));
 	}
 
+	//通过id查询费用明细
+	@PostMapping("/getOrderFeeById")
+	public R<OrderFee> getOrderFeeById(@RequestParam("id") Long id) {
+		return R.data(orderFeeService.getById(id));
+	}
+
 }

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

@@ -188,4 +188,6 @@ public interface IOrderService extends IService<LandOrder> {
 	IPage<DataAnalysisVO> getDataAnalysis(IPage<DataAnalysisVO> page, DataAnalysisVO dataAnalysisVO);
 
 	List<DataAnalysisVO> dataAnalysisExport(DataAnalysisVO dataAnalysisVO);
+
+	LandOrder generateBill(LandOrder order);
 }

+ 20 - 0
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderItemServiceImpl.java

@@ -51,6 +51,7 @@ import org.springblade.land.mapper.OrderChangeMapper;
 import org.springblade.land.mapper.OrderItemMapper;
 import org.springblade.land.mapper.OrderMapper;
 import org.springblade.land.service.IOrderItemService;
+import org.springblade.land.service.IOrderService;
 import org.springblade.land.util.MessageUtil;
 import org.springblade.land.vo.OrderItemVO;
 import org.springblade.system.entity.Dept;
@@ -95,6 +96,8 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 
 	private final IUserSearchClient userSearchClient;
 
+	private final IOrderService orderService;
+
 	@Override
 	public IPage<OrderItemVO> selectOrderItemPage(IPage<OrderItemVO> page, OrderItemVO orderItem) {
 		return page.setRecords(baseMapper.selectOrderItemPage(page, orderItem));
@@ -487,6 +490,23 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 		addChange(id, "完工", 1);
 
 		OrderItem data = baseMapper.selectById(id);
+		LambdaQueryWrapper<OrderItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
+			.eq(OrderItem::getIsDeleted, 0)
+			.eq(OrderItem::getKind, 2)
+			.eq(OrderItem::getOrderId, data.getOrderId());
+		List<OrderItem> orderItemList = baseMapper.selectList(lambdaQueryWrapper);
+		int count = 0;
+		for (OrderItem orderItem_ : orderItemList) {
+			if (4 == orderItem_.getStatus()){
+				count++;
+			}
+		}
+		if (orderItemList.size() == count){
+			LandOrder landOrder = new LandOrder();
+			landOrder.setId(data.getOrderId());
+			orderService.generateBill(landOrder);
+		}
 		sendMsgToCorp(data, "WG");
 		sendMsgToUser(data, "WG");
 		sendMsgToFleet(data, "WG");

+ 205 - 0
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -19,6 +19,7 @@ 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.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -31,8 +32,12 @@ import org.springblade.client.feign.*;
 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.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.*;
+import org.springblade.finance.dto.ApplyDTO;
+import org.springblade.finance.feign.IFinanceClient;
+import org.springblade.finance.vojo.Items;
 import org.springblade.land.constant.LandConst;
 import org.springblade.land.entity.*;
 import org.springblade.land.mapper.*;
@@ -91,6 +96,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 
 	private final IUserSearchClient userSearchClient;
 
+	private final IFinanceClient financeClient;//财务
+
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
 		return page.setRecords(baseMapper.selectOrderPage(page, order));
@@ -1274,6 +1281,204 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 		return baseMapper.dataAnalysisExport(dataAnalysisVO);
 	}
 
+	@Override
+	@GlobalTransactional(rollbackFor = Exception.class)
+	public LandOrder generateBill(LandOrder landOrder) {
+		if (null == landOrder.getId()) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		LandOrder order = baseMapper.selectById(landOrder.getId());
+		if (ObjectUtils.isNull(order)) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		Long pid = order.getId();
+		List<Items> itemsList = new ArrayList<>();
+		Items LandOrderItems = new Items();
+		LandOrderItems.setSrcOrderno(order.getBillNo());
+		LandOrderItems.setCorpId(order.getCorpId());
+		LandOrderItems.setSrcParentId(pid);
+		LandOrderItems.setCurrency("CNY");
+		LandOrderItems.setSrcType(9);
+		LandOrderItems.setTradeType("ZDLU");
+		LandOrderItems.setUnit(order.getPricingUnit());
+		LandOrderItems.setSrcSysNo(order.getOrderNo());
+		LandOrderItems.setRemarks(order.getRemarks());
+		LandOrderItems.setSrcBillNo(order.getBillNo());
+		LandOrderItems.setStatusJT(0);
+		LandOrderItems.setBillNo(order.getOrderNo());
+		LandOrderItems.setStockTime(order.getBsDate());
+		//获取费用id
+		LandOrderItems.setCostType(pid.toString());
+		LandOrderItems.setSrcFeesId(pid);
+		CorpsDesc corpsDesc = corpsDescClient.getCorpId(order.getSalesman());
+		if (ObjectUtils.isNotNull(corpsDesc)) {
+			LandOrderItems.setChargeMember(corpsDesc.getCname());
+		}
+		LandOrderItems.setDepartureHarbor(order.getStation());
+		LandOrderItems.setShipName(order.getDispatcher() + "");
+
+		LambdaQueryWrapper<OrderAddress> orderAddressLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		orderAddressLambdaQueryWrapper.eq(OrderAddress::getIsDeleted, 0);
+		orderAddressLambdaQueryWrapper.eq(OrderAddress::getOrderId, pid);
+		orderAddressLambdaQueryWrapper.eq(OrderAddress::getTenantId, AuthUtil.getTenantId());
+		List<OrderAddress> orderAddressList = orderAddressMapper.selectList(orderAddressLambdaQueryWrapper);
+		List<String> arr = orderAddressList.stream().map(OrderAddress::getAddress).distinct().collect(Collectors.toList());
+		LandOrderItems.setObjectiveHarbor(String.join(",", arr));
+
+
+		if ("集装箱".equals(order.getShippingMode())) {
+			LandOrderItems.setSrcBoxBillType("ZDLU-JZX");
+			LandOrderItems.setItemType("ZDLU-JZX");
+			LandOrderItems.setPrice(order.getFreight());
+			//账单数据
+			LandOrderItems.setAmount(order.getFreight());
+			LandOrderItems.setQuantity(new BigDecimal("1"));
+			LandOrderItems.setSrcFeesType("收费");
+			LambdaQueryWrapper<OrderItem> orderItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			orderItemLambdaQueryWrapper.eq(OrderItem::getIsDeleted, 0);
+			orderItemLambdaQueryWrapper.eq(OrderItem::getOrderId, pid);
+			orderItemLambdaQueryWrapper.eq(OrderItem::getTenantId, AuthUtil.getTenantId());
+			orderItemLambdaQueryWrapper.eq(OrderItem::getKind, 2);
+			List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemLambdaQueryWrapper);
+			if (ObjectUtils.isNotNull(orderItemList) && orderItemList.size() > 0) {
+				LandOrderItems.setFleetId(orderItemList.get(0).getFleetId());
+			}
+			List<String> PlateNo = orderItemList.stream().map(OrderItem::getPlateNo).distinct().collect(Collectors.toList());
+			LandOrderItems.setPlateNo(String.join(",", PlateNo));
+			List<String> CtnType = orderItemList.stream().map(OrderItem::getCtnType).distinct().collect(Collectors.toList());
+			LandOrderItems.setCtnType(String.join(",", CtnType));
+			itemsList.add(LandOrderItems);
+		} else {
+			for (int i = 0; i < 2; i++) {
+				Items LandItems = new Items();
+				BeanUtil.copyProperties(LandOrderItems, LandItems);
+				LandItems.setSrcBoxBillType("ZDLU-SH");
+				LandItems.setItemType("ZDLU-SH");
+				LandItems.setQuantity(new BigDecimal("1"));
+				LandItems.setFleetId(order.getFleetId());
+				LandItems.setPlateNo(order.getPlateNo());
+				LandItems.setCtnType("散货");
+
+				if (i == 0 && ObjectUtils.isNotNull(order.getFreightCollect())) {
+					LandItems.setSrcFeesType("收费");
+					LandItems.setPrice(order.getFreightCollect());
+					LandItems.setAmount(order.getFreightCollect());
+					itemsList.add(LandItems);
+				}
+				if (i == 1 && ObjectUtils.isNotNull(order.getFreightPay())) {
+					LandItems.setSrcFeesType("付费");
+					LandItems.setPrice(order.getFreightPay());
+					LandItems.setAmount(order.getFreightPay());
+					itemsList.add(LandItems);
+				}
+			}
+
+		}
+		//账单数据
+		ApplyDTO applyDTO = new ApplyDTO();
+		applyDTO.setTradeType("ZDLU");
+		applyDTO.setBelongCompany(order.getCorpName());
+		BigDecimal amount = BigDecimal.ZERO;//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
+		BigDecimal quantity = new BigDecimal("1");//对账数量 数量为 就是轮胎条数的和
+		BigDecimal price = BigDecimal.ZERO;//对账单价
+
+		//获取订单收款信息
+		LambdaQueryWrapper<OrderFee> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(OrderFee::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(OrderFee::getOrderId, pid);
+		lambdaQueryWrapper.eq(OrderFee::getTenantId, AuthUtil.getTenantId());
+		lambdaQueryWrapper.eq(OrderFee::getSubmitPay, 0);
+		List<OrderFee> transportItemFeesList = orderFeeMapper.selectList(lambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(transportItemFeesList)) {
+			for (OrderFee transportItemFees : transportItemFeesList) {
+				Items items = new Items();
+				amount = transportItemFees.getAmount();
+				//计算单价
+				if (quantity.compareTo(BigDecimal.ZERO) > 0) {
+					price = amount.divide(quantity, 5, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP);
+				}
+				if (1 == transportItemFees.getType()) {
+					items.setSrcFeesType("收费");
+					items.setCorpId(transportItemFees.getCorpId());
+				} else {
+					items.setSrcFeesType("付费");
+					items.setCorpId(transportItemFees.getFleetId());
+				}
+				if ("集装箱".equals(order.getShippingMode())) {
+					items.setSrcBoxBillType("ZDLU-JZX");
+					items.setItemType("ZDLU-JZX");
+				} else {
+					items.setSrcBoxBillType("ZDLU-SH");
+					items.setItemType("ZDLU-SH");
+				}
+				items.setPrice(price);
+				//账单数据
+				items.setAmount(amount);
+				items.setQuantity(quantity);
+				items.setSrcOrderno(order.getBillNo());
+				items.setSrcParentId(transportItemFees.getId());
+				items.setCurrency(transportItemFees.getCurrency());
+				items.setSrcType(10);
+				items.setTradeType("ZDLU");
+				items.setUnit(transportItemFees.getUnit());
+				items.setRemarks(transportItemFees.getRemarks());
+				items.setSrcBillNo(order.getBillNo());
+				items.setStatusJT(0);
+				items.setBillNo(order.getOrderNo());
+				items.setStockTime(order.getBsDate());
+				items.setSrcSysNo(order.getOrderNo());
+				items.setFleetId(transportItemFees.getFleetId());
+				LandOrderItems.setPlateNo(transportItemFees.getPlateNo());
+				//获取费用id
+				if (ObjectUtils.isNotNull(transportItemFees.getFeeId())) {
+					items.setCostType(transportItemFees.getFeeId().toString());
+				}
+				items.setSrcFeesId(transportItemFees.getId());
+				itemsList.add(items);
+				applyDTO.setItemsList(itemsList);
+				//修改费用明细
+				transportItemFees.setSubmitPay(1);
+				orderFeeMapper.updateById(transportItemFees);
+			}
+			if (CollectionUtils.isNotEmpty(itemsList)) {
+				//生成账单
+				R paymentApply = financeClient.paymentApplyLandOrder(applyDTO);
+				if (!paymentApply.isSuccess()) {
+					throw new RuntimeException(paymentApply.getMsg());
+				}
+				//给角色为财务的人发送消息
+				R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
+				if (clientDeptIds.isSuccess() && com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(clientDeptIds.getData())) {
+					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
+					if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+						for (User datum : userList.getData()) {
+							//循环发送消息
+							Message sendMessage = new Message();
+							sendMessage.setParameter(String.valueOf(pid));
+							sendMessage.setUserName(AuthUtil.getUserName());
+							sendMessage.setUserId(AuthUtil.getUserId());
+							sendMessage.setToUserId(datum.getId());
+							sendMessage.setToUserName(datum.getName());
+							sendMessage.setMessageType(1);
+							sendMessage.setTenantId(AuthUtil.getTenantId());
+							sendMessage.setCreateUser(AuthUtil.getUserId());
+							sendMessage.setCreateTime(new Date());
+							/*sendMessage.setUrl(order.getUrl());
+							sendMessage.setPageLabel(order.getPageLabel());
+							sendMessage.setPageStatus(order.getPageStatus());*/
+							sendMessage.setMessageBody("您订单" + order.getOrderNo() + "审核通过,请查看");
+							R save = messageClient.save(sendMessage);
+							if (!save.isSuccess()) {
+								throw new SecurityException("发送消息失败");
+							}
+						}
+					}
+				}
+			}
+		}
+		return null;
+	}
+
 	private List<OrderItem> getOrderItemList(Long id) {
 		List<OrderItem> orderItemList = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>()
 			.eq(OrderItem::getOrderId, id)

+ 1 - 1
blade-service/blade-school/src/main/java/org/springblade/school/controller/SalaryController.java

@@ -169,7 +169,7 @@ public class SalaryController extends BladeController {
 	 * checkType 审批类型 小学工资 xsgz 初中工资 czgz 小学 高中工资 gzgz 后勤工资 hqgz
 	 * @return
 	 */
-	@PostMapping("checkOrder")
+	@PostMapping("/checkOrder")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "请核数据", notes = "传入主表id")
 	public R checkOrder(@RequestBody Salary salary)