diff --git a/pom.xml b/pom.xml
index 31b68a7..0bc97ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,11 +34,6 @@
             <artifactId>easypoi-annotation</artifactId>
             <version>3.2.0</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.pdfbox</groupId>
-            <artifactId>pdfbox</artifactId>
-            <version>2.0.24</version>
-        </dependency>
 
         <dependency>
             <groupId>com.jcraft</groupId>
diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java
index ddecdc7..35f704e 100644
--- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java
+++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java
@@ -1,8 +1,12 @@
 package com.dsic.gj_erp.bean.jhgk;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.dsic.gj_erp.pc.Constant;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -49,8 +53,8 @@ public class DmSygdMx implements Serializable {
     private String wpxh;
 
     @ApiModelProperty(value = "划线长度(米)")
-    private Double hxcd;
-    private Double dmcd;
+    private volatile Double hxcd;
+    private volatile Double dmcd;
     private String dmrq;
     private String pkrq;
     private String llrq;
@@ -65,7 +69,7 @@ public class DmSygdMx implements Serializable {
     private Double pklx;
 
     @ApiModelProperty(value = "坡口长度")
-    private Double pkcd;
+    private volatile Double pkcd;
 
     @ApiModelProperty(value = "零件数量")
     private Double ljsl;
@@ -203,6 +207,91 @@ public class DmSygdMx implements Serializable {
     private String qjggxbm;
 
 
-
+    public void 更新排产信息(Constant.工序 _工序,String date){
+        switch(_工序){
+            case 上料:
+                this.slrq=date;
+                break;
+            case 抛丸:
+                this.pwrq=date;
+                break;
+            case 理料:
+                this.llrq=date;
+                break;
+            case 划线:
+                this.hxrq=date;
+                break;
+            case 切割:
+                this.qgrq=date;
+                break;
+            case 坡口:
+                break;
+            case 型材面板:
+                break;
+            case 自由边处理:
+                break;
+            case 曲型:
+                break;
+            case 打磨:
+                break;
+            case 号料:
+                break;
+            case 倒棱:
+                break;
+            case 切端头:
+                break;
+            case 预配盘:
+                break;
+            case 光电结束:
+                break;
+            case 配送:
+                break;
+        }
+    }
+
+    public static DmSygdMx ofWithDmSygdMxlj(DmSygdMxLj lj){
+        DmSygdMx mx = new DmSygdMx();
+        BeanUtil.copyProperties(lj,mx);
+        mx.setId(null);
+        mx.setDcCh(lj.getDcch());
+        mx.setDcCh2(lj.getMbch());
+        mx.setDcCh1(lj.getSjch());
+        mx.setDcPl(lj.getPl());
+        mx.setTzbh(lj.getTzbh());
+
+        //fixme 看下getFd数据
+        mx.setDcFd(lj.getFd());
+        if (mx.getDcFd()==null){
+            mx.setDcFd(lj.getFd());
+        }else if(!mx.getDcFd().equals(lj.getFd())){
+            String fd=mx.getDcFd()+" "+lj.getFd();
+            mx.setDcFd(fd);
+        }
+
+        mx.setJssj(lj.getXzglxq());
+        mx.setGjjsDz(lj.getDzglxq());
+        mx.setGxsj(DateUtil.date().toString("yyyy/MM/dd"));
+        if (StrUtil.isNotEmpty(lj.getTzbh())&&lj.getTzbh().charAt(5)== 'X'){
+            mx.setLx("X");
+        }else{
+            mx.setLx("B");
+        }
+        mx.setWpxh(lj.getWpcz());
+        if (mx.getPkcd()==null){
+            mx.setPkcd(lj.getPkcd());
+        }else{
+            Double pkcd=mx.getPkcd()+lj.getPkcd();
+            mx.setPkcd(pkcd);
+        }
+
+        if (mx.getDmcd()==null){
+            mx.setDmcd(lj.getDmcd());
+        }else{
+            Double dmcd=mx.getDmcd()+lj.getDmcd();
+            mx.setDmcd(dmcd);
+        }
+        mx.setXcms(lj.getXcshms());
+        return mx;
+    }
 
 }
diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java
index 5982f9b..9563ee5 100644
--- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java
+++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java
@@ -126,49 +126,6 @@ public class DmSygdMxController {
         return service.sygdPC();
     }
 
-    private static Semaphore semaphore = new Semaphore(1);
-
-    @GetMapping("pc")
-    public ResultBean<?> pc(String from, String to){
-        try {
-            semaphore.acquire();
-            排产.execute(from,to);
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        } finally {
-            semaphore.release();
-        }
-        return new ResultBean<>();
-    }
-
-    @GetMapping("sygdjh")
-    public ResultBean<?> 获取三月滚动计划(String from, String to) throws InterruptedException {
-        semaphore.acquire();
-        if (!StrUtil.isAllNotEmpty(from,to)){
-            semaphore.release();
-            return new ResultBean<>();
-        }
-
-        HashMap<Object, Object> map = new HashMap<>();
-        if (from.equals(Manager.from)&&to.equals(Manager.to)){
-            semaphore.release();
-            map.put("result",Manager.排产结果);
-            map.put("zy",Manager.资源池);
-            return new ResultBean<>(map);
-        }
-
-        try {
-            排产.execute(from,to);
-        }finally {
-            semaphore.release();
-        }
-        map.put("result",Manager.排产结果);
-        map.put("zy",Manager.资源池);
-        return new ResultBean<>(map);
-    }
-
-
-
     @RequestMapping("/saveList")
     @AuthFunction
     public ResultBean saveList( @RequestBody List<DmSygdMx> list ){
diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/三月滚动排产控制器.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/三月滚动排产控制器.java
new file mode 100644
index 0000000..7427a2e
--- /dev/null
+++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/三月滚动排产控制器.java
@@ -0,0 +1,74 @@
+package com.dsic.gj_erp.controller.jhgk;
+
+import cn.hutool.core.util.StrUtil;
+import com.dsic.gj_erp.bean.ResultBean;
+import com.dsic.gj_erp.pc.Manager;
+import com.dsic.gj_erp.pc.service.三月滚动接口;
+import com.dsic.gj_erp.pc.排产;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.concurrent.Semaphore;
+
+@RestController
+@RequestMapping("sygdpc")
+@AllArgsConstructor
+public class 三月滚动排产控制器 {
+
+    private final 三月滚动接口 _三月滚动接口;
+
+    private static Semaphore semaphore = new Semaphore(1);
+
+    @GetMapping("createSygdjh")
+    public ResultBean<?> 生成三月滚动(String from, String to){
+        try {
+            semaphore.acquire();
+            return _三月滚动接口.生成三月滚动(from,to);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        } finally {
+            semaphore.release();
+        }
+    }
+
+    @GetMapping("pc")
+    public ResultBean<?> pc(String from, String to){
+        try {
+            semaphore.acquire();
+            排产.execute(from,to);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        } finally {
+            semaphore.release();
+        }
+        return new ResultBean<>();
+    }
+
+    @GetMapping("sygdjh")
+    public ResultBean<?> 获取三月滚动计划(String from, String to) throws InterruptedException {
+        semaphore.acquire();
+        if (!StrUtil.isAllNotEmpty(from,to)){
+            semaphore.release();
+            return new ResultBean<>();
+        }
+
+        HashMap<Object, Object> map = new HashMap<>();
+        if (from.equals(Manager.from)&&to.equals(Manager.to)){
+            semaphore.release();
+            map.put("zy",Manager.资源池);
+            return new ResultBean<>(map);
+        }
+
+        try {
+            排产.execute(from,to);
+        }finally {
+            semaphore.release();
+        }
+        map.put("zy",Manager.资源池);
+        return new ResultBean<>(map);
+    }
+
+}
diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdxqMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdxqMapper.java
index 5b27c5e..5663cab 100644
--- a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdxqMapper.java
+++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdxqMapper.java
@@ -3,6 +3,7 @@ package com.dsic.gj_erp.mapper.jhgk;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
+import com.dsic.gj_erp.bean.jhgk.DmSygdMxLj;
 import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
 import org.apache.ibatis.annotations.Param;
 
@@ -20,4 +21,7 @@ public interface DmSygdxqMapper extends BaseMapper<DmSygdxq> {
 
     List<DmSygdxq> getXqWithBom(String from,String to);
 
+    List<DmSygdMxLj> getSygdLjMx(String begin,String end);
+
+
 }
diff --git a/src/main/java/com/dsic/gj_erp/pc/Constant.java b/src/main/java/com/dsic/gj_erp/pc/Constant.java
index 11028c8..4cab553 100644
--- a/src/main/java/com/dsic/gj_erp/pc/Constant.java
+++ b/src/main/java/com/dsic/gj_erp/pc/Constant.java
@@ -34,19 +34,19 @@ public interface Constant {
         理料01(工序.理料,"理料01","",0,0,240.0,286.0,526.0),
         划线01(工序.划线,"划线01","",0,0,240.0,286.0,526.0),
 
-        龙门01(工序.切割,"龙门01","",2.4,3.6,9.6,15.6,25.2),
-        火焰01(工序.切割,"火焰01","",0.3,11.5,2.0,0,2.0),
+        龙门01(工序.切割,"龙门01","",2.4,3.6,19.6,15.6,25.2),
+        火焰01(工序.切割,"火焰01","",0.3,11.15,2.0,0,2.0),
         数控01(工序.切割,"数控01","",1.5,3.0,0,8.5,8.5),
-        火焰03(工序.切割, "火焰03", "", 0.3, 11.5, 2.0, 0, 2.0),
+        火焰03(工序.切割, "火焰03", "", 0.3, 11.5, 12.0, 0, 2.0),
         数控03(工序.切割, "数控03", "", 2.0, 4.2, 0, 14.0, 14.0),
-        龙门03(工序.切割, "龙门03", "", 1.6, 3.2, 7.2, 11.2, 18.4),
+        龙门03(工序.切割, "龙门03", "", 1.6, 3.2, 17.2, 11.2, 18.4),
 
-        火焰02(工序.切割, "火焰02", "", 0.3, 11.5, 3.9, 0, 3.9),
+        火焰02(工序.切割, "火焰02", "", 0.3, 11.5, 13.9, 0, 3.9),
         数控02(工序.切割, "数控02", "", 1.4, 3.0, 0, 18.2, 18.2),
-        龙门02(工序.切割, "龙门02", "", 2.0, 3.0, 10.0, 13.0, 13.0),
+        龙门02(工序.切割, "龙门02", "", 2.0, 3.0, 20.0, 13.0, 13.0),
 
-        坡口01(工序.坡口, "坡口01", "", 2.0, 3.0, 1.0, 13.0, 13.0),
-        型材01(工序.型材面板, "型材01", "", 2.0, 3.0, 10.0, 13.0, 13.0),
+        坡口01(工序.坡口, "坡口01", "", 2.0, 3.0, 50.0, 13.0, 13.0),
+        型材01(工序.型材面板, "型材01", "", 2.0, 3.0, 50.0, 13.0, 13.0),
         曲加工01(工序.曲型, "曲加工01", "", 2.0, 3.0, 10.0, 13.0, 13.0),
         打磨01(工序.打磨, "打磨01", "", 2.0, 3.0, 10.0, 13.0, 13.0),
         未知01(工序.NULL, "未知01", "", 2.0, 3.0, 10.0, 13.0, 13.0),
diff --git a/src/main/java/com/dsic/gj_erp/pc/dto/tlt/一跨平直大板.java b/src/main/java/com/dsic/gj_erp/pc/dto/tlt/一跨平直大板.java
index 0572535..e866ee4 100644
--- a/src/main/java/com/dsic/gj_erp/pc/dto/tlt/一跨平直大板.java
+++ b/src/main/java/com/dsic/gj_erp/pc/dto/tlt/一跨平直大板.java
@@ -31,7 +31,7 @@ public class 一跨平直大板 extends 套料图工序 {
                 .add(Constant.工序.理料)
                 .add(Constant.工序.划线)
                 .add(Constant.工序.切割)
-                .add(Constant.工序.曲型)
+                .add(Constant.工序.坡口)
                 .build();
         return this;
     }
diff --git a/src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java b/src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java
new file mode 100644
index 0000000..9898ab4
--- /dev/null
+++ b/src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java
@@ -0,0 +1,82 @@
+package com.dsic.gj_erp.pc.service;
+
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsic.gj_erp.bean.ResultBean;
+import com.dsic.gj_erp.bean.jhgk.DmSygd;
+import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
+import com.dsic.gj_erp.bean.jhgk.DmSygdMxLj;
+import com.dsic.gj_erp.bean.jhgk.DmYdjhxf;
+import com.dsic.gj_erp.mapper.jhgk.DmSygdxqMapper;
+import com.dsic.gj_erp.pc.Manager;
+import com.dsic.gj_erp.service.jhgk.DmSygdMxService;
+import com.dsic.gj_erp.service.jhgk.DmSygdService;
+import com.dsic.gj_erp.service.jhgk.impl.DmSygdMxLjServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+@AllArgsConstructor
+public class 三月滚动接口 {
+
+    private final DmSygdxqMapper sygdxqMapper;
+    private final DmSygdMxLjServiceImpl ljService;
+    private final DmSygdMxService sygdMxService;
+    private final DmSygdService sygdService;
+
+
+
+    @Transactional
+    public ResultBean 生成三月滚动(String begin, String end) {
+        //清理历史数据
+        ljService.remove(new QueryWrapper<DmSygdMxLj>().between("xzglxq", begin, end));
+        sygdMxService.remove(new QueryWrapper<DmSygdMx>().between("jssj", begin, end));
+        sygdService.remove(new QueryWrapper<DmSygd>().between("sl_sj", begin, end));
+
+        //开始汇总
+        List<DmSygdMxLj> ljList = sygdxqMapper.getSygdLjMx(begin,end);
+
+        if (ljList.size() < 1) {
+            return new ResultBean(false, 1, "请先导入" + begin + " ~ " + end + "分段钢料需求!");
+        }
+
+        //2.根据
+        List<DmSygdMx> mxList = ljList.stream().map(DmSygdMx::ofWithDmSygdMxlj).collect(Collectors.toList());
+
+        Map<String, List<DmSygdMx>> collect = mxList.stream().collect(Collectors.groupingBy(item -> item.getDcCh() + item.getDcPl() + item.getTzbh()));
+
+        Manager.资源池.values().forEach(_资源->{
+            _资源.get工序产能MAP().values().forEach(_工序产能->{
+                _工序产能.get设备().values().forEach(_设备->{
+                    _设备.get资源占用图表().parallelStream().forEach(_bom->{
+                        List<DmSygdMx> dmSygdMxes = collect.get(_bom.getDcch() + _bom.getPl() + _bom.getTzbh());
+                        for (DmSygdMx mx:dmSygdMxes){
+                            mx.更新排产信息(_工序产能.get工序(),_资源.getDate());
+                        }
+                    });
+                });
+            });
+        });
+
+        sygdMxService.saveBatch(mxList,500);
+
+        ljList.forEach(lj-> mxList.forEach(mx->{
+            if (lj.getDcch().equals(mx.getDcCh())
+                    &&lj.getPl().equals(mx.getDcPl())
+                    && (StrUtil.isBlank(lj.getTzbh())||lj.getTzbh().equals(mx.getTzbh()))){
+                lj.setParentId(mx.getId());
+            }
+        }));
+        ljService.saveBatch(ljList,500);
+
+        List<DmYdjhxf> list= sygdMxService.tqSygd1(begin,end);
+        ResultBean r = new ResultBean(list);
+        return r;
+    }
+}
diff --git a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml
index 3b860f3..3f438aa 100644
--- a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml
+++ b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml
@@ -433,15 +433,15 @@
                      )a) as 'bs',
                 (SELECT a.slrq from
                     ( SELECT  row_number() over(partition by DC_CH,DC_PL order by slrq ) rn,DC_CH,DC_PL,slrq from dm_sygd_mx WHERE
-                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl
+                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and isnull(dm_sygd_mx.slrq,'') != ''
                     )a WHERE rn=1) as 'sl',
                 (SELECT a.slrq from
                     ( SELECT  row_number() over(partition by DC_CH,DC_PL order by slrq ) rn,DC_CH,DC_PL,slrq from dm_sygd_mx WHERE
-                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and  dm_sygd_mx.kw='16'
+                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and  dm_sygd_mx.kw='16' and isnull(dm_sygd_mx.slrq,'') != ''
                     )a WHERE rn=1) as 'xcpw',
                 (SELECT a.pwrq from
                     ( SELECT  row_number() over(partition by DC_CH,DC_PL order by pwrq ) rn,DC_CH,DC_PL,pwrq from dm_sygd_mx WHERE
-                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and  dm_sygd_mx.kw!='16'
+                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and  dm_sygd_mx.kw!='16' and isnull(dm_sygd_mx.pwrq,'') != ''
                     )a WHERE rn=1) as 'pw',
                 (SELECT COUNT(c) from
                      ( SELECT COUNT(1) as c
@@ -483,7 +483,7 @@
                       )a ) as 'sksk',
                 (SELECT a.qgrq from
                     ( SELECT  row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
-                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl 	and  dm_sygd_mx.kw='14'
+                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and  dm_sygd_mx.kw='14' and isnull(dm_sygd_mx.qgrq,'') != ''
                     )a WHERE rn=1) as 'skskqgks',
                 (SELECT COUNT(c) from
                      ( SELECT COUNT(1) as c
@@ -493,7 +493,7 @@
                       )a ) as 'skpt',
                 (SELECT a.qgrq from
                     ( SELECT  row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
-                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl 	and  dm_sygd_mx.kw='6'
+                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and  dm_sygd_mx.kw='6' and isnull(dm_sygd_mx.qgrq,'') != ''
                     )a WHERE rn=1) as 'ptks',
                 (SELECT COUNT(c) from
                      ( SELECT COUNT(1) as c
@@ -503,7 +503,7 @@
                       )a ) as 'skbs',
                 (SELECT a.qgrq from
                     ( SELECT  row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
-                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl 	and  dm_sygd_mx.kw='15'
+                        dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl 	and  dm_sygd_mx.kw='15' and isnull(dm_sygd_mx.qgrq,'') != ''
                     )a WHERE rn=1) as 'skqgks',
                 (SELECT COUNT(c) from
                      ( SELECT COUNT(1) as c
diff --git a/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml b/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml
index 77f541c..e646864 100644
--- a/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml
+++ b/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml
@@ -26,29 +26,94 @@
     </resultMap>
 
     <select id="getXqWithBom" resultMap="sqgdxqVo">
-        select
-            xq.id,
-            xq.dc_ch,
-            xq.dc_pl,
-            xq.dc_fd,
-            xq.xzglxq,
-            bom.id as bom_id,
-            bom.dcch as bom_dcch,
-            bom.pl as bom_pl,
-            bom.fd as bom_fd,
-            bom.kw as bom_kw,
-            bom.zl as bom_zl,
-            bom.tzbh as bom_tzbh,
-            bom.wpgg as bom_wpgg,
-            bom.wpcz as bom_wpcz,
-            bom.ljsl as bom_ljsl,
-            bom.fkgs as bom_fkgs,
-            bom.tlsl as bom_tlsl
-        from
-            dm_sygdxq xq left join dm_bom bom on bom.dcch = xq.DC_CH and bom.pl = xq.DC_PL and bom.fd = xq.DC_FD
+        select * from
+            (select
+                xq.id,
+                xq.dc_ch,
+                xq.dc_pl,
+                xq.dc_fd,
+                xq.xzglxq,
+                bom.id as bom_id,
+                bom.dcch as bom_dcch,
+                bom.pl as bom_pl,
+                bom.fd as bom_fd,
+                bom.kw as bom_kw,
+                bom.zl as bom_zl,
+                bom.tzbh as bom_tzbh,
+                bom.wpgg as bom_wpgg,
+                bom.wpcz as bom_wpcz,
+                bom.ljsl as bom_ljsl,
+                bom.fkgs as bom_fkgs,
+                bom.tlsl as bom_tlsl,
+                ROW_NUMBER() over(partition by bom.dcch,bom.pl,bom.tzbh order by bom.tzbh) rn
+            from
+                dm_sygdxq xq left join dm_bom bom on bom.dcch = xq.DC_CH and bom.pl = xq.DC_PL and bom.fd = xq.DC_FD
+            where
+                xq.xzglxq between #{from} and #{to}
+            ) a
+        where a.rn=1
+        order by a.xzglxq
+    </select>
+
+    <select id="getSygdLjMx" resultType="dmSygdMxLj">
+        SELECT
+            dm_sygdxq.xzglxq ,
+            dm_sygdxq.dzglxq ,
+            dm_sygdxq.DC_CH as dcch,
+            dm_sygdxq.DC_PL as pl,
+            dm_sygdxq.DC_FD as fd,
+            dm_bom.mbch,
+            dm_bom.pw,
+            dm_bom.lqlb,
+            dm_bom.kw,
+            dm_bom.zl,
+            dm_bom.wpcz,
+            dm_bom.wpgg,
+            dm_bom.bh,
+            dm_bom.bc,
+            dm_bom.yqyl,
+            dm_bom.qgcd,
+            (SELECT (CASE WHEN dm_bom.tzbh is null THEN '' ELSE dm_bom.tzbh END))   as tzbh,
+            dm_bom.tlsl,
+            dm_bom.pklx,
+            dm_bom.qbs,
+            dm_bom.pkbs,
+            dm_bom.pkcd,
+            dm_bom.dmbs,
+            dm_bom.dmcd,
+            dm_bom.zpsx,
+            dm_bom.ljbh,
+            dm_bom.ljsl,
+            dm_bom.ljsx,
+            dm_bom.djmj,
+            dm_bom.ljdz,
+            dm_bom.blgs,
+            dm_bom.pwgs,
+            dm_bom.llgs,
+            dm_bom.hxgs,
+            dm_bom.qggs,
+            dm_bom.pkgs,
+            dm_bom.qgs,
+            dm_bom.dmgs,
+            dm_bom.zpgs,
+            dm_bom.hxcd,
+            dm_bom.xcgs,
+            dm_bom.xcshms,
+            dm_bom.bclqzl,
+            dm_bom.bcshzl,
+            dm_bom.bcylzl,
+            dm_bom.bcljtlzl,
+            dm_bom.ylbhgg,
+            dm_bom.bcqpyld,
+            REPLACE(CAST(CAST(NEWID()AS BINARY(10)) + CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER),'-','') as id
+
+        from dm_sygdxq LEFT JOIN 	dm_bom
+                                    on dm_bom.dcch = dm_sygdxq.DC_CH
+                                        and dm_bom.pl = dm_sygdxq.DC_PL
+                                        and dm_bom.fd = dm_sygdxq.DC_FD
         where
-            xq.xzglxq between #{from} and #{to}
-        order by xq.xzglxq
+            dm_sygdxq.xzglxq between #{begin} and #{end}
+        ORDER BY dm_sygdxq.xzglxq,dm_sygdxq.DC_CH,dm_sygdxq.DC_PL,dm_bom.TZBH,dm_sygdxq.DC_FD
     </select>
 
 </mapper>