فهرست منبع

陆运修改

Signed-off-by: sunhz <mpcoo@foxmail.com>
sunhz 3 سال پیش
والد
کامیت
b4ecf03402
15فایلهای تغییر یافته به همراه521 افزوده شده و 63 حذف شده
  1. 2 0
      blade-service-api/blade-land-api/src/main/java/org/springblade/land/constant/LandConstant.java
  2. 30 1
      blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/OrderFee.java
  3. 77 0
      blade-service-api/blade-land-api/src/main/java/org/springblade/land/vo/OrderAcctVO.java
  4. 12 0
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderController.java
  5. 49 3
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderFeeController.java
  6. 43 44
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderIndexController.java
  7. 8 0
      blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderItemController.java
  8. 11 0
      blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.java
  9. 52 1
      blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.xml
  10. 49 0
      blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderFeeService.java
  11. 8 0
      blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderItemService.java
  12. 18 0
      blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderService.java
  13. 114 0
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderFeeServiceImpl.java
  14. 12 0
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderItemServiceImpl.java
  15. 36 14
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

+ 2 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/constant/LandConstant.java

@@ -14,4 +14,6 @@ public interface LandConstant {
 
 	String TRACK_REQ_SUCCESS = "1001";
 
+	String LAND_ORDER_FEE = "LAND_ORDER_FEE";
+
 }

+ 30 - 1
blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/OrderFee.java

