From f49d221ac0652ac55c2108dda56b68ea9b2691fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Tue, 27 May 2025 18:18:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E4=BB=B6=E5=85=A5=E5=BA=93=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/EbikeComponentInventorycount.java | 4 +- .../impl/EbikeComponentServiceImpl.java | 477 ++++++++++-------- 2 files changed, 276 insertions(+), 205 deletions(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java index 865e09f6..984f68d3 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java @@ -58,9 +58,7 @@ public class EbikeComponentInventorycount implements Serializable { /** * 部件数量 */ - @Column(onInsertValue = "0") - private long itemCount; - + private Long itemCount = 0L; // 使用包装类 Long,允许 NULL /** * 单位 */ diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java index dd92819d..7a6d1969 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java @@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -35,9 +36,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { @Resource private EbikeEcuEnterRecordsMapper ebikeEcuEnterRecordsMapper; - @Resource - private EbikeComponentProductionMapper ebikeComponentProductionMapper; - @Resource private StaffFeignClient staffFeignClient; @Resource @@ -62,10 +60,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { @Autowired private EbikeBatteryOutRecordsMapper ebikeBatteryOutRecordsMapper; - public EbikeComponentServiceImpl(EbikeEcuEnterRecordsMapper ebikeEcuEnterRecordsMapper, EbikeComponentProductionMapper ebikeComponentProductionMapper) { - this.ebikeEcuEnterRecordsMapper = ebikeEcuEnterRecordsMapper; - this.ebikeComponentProductionMapper = ebikeComponentProductionMapper; - } + /*** * 中控设备部件入库接口,暂存 @@ -84,20 +79,43 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { saveOrUpdateEnterRecord(ebikeComponentEnterRecords, params.getComponentEnterRecordId(), userId); String componentEnterRecordId = ebikeComponentEnterRecords.getComponentEnterRecordId(); - + // 用于存储重复部件名称的集合 + List duplicatePartNames = new ArrayList<>(); if (params.getEbikeEcuEnterRecords() != null && !params.getEbikeEcuEnterRecords().isEmpty()) { + // 遍历所有的EbikeEcuEnterRecords记录 + for (EbikeEcuEnterRecords res : params.getEbikeEcuEnterRecords()) { + boolean isDuplicate = isDuplicateEntry(res.getEcuSn(),res.getEcuCode()); + if (isDuplicate) { + // 如果是重复部件,则将部件名称添加到重复部件名称记录中 + duplicatePartNames.add(res.getEcuSn()); // 假设 EcuSn 是部件名称 + } + } // 删除原有的ECU入库记录并保存新的记录 deleteAndInsertEcuEnterRecords(componentEnterRecordId, params.getEbikeEcuEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); if (stockInType == 1) { updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeEcuEnterRecords().size(), 1); } } else if (params.getEbikeBatteryEnterRecords() != null && !params.getEbikeBatteryEnterRecords().isEmpty()) { + for (EbikeBatteryEnterRecords res : params.getEbikeBatteryEnterRecords()) { + boolean isDuplicate = isDuplicateEntry(res.getBatteryCode(),""); + if (isDuplicate) { + // 如果是重复部件,则将部件名称添加到重复部件名称记录中 + duplicatePartNames.add(res.getBatteryCode()); // 假设 EcuSn 是部件名称 + } + } // 删除原有的电池入库记录并保存新的记录 deleteAndInsertBatteryRecords(componentEnterRecordId, params.getEbikeBatteryEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); if (stockInType == 1) { updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeBatteryEnterRecords().size(), 1); } } else if (params.getEbikeHelmetEnterRecords() != null && !params.getEbikeHelmetEnterRecords().isEmpty()) { + for (EbikeHelmetEnterRecords res : params.getEbikeHelmetEnterRecords()) { + boolean isDuplicate = isDuplicateEntry(res.getHelmetCode(),""); + if (isDuplicate) { + // 如果是重复部件,则将部件名称添加到重复部件名称记录中 + duplicatePartNames.add(res.getHelmetCode()); // 假设 EcuSn 是部件名称 + } + } // 删除原有的头盔入库记录并保存新的记录 deleteAndInsertHelmetEnterRecords(componentEnterRecordId, params.getEbikeHelmetEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); if (stockInType == 1) { @@ -110,12 +128,16 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { updateInventoryCount(ebikeComponentTypeInfo, orgId, enterQuantity, 1); } } + // 如果有重复部件名称记录,则返回错误信息 + if (!duplicatePartNames.isEmpty()) { + // 可以在错误信息中添加重复的部件名称 + String duplicateParts = String.join(", ", duplicatePartNames); + return JsonResult.failed("以下部件已存在,不能重复入库: " + duplicateParts); + } String componentOutRecordId = params.getComponentOutRecordId(); - if(componentOutRecordId != null && !componentOutRecordId.isEmpty()){ + if(componentOutRecordId != null && !componentOutRecordId.isEmpty() && stockInType == 1 ){ // 更新出库记录状态为 已归还 - EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneById(componentOutRecordId); - ebikeComponentOutRecords.setState("2"); - ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords); + updateOutRecordStatus(componentOutRecordId); } return JsonResult.success("", componentEnterRecordId); } @@ -127,7 +149,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { StaffFeign staffFeign = getStaffFeignInfo(); return staffFeign.getStaffId().toString(); } - /* 获取组织Id */ @@ -185,7 +206,13 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { // 删除原有的ECU入库记录 QueryWrapper query = new QueryWrapper(); query.eq("component_enter_record_id", componentEnterRecordId); + ebikeHelmetEnterRecordsMapper.deleteByQuery(query); + query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); ebikeEcuEnterRecordsMapper.deleteByQuery(query); + query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + ebikeBatteryEnterRecordsMapper.deleteByQuery(query); // 插入新的ECU入库记录 for (EbikeEcuEnterRecords record : enterRecords) { record.setComponentEnterRecordId(componentEnterRecordId); @@ -201,6 +228,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { QueryWrapper query = new QueryWrapper(); query.eq("component_enter_record_id", componentEnterRecordId); ebikeHelmetEnterRecordsMapper.deleteByQuery(query); + query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + ebikeEcuEnterRecordsMapper.deleteByQuery(query); + query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + ebikeBatteryEnterRecordsMapper.deleteByQuery(query); // 插入新的头盔入库记录 for (EbikeHelmetEnterRecords record : ebikeHelmetEnterRecords) { record.setComponentEnterRecordId(componentEnterRecordId); @@ -215,6 +248,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { // 删除原有的电池入库记录 QueryWrapper query = new QueryWrapper(); query.eq("component_enter_record_id", componentEnterRecordId); + ebikeHelmetEnterRecordsMapper.deleteByQuery(query); + query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + ebikeEcuEnterRecordsMapper.deleteByQuery(query); + query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); ebikeBatteryEnterRecordsMapper.deleteByQuery(query); // 插入新的电池入库记录 for (EbikeBatteryEnterRecords record : ebikeBatteryEnterRecords) { @@ -238,7 +277,23 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentInventory.setLastUpdatedAt(LocalDateTime.now()); ebikeComponentInventory.setLastUpdatedUser(userId); ebikeComponentInventory.setState(state); // 1 已入库 //2 已出库 - ebikeComponentInventoryMapper.insert(ebikeComponentInventory); + // 查询是否已存在该记录 + QueryWrapper query =new QueryWrapper(); + query.eq("item_code",ItemCode); + query.eq("serial_number",SerialNumber); + EbikeComponentInventory existingInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); + if (existingInventory != null) { + // 如果记录存在,则进行更新 + existingInventory.setLastUpdatedAt(LocalDateTime.now()); + existingInventory.setLastUpdatedUser(userId); + existingInventory.setState(state); + // 执行更新操作 + ebikeComponentInventoryMapper.update(existingInventory); + } else { + // 如果记录不存在,则执行插入操作 + ebikeComponentInventoryMapper.insert(ebikeComponentInventory); + } + } //入库记录更新数量 type 1 入库 2 出库 @@ -254,7 +309,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentInventorycount.setBrand(ebikeComponentTypeInfo.getBrand()); ebikeComponentInventorycount.setUnit(ebikeComponentTypeInfo.getUnit()); ebikeComponentInventorycount.setPrice(ebikeComponentTypeInfo.getPrice()); - ebikeComponentInventorycount.setItemCount(size); + ebikeComponentInventorycount.setItemCount(0L+size); ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount); } else { if (type == 1) {//入库 @@ -320,67 +375,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { } - // 方法实现 - private void updateBatteryDetails(String componentEnterRecordId, String componentType, Integer state) { - // 具体更新电池仓库明细状态和仓库总数量的逻辑 - QueryWrapper query = new QueryWrapper(); - query.eq("component_enter_record_id", componentEnterRecordId); - List ebikeBatteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query); - for (EbikeBatteryEnterRecords record : ebikeBatteryEnterRecords) { - query = new QueryWrapper(); - query.eq("item_code", record.getBatteryCode()); - EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); - ebikeComponentInventory.setState(state); - ebikeComponentInventoryMapper.update(ebikeComponentInventory); - } - int size = ebikeBatteryEnterRecords.size(); - updateOtherComponentStock(componentType, size); - } - - private void updateHelmetDetails(String componentEnterRecordId, String componentType, Integer state) { - // 具体更新头盔仓库明细状态和仓库总数量的逻辑 - QueryWrapper query = new QueryWrapper(); - query.eq("component_enter_record_id", componentEnterRecordId); - - List ebikeHelmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query); - for (EbikeHelmetEnterRecords record : ebikeHelmetEnterRecords) { - query = new QueryWrapper(); - query.eq("item_code", record.getHelmetCode()); - EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); - ebikeComponentInventory.setState(state); - ebikeComponentInventoryMapper.update(ebikeComponentInventory); - } - int size = ebikeHelmetEnterRecords.size(); - updateOtherComponentStock(componentType, size); - } - - private void updateCentralControlDetails(String componentEnterRecordId, String componentType, Integer state) { - // 具体更新中控仓库明细状态和仓库总数量的逻辑 - QueryWrapper query = new QueryWrapper(); - query.eq("component_enter_record_id", componentEnterRecordId); - List ebikeEcuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query); - for (EbikeEcuEnterRecords record : ebikeEcuEnterRecords) { - query = new QueryWrapper(); - query.eq("item_code", record.getEcuSn()); - query.eq("serial_number", record.getEcuCode()); - EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); - ebikeComponentInventory.setState(state); - ebikeComponentInventoryMapper.update(ebikeComponentInventory); - } - int size = ebikeEcuEnterRecords.size(); - updateOtherComponentStock(componentType, size); - } - - private void updateOtherComponentStock(String componentType, Integer size) { - // 具体更新其他组件仓库总数量的逻辑 - QueryWrapper query1 = new QueryWrapper(); - query1.eq("code", componentType); - EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); - if (ebikeComponentInventorycount != null) { - ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() - size); - ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); - } - } /** * 出库作废增加部件数量 @@ -464,7 +458,186 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { } return JsonResult.success(componentOutRecordId); } + /** + * 设备部件出库取消(通用) + * + * @param componentOutRecordId + * @return + */ + @Override + public JsonResult cancelOutDevicePart(String componentOutRecordId) { + QueryWrapper query = new QueryWrapper(); + query.eq("component_out_record_id", componentOutRecordId); + EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query); + //先更新记录表状态 为已取消(-1) + ebikeComponentOutRecords.setState("-1"); + ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords); + return JsonResult.success("成功"); + } + /** + * 设备部件出库作废 (通用 + * + * @param componentOutRecordId + * @return + */ + @Override + @Transactional + public JsonResult invalidateOutDevicePart(String componentOutRecordId) { + QueryWrapper query = new QueryWrapper(); + query.eq("component_out_record_id", componentOutRecordId); + EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query); + String componentType = ebikeComponentOutRecords.getComponentType(); + Integer enterQuantity = ebikeComponentOutRecords.getEnterQuantity(); + // 电池262711452730000 头盔262711452730001 中控262711452730008 需要单独操作明细表 + //先更新记录表状态 为已作废(-2) + ebikeComponentOutRecords.setState("-2"); + ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords); + ComponentType componentTypeEnum = ComponentType.fromCode(componentType); + switch (componentTypeEnum) { + case BATTERY: // 电池 + updateBatteryOutDetails(componentOutRecordId, componentType, -2); + break; + case HELMET: // 头盔 + updateHelmetOutDetails(componentOutRecordId, componentType, -2); + break; + case ECU: // 中控 + updateCentralControlOutDetails(componentOutRecordId, componentType, -2); + break; + default: // 其他 + updateOtherComponentStock(componentType, enterQuantity); + break; + } + return JsonResult.success("成功"); + } + /** + * 分页查询Ecu入库记录。 + * + * @param reqEbikeEcuEnterRecordsDto 分页查询条件 + * @return 分页对象 + */ + @Override + public Page ecuEnterList(ReqEbikeEcuEnterRecordsDto reqEbikeEcuEnterRecordsDto) { + QueryWrapper query = QueryWrapper.create(); + String componentId = reqEbikeEcuEnterRecordsDto.getComponentEnterRecordId(); + if(componentId!=null&&!componentId.isEmpty()) + query.where(EBIKE_ECU_ENTER_RECORDS.COMPONENT_ENTER_RECORD_ID.eq(componentId)); + Page page = reqEbikeEcuEnterRecordsDto.getPageParam().getPage(); + return ebikeEcuEnterRecordsMapper.paginate(page, query); + } + /** + * 分页查询Ecu出库库记录。 + * + * @param reqEbikeEcuOutRecordsDto 分页查询条件 + * @return 分页对象 + */ + @Override + public Page ecuOutList(ReqEbikeEcuOutRecordsDto reqEbikeEcuOutRecordsDto) { + QueryWrapper query = QueryWrapper.create(); + String componentId = reqEbikeEcuOutRecordsDto.getComponentOutRecordId(); + if(componentId!=null&&!componentId.isEmpty()) + query.where(EBIKE_ECU_OUT_RECORDS.COMPONENT_OUT_RECORD_ID.eq(componentId)); + Page page = reqEbikeEcuOutRecordsDto.getPageParam().getPage(); + return ebikeEcuOutRecordsMapper.paginate(page, query); + } + /** + * 根据部件出库记录表主键,查询部件出库记录信息以及归还部件信息 + * + * @param componentOutRecordId 部件出库记录ID + * @return ResComponentOutRecordInfoDto + */ + @Override + public JsonResult getComponentOutRecordInfo(String componentOutRecordId) { + // 创建查询条件 + QueryWrapper query = new QueryWrapper(); + query.eq("component_out_record_id", componentOutRecordId); + // 获取出库记录 + EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query); + if (ebikeComponentOutRecords == null) { + return JsonResult.failed("记录未找到"); + } + + // 将出库记录的属性复制到返回的DTO中 + ResComponentOutRecordInfoDto resComponentOutRecordInfoDto = new ResComponentOutRecordInfoDto(); + BeanUtils.copyProperties(ebikeComponentOutRecords, resComponentOutRecordInfoDto); + + // 根据组件类型填充对应的出库记录 + ComponentType componentTypeEnum = ComponentType.fromCode(ebikeComponentOutRecords.getComponentType()); + populateOutRecords(resComponentOutRecordInfoDto, componentOutRecordId, componentTypeEnum); + + // 查询是否存在归还记录,如果存在,则填充归还记录 + query = new QueryWrapper(); + query.eq("component_out_record_id", componentOutRecordId); + EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query); + if (ebikeComponentEnterRecords != null) { + populateEnterRecords(resComponentOutRecordInfoDto, ebikeComponentEnterRecords); + } + + return JsonResult.success(resComponentOutRecordInfoDto); + } + + + // 方法实现 + private void updateBatteryDetails(String componentEnterRecordId, String componentType, Integer state) { + // 具体更新电池仓库明细状态和仓库总数量的逻辑 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + List ebikeBatteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListByQuery(query); + for (EbikeBatteryEnterRecords record : ebikeBatteryEnterRecords) { + query = new QueryWrapper(); + query.eq("item_code", record.getBatteryCode()); + EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); + ebikeComponentInventory.setState(state); + ebikeComponentInventoryMapper.update(ebikeComponentInventory); + } + int size = ebikeBatteryEnterRecords.size(); + updateOtherComponentStock(componentType, size); + } + + private void updateHelmetDetails(String componentEnterRecordId, String componentType, Integer state) { + // 具体更新头盔仓库明细状态和仓库总数量的逻辑 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + + List ebikeHelmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListByQuery(query); + for (EbikeHelmetEnterRecords record : ebikeHelmetEnterRecords) { + query = new QueryWrapper(); + query.eq("item_code", record.getHelmetCode()); + EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); + ebikeComponentInventory.setState(state); + ebikeComponentInventoryMapper.update(ebikeComponentInventory); + } + int size = ebikeHelmetEnterRecords.size(); + updateOtherComponentStock(componentType, size); + } + + private void updateCentralControlDetails(String componentEnterRecordId, String componentType, Integer state) { + // 具体更新中控仓库明细状态和仓库总数量的逻辑 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + List ebikeEcuEnterRecords = ebikeEcuEnterRecordsMapper.selectListByQuery(query); + for (EbikeEcuEnterRecords record : ebikeEcuEnterRecords) { + query = new QueryWrapper(); + query.eq("item_code", record.getEcuSn()); + query.eq("serial_number", record.getEcuCode()); + EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query); + ebikeComponentInventory.setState(state); + ebikeComponentInventoryMapper.update(ebikeComponentInventory); + } + int size = ebikeEcuEnterRecords.size(); + updateOtherComponentStock(componentType, size); + } + + private void updateOtherComponentStock(String componentType, Integer size) { + // 具体更新其他组件仓库总数量的逻辑 + QueryWrapper query1 = new QueryWrapper(); + query1.eq("code", componentType); + EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); + if (ebikeComponentInventorycount != null) { + ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() - size); + ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); + } + } private EbikeComponentOutRecords buildOutRecord(ReqComponentOutRecordDto params, EbikeComponentTypeInfo ebikeComponentTypeInfo, Integer stockInType, Long orgId) { EbikeComponentOutRecords ebikeComponentOutRecords = new EbikeComponentOutRecords(); ebikeComponentOutRecords.setOwningRegion(params.getOwningRegion()); @@ -544,64 +717,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { } } - /** - * 设备部件出库取消(通用) - * - * @param componentOutRecordId - * @return - */ - @Override - public JsonResult cancelOutDevicePart(String componentOutRecordId) { - QueryWrapper query = new QueryWrapper(); - query.eq("component_out_record_id", componentOutRecordId); - EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query); - //先更新记录表状态 为已取消(-1) - ebikeComponentOutRecords.setState("-1"); - ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords); - return JsonResult.success("成功"); - } - - /** - * 设备部件出库作废 (通用 - * - * @param componentOutRecordId - * @return - */ - @Override - @Transactional - public JsonResult invalidateOutDevicePart(String componentOutRecordId) { - QueryWrapper query = new QueryWrapper(); - query.eq("component_out_record_id", componentOutRecordId); - EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query); - String componentType = ebikeComponentOutRecords.getComponentType(); - Integer enterQuantity = ebikeComponentOutRecords.getEnterQuantity(); - // 电池262711452730000 头盔262711452730001 中控262711452730008 需要单独操作明细表 - //先更新记录表状态 为已作废(-2) - ebikeComponentOutRecords.setState("-2"); - ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords); - ComponentType componentTypeEnum = ComponentType.fromCode(componentType); - switch (componentTypeEnum) { - case BATTERY: // 电池 - updateBatteryOutDetails(componentOutRecordId, componentType, -2); - break; - case HELMET: // 头盔 - updateHelmetOutDetails(componentOutRecordId, componentType, -2); - break; - case ECU: // 中控 - updateCentralControlOutDetails(componentOutRecordId, componentType, -2); - break; - default: // 其他 - updateOtherComponentStock(componentType, enterQuantity); - break; - } - return JsonResult.success("成功"); - } private void updateBatteryOutDetails(String componentOutRecordId, String componentType, Integer state) { // 具体更新电池仓库明细状态和仓库总数量的逻辑 QueryWrapper query = new QueryWrapper(); query.eq("component_out_record_id", componentOutRecordId); - List ebikeBatteryOutRecords = ebikeBatteryOutRecordsMapper.selectListWithRelationsByQuery(query); + List ebikeBatteryOutRecords = ebikeBatteryOutRecordsMapper.selectListByQuery(query); for (EbikeBatteryOutRecords record : ebikeBatteryOutRecords) { query = new QueryWrapper(); query.eq("item_code", record.getBatteryCode()); @@ -618,7 +739,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { QueryWrapper query = new QueryWrapper(); query.eq("component_out_record_id", componentOutRecordId); - List ebikeHelmetOutRecords = ebikeHelmetOutRecordsMapper.selectListWithRelationsByQuery(query); + List ebikeHelmetOutRecords = ebikeHelmetOutRecordsMapper.selectListByQuery(query); for (EbikeHelmetOutRecords record : ebikeHelmetOutRecords) { query = new QueryWrapper(); query.eq("item_code", record.getHelmetCode()); @@ -634,7 +755,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { // 具体更新中控仓库明细状态和仓库总数量的逻辑 QueryWrapper query = new QueryWrapper(); query.eq("component_out_record_id", componentOutRecordId); - List ebikeEcuOutRecords = ebikeEcuOutRecordsMapper.selectListWithRelationsByQuery(query); + List ebikeEcuOutRecords = ebikeEcuOutRecordsMapper.selectListByQuery(query); for (EbikeEcuOutRecords record : ebikeEcuOutRecords) { query = new QueryWrapper(); query.eq("item_code", record.getEcuSn()); @@ -646,84 +767,23 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { int size = ebikeEcuOutRecords.size(); updateOtherOutComponentStock(componentType, size); } - /** - * 分页查询Ecu入库记录。 - * - * @param reqEbikeEcuEnterRecordsDto 分页查询条件 - * @return 分页对象 - */ - @Override - public Page ecuEnterList(ReqEbikeEcuEnterRecordsDto reqEbikeEcuEnterRecordsDto) { - QueryWrapper query = QueryWrapper.create(); - String componentId = reqEbikeEcuEnterRecordsDto.getComponentEnterRecordId(); - if(componentId!=null&&!componentId.isEmpty()) - query.where(EBIKE_ECU_ENTER_RECORDS.COMPONENT_ENTER_RECORD_ID.eq(componentId)); - Page page = reqEbikeEcuEnterRecordsDto.getPageParam().getPage(); - return ebikeEcuEnterRecordsMapper.paginate(page, query); - } - /** - * 分页查询Ecu出库库记录。 - * - * @param reqEbikeEcuOutRecordsDto 分页查询条件 - * @return 分页对象 - */ - @Override - public Page ecuOutList(ReqEbikeEcuOutRecordsDto reqEbikeEcuOutRecordsDto) { - QueryWrapper query = QueryWrapper.create(); - String componentId = reqEbikeEcuOutRecordsDto.getComponentOutRecordId(); - if(componentId!=null&&!componentId.isEmpty()) - query.where(EBIKE_ECU_OUT_RECORDS.COMPONENT_OUT_RECORD_ID.eq(componentId)); - Page page = reqEbikeEcuOutRecordsDto.getPageParam().getPage(); - return ebikeEcuOutRecordsMapper.paginate(page, query); - } - /** - * 根据部件出库记录表主键,查询部件出库记录信息以及归还部件信息 - * - * @param componentOutRecordId 部件出库记录ID - * @return ResComponentOutRecordInfoDto - */ - @Override - public JsonResult getComponentOutRecordInfo(String componentOutRecordId) { - // 创建查询条件 - QueryWrapper query = new QueryWrapper(); - query.eq("component_out_record_id", componentOutRecordId); - // 获取出库记录 - EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query); - if (ebikeComponentOutRecords == null) { - return JsonResult.failed("记录未找到"); - } - - // 将出库记录的属性复制到返回的DTO中 - ResComponentOutRecordInfoDto resComponentOutRecordInfoDto = new ResComponentOutRecordInfoDto(); - BeanUtils.copyProperties(ebikeComponentOutRecords, resComponentOutRecordInfoDto); - - // 根据组件类型填充对应的出库记录 - ComponentType componentTypeEnum = ComponentType.fromCode(ebikeComponentOutRecords.getComponentType()); - populateOutRecords(resComponentOutRecordInfoDto, query, componentTypeEnum); - - // 查询是否存在归还记录,如果存在,则填充归还记录 - EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query); - if (ebikeComponentEnterRecords != null) { - populateEnterRecords(resComponentOutRecordInfoDto, ebikeComponentEnterRecords); - } - - return JsonResult.success(resComponentOutRecordInfoDto); - } // 根据组件类型填充出库记录 - private void populateOutRecords(ResComponentOutRecordInfoDto dto, QueryWrapper query, ComponentType componentTypeEnum) { + private void populateOutRecords(ResComponentOutRecordInfoDto dto, String componentOutRecordId, ComponentType componentTypeEnum) { + QueryWrapper query = new QueryWrapper(); + query.eq("component_out_record_id", componentOutRecordId); switch (componentTypeEnum) { case BATTERY: // 电池 - List batteryOutRecords = ebikeBatteryOutRecordsMapper.selectListWithRelationsByQuery(query); + List batteryOutRecords = ebikeBatteryOutRecordsMapper.selectListByQuery(query); dto.setEbikeBatteryOutRecords(batteryOutRecords); break; case HELMET: // 头盔 - List helmetOutRecords = ebikeHelmetOutRecordsMapper.selectListWithRelationsByQuery(query); + List helmetOutRecords = ebikeHelmetOutRecordsMapper.selectListByQuery(query); dto.setEbikeHelmetOutRecords(helmetOutRecords); break; case ECU: // 中控 - List ecuOutRecords = ebikeEcuOutRecordsMapper.selectListWithRelationsByQuery(query); + List ecuOutRecords = ebikeEcuOutRecordsMapper.selectListByQuery(query); dto.setEbikeEcuOutRecords(ecuOutRecords); break; default: @@ -740,22 +800,35 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ComponentType componentTypeEnumEnter = ComponentType.fromCode(enterRecords.getComponentType()); switch (componentTypeEnumEnter) { case BATTERY: // 电池 - List batteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query); + List batteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListByQuery(query); dto.setEbikeBatteryEnterRecords(batteryEnterRecords); break; case HELMET: // 头盔 - List helmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query); + List helmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListByQuery(query); dto.setEbikeHelmetEnterRecords(helmetEnterRecords); break; case ECU: // 中控 - List ecuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query); + List ecuEnterRecords = ebikeEcuEnterRecordsMapper.selectListByQuery(query); dto.setEbikeEcuEnterRecords(ecuEnterRecords); break; default: break; } } - + // 更新出库记录状态为已归还 + private void updateOutRecordStatus(String componentOutRecordId) { + EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneById(componentOutRecordId); + ebikeComponentOutRecords.setState("2"); + ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords); + } + public boolean isDuplicateEntry(String itemCode, String serialNumber) { + QueryWrapper query = new QueryWrapper(); + query.eq("item_code", itemCode); + query.eq("serial_number", serialNumber); + query.eq("state", 1); // 假设 1 表示已已入库 + long count = ebikeComponentInventoryMapper.selectCountByQuery(query); // 查询符合条件的记录数 + return count > 0; // 如果记录数大于 0,说明已经存在重复入库 + } public StaffFeign getStaffFeignInfo() { String tokenValue = StpUtil.getTokenValue(); // 调用 Feign 客户端获取用户信息