From b465cb64b42d207ffd7865c87be531d249f379ee Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 11 七月 2025 17:20:58 +0800
Subject: [PATCH] yys  修改审批协同bug

---
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java |  204 +++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 175 insertions(+), 29 deletions(-)

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 5590a6c..06612f6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -4,16 +4,18 @@
 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.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 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.ProcurementRecordStorage;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
-import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.RequiredArgsConstructor;
@@ -24,6 +26,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -34,7 +37,7 @@
 @Service
 @RequiredArgsConstructor
 @Slf4j
-public class ProcurementRecordServiceImpl extends ServiceImpl<ProcurementRecordMapper, ProcurementRecord> implements ProcurementRecordService {
+public class ProcurementRecordServiceImpl extends ServiceImpl<ProcurementRecordMapper, ProcurementRecordStorage> implements ProcurementRecordService {
 
     private final ProcurementRecordMapper procurementRecordMapper;
 
@@ -51,16 +54,16 @@
         if(CollectionUtils.isEmpty( collect)){
             return procurementDtos;
         }
-        LambdaQueryWrapper<ProcurementRecord> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        procurementRecordLambdaQueryWrapper.in(ProcurementRecord::getSalesLedgerProductId, collect);
-        List<ProcurementRecord> procurementRecords = procurementRecordMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        procurementRecordLambdaQueryWrapper.in(ProcurementRecordStorage::getSalesLedgerProductId, collect);
+        List<ProcurementRecordStorage> procurementRecordStorages = procurementRecordMapper.selectList(procurementRecordLambdaQueryWrapper);
+        if(CollectionUtils.isEmpty(procurementRecordStorages)){
             return procurementDtos;
         }
         for (ProcurementDto dto : procurementDtos) {
             // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍏ュ簱璁板綍
-            List<ProcurementRecord> collect1 = procurementRecords.stream()
-                    .filter(procurementRecord -> procurementRecord.getSalesLedgerProductId().equals(dto.getId()))
+            List<ProcurementRecordStorage> collect1 = procurementRecordStorages.stream()
+                    .filter(procurementRecordStorage -> procurementRecordStorage.getSalesLedgerProductId().equals(dto.getId()))
                     .collect(Collectors.toList());
             
             // 濡傛灉娌℃湁鐩稿叧鐨勫叆搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
@@ -71,7 +74,7 @@
             
             // 璁$畻宸插叆搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭叆搴撴暟閲�
             BigDecimal totalInboundNum = collect1.stream()
-                    .map(ProcurementRecord::getInboundNum)
+                    .map(ProcurementRecordStorage::getInboundNum)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             
             // 寰呭叆搴撴暟閲� = 鎬绘暟閲� - 宸插叆搴撴暟閲�
@@ -80,33 +83,35 @@
         return procurementDtos;
     }
 
-    public ProcurementRecord getProcurementRecordById(Integer id){
-        ProcurementRecord procurementRecord = procurementRecordMapper.selectById(id);
-        if(procurementRecord == null) {
+    public ProcurementRecordStorage getProcurementRecordById(Integer id){
+        ProcurementRecordStorage procurementRecordStorage = procurementRecordMapper.selectById(id);
+        if(procurementRecordStorage == null) {
             throw new RuntimeException("鏈壘鍒拌閲囪喘鍏ュ簱璁板綍");
         }
-        return procurementRecord;
+        return procurementRecordStorage;
     }
 
-    public List<ProcurementRecord> getProcurementRecordByIds(List<Integer> id){
-        List<ProcurementRecord> procurementRecord = procurementRecordMapper.selectBatchIds(id);
-        if(procurementRecord == null) {
+    public List<ProcurementRecordStorage> getProcurementRecordByIds(List<Integer> id){
+        List<ProcurementRecordStorage> procurementRecordStorage = procurementRecordMapper.selectBatchIds(id);
+        if(procurementRecordStorage == null) {
             throw new RuntimeException("鏈壘鍒拌閲囪喘鍏ュ簱璁板綍");
         }
-        return procurementRecord;
+        return procurementRecordStorage;
     }
 
     @Override
     public int updatePro(ProcurementUpdateDto procurementDto) {
-        ProcurementRecord procurementRecordById = getProcurementRecordById(procurementDto.getId());
-        procurementRecordById.setInboundNum(procurementDto.getQuantityStock());
-        return procurementRecordMapper.updateById(procurementRecordById);
+        ProcurementRecordStorage procurementRecordStorageById = getProcurementRecordById(procurementDto.getId());
+        procurementRecordStorageById.setInboundNum(procurementDto.getQuantityStock());
+        procurementRecordStorageById.setUpdateUser(SecurityUtils.getLoginUser().getUserId());
+        procurementRecordStorageById.setUpdateTime(LocalDateTime.now());
+        return procurementRecordMapper.updateById(procurementRecordStorageById);
     }
 
     @Override
     public int deletePro(ProcurementUpdateDto procurementDto) {
-        List<ProcurementRecord> procurementRecordById = getProcurementRecordByIds(procurementDto.getIds());
-        procurementRecordMapper.deleteBatchIds(procurementRecordById.stream().map(ProcurementRecord::getId).collect(Collectors.toList()));
+        List<ProcurementRecordStorage> procurementRecordStorageById = getProcurementRecordByIds(procurementDto.getIds());
+        procurementRecordMapper.deleteBatchIds(procurementRecordStorageById.stream().map(ProcurementRecordStorage::getId).collect(Collectors.toList()));
         // 鍒犻櫎鎵�鏈夊搴旂殑鍑哄簱璁板綍
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordOutLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordOutLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, procurementDto.getIds());
@@ -120,8 +125,109 @@
     @Override
     public void export(HttpServletResponse response) {
         List<ProcurementPageDto> list =procurementRecordMapper.list();
+        // 璁$畻寰呭叆搴撴暟閲�
+        // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+        List<Integer> collect = list.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty( collect)){
+            ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class);
+            util.exportExcel(response, list, "鍏ュ簱鍙拌处");
+            return;
+        }
+        LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+        List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
+        if(CollectionUtils.isEmpty( procurementRecords)){
+            ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class);
+            util.exportExcel(response, list, "鍏ュ簱鍙拌处");
+            return;
+        }
+        for (ProcurementPageDto dto : list) {
+            // 鏍规嵁閲囪喘鍙拌处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));
+        }
         ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class);
         util.exportExcel(response, list, "鍏ュ簱鍙拌处");
+    }
+
+    private final SysUserMapper sysUserMapper;
+
+    @Override
+    public int updateManagement(ProcurementManagementUpdateDto procurementDto) {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        SysUser sysUser = sysUserMapper.selectUserById(procurementDto.getCreateUser());
+        if(sysUser == null){
+            throw new RuntimeException("鍏ュ簱浜轰笉瀛樺湪");
+        }
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String entryDateStr = procurementDto.getEntryDate() + " 00:00:00";
+        String createTimeStr = procurementDto.getCreateTime() + " 00:00:00";
+        ProcurementRecordStorage procurementRecordStorageById = getProcurementRecordById(procurementDto.getId());
+        procurementRecordStorageById.setCreateBy(sysUser.getNickName());
+        procurementRecordStorageById.setCreateUser(sysUser.getUserId());
+        procurementRecordStorageById.setUpdateTime(LocalDateTime.parse(entryDateStr,df));
+        procurementRecordStorageById.setUpdateUser(loginUser.getUserId());
+        procurementRecordStorageById.setCreateTime(LocalDateTime.parse(createTimeStr,df));
+        procurementRecordMapper.updateById(procurementRecordStorageById);
+        return 0;
+    }
+
+    @Override
+    public void exportCopy(HttpServletResponse response) {
+        List<ProcurementPageDtoCopy> list =procurementRecordMapper.listCopy();
+        // 璁$畻寰呭叆搴撴暟閲�
+        // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+        List<Integer> collect = list.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty( collect)){
+            ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class);
+            util.exportExcel(response, list, "搴撳瓨绠$悊");
+            return;
+        }
+        LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+        List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
+        if(CollectionUtils.isEmpty( procurementRecords)){
+            ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class);
+            util.exportExcel(response, list, "搴撳瓨绠$悊");
+            return;
+        }
+        for (ProcurementPageDtoCopy dto : list) {
+            // 鏍规嵁閲囪喘鍙拌处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));
+        }
+        ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class);
+        util.exportExcel(response, list, "搴撳瓨绠$悊");
     }
 
     @Override
