From 902a3937d6e8944c1de87c81790f887ecfdfdb46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 18 Jun 2025 17:49:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=A7=E5=93=81=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProductModelController.java | 218 ++++++++++++++++-- .../templates/ProductModelParamImport.xlsx | Bin 0 -> 11469 bytes nflg-mobilebroken-common/pom.xml | 1 - .../pojo/vo/ProductModelCompareInfoVO.java | 2 + .../pojo/vo/ProductPartInfoLanguageVO.java | 34 +++ .../common/util/EecExcelUtil.java | 14 +- .../controller/MobilebrokenController.java | 23 +- .../repository/mapper/ProductPartMapper.java | 3 + .../mapper/ProductTypeInfoMapper.java | 2 +- .../IProductModelParamsItemService.java | 2 +- .../service/IProductModelParamsService.java | 2 + .../service/IProductPartService.java | 3 + .../service/IProductTypeInfoService.java | 2 +- .../service/IProductTypeService.java | 2 +- .../service/impl/LanguageServiceImpl.java | 2 +- .../service/impl/ProductCaseServiceImpl.java | 9 +- .../service/impl/ProductHonorServiceImpl.java | 9 +- .../impl/ProductModelFileServiceImpl.java | 9 +- .../impl/ProductModelImageServiceImpl.java | 9 +- .../impl/ProductModelParamsServiceImpl.java | 29 +++ .../service/impl/ProductModelServiceImpl.java | 10 +- .../impl/ProductModelVideoServiceImpl.java | 9 +- .../service/impl/ProductPartServiceImpl.java | 6 + .../impl/ProductSeriesServiceImpl.java | 9 +- .../impl/ProductTypeInfoServiceImpl.java | 4 +- .../service/impl/ProductTypeServiceImpl.java | 13 +- .../resources/mapper/ProductHonorMapper.xml | 2 +- .../resources/mapper/ProductPartMapper.xml | 7 + .../mapper/ProductTypeInfoMapper.xml | 2 +- .../starter/config/MysqlDataSourceConfig.java | 5 +- pom.xml | 6 + 31 files changed, 382 insertions(+), 66 deletions(-) create mode 100644 nflg-mobilebroken-admin/src/main/resources/templates/ProductModelParamImport.xlsx create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoLanguageVO.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java index 09371101..28e188a2 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java @@ -1,6 +1,7 @@ package com.nflg.mobilebroken.admin.controller; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -21,8 +22,14 @@ import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.repository.entity.*; import com.nflg.mobilebroken.repository.service.*; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.core.io.ClassPathResource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.ttzero.excel.entity.TemplateSheet; +import org.ttzero.excel.entity.Workbook; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; @@ -30,6 +37,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.io.IOException; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -41,7 +49,7 @@ import java.util.stream.Collectors; public class ProductModelController extends ControllerBase{ @Resource - private IProductModelService productModelService; + private IProductModelService productModelService; @Resource private IProductModelIntroService productModelIntroService; @@ -251,6 +259,15 @@ public class ProductModelController extends ControllerBase{ return ApiResult.success(productModelParamsItemService.getList(modelParamsId)); } + /** + * 获取中文设备技术参数 + * @param modelId 机型id + */ + @GetMapping("/getCNParamsItems") + public ApiResult> getCNParamsItems(@RequestParam Integer modelId){ + return ApiResult.success(productModelParamsService.getCNList(modelId)); + } + /** * 添加设备技术参数指标 * @param request 请求参数 @@ -398,28 +415,195 @@ public class ProductModelController extends ControllerBase{ return ApiResult.success(request.getModelParamsId()); } + /** + * 下载导入设备技术参数项模板 + */ + @GetMapping("/downloadParamImportTemplate") + public void downloadParamImportTemplate(HttpServletResponse response) throws IOException { + EecExcelUtil.setResponseExcelHeader(response, "机型参数导入模版"); + ClassPathResource resource = new ClassPathResource("templates/ProductModelParamImport.xlsx"); + new Workbook() + .addSheet(new TemplateSheet(resource.getInputStream())) + .writeTo(response.getOutputStream()); + } + /** * 导出设备技术参数项 * @param modelParamsId 设备技术参数ID */ @GetMapping("/exportModelParamsItem") public void exportModelParamsItem(HttpServletResponse response, @Valid @RequestParam @NotNull Integer modelParamsId) throws IOException { - List vos = productModelParamsItemService.getList(modelParamsId); - List datas = vos.stream().map(vo -> vo.getItems() - .stream() - .map(item -> item.getItems().stream().map(t -> new ProductModelParamsExcelDTO() - .setLanguageCode(vo.getLanguageCode()) - .setIndexName(item.getIndexName()) - .setName(t.getName()) - .setValue(t.getValue()) - .setMain(t.getMain()) - .setCompare(t.getCompare())) - .collect(Collectors.toList())) - .flatMap(Collection::stream) - .collect(Collectors.toList())) - .flatMap(Collection::stream) - .collect(Collectors.toList()); - EecExcelUtil.export("设备技术参数", "sheet1", datas, response); + ProductModelParams params=productModelParamsService.getById(modelParamsId); + VUtils.trueThrowBusinessError(Objects.isNull(params)).throwMessage("无效的数据"); + ProductModel model = productModelService.getById(params.getModelId()); + VUtils.trueThrowBusinessError(Objects.isNull(model)).throwMessage("无效的数据"); + EecExcelUtil.setResponseExcelHeader(response, model.getNo() + "机型技术参数"); + List languages = languageService.getLanguages(); + int colCount = languages.size() * 3 + 2; + Set cellRangeAddresses = new HashSet<>(); + try (org.apache.poi.ss.usermodel.Workbook workbook = new XSSFWorkbook()) { + List paramsItems = productModelParamsItemService.lambdaQuery().eq(ProductModelParamsItem::getModelParamsId, modelParamsId).list(); + Sheet sheet = workbook.createSheet("sheet1"); + sheet.setVerticallyCenter(true); + sheet.setDefaultRowHeightInPoints(20); + CellStyle headerStyle = workbook.createCellStyle(); + headerStyle.setAlignment(HorizontalAlignment.CENTER); + headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); + headerStyle.setBorderTop(BorderStyle.THIN); + headerStyle.setBorderBottom(BorderStyle.THIN); + headerStyle.setBorderLeft(BorderStyle.THIN); + headerStyle.setBorderRight(BorderStyle.THIN); + CellStyle dataStyle = workbook.createCellStyle(); + dataStyle.setAlignment(HorizontalAlignment.LEFT); + dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); + dataStyle.setBorderTop(BorderStyle.THIN); + dataStyle.setBorderBottom(BorderStyle.THIN); + dataStyle.setBorderLeft(BorderStyle.THIN); + dataStyle.setBorderRight(BorderStyle.THIN); + Font headerFont = workbook.createFont(); + headerFont.setBold(true); + headerStyle.setFont(headerFont); + Row headerRow0 = sheet.createRow(0); + Cell cell0_0 = headerRow0.createCell(0); + cell0_0.setCellValue("机型技术参数"); + cell0_0.setCellStyle(headerStyle); + createEmptyCell(headerRow0,headerStyle,1, colCount - 1); + cellRangeAddresses.add(new CellRangeAddress(0, 0, 0, colCount - 1)); + Row headerRow1 = sheet.createRow(1); + Cell cell1_0 = headerRow1.createCell(0); + cell1_0.setCellValue(getRequiredText(workbook,"产品型号")); + cell1_0.setCellStyle(headerStyle); + Cell cell1_1 = headerRow1.createCell(1); + cell1_1.setCellValue(model.getNo()); + createEmptyCell(headerRow1,headerStyle,2, colCount - 1); + cellRangeAddresses.add(new CellRangeAddress(1, 1, 1, colCount - 1)); + Row headerRow2 = sheet.createRow(2); + Row headerRow3 = sheet.createRow(3); + AtomicInteger colStart = new AtomicInteger(); + AtomicInteger colEnd = new AtomicInteger(); + for (int i = 0; i < languages.size(); i++) { + Language language = languages.get(i); + if (i == 0) { + colEnd.set(3 + 2 - 1); + } else { + colStart.set(colEnd.get() + 1); + colEnd.addAndGet(3); + } + Cell cell_row2 = headerRow2.createCell(colStart.get()); + cell_row2.setCellValue(language.getName()); + cell_row2.setCellStyle(headerStyle); + createEmptyCell(headerRow2,headerStyle,colStart.get()+1, colEnd.get()); + cellRangeAddresses.add(new CellRangeAddress(2, 2, colStart.get(), colEnd.get())); + if (i == 0){ + Cell cell3_0 = headerRow3.createCell(0); + cell3_0.setCellStyle(headerStyle); + cell3_0.setCellValue(getRequiredText(workbook,"指标名称")); + Cell cell3_1 = headerRow3.createCell(1); + cell3_1.setCellStyle(headerStyle); + cell3_1.setCellValue(getRequiredText(workbook, "技术参数")); + Cell cell3_2 = headerRow3.createCell(2); + cell3_2.setCellStyle(headerStyle); + cell3_2.setCellValue(getRequiredText(workbook, "参数指标")); + Cell cell3_3 = headerRow3.createCell(3); + cell3_3.setCellStyle(headerStyle); + cell3_3.setCellValue(getRequiredText(workbook, "主要参数")); + Cell cell3_4 = headerRow3.createCell(4); + cell3_4.setCellStyle(headerStyle); + cell3_4.setCellValue(getRequiredText(workbook, "是否参与对比")); + } else { + Cell cell3_0 = headerRow3.createCell(colStart.get()); + cell3_0.setCellStyle(headerStyle); + cell3_0.setCellValue("指标名称"); + Cell cell3_1 = headerRow3.createCell(colStart.get() + 1); + cell3_1.setCellStyle(headerStyle); + cell3_1.setCellValue("技术参数"); + Cell cell3_2 = headerRow3.createCell(colStart.get() + 2); + cell3_2.setCellStyle(headerStyle); + cell3_2.setCellValue("参数指标"); + } + } + if (CollectionUtil.isNotEmpty(paramsItems)){ + AtomicInteger rowIndex= new AtomicInteger(4); + List cnItems=paramsItems.stream().filter(item -> StrUtil.equals(item.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE)).collect(Collectors.toList()); + Map> itemMap=cnItems.stream().collect(Collectors.groupingBy(ProductModelParamsItem::getIndexName)); + AtomicInteger row= new AtomicInteger(rowIndex.get()); + itemMap.forEach((indexName, itemData) -> { + itemData.forEach(mit->{ + Row dataRow = sheet.createRow(rowIndex.getAndIncrement()); + List rowItem = paramsItems.stream() + .filter(item -> StrUtil.equals(item.getBatchNumber(), mit.getBatchNumber())) + .collect(Collectors.toList()); + for (int i = 0; i < languages.size(); i++) { + Language language = languages.get(i); + ProductModelParamsItem litem=rowItem.stream().filter(item -> StrUtil.equals(item.getLanguageCode(),language.getCode())).findFirst().orElse(null); + if (Objects.nonNull(litem)) { + if (i == 0) { + cellRangeAddresses.add(new CellRangeAddress(row.get(), row.get() + itemData.size()-1, 0, 0)); + colStart.set(0); + colEnd.set(3 + 2 - 1); + Cell dataCell0 = dataRow.createCell(0); + dataCell0.setCellValue(litem.getIndexName()); + dataCell0.setCellStyle(dataStyle); + Cell dataCell1 = dataRow.createCell(1); + dataCell1.setCellValue(litem.getName()); + dataCell1.setCellStyle(dataStyle); + Cell dataCell2 = dataRow.createCell(2); + dataCell2.setCellValue(litem.getValue()); + dataCell2.setCellStyle(dataStyle); + Cell dataCell3 = dataRow.createCell(3); + dataCell3.setCellValue(litem.getMain() ? "是" : "否"); + dataCell3.setCellStyle(dataStyle); + Cell dataCell4 = dataRow.createCell(4); + dataCell4.setCellValue(litem.getCompare() ? "是" : "否"); + dataCell4.setCellStyle(dataStyle); + } else { + colStart.set(colEnd.get() + 1); + colEnd.addAndGet(3); + cellRangeAddresses.add(new CellRangeAddress(row.get(), row.get() +itemData.size()-1, colStart.get(),colStart.get())); + Cell dataCell0 = dataRow.createCell(colStart.get()); + dataCell0.setCellValue(litem.getIndexName()); + dataCell0.setCellStyle(dataStyle); + Cell dataCell1 = dataRow.createCell(colStart.get() + 1); + dataCell1.setCellValue(litem.getName()); + dataCell1.setCellStyle(dataStyle); + Cell dataCell2 = dataRow.createCell(colStart.get() + 2); + dataCell2.setCellValue(litem.getValue()); + dataCell2.setCellStyle(dataStyle); + } + } + } + }); + row.addAndGet(itemData.size()); + }); + + } + for (int i = 0; i < colCount; i++) { +// sheet.autoSizeColumn(i); + sheet.setColumnWidth(i, 15 * 256); + } + cellRangeAddresses.forEach(sheet::addMergedRegion); + workbook.write(response.getOutputStream()); + } + } + + private void createEmptyCell(Row row,CellStyle style,int colStart,int colEnd){ + for (int colIndex = colStart; colIndex <= colEnd; colIndex++){ + Cell cell=row.createCell(colIndex); + cell.setCellStyle(style); + cell.setCellValue(""); + } + } + + private RichTextString getRequiredText(org.apache.poi.ss.usermodel.Workbook workbook,String text){ + RichTextString richString = workbook.getCreationHelper().createRichTextString("*"+text); + Font boldFont = workbook.createFont(); + boldFont.setBold(true); + Font redFont = workbook.createFont(); + redFont.setColor(IndexedColors.RED.getIndex()); + redFont.setBold(true); + richString.applyFont(boldFont); + richString.applyFont(0, 1, redFont); + return richString; } /** diff --git a/nflg-mobilebroken-admin/src/main/resources/templates/ProductModelParamImport.xlsx b/nflg-mobilebroken-admin/src/main/resources/templates/ProductModelParamImport.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8d1d1b98f362ba966bec915a736935a482a431eb GIT binary patch literal 11469 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 literal 0 HcmV?d00001 diff --git a/nflg-mobilebroken-common/pom.xml b/nflg-mobilebroken-common/pom.xml index 89e7bebb..85bfda79 100644 --- a/nflg-mobilebroken-common/pom.xml +++ b/nflg-mobilebroken-common/pom.xml @@ -40,7 +40,6 @@ org.ttzero eec - 0.5.21 com.baomidou diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelCompareInfoVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelCompareInfoVO.java index d058265d..9d758332 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelCompareInfoVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelCompareInfoVO.java @@ -9,6 +9,8 @@ import java.util.List; @Accessors(chain = true) public class ProductModelCompareInfoVO { + private Integer id; + /** * 机型型号 */ diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoLanguageVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoLanguageVO.java new file mode 100644 index 00000000..f3528581 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoLanguageVO.java @@ -0,0 +1,34 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +@Data +public class ProductPartInfoLanguageVO { + + /** + * 部件名称 + */ + private String name; + + /** + * 类型,0-视频;1:图片 + */ + private Integer type; + + /** + * 图片地址 + */ + private String image; + + /** + * 视频地址 + */ + private String video; + + /** + * 部件介绍 + */ + @TableField(value = "`desc`") + private String desc; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java index e8761375..aa2ae418 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/EecExcelUtil.java @@ -15,8 +15,8 @@ import org.ttzero.excel.reader.Sheet; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -32,9 +32,9 @@ import java.util.stream.Collectors; */ public class EecExcelUtil { - public static void setResponseExcelHeader(HttpServletResponse response, String fileName) throws UnsupportedEncodingException { + public static void setResponseExcelHeader(HttpServletResponse response, String fileName) { response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8")); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", StandardCharsets.UTF_8)); } public static void eecExcel(String fileName, List sheets, HttpServletResponse response) throws IOException { @@ -69,6 +69,14 @@ public class EecExcelUtil { .writeTo(response.getOutputStream()); } + public static void export(String fileName, org.ttzero.excel.entity.Sheet sheet, HttpServletResponse response) throws IOException { + setResponseExcelHeader(response, fileName); + new Workbook() + .setAutoSize(true) + .addSheet(sheet) + .writeTo(response.getOutputStream()); + } + public static List readTo(InputStream stream, Class clazz) { try (ExcelReader reader = ExcelReader.read(stream)) { return reader.sheet(0) // 读取第1个Sheet页 diff --git a/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/MobilebrokenController.java b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/MobilebrokenController.java index 2d3b005d..a432115a 100644 --- a/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/MobilebrokenController.java +++ b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/MobilebrokenController.java @@ -4,10 +4,7 @@ import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.request.BatchDeleteRequest; import com.nflg.mobilebroken.common.pojo.vo.*; import com.nflg.mobilebroken.common.util.MultilingualUtil; -import com.nflg.mobilebroken.repository.service.IProductMobilebrokenIntroService; -import com.nflg.mobilebroken.repository.service.IProductModelService; -import com.nflg.mobilebroken.repository.service.IProductSeriesService; -import com.nflg.mobilebroken.repository.service.IProductTypeService; +import com.nflg.mobilebroken.repository.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -36,6 +33,9 @@ public class MobilebrokenController extends BaseController{ @Resource private IProductMobilebrokenIntroService productMobilebrokenIntroService; + @Resource + private IProductPartService productPartService; + /** * 获取移动破介绍 */ @@ -66,11 +66,11 @@ public class MobilebrokenController extends BaseController{ /** * 获取产品类型详情 - * @param typeId 产品类型id + * @param typeNumber 产品类型批次号 */ @GetMapping("/getTypeInfo") - public ApiResult getTypeInfo(@Valid @RequestParam @NotNull Integer typeId){ - return ApiResult.success(productTypeService.getInfoByLanguage(typeId,MultilingualUtil.getLanguage())); + public ApiResult getTypeInfo(@Valid @RequestParam @NotNull String typeNumber){ + return ApiResult.success(productTypeService.getInfoByLanguage(typeNumber,MultilingualUtil.getLanguage())); } /** @@ -104,6 +104,15 @@ public class MobilebrokenController extends BaseController{ return ApiResult.success(productModelService.getInfo(modelId,MultilingualUtil.getLanguage())); } + /** + * 获取部件详情 + * @param id 产品部件id + */ + @GetMapping("/getPartInfo") + public ApiResult getPartInfo(@Valid @RequestParam @NotNull Integer id) { + return ApiResult.success(productPartService.getInfo(id,MultilingualUtil.getLanguage())); + } + /** * 机型比较 * @param request 请求参数 diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java index e11c6b7d..af9a69f5 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java @@ -3,6 +3,7 @@ package com.nflg.mobilebroken.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.mobilebroken.common.pojo.request.ProductPartSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoLanguageVO; import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoVO; import com.nflg.mobilebroken.common.pojo.vo.ProductPartSearchVO; import com.nflg.mobilebroken.repository.entity.ProductPart; @@ -20,4 +21,6 @@ public interface ProductPartMapper extends BaseMapper { Page getList(ProductPartSearchRequest request, Page page); ProductPartInfoVO getInfo(Integer partId); + + ProductPartInfoLanguageVO getInfoByLanguage(Integer partId,String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java index af9aa479..0497174f 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java @@ -19,5 +19,5 @@ public interface ProductTypeInfoMapper extends BaseMapper { List getInfo(Integer typeId); - ProductTypeLanguageInfoVO getInfoByLanguage(Integer typeId, String language); + ProductTypeLanguageInfoVO getInfoByLanguage(String typeNumber, String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsItemService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsItemService.java index 07451286..daa48547 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsItemService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsItemService.java @@ -1,11 +1,11 @@ package com.nflg.mobilebroken.repository.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.mobilebroken.common.pojo.dto.ProductModelParamsExcelDTO; import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.vo.ProductModelMainParamsItemVO; import com.nflg.mobilebroken.common.pojo.vo.ProductModelParamsItemVO; import com.nflg.mobilebroken.repository.entity.ProductModelParamsItem; -import com.baomidou.mybatisplus.extension.service.IService; import javax.validation.Valid; import javax.validation.constraints.NotEmpty; diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java index fa4458d8..b85cc169 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java @@ -47,4 +47,6 @@ public interface IProductModelParamsService extends IService void copyItems(Integer oldId, Integer newId); List getAListByLanguage(Integer modelId, String language); + + List getCNList(Integer modelId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java index c4714262..66c385fe 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java @@ -3,6 +3,7 @@ package com.nflg.mobilebroken.repository.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.mobilebroken.common.pojo.request.*; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoLanguageVO; import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoVO; import com.nflg.mobilebroken.common.pojo.vo.ProductPartSearchVO; import com.nflg.mobilebroken.repository.entity.ProductPart; @@ -28,6 +29,8 @@ public interface IProductPartService extends IService { ProductPartInfoVO getInfo(@Valid @NotNull Integer partId); + ProductPartInfoLanguageVO getInfo(@Valid @NotNull Integer partId, String language); + void enable(@Valid EnableRequest request); void delete(@Valid BatchDeleteRequest request); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java index 94e3c895..33019fed 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java @@ -28,5 +28,5 @@ public interface IProductTypeInfoService extends IService { void delete(@NotEmpty List ids); - ProductTypeLanguageInfoVO getInfoByLanguage(Integer typeId, String language); + ProductTypeLanguageInfoVO getInfoByLanguage(String typeNumber, String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java index 83b03651..07627e23 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java @@ -48,5 +48,5 @@ public interface IProductTypeService extends IService { List getFilesByLanguage(@Valid @NotNull Integer moduleId, String seriesNumber, String language); - ProductTypeLanguageInfoVO getInfoByLanguage(@Valid @NotNull Integer typeId, String language); + ProductTypeLanguageInfoVO getInfoByLanguage(@Valid @NotNull String typeNumber, String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/LanguageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/LanguageServiceImpl.java index 6027cbcb..2aeaebd9 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/LanguageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/LanguageServiceImpl.java @@ -23,7 +23,7 @@ public class LanguageServiceImpl extends ServiceImpl i @Override public List getLanguages() { - return lambdaQuery().eq(Language::getEnable,true).list(); + return lambdaQuery().eq(Language::getEnable,true).orderByDesc(Language::getSort).list(); } @Override diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java index e293ea2e..d8a67224 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java @@ -164,10 +164,13 @@ public class ProductCaseServiceImpl extends ServiceImpl getCNList(Integer modelId) { + ProductModelParams modelParams=lambdaQuery().eq(ProductModelParams::getModelId, modelId) + .ne(ProductModelParams::getState, PublishState.Obsolete.getState()) + .orderByDesc(ProductModelParams::getState) + .last("Limit 1") + .one(); + if (Objects.isNull(modelParams)){ + return Collections.emptyList(); + } + List datas = productModelParamsItemService.lambdaQuery() + .eq(ProductModelParamsItem::getModelParamsId, modelParams.getId()) + .eq(ProductModelParamsItem::getLanguageCode, Constant.DEFAULT_LANGUAGE_CODE) + .list(); + List vos = new ArrayList<>(); + Map> itemMap = datas.stream().collect(Collectors.groupingBy(ProductModelParamsItem::getIndexName)); + itemMap.forEach((indexName, itemData) -> { + ProductModelMainParamsItemChildrenVO ivo=new ProductModelMainParamsItemChildrenVO() + .setIndexName(indexName) + .setItems(itemData.stream() + .filter(pi -> StrUtil.isNotBlank(pi.getName())) + .map(pi -> Convert.convert(ProductParamsItemVO.class, pi)) + .collect(Collectors.toList())); + vos.add(ivo); + }); + return vos; + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java index f236ea18..28923ce8 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java @@ -250,10 +250,13 @@ public class ProductModelServiceImpl extends ServiceImpl + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml index a456e476..4c00907e 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml @@ -10,6 +10,6 @@ select pti.* from product_type pt inner join product_type_info pti on pt.id=pti.type_id - where pt.state=1 and pt.enable=1 and pt.id=#{typeId} and pti.language_code=#{language} + where pt.state=1 and pt.enable=1 and pt.batch_number=#{typeNumber} and pti.language_code=#{language} \ No newline at end of file diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/MysqlDataSourceConfig.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/MysqlDataSourceConfig.java index 6ca9ca15..7dd3f70e 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/MysqlDataSourceConfig.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/MysqlDataSourceConfig.java @@ -10,7 +10,6 @@ import com.nflg.mobilebroken.starter.handler.UTCLocalDateTimeTypeHandler; import com.nflg.mobilebroken.starter.handler.UTCLocalDateTypeHandler; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.type.TypeHandlerRegistry; -import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -26,10 +25,10 @@ import java.time.LocalDateTime; @Configuration @EnableTransactionManagement -@MapperScan(basePackages = MysqlDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory") +//@MapperScan(basePackages = MysqlDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory") public class MysqlDataSourceConfig { - static final String PACKAGE = "com.nflg.mobilebroken.repository.mapper"; +// static final String PACKAGE = "com.nflg.mobilebroken.repository.mapper"; static final String MAPPER_LOCATION = "classpath*:mapper/**/*.xml"; /** diff --git a/pom.xml b/pom.xml index a39dd11c..122ac1db 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ 4.7.0 3.5.3 3.17.4 + 0.5.24 @@ -172,6 +173,11 @@ aliyun-sdk-oss ${oss.version} + + org.ttzero + eec + ${eec.version} +