Merge remote-tracking branch '惠信/develop' into develop
This commit is contained in:
commit
9da6db4960
|
|
@ -11,6 +11,7 @@ import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
|||
import com.nflg.mobilebroken.admin.pojo.dto.DeviceComponentDTO;
|
||||
import com.nflg.mobilebroken.admin.pojo.dto.DeviceComponentDetailDTO;
|
||||
import com.nflg.mobilebroken.admin.pojo.query.DeviceComponentQuery;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.DevComponentImportExcel;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentDetailVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentVO;
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
|
|
@ -161,15 +162,30 @@ public class DeviceComponentController extends ControllerBase {
|
|||
public void downTemplate(HttpServletResponse response) throws IOException {
|
||||
EecExcelUtil.setResponseExcelHeader(response,"机型部件导入模板");
|
||||
|
||||
final ListSheet<DevComponentExcel> listSheet = new ListSheet<DevComponentExcel>() {
|
||||
final ListSheet<DevComponentImportExcel> listSheet = new ListSheet<DevComponentImportExcel>() {
|
||||
@Override
|
||||
protected List<DevComponentExcel> more() {
|
||||
protected List<DevComponentImportExcel> more() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
EecExcelUtil.eecExcel("机型部件导入模板", listSheet, response);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查重复行
|
||||
* @param list
|
||||
*/
|
||||
private List<String> checkDuplicates(List<DevComponentExcel> list) {
|
||||
List<String> checkResult=new ArrayList<>();
|
||||
list.stream()
|
||||
.collect(Collectors.groupingBy(d -> d.getModelNo() + "-" + d.getModelPartName()))
|
||||
.entrySet().stream()
|
||||
.filter(e -> e.getValue().size() > 1)
|
||||
.forEach(e -> checkResult.add( e.getKey() + " -> " + e.getValue()));
|
||||
return checkResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入部件
|
||||
* @param file
|
||||
|
|
@ -181,6 +197,10 @@ public class DeviceComponentController extends ControllerBase {
|
|||
try {
|
||||
List<DevComponentExcel> data = EecExcelUtil.getExcelContext(file.getInputStream(), DevComponentExcel.class);
|
||||
VUtils.trueThrowBusinessError(CollUtil.isEmpty(data)).throwMessage("导入文件内容为空");
|
||||
//检查内容是否重复
|
||||
List<String> checkResult = checkDuplicates(data);
|
||||
VUtils.trueThrow(CollUtil.isNotEmpty(checkResult)).throwMessage(STATE.PageError,StrUtil.join(",",checkResult)+"内容重复,请检查导入的数据");
|
||||
|
||||
Set<String> modeNos = data.stream().map(u -> u.getModelNo()).collect(Collectors.toSet());
|
||||
List<DeviceComponent> extstsModes = deviceComponentService.lambdaQuery().in(DeviceComponent::getModelNo,modeNos).list();
|
||||
Set<String> extstsModesSet = extstsModes.stream().map(u -> u.getModelNo()).collect(Collectors.toSet());
|
||||
|
|
|
|||
|
|
@ -3,18 +3,17 @@ package com.nflg.mobilebroken.admin.service;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.nflg.mobilebroken.admin.constant.Constant;
|
||||
import com.nflg.mobilebroken.admin.pojo.dto.BasePartDTO;
|
||||
import com.nflg.mobilebroken.common.constant.STATE;
|
||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||
import com.nflg.mobilebroken.common.util.UniqueSequenceGenerator;
|
||||
import com.nflg.mobilebroken.repository.entity.Language;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseLanguageData;
|
||||
import com.nflg.mobilebroken.repository.entity.TBasePart;
|
||||
import com.nflg.mobilebroken.repository.service.ILanguageService;
|
||||
import com.nflg.mobilebroken.repository.service.ITBaseLanguageDataService;
|
||||
import com.nflg.mobilebroken.repository.service.ITBasePartService;
|
||||
import com.nflg.mobilebroken.common.util.VUtils;
|
||||
import com.nflg.mobilebroken.repository.entity.*;
|
||||
import com.nflg.mobilebroken.repository.service.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.ttzero.excel.entity.Column;
|
||||
|
|
@ -25,6 +24,7 @@ import java.time.LocalDateTime;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
|
|
@ -39,6 +39,12 @@ public class AdminBasePartService {
|
|||
@Resource
|
||||
ITBasePartService partService;
|
||||
|
||||
@Resource
|
||||
IDeviceComponentDetailService deviceComponentDetailService;
|
||||
|
||||
@Resource
|
||||
IDeviceComponentService deviceComponentService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -46,10 +52,14 @@ public class AdminBasePartService {
|
|||
*
|
||||
* @param basePartDTO
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void save(BasePartDTO basePartDTO) {
|
||||
//保存
|
||||
TBasePart partEnt = Convert.convert(TBasePart.class, basePartDTO);
|
||||
if (null == basePartDTO.getId() || basePartDTO.getId() <=0) {
|
||||
//检查部件名称是否已存在
|
||||
List<TBasePart> checkPart = partService.lambdaQuery().eq(TBasePart::getPartName, basePartDTO.getPartName()).list();
|
||||
VUtils.trueThrow(CollUtil.isNotEmpty(checkPart)).throwMessage(STATE.ParamErr, basePartDTO.getPartName()+"部件名称已存在");
|
||||
|
||||
partEnt.setPartNo(UniqueSequenceGenerator.generateCode(Constant.PartCodePrefix));
|
||||
partEnt.setCreateBy(AdminUserUtil.getUserName());
|
||||
|
|
@ -58,8 +68,17 @@ public class AdminBasePartService {
|
|||
// partEnt.setUpdateTime(LocalDateTime.now());
|
||||
|
||||
} else { //修改
|
||||
|
||||
//检查部件名称是否已存在
|
||||
List<TBasePart> checkPart = partService.lambdaQuery()
|
||||
.eq(TBasePart::getPartName, basePartDTO.getPartName())
|
||||
.ne(TBasePart::getId,basePartDTO.getId())
|
||||
.list();
|
||||
VUtils.trueThrow(CollUtil.isNotEmpty(checkPart)).throwMessage(STATE.ParamErr, basePartDTO.getPartName()+"部件名称已存在");
|
||||
partEnt.setUpdateBy(AdminUserUtil.getUserName());
|
||||
partEnt.setUpdateTime(LocalDateTime.now());
|
||||
//更新设备机型下的部门名称
|
||||
updateDeviceComponentPartName(basePartDTO);
|
||||
}
|
||||
//删除语言
|
||||
partService.saveOrUpdate(partEnt);
|
||||
|
|
@ -79,6 +98,31 @@ public class AdminBasePartService {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新设备机型下的部件名称
|
||||
*/
|
||||
private void updateDeviceComponentPartName(BasePartDTO basePartDTO){
|
||||
//更新设备机型下的部件名称
|
||||
List<DeviceComponentDetail> deviceParts = deviceComponentDetailService.lambdaQuery().eq(DeviceComponentDetail::getModelPartId, basePartDTO.getId()).list();
|
||||
if(CollUtil.isNotEmpty(deviceParts)) {
|
||||
List<DeviceComponent> deviceComponents=new ArrayList<>();
|
||||
for (DeviceComponentDetail devComponentDetail : deviceParts) {
|
||||
devComponentDetail.setModelPartName(basePartDTO.getPartName());
|
||||
}
|
||||
Map<Integer, List<DeviceComponentDetail>> devicMap = deviceParts.stream().collect(Collectors.groupingBy(DeviceComponentDetail::getDeviceComponentId));
|
||||
for (Integer devId:devicMap.keySet()){
|
||||
Set<String> partNames = devicMap.get(devId).stream().map(u -> u.getModelPartName()).collect(Collectors.toSet());
|
||||
DeviceComponent devEnt=new DeviceComponent();
|
||||
devEnt.setId(devId);
|
||||
devEnt.setComponent(StrUtil.join(",", partNames));
|
||||
deviceComponents.add(devEnt);
|
||||
}
|
||||
deviceComponentDetailService.updateBatchById(deviceParts);
|
||||
deviceComponentService.updateBatchById(deviceComponents);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> buildExcelHeader() {
|
||||
List<Language> allLanguage = languageService.lambdaQuery().eq(Language::getEnable, true).list();
|
||||
List<String> columnNames = new ArrayList<>();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package com.nflg.mobilebroken.common.pojo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.ttzero.excel.annotation.ExcelColumn;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class DevComponentImportExcel {
|
||||
|
||||
|
||||
/**
|
||||
* 设备机型
|
||||
*/
|
||||
@ExcelColumn("设备机型")
|
||||
private String modelNo;
|
||||
|
||||
/**
|
||||
* 机型部件
|
||||
*/
|
||||
@ExcelColumn("部件名称")
|
||||
private String modelPartName;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue