zhs hace 2 años
padre
commit
4e68d3141f

+ 14 - 118
src/main/java/com/tld/controller/WebPrintController.java

@@ -1,139 +1,35 @@
 package com.tld.controller;
 
 
-//import com.google.zxing.client.j2se.MatrixToImageWriter;
-import cn.afterturn.easypoi.excel.annotation.Excel;
-import com.google.zxing.common.BitMatrix;
-//import com.tld.util.MyQRUtils;
-//import org.apache.commons.logging.Log;
-//import org.apache.commons.logging.LogFactory;
-import com.tld.excel.ExcelUtil;
-import com.tld.model.Print;
-import org.apache.poi.hpsf.Variant;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.PostMapping;
+import com.tld.model.TldPrint;
+import com.tld.service.WebPrintService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-//
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
  * 打印二维码
  */
 @RestController
-@RequestMapping("/Printer")
+@RequestMapping("/printer")
+@RequiredArgsConstructor
 public class WebPrintController {
-//    private static final Log logger = LogFactory.getLog(MyQRUtils.class);
 
-//    /**
-//     * 二维码预览页面
-//     * @param model
-//     * @return
-//     */
-//     @PostMapping("/showList")
-//     public  String  showQRList(Model model){
-//         //模拟获取数据库数据
-//         List listData = new ArrayList();
-//         StringBuffer ids = new StringBuffer();
-//         String code = "print00";
-//         for (int i = 0; i < 3; i++) {
-//             Map<String,String> map = new HashMap<String,String>(); //模拟VO
-//             map.put("id",code+""+i);
-//             ids.append(code+""+i).append(",");
-//             listData.add(map);
-//         }
-//         model.addAttribute("showListData", listData);
-//         model.addAttribute("ids", ids);
-//         return "showQR";
-//     }
-//
-//    /**
-//     * 二维码打印页面
-//     * 隐藏在iframe中
-//     * @param model
-//     * @return
-//     */
-//    @PostMapping("/printEWM")
-//    public  String  printQRFrame(Model model, HttpServletRequest request){
-//         String ids = request.getParameter("ids");
-//         model.addAttribute("ids", ids);
-//         return "printFrameQR";
-//    }
-//
-//    /**
-//     * 显示二维码图片保存打印
-//     * @param request
-//     * @param response
-//     * @throws Exception
-//     */
-//     @PostMapping("/showEWMImage")
-//     public void showImageByType(HttpServletRequest request, HttpServletResponse response){
-//                 String id = request.getParameter("showID"); //ID
-//
-//                 //此处可从数据库中获取内容
-//                 String content ="打印二维码\n打印测试\nID:"+id;
-//                 //content   二维码中的信息
-//
-//                 OutputStream outStream = null;
-//                 try {
-//                         outStream = response.getOutputStream();
-//                         String format = "jpg";
-//                         String type = "png" ;
-//                         String bottomText = ""; //水印文字
-//                         //生成二维码前的配置信息
-//                         BitMatrix bitMatrix = MyQRUtils.setBitMatrix(content, 30 , 30);
-//                         //暂时不使用LOGO图片
-//                         //以流的形式展示
-//                         MyQRUtils.megerToFile(bitMatrix, format, outStream, null,bottomText);
-//                         //定义路径,用绝对路径
-//                        Path file = new File("D:/workspace/code.png").toPath();
-//                     System.out.println("---路径---"+file.toFile());
-//                        //生成路径并且保存文件
-//                        MatrixToImageWriter.writeToPath(bitMatrix,type,file);
-//                        //将图片二维码放入到excel中
-//
-//                        //开始打印
-//                         MyQRUtils.getPrint(file.toFile());
-//
-//                 } catch (Exception e) {
-//                         logger.error("二维码生成失败", e);
-//                     }finally{
-//                         try {
-//                                if(outStream!=null){
-//                                         outStream.flush();
-//                                         outStream.close();
-//                                     }
-//                            } catch (IOException e) {
-//                                logger.error("关闭数据流失败", e);
-//                            }
-//                     }
-//     }
+    private final WebPrintService webPrintService;
 
     /**
-     生成Excel文件
+     * 查询打印信息
+     * @param tldPrint 打印信息
+     * @param request 用户id
+     * @return 返回结果
      */
-    @PostMapping("/showEWMImage")
-    public String  showImageByType(HttpServletRequest request, HttpServletResponse response){
-        ArrayList<Print> print = new ArrayList<>();
-        for (int i = 0; i < 10; i++) {
-            Print print1 = new Print();
-            print1.setId("1");
-            print1.setEarTag("二维码");
-            print.add(print1);
-        }
-        String fileName = "打印二维码" ;
-        ExcelUtil.writeExcel(response,fileName,ExcelUtil.exportPicture(print));
-        return "操作成功";
+    @GetMapping("getSerial")
+    public Map<String, Object> getSerial(TldPrint tldPrint, HttpServletRequest request){
+        return webPrintService.getSerial(tldPrint, request);
     }
 
 }

+ 11 - 0
src/main/java/com/tld/mapper/WebPrintMapper.java

@@ -0,0 +1,11 @@
+package com.tld.mapper;
+
+import com.tld.model.TldPrint;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WebPrintMapper {
+    int getSerialCount(TldPrint tldPrint);
+
+    void addPrint(TldPrint tldPrint);
+}

+ 68 - 0
src/main/java/com/tld/model/TldPrint.java

@@ -0,0 +1,68 @@
+package com.tld.model;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@SuppressWarnings("serial")
+public class TldPrint implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+    /**
+     * 物料code
+     */
+    private String materialCode;
+    /**
+     * 供应商id
+     */
+    private String supplierId;
+    /**
+     * 生产日期
+     */
+    private String producDate;
+    /**
+     * 数量
+     */
+    private String num;
+    /**
+     * 连番号
+     */
+    private String serial;
+    /**
+     * 生成日期
+     */
+    private String scrq;
+    /**
+     * 单据id
+     */
+    private String documentId;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 页数
+     */
+    private int page;
+    /**
+     * 条数
+     */
+    private int limit;
+    /**
+     * 物料名称
+     */
+    private String materialName;
+    /**
+     * 用户名称
+     */
+    private String userUser;
+    /**
+     * 单据类型
+     */
+    private String type;
+}

