feat: 产品中心
This commit is contained in:
parent
13df05f316
commit
902a3937d6
|
|
@ -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<List<ProductModelMainParamsItemChildrenVO>> 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<ProductModelParamsItemVO> vos = productModelParamsItemService.getList(modelParamsId);
|
||||
List<ProductModelParamsExcelDTO> 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<Language> languages = languageService.getLanguages();
|
||||
int colCount = languages.size() * 3 + 2;
|
||||
Set<CellRangeAddress> cellRangeAddresses = new HashSet<>();
|
||||
try (org.apache.poi.ss.usermodel.Workbook workbook = new XSSFWorkbook()) {
|
||||
List<ProductModelParamsItem> 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<ProductModelParamsItem> cnItems=paramsItems.stream().filter(item -> StrUtil.equals(item.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE)).collect(Collectors.toList());
|
||||
Map<String, List<ProductModelParamsItem>> 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<ProductModelParamsItem> 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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -40,7 +40,6 @@
|
|||
<dependency>
|
||||
<groupId>org.ttzero</groupId>
|
||||
<artifactId>eec</artifactId>
|
||||
<version>0.5.21</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import java.util.List;
|
|||
@Accessors(chain = true)
|
||||
public class ProductModelCompareInfoVO {
|
||||
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 机型型号
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<ListSheet> sheets, HttpServletResponse response) throws IOException {
|
||||
|
|
@ -69,6 +69,14 @@ public class EecExcelUtil {
|
|||
.writeTo(response.getOutputStream());
|
||||
}
|
||||
|
||||
public static <T> 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 <T> List<T> readTo(InputStream stream, Class<T> clazz) {
|
||||
try (ExcelReader reader = ExcelReader.read(stream)) {
|
||||
return reader.sheet(0) // 读取第1个Sheet页
|
||||
|
|
|
|||
|
|
@ -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<ProductTypeLanguageInfoVO> getTypeInfo(@Valid @RequestParam @NotNull Integer typeId){
|
||||
return ApiResult.success(productTypeService.getInfoByLanguage(typeId,MultilingualUtil.getLanguage()));
|
||||
public ApiResult<ProductTypeLanguageInfoVO> 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<ProductPartInfoLanguageVO> getPartInfo(@Valid @RequestParam @NotNull Integer id) {
|
||||
return ApiResult.success(productPartService.getInfo(id,MultilingualUtil.getLanguage()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 机型比较
|
||||
* @param request 请求参数
|
||||
|
|
|
|||
|
|
@ -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<ProductPart> {
|
|||
Page<ProductPartSearchVO> getList(ProductPartSearchRequest request, Page<?> page);
|
||||
|
||||
ProductPartInfoVO getInfo(Integer partId);
|
||||
|
||||
ProductPartInfoLanguageVO getInfoByLanguage(Integer partId,String language);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,5 +19,5 @@ public interface ProductTypeInfoMapper extends BaseMapper<ProductTypeInfo> {
|
|||
|
||||
List<ProductTypeInfoAddRequest> getInfo(Integer typeId);
|
||||
|
||||
ProductTypeLanguageInfoVO getInfoByLanguage(Integer typeId, String language);
|
||||
ProductTypeLanguageInfoVO getInfoByLanguage(String typeNumber, String language);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -47,4 +47,6 @@ public interface IProductModelParamsService extends IService<ProductModelParams>
|
|||
void copyItems(Integer oldId, Integer newId);
|
||||
|
||||
List<ProductModelMainParamsItemChildrenVO> getAListByLanguage(Integer modelId, String language);
|
||||
|
||||
List<ProductModelMainParamsItemChildrenVO> getCNList(Integer modelId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<ProductPart> {
|
|||
|
||||
ProductPartInfoVO getInfo(@Valid @NotNull Integer partId);
|
||||
|
||||
ProductPartInfoLanguageVO getInfo(@Valid @NotNull Integer partId, String language);
|
||||
|
||||
void enable(@Valid EnableRequest request);
|
||||
|
||||
void delete(@Valid BatchDeleteRequest request);
|
||||
|
|
|
|||
|
|
@ -28,5 +28,5 @@ public interface IProductTypeInfoService extends IService<ProductTypeInfo> {
|
|||
|
||||
void delete(@NotEmpty List<Integer> ids);
|
||||
|
||||
ProductTypeLanguageInfoVO getInfoByLanguage(Integer typeId, String language);
|
||||
ProductTypeLanguageInfoVO getInfoByLanguage(String typeNumber, String language);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,5 +48,5 @@ public interface IProductTypeService extends IService<ProductType> {
|
|||
|
||||
List<ProductFileVO> 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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public class LanguageServiceImpl extends ServiceImpl<LanguageMapper, Language> i
|
|||
|
||||
@Override
|
||||
public List<Language> getLanguages() {
|
||||
return lambdaQuery().eq(Language::getEnable,true).list();
|
||||
return lambdaQuery().eq(Language::getEnable,true).orderByDesc(Language::getSort).list();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -164,10 +164,13 @@ public class ProductCaseServiceImpl extends ServiceImpl<ProductCaseMapper, Produ
|
|||
.orderByDesc(ProductCase::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,10 +128,13 @@ public class ProductHonorServiceImpl extends ServiceImpl<ProductHonorMapper, Pro
|
|||
.orderByDesc(ProductHonor::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,10 +152,13 @@ public class ProductModelFileServiceImpl extends ServiceImpl<ProductModelFileMap
|
|||
.orderByDesc(ProductModelFile::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,10 +109,13 @@ public class ProductModelImageServiceImpl extends ServiceImpl<ProductModelImageM
|
|||
.orderByDesc(ProductModelImage::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nflg.mobilebroken.repository.service.impl;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
|
@ -206,4 +207,32 @@ public class ProductModelParamsServiceImpl extends ServiceImpl<ProductModelParam
|
|||
});
|
||||
return vos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProductModelMainParamsItemChildrenVO> 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<ProductModelParamsItem> datas = productModelParamsItemService.lambdaQuery()
|
||||
.eq(ProductModelParamsItem::getModelParamsId, modelParams.getId())
|
||||
.eq(ProductModelParamsItem::getLanguageCode, Constant.DEFAULT_LANGUAGE_CODE)
|
||||
.list();
|
||||
List<ProductModelMainParamsItemChildrenVO> vos = new ArrayList<>();
|
||||
Map<String, List<ProductModelParamsItem>> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -250,10 +250,13 @@ public class ProductModelServiceImpl extends ServiceImpl<ProductModelMapper, Pro
|
|||
.orderByDesc(ProductModel::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
@ -394,6 +397,7 @@ public class ProductModelServiceImpl extends ServiceImpl<ProductModelMapper, Pro
|
|||
ProductModel productModel = getById(modelId);
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(productModel)).throwMessage("无效的数据");
|
||||
return new ProductModelCompareInfoVO()
|
||||
.setId(productModel.getId())
|
||||
.setNo(productModel.getNo())
|
||||
.setImage(productModel.getImage())
|
||||
.setParams(productPartParamsService.getAllListByLanguage(modelId, language));
|
||||
|
|
|
|||
|
|
@ -130,10 +130,13 @@ public class ProductModelVideoServiceImpl extends ServiceImpl<ProductModelVideoM
|
|||
.orderByDesc(ProductModelVideo::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
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.common.util.AdminUserUtil;
|
||||
|
|
@ -86,6 +87,11 @@ public class ProductPartServiceImpl extends ServiceImpl<ProductPartMapper, Produ
|
|||
return part;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProductPartInfoLanguageVO getInfo(Integer partId, String language) {
|
||||
return baseMapper.getInfoByLanguage(partId, language);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable(EnableRequest request) {
|
||||
lambdaUpdate()
|
||||
|
|
|
|||
|
|
@ -166,10 +166,13 @@ public class ProductSeriesServiceImpl extends ServiceImpl<ProductSeriesMapper, P
|
|||
.orderByDesc(ProductSeries::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ public class ProductTypeInfoServiceImpl extends ServiceImpl<ProductTypeInfoMappe
|
|||
}
|
||||
|
||||
@Override
|
||||
public ProductTypeLanguageInfoVO getInfoByLanguage(Integer typeId, String language) {
|
||||
return baseMapper.getInfoByLanguage(typeId, language);
|
||||
public ProductTypeLanguageInfoVO getInfoByLanguage(String typeNumber, String language) {
|
||||
return baseMapper.getInfoByLanguage(typeNumber, language);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -209,10 +209,13 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
|
|||
.orderByDesc(ProductType::getPublishTime)
|
||||
.last("Limit 1")
|
||||
.one();
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(obsolete)).throwMessage("不能取消该发布");
|
||||
if (Objects.nonNull(obsolete)) {
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
obsolete.setPublishBy(AdminUserUtil.getUserName());
|
||||
obsolete.setPublishTime(LocalDateTime.now());
|
||||
updateById(obsolete);
|
||||
}
|
||||
info.setState(PublishState.Obsolete.getState());
|
||||
obsolete.setState(PublishState.Published.getState());
|
||||
updateById(obsolete);
|
||||
}
|
||||
updateById(info);
|
||||
}
|
||||
|
|
@ -305,8 +308,8 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
|
|||
}
|
||||
|
||||
@Override
|
||||
public ProductTypeLanguageInfoVO getInfoByLanguage(Integer typeId, String language) {
|
||||
return productTypeInfoService.getInfoByLanguage(typeId,language);
|
||||
public ProductTypeLanguageInfoVO getInfoByLanguage(String typeNumber, String language) {
|
||||
return productTypeInfoService.getInfoByLanguage(typeNumber,language);
|
||||
}
|
||||
|
||||
private void delete(Integer typeId){
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
</select>
|
||||
|
||||
<select id="get" resultType="com.nflg.mobilebroken.common.pojo.vo.ProductHonorVO">
|
||||
SELECT YEAR(ph.obtaining_time) AS 'year',ph.title,phi.image
|
||||
SELECT YEAR(ph.obtaining_time) AS 'year',phi.title,phi.image
|
||||
FROM product_honor ph
|
||||
LEFT JOIN product_honor_info phi ON phi.honor_id=ph.id AND phi.language_code=#{language}
|
||||
WHERE ph.enable=1 AND ph.state=1
|
||||
|
|
|
|||
|
|
@ -26,4 +26,11 @@
|
|||
LEFT JOIN product_attr pa on pp.attr_id=pa.id
|
||||
WHERE pp.id=#{partId}
|
||||
</select>
|
||||
|
||||
<select id="getInfoByLanguage" resultType="com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoLanguageVO">
|
||||
select ppi.*
|
||||
from product_part pp
|
||||
inner join product_part_info ppi on pp.id=ppi.part_id
|
||||
where pp.enable=1 and pp.id=#{partId} and ppi.language_code=#{language}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -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";
|
||||
|
||||
/**
|
||||
|
|
|
|||
6
pom.xml
6
pom.xml
|
|
@ -43,6 +43,7 @@
|
|||
<weixin.version>4.7.0</weixin.version>
|
||||
<zxing.version>3.5.3</zxing.version>
|
||||
<oss.version>3.17.4</oss.version>
|
||||
<eec.version>0.5.24</eec.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
@ -172,6 +173,11 @@
|
|||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
<version>${oss.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ttzero</groupId>
|
||||
<artifactId>eec</artifactId>
|
||||
<version>${eec.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue