From 173f44a1f9a59509996192e3446cbd26f2613b5e Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 10 十月 2025 15:55:32 +0800
Subject: [PATCH] yys 新增关键煤种锁仓模块
---
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java | 98 +++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 86 insertions(+), 12 deletions(-)
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
index 1ac61c9..9c88381 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
@@ -3,18 +3,24 @@
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.ruoyi.business.dto.EquipmentManagementDto;
-import com.ruoyi.business.dto.ProductionMasterDto;
-import com.ruoyi.business.entity.EquipmentManagement;
-import com.ruoyi.business.entity.Production;
-import com.ruoyi.business.mapper.EquipmentManagementMapper;
-import com.ruoyi.business.service.EquipmentManagementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.business.dto.EquipmentManagementDto;
+import com.ruoyi.business.entity.EquipmentManagement;
+import com.ruoyi.business.entity.EquipmentUsageRecord;
+import com.ruoyi.business.mapper.EquipmentManagementMapper;
+import com.ruoyi.business.mapper.EquipmentUsageRecordMapper;
+import com.ruoyi.business.service.EquipmentManagementService;
+import com.ruoyi.business.vo.EquipmentManagementVo;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
-import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
+import java.util.List;
import java.util.Objects;
/**
@@ -31,11 +37,53 @@
private final EquipmentManagementMapper equipmentManagementMapper;
- public IPage<EquipmentManagementDto> selectProductionList(Page<EquipmentManagement> page, EquipmentManagementDto equipmentManagementDto) {
- Page<EquipmentManagement> entityPage = equipmentManagementMapper.selectPage(page, null);
- IPage<EquipmentManagementDto> dtoPage = new Page<>();
- BeanUtils.copyProperties(entityPage, dtoPage);
+ private final EquipmentUsageRecordMapper equipmentUsageRecordMapper;
+ public IPage<EquipmentManagementDto> selectProductionList(Page<EquipmentManagement> page, EquipmentManagementDto equipmentManagementDto) {
+ // 1. 鏋勫缓鏌ヨ鏉′欢锛坰earchAll 妯$硦鏌ヨ锛�
+ LambdaQueryWrapper<EquipmentManagement> queryWrapper = new LambdaQueryWrapper<>();
+
+ if (StringUtils.isNotBlank(equipmentManagementDto.getSearchAll())) {
+ String searchValue = equipmentManagementDto.getSearchAll();
+ queryWrapper.and(wrapper ->
+ wrapper.like(EquipmentManagement::getEquipmentNo, searchValue)
+ .or()
+ .like(EquipmentManagement::getEquipmentName, searchValue)
+ .or()
+ .like(EquipmentManagement::getSpecification, searchValue)
+ );
+ }
+
+ // 2. 鎵ц鍒嗛〉鏌ヨ
+ Page<EquipmentManagement> entityPage = equipmentManagementMapper.selectPage(page, queryWrapper);
+
+ // 3. 杞崲涓� DTO 鍒嗛〉
+ IPage<EquipmentManagementDto> dtoPage = new Page<>();
+ BeanUtils.copyProperties(entityPage, dtoPage, "records");
+
+ // 4. 鏌ヨ姣忎釜璁惧鐨勪娇鐢ㄦ�婚噺锛坲sageQuantity锛夊苟璁剧疆鍒� DTO
+ List<EquipmentManagementDto> dtoRecords = entityPage.getRecords().stream()
+ .map(entity -> {
+ EquipmentManagementDto dto = new EquipmentManagementDto();
+ BeanUtils.copyProperties(entity, dto);
+
+ // 鏌ヨ璇ヨ澶囩殑浣跨敤鎬婚噺锛坲sageQuantity锛�
+ LambdaQueryWrapper<EquipmentUsageRecord> usageQueryWrapper = new LambdaQueryWrapper<>();
+ usageQueryWrapper.eq(EquipmentUsageRecord::getEquipmentId, entity.getId())
+ .eq(EquipmentUsageRecord::getEquipmentStatus, 1);
+
+ // 璁$畻鎬讳娇鐢ㄩ噺
+ Integer totalUsage = equipmentUsageRecordMapper.selectList(usageQueryWrapper).stream()
+ .mapToInt(EquipmentUsageRecord::getUsageQuantity)
+ .sum();
+
+ // 璁剧疆浣跨敤鎬婚噺
+ dto.setUsedNo(totalUsage);
+ return dto;
+ })
+ .toList();
+
+ dtoPage.setRecords(dtoRecords);
return dtoPage;
}
@@ -51,7 +99,33 @@
}
@Override
+ public List<EquipmentManagementVo> selectEquipmentList() {
+ List<EquipmentManagement> equipmentManagements = equipmentManagementMapper.selectList(null);
+ return equipmentManagements.stream()
+ .map(equipment -> {
+ EquipmentManagementVo vo = new EquipmentManagementVo();
+ vo.setId(equipment.getId()); // 璁惧id
+ vo.setEquipmentName(equipment.getEquipmentName()); // 璁惧鍚嶇О
+ vo.setQuantity(equipment.getQuantity()); // 鏁伴噺
+ vo.setConsumables(equipment.isConsumables()); // 鏄惁鑰楁潗绫�
+ return vo;
+ })
+ .toList();
+ }
+
+ @Override
+ @Transactional(isolation = Isolation.REPEATABLE_READ)
public int delByIds(Long[] ids) {
- return equipmentManagementMapper.deleteByIds(Arrays.asList(ids));
+ // 1. 妫�鏌ヨ澶囨槸鍚︽鍦ㄤ娇鐢紙娣诲姞琛岄攣 for update锛�
+ List<EquipmentUsageRecord> records = equipmentUsageRecordMapper.selectList(
+ new LambdaQueryWrapper<EquipmentUsageRecord>()
+ .in(EquipmentUsageRecord::getEquipmentId, Arrays.asList(ids))
+ .last("FOR UPDATE") // 娣诲姞琛岄攣锛岄攣瀹氭煡璇㈢粨鏋�
+ );
+ if (!records.isEmpty()) {
+ throw new BaseException("璁惧姝e湪浣跨敤涓紝璇锋牳瀵�!");
+ } else {
+ return equipmentManagementMapper.deleteByIds(Arrays.asList(ids));
+ }
}
}
--
Gitblit v1.9.3