diff --git a/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java b/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java index 9885d3f..225318b 100644 --- a/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java +++ b/diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java @@ -2,6 +2,8 @@ package com.mathvision.diet.service; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; import com.google.common.collect.Lists; @@ -13,12 +15,14 @@ import com.mathvision.diet.repository.MenuDishRepository; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.IndexedColors; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.OutputStream; -import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -110,7 +114,7 @@ public class MenuDishService { List> items = dishes.stream().map(dish -> { List item = dish.getIngredient(); if (item == null || item.size() < itemIndex) { - return Pair.of(dish.getName(), MenuDishItemDTO.builder().value(Maps.newHashMap()).build()); + return Pair.of("", MenuDishItemDTO.builder().value(Maps.newHashMap()).build()); } else { return Pair.of(dish.getName(), item.get(itemIndex - 1)); } @@ -121,20 +125,27 @@ public class MenuDishService { items.forEach(item -> { content.add(item.getKey()); content.add(keyName.getOrDefault(item.getValue().getKey(), item.getValue().getKey())); - allCrows.forEach(crow -> { - BigDecimal value = item.getValue().getValue().get(crow); - if (value != null) { - content.add(value); - } - }); + allCrows.forEach(crow -> content.add(item.getValue().getValue().get(crow))); }); contents.add(content); }); }); }); + + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + headWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); + headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); + + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + contentWriteCellStyle.setBorderLeft(BorderStyle.THIN); + contentWriteCellStyle.setBorderTop(BorderStyle.THIN); + contentWriteCellStyle.setBorderRight(BorderStyle.THIN); + contentWriteCellStyle.setBorderBottom(BorderStyle.THIN); + EasyExcel.write(outputStream).head(headers) + .registerWriteHandler(new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle)) .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) - .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)30,(short)20)) + .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)30, (short)20)) .excelType(ExcelTypeEnum.XLSX).sheet(menu.getName()).doWrite(contents); } -} +} \ No newline at end of file diff --git a/diet-core/src/main/java/com/mathvision/diet/service/NutritionService.java b/diet-core/src/main/java/com/mathvision/diet/service/NutritionService.java index 3f86259..2a977e1 100644 --- a/diet-core/src/main/java/com/mathvision/diet/service/NutritionService.java +++ b/diet-core/src/main/java/com/mathvision/diet/service/NutritionService.java @@ -1,5 +1,6 @@ package com.mathvision.diet.service; +import com.google.common.collect.Lists; import com.mathvision.diet.entity.Nutrition; import com.mathvision.diet.repository.NutritionRepository; import lombok.extern.slf4j.Slf4j; @@ -66,7 +67,14 @@ public class NutritionService { } public List query(Long vender, String name) { - return nutritionRepository.findAll().stream().filter(x -> (StringUtils.isBlank(name) || x.getName().contains(name)) && (vender == null || vender ==0 || x.getVendors().contains(vender))).collect(Collectors.toList()); + if (StringUtils.isBlank(name)) { + return Lists.newArrayList(); + } + List result = nutritionRepository.findByNameLike('%' + name + '%'); + if (vender != null && vender !=0) { + return result.stream().filter(x -> x.getVendors().contains(vender)).collect(Collectors.toList()); + } + return result; } public Page list(String name, PageRequest pageRequest) { diff --git a/diet-core/src/main/java/com/mathvision/diet/service/VenderService.java b/diet-core/src/main/java/com/mathvision/diet/service/VenderService.java index 4dcf171..a99e1e4 100644 --- a/diet-core/src/main/java/com/mathvision/diet/service/VenderService.java +++ b/diet-core/src/main/java/com/mathvision/diet/service/VenderService.java @@ -83,14 +83,14 @@ public class VenderService { if (CollectionUtils.isNotEmpty(vendors)) { return venderRepository.findByIdIn(vendors); } - return StringUtils.isNotBlank(keyword) ? venderRepository.findByStatusAndNameLikeOrderByNameDesc(true, keyword) : venderRepository.findByStatusOrderByNameAsc(true); + return StringUtils.isNotBlank(keyword) ? venderRepository.findByStatusAndNameLikeOrderByNameDesc(true, '%' + keyword + '%') : venderRepository.findByStatusOrderByNameAsc(true); } public Page pageVender(String keyword, VenderType type, PageRequest pageRequest) { if (type == null) { - return StringUtils.isBlank(keyword) ? venderRepository.findAll(pageRequest) : venderRepository.findByNameLikeOrderByIdDesc(keyword, pageRequest); + return StringUtils.isBlank(keyword) ? venderRepository.findAll(pageRequest) : venderRepository.findByNameLikeOrderByIdDesc('%' + keyword + '%', pageRequest); } else { - return StringUtils.isBlank(keyword) ? venderRepository.findByCategoryOrderByIdDesc(type, pageRequest) : venderRepository.findByCategoryAndNameLikeOrderByIdDesc(type, keyword, pageRequest); + return StringUtils.isBlank(keyword) ? venderRepository.findByCategoryOrderByIdDesc(type, pageRequest) : venderRepository.findByCategoryAndNameLikeOrderByIdDesc(type, '%' + keyword + '%', pageRequest); } } diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/NutritionRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/NutritionRepository.java index 7203909..1c0879b 100644 --- a/diet-dao/src/main/java/com/mathvision/diet/repository/NutritionRepository.java +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/NutritionRepository.java @@ -6,7 +6,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import java.util.List; + public interface NutritionRepository extends JpaRepository, JpaSpecificationExecutor { + List findByNameLike(String name); Page findByNameLikeOrderByIdDesc(String name, Pageable pageable); boolean existsByName(String name); Nutrition findByName(String name); diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/VenderRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/VenderRepository.java index 3d8594b..2df5b34 100644 --- a/diet-dao/src/main/java/com/mathvision/diet/repository/VenderRepository.java +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/VenderRepository.java @@ -19,7 +19,7 @@ public interface VenderRepository extends JpaRepository, JpaSpecif Page findByCategoryOrderByIdDesc(VenderType category, Pageable pageable); @Query("select new Vender(v.id, v.name, v.account, v.category) from Vender v where v.id in ?1") List findByIdIn(Collection ids); - @Query("select new Vender(v.id, v.name, v.account, v.category) from Vender v where v.status = ?1 and v.name like concat(?2, '%') order by v.name DESC") + @Query("select new Vender(v.id, v.name, v.account, v.category) from Vender v where v.status = ?1 and v.name like ?2 order by v.name DESC") List findByStatusAndNameLikeOrderByNameDesc(Boolean status, String name); @Query("select new Vender(v.id, v.name, v.account, v.category) from Vender v where v.status = ?1 order by v.name") List findByStatusOrderByNameAsc(Boolean status); diff --git a/diet-web/src/main/java/com/mathvision/diet/aspect/GlobalRequestAspect.java b/diet-web/src/main/java/com/mathvision/diet/aspect/GlobalRequestAspect.java index 832da69..6bd7954 100644 --- a/diet-web/src/main/java/com/mathvision/diet/aspect/GlobalRequestAspect.java +++ b/diet-web/src/main/java/com/mathvision/diet/aspect/GlobalRequestAspect.java @@ -58,7 +58,7 @@ public class GlobalRequestAspect implements HandlerInterceptor, WebMvcConfigurer @Override public void afterCompletion(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler, Exception ex) { - Session.clear();; + Session.clear(); } private boolean verifySession(HttpServletRequest request, HttpServletResponse response) { diff --git a/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java b/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java index 1a32a5e..79d895f 100644 --- a/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java +++ b/diet-web/src/main/java/com/mathvision/diet/controller/DishController.java @@ -64,7 +64,7 @@ public class DishController extends BaseController { Assert.isTrue(vendors.stream().allMatch(venderService::exists), "[[参数错误]请选择存在的单位!]"); Instant dateTime = Instant.now(); - dishService.add(vendors.stream().map(vender -> Dish.builder().name(name).vender(vender).marks(mark).month(month).icon(icon).ingredient(items).operate(getUid()).created(dateTime).modify(dateTime).build()).collect(Collectors.toList()), getUid()); + dishService.add(vendors.stream().map(vender -> Dish.builder().name(name).vender(vender).marks(mark).poly(poly).month(month).icon(icon).ingredient(items).operate(getUid()).created(dateTime).modify(dateTime).build()).collect(Collectors.toList()), getUid()); } @ResponseBody diff --git a/diet-web/src/main/java/com/mathvision/diet/controller/IconController.java b/diet-web/src/main/java/com/mathvision/diet/controller/IconController.java index 8b628c2..473454b 100644 --- a/diet-web/src/main/java/com/mathvision/diet/controller/IconController.java +++ b/diet-web/src/main/java/com/mathvision/diet/controller/IconController.java @@ -5,15 +5,15 @@ import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.util.Assert; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.nio.file.Paths; -@RequestMapping("/icon") +import static org.springframework.http.MediaType.IMAGE_JPEG_VALUE; + @Controller public class IconController extends BaseController { @@ -21,11 +21,20 @@ public class IconController extends BaseController { private String imagePath; @ResponseBody - @RequestMapping(method = RequestMethod.PUT) - public String addIngredient(@RequestParam MultipartFile file) throws Exception { + @RequestMapping(value = "/api/icon", method = RequestMethod.PUT) + public String icon(@RequestParam MultipartFile file) throws Exception { Assert.notNull(file, "[参数错误]请选择要上传的文件!"); String fileName = String.format("%s.%s", System.currentTimeMillis(), FilenameUtils.getExtension(file.getOriginalFilename())); FileUtils.copyInputStreamToFile(file.getInputStream(), Paths.get(imagePath, fileName).toFile()); return fileName; } + + @ResponseBody + @RequestMapping(value = "/icon/{filename}", method = RequestMethod.GET) + public void icon(@PathVariable("filename")String fileName) throws IOException { + HttpServletResponse response = getResponse(); + response.setContentType(IMAGE_JPEG_VALUE); + response.getOutputStream().write(FileUtils.readFileToByteArray(Paths.get(imagePath, fileName).toFile())); + response.flushBuffer(); + } } \ No newline at end of file diff --git a/diet-web/src/main/java/com/mathvision/diet/controller/NutritionController.java b/diet-web/src/main/java/com/mathvision/diet/controller/NutritionController.java index 0cabfec..71a4c8f 100644 --- a/diet-web/src/main/java/com/mathvision/diet/controller/NutritionController.java +++ b/diet-web/src/main/java/com/mathvision/diet/controller/NutritionController.java @@ -99,7 +99,7 @@ public class NutritionController extends BaseController { @ResponseBody @RequestMapping(value="select", method = RequestMethod.GET) - public Object query(@RequestParam(required = false) Long id, @RequestParam(required = false) String keyword, @RequestParam(required = false) Long vender) { + public Object query(@RequestParam(required = false) Long id, @RequestParam(required = false, value = "name") String keyword, @RequestParam(required = false) Long vender) { if (id != null) { return nutritionService.get(id); }