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 00000000..8d1d1b98 Binary files /dev/null and b/nflg-mobilebroken-admin/src/main/resources/templates/ProductModelParamImport.xlsx differ 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} +