refactor: 重构机型部件列表接口

This commit is contained in:
曹鹏飞 2025-04-30 21:56:23 +08:00
parent b3552cf4e7
commit def8dcbfe7
7 changed files with 58 additions and 23 deletions

View File

@ -4,7 +4,6 @@ package com.nflg.mobilebroken.admin.controller;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.nflg.mobilebroken.admin.annotation.ApiMark; import com.nflg.mobilebroken.admin.annotation.ApiMark;
@ -17,17 +16,18 @@ import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.dto.DevComponentExcel; import com.nflg.mobilebroken.common.pojo.dto.DevComponentExcel;
import com.nflg.mobilebroken.common.pojo.dto.DevComponentImportExcel; import com.nflg.mobilebroken.common.pojo.dto.DevComponentImportExcel;
import com.nflg.mobilebroken.common.pojo.query.DeviceComponentQuery; import com.nflg.mobilebroken.common.pojo.query.DeviceComponentQuery;
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO;
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentPartGroupVO;
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentVO; import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentVO;
import com.nflg.mobilebroken.common.pojo.vo.DeviceTypeVO;
import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.EecExcelUtil; import com.nflg.mobilebroken.common.util.EecExcelUtil;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.Device;
import com.nflg.mobilebroken.repository.entity.DeviceComponent; import com.nflg.mobilebroken.repository.entity.DeviceComponent;
import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail; import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail;
import com.nflg.mobilebroken.repository.entity.TBasePart; import com.nflg.mobilebroken.repository.entity.TBasePart;
import com.nflg.mobilebroken.repository.service.IDeviceComponentDetailService; import com.nflg.mobilebroken.repository.service.IDeviceComponentDetailService;
import com.nflg.mobilebroken.repository.service.IDeviceComponentService; import com.nflg.mobilebroken.repository.service.IDeviceComponentService;
import com.nflg.mobilebroken.repository.service.IDeviceService;
import com.nflg.mobilebroken.repository.service.ITBasePartService; import com.nflg.mobilebroken.repository.service.ITBasePartService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -42,6 +42,7 @@ import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -60,6 +61,9 @@ public class DeviceComponentController extends ControllerBase {
@Resource @Resource
ITBasePartService basePartService; ITBasePartService basePartService;
@Resource
private IDeviceService deviceService;
/** /**
* 获取机型部件列表 * 获取机型部件列表
* @param query * @param query
@ -67,18 +71,31 @@ public class DeviceComponentController extends ControllerBase {
*/ */
@PostMapping("getList") @PostMapping("getList")
@ApiMark(moduleName = "机型部件管理", apiName = "获取设备机型列表") @ApiMark(moduleName = "机型部件管理", apiName = "获取设备机型列表")
public ApiResult<PageData<DeviceComponentVO>> getList(@RequestBody DeviceComponentQuery query){ public ApiResult<PageData<DeviceTypeVO>> getList(@RequestBody DeviceComponentQuery query){
Page<DeviceComponentVO> result = deviceComponentService.selectListByPage(query); List<Device> devices=deviceService.lambdaQuery().select(Device::getDeviceType,Device::getModelNo).eq(Device::getDataValidState,true).list();
result.getRecords().forEach(u->{ Map<String,List<Device>> mps=devices.stream().collect(Collectors.groupingBy(Device::getDeviceType));
List<DeviceComponentDetailVO> detail = deviceComponentDetailService.getDevicePartDetail(u.getId()); AtomicInteger index= new AtomicInteger();
Map<String, List<DeviceComponentDetailVO>> collect=detail.stream().collect(Collectors.groupingBy(DeviceComponentDetailVO::getTypeAttr)); int first=(query.getPage()-1)*query.getPageSize();
List<DeviceComponentPartGroupVO> vos=new ArrayList<>(); int last=query.getPage()*query.getPageSize();
collect.forEach((k,v)->{ PageData<DeviceTypeVO> pageData=new PageData<>();
vos.add(new DeviceComponentPartGroupVO().setTypeAttr(k).setItems(v)); List<DeviceTypeVO> items=new ArrayList<>();
}); mps.forEach((k,v)->{
u.setPartList(vos); if (index.get() >= first && index.get() < last) {
DeviceTypeVO vo=new DeviceTypeVO();
vo.setDeviceType(k);
vo.setItems(v.stream().map(d -> new DeviceComponentVO()
.setModelNo(d.getModelNo())
.setPartList(deviceComponentDetailService.getByModelNo(d.getModelNo()))).collect(Collectors.toList())
);
items.add(vo);
}
index.getAndIncrement();
}); });
return ApiResult.success(result.getRecords(),query,result.getTotal()); pageData.setItems(items);
pageData.setPage(query.getPage());
pageData.setPageSize(query.getPageSize());
pageData.setTotal(mps.size());
return ApiResult.success(pageData);
} }
/** /**

View File

@ -4,11 +4,13 @@ package com.nflg.mobilebroken.common.pojo.vo;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Data @Data
@Accessors(chain = true)
public class DeviceComponentVO { public class DeviceComponentVO {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
@ -49,5 +51,5 @@ public class DeviceComponentVO {
*/ */
private LocalDateTime updateTime; private LocalDateTime updateTime;
private List<DeviceComponentPartGroupVO> partList; private List<DeviceComponentDetailVO> partList;
} }