@@ -130,17 +236,18 @@
         // 鎵归噺鏂板
         for (Details detail : procurementDto.getDetails()) {
             // 鏌ヨ閲囪喘鍏ュ簱鏁伴噺
-            LambdaQueryWrapper<ProcurementRecord> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
-            procurementRecordLambdaQueryWrapper.eq(ProcurementRecord::getSalesLedgerProductId, detail.getId());
+            LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            procurementRecordLambdaQueryWrapper.eq(ProcurementRecordStorage::getSalesLedgerProductId, detail.getId());
             Long aLong = procurementRecordMapper.selectCount(procurementRecordLambdaQueryWrapper);
 
-            ProcurementRecord.ProcurementRecordBuilder procurementRecordBuilder = ProcurementRecord.builder()
+            ProcurementRecordStorage.ProcurementRecordStorageBuilder procurementRecordBuilder = ProcurementRecordStorage.builder()
                     .salesLedgerProductId(detail.getId())
                     .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�"+ (aLong + 1) + "鎵规")
                     .inboundNum(detail.getInboundQuantity())
-                    .createDate(LocalDateTime.now())
-                    .userId(loginUser.getUserId())
-                    .tenantId(loginUser.getTenantId())
+                    .createTime(LocalDateTime.now())
+                    .createUser(loginUser.getUserId())
+                    .updateTime(LocalDateTime.now())
+                    .updateUser(loginUser.getUserId())
                     .createBy(procurementDto.getNickName());
             this.save(procurementRecordBuilder.build());
             // 鍏ュ簱鎴愬姛鍑忔帀閲囪喘鏁伴噺
@@ -195,4 +302,43 @@
         return procurementPageDtoIPage;
     }
 
+    @Override
+    public IPage<ProcurementPageDtoCopy> listPageCopy(Page page, ProcurementPageDto procurementDto) {
+        IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopy(page, procurementDto);
+        List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords();
+        // 璁$畻寰呭叆搴撴暟閲�
+        // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+        List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty( collect)){
+            return procurementPageDtoCopyIPage;
+        }
+        LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+        List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
+        if(CollectionUtils.isEmpty( procurementRecords)){
+            return procurementPageDtoCopyIPage;
+        }
+        for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) {
+            // 鏍规嵁閲囪喘鍙拌处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 procurementPageDtoCopyIPage;
+    }
+
 }

--
Gitblit v1.9.3