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.DeviceComponentDTO;
|
||||||
import com.nflg.mobilebroken.admin.pojo.dto.DeviceComponentDetailDTO;
|
import com.nflg.mobilebroken.admin.pojo.dto.DeviceComponentDetailDTO;
|
||||||
import com.nflg.mobilebroken.admin.pojo.query.DeviceComponentQuery;
|
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.DeviceComponentDetailVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentVO;
|
import com.nflg.mobilebroken.common.pojo.vo.DeviceComponentVO;
|
||||||
import com.nflg.mobilebroken.common.constant.STATE;
|
import com.nflg.mobilebroken.common.constant.STATE;
|
||||||
|
|
@ -161,15 +162,30 @@ public class DeviceComponentController extends ControllerBase {
|
||||||
public void downTemplate(HttpServletResponse response) throws IOException {
|
public void downTemplate(HttpServletResponse response) throws IOException {
|
||||||
EecExcelUtil.setResponseExcelHeader(response,"机型部件导入模板");
|
EecExcelUtil.setResponseExcelHeader(response,"机型部件导入模板");
|
||||||
|
|
||||||
final ListSheet<DevComponentExcel> listSheet = new ListSheet<DevComponentExcel>() {
|
final ListSheet<DevComponentImportExcel> listSheet = new ListSheet<DevComponentImportExcel>() {
|
||||||
@Override
|
@Override
|
||||||
protected List<DevComponentExcel> more() {
|
protected List<DevComponentImportExcel> more() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
EecExcelUtil.eecExcel("机型部件导入模板", listSheet, response);
|
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
|
* @param file
|
||||||
|
|
@ -181,6 +197,10 @@ public class DeviceComponentController extends ControllerBase {
|
||||||
try {
|
try {
|
||||||
List<DevComponentExcel> data = EecExcelUtil.getExcelContext(file.getInputStream(), DevComponentExcel.class);
|
List<DevComponentExcel> data = EecExcelUtil.getExcelContext(file.getInputStream(), DevComponentExcel.class);
|
||||||
VUtils.trueThrowBusinessError(CollUtil.isEmpty(data)).throwMessage("导入文件内容为空");
|
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());
|
Set<String> modeNos = data.stream().map(u -> u.getModelNo()).collect(Collectors.toSet());
|
||||||
List<DeviceComponent> extstsModes = deviceComponentService.lambdaQuery().in(DeviceComponent::getModelNo,modeNos).list();
|
List<DeviceComponent> extstsModes = deviceComponentService.lambdaQuery().in(DeviceComponent::getModelNo,modeNos).list();
|
||||||
Set<String> extstsModesSet = extstsModes.stream().map(u -> u.getModelNo()).collect(Collectors.toSet());
|
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.collection.CollUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.nflg.mobilebroken.admin.constant.Constant;
|
import com.nflg.mobilebroken.admin.constant.Constant;
|
||||||
import com.nflg.mobilebroken.admin.pojo.dto.BasePartDTO;
|
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.AdminUserUtil;
|
||||||
import com.nflg.mobilebroken.common.util.UniqueSequenceGenerator;
|
import com.nflg.mobilebroken.common.util.UniqueSequenceGenerator;
|
||||||
import com.nflg.mobilebroken.repository.entity.Language;
|
import com.nflg.mobilebroken.common.util.VUtils;
|
||||||
import com.nflg.mobilebroken.repository.entity.TBaseLanguageData;
|
import com.nflg.mobilebroken.repository.entity.*;
|
||||||
import com.nflg.mobilebroken.repository.entity.TBasePart;
|
import com.nflg.mobilebroken.repository.service.*;
|
||||||
import com.nflg.mobilebroken.repository.service.ILanguageService;
|
|
||||||
import com.nflg.mobilebroken.repository.service.ITBaseLanguageDataService;
|
|
||||||
import com.nflg.mobilebroken.repository.service.ITBasePartService;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.ttzero.excel.entity.Column;
|
import org.ttzero.excel.entity.Column;
|
||||||
|
|
@ -25,6 +24,7 @@ import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -39,6 +39,12 @@ public class AdminBasePartService {
|
||||||
@Resource
|
@Resource
|
||||||
ITBasePartService partService;
|
ITBasePartService partService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
IDeviceComponentDetailService deviceComponentDetailService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
IDeviceComponentService deviceComponentService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -46,10 +52,14 @@ public class AdminBasePartService {
|
||||||
*
|
*
|
||||||
* @param basePartDTO
|
* @param basePartDTO
|
||||||
*/
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void save(BasePartDTO basePartDTO) {
|
public void save(BasePartDTO basePartDTO) {
|
||||||
//保存
|
//保存
|
||||||
TBasePart partEnt = Convert.convert(TBasePart.class, basePartDTO);
|
TBasePart partEnt = Convert.convert(TBasePart.class, basePartDTO);
|
||||||
if (null == basePartDTO.getId() || basePartDTO.getId() <=0) {
|
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.setPartNo(UniqueSequenceGenerator.generateCode(Constant.PartCodePrefix));
|
||||||
partEnt.setCreateBy(AdminUserUtil.getUserName());
|
partEnt.setCreateBy(AdminUserUtil.getUserName());
|
||||||
|
|
@ -58,8 +68,17 @@ public class AdminBasePartService {
|
||||||
// partEnt.setUpdateTime(LocalDateTime.now());
|
// partEnt.setUpdateTime(LocalDateTime.now());
|
||||||
|
|
||||||
} else { //修改
|
} 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.setUpdateBy(AdminUserUtil.getUserName());
|
||||||
partEnt.setUpdateTime(LocalDateTime.now());
|
partEnt.setUpdateTime(LocalDateTime.now());
|
||||||
|
//更新设备机型下的部门名称
|
||||||
|
updateDeviceComponentPartName(basePartDTO);
|
||||||
}
|
}
|
||||||
//删除语言
|
//删除语言
|
||||||
partService.saveOrUpdate(partEnt);
|
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() {
|
public List<String> buildExcelHeader() {
|
||||||
List<Language> allLanguage = languageService.lambdaQuery().eq(Language::getEnable, true).list();
|
List<Language> allLanguage = languageService.lambdaQuery().eq(Language::getEnable, true).list();
|
||||||
List<String> columnNames = new ArrayList<>();
|
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