jiazx0107@163.com
2023-06-30 57351e2e19760732ac00225dfa82a2965e1823b5
优化出入库信息3
已重命名1个文件
已修改8个文件
已添加3个文件
652 ■■■■■ 文件已修改
igds-inout/pom.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils.java 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/common/bar/BarCodeUtils3.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/common/package-info.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/controller/InoutReportController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/controller/SampleController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutReportManager.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/static/admin/inout/in-sample.js 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/static/admin/inout/inout-print.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/static/images/br-code.jpg 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/templates/admin/inout/in-sample.html 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/templates/admin/inout/in-weight.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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 è½¬base64
     */
    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"));
    }
}
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) {
        // æ–°çš„图片,把带logo的二维码下面加上文字
        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 è½¬base64
     */
    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"));
    }
}
igds-inout/src/main/java/com/ld/igds/common/package-info.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
package com.ld.igds.common;
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());
        }
    }
}
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;
    /**
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;
    }
    /**
     * æ‰“印扦样单,直接返回条形码Base64图片
     *
     * @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);
    }
}
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;
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();
};
igds-web/src/main/resources/static/images/br-code.jpg

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>
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>