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