From b3db79464f6ed14fa69de5a4f5f099c8d7fd26c9 Mon Sep 17 00:00:00 2001
From: xhj <xhjzrq@163.com>
Date: Fri, 25 Oct 2024 08:49:21 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9C=88=E5=BA=A6=E8=AE=A1=E5=88=92=E5=AF=BC?=
 =?UTF-8?q?=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/dsic/gj_erp/bean/jhgk/DmYdjh.java     |   9 +
 .../controller/pgd/PgdSljhController.java     | 250 +++++++++++++++++-
 .../dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java |   2 +
 .../resources/mappers/jhgk/DmYdjhMapper.xml   |  17 ++
 4 files changed, 277 insertions(+), 1 deletion(-)

diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java
index b1e9139..4ffd899 100644
--- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java
+++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java
@@ -265,12 +265,21 @@ public class DmYdjh implements Serializable {
     private String slxzxqrq; // 小组需求期
     private String sldzxqrq; // 大组需求期
 
+
+    private String ckbzrq;
+    private String ckbzry;
+    private String bmbzrq;
+    private String bmbzry;
+    private String bmxgry;
+    private String bmxgrq;
+
     // 上料信息
     private String slkcdw; // 库存垛位
     private String slcs; // 层数
     private String slxhth; // 小合同号
     private String slhth; // 合同号
     private String slwlh; // 物料号
+    private String kcch; // 物料号
     private String slkcxx; // 所有库存信息
     private Integer slycldw; // 预处理垛位
     private Integer slyclcs; // 预处理垛位
diff --git a/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java b/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java
index 7c3e1ec..693f173 100644
--- a/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java
+++ b/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java
@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.dsic.gj_erp.annotation.AuthFunction;
 import com.dsic.gj_erp.bean.ResultBean;
 import com.dsic.gj_erp.bean.fd.DmCzjbb;
@@ -19,6 +20,8 @@ import com.dsic.gj_erp.bean.pgd.PgdTzjh;
 import com.dsic.gj_erp.bean.sy.Dm_zhbmp;
 import com.dsic.gj_erp.dao.sy.Dm_zhbmpRepository;
 import com.dsic.gj_erp.exception.CustomException;
+import com.dsic.gj_erp.exception.ServiceException;
+import com.dsic.gj_erp.mapper.jhgk.DmYdjhMapper;
 import com.dsic.gj_erp.mapper.kc.ImCkwpkwpMapper;
 import com.dsic.gj_erp.service.fd.DmCzjbbService;
 import com.dsic.gj_erp.service.jcsj.DmCbxxpService;
@@ -35,6 +38,8 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -56,6 +61,9 @@ public class PgdSljhController {
     @Autowired
     DmYdjhService dmYdjhService;
 
+    @Autowired
+    DmYdjhMapper dmYdjhMapper;
+
 
     @Autowired
     ImCkwpkwpMapper imCkwpkwpMapper;
@@ -268,7 +276,9 @@ public class PgdSljhController {
             }
             String cjs1=cjs;
             DmYdjh dmYdjh = ydjhs.stream()
-                .filter(fst -> fst.getDcCh().equalsIgnoreCase(slKc.getDCCH())  &&StringUtils.isNotBlank(fst.getWpgg())&&  StringUtils.isNotBlank(fst.getWpxh())
+                .filter(fst -> fst.getDcCh().equalsIgnoreCase(slKc.getDCCH())
+                        &&StringUtils.isNotBlank(fst.getWpgg())
+                        &&  StringUtils.isNotBlank(fst.getWpxh())
                     && fst.getWpgg().equalsIgnoreCase(slKc.getWPGG())
                     && (fst.getWpxh().equalsIgnoreCase(slKc.getWPXH())
                     || (cjs1 + fst.getWpxh()).equalsIgnoreCase(slKc.getWPXH()))
@@ -320,6 +330,153 @@ public class PgdSljhController {
         return new ResultBean(retrunMap);
     }
 
+    /**
+     *
+     * @param req
+     * 需求船号  需求批量 流向 抛丸位置   切割跨位(根据 合同号生成) 备注
+     * 根据 需求船号  需求批量 去 dm_ydjh 表中 查询  反写  库存垛位 上料层数,小合同号,合同号,物料号
+     * 库存表 增加 dm_ydjh 表 id  (dm_ydjh 中 有数据 )
+     * @return
+     * @throws Exception
+     * @throws CustomException
+     */
+    @PostMapping("kcAdnSlBd1")
+    @ResponseBody
+    public ResultBean kcAdnSlBd1(HttpServletRequest req, @RequestBody List<SlKc> slKcs) throws Exception, CustomException {
+
+
+
+        List<DmCbxxp> czList = dmCbxxpService.list();
+        List<DmYdjh>ydupList=new ArrayList<>();
+        List<DmYdjh>ydadList=new ArrayList<>();
+        List<SlKc>ckupList=new ArrayList<>();
+        // 进行比对
+        for(SlKc slKc :slKcs){
+            // 获取船级社
+            String cjs="";
+            DmCbxxp dmCzjbb = czList.stream().filter(fst -> fst.getCbbm().equalsIgnoreCase(slKc.getDCCH())).findFirst().orElse(null);
+
+            if(null!=dmCzjbb){
+                cjs=dmCzjbb.getCjs();
+            }
+            String cjs1=cjs;
+            // 根据需求批量 船号 去 查询
+            List<DmYdjh> ydjhs = dmYdjhService.list(new QueryWrapper<DmYdjh>().eq("dc_ch", slKc.getZYCH() ).eq("isnull(ZT,'')","2")
+                .eq("dc_pl",slKc.getZYPL())
+            );
+            DmYdjh dmYdjh = ydjhs.stream()
+                .filter(fst -> fst.getDcCh().equalsIgnoreCase(slKc.getZYCH())
+                    &&StringUtils.isNotBlank(fst.getWpgg())
+                    &&  StringUtils.isNotBlank(fst.getWpxh())
+                    && fst.getWpgg().equalsIgnoreCase(slKc.getWPGG())
+                    && (fst.getWpxh().equalsIgnoreCase(slKc.getWPXH())
+                    || (cjs1 + fst.getWpxh()).equalsIgnoreCase(slKc.getWPXH()))
+                    && fst.getDcPl().equalsIgnoreCase(slKc.getZYPL())
+                )
+                .findFirst()
+                .orElse(null);
+
+            if(null!=dmYdjh){
+                System.out.println("slKc = " + slKc);
+
+                System.out.println(slKc.getCFCS1()+dmYdjh.getId());
+                dmYdjh.setSlkcdw(slKc.getKWH());
+                dmYdjh.setSlcs(slKc.getCFCS1());
+                dmYdjh.setSlxhth(slKc.getGCDDH());
+                dmYdjh.setSlhth(slKc.getDcFd());
+                dmYdjh.setSlwlh(slKc.getWPH());
+                dmYdjh.setKcch(slKc.getDCCH());
+                ydupList.add(dmYdjh);
+
+
+                slKc.setZYLX(getLx(dmYdjh.getLqlb(), dmYdjh.getZl()));
+                slKc.setSLDW(dmYdjh.getKw());
+                slKc.setDHH(dmYdjh.getSljhrq());
+                //slKc.setPwwz(dmYdjh.getKw());
+                slKc.setYdid(dmYdjh.getId());
+                slKc.setDCTH(dmYdjh.getTzbh());
+                ydjhs.remove(dmYdjh); // 从列表中移除找到的元素
+                ckupList.add(slKc);
+            }else{
+                // 等于nul应该就是没有
+                // 新增月度计划
+                // 根据 月度计划新增一条信息。
+                // 获取
+                DmYdjh ydjhMin = dmYdjhMapper.getYdjhMin(slKc.getZYCH(), slKc.getZYPL());
+                if(null!=ydjhMin){
+                    DmYdjh ydjh =new DmYdjh();
+                    ydjh.setId(IdWorker.get32UUID());
+                    ydjh.setDcCh(slKc.getZYCH());
+                    ydjh.setDcPl(slKc.getZYPL());
+                    ydjh.setWpgg(slKc.getWPGG());
+                    ydjh.setWpxh(slKc.getWPXH());
+                    ydjh.setSlrq(ydjhMin.getSlrq());
+                    ydjh.setPwrq(ydjhMin.getPwrq());
+                    ydjh.setHxrq(ydjhMin.getHxrq());
+                    ydjh.setQgrq(ydjhMin.getQgrq());
+                    ydjh.setDmrq(ydjhMin.getDmrq());
+                    ydjh.setQjgrq(ydjhMin.getQgjhrq());
+                    ydjh.setJssj(ydjhMin.getJssj());
+                    ydjh.setSljhrq(ydjhMin.getSljhrq());
+                    ydjh.setPwjhrq(ydjhMin.getPwjhrq());
+                    ydjh.setLljhrq(ydjhMin.getLljhrq());
+                    ydjh.setHxjhrq(ydjhMin.getHxjhrq());
+                    ydjh.setQgjhrq(ydjhMin.getQgjhrq());
+                    ydjh.setKw(extractNumber(slKc.getDcFd()));
+                    ydjh.setCkbzrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd HH:mm"));
+                    ydjh.setCkbzry((String) req.getAttribute("yhms"));
+
+                    //------
+                    ydjh.setSlkcdw(slKc.getKWH());
+                    ydjh.setSlcs(slKc.getCFCS1());
+                    ydjh.setSlxhth(slKc.getGCDDH());
+                    ydjh.setSlhth(slKc.getDcFd());
+                    ydjh.setSlwlh(slKc.getWPH());
+                    ydjh.setKcch(slKc.getDCCH());
+                    slKc.setYdid(ydjh.getId());
+                    //ydjhs.remove(dmYdjh); // 从列表中移除找到的元素
+                    ckupList.add(slKc);
+
+                    ydadList.add(ydjh);
+                    //-----
+                }else{
+                    throw new ServiceException(10001,slKc.getZYCH()+"船只"+slKc.getZYPL()+"未进行排产");
+                }
+
+            }
+
+
+        }
+        dmYdjhService.updateBatchById(ydupList);
+        dmYdjhService.saveBatch(ydadList);
+        for(SlKc slKc :slKcs){
+            ImCkwpkwp imCkwpkwp =new ImCkwpkwp();
+            imCkwpkwp.setCkh(slKc.getCKH());
+            imCkwpkwp.setWph(slKc.getWPH());
+            imCkwpkwp.setKwh(slKc.getKWH());
+            imCkwpkwp.setNbsbm(slKc.getNBSBM());
+            imCkwpkwp.setYdid(slKc.getYdid());
+            imCkwpkwp.setZych(slKc.getZYCH());
+            imCkwpkwp.setZypl(slKc.getZYPL());
+            imCkwpkwp.setZylx(slKc.getZYLX());
+            imCkwpkwp.setSldw(slKc.getSLDW());
+            imCkwpkwp.setPwwz(slKc.getPwwz());
+            imCkwpkwp.setBz(slKc.getBZ());
+            imCkwpkwp.setDhh(slKc.getDHH());
+            imCkwpkwp.setDcTh(slKc.getDCTH());
+            imCkwpkwp.setYdid(slKc.getYdid());
+            imCkwpkwpService.updateByMultiId(imCkwpkwp);
+        }
+        return new ResultBean();
+    }
+    public  String extractNumber(String str) {
+        Pattern pattern = Pattern.compile("-(\\d+)");
+        Matcher matcher = pattern.matcher(str);
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        return "";
+    }
     @PostMapping("kcAdnSlZx")
     @ResponseBody
     public ResultBean kcAdnSlZx(HttpServletRequest req, @RequestBody Map map) throws Exception, CustomException {
@@ -331,6 +488,7 @@ public class PgdSljhController {
 
 
         List<DmYdjh>ydupList=new ArrayList<>();
+
         List<ImCkwpkwp>ckupList=new ArrayList<>();
         //String id = syService.f_getpjh("DM", "SYSTEM", "YLBH");
         for(SlKc slKc :slKcs){
@@ -473,5 +631,95 @@ public class PgdSljhController {
         }
         return "";
     }
+
+    @PostMapping("kcAdnSlBd2")
+    @ResponseBody
+    public ResultBean kcAdnSlBd2(HttpServletRequest req, @RequestBody Map map) throws Exception, CustomException {
+
+        String str= JSON.toJSONString(map.get("data1"));
+        List<SlKc>  slKcs= JSONObject.parseArray(str, SlKc.class);
+        
+   
+        QueryWrapper<DmYdjh> qw =new QueryWrapper<>();
+        qw.eq(StrUtil.isNotEmpty((String)map.get("dcch")),"dc_ch",(String)map.get("dcch"));
+        qw.eq(StrUtil.isNotEmpty((String)map.get("dcpl")),"dc_pl",(String)map.get("dcpl"));
+        qw.eq("isnull(ZT,'')","2").eq("isnull(slkcdw,'')","");
+        List<DmYdjh> ydjhs = dmYdjhService.list(qw);
+         //库存标识 不等于 01 没有匹配上
+
+
+
+        
+           
+  
+
+        List<DmCbxxp> czList = dmCbxxpService.list();
+        List<DmYdjh>ydupList=new ArrayList<>();
+        List<SlKc>ckupList=new ArrayList<>();
+        // 进行比对
+        for(SlKc slKc :slKcs){
+            // 获取船级社
+            String cjs="";
+            DmCbxxp dmCzjbb = czList.stream().filter(fst -> fst.getCbbm().equalsIgnoreCase(slKc.getDCCH())).findFirst().orElse(null);
+
+            if(null!=dmCzjbb){
+                cjs=dmCzjbb.getCjs();
+            }
+            String cjs1=cjs;
+            DmYdjh dmYdjh = ydjhs.stream()
+                .filter(fst -> fst.getDcCh().equalsIgnoreCase(slKc.getDCCH())
+                    &&StringUtils.isNotBlank(fst.getWpgg())
+                    &&  StringUtils.isNotBlank(fst.getWpxh())
+                    && fst.getWpgg().equalsIgnoreCase(slKc.getWPGG())
+                    && (fst.getWpxh().equalsIgnoreCase(slKc.getWPXH())
+                    || (cjs1 + fst.getWpxh()).equalsIgnoreCase(slKc.getWPXH()))
+                )
+                .findFirst()
+                .orElse(null);
+
+            if(null!=dmYdjh){
+                System.out.println("slKc = " + slKc);
+                dmYdjh.setSlkcdw(slKc.getKWH());
+                System.out.println(slKc.getCFCS1()+dmYdjh.getId());
+                dmYdjh.setSlcs(slKc.getCFCS1());
+                dmYdjh.setSlxhth(slKc.getGCDDH());
+                dmYdjh.setSlhth(slKc.getDcFd());
+                dmYdjh.setSlwlh(slKc.getWPH());
+                dmYdjh.setSlycldw((Integer) map.get("dw"));
+
+
+//                ImCkwpkwp imCkwpkwp =new ImCkwpkwp();
+//                imCkwpkwp.setCkh(slKc.getCKH());
+//                imCkwpkwp.setWph(slKc.getWPH());
+//                imCkwpkwp.setKwh(slKc.getKWH());
+//                imCkwpkwp.setNbsbm(slKc.getNBSBM());
+//                imCkwpkwp.setYdid(dmYdjh.getId());
+//                imCkwpkwp.setZych(dmYdjh.getDcCh());
+//                imCkwpkwp.setZypl(dmYdjh.getDcPl());
+//                imCkwpkwp.setZylx(dmYdjh.getZl());
+//                imCkwpkwp.setSldw(dmYdjh.getKw());
+                ydupList.add(dmYdjh);
+                // ckupList.add(imCkwpkwp);
+
+                slKc.setZYLX(getLx(dmYdjh.getLqlb(), dmYdjh.getZl()));
+                slKc.setZYCH(dmYdjh.getDcCh());
+                slKc.setZYPL(dmYdjh.getDcPl());
+                slKc.setDCTH(dmYdjh.getTzbh());
+                //  slKc.setZYLX(dmYdjh.getZl());
+                slKc.setSLDW(dmYdjh.getKw());
+                slKc.setDHH(dmYdjh.getSljhrq());
+                //slKc.setPwwz(dmYdjh.getKw());
+                slKc.setYdid(dmYdjh.getId());
+                ydjhs.remove(dmYdjh); // 从列表中移除找到的元素
+                ckupList.add(slKc);
+            }
+            // 填写  库存垛位 kwh  层数  cfcs1  小合同号 gcddh    合同工 dc_fd   物料号 wph    炉批号  lph
+
+        }
+        Map retrunMap =new HashMap();
+        retrunMap.put("slkcs",ckupList);
+       // retrunMap.put("ydjhs",ydupList);
+        return new ResultBean(retrunMap);
+    }
 }
 
diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java
index 916e7e8..336c659 100644
--- a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java
+++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java
@@ -49,4 +49,6 @@ public interface DmYdjhMapper extends BaseMapper<DmYdjh> {
   List<Map<String,Object>> gxjhwcqk(String from,String to);
 
   List<Map<String,Object>> gcjd(List<String> czbh);
+
+   DmYdjh   getYdjhMin(@Param("dcch") String dcch, @Param("dcpl") String dcpl);
 }
diff --git a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml
index c13870b..a6b0773 100644
--- a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml
+++ b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml
@@ -822,4 +822,21 @@
                 #{item}
             </foreach>
     </insert>
+
+    <select id="getYdjhMin" parameterType="string" resultType="com.dsic.gj_erp.bean.jhgk.DmYdjh">
+        select  min (slrq) as slrq,
+                  min (pwrq) as pwrq,
+                  min (hxrq) as hxrq,
+                  min (qgrq) as qgrq,
+                  min (dmrq) as dmrq,
+                  min (qjgrq) as qjgrq,
+                  min (jssj) as jssj,
+                  min (sljhrq) as sljhrq,
+                  min (pwjhrq) as pwjhrq,
+                  min (lljhrq) as lljhrq,
+                  min (hxjhrq) as hxjhrq,
+                  min (qgjhrq) as qgjhrq from dm_ydjh
+where dc_ch=#{dcch} and dc_pl =#{dcpl}
+
+    </select>
 </mapper>