main-business/src/main/java/com/ruoyi/business/controller/FileController.java
ÎļþÒÑɾ³ý main-business/src/main/java/com/ruoyi/business/controller/SalesRecordController.java
@@ -29,8 +29,8 @@ * éå®è®°å½è¡¨æ¥è¯¢ */ @GetMapping("/list") public R<IPage<SalesRecord>> list(Page page, SalesRecordDto salesRecordDto) { IPage<SalesRecord> list = salesRecordService.selectSalesRecordList(page,salesRecordDto); public R<IPage<SalesRecordDto>> list(Page<SalesRecord> page, SalesRecordDto salesRecordDto) { IPage<SalesRecordDto> list = salesRecordService.selectSalesRecordList(page,salesRecordDto); return R.ok(list); } main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
@@ -13,4 +13,9 @@ private List<Long> ids; /** * ç ¤ç§ */ private String coal; } main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
@@ -38,4 +38,9 @@ * åæ®µå */ private Integer type; /** * ç ¤ç§ */ private String coal; } main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java
@@ -5,4 +5,6 @@ @Data public class SalesRecordDto extends SalesRecord { private String coal; } main-business/src/main/java/com/ruoyi/business/entity/File.java
ÎļþÒÑɾ³ý main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java
@@ -48,11 +48,6 @@ @TableField(value = "coal_id") private Long coalId; /** * ç ¤ç§ */ @TableField(value = "coal") private String coal; /** * åä»·ï¼å«ç¨ï¼ */ @TableField(value = "price_including_tax") main-business/src/main/java/com/ruoyi/business/mapper/FileMapper.java
ÎļþÒÑɾ³ý main-business/src/main/java/com/ruoyi/business/service/FileService.java
ÎļþÒÑɾ³ý main-business/src/main/java/com/ruoyi/business/service/SalesRecordService.java
@@ -2,9 +2,9 @@ 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.business.dto.SalesRecordDto; import com.ruoyi.business.entity.SalesRecord; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> @@ -16,7 +16,7 @@ */ public interface SalesRecordService extends IService<SalesRecord> { IPage<SalesRecord> selectSalesRecordList(Page page, SalesRecordDto salesRecordDto); IPage<SalesRecordDto> selectSalesRecordList(Page<SalesRecord> page, SalesRecordDto salesRecordDto); int addOrEditSalesRecord(SalesRecordDto salesRecordDto); main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java
@@ -137,6 +137,7 @@ // 7. æå»ºè¿åå页对象 IPage<ArchiveDto> resultPage = new Page<>(); BeanUtils.copyProperties(archivePage, resultPage); resultPage.setRecords(dtoList); return resultPage; } main-business/src/main/java/com/ruoyi/business/service/impl/FileServiceImpl.java
ÎļþÒÑɾ³ý main-business/src/main/java/com/ruoyi/business/service/impl/InspectionTaskServiceImpl.java
@@ -120,6 +120,7 @@ // 7. æå»ºè¿åå页对象 IPage<InspectionTaskDto> resultPage = new Page<>(); BeanUtils.copyProperties(entityPage, resultPage); resultPage.setRecords(dtoList); return resultPage; } main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.entity.CoalField; import com.ruoyi.basic.entity.CoalInfo; import com.ruoyi.basic.entity.CoalValue; import com.ruoyi.basic.mapper.CoalFieldMapper; import com.ruoyi.basic.mapper.CoalInfoMapper; import com.ruoyi.basic.mapper.CoalValueMapper; import com.ruoyi.business.dto.OfficialInventoryDto; import com.ruoyi.business.entity.OfficialInventory; @@ -23,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** @@ -42,6 +45,8 @@ private final CoalValueMapper coalValueMapper; private final CoalFieldMapper coalFieldMapper; private final CoalInfoMapper coalInfoMapper; @Override @@ -63,6 +68,21 @@ .map(CoalField::getFields) .distinct() .collect(Collectors.toList()); //æ¥è¯¢ç ¤ç§ids List<Long> coalIds = entityPage.getRecords().stream() .map(OfficialInventory::getCoalId) .distinct() .collect(Collectors.toList()); // æ¹éæ¥è¯¢CoalInfo Map<Long, CoalInfo> coalInfoMap; if (!coalIds.isEmpty()) { List<CoalInfo> coalInfos = coalInfoMapper.selectList(new LambdaQueryWrapper<CoalInfo>().in(CoalInfo::getId, coalIds)); coalInfoMap = coalInfos.stream().collect(Collectors.toMap(CoalInfo::getId, Function.identity())); } else { coalInfoMap = new HashMap<>(); } // é忝æ¡è®°å½ï¼è¿è¡è½¬æ¢å¹¶å¡«å fields for (OfficialInventory entity : entityPage.getRecords()) { @@ -97,6 +117,12 @@ fields.add(fieldMap); } // 设置Coalä¿¡æ¯ CoalInfo coalInfo = coalInfoMap.get(entity.getCoalId()); if (coalInfo != null) { dto.setCoal(coalInfo.getCoal()); } // è®¾ç½®å° DTO ä¸ dto.setFields(fields); dtoList.add(dto); @@ -120,6 +146,8 @@ .map(OI -> { OfficialInventoryVo vo = new OfficialInventoryVo(); BeanUtils.copyProperties(OI, vo); CoalInfo coalInfo = coalInfoMapper.selectById(OI.getCoalId()); vo.setCoal(coalInfo.getCoal()); return vo; }) .collect(Collectors.toList()); main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.entity.CoalField; import com.ruoyi.basic.entity.CoalInfo; import com.ruoyi.basic.entity.CoalValue; import com.ruoyi.basic.mapper.CoalFieldMapper; import com.ruoyi.basic.mapper.CoalInfoMapper; import com.ruoyi.basic.mapper.CoalValueMapper; import com.ruoyi.business.dto.PendingInventoryDto; import com.ruoyi.business.entity.OfficialInventory; @@ -26,6 +28,7 @@ import java.math.BigDecimal; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** @@ -47,6 +50,8 @@ private final CoalValueMapper coalValueMapper; private final CoalFieldMapper coalFieldMapper; private final CoalInfoMapper coalInfoMapper; private final InputInventoryRecordService inputInventoryRecordService; @@ -71,20 +76,43 @@ .map(PendingInventory::getId) .collect(Collectors.toList()); // 5. æ¹éæ¥è¯¢å ³èçæ£å¼åºåä¿¡æ¯ // 5. æ¹éæ¥è¯¢å ³èçç ¤çä¿¡æ¯åæ£å¼åºåä¿¡æ¯ List<Long> coalIds = pendingInventoryPage.getRecords().stream() .map(PendingInventory::getCoalId) .distinct() .collect(Collectors.toList()); // æ¹éæ¥è¯¢CoalInfo Map<Long, CoalInfo> coalInfoMap; if (!coalIds.isEmpty()) { List<CoalInfo> coalInfos = coalInfoMapper.selectList(new LambdaQueryWrapper<CoalInfo>().in(CoalInfo::getId, coalIds)); coalInfoMap = coalInfos.stream().collect(Collectors.toMap(CoalInfo::getId, Function.identity())); } else { coalInfoMap = new HashMap<>(); } // æ¹éæ¥è¯¢æ£å¼åºåä¿¡æ¯ Map<Long, Long> pendingToOfficialMap = getOfficialInventoryMap(pendingIds); // 6. 使ç¨MyBatis-Plusçconvertæ¹æ³è½¬æ¢DTO // 6. 转æ¢DTO并设置ç¸å ³å段 return pendingInventoryPage.convert(record -> { PendingInventoryDto dto = new PendingInventoryDto(); BeanUtils.copyProperties(record, dto); // 设置Coalä¿¡æ¯ CoalInfo coalInfo = coalInfoMap.get(record.getCoalId()); if (coalInfo != null) { dto.setCoal(coalInfo.getCoal()); } // ä»é¢å è½½çMapä¸è·åofficialId dto.setOfficialId(pendingToOfficialMap.getOrDefault(record.getId(), null)); return dto; }); } // æ¹éè·åå¾ å¤çåºå䏿£å¼åºåçæ å°å ³ç³» private Map<Long, Long> getOfficialInventoryMap(List<Long> pendingIds) { if (CollectionUtils.isEmpty(pendingIds)) { main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
@@ -77,7 +77,6 @@ IPage<ProductionMasterDto> dtoPage = new Page<>(); BeanUtils.copyProperties(entityPage, dtoPage, "records"); dtoPage.setRecords(dtoList); return dtoPage; } main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java
@@ -5,7 +5,9 @@ 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.basic.entity.CoalInfo; import com.ruoyi.basic.entity.Customer; import com.ruoyi.basic.mapper.CoalInfoMapper; import com.ruoyi.basic.mapper.CustomerMapper; import com.ruoyi.business.dto.SalesRecordDto; import com.ruoyi.business.entity.OfficialInventory; @@ -22,6 +24,11 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** * <p> @@ -43,12 +50,60 @@ private final OfficialInventoryMapper officialInventoryMapper; private final CoalInfoMapper coalInfoMapper; @Override public IPage<SalesRecord> selectSalesRecordList(Page page, SalesRecordDto salesRecordDto) { public IPage<SalesRecordDto> selectSalesRecordList(Page<SalesRecord> page, SalesRecordDto salesRecordDto) { // 1. å建æ¥è¯¢æ¡ä»¶ï¼æå建æ¶é´ååºæåº LambdaQueryWrapper<SalesRecord> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.orderByDesc(SalesRecord::getCreateTime); return salesRecordMapper.selectPage(page, queryWrapper); // 2. è·åå页çéå®è®°å½ IPage<SalesRecord> salesRecordPage = salesRecordMapper.selectPage(page, queryWrapper); // 3. æ¹éæ¥è¯¢ææCoalInfo List<Long> coalIds = salesRecordPage.getRecords().stream() .map(SalesRecord::getCoalId) // è·åææSalesRecordçcoalId .collect(Collectors.toList()); Map<Long, CoalInfo> coalInfoMap; // 妿æç ¤çIDï¼æ§è¡æ¹éæ¥è¯¢ if (!coalIds.isEmpty()) { // 使ç¨selectListè¿è¡æ¹éæ¥è¯¢ LambdaQueryWrapper<CoalInfo> coalInfoQueryWrapper = new LambdaQueryWrapper<>(); coalInfoQueryWrapper.in(CoalInfo::getId, coalIds); List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalInfoQueryWrapper); // å°æ¥è¯¢ç»ææ¾å ¥Mapä¸ï¼ç ¤çID为é®ï¼CoalInfoä¸ºå¼ coalInfoMap = coalInfos.stream() .collect(Collectors.toMap(CoalInfo::getId, Function.identity())); } else { coalInfoMap = new HashMap<>(); } // 4. å建è¿åç»æé¡µï¼ä½¿ç¨BeanUtilsè¿è¡å±æ§å¤å¶ Page<SalesRecordDto> resultPage = new Page<>(); BeanUtils.copyProperties(salesRecordPage, resultPage); // å¤å¶åé¡µä¿¡æ¯ // 5. 转æ¢SalesRecord为SalesRecordDtoï¼å¹¶è®¾ç½®æ¯æ¡éå®è®°å½çç ¤çä¿¡æ¯ List<SalesRecordDto> dtoList = salesRecordPage.getRecords().stream().map(salesRecord -> { SalesRecordDto dto = new SalesRecordDto(); BeanUtils.copyProperties(salesRecord, dto); // å°SalesRecordç屿§å¤å¶å°SalesRecordDtoä¸ // 设置Coalä¿¡æ¯ CoalInfo coalInfo = coalInfoMap.get(salesRecord.getCoalId()); if (coalInfo != null) { dto.setCoal(coalInfo.getCoal()); } return dto; }).collect(Collectors.toList()); resultPage.setRecords(dtoList); // 设置转æ¢åçDTOå表 return resultPage; } @Override @Transactional(rollbackFor = Exception.class) @@ -61,7 +116,7 @@ if (officialInventory == null) { throw new BaseException("æ£å¼åºç ¤ç§ä¿¡æ¯ä¸åå¨"); } if (salesRecordDto.getSaleQuantity().compareTo(officialInventory.getInventoryQuantity()) > 0){ if (salesRecordDto.getSaleQuantity().compareTo(officialInventory.getInventoryQuantity()) > 0) { throw new BaseException("é宿°éä¸è½å¤§äºåºåæ°é"); } officialInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().subtract(salesRecordDto.getSaleQuantity())); @@ -69,7 +124,7 @@ officialInventoryMapper.updateById(officialInventory); // æå»ºéå®è®°å½å®ä½ SalesRecord salesRecord = buildSalesRecord(salesRecordDto,officialInventory.getCoalId()); SalesRecord salesRecord = buildSalesRecord(salesRecordDto, officialInventory.getCoalId()); // å¤çæ°å¢/æ´æ°é»è¾ if (salesRecordDto.getId() == null) { @@ -94,7 +149,7 @@ } } private SalesRecord buildSalesRecord(SalesRecordDto dto,Long coalId) { private SalesRecord buildSalesRecord(SalesRecordDto dto, Long coalId) { SalesRecord record = new SalesRecord(); BeanUtils.copyProperties(dto, record); main-business/src/main/java/com/ruoyi/business/vo/OfficialInventoryVo.java
@@ -8,6 +8,7 @@ public class OfficialInventoryVo { private Long id; // 主é®ID private Long coalId; // ç ¤ç§id private String coal; // ç ¤ç§ private String unit; // åä½ private BigDecimal inventoryQuantity; // åºåæ°é main-business/src/main/resources/db/migration/postgresql/V20250610161314__create_table_file.sql
ÎļþÒÑɾ³ý main-business/src/main/resources/db/migration/postgresql/V20250611160300__create_table_sales_record.sql
@@ -6,7 +6,6 @@ customer_id BIGINT, -- 客æ·id customer VARCHAR(255) NOT NULL, -- å®¢æ· coal_id VARCHAR(255) NOT NULL, -- ç ¤ç§ id coal VARCHAR(255) NOT NULL, -- ç ¤ç§ price_including_tax DECIMAL(10, 2) NOT NULL, -- åä»·ï¼å«ç¨ï¼ inventory_quantity DECIMAL(10, 0) NOT NULL, -- åºåæ°é unit VARCHAR(100) NOT NULL, -- åä½ @@ -37,7 +36,6 @@ COMMENT ON COLUMN sales_record.sale_date IS 'é宿¥æ'; COMMENT ON COLUMN sales_record.customer IS '客æ·'; COMMENT ON COLUMN sales_record.customer_id IS '客æ·id'; COMMENT ON COLUMN sales_record.coal IS 'ç ¤ç§'; COMMENT ON COLUMN sales_record.coal_id IS 'ç ¤ç§id'; COMMENT ON COLUMN sales_record.unit IS 'åä½'; COMMENT ON COLUMN sales_record.price_including_tax IS 'åä»·ï¼å«ç¨ï¼'; main-business/src/main/resources/mapper/FileMapper.xml
ÎļþÒÑɾ³ý