Browse Source

无车优化,自有车接口返回

Administrator 1 year ago
parent
commit
1717f46ece

BIN
lib/sdk-waybill-protocol-1.3.12.jar


+ 2 - 2
pom.xml

@@ -300,11 +300,11 @@
 
         <!--无车-->
         <dependency>
-            <groupId>sdk-waybill-protocol-1.3.12</groupId>
+            <groupId>sdk-waybill-protocol-1.4</groupId>
             <artifactId>sdk</artifactId>
             <scope>system</scope>
             <version>1.0</version>
-            <systemPath>${project.basedir}/lib/sdk-waybill-protocol-1.3.12.jar</systemPath>
+            <systemPath>${project.basedir}/lib/sdk-waybill-protocol-1.4.jar</systemPath>
         </dependency>
         <!--有车-->
         <dependency>

+ 104 - 6
src/main/java/com/jkcredit/invoice/controller/business/NoCarController.java

@@ -1,5 +1,5 @@
 package com.jkcredit.invoice.controller.business;
-
+import com.jkcredit.invoice.service.nocar.WayBillFileService;
 import cn.afterturn.easypoi.excel.ExcelImportUtil;
 import cn.afterturn.easypoi.excel.entity.ImportParams;
 import com.alibaba.fastjson.JSON;
@@ -22,12 +22,17 @@ import com.jkcredit.invoice.service.nocar.NoCarBillWayImportService;
 import com.jkcredit.invoice.service.nocar.NoCarBillWayService;
 import com.jkcredit.invoice.service.nocar.NoCarRecService;
 import com.jkcredit.invoice.service.nocar.NocarInvoiceService;
+import com.jkcredit.invoice.util.Base64Utils;
+import com.jkcredit.invoice.util.DateUtil;
 import com.jkcredit.invoice.util.RespR;
+import com.jkcredit.invoice.util.ZipUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.apache.poi.util.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -41,7 +46,7 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-
+import com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo;
 import static com.jkcredit.invoice.common.CommonConst.*;
 
 @Api(tags = "无车操作")
