yys  1.出库管理-分页查询
2.出库管理-导出
3.出库管理-领用
4.出库台账-分页查询
5.出库台账-导出
6.出库台账-删除
7.库存管理-分页查询
8.库存管理-导出
9.库存管理-删除
已修改6个文件
已添加8个文件
502 ■■■■■ 文件已修改
src/main/java/com/ruoyi/framework/security/LoginUser.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecord.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/framework/security/LoginUser.java
@@ -161,6 +161,11 @@
        return user.getUserName();
    }
    public String getNickName()
    {
        return user.getNickName();
    }
    /**
     * è´¦æˆ·æ˜¯å¦æœªè¿‡æœŸ,过期无法验证
     */
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -16,6 +16,7 @@
import com.ruoyi.quality.pojo.QualityInspect;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@@ -43,18 +44,21 @@
    @PostMapping("/add")
    @Log(title = "采购入库-入库管理-新增入库", businessType = BusinessType.INSERT)
    @Transactional
    public AjaxResult add(@RequestBody ProcurementAddDto procurementDto) {
        return AjaxResult.success(procurementRecordService.add(procurementDto));
    }
    @PostMapping("/update")
    @Log(title = "采购入库-入库管理-修改入库", businessType = BusinessType.UPDATE)
    @Transactional
    public AjaxResult updatePro(@RequestBody ProcurementUpdateDto procurementDto) {
        return AjaxResult.success(procurementRecordService.updatePro(procurementDto));
    }
    @PostMapping("/del")
    @Log(title = "采购入库-入库管理-删除入库", businessType = BusinessType.DELETE)
    @Transactional
    public AjaxResult deletePro(@RequestBody ProcurementUpdateDto procurementDto) {
        return AjaxResult.success(procurementRecordService.deletePro(procurementDto));
    }
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.ruoyi.procurementrecord.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
/**
 * @author :yys
 * @date : 2025/7/8 13:30
 */
@RestController
@Api(tags = "采购出库")
@RequestMapping("/stockmanagement")
public class ProcurementRecordOutController extends BaseController {
    @Autowired
    private ProcurementRecordOutService procurementRecordOutService;
    @PostMapping("/stockout")
    @Log(title = "采购入库-出库管理-出库", businessType = BusinessType.INSERT)
    public AjaxResult stockout(@RequestBody ProcurementRecordOutAdd procurementRecordOutAdd) {
        return AjaxResult.success(procurementRecordOutService.stockout(procurementRecordOutAdd));
    }
    @GetMapping("/listPage")
    @Log(title = "采购入库-出库管理-出库查询", businessType = BusinessType.OTHER)
    public AjaxResult listPage(Page page, ProcurementRecordOutPageDto procurementDto) {
        IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPage(page, procurementDto);
        return AjaxResult.success(result);
    }
    @PostMapping("/del")
    @Log(title = "采购入库-出库管理-删除出库", businessType = BusinessType.DELETE)
    public AjaxResult deletePro(@RequestBody ProcurementUpdateDto procurementDto) {
        return AjaxResult.success(procurementRecordOutService.deletePro(procurementDto));
    }
    /**
     * å¯¼å‡º
     * @param response
     */
    @PostMapping("/export")
    public void export(HttpServletResponse response) {
        procurementRecordOutService.export(response);
    }
}
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
@@ -27,6 +27,8 @@
     */
    private String purchaseContractNumber;
    private String salesLedgerProductId;
    /**
     * å‡ºå…¥åº“数量
     */
@@ -34,6 +36,13 @@
    private BigDecimal inboundNum;
    /**
     * å¾…出库数量
     */
    @Excel(name = "待出库数量")
    private BigDecimal inboundNum0;
    /**
     * å‡ºå…¥åº“æ—¶é—´
     */
    @Excel(name = "入库时间")
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.procurementrecord.dto;
import lombok.Data;
/**
 * @author :yys
 * @date : 2025/7/8 13:34
 */
@Data
public class ProcurementRecordOutAdd {
    private String quantity;
    private String time;
    private Integer id;
    private Integer userId;
    private Integer salesLedgerProductId;
}
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.ruoyi.procurementrecord.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * @author :yys
 * @date : 2025/7/8 14:13
 */
