From 8bba7f03df59c7689dbb64a952a63944a1f43ade Mon Sep 17 00:00:00 2001 From: YYC <1833023622@qq.com> Date: 星期五, 30 六月 2023 16:05:34 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- igds-inout/src/main/java/com/ld/igds/inout/controller/SampleController.java | 5 igds-inout/src/main/java/com/ld/igds/inout/manager/InoutReportManager.java | 28 ++ igds-web/src/main/resources/templates/admin/inout/in-weight.html | 1 igds-core/src/main/java/com/ld/igds/config/WebMvcConfig.java | 20 igds-inout/pom.xml | 20 + igds-inout/src/main/java/com/ld/igds/models/InoutCustomer.java | 2 igds-web/src/main/resources/static/admin/inout/in-sample.js | 34 ++ igds-web/src/main/resources/templates/admin/inout/in-sample.html | 18 igds-inout/src/main/java/com/ld/igds/inout/controller/InoutReportController.java | 28 ++ igds-web/src/main/resources/static/images/br-code.jpg | 0 igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils.java | 291 ++++++++++++++++++++++++ igds-web/src/main/resources/static/admin/inout/inout-print.js | 8 igds-inout/src/main/java/com/ld/igds/common/package-info.java | 1 igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils3.java | 218 ++++++++++++++++++ 14 files changed, 641 insertions(+), 33 deletions(-) diff --git a/igds-core/src/main/java/com/ld/igds/config/WebMvcConfig.java b/igds-core/src/main/java/com/ld/igds/config/WebMvcConfig.java index bf450f1..b3360b4 100644 --- a/igds-core/src/main/java/com/ld/igds/config/WebMvcConfig.java +++ b/igds-core/src/main/java/com/ld/igds/config/WebMvcConfig.java @@ -61,15 +61,15 @@ * * @param registry */ -// @Override -// public void addInterceptors(InterceptorRegistry registry) { -//// registry.addInterceptor(new LicenseHandlerAdepter()) -//// .addPathPatterns("/index") -//// .addPathPatterns("/index-gateway") -//// .addPathPatterns("/databoard/*"); -// + @Override + public void addInterceptors(InterceptorRegistry registry) { // registry.addInterceptor(new LicenseHandlerAdepter()) -// .addPathPatterns("/login"); -// -// } +// .addPathPatterns("/index") +// .addPathPatterns("/index-gateway") +// .addPathPatterns("/databoard/*"); + + registry.addInterceptor(new LicenseHandlerAdepter()) + .addPathPatterns("/login"); + + } } diff --git a/igds-inout/pom.xml b/igds-inout/pom.xml index fa528b6..d72f526 100644 --- a/igds-inout/pom.xml +++ b/igds-inout/pom.xml @@ -26,6 +26,26 @@ <artifactId>base-io-netty</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> + + <!-- 鏉″舰鐮� --> + <dependency> + <groupId>net.sf.barcode4j</groupId> + <artifactId>barcode4j-light</artifactId> + <version>2.0</version> + </dependency> + + <dependency> + <groupId>com.google.zxing</groupId> + <artifactId>core</artifactId> + <version>3.3.1</version> + </dependency> + + <dependency> + <groupId>com.google.zxing</groupId> + <artifactId>javase</artifactId> + <version>3.3.1</version> + </dependency> + </dependencies> diff --git a/igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils.java b/igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils.java new file mode 100644 index 0000000..19e5b41 --- /dev/null +++ b/igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils.java @@ -0,0 +1,291 @@ +package com.ld.igds.common.bar; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Stroke; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import javax.imageio.ImageIO; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.StringUtils; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.Writer; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.oned.Code128Writer; +import com.google.zxing.pdf417.PDF417Writer; + +/** + * 鐢熸垚鏉″舰鐮�(鍙樉绀烘枃鏈唴瀹�) + */ +public class BarCodeUtils { + + /** + * 榛樿鍥剧墖瀹藉害 + */ + private static final int DEFAULT_PICTURE_WIDTH = 300; + + /** + * 榛樿鍥剧墖楂樺害 + */ + private static final int DEFAULT_PICTURE_HEIGHT = 200; + + /** + * 榛樿鏉″舰鐮佸搴� + */ + private static final int DEFAULT_BAR_CODE_WIDTH = 295; + + /** + * 榛樿鏉″舰鐮侀珮搴� + */ + private static final int DEFAULT_BAR_CODE_HEIGHT = 75; + + /** + * 榛樿瀛椾綋澶у皬 + */ + private static final int DEFAULT_FONT_SIZE = 18; + + /** + * 璁剧疆 鏉″舰鐮佸弬鏁� + */ + private static final Map<EncodeHintType, Object> hints = new HashMap<>(); + + static { + hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); + } + + /** + * 鑾峰彇鏉″舰鐮佸浘鐗� + * + * @param codeValue 鏉″舰鐮佸唴瀹� + * @return 鏉″舰鐮佸浘鐗� + */ + public static BufferedImage getBarCodeImage(String codeValue) { + return getBarCodeImage(codeValue, DEFAULT_BAR_CODE_WIDTH, DEFAULT_BAR_CODE_HEIGHT); + } + + /** + * 鑾峰彇鏉″舰鐮佸浘鐗� + * + * @param codeValue 鏉″舰鐮佸唴瀹� + * @param width 瀹藉害 + * @param height 楂樺害 + * @return 鏉″舰鐮佸浘鐗� + */ + public static BufferedImage getBarCodeImage(String codeValue, int width, int height) { + // CODE_128鏄渶甯哥敤鐨勬潯褰㈢爜鏍煎紡 + return getBarCodeImage(codeValue, width, height, BarcodeFormat.CODE_128); + } + + /** + * 鑾峰彇鏉″舰鐮佸浘鐗� + * + * @param codeValue 鏉″舰鐮佸唴瀹� + * @param width 瀹藉害 + * @param height 楂樺害 + * @param barcodeFormat 鏉″舰鐮佺紪鐮佹牸寮� + * @return 鏉″舰鐮佸浘鐗� + */ + public static BufferedImage getBarCodeImage(String codeValue, int width, int height, BarcodeFormat barcodeFormat) { + Writer writer; + switch (barcodeFormat) { + case CODE_128: + // 鏈�甯歌鐨勬潯褰㈢爜锛屼絾鏄笉鏀寔涓枃 + writer = new Code128Writer(); + break; + case PDF_417: + // 鏀寔涓枃鐨勬潯褰㈢爜鏍煎紡 + writer = new PDF417Writer(); + break; + // 濡傛灉浣跨敤鍒板叾浠栨牸寮忥紝鍙互鍦ㄨ繖閲屾坊鍔� + default: + writer = new Code128Writer(); + } + + // 缂栫爜鍐呭, 缂栫爜绫诲瀷, 瀹藉害, 楂樺害, 璁剧疆鍙傛暟 + BitMatrix bitMatrix; + try { + bitMatrix = writer.encode(codeValue, barcodeFormat, width, height, hints); + } catch (WriterException e) { + throw new RuntimeException("鏉″舰鐮佸唴瀹瑰啓鍏ュけ璐�"); + } + return MatrixToImageWriter.toBufferedImage(bitMatrix); + } + + /** + * 鑾峰彇鏉″舰鐮� + * + * @param codeValue 鏉″舰鐮佸唴瀹� + * @param bottomStr 搴曢儴鏂囧瓧 + * @return + */ + public static BufferedImage getBarCodeWithWords(String codeValue, String bottomStr) { + return getBarCodeWithWords(codeValue, bottomStr, "", ""); + } + + + /** + * 鑾峰彇鏉″舰鐮� + * + * @param codeValue 鏉″舰鐮佸唴瀹� + * @param bottomStr1 搴曢儴鏂囧瓧1 + * @param bottomStr2 搴曢儴鏂囧瓧2 + * @param bottomStr2 搴曢儴鏂囧瓧3 + * @return + */ + public static BufferedImage getBarCodeWithWords(String codeValue, String bottomStr1, String bottomStr2, + String bottomStr3) { + return getCodeWithWords(getBarCodeImage(codeValue), bottomStr1, bottomStr2, bottomStr3, DEFAULT_PICTURE_WIDTH, + DEFAULT_PICTURE_HEIGHT, 0, 0, DEFAULT_FONT_SIZE); + } + + /** + * 鑾峰彇鏉″舰鐮� + * + * @param codeImage 鏉″舰鐮佸浘鐗� + * @param bottomStr1 搴曢儴鏂囧瓧1 + * @param bottomStr2 搴曢儴鏂囧瓧2 + * @param bottomStr3 搴曢儴鏂囧瓧3 + * @param pictureWidth 鍥剧墖瀹藉害 + * @param pictureHeight 鍥剧墖楂樺害 + * @param codeOffsetX 鏉″舰鐮佸搴� + * @param codeOffsetY 鏉″舰鐮侀珮搴� + * @param fontSize 瀛椾綋澶у皬 + * @return 鏉″舰鐮佸浘鐗� + */ + public static BufferedImage getCodeWithWords(BufferedImage codeImage, String bottomStr1, String bottomStr2, String bottomStr3, int pictureWidth, int pictureHeight, int codeOffsetX, int codeOffsetY, int fontSize) { + + BufferedImage picImage = new BufferedImage(pictureWidth, pictureHeight, BufferedImage.TYPE_INT_RGB); + + Graphics2D g2d = picImage.createGraphics(); + // 鎶楅敮榻� + setGraphics2D(g2d); + // 璁剧疆鐧借壊 + setColorWhite(g2d, picImage.getWidth(), picImage.getHeight()); + + // 鏉″舰鐮侀粯璁ゅ眳涓樉绀� + int codeStartX = (pictureWidth - codeImage.getWidth()) / 2 + codeOffsetX; + int codeStartY = (pictureHeight - codeImage.getHeight()) / 2 + codeOffsetY; + + if (StringUtils.isNotEmpty(bottomStr2)) { + codeStartY = codeStartY - 16; + } + if (StringUtils.isNotEmpty(bottomStr3)) { + codeStartY = codeStartY - 16; + } + + // 鐢绘潯褰㈢爜鍒版柊鐨勯潰鏉� + g2d.drawImage(codeImage, codeStartX, codeStartY, codeImage.getWidth(), codeImage.getHeight(), null); + + // 鐢绘枃瀛楀埌鏂扮殑闈㈡澘 + g2d.setColor(Color.BLACK); + // 瀛椾綋銆佸瓧鍨嬨�佸瓧鍙� + g2d.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, fontSize)); + // 鏂囧瓧涓庢潯褰㈢爜涔嬮棿鐨勯棿闅� + int wordAndCodeSpacing = 5; + + // 鏂囧瓧闀垮害 + int strWidth = g2d.getFontMetrics().stringWidth(bottomStr1); + // 鏂囧瓧X杞村紑濮嬪潗鏍囷紝杩欓噷鏄眳涓� + int strStartX = codeStartX + (codeImage.getWidth() - strWidth) / 2; + // 鏂囧瓧Y杞村紑濮嬪潗鏍� + int strStartY = codeStartY + codeImage.getHeight() + fontSize + wordAndCodeSpacing; + // 鐢绘枃瀛� + g2d.drawString(bottomStr1, strStartX, strStartY); + + if (StringUtils.isNotEmpty(bottomStr2)) { + // 鏂囧瓧闀垮害 + strWidth = g2d.getFontMetrics().stringWidth(bottomStr2); + // 鏂囧瓧X杞村紑濮嬪潗鏍囷紝杩欓噷鏄眳涓� + strStartX = codeStartX + (codeImage.getWidth() - strWidth) / 2; + // 鏂囧瓧Y杞村紑濮嬪潗鏍� + strStartY = codeStartY + codeImage.getHeight() + fontSize * 2 + wordAndCodeSpacing * 2; + + g2d.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 16)); + // 鐢绘枃瀛� + g2d.drawString(bottomStr2, strStartX, strStartY); + } + + if (StringUtils.isNotEmpty(bottomStr3)) { + // 鏂囧瓧闀垮害 + strWidth = g2d.getFontMetrics().stringWidth(bottomStr3); + // 鏂囧瓧X杞村紑濮嬪潗鏍囷紝杩欓噷鏄眳涓� + strStartX = codeStartX + (codeImage.getWidth() - strWidth) / 2; + // 鏂囧瓧Y杞村紑濮嬪潗鏍� + strStartY = codeStartY + codeImage.getHeight() + fontSize * 3 + wordAndCodeSpacing * 3; + + g2d.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 16)); + // 鐢绘枃瀛� + g2d.drawString(bottomStr3, strStartX, strStartY); + } + + g2d.dispose(); + picImage.flush(); + + return picImage; + } + + /** + * 璁剧疆 Graphics2D 灞炴�� 锛堟姉閿娇锛� + * + * @param g2d Graphics2D鎻愪緵瀵瑰嚑浣曞舰鐘躲�佸潗鏍囪浆鎹€�侀鑹茬鐞嗗拰鏂囨湰甯冨眬鏇翠负澶嶆潅鐨勬帶鍒� + */ + private static void setGraphics2D(Graphics2D g2d) { + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT); + Stroke s = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER); + g2d.setStroke(s); + } + + /** + * 璁剧疆鑳屾櫙涓虹櫧鑹� + * + * @param g2d Graphics2D鎻愪緵瀵瑰嚑浣曞舰鐘躲�佸潗鏍囪浆鎹€�侀鑹茬鐞嗗拰鏂囨湰甯冨眬鏇翠负澶嶆潅鐨勬帶鍒� + */ + private static void setColorWhite(Graphics2D g2d, int width, int height) { + g2d.setColor(Color.WHITE); + // 濉厖鏁翠釜灞忓箷 + g2d.fillRect(0, 0, width, height); + // 璁剧疆绗斿埛 + g2d.setColor(Color.BLACK); + } + + public static String getBarCodeImageBase64(String codeValue, String bottomStr1, String bottomStr2, String bottomStr3) { + BufferedImage image = getBarCodeWithWords(codeValue, bottomStr1, bottomStr2, bottomStr3); + return GetBase64FromImage(image); + } + + /** + * BufferedImage 杞琤ase64 + */ + public static String GetBase64FromImage(BufferedImage img) { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + try { + // 璁剧疆鍥剧墖鐨勬牸寮� + ImageIO.write(img, "jpg", stream); + } catch (IOException e) { + e.printStackTrace(); + } + byte[] bytes = Base64.encodeBase64(stream.toByteArray()); + String base64 = new String(bytes); + return "data:image/jpeg;base64," + base64; + } + + + public static void main(String[] args) throws IOException { + BufferedImage image = BarCodeUtils.getBarCodeWithWords("C_202306290005", "202306290005", "涓績绮簱", "2023-06-29 12:25"); + ImageIO.write(image, "jpg", new File("D:/IGDS/TEMP/BR_CODE_T.jpg")); + } +} \ No newline at end of file diff --git a/igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils3.java b/igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils3.java new file mode 100644 index 0000000..d9cd297 --- /dev/null +++ b/igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils3.java @@ -0,0 +1,218 @@ +package com.ld.igds.common.bar; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.oned.Code128Writer; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang.StringUtils; +import org.krysalis.barcode4j.HumanReadablePlacement; +import org.krysalis.barcode4j.impl.code128.Code128Bean; +import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * @Desc: 鏉″舰鐮佸伐鍏� + * @author: Andy + * @update-time: 2023/6/30 + */ +public class BarCodeUtils3 { + + /** + * 鏉″舰鐮佸搴� + */ + private static final int WIDTH = 300; + + /** + * 鏉″舰鐮侀珮搴� + */ + private static final int HEIGHT = 100; + + /** + * 鍔犳枃瀛� 鏉″舰鐮� + */ + private static final int WORD_HEIGHT = 150; + + + /** + * 璁剧疆 鏉″舰鐮佸弬鏁� + */ + private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() { + private static final long serialVersionUID = 1L; + + { + put(EncodeHintType.CHARACTER_SET, "utf-8"); + } + }; + + + /** + * 鐢熸垚code128鏉″舰鐮� + * + * @param height 鏉″舰鐮佺殑楂樺害 + * @param width 鏉″舰鐮佺殑瀹藉害 + * @param message 瑕佺敓鎴愮殑鏂囨湰 + * @param withQuietZone 鏄惁涓よ竟鐣欑櫧 + * @param hideText 闅愯棌鍙鏂囨湰 + * @return 鍥剧墖瀵瑰簲鐨勫瓧鑺傜爜 + */ + public static byte[] generateBarCode128(String message, Double height, Double width, boolean withQuietZone, boolean hideText) { + Code128Bean bean = new Code128Bean(); + // 鍒嗚鲸鐜� + int dpi = 512; + // 璁剧疆涓や晶鏄惁鐣欑櫧 + bean.doQuietZone(withQuietZone); + + // 璁剧疆鏉″舰鐮侀珮搴﹀拰瀹藉害 + bean.setBarHeight((double) ObjectUtils.defaultIfNull(height, 9.0D)); + if (width != null) { + bean.setModuleWidth(width); + } + // 璁剧疆鏂囨湰浣嶇疆锛堝寘鎷槸鍚︽樉绀猴級 + if (hideText) { + bean.setMsgPosition(HumanReadablePlacement.HRP_NONE); + } + // 璁剧疆鍥剧墖绫诲瀷 + String format = "image/png"; + ByteArrayOutputStream ous = new ByteArrayOutputStream(); + BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi, + BufferedImage.TYPE_BYTE_BINARY, false, 0); + + // 鐢熶骇鏉″舰鐮� + bean.generateBarcode(canvas, message); + try { + canvas.finish(); + } catch (IOException e) { + } + + return ous.toByteArray(); + } + + /** + * 鐢熸垚 鍥剧墖缂撳啿 + * + * @param vaNumber VA 鐮� + * @return 杩斿洖BufferedImage + * @author fxbin + */ + public static BufferedImage getBarCode(String vaNumber) { + try { + Code128Writer writer = new Code128Writer(); + // 缂栫爜鍐呭, 缂栫爜绫诲瀷, 瀹藉害, 楂樺害, 璁剧疆鍙傛暟 + BitMatrix bitMatrix = writer.encode(vaNumber, BarcodeFormat.CODE_128, WIDTH, HEIGHT, hints); + return MatrixToImageWriter.toBufferedImage(bitMatrix); + } catch (WriterException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 鎶婂甫logo鐨勬潯褰㈢爜涓嬮潰鍔犱笂鏂囧瓧 + * + * @param image 鏉″舰鐮佸浘鐗� + * @param words 搴曢儴鏂囧瓧 + * @return 杩斿洖BufferedImage + * @author fxbin + */ + public static BufferedImage insertWords(BufferedImage image, String words) { + // 鏂扮殑鍥剧墖锛屾妸甯ogo鐨勪簩缁寸爜涓嬮潰鍔犱笂鏂囧瓧 + if (StringUtils.isNotEmpty(words)) { + + BufferedImage outImage = new BufferedImage(WIDTH, WORD_HEIGHT, BufferedImage.TYPE_INT_RGB); + + Graphics2D g2d = outImage.createGraphics(); + + // 鎶楅敮榻� + setGraphics2D(g2d); + // 璁剧疆鐧借壊 + setColorWhite(g2d); + + // 鐢绘潯褰㈢爜鍒版柊鐨勯潰鏉� + g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null); + // 鐢绘枃瀛楀埌鏂扮殑闈㈡澘 + Color color = new Color(0, 0, 0); + g2d.setColor(color); + // 瀛椾綋銆佸瓧鍨嬨�佸瓧鍙� + g2d.setFont(new Font("寰蒋闆呴粦", Font.PLAIN, 18)); + //鏂囧瓧闀垮害 + int strWidth = g2d.getFontMetrics().stringWidth(words); + //鎬婚暱搴﹀噺鍘绘枃瀛楅暱搴︾殑涓�鍗� 锛堝眳涓樉绀猴級 + int wordStartX = (WIDTH - strWidth) / 2; + //height + (outImage.getHeight() - height) / 2 + 12 + int wordStartY = HEIGHT + 20; + + // 鐢绘枃瀛� + g2d.drawString(words, wordStartX, wordStartY); + + // 鐢绘枃瀛� + wordStartY = HEIGHT + 20; + g2d.drawString(words, wordStartX, wordStartY); + + + g2d.dispose(); + outImage.flush(); + return outImage; + } + return null; + } + + /** + * 璁剧疆 Graphics2D 灞炴�� 锛堟姉閿娇锛� + * + * @param g2d Graphics2D鎻愪緵瀵瑰嚑浣曞舰鐘躲�佸潗鏍囪浆鎹€�侀鑹茬鐞嗗拰鏂囨湰甯冨眬鏇翠负澶嶆潅鐨勬帶鍒� + */ + private static void setGraphics2D(Graphics2D g2d) { + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT); + Stroke s = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER); + g2d.setStroke(s); + } + + /** + * 璁剧疆鑳屾櫙涓虹櫧鑹� + * + * @param g2d Graphics2D鎻愪緵瀵瑰嚑浣曞舰鐘躲�佸潗鏍囪浆鎹€�侀鑹茬鐞嗗拰鏂囨湰甯冨眬鏇翠负澶嶆潅鐨勬帶鍒� + */ + private static void setColorWhite(Graphics2D g2d) { + g2d.setColor(Color.WHITE); + //濉厖鏁翠釜灞忓箷 + g2d.fillRect(0, 0, 600, 600); + //璁剧疆绗斿埛 + g2d.setColor(Color.BLACK); + } + + /** + * BufferedImage 杞琤ase64 + */ + public String GetBase64FromImage(BufferedImage img) { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + try { + // 璁剧疆鍥剧墖鐨勬牸寮� + ImageIO.write(img, "jpg", stream); + } catch (IOException e) { + e.printStackTrace(); + } + byte[] bytes = Base64.encodeBase64(stream.toByteArray()); + String base64 = new String(bytes); + return "data:image/jpeg;base64," + base64; + } + + + public static void main(String[] args) throws IOException { + BufferedImage image = insertWords(getBarCode("202306290001"), "202306290001\r\n浣犲ソ"); + ImageIO.write(image, "jpg", new File("D:/IGDS/TEMP/BRCODE_abc.jpg")); + } + +} \ No newline at end of file diff --git a/igds-inout/src/main/java/com/ld/igds/common/package-info.java b/igds-inout/src/main/java/com/ld/igds/common/package-info.java new file mode 100644 index 0000000..30159b6 --- /dev/null +++ b/igds-inout/src/main/java/com/ld/igds/common/package-info.java @@ -0,0 +1 @@ +package com.ld.igds.common; \ No newline at end of file diff --git a/igds-inout/src/main/java/com/ld/igds/inout/controller/InoutReportController.java b/igds-inout/src/main/java/com/ld/igds/inout/controller/InoutReportController.java index 6531a9f..daf61e8 100644 --- a/igds-inout/src/main/java/com/ld/igds/inout/controller/InoutReportController.java +++ b/igds-inout/src/main/java/com/ld/igds/inout/controller/InoutReportController.java @@ -3,6 +3,7 @@ import com.ld.igds.constant.RespCodeEnum; import com.ld.igds.data.PageResponse; import com.ld.igds.inout.InoutConstant; +import com.ld.igds.inout.dto.InoutCheckData; import com.ld.igds.inout.dto.InoutData; import com.ld.igds.inout.manager.InoutReportManager; import lombok.extern.slf4j.Slf4j; @@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.util.Date; /** @@ -21,7 +23,7 @@ @RequestMapping("basic/inout/report") public class InoutReportController { - @Autowired + @Resource private InoutReportManager reportManager; @@ -49,4 +51,28 @@ "鍚庡彴寮傚父锛�" + e.getMessage()); } } + + + /** + * 鎵撳嵃鎵︽牱鍗� + * + * @param data + * @return + */ + @RequestMapping("/bill-simple") + public PageResponse<String> simpleBill(@RequestBody InoutCheckData data) { + try { + String html = reportManager.simpleBill(data); + if (null == html) { + return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), + "鐢熸垚鎵撳嵃鐮佸け璐�"); + } + + return new PageResponse<>(RespCodeEnum.CODE_0000, html); + } catch (Exception e) { + log.error("鍚庡彴寮傚父:{}", e); + return new PageResponse<>(RespCodeEnum.CODE_1111.getCode(), + "鍚庡彴寮傚父锛�" + e.getMessage()); + } + } } diff --git a/igds-inout/src/main/java/com/ld/igds/inout/controller/SampleController.java b/igds-inout/src/main/java/com/ld/igds/inout/controller/SampleController.java index 774e532..a4b4ce2 100644 --- a/igds-inout/src/main/java/com/ld/igds/inout/controller/SampleController.java +++ b/igds-inout/src/main/java/com/ld/igds/inout/controller/SampleController.java @@ -4,11 +4,12 @@ import com.ld.igds.data.PageResponse; import com.ld.igds.inout.manager.SampleManager; import com.ld.igds.io.sample.data.SampleDto; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; /** * 鎵︽牱鏈哄拰鍖栭獙鎺ュ彛 @@ -20,7 +21,7 @@ @RequestMapping("api/sample") public class SampleController { - @Autowired + @Resource private SampleManager sampleManager; /** diff --git a/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutReportManager.java b/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutReportManager.java index 4a296b2..01a5ee0 100644 --- a/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutReportManager.java +++ b/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutReportManager.java @@ -4,13 +4,11 @@ import com.ld.igds.check.dto.CheckItemData; import com.ld.igds.check.service.CoreCheckStandardService; import com.ld.igds.common.CoreCommonService; +import com.ld.igds.common.bar.BarCodeUtils; import com.ld.igds.constant.FoodVariety; import com.ld.igds.inout.InoutBill; import com.ld.igds.inout.InoutConstant; -import com.ld.igds.inout.dto.InoutData; -import com.ld.igds.inout.dto.InoutRecordItemData; -import com.ld.igds.inout.dto.InoutRecordItemParam; -import com.ld.igds.inout.dto.WeightBill; +import com.ld.igds.inout.dto.*; import com.ld.igds.inout.service.InoutRecordItemService; import com.ld.igds.m.dto.NoticeDto; import com.ld.igds.m.service.HInoutNoticeService; @@ -706,6 +704,26 @@ return htmlStr; } + /** + * 鎵撳嵃鎵︽牱鍗曪紝鐩存帴杩斿洖鏉″舰鐮丅ase64鍥剧墖 + * + * @param data + * @return + */ + public String simpleBill(InoutCheckData data) { + + if (null == data.getId()) return null; + if (null == data.getCheckId()) return null; + + if (null == data.getCheckTime()) { + data.setCheckTime(new Date()); + } + + String imgBase64 = BarCodeUtils.getBarCodeImageBase64(data.getId(), data.getCheckId(), "绮簱鎵︽牱鍗曟潯鐮�", DateFormatUtils.format(data.getCheckTime(), "yyyy-MM-dd HH:mm")); + + return imgBase64; + } + public static void main(String[] args) { List<String> result = new ArrayList<>(); result.add("1"); @@ -724,4 +742,6 @@ List<String> strings3 = result.subList(6, 8); System.out.println(strings3); } + + } \ No newline at end of file diff --git a/igds-inout/src/main/java/com/ld/igds/models/InoutCustomer.java b/igds-inout/src/main/java/com/ld/igds/models/InoutCustomer.java index 239a0bf..6784fc0 100644 --- a/igds-inout/src/main/java/com/ld/igds/models/InoutCustomer.java +++ b/igds-inout/src/main/java/com/ld/igds/models/InoutCustomer.java @@ -2,10 +2,8 @@ import java.io.Serializable; import java.util.Date; - import com.bstek.dorado.annotation.PropertyDef; import lombok.Data; - import javax.persistence.*; /** diff --git a/igds-web/src/main/resources/static/admin/inout/in-sample.js b/igds-web/src/main/resources/static/admin/inout/in-sample.js index 575d438..6824ee7 100644 --- a/igds-web/src/main/resources/static/admin/inout/in-sample.js +++ b/igds-web/src/main/resources/static/admin/inout/in-sample.js @@ -6,7 +6,6 @@ var page = 1; var limit = 10; var curSampleData = null;// 褰撳墠缂栬緫鏁版嵁 -var curCheckItems = null;// 褰撳墠鏁版嵁鐨勬鏌ラ」淇℃伅 $(function () { layui.use(['layer', 'laydate', 'form', 'table'], function () { @@ -308,18 +307,16 @@ shade: 0, content: $('#checkDetail'), btnAlign: 'c', - btn: ['淇濆瓨骞舵墦鍗�', '淇濆瓨鎻愪氦', '鍏抽棴鍙栨秷'], + btn: ['鎵撳嵃骞朵繚瀛�', '浠呬繚瀛�', '鍏抽棴鍙栨秷'], yes: function () { - alertSuccess("鏉″舰鐮佸緟纭畾锛�"); + printSimpleStart(); }, btn2: function () { // 鏇存柊鍒伴〉闈� var data = form.val("form-detail"); obj.update(data); // 鍚堝苟鏇存柊鐣跺墠缂栬緫鏁版嵁 Object.assign(curSampleData, data); - submit(); - }, btn3: function () { layer.closeAll(); }, @@ -327,9 +324,34 @@ }); } + +//鎵ц鎵撳嵃 +function printSimpleStart() { + var index = layer.load(); + $.ajax({ + type: "POST", + url: "../../basic/inout/report/bill-simple", + dataType: "json", + contentType: "application/json;charset=UTF-8", + data: JSON.stringify(curSampleData), + success: function (result) { + layer.close(index); + if (result.code != "0000") { + alertError(result.msg); + } else { + printSimpleBill(result.data); + submit(); + } + }, + error: function () { + layer.close(index); + alertError("鎵撳嵃鍗曟嵁璋冪敤澶辫触"); + } + }); +} + // 褰撳墠瀹屾垚 function submit() { - if (!curSampleData.sampleUser) { layer.alert("璇疯緭鍏ユ墻鏍蜂汉锛侊紒"); return; diff --git a/igds-web/src/main/resources/static/admin/inout/inout-print.js b/igds-web/src/main/resources/static/admin/inout/inout-print.js index cf9a101..33f1965 100644 --- a/igds-web/src/main/resources/static/admin/inout/inout-print.js +++ b/igds-web/src/main/resources/static/admin/inout/inout-print.js @@ -25,5 +25,13 @@ } }; +//鎵撳嵃鎵︽牱鍗� +printSimpleBill = function (imgBase64) { + var LODOP = getLodop(); + LODOP.PRINT_INIT("鎵︽牱鍗�"); + LODOP.SET_PRINT_PAGESIZE(1, "40mm", "30mm", "CreateCustomPage"); + LODOP.ADD_PRINT_IMAGE(imgBase64); + LODOP.PREVIEW(); +}; diff --git a/igds-web/src/main/resources/static/images/txm.jpg b/igds-web/src/main/resources/static/images/br-code.jpg similarity index 100% rename from igds-web/src/main/resources/static/images/txm.jpg rename to igds-web/src/main/resources/static/images/br-code.jpg Binary files differ diff --git a/igds-web/src/main/resources/templates/admin/inout/in-sample.html b/igds-web/src/main/resources/templates/admin/inout/in-sample.html index c4e5083..916ba8d 100644 --- a/igds-web/src/main/resources/templates/admin/inout/in-sample.html +++ b/igds-web/src/main/resources/templates/admin/inout/in-sample.html @@ -9,9 +9,12 @@ <title>鍑哄叆搴撶鐞�-鎵︽牱</title> <link rel="stylesheet" type="text/css" - th:href="@{../../static/plugins/layui/css/layui.css?v=2.5.5}"> + th:href="@{../../static/plugins/layui/css/layui.css}"> <link rel="stylesheet" type="text/css" th:href="@{../../static/admin/inout/style.css}"> + + <!--浣跨敤鎵撳嵃鎻掍欢 闅愯棌褰撳墠鎻掍欢 --> + <script th:src="@{../../static/plugins/lodop/LodopFuncs.js}"></script> <style type="text/css"> .qyzj-tabBox { @@ -287,8 +290,9 @@ </div> <script th:inline="javascript"> + //鎵�灞炲垎搴� + var deptId = [[${deptId}]]; var progress = [[${progress}]]; - var listDepot = [[${listDepot}]]; //涓氬姟姝ラ var bizType = [[${bizType}]]; //鍑哄叆搴撶被鍨� @@ -301,8 +305,6 @@ var endTime = [[${endTime}]]; //鎵︽牱鏈轰俊鎭� var checkDto = [[${checkDto}]]; - //鎵�灞炲垎搴� - var deptId = [[${deptId}]]; //搴撳尯鍚嶇О var deptName = [[${deptName}]]; var inoutProgress = [[${inoutProgress}]]; @@ -313,6 +315,7 @@ <script th:src="@{../../static/js/constant.js}"></script> <script th:src="@{../../static/js/igds-common.js}"></script> <script th:src="@{../../static/admin/inout/inout-common.js}"></script> +<script th:src="@{../../static/admin/inout/inout-print.js}"></script> <script th:src="@{../../static/admin/inout/in-sample.js}"></script> <script type="text/html" id="barControl"> @@ -404,19 +407,19 @@ <div style="height: 100%; width: 42%; float: right"> <div class="layui-col-xs12"> <blockquote class="layui-elem-quote"> - <span style="font-weight: bold; margin-right: 10px;">鎵撳嵃淇℃伅</span> + <span style="font-weight: bold; margin-right: 10px;">鏉$爜淇℃伅</span> </blockquote> <div style="text-align: center; margin-top: 10px"> <img style="max-width: 100px;" th:src="@{/static/images/login-app-code.png}"/> </div> <div style="text-align: center; margin-top: 10px"> - <img style="max-width: 220px;" th:src="@{/static/images/txm.jpg}"/> + <img style="max-width: 220px;" th:src="@{/static/images/br-code.jpg}"/> </div> <div style="text-align: center; font-size: 16px; margin-top: 10px"> <span th:text="${deptName}"></span> </div> <div style="text-align: center; font-size: 14px; margin-top: 10px"> - <span id="printTime">2023-05-31 17:30:30</span> + <span id="printTime">--------</span> </div> </div> </div> @@ -453,5 +456,4 @@ </tbody> </table> </div> - </html> diff --git a/igds-web/src/main/resources/templates/admin/inout/in-weight.html b/igds-web/src/main/resources/templates/admin/inout/in-weight.html index 3d2898b..85339ce 100644 --- a/igds-web/src/main/resources/templates/admin/inout/in-weight.html +++ b/igds-web/src/main/resources/templates/admin/inout/in-weight.html @@ -11,6 +11,7 @@ th:href="@{../../static/plugins/layui/css/layui.css?v=2.5.5}"> <link rel="stylesheet" type="text/css" th:href="@{../../static/admin/inout/style.css}"> + <!--浣跨敤鎵撳嵃鎻掍欢 闅愯棌褰撳墠鎻掍欢 --> <script th:src="@{../../static/plugins/lodop/LodopFuncs.js}"></script> -- Gitblit v1.9.3