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