@Data
public class ProcurementRecordOutPageDto {
    private Integer id;
    /**
     * å‡ºå…¥åº“数量
     */
    @Excel(name = "出库数量")
    private BigDecimal inboundNum;
    /**
     * å‡ºå…¥åº“æ—¶é—´
     */
    @Excel(name = "出库时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createDate;
    /**
     * å‡ºå…¥åº“用户
     */
    @Excel(name = "出库人")
    private String createBy;
    /**
     * ä¾›åº”商名称
     */
    @Excel(name = "供应商名称")
    private String supplierName;
    /**
     * äº§å“å¤§ç±»
     */
    @Excel(name = "产品大类")
    private String productCategory;
    /**
     * è§„格型号
     */
    @Excel(name = "规格型号")
    private String specificationModel;
    /**
     * å•位
     */
    @Excel(name = "单位")
    private String unit;
    /**
     * ç¨Žçއ
     */
    @Excel(name = "税率(%)")
    private BigDecimal taxRate;
    /**
     * å«ç¨Žå•ä»·
     */
    @Excel(name = "含税单价")
    private BigDecimal taxInclusiveUnitPrice;
    /**
     * å«ç¨Žæ€»ä»·
     */
    @Excel(name = "含税总价")
    private BigDecimal taxInclusiveTotalPrice;
    /**
     * ä¸å«ç¨Žæ€»ä»·
     */
    @Excel(name = "不含税总价")
    private BigDecimal taxExclusiveTotalPrice;
}
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.procurementrecord.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * @author :yys
 * @date : 2025/7/8 13:26
 */
public interface ProcurementRecordOutMapper extends BaseMapper<ProcurementRecordOut> {
    IPage<ProcurementRecordOutPageDto> listPage(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
    List<ProcurementRecordOutPageDto> list();
}
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecord.java
@@ -34,21 +34,26 @@
    private String inboundBatches;
    /**
     * å‡ºå…¥åº“数量
     * å…¥åº“数量
     */
    private BigDecimal inboundNum;
    /**
     * å‡ºå…¥åº“æ—¶é—´
     * å…¥åº“æ—¶é—´
     */
    private LocalDateTime createDate;
    /**
     * å‡ºå…¥åº“用户
     * å…¥åº“用户
     */
    private String createBy;
    /**
     * å…¥åº“用户id
     */
    private Long userId;
    /**
     * ç§Ÿæˆ·ID
     */
    private Long tenantId;
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.ruoyi.procurementrecord.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * @author :yys
 * @date : 2025/7/8 13:24
 */
@TableName("procurement_record_out")
@Data
@Builder
public class ProcurementRecordOut {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * äº§å“ä¿¡æ¯è¡¨id
     */
    private Integer salesLedgerProductId;
    /**
     * å…¥åº“id
     */
    private Integer procurementRecordStorageId;
    /**
     * å‡ºåº“批次
     */
    private String inboundBatches;
    /**
     * å‡ºå‡ºåº“数量
     */
    private BigDecimal inboundNum;
    /**
     * å‡ºå‡ºåº“æ—¶é—´
     */
    private LocalDateTime createDate;
    /**
     * å‡ºå‡ºåº“用户
     */
    private String createBy;
    /**
     * å‡ºå‡ºåº“用户id
     */
    private Integer userId;
    /**
     * ç§Ÿæˆ·ID
     */
    private Long tenantId;
}
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.procurementrecord.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.procurementrecord.dto.ProcurementRecordOutAdd;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import javax.servlet.http.HttpServletResponse;
/**
 * @author :yys
 * @date : 2025/7/8 13:28
 */
public interface ProcurementRecordOutService extends IService<ProcurementRecordOut> {
    int stockout(ProcurementRecordOutAdd procurementRecordOutAdd);
    IPage<ProcurementRecordOutPageDto> listPage(Page page, ProcurementRecordOutPageDto procurementDto);
    int deletePro(ProcurementUpdateDto procurementDto);
    void export(HttpServletResponse response);
}
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.ruoyi.procurementrecord.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.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecord;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author :yys
 * @date : 2025/7/8 13:29
 */
@Service
@RequiredArgsConstructor
@Slf4j
public class ProcurementRecordOutServiceImpl extends ServiceImpl<ProcurementRecordOutMapper, ProcurementRecordOut> implements ProcurementRecordOutService {
    public final ProcurementRecordOutMapper procurementRecordOutMapper;
    public final SysUserMapper sysUserMapper;
    @Override
    public int stockout(ProcurementRecordOutAdd procurementRecordOutAdd) {
        SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(procurementRecordOutAdd.getUserId().toString()));
        if(sysUser == null){
            throw new RuntimeException("出库人不存在");
        }
        // æŸ¥è¯¢é‡‡è´­å‡ºåº“数量
        LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getProcurementRecordStorageId, procurementRecordOutAdd.getId());
        Long aLong = procurementRecordOutMapper.selectCount(procurementRecordLambdaQueryWrapper);
        ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
                .procurementRecordStorageId(procurementRecordOutAdd.getId())
                .salesLedgerProductId(procurementRecordOutAdd.getSalesLedgerProductId())
                .inboundBatches(aLong.equals(0L) ? "第1批次" : "第"+ (aLong + 1) + "批次")
                .inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity()))
                .createDate(LocalDateTime.now())
                .userId(procurementRecordOutAdd.getUserId())
                .createBy(sysUser.getNickName())
                .tenantId(sysUser.getTenantId());
        this.save(procurementRecordOut.build());
        return 0;
    }
    @Override
    public IPage<ProcurementRecordOutPageDto> listPage(Page page, ProcurementRecordOutPageDto procurementDto) {
        return procurementRecordOutMapper.listPage(page, procurementDto);
    }
    public List<ProcurementRecordOut> getProcurementRecordOutByIds(List<Integer> id) {
        return procurementRecordOutMapper.selectBatchIds(id);
    }
    @Override
    public int deletePro(ProcurementUpdateDto procurementDto) {
        List<ProcurementRecordOut> procurementRecordOutByIds = getProcurementRecordOutByIds(procurementDto.getIds());
        if(CollectionUtils.isEmpty(procurementRecordOutByIds)){
            throw new RuntimeException("未查询到选中的人");
        }
        procurementRecordOutMapper.deleteBatchIds(procurementRecordOutByIds.stream().map(ProcurementRecordOut::getId).collect(Collectors.toList()));
        return 0;
    }
    @Override
    public void export(HttpServletResponse response) {
        List<ProcurementRecordOutPageDto> list =procurementRecordOutMapper.list();
        ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class);
        util.exportExcel(response, list, "出库台账");
    }
}
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -9,7 +9,9 @@
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.procurementrecord.dto.*;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecord;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -35,6 +37,8 @@
public class ProcurementRecordServiceImpl extends ServiceImpl<ProcurementRecordMapper, ProcurementRecord> implements ProcurementRecordService {
    private final ProcurementRecordMapper procurementRecordMapper;
    private final ProcurementRecordOutMapper procurementRecordOutMapper;
    private final SalesLedgerProductMapper salesLedgerProductMapper;
@@ -103,6 +107,13 @@
    public int deletePro(ProcurementUpdateDto procurementDto) {
        List<ProcurementRecord> procurementRecordById = getProcurementRecordByIds(procurementDto.getIds());
        procurementRecordMapper.deleteBatchIds(procurementRecordById.stream().map(ProcurementRecord::getId).collect(Collectors.toList()));
        // åˆ é™¤æ‰€æœ‰å¯¹åº”的出库记录
        LambdaQueryWrapper<ProcurementRecordOut> procurementRecordOutLambdaQueryWrapper = new LambdaQueryWrapper<>();
        procurementRecordOutLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, procurementDto.getIds());
        List<ProcurementRecordOut> procurementRecordOuts = procurementRecordOutMapper.selectList(procurementRecordOutLambdaQueryWrapper);
        if(!CollectionUtils.isEmpty(procurementRecordOuts)){
            procurementRecordOutMapper.deleteBatchIds(procurementRecordOuts.stream().map(ProcurementRecordOut::getId).collect(Collectors.toList()));
        }
        return 0;
    }
