瀏覽代碼

Merge branch 'master_liaozeyong' of http://121.40.253.172:3000/pengyue/jsh_erp into master_huangjunjie

# Conflicts:
#	docs/new_sql.sql
#	src/main/java/com/jsh/erp/controller/pda/PdaController.java
#	src/main/java/com/jsh/erp/filter/LogCostFilter.java
huang 1 月之前
父節點
當前提交
dde4cc03eb

+ 10 - 0
docs/new_sql.sql

@@ -102,3 +102,13 @@ CREATE TABLE `jsh_inventory_log` (
   `update_user` bigint DEFAULT NULL COMMENT '更新用户',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='库存修改日志表';
+
+CREATE TABLE `apk_version` (
+    `id` bigint NOT NULL COMMENT '主键ID',
+    `url` varchar(255) DEFAULT NULL COMMENT '下载地址',
+    `version` varchar(255) DEFAULT NULL COMMENT '版本号',
+    `name` varchar(255) DEFAULT NULL COMMENT '名称',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `delete_flag` tinyint DEFAULT NULL COMMENT '是否删除',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

+ 55 - 2
src/main/java/com/jsh/erp/controller/pda/PdaController.java

@@ -25,13 +25,21 @@ import com.jsh.erp.datasource.vo.TaskStocktakingVO;
 import com.jsh.erp.datasource.vo.TreeNode;
 import com.jsh.erp.query.LambdaQueryWrapperX;
 import com.jsh.erp.service.*;
+import com.jsh.erp.utils.FileUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
 import java.math.BigDecimal;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Date;
 import java.util.List;
 
@@ -67,6 +75,9 @@ public class PdaController extends BaseController {
     @Resource
     private MaterialExtendService materialExtendService;
 
+    @Resource
+    private ApkVersionService apkVersionService;
+
     /**
      * 采购入库
      * @return
@@ -177,7 +188,6 @@ public class PdaController extends BaseController {
     @ApiOperation("开始任务")
     @GetMapping("/startTask/{id}")
     public AjaxResult startTask(@PathVariable("id") Long id){
-
         taskStocktakingService.update(new UpdateWrapper<TaskStocktaking>()
                 .set("task_status", 2)
                 .eq("id", id));
@@ -233,7 +243,6 @@ public class PdaController extends BaseController {
         return AjaxResult.success();
     }
 
-
     @ApiOperation("负责人下拉列表")
     @GetMapping("/creatorSpinnerList/{taskId}")
     public AjaxResult creatorSpinnerList(@PathVariable("taskId") Long taskId) {
@@ -289,4 +298,48 @@ public class PdaController extends BaseController {
     }
 
 
+    @ApiOperation("下载安装包")
+    @PostMapping("/downloadApk")
+    public void downloadApk(@RequestBody ApkVersion apkVersion, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // 将文件路径转换为 Path 对象
+        Path path = Paths.get(apkVersion.getUrl()).toAbsolutePath().normalize();
+        File file = path.toFile();
+        String fileUrl = apkVersion.getUrl();
+        // 检查文件是否存在
+        if (!file.exists() || !file.isFile()) {
+            return;
+        }
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        inputStream = new BufferedInputStream(new FileInputStream(fileUrl));
+        outputStream = response.getOutputStream();
+        byte[] buf = new byte[1024];
+        int len;
+        while ((len = inputStream.read(buf)) > 0) {
+            outputStream.write(buf, 0, len);
+        }
+        response.flushBuffer();
+        if (inputStream != null) {
+            try {
+                inputStream.close();
+            } catch (IOException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+        if (outputStream != null) {
+            try {
+                outputStream.close();
+            } catch (IOException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+    }
+
+    @ApiOperation("查询版本信息")
+    @GetMapping("selectVersion")
+    public AjaxResult selectVersion() {
+        ApkVersion apkVersion = apkVersionService.getOne(new LambdaQueryWrapperX<ApkVersion>().orderByDesc(ApkVersion::getId).last("limit 1"));
+        return AjaxResult.success(apkVersion);
+    }
+
 }

+ 29 - 0
src/main/java/com/jsh/erp/datasource/entities/ApkVersion.java

@@ -0,0 +1,29 @@
+package com.jsh.erp.datasource.entities;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ApkVersion {
+
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+    @ApiModelProperty(value = "版本号")
+    private String version;
+
+    @ApiModelProperty(value = "下载地址")
+    private String url;
+
+    @ApiModelProperty(value = "版本名称")
+    private String name;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "是否删除")
+    private boolean deleteFlag;
+
+}

+ 9 - 0
src/main/java/com/jsh/erp/datasource/mappers/ApkVersionMapper.java

@@ -0,0 +1,9 @@
+package com.jsh.erp.datasource.mappers;
+
+
+import com.jsh.erp.datasource.entities.ApkVersion;
+
+public interface ApkVersionMapper extends BaseMapperX<ApkVersion> {
+
+
+}

+ 8 - 0
src/main/java/com/jsh/erp/service/ApkVersionService.java

@@ -0,0 +1,8 @@
+package com.jsh.erp.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jsh.erp.datasource.entities.ApkVersion;
+
+public interface ApkVersionService extends IService<ApkVersion> {
+
+}

+ 17 - 0
src/main/java/com/jsh/erp/service/impl/ApkVersionServiceImpl.java

@@ -0,0 +1,17 @@
+package com.jsh.erp.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jsh.erp.datasource.entities.ApkVersion;
+import com.jsh.erp.datasource.mappers.ApkVersionMapper;
+import com.jsh.erp.service.ApkVersionService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class ApkVersionServiceImpl extends ServiceImpl<ApkVersionMapper, ApkVersion> implements ApkVersionService {
+
+}

+ 31 - 0
src/main/java/com/jsh/erp/utils/FileUtils.java

@@ -1,6 +1,8 @@
 package com.jsh.erp.utils;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.*;
+import java.net.URLEncoder;
 import java.util.*;
 
 /**
@@ -317,4 +319,33 @@ public class FileUtils {
 		fileName = fileName.replace("=","").replace(",","").replace("&","");
 		return fileName;
 	}
+
+	public static String setFileDownloadHeader(HttpServletRequest request, String fileName)
+			throws UnsupportedEncodingException
+	{
+		final String agent = request.getHeader("USER-AGENT");
+		String filename = fileName;
+		if (agent.contains("MSIE"))
+		{
+			// IE浏览器
+			filename = URLEncoder.encode(filename, "utf-8");
+			filename = filename.replace("+", " ");
+		}
+		else if (agent.contains("Firefox"))
+		{
+			// 火狐浏览器
+			filename = new String(fileName.getBytes(), "ISO8859-1");
+		}
+		else if (agent.contains("Chrome"))
+		{
+			// google浏览器
+			filename = URLEncoder.encode(filename, "utf-8");
+		}
+		else
+		{
+			// 其它浏览器
+			filename = URLEncoder.encode(filename, "utf-8");
+		}
+		return filename;
+	}
 }