From 8fc046bd0df6f2f43e34724110a7652596caf4f7 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, 10 Dec 2024 14:06:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=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 --- .../service/jhgk/impl/YdjhImportService.java | 573 ++++++++++++++++++ 1 file changed, 573 insertions(+) create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportService.java diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportService.java new file mode 100644 index 0000000..bb36021 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportService.java @@ -0,0 +1,573 @@ +package com.dsic.gj_erp.service.jhgk.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.DmBom; +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.excel.JhxfExcel; +import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper; +import com.dsic.gj_erp.mapper.jhgk.DmSygdxqMapper; +import com.dsic.gj_erp.service.jhgk.DmSygdMxLjService; +import com.dsic.gj_erp.service.jhgk.DmSygdMxService; +import com.dsic.gj_erp.service.jhgk.DmSygdService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.TreeSet; +import java.util.stream.Collectors; + +@Service +@AllArgsConstructor +public class YdjhImportService extends ServiceImpl { + + private final DmSygdxqMapper sygdxqMapper; + private final DmSygdMxLjService ljService; + + @Transactional(rollbackFor = Exception.class) + public void handler(List objList){ + List qwb = objList.stream().filter(JhxfExcel::isAvailable) + .filter(item->!item.getDcPl().contains("-"))//去除T型材 + .filter(item->!item.getDcPl().contains("/"))//去除T型材 + .filter(item->item.getDcFd()!=null) + .filter(item -> item.getDcPl().contains("Q")).collect(Collectors.toList()); + this.execute(qwb); + + List list = objList.stream().filter(JhxfExcel::isAvailable) + .filter(item->!item.getDcPl().contains("-"))//去除T型材 + .filter(item->!item.getDcPl().contains("/"))//去除T型材 + .filter(item->item.getDcFd()!=null) + .filter(item -> !item.getDcPl().contains("Q")).collect(Collectors.toList()); + this.execute(list); + } + +// @Transactional(rollbackFor = Exception.class) +// public void handlerLj(List mxList){ +// //处理零件信息 +// List ljList = sygdxqMapper.getSygdLjMx(begin,end); +// 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); +// } + + /** + * 月度计划导入,不使用月度计划只能排产功能前提下使用该功能导入月度计划 + */ + @Transactional(rollbackFor = Exception.class) + public void execute(List objList) { + objList.forEach(item->{ + if (item.getDcPl().contains("A")){ + item.setDcPl(item.getDcPl().replace("A","")); + } + + if (item.getDcPl().contains("B")){ + item.setDcPl(item.getDcPl().replace("B","")); + } + + if (item.getDcPl().contains("C")){ + item.setDcPl(item.getDcPl().replace("C","")); + } + + if (item.getDcPl().contains("Q")){ + item.setDcPl(item.getDcPl().replace("Q","")); + item.setQwbBs(true); + } + + String format = String.format("%03d", Integer.parseInt(item.getDcPl())); + item.setDcPl(format); + + String[] dcfd=item.getDcFd().split("\\."); + + for (int fdIndex=0;fdIndex() + .eq("dc_ch",item.getDcCh()) + .eq("dc_pl",item.getDcPl()) + .eq("dc_fd",dcFd) + ); + ljService.remove(new QueryWrapper() + .eq("dcch",item.getDcCh()) + .eq("pl",item.getDcPl()) + .eq("fd",dcFd) + ); + List addList=new ArrayList<>(); + + if (!item.isAvailable()){ + addList.add(this.initDefault(item,dcFd)); + continue; + } + + List ljList = sygdxqMapper.getSygdLjMx1(item.getDcCh(), item.getDcPl(),dcFd); + + List sygdMxes; + if (item.getQwbBs()){ + sygdMxes = this.initBySl(item,ljList.stream() + .filter(it->"3".equals(it.getTzbh().substring(5,6))) + .collect(Collectors.toList()),dcFd + ); + }else{ + sygdMxes = this.initBySl(item,ljList.stream() + .filter(it->!"3".equals(it.getTzbh().substring(5,6))) + .collect(Collectors.toList()),dcFd + ); + } + + addList.addAll(sygdMxes); + + int _index=0; + int start=0; + int yklmbs=0; + try { + yklmbs=Integer.parseInt(item.getYklm()); + }catch (Exception ignored){} + if (yklmbs>0){ + if (!sygdMxes.isEmpty()){ + _index+=yklmbs; + if (_index>sygdMxes.size()){ + _index=sygdMxes.size(); + //throw new ServiceException(10009, StrUtil.format("船号:{},批次:{},一垮龙门板数超过上料张数",item.getDcCh(),item.getDcPl())); + } + for (int i=start;i<_index;i++){ + this.updateByYklm(item,sygdMxes.get(i)); + } + start+=yklmbs; + }else{ + List list = this.initByYklm(item, yklmbs,ljList,dcFd); + addList.addAll(list); + } + } + + int yksk=0; + try { + yksk=Integer.parseInt(item.getYksk()); + }catch (Exception ignored){} + if (yksk>0){ + if (!sygdMxes.isEmpty()){ + _index+=yksk; + if (_index>sygdMxes.size()){ + _index=sygdMxes.size(); + //throw new ServiceException(10009, StrUtil.format("船号:{},批次:{},一垮数控板数超过上料张数",item.getDcCh(),item.getDcPl())); + } + for (int i=start;i<_index;i++){ + this.updateByYksk(item,sygdMxes.get(i)); + } + start+=yksk; + }else{ + List list = this.initByYksk(item, yksk,ljList,dcFd); + addList.addAll(list); + } + } + + int eklmbs=0; + try { + eklmbs=Integer.parseInt(item.getEklmbs()); + }catch (Exception ignored){} + if (eklmbs>0){ + if (!sygdMxes.isEmpty()){ + _index+=eklmbs; + if (_index>sygdMxes.size()){ + _index=sygdMxes.size(); + //throw new ServiceException(10009, StrUtil.format("船号:{},批次:{},二垮龙门板数超过上料张数",item.getDcCh(),item.getDcPl())); + } + for (int i=start;i<_index;i++){ + this.updateByEklm(item,sygdMxes.get(i)); + } + start+=eklmbs; + }else{ + List list = this.initByEklmbs(item, eklmbs,ljList,dcFd); + addList.addAll(list); + } + } + + int eksk=0; + try { + eksk=Integer.parseInt(item.getEksk()); + }catch (Exception ignored){} + if (eksk>0){ + if (!sygdMxes.isEmpty()){ + _index+=eksk; + if (_index>sygdMxes.size()){ + _index=sygdMxes.size(); + //throw new ServiceException(10009, StrUtil.format("船号:{},批次:{},二垮数控板数超过上料张数",item.getDcCh(),item.getDcPl())); + } + for (int i=start;i<_index;i++){ + this.updateByEksk(item,sygdMxes.get(i)); + } + start+=eksk; + }else{ + List list = this.initByEksk(item, eksk,ljList,dcFd); + addList.addAll(list); + } + } + + int sksk=0; + try { + sksk=Integer.parseInt(item.getSksk()); + }catch (Exception ignored){} + if (sksk>0){ + if (!sygdMxes.isEmpty()){ + _index+=sksk; + if (_index>sygdMxes.size()){ + _index=sygdMxes.size(); + //throw new ServiceException(10009, StrUtil.format("船号:{},批次:{},三垮数控板数超过上料张数",item.getDcCh(),item.getDcPl())); + } + for (int i=start;i<_index;i++){ + this.updateBySksk(item,sygdMxes.get(i)); + } + start+=sksk; + }else{ + List list = this.initBySksk(item, sksk,ljList,dcFd); + addList.addAll(list); + } + } + + int skpt=0; + try { + skpt=Integer.parseInt(item.getSkpt()); + }catch (Exception ignored){} + if (skpt>0){ + if (!sygdMxes.isEmpty()){ + _index+=skpt; + if (_index>sygdMxes.size()){ + _index=sygdMxes.size(); + //throw new ServiceException(10009, StrUtil.format("船号:{},批次:{},三垮平铁板数超过上料张数",item.getDcCh(),item.getDcPl())); + } + for (int i=start;i<_index;i++){ + this.updateBySkpt(item,sygdMxes.get(i)); + } + start+=skpt; + }else{ + List list = this.initBySkpt(item, skpt,ljList,dcFd); + addList.addAll(list); + } + } + + int skbs=0; + try { + skbs=Integer.parseInt(item.getSkbs()); + }catch (Exception ignored){} + if (skbs>0){ + if (!sygdMxes.isEmpty()){ + _index+=skbs; + if (_index>sygdMxes.size()){ + _index=sygdMxes.size(); + //throw new ServiceException(10009, StrUtil.format("船号:{},批次:{},三垮数控板数超过上料张数",item.getDcCh(),item.getDcPl())); + } + for (int i=start;i<_index;i++){ + this.updateBySkbs(item,sygdMxes.get(i)); + } + start+=skbs; + }else{ + List list = this.initBySkbs(item, skbs,ljList,dcFd); + addList.addAll(list); + } + } + this.saveBatch(addList); + + ljList.forEach(lj-> addList.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); + } + }); + } + + private DmSygdMx initDefault(JhxfExcel item,String dcFd){ + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setDcFd(dcFd); + dmSygdMx.setJssj(item.getFdxq()); + if (item.getQwbBs()){ + dmSygdMx.setQbs("1"); + } + return dmSygdMx; + } + + private List initBySl(JhxfExcel item,List bomList,String dcFd){ + int slbs=0; + try { + slbs=Integer.parseInt(item.getBs1()); + }catch (Exception ignored){} + + List addList=new ArrayList<>(); + + if (slbs>0){ + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initBySl(item,list.get(i),dcFd); + addList.add(init); + } + } + return addList; + } + + private List initByYklm(JhxfExcel item,int sl,List bomList,String dcFd){ + List addList=new ArrayList<>(); + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initByYklm(item,list.get(i),dcFd); + addList.add(init); + } + return addList; + } + + private List initByYksk(JhxfExcel item,int sl,List bomList,String dcFd){ + List addList=new ArrayList<>(); + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initByYksk(item,list.get(i),dcFd); + addList.add(init); + } + return addList; + } + + private List initByEklmbs(JhxfExcel item,int sl,List bomList,String dcFd){ + List addList=new ArrayList<>(); + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initByEklmbs(item,list.get(i),dcFd); + addList.add(init); + } + return addList; + } + + private List initByEksk(JhxfExcel item,int sl,List bomList,String dcFd){ + List addList=new ArrayList<>(); + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initByEksk(item,list.get(i),dcFd); + addList.add(init); + } + return addList; + } + + private List initBySksk(JhxfExcel item,int sl,List bomList,String dcFd){ + List addList=new ArrayList<>(); + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initBySksk(item,list.get(i),dcFd); + addList.add(init); + } + return addList; + } + + private List initBySkpt(JhxfExcel item,int sl,List bomList,String dcFd){ + List addList=new ArrayList<>(); + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initBySkpt(item,list.get(i),dcFd); + addList.add(init); + } + return addList; + } + + private List initBySkbs(JhxfExcel item,int sl,List bomList,String dcFd){ + List addList=new ArrayList<>(); + if (bomList.isEmpty()){ + DmSygdMx dmSygdMx = this.initDefault(item,dcFd); + addList.add(dmSygdMx); + return addList; + } + ArrayList list = bomList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ); + for(int i=0;i=list.size()){ + break; + } + DmSygdMx init = this.initBySkbs(item,list.get(i),dcFd); + addList.add(init); + } + return addList; + } + + private void updateByYklm(JhxfExcel item, DmSygdMx dmSygdMx){ + dmSygdMx.setKw("7"); + dmSygdMx.setQgrq(item.getYkpkjs()); + } + + private void updateByYksk(JhxfExcel item, DmSygdMx dmSygdMx){ + dmSygdMx.setKw("8"); + dmSygdMx.setQgrq(item.getYkpkjs()); + } + + private void updateByEklm(JhxfExcel item, DmSygdMx dmSygdMx){ + dmSygdMx.setKw("5"); + dmSygdMx.setQgrq(item.getLmqgks()); + } + + private void updateByEksk(JhxfExcel item, DmSygdMx dmSygdMx){ + dmSygdMx.setKw("9"); + dmSygdMx.setQgrq(item.getEkskks()); + } + + private void updateBySksk(JhxfExcel item, DmSygdMx dmSygdMx){ + dmSygdMx.setKw("14"); + dmSygdMx.setQgrq(item.getSkskqgks()); + dmSygdMx.setQjgrq(item.getQptjs()); + } + + private void updateBySkpt(JhxfExcel item, DmSygdMx dmSygdMx){ + dmSygdMx.setKw("6"); + dmSygdMx.setQgrq(item.getPtks()); + } + + private void updateBySkbs(JhxfExcel item, DmSygdMx dmSygdMx){ + dmSygdMx.setKw("15"); + dmSygdMx.setQgrq(item.getPkqgjs()); + } + + private DmSygdMx initBySl(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + dmSygdMx.setSlrq(item.getSl()); + dmSygdMx.setXcpw(item.getXcpw()); + dmSygdMx.setPwrq(item.getPw()); + return dmSygdMx; + } + + private DmSygdMx initByYklm(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + this.updateByYklm(item,dmSygdMx); + return dmSygdMx; + } + + private DmSygdMx initByYksk(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + this.updateByYksk(item,dmSygdMx); + return dmSygdMx; + } + + private DmSygdMx initByEklmbs(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + this.updateByEklm(item,dmSygdMx); + return dmSygdMx; + } + + private DmSygdMx initByEksk(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + this.updateByEksk(item,dmSygdMx); + return dmSygdMx; + } + + private DmSygdMx initBySksk(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + this.updateBySksk(item,dmSygdMx); + return dmSygdMx; + } + + private DmSygdMx initBySkpt(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + this.updateBySkpt(item,dmSygdMx); + return dmSygdMx; + } + + private DmSygdMx initBySkbs(JhxfExcel item, DmSygdMxLj bom,String dcFd){ + DmSygdMx dmSygdMx = DmSygdMx.ofWithDmSygdMxlj(bom); + dmSygdMx.setDcFd(dcFd); + this.updateBySkbs(item,dmSygdMx); + return dmSygdMx; + } + +}