@@ -128,6 +139,7 @@
                    .inboundBatches(aLong.equals(0L) ? "第1批次" : "第"+ (aLong + 1) + "批次")
                    .inboundNum(detail.getInboundQuantity())
                    .createDate(LocalDateTime.now())
                    .userId(loginUser.getUserId())
                    .tenantId(loginUser.getTenantId())
                    .createBy(procurementDto.getNickName());
            this.save(procurementRecordBuilder.build());
@@ -146,7 +158,41 @@
    @Override
    public IPage<ProcurementPageDto> listPage(Page page, ProcurementPageDto procurementDto) {
        return procurementRecordMapper.listPage(page,procurementDto);
        IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPage(page, procurementDto);
        List<ProcurementPageDto> procurementPageDtos = procurementPageDtoIPage.getRecords();
        // è®¡ç®—待入库数量
        // æŸ¥è¯¢é‡‡è´­è®°å½•已入库数量
        List<Integer> collect = procurementPageDtos.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
        if(CollectionUtils.isEmpty( collect)){
            return procurementPageDtoIPage;
        }
        LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
        procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
        List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
        if(CollectionUtils.isEmpty( procurementRecords)){
            return procurementPageDtoIPage;
        }
        for (ProcurementPageDto dto : procurementPageDtos) {
            // æ ¹æ®é‡‡è´­å°è´¦ID筛选对应的出库记录
            List<ProcurementRecordOut> collect1 = procurementRecords.stream()
                    .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()))
                    .collect(Collectors.toList());
            // å¦‚果没有相关的出库记录,跳过该条数据
            if(CollectionUtils.isEmpty(collect1)){
                dto.setInboundNum0(dto.getInboundNum());
                continue;
            }
            // è®¡ç®—已出库数量总和,并设置待出库数量
            BigDecimal totalInboundNum = collect1.stream()
                    .map(ProcurementRecordOut::getInboundNum)
                    .reduce(BigDecimal.ZERO, BigDecimal::add);
            // å¾…出库数量 = æ€»æ•°é‡ - å·²å‡ºåº“数量
            dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
        }
        return procurementPageDtoIPage;
    }
}
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -32,16 +32,16 @@
        t3.purchase_contract_number,
        t2.product_category,
        t1.id,
        t1.sales_ledger_product_id,
        t2.specification_model,
        t2.unit,
        t2.quantity,
        t2.quantity as quantity0,
        t2.tax_rate,
        t2.tax_inclusive_unit_price,
        t2.tax_inclusive_total_price,
        t2.tax_exclusive_total_price,
        t1.inbound_batches,
        t1.inbound_num,
        t1.inbound_num as inboundNum0,
        t1.create_date,
        t1.create_by
        from  procurement_record_storage t1
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
<?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.procurementrecord.mapper.ProcurementRecordOutMapper">
    <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
        select
        t3.supplier_name,
        t2.product_category,
        t1.id,
        t2.specification_model,
        t2.unit,
        t2.tax_rate,
        t2.tax_inclusive_unit_price,
        t2.tax_inclusive_total_price,
        t2.tax_exclusive_total_price,
        t1.inbound_num,
        t1.create_date,
        t1.create_by
        from  procurement_record_out t1
        left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
        left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
        <where>
            1 = 1
            <if test="req.supplierName != null and req.supplierName != ''">
                and t3.supplier_name like  concat('%',#{req.supplierName},'%')
            </if>
        </where>
    </select>
    <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
        select
            t3.supplier_name,
            t2.product_category,
            t1.id,
            t2.specification_model,
            t2.unit,
            t2.tax_rate,
            t2.tax_inclusive_unit_price,
            t2.tax_inclusive_total_price,
            t2.tax_exclusive_total_price,
            t1.inbound_num,
            t1.create_date,
            t1.create_by
        from  procurement_record_out t1
                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
    </select>
</mapper>