+ 10 - 0
src/main/java/com/tld/service/WebPrintService.java

@@ -0,0 +1,10 @@
+package com.tld.service;
+
+import com.tld.model.TldPrint;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+public interface WebPrintService {
+    Map<String, Object> getSerial(TldPrint tldPrint, HttpServletRequest request);
+}

+ 1 - 1
src/main/java/com/tld/service/impl/InviteServiceImpl.java

@@ -166,7 +166,7 @@ public class InviteServiceImpl implements InviteService {
                     .setSourceType(askGoods3.getSourceType())
                     .setMoveType(askGoods3.getMoveType());
             inviteMapper.addReturnGsRemovalF(returRemoval1);//新增返回gs数据父表信息
-            map.put("data", removalCode);
+            map.put("data", askGoods3.getAskGoodsId());
             map.put("msg", "200");
         }catch (Exception e){
             e.printStackTrace();

+ 17 - 17
src/main/java/com/tld/service/impl/WarehouseTransferServiceImpl.java

@@ -83,7 +83,7 @@ public class WarehouseTransferServiceImpl implements WarehouseTransferService {
         try{
             List<AskGoods> list = askGoodsMapper.getVirtualUniqueCode(uniqueCode, type, askGoodsId);
             //入库信息
-            List<WarehousingVirtual> warehousing = new LinkedList<>();
+//            List<WarehousingVirtual> warehousing = new LinkedList<>();
             String warehouseTransferCode = codeGenerateYK(); //移库单
             for(AskGoods askGoods : list){
                 askGoods.setStorageCode(warehouseTransferCode);
@@ -100,21 +100,21 @@ public class WarehouseTransferServiceImpl implements WarehouseTransferService {
                 }
                 String materialId = askGoodsMapper.getMaterialId(askGoods.getWllbCode());//查询物料id
                 WarehouseTransfer warehouseTransfer = warehouseTransferMapper.getWarehouseTransferDetailed(askGoodsId, materialId);//查询移库申请内容
-                //入库流水信息
-                WarehousingVirtual WarehousingVirtual1 = new WarehousingVirtual()
-                        .setWllbCode(askGoods.getWllbCode()) //物料code
-                        .setSuppId(askGoods.getSupplierId())//供应商id
-                        .setSerial(askGoods.getSerial())//连翻号
-                        .setProducDate(askGoods.getProducDate())//批次
-                        .setNum(askGoods.getNum())//入库数量
-                        .setSeq("0")
-                        .setType(askGoods.getType())//入库类型
-                        .setUserId(askGoods.getUserId())//用户
-                        .setDepartmentId(askGoods.getDepartmentId())//部门
-                        .setStorageLocationCode(askGoods.getStorageLocationCode())//库位编号
-                        .setStorageCode(warehouseTransferCode)//移库单号
-                        .setWbs(warehouseTransfer.getWbs());//wbs
-                warehousing.add(WarehousingVirtual1);
+//                //入库流水信息
+//                WarehousingVirtual WarehousingVirtual1 = new WarehousingVirtual()
+//                        .setWllbCode(askGoods.getWllbCode()) //物料code
+//                        .setSuppId(askGoods.getSupplierId())//供应商id
+//                        .setSerial(askGoods.getSerial())//连翻号
+//                        .setProducDate(askGoods.getProducDate())//批次
+//                        .setNum(askGoods.getNum())//入库数量
+//                        .setSeq("0")
+//                        .setType(askGoods.getType())//入库类型
+//                        .setUserId(askGoods.getUserId())//用户
+//                        .setDepartmentId(askGoods.getDepartmentId())//部门
+//                        .setStorageLocationCode(askGoods.getStorageLocationCode())//库位编号
+//                        .setStorageCode(warehouseTransferCode)//移库单号
+//                        .setWbs(warehouseTransfer.getWbs());//wbs
+//                warehousing.add(WarehousingVirtual1);
                 askGoodsMapper.addRemoval(askGoods);//插入出库流水
                 askGoodsMapper.deleteVirtual(askGoods.getId());//删除已出虚拟表库存
                 warehouseTransferMapper.updateOutNum(askGoods.getNum(), askGoodsId, materialId);//修改出库数量
@@ -134,7 +134,7 @@ public class WarehouseTransferServiceImpl implements WarehouseTransferService {
                     .setAskGoodsWarehouseId(warehouseTransferF.getAskGoodsWarehouseId()) //要货仓库id
                     .setWarehouseTransferType(warehouseTransferF.getWarehouseTransferType()); //移库类型
             warehouseTransferMapper.addReturnGsWarehouseTransferF(warehouseTransfer1);//新增返回gs数据父表信息
-            warehousingMapper.addStorage(warehousing);//入库流水
+//            warehousingMapper.addStorage(warehousing);//入库流水
             map.put("data", warehouseTransferCode);
             map.put("msg", "200");
         }catch (Exception e){

+ 109 - 0
src/main/java/com/tld/service/impl/WebPrintServiceImpl.java

@@ -0,0 +1,109 @@
+package com.tld.service.impl;
+
+import com.tld.mapper.WebPrintMapper;
+import com.tld.model.TldPrint;
+import com.tld.service.WebPrintService;
+import com.tld.util.DateUtil;
+import lombok.RequiredArgsConstructor;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+@RequiredArgsConstructor
+public class WebPrintServiceImpl implements WebPrintService {
+
+    private final WebPrintMapper webPrintMapper;
+    //redis锁
+    @Autowired
+    private RedissonClient redissonClient;
+
+    @Override
+    public Map<String, Object> getSerial(TldPrint tldPrint, HttpServletRequest request) {
+        Map<String, Object> map = new HashMap<>();
+        //redis并发锁
+        RLock lock = redissonClient.getLock(request.getHeader("userId"));
+        lock.lock();
+        try{
+            tldPrint.setUserId(request.getHeader("userId"));
+            tldPrint.setProducDate(DateUtil.dateConversion(tldPrint.getProducDate()));
+            int count = webPrintMapper.getSerialCount(tldPrint);
+            String serial = generateSerial(count + "");
+            String num = generateNum(tldPrint.getNum());
+            String materialCode = generateMaterialCode(tldPrint.getMaterialCode());
+            String supplierCode = generateSupplierCode(tldPrint.getSupplierId());
+            tldPrint.setNum(num);
+            tldPrint.setSerial(serial);
+            webPrintMapper.addPrint(tldPrint);
+            String barCode = materialCode + supplierCode + tldPrint.getProducDate() + num + serial;
+            map.put("data", barCode);
+            map.put("msg", "200");
+        }catch (Exception e){
+            map.put("msg", "500");
+            map.put("errMsg", "失败");
+            e.printStackTrace();
+        } finally {
+            //释放锁
+            lock.unlock();
+        }
+        return map;
+    }
+    /**
+     * 供应商编号生成
+     * @param code 参数
+     * @return 供应商编号
+     */
+    public String generateSupplierCode(String code){
+        StringBuilder stringBuilder = new StringBuilder("1");
+        for(int i = 0; i < 7 - code.length(); i++){
+            stringBuilder.append("#");
+        }
+        stringBuilder.append(code);
+        return stringBuilder.toString();
+    }
+    /**
+     * 物料编号生成
+     * @param code 参数
+     * @return 物料编号
+     */
+    public String generateMaterialCode(String code){
+        StringBuilder stringBuilder = new StringBuilder("1");
+        for(int i = 0; i < 16 - code.length(); i++){
+            stringBuilder.append("#");
+        }
+        stringBuilder.append(code);
+        return stringBuilder.toString();
+    }
+
+    /**
+     * 连番号生成
+     * @param count 参数
+     * @return 连番号
+     */
+    public String generateSerial(String count){
+        StringBuilder stringBuilder = new StringBuilder("1");
+        for(int i = 0; i < 6 - count.length(); i++){
+            stringBuilder.append("0");
+        }
+        stringBuilder.append(count);
+        return stringBuilder.toString();
+    }
+    /**
+     * 数量生成
+     * @param num 参数
+     * @return 数量
+     */
+    public String generateNum(String num){
+        StringBuilder stringBuilder = new StringBuilder("1");
+        for(int i = 0; i < 6 - num.length(); i++){
+            stringBuilder.append("#");
+        }
+        stringBuilder.append(num);
+        return stringBuilder.toString();
+    }
+}

+ 14 - 0
src/main/resources/mapper/WebPrintMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.tld.mapper.WebPrintMapper">
+    <!-- 查询二维码生成条数 -->
+    <select id="getSerialCount" resultType="int">
+        select count(*) from tld_print where material_code = #{materialCode} and supplier_id = #{supplierId} and produc_date = #{producDate}
+    </select>
+    <!-- 新增信息 -->
+    <insert id="addPrint">
+        insert into tld_print(material_code,supplier_id,produc_date,num,serial,scrq,user_id,type)
+        value(#{materialCode},#{supplierId},#{producDate},#{num},#{serial},now(),#{userId},#{type})
+    </insert>
+</mapper>