@@ -83,6 +88,8 @@ public class NoCarController {
     CustomerOperService customerOperService;
     @Autowired
     private CheckHasAuthRole checkHasAuthRole;
+    @Autowired
+    private WayBillFileService wayBillFileService;
 
     /**
      * 分页查询无车备案信息
@@ -218,6 +225,26 @@ public class NoCarController {
         }
     }
 
+
+    /**
+     * 分页查询运单信息
+     *
+     * @param page 参数集
+     * @return 用户集合
+     */
+    @PostMapping("/findBatchFileList")
+    @ApiOperation(value = "分页查询运单协议上传", notes = "分页查询运单协议上传")
+    @LoginRequired(role = AuthenticationInterceptor.AUTH_NOCAR)
+    public RespR findBatchFileList(Page page, NoCarWayBillFileInfo noCarWayBillFileInfo, User user) {
+        try {
+            checkHasAuthRole.checkCustomerRole(user, noCarWayBillFileInfo.getCustomerId());
+            RespR respR = new RespR(wayBillFileService.selectAllFiles(page,noCarWayBillFileInfo));
+            return respR;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new RespR(false, e.getMessage());
+        }
+    }
     /**
      * 重新获取发票并更新状态
      *
@@ -421,7 +448,7 @@ public class NoCarController {
     @PostMapping("/batchImprotBillWay")
     @ApiOperation(value = "批量运单导入", notes = "批量运单导入")
     @LoginRequired(role = AuthenticationInterceptor.AUTH_NOCAR)
-    public RespR batchImprotBillWay(@RequestParam("file") MultipartFile file, @NotNull(message = "批量运单导入,客户名称不能为空") String customerName, User user) {
+    public RespR batchImprotBillWay(@RequestParam("file") MultipartFile file, @NotNull(message = "批量运单导入,客户名称不能为空") String customerName,String batchNum, User user) {
         try {
 
             if (null == file) {
@@ -435,14 +462,85 @@ public class NoCarController {
             params.setKeyIndex(2);
             List<NoCarWayBill> list = ExcelImportUtil.importExcel(file.getInputStream(), NoCarWayBill.class, params);
             buildDate(list);
-            RespR respR = noCarBillWayService.batchBillWayStart(list, customerName);
+            RespR respR = noCarBillWayService.batchBillWayStart(list, customerName,batchNum);
             return respR;
         } catch (Exception e) {
             e.printStackTrace();
             return new RespR(false, e.getMessage());
         }
     }
+    @Value("${param.fileTmp:/home/app/logs/temp}")
+    private String tempPath = "d:/log";
+    /**
+     * 批量运单导入
+     *
+     * @param file 参数集
+     * @return
+     */
+    @PostMapping("/batchImprotBillWayFile")
+    @ApiOperation(value = "批量文件导入", notes = "批量文件导入")
+    @LoginRequired(role = AuthenticationInterceptor.AUTH_NOCAR)
+    public RespR batchImprotBillWayFile(@RequestParam("file") MultipartFile file, @NotNull(message = "批量运单导入,客户名称不能为空") String customerName, User user) {
+        FileOutputStream fileOutputStream = null;
+        String realPath = "";
+        try {
+            log.info("开始导入文件{},{}M",file.getName(),file.getSize()/1024/1024);
+            if (null == file) {
+                return new RespR(false, "文件导入失败");
+            }
 
+            checkHasAuthRole.checkCustomerRole(user, customerName);
+            //将文件放到临时目录,
+            String batchNumber = "YDF" + System.currentTimeMillis();
+            realPath = tempPath+"/"+batchNumber+"/";
+            File file1 = new File(realPath);
+            file1.mkdirs();
+            fileOutputStream = new FileOutputStream(realPath+file.getOriginalFilename());
+            fileOutputStream.write(file.getBytes());
+            ZipUtils.unZipFiles(realPath+file.getOriginalFilename(),realPath+"out/");
+            File fileout = new File(realPath+"out/");
+            File [] files = fileout.listFiles();
+            while ( files.length>0&& files[0].isDirectory()){
+                files = fileout.listFiles()[0].listFiles();
+            }
+            for(int i=0;i<files.length;i++){
+               File  fileTemp = files[i];
+               NoCarWayBillFileInfo noCarWayBillFileInfo = new NoCarWayBillFileInfo();
+               noCarWayBillFileInfo.setCustomerId(customerName);
+               noCarWayBillFileInfo.setBatchNum(batchNumber);
+               noCarWayBillFileInfo.setUpdateTime(DateUtil.getCurrentDateStr());
+               noCarWayBillFileInfo.setBase64Str( Base64Utils.fileToBase64Str(fileTemp));
+               noCarWayBillFileInfo.setWayBillNum(fileTemp.getName());
+               wayBillFileService.insert(noCarWayBillFileInfo);
+            }
+            return new RespR(true);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new RespR(false, e.getMessage());
+        }finally {
+            if(fileOutputStream !=null){
+                try {
+                    fileOutputStream.close();
+                    FileUtils.deleteDirectory(new File(realPath));
+                }catch (IOException e){
+
+                }
+
+            }
+
+        }
+    }
+
+    public void deleteFile(File file){
+        if(file.isFile()){
+            file.delete();
+            return;
+        }
+        File [] files = file.listFiles();
+        for(File file1:files){
+            deleteFile(file1);
+        }
+    }
     /**
      * 批量运单导入
      *
@@ -452,7 +550,7 @@ public class NoCarController {
     @PostMapping("/batchImprotHistoryBillWay")
     @ApiOperation(value = "批量历史运单导入", notes = "批量历史运单导入")
     @LoginRequired(role = AuthenticationInterceptor.AUTH_NOCAR)
-    public RespR batchImprotHistoryBillWay(@RequestParam("file") MultipartFile file, @NotNull(message = "批量运单导入,客户名称不能为空") String customerName, User user) {
+    public RespR batchImprotHistoryBillWay(@RequestParam("file") MultipartFile file, @NotNull(message = "批量运单导入,客户名称不能为空") String customerName,String batchNum, User user) {
         try {
 
             if (null == file) {
@@ -467,7 +565,7 @@ public class NoCarController {
             List<NoCarWayBill> list = ExcelImportUtil.importExcel(file.getInputStream(), NoCarWayBill.class, params);
             log.info("batchImprotHistoryBillWay数量" + list.size());
             buildDate(list);
-            RespR respR = noCarBillWayService.batchHsitoryBillWay(list, customerName);
+            RespR respR = noCarBillWayService.batchHsitoryBillWay(list, customerName,batchNum);
             return respR;
         } catch (Exception e) {
             e.printStackTrace();

+ 2 - 0
src/main/java/com/jkcredit/invoice/credit/SimpleCoreFilter.java

@@ -128,9 +128,11 @@ public class SimpleCoreFilter implements Filter {
             "/noCar/findBillWay",
             "/noCar/findBillWayCust",
             "/noCar/findImportBillWay",
+            "/noCar/findBatchFileList",
             "/noCar/updateStatus",
             "/noCar/findBatchList",
             "/noCar/findNocarInvoicesStatic",
+            "/noCar/batchImprotBillWayFile",
             "/noCar/batchImprotBillWay",
             "/noCar/batchImprotHistoryBillWay",
             "/noCar/batchImprotEndBillWay",

+ 12 - 0
src/main/java/com/jkcredit/invoice/credit/interserver/NoCarInterServiceImpl.java

@@ -326,6 +326,12 @@ public class NoCarInterServiceImpl implements NoCarInterService {
                 return result;
             }
             NoCarWayBill noCarWayBill = getNoCarWayBill(appKey, num, plateNumber, plateColor, startTime, sourceAddr, destAddr, predictEndTime, fee, titleType, taxplayerCode, customerRec);
+            String base64Str = jsonObject.getString("base64Str");
+            String waybillFileName = jsonObject.getString("waybillFileName");
+            String contractType = jsonObject.getString("contractType");
+            noCarWayBill.setWaybillFileName(waybillFileName);
+            noCarWayBill.setBase64Str(base64Str);
+            noCarWayBill.setContractType(contractType);
             return getDataResult(appKey, data, costtimestart, result, customerRec, noCarWayBill);
         } catch (Exception e) {
             log.error("[-NoCarInterServiceImpl.noCarBillStart-] get httpclient exception is "
@@ -520,6 +526,12 @@ public class NoCarInterServiceImpl implements NoCarInterService {
                 return result;
             }
             NoCarWayBill noCarWayBill = getNoCarWayBills(appKey, num, plateNumber, plateColor, startTime, sourceAddr, destAddr, predictEndTime, fee, titleType, taxplayerCode, customerRec);
+            String base64Str = jsonObject.getString("base64Str");
+            String waybillFileName = jsonObject.getString("waybillFileName");
+            String contractType = jsonObject.getString("contractType");
+            noCarWayBill.setWaybillFileName(waybillFileName);
+            noCarWayBill.setBase64Str(base64Str);
+            noCarWayBill.setContractType(contractType);
             List<CustomerCarRec> customerCarRecs = new ArrayList<>();
             CustomerCarRec customerCarRec = new CustomerCarRec();
             customerCarRec.setCompanyName(noCarWayBill.getCompanyName());

+ 21 - 0
src/main/java/com/jkcredit/invoice/mapper/waybill/WayBillFileMapper.java

@@ -0,0 +1,21 @@
+package com.jkcredit.invoice.mapper.waybill;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+@Repository
+public interface WayBillFileMapper  extends BaseMapper<NoCarWayBillFileInfo> {
+
+    int insert(NoCarWayBillFileInfo noCarWayBillFileInfo);
+
+    IPage<List<NoCarWayBillFileInfo>> selectAllFiles(Page page, @Param("noCarWayBillFileInfo")NoCarWayBillFileInfo noCarWayBillFileInfo);
+
+    NoCarWayBillFileInfo selectFileInfo(@Param("batchNum") String batchNum, @Param("wayBillNum") String wayBillNum);
+
+    NoCarWayBillFileInfo selectFileInfoNoFile(@Param("batchNum") String batchNum, @Param("wayBillNum") String wayBillNum);
+
+}

+ 52 - 0
src/main/java/com/jkcredit/invoice/model/entity/waybill/NoCarWayBill.java

@@ -149,6 +149,25 @@ public class NoCarWayBill implements Cloneable {
     private String companyBankAcc;
 
     /**
+     * 文件批次号
+     */
+    private String fileBatchNum;
+    /**
+     * 协议名称
+     */
+    private String waybillFileName;
+
+    /**
+     * base64文件流
+     */
+    private String base64Str;
+
+    /**
+     * 协议类型
+     */
+    private String contractType;
+
+    /**
      * 平台操作批次号
      */
     private String batchNum;
@@ -183,6 +202,7 @@ public class NoCarWayBill implements Cloneable {
      */
     private String success;
 
+
     /**
      * 类型 0 接口 1平台 4 迁移取票完成
      */
@@ -523,6 +543,38 @@ public class NoCarWayBill implements Cloneable {
         return splitFlag;
     }
 
+    public String getWaybillFileName() {
+        return waybillFileName;
+    }
+
+    public void setWaybillFileName(String waybillFileName) {
+        this.waybillFileName = waybillFileName;
+    }
+
+    public String getBase64Str() {
+        return base64Str;
+    }
+
+    public void setBase64Str(String base64Str) {
+        this.base64Str = base64Str;
+    }
+
+    public String getContractType() {
+        return contractType;
+    }
+
+    public void setContractType(String contractType) {
+        this.contractType = contractType;
+    }
+
+    public String getFileBatchNum() {
+        return fileBatchNum;
+    }
+
+    public void setFileBatchNum(String fileBatchNum) {
+        this.fileBatchNum = fileBatchNum;
+    }
+
     public void setSplitFlag(byte splitFlag) {
         this.splitFlag = splitFlag;
     }

+ 78 - 0
src/main/java/com/jkcredit/invoice/model/entity/waybill/NoCarWayBillFileInfo.java

@@ -0,0 +1,78 @@
+package com.jkcredit.invoice.model.entity.waybill;
+
+/**
+ * 运单文件信息
+ */
+public class NoCarWayBillFileInfo {
+    private String customerId;
+
+    private String companyName;
+
+
+    /**
+     * 运单号
+     */
+    private String wayBillNum;
+    /**
+     * 批次号
+     */
+    private String batchNum;
+
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+
+    /**
+     * base64文件流
+     */
+    private String base64Str;
+
+    public String getWayBillNum() {
+        return wayBillNum;
+    }
+
+    public void setWayBillNum(String wayBillNum) {
+        this.wayBillNum = wayBillNum;
+    }
+
+    public String getBatchNum() {
+        return batchNum;
+    }
+
+    public void setBatchNum(String batchNum) {
+        this.batchNum = batchNum;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getBase64Str() {
+        return base64Str;
+    }
+
+    public void setBase64Str(String base64Str) {
+        this.base64Str = base64Str;
+    }
+
+    public String getCustomerId() {
+        return customerId;
+    }
+
+    public void setCustomerId(String customerId) {
+        this.customerId = customerId;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+}

+ 7 - 1
src/main/java/com/jkcredit/invoice/service/customer/impl/CustomerOperServiceImpl.java

@@ -51,7 +51,13 @@ public class CustomerOperServiceImpl extends ServiceImpl<CustomerOperMapper, Cus
         log.info("开始保存批次信息CustomerOperServiceImpl.saveCustomerOper:(" + customerName + "," + operType + ")");
         //保存批次信息
         User user = userMapper.getUserByUserName(customerName);
-        String batchNumber = "YD" + System.currentTimeMillis();
+
+        String batchNumber = "";
+        if(operType == 1){
+            batchNumber = "YD" + System.currentTimeMillis();
+        }else{
+
+        }
         CustomerOper customerOper = new CustomerOper();
         customerOper.setOperType(operType);
         customerOper.setCompany(user.getCompany());

+ 21 - 3
src/main/java/com/jkcredit/invoice/service/lowerservice/impl/NoCarServiceImpl.java

@@ -42,9 +42,9 @@ import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
-
+import com.jkcredit.invoice.mapper.waybill.WayBillFileMapper;
 import java.util.*;
-
+import com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo;
 import static com.jkcredit.invoice.common.CommonConst.*;
 
 /**
@@ -297,7 +297,8 @@ public class NoCarServiceImpl implements NoCarService {
             }
         }
     }
-
+    @Autowired
+    private WayBillFileMapper wayBillFileMapper;
     /**
      * 组装指令报文
      */
@@ -321,6 +322,15 @@ public class NoCarServiceImpl implements NoCarService {
         waybillStartRequest.setBank(noCarWayBill.getCompanyBank());
         waybillStartRequest.setBankAccount(noCarWayBill.getCompanyBankAcc());
         waybillStartRequest.setCompanyName(noCarWayBill.getCompanyName());
+        if(noCarWayBill.getBase64Str() == null){
+           NoCarWayBillFileInfo noCarWayBillFileInfo =  wayBillFileMapper.selectFileInfo(noCarWayBill.getFileBatchNum(),noCarWayBill.getBillNum());
+           waybillStartRequest.setWaybillFileName(noCarWayBillFileInfo.getWayBillNum());
+           waybillStartRequest.setBase64Str(noCarWayBillFileInfo.getBase64Str());
+        }else {
+            waybillStartRequest.setWaybillFileName(noCarWayBill.getWaybillFileName());
+            waybillStartRequest.setBase64Str(noCarWayBill.getBase64Str());
+        }
+        waybillStartRequest.setContractType(1);
         return waybillStartRequest;
     }
 
@@ -553,6 +563,14 @@ public class NoCarServiceImpl implements NoCarService {
         waybillStartRequest.setTel(noCarWayBill.getCompanyTel());
         waybillStartRequest.setBank(noCarWayBill.getCompanyBank());
         waybillStartRequest.setBankAccount(noCarWayBill.getCompanyBankAcc());
+        if(noCarWayBill.getBase64Str() == null){
+            NoCarWayBillFileInfo noCarWayBillFileInfo =  wayBillFileMapper.selectFileInfo(noCarWayBill.getFileBatchNum(),noCarWayBill.getBillNum());
+            waybillStartRequest.setWaybillFileName(noCarWayBillFileInfo.getWayBillNum());
+            waybillStartRequest.setBase64Str(noCarWayBillFileInfo.getBase64Str());
+        }else {
+            waybillStartRequest.setWaybillFileName(noCarWayBill.getWaybillFileName());
+            waybillStartRequest.setBase64Str(noCarWayBill.getBase64Str());
+        }
         return waybillStartRequest;
     }
 

+ 2 - 2
src/main/java/com/jkcredit/invoice/service/nocar/NoCarBillWayService.java

@@ -36,7 +36,7 @@ public interface NoCarBillWayService {
      * @param customerName
      * @return
      */
-    RespR batchBillWayStart(List<NoCarWayBill> noCarWayBills, String customerName);
+    RespR batchBillWayStart(List<NoCarWayBill> noCarWayBills, String customerName,String fileBatchNum);
 
     /**
      * 批量结束运单数据
@@ -52,7 +52,7 @@ public interface NoCarBillWayService {
      * @param customerName
      * @return
      */
-    RespR batchHsitoryBillWay(List<NoCarWayBill> noCarWayBills, String customerName);
+    RespR batchHsitoryBillWay(List<NoCarWayBill> noCarWayBills, String customerName,String batchNum);
 
     /**
      * 查询运单导入记录

+ 19 - 0
src/main/java/com/jkcredit/invoice/service/nocar/WayBillFileService.java

@@ -0,0 +1,19 @@
+package com.jkcredit.invoice.service.nocar;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface WayBillFileService {
+    int insert(NoCarWayBillFileInfo noCarWayBillFileInfo);
+
+    IPage<List<NoCarWayBillFileInfo>> selectAllFiles(Page page, @Param("noCarWayBillFileInfo")NoCarWayBillFileInfo noCarWayBillFileInfo);
+
+    NoCarWayBillFileInfo selectFileInfo(String batchNum,String wayBillNum);
+
+    NoCarWayBillFileInfo selectFileInfoNoFile(String batchNum,String wayBillNum);
+
+}

+ 4 - 3
src/main/java/com/jkcredit/invoice/service/nocar/impl/NoCarBillWayServiceImpl.java

@@ -89,7 +89,7 @@ public class NoCarBillWayServiceImpl extends ServiceImpl<NoCarWaybillMapper, NoC
     }
 
     @Override
-    public RespR batchBillWayStart(List<NoCarWayBill> noCarWayBills, String customerName) {
+    public RespR batchBillWayStart(List<NoCarWayBill> noCarWayBills, String customerName,String fileBatchNum) {
         log.info("开始平台指令上传NoCarBillWayServiceImpl.batchBillWayStart,上传数量" + noCarWayBills.size());
         if (!customerService.checkMoneyEnough(customerName)) {
             return new RespR(false, "余额不足");
@@ -159,7 +159,7 @@ public class NoCarBillWayServiceImpl extends ServiceImpl<NoCarWaybillMapper, NoC
                         return;
                     }
                 }
-
+                noCarWayBill.setFileBatchNum(fileBatchNum);
 
                 //3.进行上传
                 RespR respR = noCarService.noCarWaybillStart(noCarWayBill);
@@ -181,7 +181,7 @@ public class NoCarBillWayServiceImpl extends ServiceImpl<NoCarWaybillMapper, NoC
     }
 
     @Override
-    public RespR batchHsitoryBillWay(List<NoCarWayBill> noCarWayBills, String customerName) {
+    public RespR batchHsitoryBillWay(List<NoCarWayBill> noCarWayBills, String customerName,String fileBatchNum) {
         if (!customerService.checkMoneyEnough(customerName)) {
             return new RespR(false, "余额不足");
         }
@@ -220,6 +220,7 @@ public class NoCarBillWayServiceImpl extends ServiceImpl<NoCarWaybillMapper, NoC
                         e.printStackTrace();
                         noCarWayBillClo = noCarWayBill;
                     }
+                    noCarWayBill.setFileBatchNum(fileBatchNum);
                     RespR respR = noCarService.noCarHisWaybillStart(noCarWayBill);
                     if (respR.getCode() == 1) {
                         stringBuffer.append("#").append(noCarWayBill.getBillNum()).append(":").append(respR.getMsg()).append("#");

+ 35 - 0
src/main/java/com/jkcredit/invoice/service/nocar/impl/WayBillFileServiceImpl.java

@@ -0,0 +1,35 @@
+package com.jkcredit.invoice.service.nocar.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jkcredit.invoice.mapper.waybill.WayBillFileMapper;
+import com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo;
+import com.jkcredit.invoice.service.nocar.WayBillFileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+@Service
+public class WayBillFileServiceImpl extends ServiceImpl<WayBillFileMapper, NoCarWayBillFileInfo> implements WayBillFileService {
+    @Autowired
+    WayBillFileMapper wayBillFileMapper;
+    @Override
+    public int insert(NoCarWayBillFileInfo noCarWayBillFileInfo) {
+        return wayBillFileMapper.insert(noCarWayBillFileInfo);
+    }
+
+    @Override
+    public IPage<List<NoCarWayBillFileInfo>> selectAllFiles(Page page, NoCarWayBillFileInfo noCarWayBillFileInfo) {
+        return wayBillFileMapper.selectAllFiles( page, noCarWayBillFileInfo);
+    }
+
+    @Override
+    public NoCarWayBillFileInfo selectFileInfo(String batchNum,String wayBillNum) {
+        return wayBillFileMapper.selectFileInfo(batchNum,wayBillNum);
+    }
+
+    @Override
+    public NoCarWayBillFileInfo selectFileInfoNoFile(String batchNum,String wayBillNum) {
+        return wayBillFileMapper.selectFileInfoNoFile(batchNum,wayBillNum);
+    }
+}

+ 60 - 10
src/main/java/com/jkcredit/invoice/util/ZipUtils.java

@@ -1,7 +1,10 @@
 package com.jkcredit.invoice.util;
 
 import java.io.*;
+import java.nio.charset.Charset;
+import java.util.Enumeration;
 import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
 import java.util.zip.ZipOutputStream;
 
 /**
@@ -84,14 +87,61 @@ public class ZipUtils {
             inputFile.delete();
         }
     }
-// public static void main(String[] args) {
-//   ZipUtil cpr = new ZipUtil();
-//   try {
-//     cpr.zip("C:/Users/Lenovo User/Desktop/test中文.zip", "C:/Users/Lenovo User/Desktop/新建文件夹", false);
-//     cpr.unZip("C:/Users/Lenovo User/Desktop/test中文.zip", "C:/Users/Lenovo User/Desktop/新建文件夹2", false);
-//   } catch (Exception e) {
-//     e.printStackTrace();
-//   }
-//
-// }
+
+
+    /**
+     * 解压文件
+     *
+     * @param zipFilePath:需要解压缩的文件
+     * @param descDir:解压后的目标目录
+     */
+    public static void unZipFiles(String zipFilePath, String descDir) throws IOException {
+        File destFile = new File(descDir);
+        if (!destFile.exists()) {
+            destFile.mkdirs();
+        }
+        // 解决zip文件中有中文目录或者中文文件
+        ZipFile zip = new ZipFile(zipFilePath, Charset.forName("GBK"));
+        for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) {
+            ZipEntry entry = (ZipEntry) entries.nextElement();
+            InputStream in = zip.getInputStream(entry);
+            String curEntryName = entry.getName();
+            // 判断文件名路径是否存在文件夹
+            int endIndex = curEntryName.lastIndexOf('/');
+            // 替换
+            String outPath = (descDir + curEntryName).replaceAll("\\\\", "/");
+            if (endIndex != -1) {
+                File file = new File(outPath.substring(0, outPath.lastIndexOf("/")));
+                if (!file.exists()) {
+                    file.mkdirs();
+                }
+            }
+
+            // 判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
+            File outFile = new File(outPath);
+            if (outFile.isDirectory()) {
+                continue;
+            }
+            OutputStream out = new FileOutputStream(outPath);
+            byte[] buf1 = new byte[1024];
+            int len;
+            while ((len = in.read(buf1)) > 0) {
+                out.write(buf1, 0, len);
+            }
+            in.close();
+            out.close();
+        }
+        zip.close();
+    }
+
+ public static void main(String[] args) {
+
+   try {
+
+     ZipUtils.unZipFiles("E:\\test\\test.zip", "E:\\test\\out\\");
+   } catch (Exception e) {
+     e.printStackTrace();
+   }
+
+ }
 }

+ 57 - 0
src/main/resources/mapper/waybill/WayBillFileMapper.xml

@@ -0,0 +1,57 @@
+<?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.jkcredit.invoice.mapper.waybill.WayBillFileMapper">
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo">
+        <result column="wayBillNum" property="wayBillNum"/>
+        <result column="batchNum" property="batchNum"/>
+        <result column="updateTime" property="updateTime"/>
+    </resultMap>
+
+    <resultMap id="BaseResultWithFileMap" extends="BaseResultMap" type="com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo">
+        <result column="base64Str" property="base64Str"/>
+    </resultMap>
+
+    <sql id="baseSql">
+         customerId,
+         companyName,
+         batchNum,
+         wayBillNum,
+         updateTime
+    </sql>
+
+    <select id="selectAllFiles" resultMap="BaseResultMap">
+        select
+        <include refid="baseSql" />
+        from t_waybill_File
+        <where>
+            <if test="noCarWayBillFileInfo.batchNum != null and noCarWayBillFileInfo.batchNum != ''">
+                and  batchNum =  BINARY #{noCarWayBillFileInfo.batchNum}
+            </if>
+            <if test="noCarWayBillFileInfo.wayBillNum != null and noCarWayBillFileInfo.wayBillNum != ''">
+                and  wayBillNum like concat(#{noCarWayBillFileInfo.wayBillNum,jdbcType=VARCHAR},'%')
+            </if>
+        </where>
+        ORDER  by batchNum desc
+    </select>
+    <insert id="insert" parameterType="com.jkcredit.invoice.model.entity.waybill.NoCarWayBillFileInfo" >
+        insert into t_waybill_File (
+           customerId,
+            companyName,
+            batchNum,
+            wayBillNum,
+            updateTime,
+            base64Str
+        )
+        values( #{customerId,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR}, #{batchNum,jdbcType=VARCHAR}, #{wayBillNum,jdbcType=VARCHAR},
+            #{updateTime,jdbcType=VARCHAR}, #{base64Str,jdbcType=VARCHAR})
+    </insert>
+
+
+  <select id="selectFileInfo" parameterType="java.lang.String" resultMap="BaseResultWithFileMap">
+      select <include refid="baseSql" />,base64Str from t_waybill_File where batchNum=#{batchNum,jdbcType=VARCHAR} and wayBillNum like concat(#{wayBillNum,jdbcType=VARCHAR},'%')
+  </select>
+    <select id="selectFileInfoNoFile" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+        select <include refid="baseSql" /> from t_waybill_File where batchNum=#{batchNum,jdbcType=VARCHAR} and wayBillNum like concat(#{wayBillNum,jdbcType=VARCHAR},'%')
+    </select>
+</mapper>