Bladeren bron

'采购订单重新导入数据'

HUJIANGUO 3 jaren geleden
bovenliggende
commit
ed838f8175

+ 42 - 23
pom.xml

@@ -160,33 +160,52 @@
             <artifactId>slf4j-nop</artifactId>
             <version>1.7.21</version>
         </dependency>
+
+        <!-- ftpclient -->
+        <dependency>
+            <groupId>commons-net</groupId>
+            <artifactId>commons-net</artifactId>
+            <version>3.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.16.20</version>
+        </dependency>
+        <!--        SpringDataJpa-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
     </dependencies>
     <build>
         <plugins>
                         <!-- 自动生成代码文件-->
-            <plugin>
-                <groupId>com.steerinfo</groupId>
-                <artifactId>generator-maven-plugin</artifactId>
-                <version>3.0</version>
-                <configuration>
-                    <connUrl>jdbc:oracle:thin:@172.16.33.163:1521:ilsdbpri</connUrl>
-                    <user>dil</user>
-                    <password>Dil123789</password>
-                    <!--包名-->
-                    <targetPackage>com.steerinfo.dil</targetPackage>
-                    <tables>
-                        <table></table>
-                    </tables>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>steerinfo</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
+<!--            <plugin>-->
+<!--                <groupId>com.steerinfo</groupId>-->
+<!--                <artifactId>generator-maven-plugin</artifactId>-->
+<!--                <version>3.0</version>-->
+<!--                <configuration>-->
+<!--                    <connUrl>jdbc:oracle:thin:@172.16.33.163:1521:ilsdbpri</connUrl>-->
+<!--                    <user>dil</user>-->
+<!--                    <password>Dil123789</password>-->
+<!--                    &lt;!&ndash;包名&ndash;&gt;-->
+<!--                    <targetPackage>com.steerinfo.dil</targetPackage>-->
+<!--                    <tables>-->
+<!--                        <table></table>-->
+<!--                    </tables>-->
+<!--                </configuration>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <phase>compile</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>steerinfo</goal>-->
+<!--                        </goals>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>

+ 3 - 51
src/main/java/com/steerinfo/dil/controller/RmsMaterialSteelController.java

@@ -41,57 +41,9 @@ public class RmsMaterialSteelController extends BaseRESTfulController {
 
 
     @PostMapping("/upload")
-    public Map<String, Object> fileupload(MultipartFile file, HttpServletRequest req) {
-        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
-        //首先要给文件找一个目录
-        //先写返回值
-        Map<String, Object> result = new HashMap<>();
-        //再用pdf格式开始书写,先找原始的名字
-        String originName = file.getOriginalFilename();
-        //判断文件类型是不是pdf
-        if(!originName.endsWith(".pdf")){
-            //如果不是的话,就返回类型
-            result.put("status","error");
-            result.put("msg","文件类型不对");
-            return result;
-        }
-        //如果是正确的话,就需要写保存文件的文件夹
-        //.format(new Date())的意思是 也就是格式化一个新的时间
-        //Date会创建一个时间,然后会按照当前的sdf格式调用format将当前时间创建出来 直接调用new Date()可能会出现这种格式
-        //Sun Feb 28 10:55:06 CST 2021
-        //再是getServletContext
-        String format=sdf.format(new Date());
-        //这也是一个临时的路径,项目重启之后,他就会变的
-        String realPath = req.getServletContext().getRealPath("/") +format;
-        //再是保存文件的文件夹
-        File folder = new File(realPath);
-        //如果不存在,就自己创建
-        if(!folder.exists()){
-            folder.mkdirs();
-        }
-        String newName = UUID.randomUUID().toString() + ".pdf";
-        //然后就可以保存了
-        try {
-            file.transferTo(new File(folder,newName));
-            //这个还有一个url
-            String url= req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+format+newName;
-            //如果指向成功了
-            result.put("status","success");
-            result.put("url",url);
-            // 得到炉号
-            int index = originName.indexOf(".");
-            String materialFurnaceNumber = originName.substring(0, index);
-            Map<String,Object> map = new HashMap<>();
-            map.put("materialFurnaceNumber",materialFurnaceNumber);
-            map.put("conclusionUrl",realPath);
-            // 修改钢材质检结果
-            Integer code = rmsMaterialSteelService.updateMaterialQuality(map);
-        } catch (IOException e) {
-            //返回异常
-            result.put("status","error");
-            result.put("msg",e.getMessage());
-        }
-        return  result;
+    @ResponseBody
+    public Map<String, String> uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
+        return rmsMaterialSteelService.upFile(file, request);//这里调用service的upfile方法,传入两个参数。
     }
 
 }

+ 6 - 0
src/main/java/com/steerinfo/dil/service/IRmsMaterialSteelService.java

