From 52aa862205887d0396d6461c438a20ee544c5086 Mon Sep 17 00:00:00 2001 From: xiaoning <1097449274@qq.com> Date: Fri, 29 Mar 2024 16:50:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dsic/gj_erp/bean/jcsj/EmSbcnp.java | 6 ++ .../com/dsic/gj_erp/bean/jcsj/EmSbjbb.java | 13 ++-- .../controller/jhgk/DmQfxqController.java | 23 +++++- .../com/dsic/gj_erp/handler/ComputePlan.java | 35 +++++---- .../dsic/gj_erp/handler/dto/RealCapacity.java | 1 - .../service/jcsj/impl/EmSbcnpServiceImpl.java | 2 +- .../service/jcsj/impl/EmSbjbbServiceImpl.java | 2 +- .../gj_erp/service/jhgk/DmQfxqService.java | 5 +- .../service/jhgk/impl/DmQfxqServiceImpl.java | 46 +++++++++--- .../jhgk/impl/DmSygdMxServiceImpl.java | 75 ++++++++++++------- 10 files changed, 140 insertions(+), 68 deletions(-) diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java index e14cb7c..7da9c6e 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java @@ -61,5 +61,11 @@ public class EmSbcnp implements Serializable { @ApiModelProperty(value = "夜班定额工时") private Double degsYb; + @ApiModelProperty(value = "所属部门") + private String szcs; + + @ApiModelProperty(value = "默认设备") + private String sbmc; + private String sbbh; } diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java index 8139366..33f85a8 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbjbb.java @@ -1,9 +1,6 @@ package com.dsic.gj_erp.bean.jcsj; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -299,12 +296,16 @@ public class EmSbjbb implements Serializable { private String whsj; private Integer xqrs; - private String gz; - private String tzbh; private String gx; + private Double degsYb; + private Double degs; + + private Double sdgs; + + private String cndw; } diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java index d36569c..732955b 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.dsic.gj_erp.annotation.AuthFunction; import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.jcsj.DmCbxxp; @@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -85,9 +87,24 @@ public class DmQfxqController { List list1 = BeanUtil.copyToList(objList1, DmQfxq.class); String username=(String) req.getAttribute("yhms"); String day= DateUtil.format(DateUtil.date(), "yyyy/MM/dd"); - service.saveXzList(list,username,day); - service.saveDzList(list1,username,day); - return new ResultBean(); + list= service.saveXzList(list,username,day); + List list2=new ArrayList<>(list); + if (list1.size()>0){ + list1= service.saveDzList(list1,username,day); + for (DmQfxq qfxq : list1) { + for (DmQfxq dmQfxq : list) { + if (qfxq.getId().equals(dmQfxq.getId())){ + int index= list.indexOf(dmQfxq); + list2.set(index,qfxq); + }else { + list2.add(qfxq); + } + } + } + } + service.generateYdjh(list2); + + return new ResultBean(list2); } //保存 diff --git a/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java b/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java index 980d19d..33690c9 100644 --- a/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java +++ b/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java @@ -163,7 +163,7 @@ public class ComputePlan { canUseDevice.forEach(item -> { //未定义图纸及工序的设备,无法参加排产 - if (StrUtil.hasEmpty(item.getTzbh(),item.getGx())){ + if (StrUtil.hasEmpty(item.getGx())){ return; } //维修时间 @@ -242,30 +242,33 @@ public class ComputePlan { private static RealCapacity initRealCapacity(EmGcrl gcrl, JSONObject deviceJson) { //设备产能,根据图号和工序去重,注意:同图号和工序下,不同组立对应的产能要一致 - List list = instance().sbcnList.stream() - .collect(Collectors.collectingAndThen(Collectors.toCollection(()-> - new TreeSet<>(Comparator.comparing(o->o.getTzbh()+o.getGx()))),ArrayList::new)); - String gx=deviceJson.getString("gx"); - String tzbh=deviceJson.getString("tzbh"); +// List list = instance().sbcnList.stream() +// .collect(Collectors.collectingAndThen(Collectors.toCollection(()-> +// new TreeSet<>(Comparator.comparing(o->o.getSbbh()+o.getGx()))),ArrayList::new)); +// String gx=deviceJson.getString("gx"); +// String tzbh=deviceJson.getString("tzbh"); RealCapacity capacity = new RealCapacity(); - list.forEach(sbcnp->{ - if (sbcnp.getGx().equals(gx)&& - sbcnp.getTzbh().equals(tzbh)){ +// list.forEach(sbcnp->{ +// if (sbcnp.getGx().equals(gx)&& +// sbcnp.getTzbh().equals(tzbh)){ + Double degs=deviceJson.getDouble("degs"); + Double degsYb=deviceJson.getDouble("degsYb"); + degs=ObjectUtil.isEmpty(degs)?0.0:degs; + degsYb=ObjectUtil.isEmpty(degsYb)?0.0:degsYb; if ("3".equals(gcrl.getPb())) { - capacity.setCapacity(sbcnp.getDegs() * 7 + sbcnp.getDegsYb() * 7); + capacity.setCapacity(degs * 7 + degsYb * 7); } if ("1".equals(gcrl.getPb())) { - capacity.setCapacity(sbcnp.getDegs() * 7); + capacity.setCapacity(degs * 7); } if ("2".equals(gcrl.getPb())) { - capacity.setCapacity(sbcnp.getDegsYb() * 7); + capacity.setCapacity(degsYb * 7); } - } - }); +// } +// }); capacity.setDeviceName(deviceJson.getString("sbbh")); capacity.setDate(gcrl.getGl()); - capacity.setGx(gx); - capacity.setTzbh(tzbh); + capacity.setGx(deviceJson.getString("gx")); return capacity; } diff --git a/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java b/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java index 2076584..8274398 100644 --- a/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java +++ b/src/main/java/com/dsic/gj_erp/handler/dto/RealCapacity.java @@ -11,5 +11,4 @@ public class RealCapacity { String date; Double capacity; String gx; - String tzbh; } diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java index 02e48f7..4fbf036 100644 --- a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java @@ -48,7 +48,7 @@ public class EmSbcnpServiceImpl extends ServiceImpl impl // emSbcnpMapper.test(); // } - List emSbjbbs=emSbcnpMapper.selectList(queryWrapper.orderByAsc("kw,tzbh,zl,jgsx")); + List emSbjbbs=emSbcnpMapper.selectList(queryWrapper.orderByAsc("tzbh,zl,jgsx,kw")); return emSbjbbs; } diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java index c81e361..b5a6484 100644 --- a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbjbbServiceImpl.java @@ -52,7 +52,7 @@ public class EmSbjbbServiceImpl extends ServiceImpl impl queryWrapper.eq("GYSBM",gysbm); } queryWrapper.like("SZCS","FP%"); - queryWrapper.orderByDesc("GRRQ"); + queryWrapper.orderByAsc("szcs"); List emSbjbbs=emSbjbbMapper.selectList(queryWrapper); return emSbjbbs; } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmQfxqService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmQfxqService.java index c61fc60..9536282 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/DmQfxqService.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmQfxqService.java @@ -22,6 +22,7 @@ import java.util.Map; public interface DmQfxqService extends IService { - void saveXzList(List list, String username, String day); - void saveDzList(List list, String username, String day); + List saveXzList(List list, String username, String day); + List saveDzList(List list, String username, String day); + void generateYdjh(List list); } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java index ea25ff1..0416370 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java @@ -38,7 +38,8 @@ public class DmQfxqServiceImpl extends ServiceImpl impleme @Override @Transactional - public void saveXzList(List list, String username, String day){ + public List saveXzList(List list, String username, String day){ + List list1=new ArrayList<>(); list.forEach(l->{ l.setDcPl(l.getDcPl().length() == 1 ? "00" + l.getDcPl() : l.getDcPl().length() == 2 ? "0" + l.getDcPl() : l.getDcPl()); DmQfxq qfxq=this.getOne(new QueryWrapper() @@ -75,20 +76,33 @@ public class DmQfxqServiceImpl extends ServiceImpl impleme .eq("dc_pl",l.getDcPl()) .eq("DC_FD",l.getDcFd()) ); + qfxq.setXzglxq(l.getXzglxq()); + qfxq.setXzglxqOld(l.getXzglxqOld()); + qfxq.setXdb(l.getXdb()); + qfxq.setXskj(l.getXskj()); + qfxq.setXpt(l.getXpt()); + qfxq.setXyw(l.getXyw()); + qfxq.setXxc(l.getXxc()); + qfxq.setXtxc(l.getXtxc()); + qfxq.setDrcs(l.getDrcs()); + qfxq.setXqzt(l.getXqzt()); + qfxq.setDrrq(l.getDrrq()); + qfxq.setDrr(l.getDrr()); + list1.add(qfxq); }else { l.setDrr(username); l.setDrrq(day); this.save(l); + list1.add(l); } - - }); + return list1; } @Override @Transactional - public void saveDzList(List list,String username,String day){ - List toYdList=new ArrayList<>(); + public List saveDzList(List list,String username,String day){ + List list1=new ArrayList<>(); list.forEach(l->{ l.setDcPl(l.getDcPl().length() == 1 ? "00" + l.getDcPl() : l.getDcPl().length() == 2 ? "0" + l.getDcPl() : l.getDcPl()); DmQfxq qfxq=this.getOne(new QueryWrapper() @@ -112,18 +126,23 @@ public class DmQfxqServiceImpl extends ServiceImpl impleme .eq("dc_pl",l.getDcPl()) .eq("DC_FD",l.getDcFd()) ); + qfxq.setDzglxqOld(qfxq.getDzglxq()); + qfxq.setDzglxq(l.getDzglxq()); + qfxq.setDqb(l.getDqb()); + qfxq.setDxc(l.getDxc()); + qfxq.setDsj(l.getDsj()); + qfxq.setDdb(l.getDdb()); + qfxq.setDrrq(l.getDrrq()); + qfxq.setDrr(l.getDrr()); + list1.add(qfxq); }else { l.setDrr(username); l.setDrrq(day); this.save(l); + list1.add(l); } - toYdList.add(this.getOne(Wrappers.lambdaQuery() - .eq(DmQfxq::getDcCh,l.getDcCh()) - .eq(DmQfxq::getDcPl,l.getDcPl()) - .eq(DmQfxq::getDcFd,l.getDcFd()) - )); }); - generateYdjh(toYdList); + return list1; } /** @@ -136,6 +155,7 @@ public class DmQfxqServiceImpl extends ServiceImpl impleme List ids = list.stream().map(DmQfxq::getId).collect(Collectors.toList()); //获取对应的 三月滚动计划明细 //需要再次排产?目前没排 + List ydjhList = baseMapper.getYdjh(ids); if (ydjhList.size() < 1) { System.out.println("当前导入的前方需求没有对应的三月滚动计划!"); @@ -180,6 +200,10 @@ public class DmQfxqServiceImpl extends ServiceImpl impleme private void removeByMulti(List list,String dcCh,String dcPl,int size){ List tzbhList = list.stream().map(DmYdjh::getTzbh).collect(Collectors.toList()); + if (tzbhList.size()<=size){ + this.remove(tzbhList,dcCh,dcPl); + return; + } AtomicInteger index=new AtomicInteger(tzbhList.size()/size); do { int i = index.decrementAndGet(); diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java index 0fa99d6..f241546 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java @@ -108,6 +108,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i List mxList = baseMapper.getMx(begin, end); //todo 排产 ypc(mxList); + this.saveBatch(mxList); baseMapper.setParent(begin, end); ResultBean r = new ResultBean(mxList); r.setSuccess(true); @@ -120,7 +121,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i * @param list */ public void ypc(List list) { - Map> mxMap = list.stream().filter(l->StrUtil.isNotEmpty(l.getTzbh())).collect(Collectors.groupingBy(l -> l.getKw() + l.getZl())); +// Map> mxMap = list.stream().filter(l->StrUtil.isNotEmpty(l.getTzbh())).collect(Collectors.groupingBy(l -> l.getKw() + l.getZl())); ComputePlan c=ComputePlan.instance(); c.computeRealCapacity(); Map> rel=c.getRealCapacityMap(); @@ -129,18 +130,13 @@ public class DmSygdMxServiceImpl extends ServiceImpl i List sbcnp =c.getSbcnList(); Map> cnMap = sbcnp.stream().collect(Collectors.groupingBy(l -> l.getTzbh() + l.getZl())); - for (String ljkey : mxMap.keySet()) { - //对应加工顺序 - List jgsxList= cnMap.get(ljkey); - //加工板材 - List mxs = mxMap.get(ljkey); - if (ObjectUtil.isEmpty(jgsxList)||jgsxList.size()<1 ){ - continue; - } - mxs.forEach(l->{ + list.forEach(l->{ + List jgsxList= cnMap.get(l.getKw()+l.getZl()); + if (ObjectUtil.isNotEmpty(jgsxList)&&jgsxList.size()>0 ){ jggx(rel,l,jgsxList); - }); - } + } + }); + } /** @@ -154,42 +150,42 @@ public class DmSygdMxServiceImpl extends ServiceImpl i for (EmSbcnp cn : list) { //上料 if (cn.getGx().equals("19")) { - date=xhcn(rel,l.getKw(),cn.getGx(),1, date); + date=xhcn(rel,cn.getSbbh(),cn.getGx(),1, date); l.setSlrq(date); } //抛丸 if (cn.getGx().equals("20")) { - date=xhcn(rel,l.getKw(),cn.getGx(),1, date); + date=xhcn(rel,cn.getSbbh(),cn.getGx(),1, date); l.setPwrq(date); } //理料 if (cn.getGx().equals("21")) { - date=xhcn(rel,l.getKw(),cn.getGx(),1, date); + date=xhcn(rel,cn.getSbbh(),cn.getGx(),1, date); l.setLlrq(date); } // 划线 - if ("01,02".indexOf(cn.getGx()) > -1) { - date=xhcn(rel,l.getKw(),cn.getGx(),l.getHxcd(), date); + if ("01,02".indexOf(cn.getGx()) > -1 && l.getHxcd()>0) { + date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getHxcd(), date); l.setHxrq(date); } //切割 - if ("03,04,05,06,07".indexOf(cn.getGx()) > -1) { - date=xhcn(rel,l.getKw(),cn.getGx(),l.getQgcd(), date); + if ("03,04,05,06,07".indexOf(cn.getGx()) > -1 && l.getQgcd()>0) { + date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getQgcd(), date); l.setQgrq(date); } // 坡口 if (ObjectUtil.isNotEmpty(l.getPkcd()) && ("08,10".indexOf(cn.getGx()) > 0)) { - date=xhcn(rel,l.getKw(),cn.getGx(),l.getPkcd(), date); + date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getPkcd(), date); l.setPkrq(date); } // 打磨 if (ObjectUtil.isNotEmpty(l.getDmcd()) && ("16,13".indexOf(cn.getGx()) > 0)) { - date=xhcn(rel,l.getKw(),cn.getGx(),l.getDmcd(), date); + date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getDmcd(), date); l.setDmrq(date); } // 曲 (个) if (StrUtil.isNotEmpty(l.getQbs()) && cn.getGx().equals("18")) { - date=xhcn(rel,l.getKw(),cn.getGx(),l.getLjsl(), date); + date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getLjsl(), date); l.setQjgrq(date); } @@ -200,19 +196,19 @@ public class DmSygdMxServiceImpl extends ServiceImpl i /** * 消耗产能 * @param rel 实际产能,默认未来三个月 - * @param tzbh 设备产能(tzbh);三月滚动需求(kw) + * @param sbbh 设备编号 * @param gx 工序 * @param gzl 工作量 * @param kssj 上一道工序的加工时间 * @return */ - public String xhcn(Map> rel,String tzbh,String gx,double gzl ,String kssj){ + public String xhcn(Map> rel,String sbbh,String gx,double gzl ,String kssj){ String jgsj=""; if (gzl==0)return jgsj; for (String date:rel.keySet()){ if (date.compareTo(kssj)>=0||StrUtil.isEmpty(kssj)){ for (RealCapacity l:rel.get(date)){ - if (l.getTzbh().equals(tzbh)&&l.getGx().equals(gx)){ + if (l.getDeviceName().equals(sbbh)&&l.getGx().equals(gx)){ if (l.getCapacity()>=gzl){ int index = rel.get(date).indexOf(l); l.setCapacity(l.getCapacity()-gzl); @@ -340,7 +336,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i .eq("nf", year) .ne("zl", 0) .between("yf", begin, end)); - List xbjhdtoList = BeanUtil.copyToList(xbjhs, Xbjhdto.class); + List xbjhdtos = BeanUtil.copyToList(xbjhs, Xbjhdto.class); //3.根据月份和船号分组 Map> monthAndCh = list.stream() @@ -348,7 +344,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i .collect(Collectors.groupingBy(x -> x.getJssj().substring(5, 7) + x.getDcCh())); //4. - xbjhdtoList.forEach(dmXbjh -> { + xbjhdtos.forEach(dmXbjh -> { for (String ch : monthAndCh.keySet()) { if (dmXbjh.getDcCh().equals(monthAndCh.get(ch).get(0).getDcCh()) && dmXbjh.getYf().equals(monthAndCh.get(ch).get(0).getJssj().substring(5, 7))) { @@ -365,6 +361,31 @@ public class DmSygdMxServiceImpl extends ServiceImpl i } } }); + List xbjhdtoList=new ArrayList<>(xbjhdtos); + for (String ch : monthAndCh.keySet()) { + Xbjhdto dmXbjh=new Xbjhdto(); + for (Xbjhdto xbjhdto : xbjhdtos) { + if (!(xbjhdto.getDcCh().equals(monthAndCh.get(ch).get(0).getDcCh()) + && xbjhdto.getYf().equals(monthAndCh.get(ch).get(0).getJssj().substring(5, 7)))) { + Double shzl = 0.0; + for (DmSygdMx mx : monthAndCh.get(ch)) { + shzl = shzl + (Objects.isNull(mx.getBcshzl()) ? 0.0 : mx.getBcshzl()); + } + shzl = Double.valueOf(String.format("%.2f", Objects.isNull(shzl) ? shzl : shzl / 1000.0)); + dmXbjh.setTlt_zl(shzl); + dmXbjh.setXczl(Double.valueOf(String.format("%.2f", shzl - dmXbjh.getZl()))); + dmXbjh.setMxList(monthAndCh.get(ch)); + dmXbjh.setDcCh(monthAndCh.get(ch).get(0).getDcCh()); + dmXbjh.setYf(monthAndCh.get(ch).get(0).getJssj().substring(5, 7)); + dmXbjh.setNf(monthAndCh.get(ch).get(0).getJssj().substring(0, 4));//2024/04/05 + + } + } + if (dmXbjh.getTlt_zl()>0){ + xbjhdtoList.add(dmXbjh); + } + + } Map> yf = xbjhdtoList.stream() .filter(mx -> Objects.nonNull(mx.getDcCh())) // group by 的字段不能有null值 .collect(Collectors.groupingBy(x -> x.getYf()));