package com.slcf.controller; import java.awt.Color; import java.awt.Font; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import javax.annotation.Resource; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.slcf.util.BarcodeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import com.slcf.pojo.UserBean; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.slcf.bean.MatCodeCondition; import com.slcf.pojo.MatCodeBean; import com.slcf.pojo.SysLogBean; import com.slcf.service.MatCodeService; import com.slcf.service.RoleService; import com.slcf.service.SysLogService; import com.slcf.util.AuthorityCode; import com.slcf.util.BarCode; //import com.sun.image.codec.jpeg.JPEGCodec; //import com.sun.image.codec.jpeg.JPEGEncodeParam; //import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * 物料编码控制器层 * @author admin * @date 2018年11月10日 */ @Controller @RequestMapping("/basic") public class MatCodeController { @Resource MatCodeService matCodeService; @Autowired SysLogService sysLogService; @Autowired RoleService roleService; @RequestMapping("/goMatCode.action") public String goMatCodePage(HttpServletRequest request){ try { String rid = request.getSession().getAttribute("ROLEID").toString(); String authCode = roleService.getAuthListByRoleMenu(Integer.parseInt(rid), AuthorityCode.MatCodeCode); request.getSession().setAttribute("AUTHCODE",authCode); // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("goMatCode.action"); sysLog.setTts_keyname("访问:物料编码"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); }catch (Exception e) { System.out.println(e.getMessage()); } return "matCode"; } /** * 添加 * @param matCode * @param request * @return * @throws Exception */ @ResponseBody @RequestMapping("/addMatCode.action") public Integer insertMatCode(MatCodeBean matCode,HttpServletRequest request) throws Exception{ int result=0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); matCode.setModi_user(user.getUser_account()); result = matCodeService.insertMatCode(matCode); // System.out.println(i+"++++++++++++"); if(result>0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("addMatCode.action"); sysLog.setTts_keyname("新增物料编码:" + matCode.getMat_no()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } // }catch(Exception e) { // System.out.println(e.getMessage()); // result=0; }catch(RuntimeException e) { System.out.println(e.getMessage()); } return result; } /** * 分页查询所有 * *@param pageNumber * * @param pageSize * @return */ @ResponseBody @RequestMapping("/matCodeList.action") public Map queryMatCodeListByPages(MatCodeCondition matCodeCon){ Mapmap=matCodeService.queryMatCodeList(matCodeCon); return map; } /** * 根据id查询信息 * @param id * @return */ @ResponseBody @RequestMapping("/queryMatCodeById.action") public MatCodeBean queryMatCodeById(@RequestParam("did")String id){ try { return matCodeService.queryMatCodeById(id); }catch(Exception e) { System.out.println(e.getMessage()); return null; } } /** * 验证工作代号是否唯一 * @param * @return */ @ResponseBody @RequestMapping("/checkMatCode.action") public Map checkMatCode(@RequestParam("did")String id){ Map map=new HashMap(); // boolean flag=userService.validUserAccount(account, uid); try { MatCodeBean Location = matCodeService.queryMatCodeById(id); if(Location==null){ map.put("msg", "代号可用"); }else{ map.put("msg", "代号不可用"); } }catch(Exception e) { System.out.println(e.getMessage()); } return map; } /** * 修改信息 * @param matCode * @return */ @ResponseBody @RequestMapping("/upMatCode.action") public Integer upMatCode(MatCodeBean matCode,HttpServletRequest request){ int result = 0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); matCode.setModi_user(user.getUser_account()); result=matCodeService.upMatCode(matCode); if(result>0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("upMatCode.action"); sysLog.setTts_keyname("修改物料编码:" + matCode.getMat_no()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 删除信息 * @param id * @return */ @ResponseBody @RequestMapping("/delMatCode.action") public int delMatCode(@RequestParam("did")String id,HttpServletRequest request){ int result = 0; try { result=matCodeService.delMatCode(id); if(result>0) { // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("delMatCode.action"); sysLog.setTts_keyname("删除物料编码,ID:" + id); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 批量删除 * @param id * @return */ @ResponseBody @RequestMapping("/delMatCodes.action") public int delMany(@RequestParam("did")String id,HttpServletRequest request){ int result = 0; try { result=matCodeService.delMatCodes(id); if(result>0) { // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("delMatCodes.action"); sysLog.setTts_keyname("批量删除物料编码,ID:" + id); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 查询所有 * @return */ @ResponseBody @RequestMapping("/getMatCode.action") public List getMatCode(){ try { return matCodeService.getMatCodeList(); }catch(Exception e) { System.out.println(e.getMessage()); return null; } } /** * 导出所有 * @param response */ @RequestMapping("/exportMatCode.action") public void exportMatCode(MatCodeCondition matCodeCon, HttpServletResponse response,HttpServletRequest request){ try { matCodeService.ExportMatCodeList(matCodeCon,response); // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("exportMatCode.action"); sysLog.setTts_keyname("导出物料编码到EXCEL"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); }catch (Exception e) { System.out.println(e.getMessage()); } } /** * 导入 * @param file * @return */ @ResponseBody @RequestMapping("/importMatCode.action") public Map importMatCode(@RequestParam("files")MultipartFile file, HttpServletRequest request){ Map map = new HashMap(); try { map = matCodeService.importExcel(file); // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("importMatCode.action"); sysLog.setTts_keyname("导入物料编码文件:" + file.getName()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); }catch (Exception e) { System.out.println(e.getMessage()); } return map; } /** * 打印条码 * @param response */ @RequestMapping("/printMatCode.action") public void printMatCode(@RequestParam("ids")String ids, HttpServletResponse response,HttpServletRequest request){ ServletOutputStream output = null; try { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(""); stringBuilder.append(""); // stringBuilder.append("条形码打印页面"); stringBuilder.append(""); stringBuilder.append(""); String[] mat_nos = ids.split(","); if(mat_nos!=null && mat_nos.length>0) { // for(String mat_no : mat_nos) { for(int i=0;i"); String src= request.getContextPath() + "/basic/showCode.action?matCode=" + mat_no; stringBuilder.append(""); // stringBuilder.append(""); stringBuilder.append("
"+mat_no+"
"); if(i<(mat_nos.length-1)) { stringBuilder.append("
"); } stringBuilder.append(""); } } stringBuilder.append(""); stringBuilder.append(""); output = response.getOutputStream(); // output.write(b); output.write(stringBuilder.toString().getBytes()); // output.println(stringBuilder.toString()); // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("printMatCode.action"); sysLog.setTts_keyname("打印物料编码"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); }catch (Exception e) { System.out.println(e.getMessage()); }finally { if (output != null) { try { output.flush(); output.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 生成一维码 * @param response */ @RequestMapping("/showCode.action") public void showCode(@RequestParam("matCode")String matCode, HttpServletResponse response,HttpServletRequest request){ try { if (matCode != null && !"".equals(matCode)) { ServletOutputStream stream = null; try { // Code128Writer writer = new Code128Writer(); // Code39Writer writer = new Code39Writer(); Hashtable hints = new Hashtable(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.MARGIN, 0); int width=240; int height=60; stream = response.getOutputStream(); // BitMatrix m = writer.encode(matCode, BarcodeFormat.CODE_39, width, height); // BitMatrix m = writer.encode(matCode, BarcodeFormat.CODE_128, width, height); BitMatrix m = new MultiFormatWriter().encode(matCode,BarcodeFormat.CODE_128, width, height); // BitMatrix m = new MultiFormatWriter().encode(matCode,BarcodeFormat.QR_CODE, width, height); MatrixToImageWriter.writeToStream(m, "JPEG", stream); } catch (Exception e) { e.printStackTrace(); // } catch (WriterException e) { // e.printStackTrace(); } finally { if (stream != null) { stream.flush(); stream.close(); } } } }catch (Exception e) { System.out.println(e.getMessage()); } } /** * 生成一维码 * @param response */ // @RequestMapping("/showCode1.action") // public void showCode1(HttpServletResponse response,HttpServletRequest request){ // try { // response.setContentType("image/jpeg"); // javax.servlet.ServletOutputStream servletoutputstream = response.getOutputStream(); // response.setHeader("Pragma", "no-cache"); // response.setHeader("Cache-Control", "no-cache"); // response.setDateHeader("Expires", 0L); // try // { // BarCode barcode1 = getChart(request); // barcode1.setSize(barcode1.width, barcode1.height); // if(barcode1.autoSize) // { // BufferedImage bufferedimage = new BufferedImage(barcode1.getSize().width, barcode1.getSize().height, 13); // java.awt.Graphics2D graphics2d = bufferedimage.createGraphics(); // barcode1.paint(graphics2d); // barcode1.invalidate(); // graphics2d.dispose(); // } // BufferedImage bufferedimage1 = new BufferedImage(barcode1.getSize().width, barcode1.getSize().height, 1); //// BufferedImage bufferedimage1 = new BufferedImage(barcode1.width, barcode1.height, 1); // java.awt.Graphics2D graphics2d1 = bufferedimage1.createGraphics(); // barcode1.paint(graphics2d1); // JPEGImageEncoder jpegimageencoder = JPEGCodec.createJPEGEncoder(servletoutputstream); // JPEGEncodeParam jpegencodeparam = jpegimageencoder.getDefaultJPEGEncodeParam(bufferedimage1); // jpegencodeparam.setQuality(1.0F, true); // jpegimageencoder.setJPEGEncodeParam(jpegencodeparam); // jpegimageencoder.encode(bufferedimage1, jpegencodeparam); // }catch(Exception exception) // { // exception.printStackTrace(); // } // }catch (Exception e) { // System.out.println(e.getMessage()); // } // } /** * 生成一维码 * @param response */ @RequestMapping("/showCode1.action") public void showCode1(HttpServletResponse response,HttpServletRequest request) throws IOException { String matCode = request.getParameter("matCode"); Integer width = Integer.parseInt(request.getParameter("width")); Integer height = Integer.parseInt(request.getParameter("height")); BufferedImage img = BarcodeUtils.encode(matCode, width, height); // BufferedImage img = BarcodeUtils.encode(matCode); if (!ImageIO.write(img, "jpg", response.getOutputStream())) { throw new IOException("Could not write an image of format jpg"); } response.getOutputStream().flush(); response.getOutputStream().close(); } // public BarCode barcode; private BarCode getChart(HttpServletRequest httpservletrequest) { // if(barcode == null) BarCode barcode = new BarCode(); try { // setParameter("barType", httpservletrequest.getParameter("barType")); setParameter(barcode, "barType", "CODE128"); if(httpservletrequest.getParameter("width") != null && httpservletrequest.getParameter("height") != null) { setParameter(barcode, "width", httpservletrequest.getParameter("width")); setParameter(barcode, "height", httpservletrequest.getParameter("height")); setParameter(barcode, "autoSize", "n"); } setParameter(barcode, "code", httpservletrequest.getParameter("matCode")); setParameter(barcode, "st", httpservletrequest.getParameter("st")); setParameter(barcode, "textFont", httpservletrequest.getParameter("textFont")); setParameter(barcode, "fontColor", httpservletrequest.getParameter("fontColor")); setParameter(barcode, "barColor", httpservletrequest.getParameter("barColor")); setParameter(barcode, "backColor", httpservletrequest.getParameter("backColor")); setParameter(barcode, "rotate", httpservletrequest.getParameter("rotate")); setParameter(barcode, "barHeightCM", httpservletrequest.getParameter("barHeightCM")); setParameter(barcode, "x", httpservletrequest.getParameter("x")); setParameter(barcode, "n", httpservletrequest.getParameter("n")); setParameter(barcode, "leftMarginCM", httpservletrequest.getParameter("leftMarginCM")); setParameter(barcode, "topMarginCM", httpservletrequest.getParameter("topMarginCM")); setParameter(barcode, "checkCharacter", "n"); setParameter(barcode, "checkCharacterInText", "n"); // setParameter("checkCharacter", httpservletrequest.getParameter("checkCharacter")); // setParameter("checkCharacterInText", httpservletrequest.getParameter("checkCharacterInText")); setParameter(barcode, "Code128Set", httpservletrequest.getParameter("Code128Set")); setParameter(barcode, "UPCESytem", httpservletrequest.getParameter("UPCESytem")); } catch(Exception exception) { exception.printStackTrace(); barcode.code = "Parameter Error"; } return barcode; } public void setParameter(BarCode barcode, String s, String s1) { if(s1 != null) if(s.equals("code")) barcode.code = s1; else if(s.equals("width")) barcode.width = (new Integer(s1)).intValue(); else if(s.equals("height")) barcode.height = (new Integer(s1)).intValue(); else if(s.equals("autoSize")) barcode.autoSize = s1.equalsIgnoreCase("y"); else if(s.equals("st")) barcode.showText = s1.equalsIgnoreCase("y"); else if(s.equals("textFont")) barcode.textFont = convertFont(s1); else if(s.equals("fontColor")) barcode.fontColor = convertColor(s1); else if(s.equals("barColor")) barcode.barColor = convertColor(s1); else if(s.equals("backColor")) barcode.backColor = convertColor(s1); else if(s.equals("rotate")) barcode.rotate = (new Integer(s1)).intValue(); else if(s.equals("barHeightCM")) barcode.barHeightCM = (new Double(s1)).doubleValue(); else if(s.equals("x")) barcode.X = (new Double(s1)).doubleValue(); else if(s.equals("n")) barcode.N = (new Double(s1)).doubleValue(); else if(s.equals("leftMarginCM")) barcode.leftMarginCM = (new Double(s1)).doubleValue(); else if(s.equals("topMarginCM")) barcode.topMarginCM = (new Double(s1)).doubleValue(); else if(s.equals("checkCharacter")) barcode.checkCharacter = s1.equalsIgnoreCase("y"); else if(s.equals("checkCharacterInText")) barcode.checkCharacterInText = s1.equalsIgnoreCase("y"); else if(s.equals("Code128Set")) barcode.Code128Set = s1.charAt(0); else if(s.equals("UPCESytem")) barcode.UPCESytem = s1.charAt(0); else if(s.equals("barType")) if(s1.equalsIgnoreCase("CODE39")) barcode.barType = 0; else if(s1.equalsIgnoreCase("CODE39EXT")) barcode.barType = 1; else if(s1.equalsIgnoreCase("INTERLEAVED25")) barcode.barType = 2; else if(s1.equalsIgnoreCase("CODE11")) barcode.barType = 3; else if(s1.equalsIgnoreCase("CODABAR")) barcode.barType = 4; else if(s1.equalsIgnoreCase("MSI")) barcode.barType = 5; else if(s1.equalsIgnoreCase("UPCA")) barcode.barType = 6; else if(s1.equalsIgnoreCase("IND25")) barcode.barType = 7; else if(s1.equalsIgnoreCase("MAT25")) barcode.barType = 8; else if(s1.equalsIgnoreCase("CODE93")) barcode.barType = 9; else if(s1.equalsIgnoreCase("EAN13")) barcode.barType = 10; else if(s1.equalsIgnoreCase("EAN8")) barcode.barType = 11; else if(s1.equalsIgnoreCase("UPCE")) barcode.barType = 12; else if(s1.equalsIgnoreCase("CODE128")) barcode.barType = 13; else if(s1.equalsIgnoreCase("CODE93EXT")) barcode.barType = 14; else if(s1.equalsIgnoreCase("POSTNET")) barcode.barType = 15; else if(s1.equalsIgnoreCase("PLANET")) barcode.barType = 16; else if(s1.equalsIgnoreCase("UCC128")) barcode.barType = 17; } private Font convertFont(String s) { StringTokenizer stringtokenizer = new StringTokenizer(s, "|"); String s1 = stringtokenizer.nextToken(); String s2 = stringtokenizer.nextToken(); String s3 = stringtokenizer.nextToken(); byte byte0 = -1; if(s2.trim().toUpperCase().equals("PLAIN")) byte0 = 0; else if(s2.trim().toUpperCase().equals("BOLD")) byte0 = 1; else if(s2.trim().toUpperCase().equals("ITALIC")) byte0 = 2; return new Font(s1, byte0, (new Integer(s3)).intValue()); } private Color convertColor(String s) { Color color = null; if(s.trim().toUpperCase().equals("RED")) color = Color.red; else if(s.trim().toUpperCase().equals("BLACK")) color = Color.black; else if(s.trim().toUpperCase().equals("BLUE")) color = Color.blue; else if(s.trim().toUpperCase().equals("CYAN")) color = Color.cyan; else if(s.trim().toUpperCase().equals("DARKGRAY")) color = Color.darkGray; else if(s.trim().toUpperCase().equals("GRAY")) color = Color.gray; else if(s.trim().toUpperCase().equals("GREEN")) color = Color.green; else if(s.trim().toUpperCase().equals("LIGHTGRAY")) color = Color.lightGray; else if(s.trim().toUpperCase().equals("MAGENTA")) color = Color.magenta; else if(s.trim().toUpperCase().equals("ORANGE")) color = Color.orange; else if(s.trim().toUpperCase().equals("PINK")) color = Color.pink; else if(s.trim().toUpperCase().equals("WHITE")) color = Color.white; else if(s.trim().toUpperCase().equals("YELLOW")) color = Color.yellow; return color; } }