diff --git a/pom.xml b/pom.xml index 25b1f63..fd39473 100644 --- a/pom.xml +++ b/pom.xml @@ -137,6 +137,21 @@ true + + org.apache.maven.plugins + maven-resources-plugin + + + xlsx + xls + zip + cer + pfx + py + keystore + + + diff --git a/web/src/main/java/com/zhehekeji/web/controller/CategoryController.java b/web/src/main/java/com/zhehekeji/web/controller/CategoryController.java index b115b49..db68c7a 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CategoryController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CategoryController.java @@ -7,11 +7,16 @@ import com.zhehekeji.web.pojo.category.PageSearch; import com.zhehekeji.web.service.CategoryService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.core.io.ClassPathResource; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; import java.util.List; @Api(value = "category",tags = "分类管理") @@ -62,4 +67,26 @@ public class CategoryController { categoryService.del(id); return Result.success(); } + + @GetMapping("/export/model") + @ApiOperation(value = "品规模板下载") + public void download(HttpServletResponse response) throws IOException { + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[4096]; + int n; + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + String fileName = URLEncoder.encode("品规模板", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename="+fileName+".xlsx"); + ClassPathResource classPathResource = new ClassPathResource("品规模板.xlsx"); + InputStream in = classPathResource.getInputStream(); + while ((n = in.read(buffer)) > 0) { + os.write(buffer, 0, n); + } + os.flush(); + os.close(); + response.flushBuffer(); + + } } diff --git a/web/src/main/java/com/zhehekeji/web/controller/StockController.java b/web/src/main/java/com/zhehekeji/web/controller/StockController.java index feff60b..46dd5ec 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/StockController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/StockController.java @@ -13,20 +13,21 @@ import com.zhehekeji.web.pojo.stock.StockExportExcel; import com.zhehekeji.web.service.StockService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.core.io.ClassPathResource; +import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; -@Api(value = "Stock",tags = "库存管理") +@Api(value = "Stock", tags = "库存管理") @RestController @RequestMapping("/stock") public class StockController { @@ -38,20 +39,42 @@ public class StockController { @PostMapping("/import") @ApiOperation(value = "库存导入") - public Result upload(MultipartFile file){ + public Result upload(MultipartFile file) { stockService.importExcel(file); return Result.success(); } + @GetMapping("/export/model") + @ApiOperation(value = "库存模板下载") + public void download(HttpServletResponse response) throws IOException { + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[4096]; + int n; + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + String fileName = URLEncoder.encode("库存模板", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename="+fileName+".xlsx"); + ClassPathResource classPathResource = new ClassPathResource("库存模板.xlsx"); + InputStream in = classPathResource.getInputStream(); + while ((n = in.read(buffer)) > 0) { + os.write(buffer, 0, n); + } + os.flush(); + os.close(); + response.flushBuffer(); + + } + @GetMapping("/list") @ApiOperation(value = "盘点页面 返回map key:货架号 value:库存信息") - public Result>> stockByStreet(@RequestParam(required = true) Integer streetId){ + public Result>> stockByStreet(@RequestParam(required = true) Integer streetId) { return Result.success(stockService.stocksByStreetId(streetId)); } @PostMapping("/page") @ApiOperation(value = "库存列表") - public Result> page(@RequestBody PageSearch pageSearch){ + public Result> page(@RequestBody PageSearch pageSearch) { return Result.success(stockService.page(pageSearch)); } @@ -70,29 +93,29 @@ public class StockController { @ApiOperation(value = "复核页面的核对信息") @RequestMapping(value = "/info", method = RequestMethod.POST) - public Result stockInfo(@RequestBody StockCheck stockCheck){ + public Result stockInfo(@RequestBody StockCheck stockCheck) { validatorUtil.validate(stockCheck); return Result.success(stockService.stockInfo(stockCheck)); } @ApiOperation(value = "复核正确") @RequestMapping(value = "/checkCorrect", method = RequestMethod.POST) - public Result check(@RequestBody StockCheck stockCheck){ + public Result check(@RequestBody StockCheck stockCheck) { validatorUtil.validate(stockCheck); return Result.success(stockService.checkCorrect(stockCheck)); } @ApiOperation(value = "人工复核") @RequestMapping(value = "/checkByMan", method = RequestMethod.POST) - public Result checkByMan(@RequestBody CheckByMan checkByMan){ + public Result checkByMan(@RequestBody CheckByMan checkByMan) { validatorUtil.validate(checkByMan); return Result.success(stockService.checkByMan(checkByMan)); } @ApiOperation(value = "slow") @RequestMapping(value = "/slow", method = RequestMethod.GET) - public Result slow(Integer ptzId,Integer cameraId){ - PtzControlModule.toPtzSlow(ptzId,cameraId); + public Result slow(Integer ptzId, Integer cameraId) { + PtzControlModule.toPtzSlow(ptzId, cameraId); return Result.success(); } } diff --git a/web/src/main/java/com/zhehekeji/web/entity/Category.java b/web/src/main/java/com/zhehekeji/web/entity/Category.java index ce1679e..9baca87 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Category.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Category.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.util.CollectionUtils; @@ -21,6 +22,7 @@ public class Category { private String name; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; } diff --git a/web/src/main/java/com/zhehekeji/web/entity/Stock.java b/web/src/main/java/com/zhehekeji/web/entity/Stock.java index 13a47a6..5df24a1 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Stock.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Stock.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -45,6 +46,7 @@ public class Stock { @ApiModelProperty("操作后的图片") private String overoperationPic; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime exportTime; diff --git a/web/src/main/java/com/zhehekeji/web/service/StockService.java b/web/src/main/java/com/zhehekeji/web/service/StockService.java index 4b21d0e..b1f93c9 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StockService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StockService.java @@ -41,19 +41,24 @@ public class StockService { public void importExcel(MultipartFile file) { log.info("import excel stock"); - Thread thread = new Thread( - new Runnable() { - @Override - public void run() { - try { - EasyExcel.read(file.getInputStream(), StockExcel.class, new StockImport(stockMapper)).sheet().doRead(); - } catch (IOException e) { - log.error("库存导入error:{}", e); - } - } - } - ); - thread.start(); + try { + EasyExcel.read(file.getInputStream(), StockExcel.class, new StockImport(stockMapper)).sheet().doRead(); + }catch (Exception e){ + Assert.isTrue(false,"导入出错"); + } +// +// Thread thread = new Thread( +// new Runnable() { +// @Override +// public void run() { +// try { +// } catch (IOException e) { +// log.error("库存导入error:{}", e); +// } +// } +// } +// ); +// thread.start(); } /** diff --git a/web/src/main/resources/品规模板.xlsx b/web/src/main/resources/品规模板.xlsx new file mode 100644 index 0000000..c379a24 Binary files /dev/null and b/web/src/main/resources/品规模板.xlsx differ diff --git a/web/src/main/resources/库存模板.xlsx b/web/src/main/resources/库存模板.xlsx new file mode 100644 index 0000000..7bb5414 Binary files /dev/null and b/web/src/main/resources/库存模板.xlsx differ