From f29c8786807015d78b9be8a33397f69478d92a76 Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期六, 12 七月 2025 16:52:27 +0800 Subject: [PATCH] 1.设备优化 2.配煤计算器 --- main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java | 51 ++++++ main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java | 7 + main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java | 3 basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java | 3 main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java | 58 +++++--- basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java | 10 + main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java | 70 +++++++++ main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql | 2 main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java | 2 main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java | 15 - main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java | 2 basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java | 3 main-business/src/main/java/com/ruoyi/business/dto/EquipmentUsageRecordDto.java | 2 basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java | 1 main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java | 41 ++--- ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java | 36 ++++ basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java | 6 main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java | 47 ++---- basic-server/src/main/resources/mapper/CoalFieldMapper.xml | 6 main-business/src/main/java/com/ruoyi/business/dto/EquipmentManagementDto.java | 4 20 files changed, 273 insertions(+), 96 deletions(-) diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java index 6824305..3eae657 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java +++ b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java @@ -6,5 +6,15 @@ @Data public class CoalFieldDto extends CoalField { + private String fieldName; + + public CoalFieldDto(String name) { + this.fieldName = name; + } + + public static CoalFieldDto from(String name) { + return new CoalFieldDto(name); + } + private String searchAll; } diff --git a/basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java index 6897630..79c97be 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java +++ b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java @@ -37,4 +37,5 @@ */ @TableField(value = "field_description") private String fieldDescription; + } \ No newline at end of file diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java index 7a61957..86f532d 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java +++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java @@ -4,6 +4,8 @@ import com.ruoyi.basic.entity.CoalField; import org.apache.ibatis.annotations.Mapper; +import java.util.Set; + /** * <p> * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� Mapper 鎺ュ彛 @@ -15,4 +17,5 @@ @Mapper public interface CoalFieldMapper extends BaseMapper<CoalField> { + Set<String> getFieldNamesByNames(Set<String> fieldNames); } diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java b/basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java index 574cc98..1980cec 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Set; /** * <p> @@ -25,4 +26,6 @@ int delCoalFieldByIds(Long[] ids); List<CoalField> selectAllList(CoalFieldDto coalFieldDto); + + Set<String> getFieldNamesByNames(Set<String> collect); } diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java index 67a6c5e..73d18d2 100644 --- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java +++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -80,6 +81,11 @@ return coalFieldMapper.selectList(null); } + @Override + public Set<String> getFieldNamesByNames(Set<String> fieldNames) { + return coalFieldMapper.getFieldNamesByNames(fieldNames); + } + private String generateNextFieldNumber() { // 鑾峰彇鎵�鏈夊凡瀛樺湪鐨� CoalField 璁板綍锛屽寘鎷凡鍒犻櫎鐨� LambdaQueryWrapper<CoalField> queryWrapper = new LambdaQueryWrapper<>(); diff --git a/basic-server/src/main/resources/mapper/CoalFieldMapper.xml b/basic-server/src/main/resources/mapper/CoalFieldMapper.xml index 55beb38..d945f3f 100644 --- a/basic-server/src/main/resources/mapper/CoalFieldMapper.xml +++ b/basic-server/src/main/resources/mapper/CoalFieldMapper.xml @@ -24,5 +24,11 @@ update_time, id, fields, field_name, field_description </sql> + <select id="getFieldNamesByNames" resultType="java.lang.String"> + SELECT field_name FROM coal_field WHERE field_name IN + <foreach collection="fieldNames" item="name" open="(" separator="," close=")"> + #{fieldNames} + </foreach> + </select> </mapper> \ No newline at end of file diff --git a/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java b/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java index 16940ff..0bee476 100644 --- a/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java +++ b/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java @@ -58,4 +58,11 @@ return R.ok(pendingInventoryService.delByIds(ids)); } + /** + * 閰嶇叅璁$畻鍣ㄥ埌寰呭叆搴� + */ + @PostMapping("/addPending") + public R addPending(@RequestBody PendingInventoryDto pendingInventoryDto) { + return R.ok(pendingInventoryService.addPending(pendingInventoryDto)); + } } diff --git a/main-business/src/main/java/com/ruoyi/business/dto/EquipmentManagementDto.java b/main-business/src/main/java/com/ruoyi/business/dto/EquipmentManagementDto.java index 858a31a..7d85bf7 100644 --- a/main-business/src/main/java/com/ruoyi/business/dto/EquipmentManagementDto.java +++ b/main-business/src/main/java/com/ruoyi/business/dto/EquipmentManagementDto.java @@ -5,4 +5,8 @@ @Data public class EquipmentManagementDto extends EquipmentManagement { + + private String searchAll;//鎼滅储 + + private Integer usedNo;//宸蹭娇鐢ㄦ暟閲� } diff --git a/main-business/src/main/java/com/ruoyi/business/dto/EquipmentUsageRecordDto.java b/main-business/src/main/java/com/ruoyi/business/dto/EquipmentUsageRecordDto.java index 9710cd0..dbfe153 100644 --- a/main-business/src/main/java/com/ruoyi/business/dto/EquipmentUsageRecordDto.java +++ b/main-business/src/main/java/com/ruoyi/business/dto/EquipmentUsageRecordDto.java @@ -9,4 +9,6 @@ private String equipmentNo; //璁惧缂栧彿 private String equipmentName; //璁惧鍚嶇О + + private String userName; //棰嗙敤浜� } diff --git a/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java b/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java index c7aa0cc..cfb3036 100644 --- a/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java +++ b/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; +import java.util.Objects; @Data public class PendingInventoryDto extends PendingInventory { @@ -13,41 +14,27 @@ @JsonProperty("pId") private Long pId; - /** - * 姝e紡搴搃d - */ @JsonProperty("officialId") - private Long officialId; + private Long officialId;//姝e紡搴搃d - private List<Map<String, String>> fieldValue; + private List<Map<String, String>> fieldValue;//鐓ょ鏂规瀛楁list - /** - * 瀛楁鍊� - */ - private String coalValue; - /** - * 瀛楁 - */ - private String fields; - /** - * 瀛楁鍚� - */ - private String fieldName; + private String coalValue;//鐓ょ鏂规瀛楁鍊� - /** - * 瀛楁鍚� - */ - private Integer type; + private String fields;//鐓ょ鏂规瀛楁 - /** - * 鐓ょ - */ - private String coal; + private String fieldName; //鐓ょ鏂规瀛楁鍚� - /** - * 鐧昏浜� - */ - private String registrant; + private Integer type; //绫诲瀷 - private String searchAll; + private String coal;//鐓ょ + + private String registrant;//鐧昏浜� + + private String searchAll;//鎼滅储 + + private List<Map<String, Object>> coalResultList;//閰嶇叅璁$畻鍣ㄧ叅绉嶄俊鎭痩ist + + private List<Map<String, Object>> fieldsResultList;//閰嶇叅璁$畻鍣ㄦ柟妗堝瓧娈典俊鎭痩ist + } diff --git a/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java b/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java index 0567117..32560a2 100644 --- a/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java +++ b/main-business/src/main/java/com/ruoyi/business/dto/SalesRecordDto.java @@ -6,7 +6,5 @@ @Data public class SalesRecordDto extends SalesRecord { - private String searchAll; - private String coal; } diff --git a/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java b/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java index 33620d6..6012216 100644 --- a/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java +++ b/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.MyBaseEntity; import lombok.Data; @@ -31,6 +32,7 @@ * 閿�鍞棩鏈� */ @TableField(value = "sale_date") + @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate saleDate; /** * 瀹㈡埛id @@ -116,5 +118,6 @@ * 鐧昏鏃ユ湡 */ @TableField(value = "registration_date") + @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate registrationDate; } \ No newline at end of file diff --git a/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java b/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java index e82d59e..6a93210 100644 --- a/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java +++ b/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java @@ -23,4 +23,6 @@ int delByIds(Long[] ids); int addOrEditCoalValue(PendingInventoryDto pendingInventoryDto); + + int addPending(PendingInventoryDto pendingInventoryDto); } 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 dbad9ab..863d663 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 @@ -4,13 +4,14 @@ 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.entity.EquipmentUsageRecord; import com.ruoyi.business.mapper.EquipmentManagementMapper; +import com.ruoyi.business.mapper.EquipmentUsageRecordMapper; import com.ruoyi.business.service.EquipmentManagementService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.business.vo.EquipmentManagementVo; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; @@ -33,10 +34,52 @@ private final EquipmentManagementMapper equipmentManagementMapper; + private final EquipmentUsageRecordMapper equipmentUsageRecordMapper; + public IPage<EquipmentManagementDto> selectProductionList(Page<EquipmentManagement> page, EquipmentManagementDto equipmentManagementDto) { - Page<EquipmentManagement> entityPage = equipmentManagementMapper.selectPage(page, null); + // 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); + 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()); + + // 璁$畻鎬讳娇鐢ㄩ噺 + Integer totalUsage = equipmentUsageRecordMapper.selectList(usageQueryWrapper).stream() + .mapToInt(EquipmentUsageRecord::getUsageQuantity) + .sum(); + + // 璁剧疆浣跨敤鎬婚噺 + dto.setUsedNo(totalUsage); + return dto; + }) + .toList(); + + dtoPage.setRecords(dtoRecords); return dtoPage; } diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java index a1d8661..7b78a37 100644 --- a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java +++ b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.entity.Supply; +import com.ruoyi.basic.mapper.CoalInfoMapper; import com.ruoyi.business.dto.EquipmentManagementDto; import com.ruoyi.business.dto.EquipmentUsageRecordDto; import com.ruoyi.business.entity.EquipmentManagement; @@ -12,9 +13,12 @@ import com.ruoyi.business.mapper.EquipmentUsageRecordMapper; import com.ruoyi.business.service.EquipmentUsageRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.system.mapper.SysUserMapper; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; @@ -37,7 +41,9 @@ private final EquipmentUsageRecordMapper equipmentUsageRecordMapper; - private final EquipmentManagementMapper equipmentManagementMapper; + private final EquipmentManagementMapper equipmentManagementMapper; + + private final SysUserMapper sysUserMapper; @Override public IPage<EquipmentUsageRecordDto> selectUsageRecordList(Page<EquipmentUsageRecord> page, EquipmentUsageRecordDto equipmentUsageRecordDto) { @@ -46,7 +52,8 @@ BeanUtils.copyProperties(entityPage, dtoPage); List<Long> eqIds = entityPage.getRecords().stream().map(EquipmentUsageRecord::getEquipmentId).toList(); - //鎵归噺鏌ヨ + List<Long> userIds = entityPage.getRecords().stream().map(EquipmentUsageRecord::getUserId).toList(); + //鎵归噺鏌ヨ璁惧 Map<Long, EquipmentManagement> equipmentManagementMap; if (!eqIds.isEmpty()) { List<EquipmentManagement> infos = equipmentManagementMapper.selectList(new LambdaQueryWrapper<EquipmentManagement>().in(EquipmentManagement::getId, eqIds)); @@ -54,15 +61,26 @@ } else { equipmentManagementMap = new HashMap<>(); } + //浜哄憳鏌ヨ + Map<Long, SysUser> userMap; + if (!userIds.isEmpty()) { + List<SysUser> sysUsers = sysUserMapper.selectList(userIds); + userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity())); + }else { + userMap = new HashMap<>(); + } //鍖归厤鏁版嵁 List<EquipmentUsageRecordDto> dtoRecords = entityPage.getRecords().stream().map(entity -> { EquipmentUsageRecordDto dto = new EquipmentUsageRecordDto(); BeanUtils.copyProperties(entity, dto); - EquipmentManagement equipment = equipmentManagementMap.get(entity.getEquipmentId()); if (equipment != null) { dto.setEquipmentNo(equipment.getEquipmentNo()); dto.setEquipmentName(equipment.getEquipmentName()); + } + SysUser sysUser = userMap.get(entity.getUserId()); + if (sysUser != null) { + dto.setUserName(sysUser.getNickName()); } return dto; }).toList(); @@ -72,12 +90,58 @@ } @Override + @Transactional(rollbackFor = Exception.class) public int addOrEditUsageRecord(EquipmentUsageRecordDto equipmentUsageRecordDto) { EquipmentUsageRecord equipmentUsageRecord = new EquipmentUsageRecord(); BeanUtils.copyProperties(equipmentUsageRecordDto, equipmentUsageRecord); + + // 鑾峰彇璁惧ID鍜岄鐢ㄦ暟閲� + Long equipmentId = equipmentUsageRecordDto.getEquipmentId(); + Integer newUsageQuantity = equipmentUsageRecordDto.getUsageQuantity(); + + // 鏌ヨ璁惧淇℃伅锛堝甫涔愯閿佺増鏈彿锛� + EquipmentManagement equipment = equipmentManagementMapper.selectById(equipmentId); + if (equipment == null) { + throw new RuntimeException("璁惧涓嶅瓨鍦�"); + } + if (Objects.isNull(equipmentUsageRecordDto.getId())) { + // 妫�鏌ュ簱瀛樻槸鍚﹀厖瓒� + if (equipment.getQuantity() < newUsageQuantity) { + throw new RuntimeException("搴撳瓨涓嶈冻锛屽綋鍓嶅簱瀛橈細" + equipment.getQuantity()); + } + + // 鎵e噺搴撳瓨 + equipment.setQuantity(equipment.getQuantity() - newUsageQuantity); + equipmentManagementMapper.updateById(equipment); + + // 鍒涘缓棰嗙敤璁板綍 return equipmentUsageRecordMapper.insert(equipmentUsageRecord); } else { + // 1. 鏌ヨ鍘熼鐢ㄨ褰� + EquipmentUsageRecord originalRecord = equipmentUsageRecordMapper.selectById(equipmentUsageRecordDto.getId()); + if (originalRecord == null) { + throw new RuntimeException("棰嗙敤璁板綍涓嶅瓨鍦�"); + } + + // 2. 璁$畻搴撳瓨鍙樺寲閲忥紙鏂版暟閲� - 鏃ф暟閲忥級 + int quantityDelta = newUsageQuantity - originalRecord.getUsageQuantity(); + + if (quantityDelta != 0) { + // 3. 妫�鏌ヨ皟鏁村悗搴撳瓨鏄惁鍏呰冻锛堣�冭檻澧炲姞鍜屽噺灏戜袱绉嶆儏鍐碉級 + int newInventory = equipment.getQuantity() - quantityDelta; + if (newInventory < 0) { + throw new RuntimeException("搴撳瓨涓嶈冻锛岃皟鏁村悗搴撳瓨灏嗕负锛�" + newInventory); + } + + // 4. 璋冩暣搴撳瓨 + equipment.setQuantity(newInventory); + if (equipmentManagementMapper.updateById(equipment) == 0) { + throw new RuntimeException("搴撳瓨鏇存柊澶辫触锛屽彲鑳藉凡琚叾浠栨搷浣滀慨鏀�"); + } + } + + // 5. 鏇存柊棰嗙敤璁板綍 return equipmentUsageRecordMapper.updateById(equipmentUsageRecord); } } diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java index d76fcf5..275e084 100644 --- a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java +++ b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java @@ -6,18 +6,24 @@ 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.dto.CoalFieldDto; 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.CoalPlanMapper; import com.ruoyi.basic.mapper.CoalValueMapper; +import com.ruoyi.basic.service.CoalFieldService; +import com.ruoyi.basic.service.CoalPlanService; import com.ruoyi.business.dto.PendingInventoryDto; import com.ruoyi.business.entity.OfficialInventory; import com.ruoyi.business.entity.PendingInventory; import com.ruoyi.business.entity.SalesRecord; +import com.ruoyi.business.mapper.InventorySummaryMapper; import com.ruoyi.business.mapper.OfficialInventoryMapper; import com.ruoyi.business.mapper.PendingInventoryMapper; +import com.ruoyi.business.mapper.SalesRecordMapper; import com.ruoyi.business.service.InputInventoryRecordService; import com.ruoyi.business.service.InventorySummaryService; import com.ruoyi.business.service.PendingInventoryService; @@ -29,6 +35,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.math.BigDecimal; import java.time.LocalDate; @@ -36,6 +43,7 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * <p> @@ -65,32 +73,32 @@ private final InventorySummaryService inventorySummaryService; + private final CoalFieldService coalFieldService; + + private final CoalPlanService coalPlanService; + @Override public IPage<PendingInventoryDto> selectPendingInventoryList(Page page, PendingInventoryDto pendingInventoryDto) { // 1. 鏋勫缓涓绘煡璇� LambdaQueryWrapper<PendingInventory> queryWrapper = new LambdaQueryWrapper<>(); - if (StringUtils.isNotBlank(pendingInventoryDto.getSearchAll())) { - String searchValue = pendingInventoryDto.getSearchAll(); - // 1. 鍏堝皾璇曚綔涓烘棩鏈熸煡璇� - try { - LocalDate RegistrationDate = LocalDate.parse(searchValue); - queryWrapper.eq(PendingInventory::getRegistrationDate, RegistrationDate); - } catch (DateTimeParseException e) { - // 2. 濡傛灉涓嶆槸鏃ユ湡锛屽垯浣滀负鐓ょ鍚嶇О鏌ヨ - LambdaQueryWrapper<CoalInfo> coalQueryWrapper = new LambdaQueryWrapper<>(); - coalQueryWrapper.like(CoalInfo::getCoal, searchValue); - List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalQueryWrapper); - if (!coalInfos.isEmpty()) { - // 鎻愬彇鎵�鏈夊尮閰嶇殑鐓ょID - List<Long> coalIds = coalInfos.stream() - .map(CoalInfo::getId) - .collect(Collectors.toList()); - // 浣跨敤in鏌ヨ鍖归厤浠绘剰涓�涓叅绉岻D - queryWrapper.in(PendingInventory::getCoalId, coalIds); - } else { - // 3. 濡傛灉鎵句笉鍒扮叅绉嶏紝鍙互杩斿洖绌虹粨鏋� - queryWrapper.eq(PendingInventory::getCoalId, "-1"); // 浣跨敤涓嶅彲鑳藉瓨鍦ㄧ殑ID - } + if (pendingInventoryDto.getRegistrationDate() != null) { + queryWrapper.eq(PendingInventory::getRegistrationDate, pendingInventoryDto.getRegistrationDate()); + } + + // 鎸夌叅绉嶅悕绉版煡璇� + if (StringUtils.isNotBlank(pendingInventoryDto.getCoal())) { + LambdaQueryWrapper<CoalInfo> coalQueryWrapper = new LambdaQueryWrapper<>(); + coalQueryWrapper.like(CoalInfo::getCoal, pendingInventoryDto.getCoal()); + List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalQueryWrapper); + + if (!coalInfos.isEmpty()) { + List<Long> coalIds = coalInfos.stream() + .map(CoalInfo::getId) + .collect(Collectors.toList()); + queryWrapper.in(PendingInventory::getCoalId, coalIds); + } else { + // 濡傛灉娌℃湁鍖归厤鐨勭叅绉嶏紝鐩存帴杩斿洖绌虹粨鏋� + queryWrapper.eq(PendingInventory::getCoalId, -1L); // 浣跨敤涓嶅彲鑳藉瓨鍦ㄧ殑ID } } @@ -286,4 +294,10 @@ } return i; } + + @Override + @Transactional + public int addPending(PendingInventoryDto pendingInventoryDto) { + return 1; + } } diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java index 6a2d46c..eef4183 100644 --- a/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java +++ b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java @@ -287,10 +287,8 @@ LocalDate currentDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDate = currentDate.format(formatter); - // 甯搁噺瀹氫箟锛氫繚鐣�2浣嶅皬鏁帮紝鍥涜垗浜斿叆妯″紡 final int SCALE = 2; final RoundingMode ROUNDING_MODE = RoundingMode.HALF_UP; - // 绋庣巼13%锛岀敤瀛楃涓叉瀯閫燘igDecimal閬垮厤绮惧害璇樊 final BigDecimal TAX_RATE = new BigDecimal("1.13"); for (Production p : list) { @@ -300,24 +298,23 @@ pending.setUnit("t"); pending.setSupplierName(formattedDate + " - " + "鐢熶骇鍔犲伐鍏ュ簱"); - // 1. 闈炵┖澶勭悊锛氶伩鍏峮ull瀵艰嚧鐨勮繍绠楀紓甯� + // 闈炵┖澶勭悊 BigDecimal totalCost = p.getTotalCost() == null ? BigDecimal.ZERO : p.getTotalCost(); BigDecimal productionQuantity = p.getProductionQuantity() == null ? BigDecimal.ZERO : p.getProductionQuantity(); - // 2. 鍚◣鎬讳环 = 鍚◣鍗曚环 * 浜ч噺 鈫� 淇濈暀2浣嶅皬鏁� + // 鍚◣鎬讳环 BigDecimal totalPriceIncludingTax = totalCost.multiply(productionQuantity) .setScale(SCALE, ROUNDING_MODE); pending.setTotalPriceIncludingTax(totalPriceIncludingTax); - // 3. 鍚◣鍗曚环 鈫� 鐩存帴淇濈暀2浣嶅皬鏁� + // 鍚◣鍗曚环 pending.setPriceIncludingTax(totalCost.setScale(SCALE, ROUNDING_MODE)); - // 4. 涓嶅惈绋庡崟浠� = 鍚◣鍗曚环 / 1.13 鈫� 鍏堥珮绮惧害璁$畻锛屽啀淇濈暀2浣� - BigDecimal priceExcludingTax = totalCost.divide(TAX_RATE, 10, ROUNDING_MODE) // 涓棿淇濈暀10浣嶉槻璇樊 - .setScale(SCALE, ROUNDING_MODE); // 鏈�缁堜繚鐣�2浣� + // 涓嶅惈绋庡崟浠凤紙鐩存帴淇濈暀2浣嶅皬鏁帮級 + BigDecimal priceExcludingTax = totalCost.divide(TAX_RATE, SCALE, ROUNDING_MODE); pending.setPriceExcludingTax(priceExcludingTax); - // 5. 涓嶅惈绋庢�讳环 = 涓嶅惈绋庡崟浠� * 浜ч噺 鈫� 淇濈暀2浣嶅皬鏁� + // 涓嶅惈绋庢�讳环 BigDecimal totalPriceExcludingTax = priceExcludingTax.multiply(productionQuantity) .setScale(SCALE, ROUNDING_MODE); pending.setTotalPriceExcludingTax(totalPriceExcludingTax); diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java index 145cf5b..01c3e54 100644 --- a/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java +++ b/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java @@ -69,28 +69,25 @@ // 1. 鍒涘缓鏌ヨ鏉′欢锛屾寜鍒涘缓鏃堕棿鍊掑簭鎺掑簭 LambdaQueryWrapper<SalesRecord> queryWrapper = new LambdaQueryWrapper<>(); - if (StringUtils.isNotBlank(salesRecordDto.getSearchAll())) { - String searchValue = salesRecordDto.getSearchAll(); - // 1. 鍏堝皾璇曚綔涓烘棩鏈熸煡璇� - try { - LocalDate saleDate = LocalDate.parse(searchValue); - queryWrapper.eq(SalesRecord::getSaleDate, saleDate); - } catch (DateTimeParseException e) { - // 2. 濡傛灉涓嶆槸鏃ユ湡锛屽垯浣滀负鐓ょ鍚嶇О鏌ヨ - LambdaQueryWrapper<CoalInfo> coalQueryWrapper = new LambdaQueryWrapper<>(); - coalQueryWrapper.like(CoalInfo::getCoal, searchValue); - List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalQueryWrapper); - if (!coalInfos.isEmpty()) { - // 鎻愬彇鎵�鏈夊尮閰嶇殑鐓ょID - List<Long> coalIds = coalInfos.stream() - .map(CoalInfo::getId) - .collect(Collectors.toList()); - // 浣跨敤in鏌ヨ鍖归厤浠绘剰涓�涓叅绉岻D - queryWrapper.in(SalesRecord::getCoalId, coalIds); - } else { - // 3. 濡傛灉鎵句笉鍒扮叅绉嶏紝鍙互杩斿洖绌虹粨鏋� - queryWrapper.eq(SalesRecord::getCoalId, "-1"); // 浣跨敤涓嶅彲鑳藉瓨鍦ㄧ殑ID - } + // 鎸夋棩鏈熸煡璇� + if (salesRecordDto.getSaleDate() != null) { + queryWrapper.eq(SalesRecord::getSaleDate, salesRecordDto.getSaleDate()); + } + + // 鎸夌叅绉嶅悕绉版煡璇� + if (StringUtils.isNotBlank(salesRecordDto.getCoal())) { + LambdaQueryWrapper<CoalInfo> coalQueryWrapper = new LambdaQueryWrapper<>(); + coalQueryWrapper.like(CoalInfo::getCoal, salesRecordDto.getCoal()); + List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalQueryWrapper); + + if (!coalInfos.isEmpty()) { + List<Long> coalIds = coalInfos.stream() + .map(CoalInfo::getId) + .collect(Collectors.toList()); + queryWrapper.in(SalesRecord::getCoalId, coalIds); + } else { + // 濡傛灉娌℃湁鍖归厤鐨勭叅绉嶏紝鐩存帴杩斿洖绌虹粨鏋� + queryWrapper.eq(SalesRecord::getCoalId, -1L); // 浣跨敤涓嶅彲鑳藉瓨鍦ㄧ殑ID } } diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql b/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql index 2243aab..45c8d38 100644 --- a/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql +++ b/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql @@ -16,7 +16,7 @@ ); -- 娣诲姞琛ㄦ敞閲� -COMMENT ON TABLE production_inventory IS '鐢熶骇涓昏〃'; +COMMENT ON TABLE production_inventory IS '鐢熶骇搴撳瓨浣跨敤璁板綍琛�'; -- 娣诲姞瀛楁娉ㄩ噴 COMMENT ON COLUMN production_inventory.id IS '涓婚敭ID'; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java index 595d5fb..321646e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java @@ -1,12 +1,15 @@ package com.ruoyi.web.controller.init; import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.basic.dto.CoalFieldDto; import com.ruoyi.basic.entity.City; +import com.ruoyi.basic.entity.CoalField; import com.ruoyi.basic.entity.District; import com.ruoyi.basic.entity.Province; -import com.ruoyi.basic.mapper.CityMapper; -import com.ruoyi.basic.mapper.DistrictMapper; -import com.ruoyi.basic.mapper.ProvinceMapper; +import com.ruoyi.basic.mapper.*; +import com.ruoyi.basic.service.CoalFieldService; +import com.ruoyi.basic.service.CoalPlanService; +import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.web.controller.init.dto.AreaDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -15,7 +18,11 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Slf4j @Component @@ -26,6 +33,10 @@ private CityMapper cityMapper; @Autowired private DistrictMapper districtMapper; + @Autowired + private CoalFieldService coalFieldService; + @Autowired + private CoalPlanService coalPlanService; /** * 椤圭洰鍚姩鏃堕渶瑕佹墽琛岀殑鏂规硶 @@ -37,6 +48,8 @@ public void run(String... args) throws Exception { // 鍒濆鍖栫渷甯傚尯 initRegion(); + // 鍒濆鏂板閰嶇叅璁$畻鍣ㄤ腑鐨勫瓧娈靛拰鏂规 + initCoalFields(); } private void initRegion() { @@ -105,4 +118,21 @@ } + + private void initCoalFields() { + + List<CoalFieldDto> fields = Stream.of("鍙戠儹閲�", "纭垎", "鐏板垎", "姘村垎") + .map(CoalFieldDto::from) + .toList(); + // 鎵归噺鑾峰彇宸插瓨鍦ㄧ殑 fieldNames + Set<String> existingFieldNames = coalFieldService.getFieldNamesByNames( + fields.stream().map(CoalFieldDto::getFieldName).collect(Collectors.toSet()) + ); + + fields.forEach(field -> { + if (!existingFieldNames.contains(field.getFieldName())) { + coalFieldService.addOrEditCoalField(field); + } + }); + } } -- Gitblit v1.9.3