basic-server/src/main/java/com/ruoyi/basic/controller/CoalPlanController.java
@@ -5,6 +5,7 @@ import com.ruoyi.basic.dto.CoalPlanDto; import com.ruoyi.basic.entity.CoalPlan; import com.ruoyi.basic.service.CoalPlanService; import com.ruoyi.basic.vo.CoalFieldVo; import com.ruoyi.common.core.domain.R; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -45,6 +46,14 @@ } /** * æ ¹æ®idæ¥è¯¢ç ¤è´¨æ¹æ¡æ¥è¯¢ è¿å */ @GetMapping("/coalPlanById") public R<List<CoalFieldVo>> coalPlanById(CoalPlanDto coalPlanDto) { return R.ok(coalPlanService.selectCoalPlanById(coalPlanDto.getId())); } /** * ç ¤è´¨æ¹æ¡æ°å¢ä¿®æ¹ */ @PostMapping("/addOrEditCoalPlan") basic-server/src/main/java/com/ruoyi/basic/controller/CoalQualityController.java
ÎļþÒÑɾ³ý basic-server/src/main/java/com/ruoyi/basic/controller/CoalValueController.java
@@ -34,21 +34,4 @@ return R.ok(list); } /** * ç ¤è´¨æ¹æ¡å¼æ°å¢ä¿®æ¹ */ @PostMapping("/addOrEditCoalValue") public R addOrEditCoalValue(@RequestBody CoalValueDto coalValueDto) { return R.ok(coalValueService.addOrEditCoalValue(coalValueDto)); } /** * ç ¤è´¨æ¹æ¡å段å é¤ */ @DeleteMapping("/delCoalValue") public R remove(@RequestBody Long[] ids) { return R.ok(coalValueService.delCoalValueByIds(ids)); } } basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java
@@ -5,4 +5,6 @@ @Data public class CoalFieldDto extends CoalField { private String searchAll; } basic-server/src/main/java/com/ruoyi/basic/dto/CoalInfoDto.java
@@ -5,4 +5,6 @@ @Data public class CoalInfoDto extends CoalInfo { private String searchAll; } basic-server/src/main/java/com/ruoyi/basic/dto/CoalPlanDto.java
@@ -3,6 +3,12 @@ import com.ruoyi.basic.entity.CoalPlan; import lombok.Data; import java.util.List; @Data public class CoalPlanDto extends CoalPlan { private List<String> fields; private String searchAll; } basic-server/src/main/java/com/ruoyi/basic/dto/CoalQualityDto.java
ÎļþÒÑɾ³ý basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java
@@ -33,11 +33,6 @@ private String fieldName; /** * åæ®µåæ°å */ @TableField(value = "field_name") private String fieldNumber; /** * åæ®µæè¿° */ @TableField(value = "field_description") basic-server/src/main/java/com/ruoyi/basic/entity/CoalPlan.java
@@ -27,6 +27,12 @@ @TableField(value = "plan") private String plan; /** * ç ¤è´¨æ¹æ¡å段id */ @TableField(value = "field_ids") private String fieldIds; /** * ç ¤è´¨æ¹æ¡å段 */ @TableField(value = "coal_fields") basic-server/src/main/java/com/ruoyi/basic/entity/CoalQuality.java
ÎļþÒÑɾ³ý basic-server/src/main/java/com/ruoyi/basic/entity/CoalValue.java
@@ -1,8 +1,13 @@ package com.ruoyi.basic.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.deser.std.NumberDeserializers; import com.ruoyi.common.core.domain.MyBaseEntity; import lombok.Data; /** * ç ¤è´¨æ¹æ¡åæ®µå¼ å®ä½ç±» @@ -12,7 +17,8 @@ */ @Data @TableName("coal_value") public class CoalValue extends MyBaseEntity { public class CoalValue extends MyBaseEntity { private static final long serialVersionUID = 1L; @@ -20,6 +26,7 @@ * 主é®ID */ @TableId(value = "id", type = IdType.AUTO) @JsonDeserialize(using = NumberDeserializers.LongDeserializer.class) private Long id; /** basic-server/src/main/java/com/ruoyi/basic/mapper/CoalQualityMapper.java
ÎļþÒÑɾ³ý basic-server/src/main/java/com/ruoyi/basic/service/CoalPlanService.java
@@ -5,6 +5,7 @@ import com.ruoyi.basic.dto.CoalPlanDto; import com.ruoyi.basic.entity.CoalPlan; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.vo.CoalFieldVo; import java.util.List; @@ -25,4 +26,6 @@ int delCoalPlanByIds(Long[] ids); List<CoalPlan> selectAllList(); List<CoalFieldVo> selectCoalPlanById(Long id); } basic-server/src/main/java/com/ruoyi/basic/service/CoalQualityService.java
ÎļþÒÑɾ³ý basic-server/src/main/java/com/ruoyi/basic/service/CoalValueService.java
@@ -18,7 +18,4 @@ IPage<CoalValue> selectCoalFieldList(Page page, CoalValueDto coalValueDto); int addOrEditCoalValue(CoalValueDto coalValueDto); int delCoalValueByIds(Long[] ids); } basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java
@@ -39,8 +39,8 @@ @Override public IPage<CoalField> selectCoalFieldList(Page page, CoalFieldDto coalFieldDto) { LambdaQueryWrapper<CoalField> queryWrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(coalFieldDto.getFieldName())) { queryWrapper.like(CoalField::getFieldName, coalFieldDto.getFieldName()); if (StringUtils.hasText(coalFieldDto.getSearchAll())) { queryWrapper.like(CoalField::getFieldName, coalFieldDto.getSearchAll()); } queryWrapper.orderByDesc(CoalField::getCreateTime); return coalFieldMapper.selectPage(page, queryWrapper); basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalInfoServiceImpl.java
@@ -35,8 +35,8 @@ @Override public IPage<CoalInfo> selectCoalInfoList(Page page, CoalInfoDto coalInfoDto) { LambdaQueryWrapper<CoalInfo> queryWrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(coalInfoDto.getCoal())) { queryWrapper.like(CoalInfo::getCoal,coalInfoDto.getCoal()); if (StringUtils.hasText(coalInfoDto.getSearchAll())) { queryWrapper.like(CoalInfo::getCoal,coalInfoDto.getSearchAll()); } queryWrapper.orderByDesc(CoalInfo::getCreateTime); return coalInfoMapper.selectPage(page, queryWrapper); basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalPlanServiceImpl.java
@@ -6,15 +6,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.CoalPlanDto; import com.ruoyi.basic.entity.CoalField; import com.ruoyi.basic.entity.CoalPlan; import com.ruoyi.basic.mapper.CoalFieldMapper; import com.ruoyi.basic.mapper.CoalPlanMapper; import com.ruoyi.basic.service.CoalPlanService; import com.ruoyi.basic.vo.CoalFieldVo; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * <p> @@ -30,10 +36,15 @@ private final CoalPlanMapper coalPlanMapper; private final CoalFieldMapper coalFieldMapper; @Override public IPage<CoalPlan> selectCoalFieldList(Page page, CoalPlanDto coalPlanDto) { LambdaQueryWrapper<CoalPlan> queryWrapper = new LambdaQueryWrapper<>(); return coalPlanMapper.selectPage(page,queryWrapper); if (StringUtils.hasText(coalPlanDto.getSearchAll())){ queryWrapper.like(CoalPlan::getPlan,coalPlanDto.getSearchAll()); } return coalPlanMapper.selectPage(page, queryWrapper); } @Override @@ -65,4 +76,22 @@ public List<CoalPlan> selectAllList() { return coalPlanMapper.selectList(null); } @Override public List<CoalFieldVo> selectCoalPlanById(Long id) { CoalPlan coalPlan = coalPlanMapper.selectById(id); LambdaQueryWrapper<CoalField> coalFieldLambdaQueryWrapper = new LambdaQueryWrapper<>(); List<Long> ids = Arrays.stream(coalPlan.getFieldIds().split(",")).map(String::trim).map(Long::parseLong).collect(Collectors.toList()); coalFieldLambdaQueryWrapper.in(CoalField::getId, ids); List<CoalField> coalFields = coalFieldMapper.selectList(coalFieldLambdaQueryWrapper); return coalFields.stream() .map(coalField -> { CoalFieldVo dto = new CoalFieldVo(); dto.setId(coalField.getId()); dto.setFields(coalField.getFields()); dto.setFieldName(coalField.getFieldName()); return dto; }) .collect(Collectors.toList()); } } basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalQualityServiceImpl.java
ÎļþÒÑɾ³ý basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalValueServiceImpl.java
@@ -5,18 +5,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.CoalValueDto; import com.ruoyi.basic.entity.CoalField; import com.ruoyi.basic.entity.CoalValue; import com.ruoyi.basic.mapper.CoalFieldMapper; import com.ruoyi.basic.mapper.CoalValueMapper; import com.ruoyi.basic.service.CoalValueService; import com.ruoyi.common.utils.bean.BeanUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; import java.util.Objects; /** * <p> @@ -32,43 +25,9 @@ private final CoalValueMapper coalValueMapper; private final CoalFieldMapper coalFieldMapper; @Override public IPage<CoalValue> selectCoalFieldList(Page page, CoalValueDto coalValueDto) { LambdaQueryWrapper<CoalValue> queryWrapper = new LambdaQueryWrapper<>(); return coalValueMapper.selectPage(page, queryWrapper); } @Override public int addOrEditCoalValue(CoalValueDto coalValueDto) { CoalValue coalValue = new CoalValue(); BeanUtils.copyProperties(coalValueDto, coalValue); coalValue.setPlanId(coalValueDto.getPlanId()); int i = 0; if (Objects.isNull(coalValueDto.getId())) { List<Map<String, String>> fieldValue = coalValueDto.getFieldValue(); for (Map<String, String> field : fieldValue) { for (Map.Entry<String, String> entry : field.entrySet()) { String key = entry.getKey(); // è·å keyï¼è¿éä¼å¾å° "field01" String value = entry.getValue(); // è·å valueï¼è¿éä¼å¾å° "99" LambdaQueryWrapper<CoalField> queryWrapper = new LambdaQueryWrapper<>(); CoalField coalField = coalFieldMapper.selectOne(queryWrapper.eq(CoalField::getFields, key)); coalValue.setCoalValue(value); coalValue.setFields(coalField.getFields()); coalValue.setFieldName(coalField.getFieldName()); coalValue.setId(null); i = coalValueMapper.insert(coalValue); } } return i; } else { return coalValueMapper.updateById(coalValue); } } @Override public int delCoalValueByIds(Long[] ids) { return 0; } } basic-server/src/main/java/com/ruoyi/basic/vo/CoalFieldVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.ruoyi.basic.vo; import lombok.Data; @Data public class CoalFieldVo { private Long id; private String fields; private String fieldName; } basic-server/src/main/resources/db/migration/postgresql/V20250603151801__create_table_coal_quality.sql
ÎļþÒÑɾ³ý basic-server/src/main/resources/mapper/CoalQualityMapper.xml
ÎļþÒÑɾ³ý main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java
@@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.business.dto.OfficialInventoryDto; import com.ruoyi.business.entity.OfficialInventory; import com.ruoyi.business.service.OfficialInventoryService; import com.ruoyi.common.core.domain.R; import lombok.AllArgsConstructor; @@ -31,8 +30,8 @@ * æ£å¼åºåºè¡¨æ¥è¯¢ */ @GetMapping("/list") public R<IPage<OfficialInventory>> list(Page page, OfficialInventoryDto officialInventoryDto) { IPage<OfficialInventory> list = officialInventoryService.selectOfficialInventoryList(page,officialInventoryDto); public R<IPage<OfficialInventoryDto>> list(Page page, OfficialInventoryDto officialInventoryDto) { IPage<OfficialInventoryDto> list = officialInventoryService.selectOfficialInventoryList(page,officialInventoryDto); return R.ok(list); } main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java
@@ -23,25 +23,34 @@ @RequestMapping("/pendingInventory") public class PendingInventoryController { private PendingInventoryService pendingInventoryService; private PendingInventoryService pendingInventoryService; /** * å¾ å ¥åºè¡¨æ¥è¯¢ */ @GetMapping("/list") public R<IPage<PendingInventory>> list(Page page, PendingInventoryDto pendingInventoryDto) { IPage<PendingInventory> list = pendingInventoryService.selectPendingInventoryList(page,pendingInventoryDto); IPage<PendingInventory> list = pendingInventoryService.selectPendingInventoryList(page, pendingInventoryDto); return R.ok(list); } /** * æ°å¢ä¿®æ¹ * å¾ å ¥åºæ°å¢ä¿®æ¹ */ @PostMapping("/addOrEditPending") public R addOrEditPending(@RequestBody PendingInventoryDto pendingInventoryDto) { return R.ok(pendingInventoryService.addOrEditPending(pendingInventoryDto)); } /** * å¾ å ¥åºç ¤è´¨æ¹æ¡å¼ä¿®æ¹ä¿å */ @PostMapping("/addOrEditCoalValue") public R addOrEditCoalValue(@RequestBody PendingInventoryDto pendingInventoryDto) { return R.ok(pendingInventoryService.addOrEditCoalValue(pendingInventoryDto)); } /** * å é¤ */ main-business/src/main/java/com/ruoyi/business/dto/ArchiveDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.ruoyi.business.dto; import com.ruoyi.business.entity.Archive; import lombok.Data; @Data public class ArchiveDto extends Archive { private Long treeId; } main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
@@ -3,6 +3,11 @@ import com.ruoyi.business.entity.OfficialInventory; import lombok.Data; import java.util.List; import java.util.Map; @Data public class OfficialInventoryDto extends OfficialInventory { private List<Map<String, String>> fields; } main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
@@ -1,8 +1,30 @@ package com.ruoyi.business.dto; import com.fasterxml.jackson.annotation.JsonProperty; import com.ruoyi.business.entity.PendingInventory; import lombok.Data; import java.util.List; import java.util.Map; @Data public class PendingInventoryDto extends PendingInventory { @JsonProperty("pId") private Long pId; private List<Map<String, String>> fieldValue; /** * åæ®µå¼ */ private String coalValue; /** * åæ®µ */ private String fields; /** * åæ®µå */ private String fieldName; } main-business/src/main/java/com/ruoyi/business/dto/TreeDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ package com.ruoyi.business.dto; import com.ruoyi.business.entity.Tree; import lombok.Data; @Data public class TreeDto extends Tree { } main-business/src/main/java/com/ruoyi/business/entity/OfficialInventory.java
@@ -26,7 +26,12 @@ * 主é®ID */ @TableId(value = "id", type = IdType.AUTO) private Integer id; private Long id; /** * å¾ å ¥åºid */ @TableField(value = "pending_id") private Long pendingId; /** * ä¾è´§ååç§° */ @@ -35,8 +40,8 @@ /** * ç ¤ç§ */ @TableField(value = "coal_type") private String coalType; @TableField(value = "coal") private String coal; /** * åä½ */ main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java
@@ -20,13 +20,11 @@ @TableName("pending_inventory") public class PendingInventory extends MyBaseEntity { private static final long serialVersionUID = 1L; /** * 主é®ID */ @TableId(value = "id", type = IdType.AUTO) private Integer id; private Long id; /** * ä¾è´§ååç§° */ main-business/src/main/java/com/ruoyi/business/service/OfficialInventoryService.java
@@ -16,5 +16,5 @@ */ public interface OfficialInventoryService extends IService<OfficialInventory> { IPage<OfficialInventory> selectOfficialInventoryList(Page page, OfficialInventoryDto officialInventoryDto); IPage<OfficialInventoryDto> selectOfficialInventoryList(Page page, OfficialInventoryDto officialInventoryDto); } main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java
@@ -21,4 +21,6 @@ int addOrEditPending(PendingInventoryDto pendingInventoryDto); int delByIds(Long[] ids); int addOrEditCoalValue(PendingInventoryDto pendingInventoryDto); } main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
@@ -3,13 +3,25 @@ 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.basic.entity.CoalField; import com.ruoyi.basic.entity.CoalValue; import com.ruoyi.basic.mapper.CoalFieldMapper; import com.ruoyi.basic.mapper.CoalValueMapper; import com.ruoyi.business.dto.OfficialInventoryDto; import com.ruoyi.business.entity.OfficialInventory; import com.ruoyi.business.mapper.OfficialInventoryMapper; import com.ruoyi.business.mapper.PendingInventoryMapper; import com.ruoyi.business.service.OfficialInventoryService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import com.ruoyi.common.utils.bean.BeanUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * <p> @@ -25,9 +37,66 @@ private final OfficialInventoryMapper officialInventoryMapper; private final CoalValueMapper coalValueMapper; private final CoalFieldMapper coalFieldMapper; private final PendingInventoryMapper pendingInventoryMapper; @Override public IPage<OfficialInventory> selectOfficialInventoryList(Page page, OfficialInventoryDto officialInventoryDto) { public IPage<OfficialInventoryDto> selectOfficialInventoryList(Page page, OfficialInventoryDto officialInventoryDto) { // å æ¥åºåå§æ°æ®ï¼OfficialInventoryï¼ LambdaQueryWrapper<OfficialInventory> queryWrapper = new LambdaQueryWrapper<>(); return officialInventoryMapper.selectPage(page, queryWrapper); IPage<OfficialInventory> entityPage = officialInventoryMapper.selectPage(page, queryWrapper); // å建ä¸ä¸ªæ°ç Dto åé¡µç»æ IPage<OfficialInventoryDto> dtoPage = new Page<>(); BeanUtils.copyProperties(entityPage, dtoPage); List<OfficialInventoryDto> dtoList = new ArrayList<>(); // æ¥è¯¢ææå¯ç¨å段ï¼CoalFieldï¼ List<CoalField> coalFields = coalFieldMapper.selectList(null); List<String> allFieldNames = coalFields.stream() .map(CoalField::getFields) .distinct() .collect(Collectors.toList()); // é忝æ¡è®°å½ï¼è¿è¡è½¬æ¢å¹¶å¡«å fields for (OfficialInventory entity : entityPage.getRecords()) { OfficialInventoryDto dto = new OfficialInventoryDto(); BeanUtils.copyProperties(entity, dto); Long pendingId = entity.getPendingId(); // æ¥è¯¢è¯¥ pendingId 对åºç CoalValue æ°æ® List<CoalValue> coalValues = coalValueMapper.selectList( new LambdaQueryWrapper<CoalValue>().eq(CoalValue::getPlanId, pendingId) ); // æå»º Map<fieldName, value> Map<String, String> fieldValueMap = coalValues.stream() .collect(Collectors.toMap( CoalValue::getFields, CoalValue::getCoalValue, (existing, replacement) -> existing // éå¤å段ä¿ç第ä¸ä¸ª )); // æé æç» fields å表ï¼å 嫿æå段åï¼å¹¶è®¾ç½®é»è®¤å¼ "-" List<Map<String, String>> fields = new ArrayList<>(); for (String field : allFieldNames) { Map<String, String> fieldMap = new HashMap<>(); fieldMap.put(field, fieldValueMap.getOrDefault(field, "-")); fields.add(fieldMap); } // è®¾ç½®å° DTO ä¸ dto.setFields(fields); dtoList.add(dto); } dtoPage.setRecords(dtoList); // 设置转æ¢åç DtoList return dtoPage; } } main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
@@ -3,19 +3,31 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 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.CoalValue; import com.ruoyi.basic.mapper.CoalFieldMapper; import com.ruoyi.basic.mapper.CoalValueMapper; import com.ruoyi.business.dto.PendingInventoryDto; import com.ruoyi.business.entity.OfficialInventory; import com.ruoyi.business.entity.PendingInventory; import com.ruoyi.business.mapper.OfficialInventoryMapper; import com.ruoyi.business.mapper.PendingInventoryMapper; import com.ruoyi.business.service.PendingInventoryService; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.bean.BeanUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; /** * <p> @@ -30,6 +42,8 @@ public class PendingInventoryServiceImpl extends ServiceImpl<PendingInventoryMapper, PendingInventory> implements PendingInventoryService { private final PendingInventoryMapper pendingInventoryMapper; private final OfficialInventoryMapper officialInventoryMapper; private final CoalValueMapper coalValueMapper; @@ -66,4 +80,69 @@ // æ§è¡æ¹éé»è¾å é¤ return pendingInventoryMapper.update(null, updateWrapper); } @Transactional @Override public int addOrEditCoalValue(PendingInventoryDto pendingInventoryDto) { // Step 1: å é¤åæ planId ç¸å ³æ°æ® coalValueMapper.delete(new LambdaQueryWrapper<CoalValue>() .eq(CoalValue::getPlanId, pendingInventoryDto.getPId())); // Step 2: æå»ºåºç¡ CoalValue 对象 CoalValue coalValue = new CoalValue(); BeanUtils.copyProperties(coalValue, pendingInventoryDto); coalValue.setPlanId(pendingInventoryDto.getPId()); List<Map<String, String>> fieldValue = pendingInventoryDto.getFieldValue(); if (CollectionUtils.isEmpty(fieldValue)) { throw new BaseException("åæ®µå¼ä¸è½ä¸ºç©º"); } // Step 3: æåè·åææ field -> CoalField æ å°ï¼é¿å é夿¥åº Set<String> allFields = fieldValue.stream() .flatMap(map -> map.keySet().stream()) .collect(Collectors.toSet()); List<CoalField> coalFields = coalFieldMapper.selectList( new LambdaQueryWrapper<CoalField>().in(CoalField::getFields, allFields)); Map<String, String> fieldMap = coalFields.stream() .collect(Collectors.toMap( CoalField::getFields, CoalField::getFieldName)); // Step 4: æ¹éæå ¥ int i = 0; for (Map<String, String> fieldMapEntry : fieldValue) { for (Map.Entry<String, String> entry : fieldMapEntry.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); String fieldName = fieldMap.get(key); if (fieldName == null) { throw new BaseException("åæ®µåä¸åå¨"); } coalValue.setId(null); // æ¸ ç©º idï¼ç¡®ä¿æ¯æ¬¡é½æ¯æ°è®°å½ coalValue.setCoalValue(value); coalValue.setFields(key); coalValue.setFieldName(fieldName); i = coalValueMapper.insert(coalValue); } } if (i > 0) { BigDecimal quantity = pendingInventoryDto.getInventoryQuantity(); PendingInventory pendingInventory = pendingInventoryMapper.selectById(pendingInventoryDto.getPId()); if (pendingInventory == null) { throw new BaseException("å¾ å ¥åºè®°å½ä¸åå¨"); } BigDecimal left = pendingInventory.getInventoryQuantity().subtract(quantity); if (left.compareTo(BigDecimal.ZERO) > 0) { pendingInventory.setInventoryQuantity(left); pendingInventoryMapper.updateById(pendingInventory); } else { pendingInventoryMapper.deleteById(pendingInventoryDto.getPId()); } officialInventoryMapper.delete(new LambdaQueryWrapper<OfficialInventory>().eq(OfficialInventory::getPendingId, pendingInventoryDto.getPId())); OfficialInventory officialInventory = new OfficialInventory(); BeanUtils.copyProperties(pendingInventory, officialInventory); officialInventory.setId(null); officialInventory.setPendingId(pendingInventoryDto.getPId()); officialInventory.setInventoryQuantity(quantity); officialInventoryMapper.insert(officialInventory); } return i; } } main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java
@@ -17,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import java.math.BigDecimal; import java.util.Objects; /** @@ -52,7 +53,6 @@ // å建éè´ç»è®°å®ä½å¹¶å¤å¶å±æ§ PurchaseRegistration purchaseRegistration = new PurchaseRegistration(); BeanUtils.copyProperties(purchaseRegistrationDto, purchaseRegistration); if (Objects.isNull(purchaseRegistrationDto.getId())) { // æ°å¢éè´ç»è®° int insertCount = purchaseRegistrationMapper.insert(purchaseRegistration); @@ -79,9 +79,8 @@ BeanUtils.copyProperties(purchaseRegistration, pendingInventory); // è®¾ç½®å¾ å ¥åºè®°å½ç¹æç屿§ï¼å¦ææï¼ // pendingInventory.setStatus(InventoryStatus.PENDING); // pendingInventory.setCreateTime(LocalDateTime.now()); pendingInventory.setInventoryQuantity(purchaseRegistration.getPurchaseQuantity()); pendingInventory.setCostPerUnit(new BigDecimal(22)); return pendingInventory; } main-business/src/main/java/com/ruoyi/business/vo/TreeVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.ruoyi.business.vo; import lombok.Data; import java.util.List; @Data public class TreeVo { private Long id; private Long parentId; private String name; private String label; // ç¨äºæ å½¢ç»æçæ¾ç¤ºåç§° private List<TreeVo> children; } main-business/src/main/resources/db/migration/postgresql/V20250604104500__create_table_pending_inventory.sql
@@ -1,7 +1,7 @@ -- åå»ºå¾ å ¥åºè¡¨ CREATE TABLE pending_inventory ( id SERIAL PRIMARY KEY, -- 主é®ID id BIGSERIAL PRIMARY KEY, -- 主é®ID supplier_name VARCHAR(255) NOT NULL, -- ä¾è´§ååç§° coal_type VARCHAR(50) NOT NULL, -- ç ¤ç§ unit VARCHAR(50) NOT NULL, -- åä½ main-business/src/main/resources/db/migration/postgresql/V20250604111200__create_table_official_inventory.sql
@@ -1,7 +1,7 @@ -- å建æ£å¼åºè¡¨ CREATE TABLE official_inventory ( id SERIAL PRIMARY KEY, -- 主é®ID id BIGSERIAL PRIMARY KEY, -- 主é®ID supplier_name VARCHAR(255) NOT NULL, -- ä¾è´§ååç§° coal_type VARCHAR(50) NOT NULL, -- ç ¤ç§ unit VARCHAR(50) NOT NULL, -- åä½ main-business/src/main/resources/db/migration/postgresql/V20250610161312__create_table_tree.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ -- å建档æ¡è¡¨ CREATE TABLE tree ( id BIGSERIAL PRIMARY KEY, -- 主é®IDï¼èªå¨éå¢ name VARCHAR(255) NOT NULL, -- åç§° parent_id BIGINT, -- ç¶id deleted INT NOT NULL DEFAULT 0, -- 软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤ create_by VARCHAR(255), -- åå»ºäººç¨æ·å create_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- å建æ¶é´ï¼é»è®¤å½åæ¶é´ update_by VARCHAR(255), -- æåæ´æ°äººç¨æ·å update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP -- æåæ´æ°æ¶é´ï¼é»è®¤å½åæ¶é´-- ç»è®°æ¥æ ); -- 表注é COMMENT ON TABLE tree IS 'æ¡£æ¡ä¿¡æ¯è¡¨ï¼è®°å½ç³»ç»ä¸å类档æ¡çåºæ¬ä¿¡æ¯'; -- åæ®µæ³¨é COMMENT ON COLUMN tree.id IS '主é®ID'; COMMENT ON COLUMN tree.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; COMMENT ON COLUMN tree.create_by IS 'å建该记å½çç¨æ·'; COMMENT ON COLUMN tree.create_time IS 'è®°å½å建æ¶é´'; COMMENT ON COLUMN tree.update_by IS 'æåä¿®æ¹è¯¥è®°å½çç¨æ·'; COMMENT ON COLUMN tree.update_time IS 'è®°å½æåæ´æ°æ¶é´'; main-business/src/main/resources/db/migration/postgresql/V20250610161313__create_table_archive.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ -- å建档æ¡è¡¨ CREATE TABLE archive ( id BIGSERIAL PRIMARY KEY, -- 主é®IDï¼èªå¨éå¢ name VARCHAR(255) NOT NULL, -- æ¡£æ¡åç§° type VARCHAR(255) NOT NULL, -- æ¡£æ¡ç±»åï¼å¦ï¼ååãæ¥åãè¯ä»¶çï¼ status VARCHAR(50) NOT NULL, -- ç¶æï¼å¦ï¼ææãè¿æãä½åºï¼ deleted INT NOT NULL DEFAULT 0, -- 软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤ create_by VARCHAR(255), -- åå»ºäººç¨æ·å create_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- å建æ¶é´ï¼é»è®¤å½åæ¶é´ update_by VARCHAR(255), -- æåæ´æ°äººç¨æ·å update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP -- æåæ´æ°æ¶é´ï¼é»è®¤å½åæ¶é´-- ç»è®°æ¥æ ); -- 表注é COMMENT ON TABLE archive IS 'æ¡£æ¡ä¿¡æ¯è¡¨ï¼è®°å½ç³»ç»ä¸å类档æ¡çåºæ¬ä¿¡æ¯'; -- åæ®µæ³¨é COMMENT ON COLUMN archive.id IS '主é®ID'; COMMENT ON COLUMN archive.name IS 'æ¡£æ¡åç§°'; COMMENT ON COLUMN archive.type IS 'æ¡£æ¡ç±»åï¼ä¾å¦ï¼ååãæ¥åãè¯ä»¶ç'; COMMENT ON COLUMN archive.status IS 'æ¡£æ¡ç¶æï¼ä¾å¦ï¼ææãè¿æãä½åº'; COMMENT ON COLUMN archive.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; COMMENT ON COLUMN archive.create_by IS 'å建该记å½çç¨æ·'; COMMENT ON COLUMN archive.create_time IS 'è®°å½å建æ¶é´'; COMMENT ON COLUMN archive.update_by IS 'æåä¿®æ¹è¯¥è®°å½çç¨æ·'; COMMENT ON COLUMN archive.update_time IS 'è®°å½æåæ´æ°æ¶é´'; main-business/src/main/resources/db/migration/postgresql/V20250610161314__create_table_file.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ -- å建æä»¶è¡¨ CREATE TABLE file ( id BIGSERIAL PRIMARY KEY, -- 主é®IDï¼èªå¨éå¢ archive_id BIGINT, -- å ³èæ¡£æ¡è¡¨ archive.idï¼å¯éï¼ original_name VARCHAR(255) NOT NULL, -- åå§æä»¶åï¼ç¨æ·ä¸ä¼ æ¶çåç§°ï¼ preview_url TEXT, -- é¢è§å°å file_name VARCHAR(255) NOT NULL, -- åå¨ç³»ç»ä¸çå¯ä¸æä»¶åï¼å¦ uuid.pngï¼ file_path TEXT NOT NULL, -- æä»¶åå¨è·¯å¾æURL file_type VARCHAR(50), -- æä»¶ç±»åï¼å¦ï¼image/png, application/pdfï¼ file_size VARCHAR(50), -- æä»¶å¤§å°ï¼åä½ï¼åèï¼ create_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- ä¸ä¼ æ¶é´ï¼é»è®¤å½åæ¶é´ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- æåæ´æ°æ¶é´ï¼é»è®¤å½åæ¶é´ create_by VARCHAR(255), -- ä¸ä¼ äººç¨æ·å update_by VARCHAR(255), -- æåä¿®æ¹äººç¨æ·å deleted INT NOT NULL DEFAULT 0 -- 软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤ ); -- 表注é COMMENT ON TABLE file IS 'ä¸ä¼ æä»¶çåºæ¬ä¿¡æ¯'; -- åæ®µæ³¨é COMMENT ON COLUMN file.id IS '主é®ID'; COMMENT ON COLUMN file.archive_id IS 'å ³èçæ¡£æ¡IDï¼å¤é®å¼ç¨ archive.id'; COMMENT ON COLUMN file.original_name IS 'åå§æä»¶åï¼ç¨æ·ä¸ä¼ æ¶çåç§°ï¼'; COMMENT ON COLUMN file.preview_url IS 'é¢è§å°å'; COMMENT ON COLUMN file.file_name IS 'ç³»ç»åå¨çå¯ä¸æä»¶å'; COMMENT ON COLUMN file.file_path IS 'æä»¶å¨æå¡å¨ä¸çåå¨è·¯å¾æè®¿é®URL'; COMMENT ON COLUMN file.file_type IS 'æä»¶MIMEç±»åï¼ä¾å¦ image/pngãapplication/pdf'; COMMENT ON COLUMN file.file_size IS 'æä»¶å¤§å°ï¼åä½ä¸ºåè'; COMMENT ON COLUMN file.create_time IS 'æä»¶ä¸ä¼ æ¶é´'; COMMENT ON COLUMN file.update_time IS 'æä»¶æåæ´æ°æ¶é´'; COMMENT ON COLUMN file.create_by IS 'ä¸ä¼ 该æä»¶çç¨æ·'; COMMENT ON COLUMN file.update_by IS 'æåä¿®æ¹è¯¥æä»¶çç¨æ·'; COMMENT ON COLUMN file.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; ruoyi-common/src/main/java/com/ruoyi/common/core/domain/MyBaseEntity.java
@@ -7,7 +7,6 @@ import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; import java.time.OffsetDateTime; @Data