diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmBom.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmBom.java
index e4add63..d5610e6 100644
--- a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmBom.java
+++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmBom.java
@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.data.annotation.Id;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -81,8 +82,12 @@ public class DmBom implements Serializable {
 
     @ApiModelProperty(value = "切割长度")
     private BigDecimal qgcd;
+    @ApiModelProperty(value = "实际切割长度")
+    private BigDecimal fkqgcd;
     @ApiModelProperty(value = "划线长度")
     private BigDecimal hxcd;
+    @ApiModelProperty(value = "实际划线长度")
+    private BigDecimal fkhxcd;
 
     @ApiModelProperty(value = "图纸编号")
     private String tzbh;
diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java
index b811b02..d5447c9 100644
--- a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java
+++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java
@@ -47,5 +47,8 @@ public class DmTltpdf implements Serializable {
     @TableId(value = "id", type = IdType.ASSIGN_UUID)
     private String id;
 
+    @ApiModelProperty(value = "保存路径")
+    private String filePath;
+
 
 }
diff --git a/src/main/java/com/dsic/gj_erp/bean/pgd/PgdQgjh.java b/src/main/java/com/dsic/gj_erp/bean/pgd/PgdQgjh.java
index 88e83b4..a7403a0 100644
--- a/src/main/java/com/dsic/gj_erp/bean/pgd/PgdQgjh.java
+++ b/src/main/java/com/dsic/gj_erp/bean/pgd/PgdQgjh.java
@@ -73,6 +73,8 @@ public class PgdQgjh implements Serializable {
 
     @ApiModelProperty(value = "划线长度")
     private Double hxcd;
+    @ApiModelProperty(value = "实际划线长度")
+    private Double fkhxcd;
 
     @ApiModelProperty(value = "划线空程长度")
     private Double hxkccd;
@@ -82,6 +84,8 @@ public class PgdQgjh implements Serializable {
 
     @ApiModelProperty(value = "切割长度")
     private String qgcd;
+    @ApiModelProperty(value = "实际切割长度")
+    private String fkqgcd;
 
     @ApiModelProperty(value = "切割空程长度")
     private Double qgkccd;
diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java
index 7f1978c..1f9473f 100644
--- a/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java
+++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java
@@ -14,6 +14,7 @@ import com.dsic.gj_erp.service.jcsj.DmBomService;
 import com.dsic.gj_erp.service.jcsj.DmTltpdfService;
 import com.dsic.gj_erp.service.jcsj.impl.BomUploadServiceImpl;
 import com.dsic.gj_erp.service.sy.SYService;
+import com.dsic.gj_erp.util.FileUtil;
 import io.swagger.annotations.Authorization;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -55,12 +56,26 @@ public class DmBomController {
     @Autowired
     DmTltpdfService tltpdfService;
 
+    @PostMapping("/saveDegs")
+    @AuthFunction
+    public ResultBean saveDegs( @RequestBody List<DmBom> list ){
+        for (DmBom bom : list) {
+            dmBomService.update(new UpdateWrapper<DmBom>().eq("idd",bom.getIdd())
+                    .set("pkgs",bom.getPkgs())
+                    .set("dmgs",bom.getDmgs())
+                    .set("qgs",bom.getQgs())
+            );
+        }
+        return new ResultBean();
+    }
     @PostMapping("/uploadPDF")
     @Authorization("")
     @Transactional
     @ResponseBody
     public ResultBean uploadPDF(@RequestParam("file") MultipartFile[] fileList)throws IOException {
+
         for (MultipartFile file : fileList) {
+         String url= FileUtil.handlerUpload(file,"/tltpdf");
         PDDocument document = PDDocument.load(file.getInputStream());
         int pageNum = document.getNumberOfPages();
         PDFTextStripper stripper = new PDFTextStripper();
@@ -95,6 +110,7 @@ public class DmBomController {
                 tltpdf.setPageNum(i +"/"+pageNum);
                 tltpdf.setRows((j+1) +"/"+a.length);
                 tltpdf.setContent(a[j]);
+                tltpdf.setFilePath(url);
                 list.add(tltpdf);
 //                System.out.println("第 " + (j+1) +"/"+a.length+ " 行 :");
 //                System.out.println(a[j]);
diff --git a/src/main/java/com/dsic/gj_erp/mapper/xiaochi/CutPlanMapper.java b/src/main/java/com/dsic/gj_erp/mapper/xiaochi/CutPlanMapper.java
index 2e660bf..994be3f 100644
--- a/src/main/java/com/dsic/gj_erp/mapper/xiaochi/CutPlanMapper.java
+++ b/src/main/java/com/dsic/gj_erp/mapper/xiaochi/CutPlanMapper.java
@@ -7,4 +7,6 @@ import java.util.List;
 
 public interface CutPlanMapper extends BaseMapper<CutPlan> {
     List<CutPlan> getCutPlanList(String st,String ed);
+
+    void synBom_qgPgd();
 }
diff --git a/src/main/java/com/dsic/gj_erp/service/xiaochi/XiaoChiService.java b/src/main/java/com/dsic/gj_erp/service/xiaochi/XiaoChiService.java
index 9a7e0d7..38e4fc6 100644
--- a/src/main/java/com/dsic/gj_erp/service/xiaochi/XiaoChiService.java
+++ b/src/main/java/com/dsic/gj_erp/service/xiaochi/XiaoChiService.java
@@ -90,4 +90,15 @@ public class XiaoChiService{
         });
         CronUtil.start();
     }
+
+//    @PostConstruct
+    public  void synBom_qgPgd(){
+        //每天凌晨一点,同步前一天数据
+//        CronUtil.schedule("0 1 * * *", (Task) () -> {
+        CronUtil.schedule("*/1 * * * * *", (Task) () -> {
+            mapper.synBom_qgPgd();
+        });
+        CronUtil.start();
+    }
+
 }
diff --git a/src/main/java/com/dsic/gj_erp/util/FileUtil.java b/src/main/java/com/dsic/gj_erp/util/FileUtil.java
new file mode 100644
index 0000000..873759a
--- /dev/null
+++ b/src/main/java/com/dsic/gj_erp/util/FileUtil.java
@@ -0,0 +1,50 @@
+package com.dsic.gj_erp.util;
+
+import org.springframework.lang.NonNull;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicReference;
+
+public class FileUtil {
+
+    public static String handlerUpload(MultipartFile multipartFile,@NonNull String path) {
+        String originalFilename = multipartFile.getOriginalFilename();
+        AtomicReference<String> url = new AtomicReference<>("");
+        Optional.ofNullable(originalFilename).ifPresent(name -> {
+//            String suffix = name.substring(name.lastIndexOf("."));
+//            String suffix = name.substring(name.lastIndexOf("/"));
+            File filePath = new File("./static/upload" + path);
+            if (!filePath.exists()) {
+                filePath.mkdirs();
+            }
+            String fileName = name.substring(name.lastIndexOf("/"));
+            String tmpUrl = path  + fileName;
+            url.set(tmpUrl);
+            FileUtil.saveToDisk("./static/upload" + tmpUrl, multipartFile);
+        });
+        return url.get();
+    }
+
+    public static void saveToDisk(String filePath, MultipartFile multipartFile) {
+        try (BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(Paths.get(filePath)))) {
+            FileInputStream fileInputStream = (FileInputStream) multipartFile.getInputStream();
+            byte[] bs = new byte[1024];
+            int len;
+            while ((len = fileInputStream.read(bs)) != -1) {
+                bos.write(bs, 0, len);
+            }
+            bos.flush();
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException("上传失败");
+        }
+    }
+}
diff --git a/src/main/resources/mappers/xiaochi/CutPlanMapper.xml b/src/main/resources/mappers/xiaochi/CutPlanMapper.xml
index ac0bac8..b5d0096 100644
--- a/src/main/resources/mappers/xiaochi/CutPlanMapper.xml
+++ b/src/main/resources/mappers/xiaochi/CutPlanMapper.xml
@@ -24,4 +24,12 @@
                     and (b.qgksrq is null or qgjsrq is null )
             )
     </select>
+
+    <update id="synBom_qgPgd" statementType="CALLABLE">
+        <![CDATA[
+        {
+            call synchronization_bom_gqpgd
+            }
+        ]]>
+    </update>
 </mapper>