|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.excel.EasyExcel; | 
|---|
|  |  |  | import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.core.common.DateUtils; | 
|---|
|  |  |  | import com.core.common.R; | 
|---|
|  |  |  | import com.zy.asrs.entity.MatCode; | 
|---|
|  |  |  | import com.zy.asrs.entity.MatCodePrint; | 
|---|
|  |  |  | import com.zy.asrs.service.MatCodeService; | 
|---|
|  |  |  | import com.zy.common.utils.excel.EnInitData; | 
|---|
|  |  |  | import com.zy.common.utils.excel.EnInitDataListener; | 
|---|
|  |  |  | import com.zy.common.CodeRes; | 
|---|
|  |  |  | import com.zy.common.utils.BarcodeUtils; | 
|---|
|  |  |  | import com.zy.common.utils.QrCode; | 
|---|
|  |  |  | import com.zy.common.utils.excel.matcode.MatCodeExcel; | 
|---|
|  |  |  | import com.zy.common.utils.excel.matcode.MatCodeExcelListener; | 
|---|
|  |  |  | import com.zy.common.web.BaseController; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | import org.springframework.web.multipart.MultipartFile; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.imageio.ImageIO; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  | import java.awt.image.BufferedImage; | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.net.URLEncoder; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | 
|---|
|  |  |  | EntityWrapper<MatCode> wrapper = new EntityWrapper<>(); | 
|---|
|  |  |  | convert(param, wrapper); | 
|---|
|  |  |  | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
|---|
|  |  |  | else { | 
|---|
|  |  |  | wrapper.orderBy("modi_time", false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(matCodeService.selectPage(new Page<>(curr, limit), wrapper)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } else if (entry.getKey().endsWith("<")) { | 
|---|
|  |  |  | wrapper.le(Cools.deleteChar(entry.getKey()), DateUtils.convert(String.valueOf(entry.getValue()))); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrapper.eq(entry.getKey(), String.valueOf(entry.getValue())); | 
|---|
|  |  |  | wrapper.like(entry.getKey(), String.valueOf(entry.getValue())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 导出 | 
|---|
|  |  |  | @RequestMapping(value = "/matCode/export/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R export(@RequestBody JSONObject param){ | 
|---|
|  |  |  | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); | 
|---|
|  |  |  | EntityWrapper<MatCode> wrapper = new EntityWrapper<>(); | 
|---|
|  |  |  | Map<String, Object> map = excludeTrash(param.getJSONObject("matCode")); | 
|---|
|  |  |  | convert(map, wrapper); | 
|---|
|  |  |  | List<MatCode> list = matCodeService.selectList(wrapper); | 
|---|
|  |  |  | return R.ok(exportSupport(list, fields)); | 
|---|
|  |  |  | @ManagerAuth(value = ManagerAuth.Auth.NONE, memo = "物料编码数据导出") | 
|---|
|  |  |  | public void export(@RequestParam(required = false) String fileName, | 
|---|
|  |  |  | @RequestParam(required = false) Integer rowCount, | 
|---|
|  |  |  | HttpServletResponse response) throws Exception { | 
|---|
|  |  |  | List<MatCode> list = matCodeService.selectList(new EntityWrapper<>()); | 
|---|
|  |  |  | List<MatCodeExcel> excels = new ArrayList<>(); | 
|---|
|  |  |  | for (MatCode matCode : list) { | 
|---|
|  |  |  | MatCodeExcel excel = new MatCodeExcel(); | 
|---|
|  |  |  | excel.setMatNo(matCode.getMatNo()); | 
|---|
|  |  |  | excel.setBarcode(matCode.getBarcode()); | 
|---|
|  |  |  | excel.setMatName(matCode.getMatName()); | 
|---|
|  |  |  | excel.setStr1(matCode.getStr1()); | 
|---|
|  |  |  | excels.add(excel); | 
|---|
|  |  |  | if (rowCount != null && excels.size() >= rowCount){ | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | response.setContentType("application/vnd.ms-excel"); | 
|---|
|  |  |  | response.setCharacterEncoding("utf-8"); | 
|---|
|  |  |  | fileName = URLEncoder.encode(Cools.isEmpty(fileName)?"物料编码":fileName, "UTF-8"); | 
|---|
|  |  |  | response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); | 
|---|
|  |  |  | EasyExcel.write(response.getOutputStream(), MatCodeExcel.class) | 
|---|
|  |  |  | .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) | 
|---|
|  |  |  | .sheet("表1") | 
|---|
|  |  |  | .doWrite(excels); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 导入 | 
|---|
|  |  |  | @RequestMapping(value = "/matCode/import/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R matCodeImport(MultipartFile file) throws IOException { | 
|---|
|  |  |  | EasyExcel.read(file.getInputStream(), EnInitData.class, new EnInitDataListener()).sheet().doRead(); | 
|---|
|  |  |  | @ManagerAuth(memo = "物料编码数据导入") | 
|---|
|  |  |  | public R matCodeImport(MultipartFile file) throws IOException, InterruptedException { | 
|---|
|  |  |  | MatCodeExcelListener listener = new MatCodeExcelListener(getUserId()); | 
|---|
|  |  |  | EasyExcel.read(file.getInputStream(), MatCodeExcel.class, listener).sheet().doRead(); | 
|---|
|  |  |  | return R.ok("成功导入"+listener.getTotal()+"条物料信息"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 打印 | 
|---|
|  |  |  | @RequestMapping(value = "/macCode/print/auth") | 
|---|
|  |  |  | @ManagerAuth(memo = "物料编码打印") | 
|---|
|  |  |  | public R matCodePrint(@RequestParam(value = "param[]") String[] param) { | 
|---|
|  |  |  | if(Cools.isEmpty(param)) { | 
|---|
|  |  |  | return R.parse(CodeRes.EMPTY); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<MatCodePrint> res = new ArrayList<>(); | 
|---|
|  |  |  | for (String matNo : param){ | 
|---|
|  |  |  | MatCode matCode = matCodeService.selectById(matNo); | 
|---|
|  |  |  | // 打印数据注入 | 
|---|
|  |  |  | MatCodePrint print = new MatCodePrint(); | 
|---|
|  |  |  | print.setMatNo(matCode.getMatNo()); | 
|---|
|  |  |  | print.setBarcode(matCode.getBarcode()); | 
|---|
|  |  |  | print.setMatName(matCode.getMatName()); | 
|---|
|  |  |  | print.setStr1(matCode.getStr1()); | 
|---|
|  |  |  | print.setStr2(matCode.getStr2()); | 
|---|
|  |  |  | res.add(print); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(res); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/macCode/code/auth") | 
|---|
|  |  |  | //    @ManagerAuth(memo = "物料编码条形码获取(type:1(条形码);2(二维码)") | 
|---|
|  |  |  | public R matCodeBarcode(@RequestParam(defaultValue = "1") Integer type | 
|---|
|  |  |  | , @RequestParam String param | 
|---|
|  |  |  | , HttpServletResponse response) throws Exception { | 
|---|
|  |  |  | if (Cools.isEmpty(param)){ | 
|---|
|  |  |  | return R.parse(BaseRes.EMPTY); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | BufferedImage img; | 
|---|
|  |  |  | if (type == 1) { | 
|---|
|  |  |  | img = BarcodeUtils.encode(param); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | img = QrCode.createImg(param); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!ImageIO.write(img, "jpg", response.getOutputStream())) { | 
|---|
|  |  |  | throw new IOException("Could not write an image of format jpg"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | response.getOutputStream().flush(); | 
|---|
|  |  |  | response.getOutputStream().close(); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|