From ce7582bd007b671dc311ee8511cc409230ef1b1c Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 08 七月 2025 17:49:29 +0800
Subject: [PATCH] yys  1.出库管理-分页查询      2.出库管理-导出      3.出库管理-领用      4.出库台账-分页查询      5.出库台账-导出      6.出库台账-删除      7.库存管理-分页查询      8.库存管理-导出      9.库存管理-删除

---
 src/main/java/com/ruoyi/framework/security/LoginUser.java                                   |    5 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java    |   60 ++++++
 src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java            |   21 ++
 src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java                    |   66 +++++++
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java    |   48 +++++
 src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml                  |   47 +++++
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java       |    4 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java                  |   22 ++
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java |   92 ++++++++++
 src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecord.java                       |   11 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java          |   26 ++
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml                     |    4 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java                       |    9 +
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java              |   87 +++++++++
 14 files changed, 496 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/framework/security/LoginUser.java b/src/main/java/com/ruoyi/framework/security/LoginUser.java
index 3b020b0..bb91be1 100644
--- a/src/main/java/com/ruoyi/framework/security/LoginUser.java
+++ b/src/main/java/com/ruoyi/framework/security/LoginUser.java
@@ -161,6 +161,11 @@
         return user.getUserName();
     }
 
+    public String getNickName()
+    {
+        return user.getNickName();
+    }
+
     /**
      * 璐︽埛鏄惁鏈繃鏈�,杩囨湡鏃犳硶楠岃瘉
      */
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 078a489..6778afc 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/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));
     }
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
new file mode 100644
index 0000000..1a656be
--- /dev/null
+++ b/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);
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
index 37ab99e..8009463 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
+++ b/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 = "鍏ュ簱鏃堕棿")
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
new file mode 100644
index 0000000..6c76cdd
--- /dev/null
+++ b/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;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
new file mode 100644
index 0000000..b0d8cad
--- /dev/null
+++ b/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;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
new file mode 100644
index 0000000..4a9390b
--- /dev/null
+++ b/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();
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecord.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecord.java
index 1c3e04d..562e1fe 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecord.java
+++ b/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;
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
new file mode 100644
index 0000000..e4761a2
--- /dev/null
+++ b/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;
+
+    /**
+     * 浜у搧淇℃伅琛╥d
+     */
+    private Integer salesLedgerProductId;
+
+    /**
+     * 鍏ュ簱id
+     */
+    private Integer procurementRecordStorageId;
+
+    /**
+     * 鍑哄簱鎵规
+     */
+    private String inboundBatches;
+
+    /**
+     * 鍑哄嚭搴撴暟閲�
+     */
+    private BigDecimal inboundNum;
+
+    /**
+     * 鍑哄嚭搴撴椂闂�
+     */
+    private LocalDateTime createDate;
+
+    /**
+     * 鍑哄嚭搴撶敤鎴�
+     */
+    private String createBy;
+
+    /**
+     * 鍑哄嚭搴撶敤鎴穒d
+     */
+    private Integer userId;
+
+    /**
+     * 绉熸埛ID
+     */
+    private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
new file mode 100644
index 0000000..785efc4
--- /dev/null
+++ b/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);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
new file mode 100644
index 0000000..078d8f9
--- /dev/null
+++ b/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, "鍑哄簱鍙拌处");
+    }
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index 6abb7cf..5590a6c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/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;
     }
 
 }
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index 70c6949..cf76a56 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/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
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
new file mode 100644
index 0000000..8c35ffc
--- /dev/null
+++ b/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>
\ No newline at end of file

--
Gitblit v1.9.3