From 4c33acfe648e9b008f91c5e2cf446550e6b0174d Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期二, 22 七月 2025 17:35:57 +0800 Subject: [PATCH] 1.正式库导出优化 2.销售导出 3.设备使用状态优化 4.定时任务优化 --- main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 42 insertions(+), 12 deletions(-) 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 7b78a37..fde6bd6 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 @@ -20,6 +20,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -66,7 +67,7 @@ if (!userIds.isEmpty()) { List<SysUser> sysUsers = sysUserMapper.selectList(userIds); userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity())); - }else { + } else { userMap = new HashMap<>(); } //鍖归厤鏁版嵁 @@ -84,7 +85,6 @@ } return dto; }).toList(); - dtoPage.setRecords(dtoRecords); return dtoPage; } @@ -92,6 +92,12 @@ @Override @Transactional(rollbackFor = Exception.class) public int addOrEditUsageRecord(EquipmentUsageRecordDto equipmentUsageRecordDto) { + // 鍙傛暟鏍¢獙 + if (equipmentUsageRecordDto == null) { + throw new IllegalArgumentException("璁惧浣跨敤璁板綍鍙傛暟涓嶈兘涓虹┖"); + } + + // 澶嶅埗灞炴�у埌瀹炰綋瀵硅薄 EquipmentUsageRecord equipmentUsageRecord = new EquipmentUsageRecord(); BeanUtils.copyProperties(equipmentUsageRecordDto, equipmentUsageRecord); @@ -99,12 +105,13 @@ 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) { @@ -115,33 +122,56 @@ equipment.setQuantity(equipment.getQuantity() - newUsageQuantity); equipmentManagementMapper.updateById(equipment); - // 鍒涘缓棰嗙敤璁板綍 + // 璁剧疆浣跨敤寮�濮嬫椂闂翠负褰撳墠鏃堕棿 + equipmentUsageRecord.setUsageStartTime(LocalDate.now()); 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 (equipmentUsageRecordDto.getEquipmentStatus() == 2) { + // 妫�鏌ュ綊杩樻暟閲忔槸鍚﹀悎娉� + if (newUsageQuantity > originalRecord.getUsageQuantity()) { + throw new RuntimeException("褰掕繕鏁伴噺涓嶈兘瓒呰繃鍘熼鐢ㄦ暟閲�"); + } - if (quantityDelta != 0) { - // 3. 妫�鏌ヨ皟鏁村悗搴撳瓨鏄惁鍏呰冻锛堣�冭檻澧炲姞鍜屽噺灏戜袱绉嶆儏鍐碉級 - int newInventory = equipment.getQuantity() - quantityDelta; + // 璁$畻瀹為檯褰掕繕鏁伴噺锛堝師棰嗙敤鏁伴噺 - 鏂伴鐢ㄦ暟閲忥級 + int returnedQuantity = originalRecord.getUsageQuantity() - newUsageQuantity; + + // 鎭㈠閮ㄥ垎搴撳瓨 + equipment.setQuantity(equipment.getQuantity() + returnedQuantity); + equipmentManagementMapper.updateById(equipment); + + // 濡傛灉鍏ㄩ儴褰掕繕锛岃缃綊杩樻椂闂� + if (newUsageQuantity == 0) { + equipmentUsageRecord.setUsageEndTime(LocalDate.now()); + } + return equipmentUsageRecordMapper.updateById(equipmentUsageRecord); + } + + // 澶勭悊鏅�氱紪杈戦�昏緫锛堥潪褰掕繕鐘舵�侊級 + if (!newUsageQuantity.equals(originalRecord.getUsageQuantity())) { + // 璁$畻搴撳瓨鍙樺寲閲忥紙鏃ф暟閲� - 鏂版暟閲忥級 + int quantityDelta = originalRecord.getUsageQuantity() - newUsageQuantity; + + // 妫�鏌ヨ皟鏁村悗搴撳瓨鏄惁鍏呰冻 + 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); } } -- Gitblit v1.9.3