View File

@ -7,15 +7,15 @@ import java.util.List;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class DeviceComponentPartGroupVO { public class DeviceTypeVO {
/** /**
* 类别属性 * 设备类型
*/ */
private String typeAttr; private String deviceType;
/** /**
* 部件列表 * 机型列表
*/ */
private List<DeviceComponentDetailVO> items; private List<DeviceComponentVO> items;
} }

View File

@ -1,8 +1,8 @@
package com.nflg.mobilebroken.repository.mapper; package com.nflg.mobilebroken.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO; import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO;
import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail; import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -22,4 +22,6 @@ public interface DeviceComponentDetailMapper extends BaseMapper<DeviceComponentD
void batchDelByComponentId(@Param("componentIds") List<Integer> componentIds); void batchDelByComponentId(@Param("componentIds") List<Integer> componentIds);
List<DeviceComponentDetailVO> getDevicePartDetail(@Param("deviceComponentId") Integer deviceComponentId); List<DeviceComponentDetailVO> getDevicePartDetail(@Param("deviceComponentId") Integer deviceComponentId);
List<DeviceComponentDetailVO> getByModelNo(String modelNo);
} }

View File

@ -1,8 +1,8 @@
package com.nflg.mobilebroken.repository.service; package com.nflg.mobilebroken.repository.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO; import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO;
import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail; import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -23,4 +23,6 @@ public interface IDeviceComponentDetailService extends IService<DeviceComponentD
void batchDelByComponentId(@Param("componentIds") List<Integer> componentIds); void batchDelByComponentId(@Param("componentIds") List<Integer> componentIds);
List<DeviceComponentDetailVO> getDevicePartDetail(@Param("deviceComponentId") Integer deviceComponentId); List<DeviceComponentDetailVO> getDevicePartDetail(@Param("deviceComponentId") Integer deviceComponentId);
List<DeviceComponentDetailVO> getByModelNo(String modelNo);
} }

View File

@ -1,10 +1,10 @@
package com.nflg.mobilebroken.repository.service.impl; package com.nflg.mobilebroken.repository.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO; import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO;
import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail; import com.nflg.mobilebroken.repository.entity.DeviceComponentDetail;
import com.nflg.mobilebroken.repository.mapper.DeviceComponentDetailMapper; import com.nflg.mobilebroken.repository.mapper.DeviceComponentDetailMapper;
import com.nflg.mobilebroken.repository.service.IDeviceComponentDetailService; import com.nflg.mobilebroken.repository.service.IDeviceComponentDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -32,4 +32,9 @@ public class DeviceComponentDetailServiceImpl extends ServiceImpl<DeviceComponen
public List<DeviceComponentDetailVO> getDevicePartDetail(@Param("deviceComponentId") Integer deviceComponentId){ public List<DeviceComponentDetailVO> getDevicePartDetail(@Param("deviceComponentId") Integer deviceComponentId){
return this.getBaseMapper().getDevicePartDetail(deviceComponentId); return this.getBaseMapper().getDevicePartDetail(deviceComponentId);
} }
@Override
public List<DeviceComponentDetailVO> getByModelNo(String modelNo) {
return baseMapper.getByModelNo(modelNo);
}
} }

View File

@ -19,4 +19,11 @@
join t_base_part b on a.model_part_id=b.id join t_base_part b on a.model_part_id=b.id
where a.device_component_id=#{deviceComponentId} where a.device_component_id=#{deviceComponentId}
</select> </select>
<select id="getByModelNo" resultType="com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO">
SELECT dct.*
FROM device_component dc
INNER JOIN device_component_detail dct ON dc.id=dct.device_component_id
WHERE dc.model_no=#{modelNo}
</select>
</mapper> </mapper>