@@ -1,5 +1,9 @@
 package com.steerinfo.dil.service;
 
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -29,4 +33,6 @@ public interface IRmsMaterialSteelService {
      * @return
      */
     Integer updateMaterialQuality(Map<String, Object> map);
+
+    Map<String, String> upFile(MultipartFile file, HttpServletRequest request) throws IOException;
 }

+ 16 - 0
src/main/java/com/steerinfo/dil/service/ResourceRepository.java

@@ -0,0 +1,16 @@
+package com.steerinfo.dil.service;
+
+import org.springframework.core.io.Resource;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/12/8 11:44
+ * @Version:V2.0
+ */
+public interface ResourceRepository extends JpaRepository<Resource, String> {
+
+    Resource findResourceByName(String Name);//可以不用写这些方法,如果你只用了save这一个方法
+    Resource findResourceById(String Id);
+}

+ 25 - 23
src/main/java/com/steerinfo/dil/service/impl/AmsPurchaseOrderServiceImpl.java

@@ -19,6 +19,7 @@ import java.util.Map;
 
 /**
  * AmsPurchaseOrder服务实现:
+ *
  * @author generator
  * @version 1.0-SNAPSHORT 2021-10-23 02:50
  * 类描述
@@ -27,8 +28,8 @@ import java.util.Map;
  * 作者:generator
  * 参考:
  * 描述:AmsPurchaseOrder服务实现
- * @see null
  * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ * @see null
  */
 @Service(value = "amsPurchaseOrderService")
 public class AmsPurchaseOrderServiceImpl implements IAmsPurchaseOrderService {
@@ -40,6 +41,7 @@ public class AmsPurchaseOrderServiceImpl implements IAmsPurchaseOrderService {
 
     /**
      * 采购订单管理
+     *
      * @param mapVal
      * @return
      */
@@ -55,28 +57,28 @@ public class AmsPurchaseOrderServiceImpl implements IAmsPurchaseOrderService {
         String materialCode = (String) mapVal.get("materialCode");
         // 得到外轮船名
         String resultForeignShipName = (String) mapVal.get("resultForeignShipName");
-        Map<String,Object> map = new HashMap<>();
-        map.put("materialCode",materialCode);
+        Map<String, Object> map = new HashMap<>();
+        map.put("materialCode", materialCode);
         BigDecimal materialId = amsPurchaseOrderMapper.getMaterialId(materialCode);
-        map.put("resultForeignShipName",resultForeignShipName);
+        map.put("resultForeignShipName", resultForeignShipName);
         // 得到批次
         BigDecimal batchId;
-        if (amsPurchaseOrderMapper.getBatchId(map) == null) {
-            DilBatch dilBatch = new DilBatch();
-            batchId = dilBatchMapper.selectBatchId();
-            dilBatch.setBatchId(batchId);
-            dilBatch.setResultForeignShipName(resultForeignShipName);
-            dilBatch.setMaterialId(materialId);
-            dilBatch.setInsertTime(new Date());
-            dilBatch.setUpdateTime(new Date());
-            dilBatch.setInsertUsername("admin");
-            dilBatch.setUpdateUsername("admin");
-            dilBatch.setInsertUpdateRemark("无");
-            dilBatchMapper.insertSelective(dilBatch);
-        }
-        else {
-            batchId = amsPurchaseOrderMapper.getBatchId(map);
-        }
+//        if (amsPurchaseOrderMapper.getBatchId(map) == null) {
+        DilBatch dilBatch = new DilBatch();
+        batchId = dilBatchMapper.selectBatchId();
+        dilBatch.setBatchId(batchId);
+        dilBatch.setResultForeignShipName(resultForeignShipName);
+        dilBatch.setMaterialId(materialId);
+        dilBatch.setInsertTime(new Date());
+        dilBatch.setUpdateTime(new Date());
+        dilBatch.setInsertUsername("admin");
+        dilBatch.setUpdateUsername("admin");
+        dilBatch.setInsertUpdateRemark("无");
+        dilBatchMapper.insertSelective(dilBatch);
+//        }
+//        else {
+//            batchId = amsPurchaseOrderMapper.getBatchId(map);
+//        }
         // 得到采购员
         String purchaseOrderBuyer = (String) mapVal.get("purchaseOrderBuyer");
 //        // 得到发货单位
@@ -117,10 +119,10 @@ public class AmsPurchaseOrderServiceImpl implements IAmsPurchaseOrderService {
         amsPurchaseOrder.setUpdateTime(new Date());
         amsPurchaseOrder.setUpdateUsername("admin");
         amsPurchaseOrder.setInsertUpdateRemark("无");
-        Map<String,Object> map1 = new HashMap<>();
+        Map<String, Object> map1 = new HashMap<>();
         BigDecimal deleted = new BigDecimal(0);
-        map1.put("purchaseOrderNo",purchaseOrderNo);
-        map1.put("deleted",deleted);
+        map1.put("purchaseOrderNo", purchaseOrderNo);
+        map1.put("deleted", deleted);
         List<AmsPurchaseOrder> amsPurchaseOrders = amsPurchaseOrderMapper.selectByParameters(map1);
         // 新增
         if (amsPurchaseOrders.size() == 0) {

+ 46 - 0
src/main/java/com/steerinfo/dil/service/impl/RmsMaterialSteelServiceImpl.java

@@ -2,9 +2,16 @@ package com.steerinfo.dil.service.impl;
 
 import com.steerinfo.dil.mapper.RmsMaterialSteelMapper;
 import com.steerinfo.dil.service.IRmsMaterialSteelService;
+import com.steerinfo.dil.service.ResourceRepository;
+import com.steerinfo.dil.util.FtpUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -26,6 +33,11 @@ public class RmsMaterialSteelServiceImpl implements IRmsMaterialSteelService {
     @Autowired
     private RmsMaterialSteelMapper rmsMaterialSteelMapper;
 
+    @Autowired
+    FtpUtil ftpUtil;
+
+    @Autowired
+    private ResourceRepository repository;
     /**
      * 得到没有质保书的炉号
      * @return
@@ -44,4 +56,38 @@ public class RmsMaterialSteelServiceImpl implements IRmsMaterialSteelService {
     public Integer updateMaterialQuality(Map<String, Object> map) {
         return rmsMaterialSteelMapper.updateMaterialQuality(map);
     }
+
+
+    /**
+     * PDF文件上传
+     * @param file
+     * @param request
+     * @return
+     * @throws IOException
+     */
+    @Override
+    public Map<String, String> upFile(MultipartFile file, HttpServletRequest request) throws IOException {
+        Map<String, String> map = new HashMap<>();
+        map.put("code", "500");
+        map.put("msg", "上传文件失败");
+        String fileName = file.getOriginalFilename();//获取文件名
+        String suffixName = fileName.substring(fileName.lastIndexOf("."));//获取文件的后缀名
+        // 得到文件名的前缀
+        String capacityNumberAndFurnaceNumber = fileName.substring(0,fileName.lastIndexOf("."));
+        //上传的文件名也需要加上后缀,不然虚拟机不知道文件格式
+        InputStream inputStream = file.getInputStream();
+        String filePath = null;
+        //关于ftp处理文件上传下载这里单独写了一个工具类ftpUtil,下面会写这个类
+        //@Autowired  private FtpUtil ftpUtil;service层上面引入了这个方法。
+        Boolean flag = ftpUtil.uploadFile(fileName, inputStream);//主要就是这里实现了ftp的文件上传
+        if (flag == true) {
+            //log.info("上传文件成功!");
+            filePath = ftpUtil.FTP_BASEPATH + fileName;
+            map.put("code", "200");
+            map.put("msg", "上传文件成功");
+        }
+        map.put("path", filePath);
+        System.out.println(map);
+        return map;
+    }
 }

+ 72 - 0
src/main/java/com/steerinfo/dil/util/FtpUtil.java

@@ -0,0 +1,72 @@
+package com.steerinfo.dil.util;
+
+import com.steerinfo.dil.service.ResourceRepository;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPReply;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/12/8 10:58
+ * @Version:V2.0
+ */
+@Component//这就是我们刚才加入的依赖
+public class FtpUtil {
+
+    //ftp服务器ip地址
+    private static final String FTP_ADDRESS = "172.16.33.161";
+    //端口号
+    private static final int FTP_PORT = 21;
+    //用户名
+    private static final String FTP_USERNAME = "root";
+    //密码
+    private static final String FTP_PASSWORD = "Ils2021";
+    //路径都是/home/加上用户名
+    public final String FTP_BASEPATH = "/usr/local/src/file";
+    //
+    @Autowired
+    private ResourceRepository resourceRepository;
+
+    //参数传过来了文件和文件的输入流
+    public boolean uploadFile(String originFileName, InputStream input) {
+        boolean success = false;
+        FTPClient ftp = new FTPClient();//这是最开始引入的依赖里的方法
+        ftp.setControlEncoding("utf-8");
+        try {
+            int reply;
+            ftp.connect(FTP_ADDRESS, FTP_PORT);// 连接FTP服务器
+            ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登录
+            reply = ftp.getReplyCode();//连接成功会的到一个返回状态码
+            System.out.println(reply);//输出看是否连接成功
+            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型
+            ftp.changeWorkingDirectory(FTP_BASEPATH);//修改操作空间
+            //所操作的文件夹必须要有可读权限
+            ftp.storeFile(originFileName, input);//这里开始上传文件
+            if (!FTPReply.isPositiveCompletion(reply)) {
+                ftp.disconnect();
+                System.out.println("连接失败");
+                return success;
+            }
+            System.out.println("连接成功!");
+
+            input.close();
+            ftp.logout();
+            success = true;
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (ftp.isConnected()) {
+                try {
+                    ftp.disconnect();
+                } catch (IOException ioe) {
+                }
+            }
+        }
+        return success;
+    }
+}