8790f1ea7960c2209f6c919c732d7b2184edc4af..cd4fcbc4243ef3e4824f8ea4ac43f02a8902fae9
2026-01-30 liding
仓储物流(运费结算)
cd4fcb 对比 | 目录
2026-01-30 liding
仓储物流(1.合同 2.订单 3.发货)
4579e4 对比 | 目录
已添加26个文件
1293 ■■■■■ 文件已修改
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeCarrierContractController.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeCarrierOrderController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeDeliveryTrackController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeFreightSettlementController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/dto/FakeCarrierOrderDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/dto/FakeDeliveryTrackDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeCarrierContractMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeCarrierOrderMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeDeliveryTrackMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeFreightSettlementMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeCarrierContract.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeCarrierOrder.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeDeliveryTrack.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeFreightSettlement.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/FakeFreightSettlementService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/IFakeCarrierContractService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/IFakeCarrierOrderService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/IFakeDeliveryTrackService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeCarrierContractServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeCarrierOrderServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeDeliveryTrackServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeFreightSettlementServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/fakeWarehousing/FakeCarrierContractMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/fakeWarehousing/FakeCarrierOrderMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/fakeWarehousing/FakeDeliveryTrackMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/fakeWarehousing/FakeFreightSettlementMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeCarrierContractController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.ruoyi.fakeWarehousing.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierContract;
import com.ruoyi.fakeWarehousing.service.IFakeCarrierContractService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
 * æ‰¿è¿åˆåŒç®¡ç†Controller
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/fakeWarehousing")
@Api(value = "fakeWarehousing", tags = "承运合同管理Controller")
public class FakeCarrierContractController {
    private final IFakeCarrierContractService fakeCarrierContractService;
    /**
     * åˆ†é¡µæŸ¥è¯¢æ‰¿è¿åˆåŒåˆ—表
     *
     * @param contract æŸ¥è¯¢æ¡ä»¶
     * @return åˆ†é¡µç»“æžœ
     */
    @GetMapping("/list")
    @ApiOperation(value = "分页查询承运合同列表", notes = "分页查询承运合同列表")
    public IPage<FakeCarrierContract> list(Page<FakeCarrierContract> page, FakeCarrierContract contract) {
        return fakeCarrierContractService.selectAll(page, contract);
    }
    /**
     * æ ¹æ®ID查询承运合同详情
     *
     * @param id åˆåŒä¸»é”®ID
     * @return åˆåŒè¯¦æƒ…
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "根据ID查询承运合同详情", notes = "根据ID查询承运合同详情")
    public R<FakeCarrierContract> getInfo(@PathVariable Long id) {
        return R.ok(fakeCarrierContractService.getById(id));
    }
    /**
     * æ–°å¢žæ‰¿è¿åˆåŒ
     *
     * @param contract åˆåŒå®žä½“(含合同编号、承运商信息等核心字段)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "新增承运合同", businessType = BusinessType.INSERT)
    @PostMapping
    @ApiOperation(value = "新增承运合同", notes = "新增承运合同")
    public R add(@RequestBody FakeCarrierContract contract) {
        return R.ok(fakeCarrierContractService.save(contract));
    }
    /**
     * ä¿®æ”¹æ‰¿è¿åˆåŒ
     *
     * @param contract åˆåŒå®žä½“(必须包含主键ID)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "修改承运合同", businessType = BusinessType.UPDATE)
    @PutMapping
    @ApiOperation(value = "修改承运合同", notes = "修改承运合同")
    public R edit(@RequestBody FakeCarrierContract contract) {
        if (contract.getId() == null) {
            return R.fail("修改失败,合同ID不能为空");
        }
        return R.ok(fakeCarrierContractService.updateById(contract));
    }
    /**
     * åˆ é™¤æ‰¿è¿åˆåŒï¼ˆæ”¯æŒå•条/多条删除)
     *
     * @param ids åˆåŒä¸»é”®ID数组
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "承运合同管理", businessType = BusinessType.DELETE)
    @ApiOperation(value = "承运合同管理", notes = "承运合同管理")
    @DeleteMapping("/{ids}")
    public R remove(@PathVariable Long[] ids) {
        return R.ok(fakeCarrierContractService.removeByIds(Arrays.asList(ids)));
    }
}
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeCarrierOrderController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.ruoyi.fakeWarehousing.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.fakeWarehousing.dto.FakeCarrierOrderDto;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierOrder;
import com.ruoyi.fakeWarehousing.service.IFakeCarrierOrderService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
 * æ‰¿è¿è®¢å•管理控制器
 * åŸºç¡€è·¯å¾„:/fakeWarehousing/order
 */
@Api(tags = "承运订单管理接口")
@RestController
@RequiredArgsConstructor
@RequestMapping("/fakeWarehousing/order")
public class FakeCarrierOrderController {
    private final IFakeCarrierOrderService fakeCarrierOrderService;
    /**
     * åˆ†é¡µæŸ¥è¯¢æ‰¿è¿è®¢å•列表
     *
     * @param page åˆ†é¡µå‚æ•°
     * @param order æŸ¥è¯¢æ¡ä»¶
     * @return åˆ†é¡µç»“æžœ
     */
    @GetMapping("/list")
    @ApiOperation(value = "分页查询承运订单列表", notes = "分页查询承运订单列表")
    public IPage<FakeCarrierOrder> list(Page<FakeCarrierOrder> page, FakeCarrierOrderDto orderDto) {
        return fakeCarrierOrderService.selectAll(page, orderDto);
    }
    /**
     * æ ¹æ®ID查询承运订单详情
     *
     * @param id è®¢å•主键ID
     * @return è®¢å•详情
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "根据ID查询承运订单详情", notes = "根据ID查询承运订单详情")
    public R<FakeCarrierOrder> getInfo(@PathVariable Long id) {
        return R.ok(fakeCarrierOrderService.getById(id));
    }
    /**
     * æ–°å¢žæ‰¿è¿è®¢å•
     *
     * @param order è®¢å•实体(含订单编号、承运商信息、物流信息等核心字段)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "新增承运订单", businessType = BusinessType.INSERT)
    @PostMapping
    @ApiOperation(value = "新增承运订单", notes = "新增承运订单")
    public R add(@RequestBody FakeCarrierOrder order) {
        return R.ok(fakeCarrierOrderService.saveDetail(order));
    }
    /**
     * ä¿®æ”¹æ‰¿è¿è®¢å•
     *
     * @param order è®¢å•实体(必须包含主键ID)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "修改承运订单", businessType = BusinessType.UPDATE)
    @PutMapping
    @ApiOperation(value = "修改承运订单", notes = "修改承运订单")
    public R edit(@RequestBody FakeCarrierOrder order) {
        if (order.getId() == null) {
            return R.fail("修改失败,订单ID不能为空");
        }
        return R.ok(fakeCarrierOrderService.updateById(order));
    }
    /**
     * åˆ é™¤æ‰¿è¿è®¢å•(支持单条/多条删除)
     *
     * @param ids è®¢å•主键ID数组
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "承运订单管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    @ApiOperation(value = "删除承运订单", notes = "删除承运订单(支持单条/多条)")
    public R remove(@PathVariable Long[] ids) {
        return R.ok(fakeCarrierOrderService.removeByIds(Arrays.asList(ids)));
    }
}
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeDeliveryTrackController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.ruoyi.fakeWarehousing.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.fakeWarehousing.dto.FakeDeliveryTrackDto;
import com.ruoyi.fakeWarehousing.pojo.FakeDeliveryTrack;
import com.ruoyi.fakeWarehousing.service.IFakeDeliveryTrackService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
 * å‘货跟踪管理控制器
 * åŸºç¡€è·¯å¾„:/fakeWarehousing/deliveryTrack
 */
@Api(tags = "发货跟踪管理接口")
@RestController
@RequiredArgsConstructor
@RequestMapping("/fakeWarehousing/deliveryTrack")
public class FakeDeliveryTrackController {
    private final IFakeDeliveryTrackService fakeDeliveryTrackService;
    /**
     * åˆ†é¡µæŸ¥è¯¢å‘货跟踪列表
     *
     * @param page  åˆ†é¡µå‚æ•°
     * @param track æŸ¥è¯¢æ¡ä»¶
     * @return åˆ†é¡µç»“æžœ
     */
    @GetMapping("/list")
    @ApiOperation(value = "分页查询发货跟踪列表", notes = "分页查询发货跟踪列表")
    public IPage<FakeDeliveryTrack> list(Page<FakeDeliveryTrack> page, FakeDeliveryTrackDto trackDto) {
        return fakeDeliveryTrackService.selectAll(page, trackDto);
    }
    /**
     * æ ¹æ®ID查询发货跟踪详情
     *
     * @param id å‘货跟踪主键ID
     * @return å‘货跟踪详情
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "根据ID查询发货跟踪详情", notes = "根据ID查询发货跟踪详情")
    public R<FakeDeliveryTrack> getInfo(@PathVariable Long id) {
        return R.ok(fakeDeliveryTrackService.getById(id));
    }
    /**
     * æ–°å¢žå‘货跟踪记录
     *
     * @param track å‘货跟踪实体(含订单关联信息、发货信息等核心字段)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "新增发货跟踪记录", businessType = BusinessType.INSERT)
    @PostMapping
    @ApiOperation(value = "新增发货跟踪记录", notes = "新增发货跟踪记录")
    public R add(@RequestBody FakeDeliveryTrack track) {
        return R.ok(fakeDeliveryTrackService.saveDetail(track));
    }
    /**
     * ä¿®æ”¹å‘货跟踪记录
     *
     * @param track å‘货跟踪实体(必须包含主键ID)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "修改发货跟踪记录", businessType = BusinessType.UPDATE)
    @PutMapping
    @ApiOperation(value = "修改发货跟踪记录", notes = "修改发货跟踪记录")
    public R edit(@RequestBody FakeDeliveryTrack track) {
        if (track.getId() == null) {
            return R.fail("修改失败,发货跟踪ID不能为空");
        }
        return R.ok(fakeDeliveryTrackService.updateById(track));
    }
    /**
     * åˆ é™¤å‘货跟踪记录(支持单条/多条删除)
     *
     * @param ids å‘货跟踪主键ID数组
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "发货跟踪管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    @ApiOperation(value = "删除发货跟踪记录", notes = "删除发货跟踪记录(支持单条/多条)")
    public R remove(@PathVariable Long[] ids) {
        return R.ok(fakeDeliveryTrackService.removeByIds(Arrays.asList(ids)));
    }
}
src/main/java/com/ruoyi/fakeWarehousing/controller/FakeFreightSettlementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.ruoyi.fakeWarehousing.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.fakeWarehousing.pojo.FakeFreightSettlement;
import com.ruoyi.fakeWarehousing.service.FakeFreightSettlementService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
/**
 * è¿è´¹ç»“算单控制器
 * é€‚配框架统一返回R、IPage分页、构造器注入等规范
 *
 * @author ruoyi
 * @date 2026-01-30
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/fakeWarehousing/freightSettlement")
@Api(tags = "运费结算单管理")
public class FakeFreightSettlementController {
    private final FakeFreightSettlementService fakeFreightSettlementService;
    /**
     * åˆ†é¡µæŸ¥è¯¢è¿è´¹ç»“算单列表
     *
     * @param page åˆ†é¡µå‚æ•°
     * @param settlement æŸ¥è¯¢æ¡ä»¶
     * @return åˆ†é¡µç»“æžœ
     */
    @GetMapping("/list")
    @ApiOperation(value = "分页查询运费结算单列表", notes = "分页查询运费结算单列表,支持多条件模糊查询")
    public IPage<FakeFreightSettlement> list(Page<FakeFreightSettlement> page, FakeFreightSettlement settlement) {
        return fakeFreightSettlementService.selectFakeFreightSettlementPage(page, settlement);
    }
    /**
     * æ ¹æ®ç»“ç®—ID查询
     *
     * @param
     * @return ç»“算单详情
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "根据结算ID查询", notes = "根据结算ID查询")
    public R<FakeFreightSettlement> getById(@PathVariable Long id) {
        return R.ok(fakeFreightSettlementService.getById(id));
    }
    /**
     * æ–°å¢žè¿è´¹ç»“算单
     *
     * @param settlement ç»“算单实体(含承运商、发票等核心字段)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "新增运费结算单", businessType = BusinessType.INSERT)
    @PostMapping
    @ApiOperation(value = "新增运费结算单", notes = "新增运费结算单,自动生成结算单号")
    public R add(@RequestBody FakeFreightSettlement settlement) {
        return R.ok(fakeFreightSettlementService.save(settlement));
    }
    /**
     * ä¿®æ”¹è¿è´¹ç»“算单
     *
     * @param settlement ç»“算单实体(必须包含结算单号)
     * @return æ“ä½œç»“æžœ
     */
    @Log(title = "修改运费结算单", businessType = BusinessType.UPDATE)
    @PutMapping
    @ApiOperation(value = "修改运费结算单", notes = "修改运费结算单,仅待结算状态可编辑")
    public R edit(@RequestBody FakeFreightSettlement settlement) {
        return R.ok(fakeFreightSettlementService.updateById(settlement));
    }
    /**
     * åˆ é™¤è¿è´¹ç»“算单(支持单条/多条删除)
     */
    @Log(title = "删除运费结算单", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    @ApiOperation(value = "删除运费结算单", notes = "删除运费结算单(支持单条/多条),仅待结算状态可删除")
    public R remove(@PathVariable Long[] ids) {
        return R.ok(fakeFreightSettlementService.removeByIds(Arrays.asList(ids)));
    }
}
src/main/java/com/ruoyi/fakeWarehousing/dto/FakeCarrierOrderDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.fakeWarehousing.dto;
import lombok.Data;
@Data
public class FakeCarrierOrderDto{
    private String keyword;
    private Integer orderStatus;
}
src/main/java/com/ruoyi/fakeWarehousing/dto/FakeDeliveryTrackDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.fakeWarehousing.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@Data
public class FakeDeliveryTrackDto {
    private String keyword;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate startDate;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate endDate;
}
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeCarrierContractMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.fakeWarehousing.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierContract;
import org.apache.ibatis.annotations.Mapper;
/**
 * æ‰¿è¿åˆåŒç®¡ç†Mapper
 */
@Mapper
public interface FakeCarrierContractMapper extends BaseMapper<FakeCarrierContract> {
}
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeCarrierOrderMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.fakeWarehousing.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierOrder;
import org.apache.ibatis.annotations.Mapper;
/**
 * æ‰¿è¿è®¢å•管理Mapper
 */
@Mapper
public interface FakeCarrierOrderMapper extends BaseMapper<FakeCarrierOrder> {
}
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeDeliveryTrackMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.fakeWarehousing.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeDeliveryTrack;
import org.apache.ibatis.annotations.Mapper;
/**
 * å‘货跟踪管理Mapper
 */
@Mapper
public interface FakeDeliveryTrackMapper extends BaseMapper<FakeDeliveryTrack> {
}
src/main/java/com/ruoyi/fakeWarehousing/mapper/FakeFreightSettlementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.fakeWarehousing.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeFreightSettlement;
/**
 * è¿è´¹ç»“算单Mapper接口
 */
public interface FakeFreightSettlementMapper extends BaseMapper<FakeFreightSettlement> {
}
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeCarrierContract.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package com.ruoyi.fakeWarehousing.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * æ‰¿è¿åˆåŒç®¡ç†å®žä½“ç±»
 * è¦†ç›–合同创建、查看、维护、更改全流程核心字段
 */
@Data
@TableName("fake_carrier_contract")
public class FakeCarrierContract implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键ID")
    private Long id;
    /**
     * åˆåŒç¼–号
     */
    @ApiModelProperty(value = "合同编号")
    private String contractCode;
    /**
     * æ‰¿è¿å•†ID
     */
    @ApiModelProperty(value = "承运商ID")
    private Long carrierId;
    /**
     * æ‰¿è¿å•†åç§°
     */
    @ApiModelProperty(value = "承运商名称")
    private String carrierName;
    /**
     * åˆåŒåç§°
     */
    @ApiModelProperty(value = "合同名称")
    private String contractName;
    /**
     * åˆåŒçŠ¶æ€
     */
    @ApiModelProperty(value = "合同状态")
    private Integer contractStatus;
    /**
     * åˆåŒå¼€å§‹æ—¶é—´
     */
    @ApiModelProperty(value = "合同开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;
    /**
     * åˆåŒç»“束时间
     */
    @ApiModelProperty(value = "合同结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * åˆ›å»ºè€…
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建者")
    private Integer createUser;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;
    /**
     * ä¿®æ”¹è€…
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "修改者")
    private Integer updateUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "修改时间")
    private LocalDateTime updateTime;
    /**
     * ç§Ÿæˆ·ID
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "租户ID")
    private Long tenantId;
}
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeCarrierOrder.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
package com.ruoyi.fakeWarehousing.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * æ‰¿è¿è®¢å•管理实体类
 */
@Data
@TableName("fake_carrier_order")
public class FakeCarrierOrder implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键ID")
    private Long id;
    /**
     * è®¢å•编号(业务唯一,如:TO-20260130-0001)
     */
    @ApiModelProperty(value = "订单编号")
    private String orderCode;
    /**
     * æ‰¿è¿å•†ID
     */
    @ApiModelProperty(value = "承运商ID")
    private Long carrierId;
    /**
     * æ‰¿è¿å•†åç§°
     */
    @ApiModelProperty(value = "承运商名称")
    private String carrierName;
    /**
     * å§‹å‘地(如:上海-浦东)
     */
    @ApiModelProperty(value = "始发地")
    private String origin;
    /**
     * ç›®çš„地(如:苏州-工业园区)
     */
    @ApiModelProperty(value = "目的地")
    private String destination;
    /**
     * è´§ç‰©é‡é‡ï¼ˆå•位:kg,保留1位小数)
     */
    @ApiModelProperty(value = "货物重量(kg)")
    private BigDecimal weight;
    /**
     * è´§ç‰©ä½“积(单位:m³,保留2位小数)
     */
    @ApiModelProperty(value = "货物体积(m³)")
    private BigDecimal volume;
    /**
     * é¢„估运费(单位:元,保留1位小数)
     */
    @ApiModelProperty(value = "预估运费(元)")
    private BigDecimal estimatedFee;
    /**
     * è®¢å•状态(1-已创建/待派发 å¯æ ¹æ®ä¸šåŠ¡æ‰©å±•ï¼š2-已派发 3-运输中 4-已完成 5-已取消)
     */
    @ApiModelProperty(value = "订单状态(1-已创建/待派发 2-已派发 3-运输中 4-已完成 5-已取消)")
    private Integer orderStatus;
    /**
     * å¤‡æ³¨ï¼ˆå¦‚:需回单、易碎品等)
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * åˆ›å»ºæ—¶é—´ï¼ˆMyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;
    /**
     * ä¿®æ”¹æ—¶é—´ï¼ˆMyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "修改时间")
    private LocalDateTime updateTime;
    /**
     * åˆ›å»ºè€…(若依框架,MyBatis-Plus自动填充,用户ID)
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建者", hidden = true)
    private Integer createUser;
    /**
     * ä¿®æ”¹è€…(若依框架,MyBatis-Plus自动填充,用户ID)
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "修改者", hidden = true)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·ID(多租户隔离,MyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "租户ID", hidden = true)
    private Long tenantId;
}
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeDeliveryTrack.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
package com.ruoyi.fakeWarehousing.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * å‘货跟踪管理实体类
 */
@Data
@TableName("fake_delivery_track")
public class FakeDeliveryTrack implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @ApiModelProperty(value = "主键ID")
    private Long id;
    /**
     * å…³è”承运订单id
     */
    @ApiModelProperty(value = "关联承运订单id")
    private Long orderId;
    /**
     * å…³è”承运订单编号
     */
    @ApiModelProperty(value = "关联承运订单编号")
    private String orderCode;
    /**
     * æ‰¿è¿å•†åç§°
     */
    @ApiModelProperty(value = "承运商名称")
    private String carrierName;
    /**
     * å‘è´§æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "发货时间")
    private LocalDateTime shipTime;
    /**
     * è¿è¾“车辆车牌号
     */
    @ApiModelProperty(value = "运输车辆车牌号")
    private String vehicleNo;
    /**
     * å¸æœºå§“名
     */
    @ApiModelProperty(value = "司机姓名")
    private String driverName;
    /**
     * å¸æœºè”系电话
     */
    @ApiModelProperty(value = "司机联系电话")
    private String driverPhone;
    /**
     * å‘货备注
     */
    @ApiModelProperty(value = "发货备注")
    private String remark;
    /**
     * åˆ›å»ºæ—¶é—´ï¼ˆMyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;
    /**
     * ä¿®æ”¹æ—¶é—´ï¼ˆMyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "修改时间")
    private LocalDateTime updateTime;
    /**
     * åˆ›å»ºè€…(若依框架,MyBatis-Plus自动填充,用户ID)
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建者", hidden = true)
    private Integer createUser;
    /**
     * ä¿®æ”¹è€…(若依框架,MyBatis-Plus自动填充,用户ID)
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "修改者", hidden = true)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·ID(多租户隔离,MyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "租户ID", hidden = true)
    private Long tenantId;
}
src/main/java/com/ruoyi/fakeWarehousing/pojo/FakeFreightSettlement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
package com.ruoyi.fakeWarehousing.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
 * è¿è´¹ç»“算单
 */
@Data
@TableName("fake_freight_settle")
public class FakeFreightSettlement implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ç»“算单ID(主键)
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "结算单ID")
    private Long id;
    /**
     * ç»“算单号(业务唯一标识)
     */
    @ApiModelProperty(value = "结算单号")
    private String settleNo;
    // -------- æ‰¿è¿å•†ä¿¡æ¯ --------
    /**
     * æ‰¿è¿å•†åç§°
     */
    @ApiModelProperty(value = "承运商名称")
    private String carrierName;
    // -------- å‘票信息 --------
    /**
     * å‘票号码
     */
    @ApiModelProperty(value = "发票号码")
    private String invoiceNo;
    /**
     * å‘票金额(单位:元,高精度保留2位小数)
     */
    @ApiModelProperty(value = "发票金额(元)")
    private BigDecimal invoiceAmt;
    /**
     * å¼€ç¥¨æ—¥æœŸ
     */
    @ApiModelProperty(value = "开票日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate invoiceDate;
    // -------- ç»“算办理 --------
    /**
     * ç»“算金额(单位:元,同发票金额/按需调整,保留2位小数)
     */
    @ApiModelProperty(value = "结算金额(元)")
    private BigDecimal settleAmt;
    /**
     * ç»“算状态:0-待结算,1-已结算
     */
    @ApiModelProperty(value = "结算状态:0-待结算,1-已结算")
    private Integer status;
    /**
     * åˆ›å»ºæ—¶é—´ï¼ˆMyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;
    /**
     * ä¿®æ”¹æ—¶é—´ï¼ˆMyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "修改时间")
    private LocalDateTime updateTime;
    /**
     * åˆ›å»ºè€…(若依框架,MyBatis-Plus自动填充,用户ID)
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建者", hidden = true)
    private Integer createUser;
    /**
     * ä¿®æ”¹è€…(若依框架,MyBatis-Plus自动填充,用户ID)
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "修改者", hidden = true)
    private Integer updateUser;
    /**
     * ç§Ÿæˆ·ID(多租户隔离,MyBatis-Plus自动填充)
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "租户ID", hidden = true)
    private Long tenantId;
}
src/main/java/com/ruoyi/fakeWarehousing/service/FakeFreightSettlementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.fakeWarehousing.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.fakeWarehousing.pojo.FakeFreightSettlement;
/**
 * è¿è´¹ç»“算单Service接口
 */
public interface FakeFreightSettlementService extends IService<FakeFreightSettlement> {
    IPage<FakeFreightSettlement> selectFakeFreightSettlementPage(Page<FakeFreightSettlement> page, FakeFreightSettlement settlement);
}
src/main/java/com/ruoyi/fakeWarehousing/service/IFakeCarrierContractService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.fakeWarehousing.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierContract;
public interface IFakeCarrierContractService extends IService<FakeCarrierContract> {
    IPage<FakeCarrierContract> selectAll(Page<FakeCarrierContract> page, FakeCarrierContract contract);
}
src/main/java/com/ruoyi/fakeWarehousing/service/IFakeCarrierOrderService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.ruoyi.fakeWarehousing.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.fakeWarehousing.dto.FakeCarrierOrderDto;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierOrder;
/**
 * æ‰¿è¿è®¢å•管理Service接口
 */
public interface IFakeCarrierOrderService extends IService<FakeCarrierOrder> {
    IPage<FakeCarrierOrder> selectAll(Page<FakeCarrierOrder> page, FakeCarrierOrderDto orderDto);
    boolean saveDetail(FakeCarrierOrder order);
}
src/main/java/com/ruoyi/fakeWarehousing/service/IFakeDeliveryTrackService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.fakeWarehousing.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.fakeWarehousing.dto.FakeDeliveryTrackDto;
import com.ruoyi.fakeWarehousing.pojo.FakeDeliveryTrack;
/**
 * å‘货跟踪管理Service接口
 */
public interface IFakeDeliveryTrackService extends IService<FakeDeliveryTrack> {
    /**
     * åˆ†é¡µæŸ¥è¯¢å‘货跟踪列表
     * @param page åˆ†é¡µå‚æ•°
     * @param track æŸ¥è¯¢æ¡ä»¶
     * @return åˆ†é¡µç»“æžœ
     */
    IPage<FakeDeliveryTrack> selectAll(Page<FakeDeliveryTrack> page, FakeDeliveryTrackDto trackDto);
    boolean saveDetail(FakeDeliveryTrack track);
}
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeCarrierContractServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.fakeWarehousing.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.fakeWarehousing.mapper.FakeCarrierContractMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierContract;
import com.ruoyi.fakeWarehousing.service.IFakeCarrierContractService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.LocalTime;
/**
 * æ‰¿è¿åˆåŒç®¡ç†Service实现类
 */
@Service
@RequiredArgsConstructor
public class FakeCarrierContractServiceImpl extends ServiceImpl<FakeCarrierContractMapper, FakeCarrierContract> implements IFakeCarrierContractService {
    private final FakeCarrierContractMapper fakeCarrierContractMapper;
    @Override
    public IPage<FakeCarrierContract> selectAll(Page<FakeCarrierContract> page, FakeCarrierContract contract) {
        LambdaQueryWrapper<FakeCarrierContract> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        if (contract.getContractCode() != null && !contract.getContractCode().trim().isEmpty()) {
            lambdaQueryWrapper.like(FakeCarrierContract::getContractCode, contract.getContractCode());
        }
        if (contract.getCarrierName() != null && !contract.getCarrierName().trim().isEmpty()) {
            lambdaQueryWrapper.like(FakeCarrierContract::getCarrierName, contract.getCarrierName());
        }
        if (contract.getContractStatus() != null) {
            lambdaQueryWrapper.eq(FakeCarrierContract::getContractStatus, contract.getContractStatus());
        }
        if (contract.getStartTime() != null) {
            lambdaQueryWrapper.ge(FakeCarrierContract::getStartTime, contract.getStartTime());
        }
        if (contract.getEndTime() != null) {
            LocalDateTime endTimeWithSecond = contract.getEndTime().with(LocalTime.MAX);
            lambdaQueryWrapper.le(FakeCarrierContract::getEndTime, endTimeWithSecond);
        }
        lambdaQueryWrapper.orderByDesc(FakeCarrierContract::getCreateTime);
        return fakeCarrierContractMapper.selectPage(page, lambdaQueryWrapper);
    }
}
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeCarrierOrderServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ruoyi.fakeWarehousing.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.fakeWarehousing.dto.FakeCarrierOrderDto;
import com.ruoyi.fakeWarehousing.mapper.FakeCarrierOrderMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierOrder;
import com.ruoyi.fakeWarehousing.service.IFakeCarrierOrderService;
import lombok.RequiredArgsConstructor;
import org.apache.poi.util.StringUtil;
import org.springframework.stereotype.Service;
/**
 * æ‰¿è¿è®¢å•管理Service实现类
 */
@Service
@RequiredArgsConstructor
public class FakeCarrierOrderServiceImpl extends ServiceImpl<FakeCarrierOrderMapper, FakeCarrierOrder> implements IFakeCarrierOrderService {
    private final FakeCarrierOrderMapper fakeCarrierOrderMapper;
    @Override
    public IPage<FakeCarrierOrder> selectAll(Page<FakeCarrierOrder> page, FakeCarrierOrderDto orderDto) {
        LambdaQueryWrapper<FakeCarrierOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        if (StringUtil.isNotBlank(orderDto.getKeyword())) {
            lambdaQueryWrapper.and(wrapper -> wrapper
                    .like(FakeCarrierOrder::getOrderCode, orderDto.getKeyword())
                    .or()
                    .like(FakeCarrierOrder::getCarrierName, orderDto.getKeyword())
                    .or()
                    .like(FakeCarrierOrder::getOrigin, orderDto.getKeyword())
                    .or()
                    .like(FakeCarrierOrder::getDestination, orderDto.getKeyword())
            );
        }
        if (orderDto.getOrderStatus() != null) {
            lambdaQueryWrapper.eq(FakeCarrierOrder::getOrderStatus, orderDto.getOrderStatus());
        }
        lambdaQueryWrapper.orderByDesc(FakeCarrierOrder::getCreateTime);
        return fakeCarrierOrderMapper.selectPage(page, lambdaQueryWrapper);
    }
    @Override
    public boolean saveDetail(FakeCarrierOrder order) {
        order.setOrderStatus(1);
        return fakeCarrierOrderMapper.insert(order) > 0;
    }
}
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeDeliveryTrackServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.ruoyi.fakeWarehousing.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.fakeWarehousing.dto.FakeDeliveryTrackDto;
import com.ruoyi.fakeWarehousing.mapper.FakeCarrierOrderMapper;
import com.ruoyi.fakeWarehousing.mapper.FakeDeliveryTrackMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeCarrierOrder;
import com.ruoyi.fakeWarehousing.pojo.FakeDeliveryTrack;
import com.ruoyi.fakeWarehousing.service.IFakeDeliveryTrackService;
import lombok.RequiredArgsConstructor;
import org.apache.poi.util.StringUtil;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
/**
 * å‘货跟踪管理Service实现类
 */
@Service
@RequiredArgsConstructor
public class FakeDeliveryTrackServiceImpl extends ServiceImpl<FakeDeliveryTrackMapper, FakeDeliveryTrack>
        implements IFakeDeliveryTrackService {
    private final FakeCarrierOrderMapper fakeCarrierOrderMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢å‘货跟踪列表
     * @param page åˆ†é¡µå‚æ•°
     * @return åˆ†é¡µç»“æžœ
     */
    @Override
    public IPage<FakeDeliveryTrack> selectAll(Page<FakeDeliveryTrack> page, FakeDeliveryTrackDto fakeDeliveryTrackDto) {
        LambdaQueryWrapper<FakeDeliveryTrack> wrapper = new LambdaQueryWrapper<>();
        // 1. å…³é”®å­—keyword:模糊匹配承运商名称、车牌号、订单编号(任意一个匹配)
        if (StringUtil.isNotBlank(fakeDeliveryTrackDto.getKeyword())) {
            wrapper.and(w -> w.like(FakeDeliveryTrack::getCarrierName, fakeDeliveryTrackDto.getKeyword())
                    .or().like(FakeDeliveryTrack::getVehicleNo, fakeDeliveryTrackDto.getKeyword())
                    .or().like(FakeDeliveryTrack::getOrderCode, fakeDeliveryTrackDto.getKeyword()));
        }
        // 2. å‘è´§æ—¶é—´shipTime:匹配LocalDate[startDate, endDate]时间范围(核心适配逻辑)
        LocalDate startDate = fakeDeliveryTrackDto.getStartDate();
        LocalDate endDate = fakeDeliveryTrackDto.getEndDate();
        if (startDate != null) {
            LocalDateTime startDateTime = LocalDateTime.of(startDate, LocalTime.MIN);
            wrapper.ge(FakeDeliveryTrack::getShipTime, startDateTime);
        }
        if (endDate != null) {
            LocalDateTime endDateTime = LocalDateTime.of(endDate, LocalTime.MAX);
            wrapper.le(FakeDeliveryTrack::getShipTime, endDateTime);
        }
        wrapper.orderByDesc(FakeDeliveryTrack::getShipTime);
        return baseMapper.selectPage(page, wrapper);
    }
    @Override
    public boolean saveDetail(FakeDeliveryTrack track) {
        fakeCarrierOrderMapper.update(null, new LambdaUpdateWrapper<FakeCarrierOrder>()
                .eq(FakeCarrierOrder::getId, track.getOrderId())
                .set(FakeCarrierOrder::getOrderStatus, 2));
        return baseMapper.insert(track) > 0;
    }
}
src/main/java/com/ruoyi/fakeWarehousing/service/impl/FakeFreightSettlementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.ruoyi.fakeWarehousing.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.fakeWarehousing.mapper.FakeFreightSettlementMapper;
import com.ruoyi.fakeWarehousing.pojo.FakeFreightSettlement;
import com.ruoyi.fakeWarehousing.service.FakeFreightSettlementService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
 * è¿è´¹ç»“算单Service业务层处理
 *
 * @author ruoyi
 * @date 2026-01-30
 */
@Service
@RequiredArgsConstructor
public class FakeFreightSettlementServiceImpl extends ServiceImpl<FakeFreightSettlementMapper, FakeFreightSettlement>
        implements FakeFreightSettlementService {
    private final FakeFreightSettlementMapper fakeFreightSettlementMapper;
    @Override
    public IPage<FakeFreightSettlement> selectFakeFreightSettlementPage(Page<FakeFreightSettlement> page, FakeFreightSettlement settlement) {
        LambdaQueryWrapper<FakeFreightSettlement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        if (settlement != null && StringUtils.isNotBlank(settlement.getSettleNo())) {
            lambdaQueryWrapper.like(FakeFreightSettlement::getSettleNo, settlement.getSettleNo());
        }
        if (settlement != null && StringUtils.isNotBlank(settlement.getCarrierName())) {
            lambdaQueryWrapper.like(FakeFreightSettlement::getCarrierName, settlement.getCarrierName());
        }
        lambdaQueryWrapper.orderByDesc(FakeFreightSettlement::getCreateTime);
        return fakeFreightSettlementMapper.selectPage(page, lambdaQueryWrapper);
    }
}
src/main/resources/mapper/fakeWarehousing/FakeCarrierContractMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.fakeWarehousing.mapper.FakeCarrierContractMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.fakeWarehousing.pojo.FakeCarrierContract">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="contract_code" property="contractCode" jdbcType="VARCHAR"/>
        <result column="carrier_id" property="carrierId" jdbcType="BIGINT"/>
        <result column="carrier_name" property="carrierName" jdbcType="VARCHAR"/>
        <result column="contract_name" property="contractName" jdbcType="VARCHAR"/>
        <result column="contract_status" property="contractStatus" jdbcType="TINYINT"/>
        <result column="start_time" property="startTime" jdbcType="TIMESTAMP"/>
        <result column="end_time" property="endTime" jdbcType="TIMESTAMP"/>
        <result column="remark" property="remark" jdbcType="VARCHAR"/>
        <result column="create_user" property="createUser" jdbcType="INTEGER"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_user" property="updateUser" jdbcType="INTEGER"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
        <result column="tenant_id" property="tenantId" jdbcType="BIGINT"/>
    </resultMap>
</mapper>
src/main/resources/mapper/fakeWarehousing/FakeCarrierOrderMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.fakeWarehousing.mapper.FakeCarrierOrderMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.fakeWarehousing.pojo.FakeCarrierOrder">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="order_code" property="orderCode" jdbcType="VARCHAR"/>
        <result column="carrier_id" property="carrierId" jdbcType="BIGINT"/>
        <result column="carrier_name" property="carrierName" jdbcType="VARCHAR"/>
        <result column="origin" property="origin" jdbcType="VARCHAR"/>
        <result column="destination" property="destination" jdbcType="VARCHAR"/>
        <result column="weight" property="weight" jdbcType="DECIMAL"/>
        <result column="volume" property="volume" jdbcType="DECIMAL"/>
        <result column="estimated_fee" property="estimatedFee" jdbcType="DECIMAL"/>
        <result column="order_status" property="orderStatus" jdbcType="INTEGER"/>
        <result column="remark" property="remark" jdbcType="VARCHAR"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
        <result column="create_user" property="createUser" jdbcType="INTEGER"/>
        <result column="update_user" property="updateUser" jdbcType="INTEGER"/>
        <result column="tenant_id" property="tenantId" jdbcType="BIGINT"/>
    </resultMap>
</mapper>
src/main/resources/mapper/fakeWarehousing/FakeDeliveryTrackMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.fakeWarehousing.mapper.FakeDeliveryTrackMapper">
    <resultMap id="BaseResultMap" type="com.ruoyi.fakeWarehousing.pojo.FakeDeliveryTrack">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="order_id" property="orderId" jdbcType="BIGINT"/>
        <result column="order_code" property="orderCode" jdbcType="VARCHAR"/>
        <result column="carrier_name" property="carrierName" jdbcType="VARCHAR"/>
        <result column="ship_time" property="shipTime" jdbcType="TIMESTAMP"/>
        <result column="vehicle_no" property="vehicleNo" jdbcType="VARCHAR"/>
        <result column="driver_name" property="driverName" jdbcType="VARCHAR"/>
        <result column="driver_phone" property="driverPhone" jdbcType="VARCHAR"/>
        <result column="remark" property="remark" jdbcType="VARCHAR"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
        <result column="create_user" property="createUser" jdbcType="INTEGER"/>
        <result column="update_user" property="updateUser" jdbcType="INTEGER"/>
        <result column="tenant_id" property="tenantId" jdbcType="BIGINT"/>
    </resultMap>
</mapper>
src/main/resources/mapper/fakeWarehousing/FakeFreightSettlementMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.fakeWarehousing.mapper.FakeFreightSettlementMapper">
    <resultMap type="com.ruoyi.fakeWarehousing.pojo.FakeFreightSettlement" id="FakeFreightSettlementResult">
        <id     column="id"           property="id"/>
        <result column="settle_no"    property="settleNo"/>
        <result column="carrier_name" property="carrierName"/>
        <result column="invoice_no"   property="invoiceNo"/>
        <result column="invoice_amt"  property="invoiceAmt"/>
        <result column="invoice_date" property="invoiceDate"/>
        <result column="settle_amt"   property="settleAmt"/>
        <result column="status"       property="status"/>
        <result column="create_time"  property="createTime"/>
        <result column="update_time"  property="updateTime"/>
        <result column="create_user"  property="createUser"/>
        <result column="update_user"  property="updateUser"/>
        <result column="tenant_id"    property="tenantId"/>
    </resultMap>
</mapper>