@@ -23,12 +23,13 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springblade.client.entity.CommonFile;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 陆运订单费用表实体类
@@ -65,6 +66,11 @@ public class OrderFee implements Serializable {
 	@ApiModelProperty(value = "费用ID")
 	private Long feeId;
 	/**
+	 * 车牌号
+	 */
+	@ApiModelProperty(value = "车牌号")
+	private String plateNo;
+	/**
 	 * 类型(1-收、2-付)
 	 */
 	@ApiModelProperty(value = "类型(1-收、2-付)")
@@ -115,6 +121,23 @@ public class OrderFee implements Serializable {
 	@ApiModelProperty(value = "备注")
 	private String remarks;
 	/**
+	 * 确认状态
+	 */
+	@ApiModelProperty(value = "确认状态")
+	private Integer confirmStatus;
+	/**
+	 * 确认人
+	 */
+	@ApiModelProperty(value = "确认人")
+	private Long confirmUser;
+	/**
+	 * 确认时间
+	 */
+	@ApiModelProperty(value = "确认时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date confirmTime;
+	/**
 	 * 租户
 	 */
 	@ApiModelProperty(value = "租户")
@@ -155,4 +178,10 @@ public class OrderFee implements Serializable {
 	@TableField(exist = false)
 	private String corpName;
 
+	@TableField(exist = false)
+	private String confirmUserName;
+
+	@TableField(exist = false)
+	private List<CommonFile> fileList;
+
 }

+ 77 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/vo/OrderAcctVO.java

@@ -0,0 +1,77 @@
+package org.springblade.land.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 陆运台账
+ *
+ * @author s
+ */
+@Data
+public class OrderAcctVO {
+
+	private Long orderId;
+
+	private String shippingMode;
+
+	private String corpName;
+
+	private String corpShortName;
+
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date arrivalTime;
+
+	private Long salesman;
+
+	private String salesmanName;
+
+	private List<Long> salesmanDeptList;
+
+	private String addressDetail;
+
+	private String receiptNo;
+
+	private String billNo;
+
+	private String station;
+
+	private String ctnDetail;
+
+	private String fleetName;
+
+	private String fleetShortName;
+
+	private String plateNo;
+
+	private BigDecimal landAmountC;
+
+	private BigDecimal extraAmountC;
+
+	private BigDecimal landAmountD;
+
+	private BigDecimal extraAmountD;
+
+	private String remarks;
+
+	private Integer status;
+
+	private Integer confirmStatus;
+
+	private BigDecimal profit;
+
+	private String tenantId;
+
+	private String beginArrivalTime;
+
+	private String endArrivalTime;
+
+	private String beginCreateTime;
+
+	private String endCreateTime;
+
+}

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

@@ -29,6 +29,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.land.entity.Order;
 import org.springblade.land.service.IOrderService;
+import org.springblade.land.vo.OrderAcctVO;
 import org.springblade.land.vo.OrderVO;
 import org.springframework.web.bind.annotation.*;
 
@@ -69,6 +70,17 @@ public class OrderController extends BladeController {
 	}
 
 	/**
+	 * 分页 陆运台账
+	 */
+	@GetMapping("/acct")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "陆运台账", notes = "传入orderAcctVO")
+	public R<IPage<OrderAcctVO>> acct(OrderAcctVO acctVO, Query query) {
+		IPage<OrderAcctVO> pages = orderService.getAcct(Condition.getPage(query), acctVO);
+		return R.data(pages);
+	}
+
+	/**
 	 * 统计
 	 */
 	@GetMapping("/count")

+ 49 - 3
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderFeeController.java

@@ -33,6 +33,7 @@ import org.springblade.land.vo.OrderFeeVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 陆运订单费用表 控制器
@@ -42,7 +43,7 @@ import javax.validation.Valid;
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/orderfee")
+@RequestMapping("/order-fee")
 @Api(value = "陆运订单费用表", tags = "陆运订单费用表接口")
 public class OrderFeeController extends BladeController {
 
@@ -71,6 +72,16 @@ public class OrderFeeController extends BladeController {
 	}
 
 	/**
+	 * 分页 陆运订单费用表
+	 */
+	@GetMapping("/list-no-page")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入orderFee")
+	public R<List<OrderFee>> list(OrderFee orderFee) {
+		return R.data(orderFeeService.getListNoPage(orderFee));
+	}
+
+	/**
 	 * 自定义分页 陆运订单费用表
 	 */
 	@GetMapping("/page")
@@ -88,7 +99,7 @@ public class OrderFeeController extends BladeController {
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增", notes = "传入orderFee")
 	public R save(@Valid @RequestBody OrderFee orderFee) {
-		return R.status(orderFeeService.save(orderFee));
+		return R.data(orderFeeService.saveOrderFee(orderFee));
 	}
 
 	/**
@@ -119,8 +130,43 @@ public class OrderFeeController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "删除", notes = "传入ids")
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(orderFeeService.removeByIds(Func.toLongList(ids)));
+		return R.status(orderFeeService.removeOrderFee(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 附件上传
+	 */
+	@PostMapping("/file")
+	@ApiOperationSupport(order = 15)
+	@ApiOperation(value = "附件上传", notes = "传入fileList")
+	public R file(@RequestBody OrderFee orderFee) {
+		return R.status(orderFeeService.file(orderFee));
 	}
 
+	/**
+	 * 附件列表
+	 */
+	@GetMapping("/file-list")
+	@ApiOperationSupport(order = 16)
+	@ApiOperation(value = "附件列表", notes = "传入id")
+	public R fileList(Long id) {
+		return R.data(orderFeeService.fileList(id));
+	}
+
+	/**
+	 * 确认
+	 */
+	@PostMapping("/confirm")
+	public R confirm(@RequestParam String ids) {
+		return R.status(orderFeeService.confirm(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 取消确认
+	 */
+	@PostMapping("/cancel-confirm")
+	public R cancelConfirm(@RequestParam String ids) {
+		return R.status(orderFeeService.cancelConfirm(Func.toLongList(ids)));
+	}
 
 }

+ 43 - 44
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderIndexController.java

@@ -33,15 +33,14 @@ import org.springblade.land.entity.Order;
 import org.springblade.land.entity.OrderItem;
 import org.springblade.land.service.IOrderItemService;
 import org.springblade.land.service.IOrderService;
-import org.springblade.system.feign.ISysClient;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.feign.IUserClient;
+import org.springblade.land.vo.OrderAcctVO;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 陆运订单明细表 控制器
@@ -63,10 +62,6 @@ public class OrderIndexController extends BladeController {
 
 	private final ICorpsDescClient corpsDescClient;
 
-	private final ISysClient sysClient;
-
-	private final IUserClient userClient;
-
 	/**
 	 * 统计
 	 */
@@ -151,7 +146,34 @@ public class OrderIndexController extends BladeController {
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "业务统计")
 	public R bizCount(Integer mold) {
-		List<OrderItem> itemList = orderItemService.list(getBizWrapper(mold, 0));
+		LambdaQueryWrapper<OrderItem> wrapper = new LambdaQueryWrapper<OrderItem>()
+			.between(OrderItem::getCreateTime, getTime(true), getTime(false))
+			.eq(OrderItem::getKind, 2)
+			.eq(OrderItem::getIsDeleted, 0)
+			.eq(OrderItem::getTenantId, AuthUtil.getTenantId());
+
+		// 获取角色
+		String userRole = AuthUtil.getUserRole();
+		if (userRole.contains("总经理")) {
+
+		} else if (userRole.contains("部门经理")) {
+			String deptId = AuthUtil.getDeptId();
+			if (StringUtil.isNotBlank(deptId)) {
+				wrapper.in(OrderItem::getSalesmanDept, Arrays.asList(deptId.split(",")));
+			}
+		} else {
+			wrapper.eq(OrderItem::getSalesman, AuthUtil.getUserId());
+		}
+
+		if (mold == 1) {
+			wrapper.eq(OrderItem::getShippingMode, "集装箱");
+		} else if (mold == 2) {
+			wrapper.eq(OrderItem::getShippingMode, "散货");
+		} else {
+			wrapper.eq(OrderItem::getShippingMode, "特种车辆");
+		}
+
+		List<OrderItem> itemList = orderItemService.list(wrapper);
 
 		Map<String, Object> data = new HashMap<>();
 		Map<String, Object> table;
@@ -197,32 +219,7 @@ public class OrderIndexController extends BladeController {
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "业务详情")
 	public R bizDetail(Integer mold, Integer status) {
-		List<OrderItem> itemList = orderItemService.list(getBizWrapper(mold, status));
-		itemList.forEach(item -> {
-			Order order = orderService.getById(item.getOrderId());
-			item.setBillNo(order.getBillNo());
-			item.setStation(order.getStation());
-			item.setAddressDetail(order.getAddressDetail());
-			item.setAllFeeD(item.getOneFeeD().add(item.getTwoFeeD()).add(item.getThreeFeeD()).add(item.getFourFeeD()).add(item.getFiveFeeD()));
-			item.setAllFeeC(item.getOneFeeC().add(item.getTwoFeeC()).add(item.getThreeFeeC()).add(item.getFourFeeC()).add(item.getFiveFeeC()));
-
-			if (!ObjectUtil.isEmpty(order.getSalesman())) {
-				R<User> user = userClient.userInfoById(order.getSalesman());
-				if (user.isSuccess() && user.getData() != null) {
-					item.setSalesmanName(user.getData().getRealName());
-				}
-			}
-		});
-
-		return R.data(itemList);
-	}
-
-	private LambdaQueryWrapper<OrderItem> getBizWrapper(Integer mold, Integer status) {
-		LambdaQueryWrapper<OrderItem> wrapper = new LambdaQueryWrapper<OrderItem>()
-			.between(OrderItem::getCreateTime, getTime(true), getTime(false))
-			.eq(OrderItem::getKind, 2)
-			.eq(OrderItem::getIsDeleted, 0)
-			.eq(OrderItem::getTenantId, AuthUtil.getTenantId());
+		OrderAcctVO acctVO = new OrderAcctVO();
 
 		// 获取角色
 		String userRole = AuthUtil.getUserRole();
@@ -231,28 +228,30 @@ public class OrderIndexController extends BladeController {
 		} else if (userRole.contains("部门经理")) {
 			String deptId = AuthUtil.getDeptId();
 			if (StringUtil.isNotBlank(deptId)) {
-				wrapper.in(OrderItem::getSalesmanDept, Arrays.asList(deptId.split(",")));
+				acctVO.setSalesmanDeptList(Arrays.stream(deptId.split(",")).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()));
 			}
 		} else {
-			wrapper.eq(OrderItem::getSalesman, AuthUtil.getUserId());
+			acctVO.setSalesman(AuthUtil.getUserId());
 		}
 
 		if (mold == 1) {
-			wrapper.eq(OrderItem::getShippingMode, "集装箱");
+			acctVO.setShippingMode("集装箱");
 		} else if (mold == 2) {
-			wrapper.eq(OrderItem::getShippingMode, "散货");
+			acctVO.setShippingMode("散货");
 		} else {
-			wrapper.eq(OrderItem::getShippingMode, "特种车辆");
+			acctVO.setShippingMode("特种车辆");
 		}
 
+		List<OrderAcctVO> acctNoPage = orderService.getAcctNoPage(acctVO);
+
 		if (status == 1) {
-			wrapper.in(OrderItem::getStatus, 0, 1);
+			return R.data(acctNoPage.stream().filter(e -> e.getStatus() == 0 || e.getStatus() == 1).collect(Collectors.toList()));
 		} else if (status == 2) {
-			wrapper.notIn(OrderItem::getStatus, 0, 1, 4);
-		} else if (status == 3){
-			wrapper.in(OrderItem::getStatus, 4);
+			return R.data(acctNoPage.stream().filter(e -> e.getStatus() != 0 && e.getStatus() != 1 && e.getStatus() != 4).collect(Collectors.toList()));
+		} else if (status == 3) {
+			return R.data(acctNoPage.stream().filter(e -> e.getStatus() == 4).collect(Collectors.toList()));
 		}
-		return wrapper;
+		return R.data(Collections.emptyList());
 	}
 
 	private String getTime(boolean init) {

+ 8 - 0
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderItemController.java

@@ -282,4 +282,12 @@ public class OrderItemController extends BladeController {
 		return R.status(orderItemService.changeVehicle(orderItem));
 	}
 
+	/**
+	 * 获取车牌号下拉
+	 */
+	@GetMapping("/plate-no")
+	public R plateNo(Long orderId) {
+		return R.data(orderItemService.plateNo(orderId));
+	}
+
 }

+ 11 - 0
blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.java

@@ -17,7 +17,9 @@
 package org.springblade.land.mapper;
 
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.land.entity.Order;
+import org.springblade.land.vo.OrderAcctVO;
 import org.springblade.land.vo.OrderVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -41,4 +43,13 @@ public interface OrderMapper extends BaseMapper<Order> {
 	 */
 	List<OrderVO> selectOrderPage(IPage page, OrderVO order);
 
+	/**
+	 * 陆运台账
+	 *
+	 * @param page
+	 * @param acctVO
+	 * @return
+	 */
+	List<OrderAcctVO> selectAcct(IPage<OrderAcctVO> page, @Param("acct") OrderAcctVO acctVO);
+
 }

+ 52 - 1
blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.xml

@@ -10,7 +10,6 @@
         <result column="station" property="station"/>
         <result column="arrival_time" property="arrivalTime"/>
         <result column="factory" property="factory"/>
-        <result column="goods" property="goods"/>
         <result column="status" property="status"/>
         <result column="remarks" property="remarks"/>
         <result column="create_user" property="createUser"/>
@@ -25,4 +24,56 @@
         select * from land_order where is_deleted = 0
     </select>
 
+    <select id="selectAcct" resultType="org.springblade.land.vo.OrderAcctVO">
+        select t1.id as orderId,
+               t3.cname as corpName,
+               t3.short_name as corpShortName,
+               t2.arrival_time as arrivalTime,
+               t5.name as salesmanName,
+               t1.address_detail as addressDetail,
+               t1.receipt_no as receiptNo,
+               t1.bill_no as billNo,
+               t1.station,
+               concat(t2.ctn_type, '×', sum(t2.ctn_quantity)) as ctnDetail,
+               t4.cname as fleetName,
+               t4.short_name as fleetShortName,
+               t2.plate_no,
+               sum(t2.land_amount_c) as landAmountC,
+               sum(t2.land_amount_d) as landAmountD,
+               t2.remarks
+        from land_order t1
+                 left join land_order_item t2 on t1.id = t2.order_id
+                 left join basic_corps_desc t3 on t1.corp_id = t3.id
+                 left join basic_corps_desc t4 on t2.fleet_id = t4.id
+                 left join blade_user t5 on t1.salesman = t5.id
+        <where>
+            t1.tenant_id = #{acct.tenantId}
+            and t2.kind = '2'
+            and t1.is_deleted = 0
+            <if test="acct.corpName != null and acct.corpName != ''">and t3.cname like concat('%', #{acct.corpName}, '%')</if>
+            <if test="acct.corpShortName != null and acct.corpShortName != ''">and t3.short_name like concat('%', #{acct.corpShortName}, '%')</if>
+            <if test="acct.fleetName != null and acct.fleetName != ''">and t4.cname like concat('%', #{acct.fleetName}, '%')</if>
+            <if test="acct.fleetShortName != null and acct.fleetShortName != ''">and t4.short_name like concat('%', #{acct.fleetShortName}, '%')</if>
+
+            <if test="acct.addressDetail != null and acct.addressDetail != ''">and t1.address_detail like concat('%', #{acct.addressDetail}, '%')</if>
+            <if test="acct.receiptNo != null and acct.receiptNo != ''">and t1.receipt_no like concat('%', #{acct.receiptNo}, '%')</if>
+            <if test="acct.billNo != null and acct.billNo != ''">and t1.bill_no like concat('%', #{acct.billNo}, '%')</if>
+            <if test="acct.plateNo != null and acct.plateNo != ''">and t2.plate_no like concat('%', #{acct.plateNo}, '%')</if>
+
+            <if test="acct.beginArrivalTime != null and acct.beginArrivalTime != ''">and t2.arrival_time &gt;= #{acct.beginArrivalTime}</if>
+            <if test="acct.endArrivalTime != null and acct.endArrivalTime != ''">and t2.arrival_time &lt;= #{acct.endArrivalTime}</if>
+
+            <if test="acct.beginCreateTime != null and acct.beginCreateTime != ''">and t2.create_time &gt;= #{acct.beginCreateTime}</if>
+            <if test="acct.endCreateTime != null and acct.endCreateTime != ''">and t2.create_time &lt;= #{acct.endCreateTime}</if>
+            <if test="acct.salesman != null">and t1.salesman = #{acct.salesman}</if>
+            <if test="acct.salesmanDeptList != null">and t1.salesman_dept in
+                <foreach item="dept" collection="acct.salesmanDeptList" open="(" separator="," close=")">
+                    #{dept}
+                </foreach>
+            </if>
+            <if test="acct.shippingMode != null and acct.shippingMode != ''">and t1.shipping_mode = #{acct.shippingMode}</if>
+        </where>
+        group by t1.id, t2.plate_no
+    </select>
+
 </mapper>

+ 49 - 0
blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderFeeService.java

@@ -18,6 +18,7 @@ package org.springblade.land.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.client.entity.CommonFile;
 import org.springblade.land.entity.OrderFee;
 import org.springblade.land.vo.OrderFeeVO;
 
@@ -41,6 +42,22 @@ public interface IOrderFeeService extends IService<OrderFee> {
 	IPage<OrderFeeVO> selectOrderFeePage(IPage<OrderFeeVO> page, OrderFeeVO orderFee);
 
 	/**
+	 * 列表
+	 *
+	 * @param orderFee
+	 * @return
+	 */
+	List<OrderFee> getListNoPage(OrderFee orderFee);
+
+	/**
+	 * 保存订单
+	 *
+	 * @param orderFee
+	 * @return
+	 */
+	OrderFee saveOrderFee(OrderFee orderFee);
+
+	/**
 	 * 删除订单费用
 	 *
 	 * @param idList
@@ -48,4 +65,36 @@ public interface IOrderFeeService extends IService<OrderFee> {
 	 */
 	boolean removeOrderFee(List<Long> idList);
 
+	/**
+	 * 附件上传
+	 *
+	 * @param orderFee
+	 * @return
+	 */
+	boolean file(OrderFee orderFee);
+
+	/**
+	 * 附件列表
+	 *
+	 * @param id
+	 * @return
+	 */
+	List<CommonFile> fileList(Long id);
+
+	/**
+	 * 确认
+	 *
+	 * @param idList
+	 * @return
+	 */
+	boolean confirm(List<Long> idList);
+
+	/**
+	 * 取消确认
+	 *
+	 * @param idList
+	 * @return
+	 */
+	boolean cancelConfirm(List<Long> idList);
+
 }

+ 8 - 0
blade-service/blade-land/src/main/java/org/springblade/land/service/IOrderItemService.java

@@ -188,4 +188,12 @@ public interface IOrderItemService extends IService<OrderItem> {
 	 */
 	boolean changeVehicle(OrderItem orderItem);
 
+	/**
+	 * 获取车牌号下拉
+	 *
+	 * @param orderId
+	 * @return
+	 */
+	List<String> plateNo(Long orderId);
+
 }

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

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.land.entity.Order;
+import org.springblade.land.vo.OrderAcctVO;
 import org.springblade.land.vo.OrderVO;
 
 import java.util.List;
@@ -61,6 +62,23 @@ public interface IOrderService extends IService<Order> {
 	IPage<Order> getList(Order order, Query query);
 
 	/**
+	 * 陆运台账
+	 *
+	 * @param page
+	 * @param acctVO
+	 * @return
+	 */
+	IPage<OrderAcctVO> getAcct(IPage<OrderAcctVO> page, OrderAcctVO acctVO);
+
+	/**
+	 * 陆运台账
+	 *
+	 * @param acctVO
+	 * @return
+	 */
+	List<OrderAcctVO> getAcctNoPage(OrderAcctVO acctVO);
+
+	/**
 	 * 列表 统计
 	 *
 	 * @param order

+ 114 - 0
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderFeeServiceImpl.java

@@ -16,14 +16,31 @@
  */
 package org.springblade.land.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CommonFile;
+import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.FeesDesc;
+import org.springblade.client.feign.ICommonFileClient;
+import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IFeesDescClient;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.land.constant.LandConstant;
 import org.springblade.land.entity.OrderFee;
 import org.springblade.land.mapper.OrderFeeMapper;
 import org.springblade.land.service.IOrderFeeService;
 import org.springblade.land.vo.OrderFeeVO;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -33,14 +50,64 @@ import java.util.List;
  * @since 2022-03-09
  */
 @Service
+@AllArgsConstructor
 public class OrderFeeServiceImpl extends ServiceImpl<OrderFeeMapper, OrderFee> implements IOrderFeeService {
 
+	private final ICommonFileClient commonFileClient;
+
+	private final ICorpsDescClient corpsDescClient;
+
+	private final IFeesDescClient feesDescClient;
+
+	private final IUserClient userClient;
+
 	@Override
 	public IPage<OrderFeeVO> selectOrderFeePage(IPage<OrderFeeVO> page, OrderFeeVO orderFee) {
 		return page.setRecords(baseMapper.selectOrderFeePage(page, orderFee));
 	}
 
 	@Override
+	public List<OrderFee> getListNoPage(OrderFee orderFee) {
+		List<OrderFee> feeList = baseMapper.selectList(Condition.getQueryWrapper(orderFee));
+		feeList.forEach(fee -> {
+			if (!ObjectUtil.isEmpty(fee.getCorpId())) {
+				R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(fee.getCorpId());
+				if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+					fee.setCorpName(corpMessage.getData().getCname());
+				}
+			}
+			if (!ObjectUtil.isEmpty(fee.getFeeId())) {
+				R<FeesDesc> feesMessage = feesDescClient.detail(fee.getFeeId());
+				if (feesMessage.isSuccess() && feesMessage.getData() != null) {
+					fee.setFeeName(feesMessage.getData().getCname());
+				}
+			}
+			if (!ObjectUtil.isEmpty(fee.getConfirmUser())) {
+				R<User> user = userClient.userInfoById(fee.getConfirmUser());
+				if (user.isSuccess() && user.getData() != null) {
+					fee.setConfirmUserName(user.getData().getRealName());
+				}
+			}
+		});
+		return feeList;
+	}
+
+	@Override
+	public OrderFee saveOrderFee(OrderFee orderFee) {
+		if (ObjectUtil.isEmpty(orderFee.getId())) {
+			orderFee.setTenantId(AuthUtil.getTenantId());
+			orderFee.setCreateUser(AuthUtil.getUserId());
+			orderFee.setCreateTime(new Date());
+			baseMapper.insert(orderFee);
+		} else {
+			orderFee.setUpdateUser(AuthUtil.getUserId());
+			orderFee.setUpdateTime(new Date());
+			baseMapper.updateById(orderFee);
+		}
+		return orderFee;
+	}
+
+	@Override
 	public boolean removeOrderFee(List<Long> idList) {
 		idList.forEach(id -> {
 			OrderFee orderFee = new OrderFee();
@@ -51,4 +118,51 @@ public class OrderFeeServiceImpl extends ServiceImpl<OrderFeeMapper, OrderFee> i
 		return true;
 	}
 
+	@Override
+	public boolean file(OrderFee orderFee) {
+		List<CommonFile> fileList = orderFee.getFileList();
+		fileList.forEach(file -> {
+			if (ObjectUtil.isEmpty(file.getId())) {
+				file.setPid(orderFee.getId());
+				file.setSource(LandConstant.LAND_ORDER_FEE);
+			}
+		});
+		commonFileClient.saveList(fileList);
+		return true;
+	}
+
+	@Override
+	public List<CommonFile> fileList(Long id) {
+		R<List<CommonFile>> fileList = commonFileClient.getList(id, LandConstant.LAND_ORDER_FEE);
+		if (fileList.isSuccess() && fileList.getData() != null) {
+			return fileList.getData();
+		}
+		return Collections.emptyList();
+	}
+
+	@Override
+	public boolean confirm(List<Long> idList) {
+		idList.forEach(id -> {
+			OrderFee orderFee = new OrderFee();
+			orderFee.setId(id);
+			orderFee.setConfirmStatus(1);
+			orderFee.setConfirmUser(AuthUtil.getUserId());
+			orderFee.setConfirmTime(new Date());
+			baseMapper.updateById(orderFee);
+		});
+		return true;
+	}
+
+	@Override
+	public boolean cancelConfirm(List<Long> idList) {
+		idList.forEach(id -> {
+			baseMapper.update(null, new LambdaUpdateWrapper<OrderFee>()
+				.set(OrderFee::getConfirmStatus, 0)
+				.set(OrderFee::getConfirmUser, null)
+				.set(OrderFee::getConfirmTime, null)
+				.eq(OrderFee::getId, id));
+		});
+		return true;
+	}
+
 }

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

@@ -581,6 +581,18 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
 		return true;
 	}
 
+	@Override
+	public List<String> plateNo(Long orderId) {
+		return baseMapper.selectList(new LambdaQueryWrapper<OrderItem>()
+			.select(OrderItem::getPlateNo)
+			.eq(OrderItem::getOrderId, orderId)
+			.isNotNull(OrderItem::getPlateNo)
+			.eq(OrderItem::getTenantId, AuthUtil.getTenantId())
+			.eq(OrderItem::getKind, 2)
+			.eq(OrderItem::getIsDeleted, 0)
+		).stream().map(OrderItem::getPlateNo).distinct().collect(Collectors.toList());
+	}
+
 	/**
 	 * 添加变更记录
 	 *

+ 36 - 14
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -34,6 +34,7 @@ import org.springblade.land.entity.*;
 import org.springblade.land.mapper.*;
 import org.springblade.land.service.IOrderService;
 import org.springblade.land.util.MessageUtil;
+import org.springblade.land.vo.OrderAcctVO;
 import org.springblade.land.vo.OrderVO;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
@@ -347,6 +348,22 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	@Override
+	public IPage<OrderAcctVO> getAcct(IPage<OrderAcctVO> page, OrderAcctVO acctVO) {
+		acctVO.setTenantId(AuthUtil.getTenantId());
+		List<OrderAcctVO> acctList = baseMapper.selectAcct(page, acctVO);
+		calculateAcct(acctList);
+		return page.setRecords(acctList);
+	}
+
+	@Override
+	public List<OrderAcctVO> getAcctNoPage(OrderAcctVO acctVO) {
+		acctVO.setTenantId(AuthUtil.getTenantId());
+		List<OrderAcctVO> acctList = baseMapper.selectAcct(null, acctVO);
+		calculateAcct(acctList);
+		return acctList;
+	}
+
+	@Override
 	public Map<String, Object> getCount(Order order) {
 		long all = 0;
 		long last = 0;
@@ -474,20 +491,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		}
 
-		order.getOrderFeeList().forEach(fee -> {
-			if (ObjectUtil.isEmpty(fee.getId())) {
-				fee.setOrderId(orderId);
-				fee.setTenantId(AuthUtil.getTenantId());
-				fee.setCreateUser(AuthUtil.getUserId());
-				fee.setCreateTime(new Date());
-				orderFeeMapper.insert(fee);
-			} else {
-				fee.setUpdateUser(AuthUtil.getUserId());
-				fee.setUpdateTime(new Date());
-				orderFeeMapper.updateById(fee);
-			}
-		});
-
 		List<CommonFile> fileList = order.getFileList();
 		fileList.forEach(file -> {
 			if (ObjectUtil.isEmpty(file.getId())) {
@@ -663,4 +666,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return String.format("%03d", serial) + "-" + postfix;
 	}
 
+	private void calculateAcct(List<OrderAcctVO> acctList) {
+		acctList.forEach(acct -> {
+			List<OrderFee> feeList = orderFeeMapper.selectList(new LambdaQueryWrapper<OrderFee>()
+				.eq(OrderFee::getOrderId, acct.getOrderId())
+				.eq(OrderFee::getPlateNo, acct.getPlateNo())
+				.eq(OrderFee::getIsDeleted, 0)
+			);
+
+			acct.setExtraAmountD(feeList.stream().filter(e -> e.getType() == 1).reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getAmount()), BigDecimal::add));
+			acct.setExtraAmountC(feeList.stream().filter(e -> e.getType() == 2).reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getAmount()), BigDecimal::add));
+			acct.setProfit(acct.getLandAmountD().add(acct.getExtraAmountD()).subtract(acct.getLandAmountC()).subtract(acct.getExtraAmountC()));
+			if (feeList.stream().anyMatch(e -> e.getConfirmStatus() == 1)) {
+				acct.setConfirmStatus(1);
+			} else {
+				acct.setConfirmStatus(0);
+			}
+		});
+	}
+
 }