From c8eacf47031b270a9404196e225c5a183b15fa10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=93=B2=E5=A5=87?= <13840175730@139.com> Date: Tue, 14 May 2024 17:21:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E4=B8=80=E8=B7=A8=E5=B9=B3?= =?UTF-8?q?=E7=9B=B4=E5=A4=A7=E7=89=88=E5=B7=A5=E5=BA=8F=E9=94=99=E8=AF=AF?= =?UTF-8?q?=202.=E8=B0=83=E6=95=B4=E6=B1=87=E6=80=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8F=90=E5=8F=96=203.=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 - .../com/dsic/gj_erp/bean/jhgk/DmSygdMx.java | 97 +++++++++++++++- .../controller/jhgk/DmSygdMxController.java | 43 ------- .../jhgk/三月滚动排产控制器.java | 74 ++++++++++++ .../gj_erp/mapper/jhgk/DmSygdxqMapper.java | 4 + .../java/com/dsic/gj_erp/pc/Constant.java | 16 +-- .../gj_erp/pc/dto/tlt/一跨平直大板.java | 2 +- .../gj_erp/pc/service/三月滚动接口.java | 82 +++++++++++++ .../resources/mappers/jhgk/DmSygdMxMapper.xml | 12 +- .../resources/mappers/jhgk/DmSygdxqMapper.xml | 109 ++++++++++++++---- 10 files changed, 355 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/三月滚动排产控制器.java create mode 100644 src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java diff --git a/pom.xml b/pom.xml index 31b68a7..0bc97ef 100644 --- a/pom.xml +++ b/pom.xml @@ -34,11 +34,6 @@ easypoi-annotation 3.2.0 - - org.apache.pdfbox - pdfbox - 2.0.24 - com.jcraft 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 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 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 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 { List getXqWithBom(String from,String to); + List 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().between("xzglxq", begin, end)); + sygdMxService.remove(new QueryWrapper().between("jssj", begin, end)); + sygdService.remove(new QueryWrapper().between("sl_sj", begin, end)); + + //开始汇总 + List ljList = sygdxqMapper.getSygdLjMx(begin,end); + + if (ljList.size() < 1) { + return new ResultBean(false, 1, "请先导入" + begin + " ~ " + end + "分段钢料需求!"); + } + + //2.根据 + List mxList = ljList.stream().map(DmSygdMx::ofWithDmSygdMxlj).collect(Collectors.toList()); + + Map> 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 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 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 @@ + +