From c318a32890f5770a4c8acc20913e200fea182101 Mon Sep 17 00:00:00 2001 From: xhj Date: Fri, 11 Oct 2024 14:54:35 +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/DmSygdMx.java | 21 + .../gj_erp/bean/jhgk/excel/JhxfExcel.java | 207 +++++++++ .../controller/jhgk/DmSygdMxController.java | 24 ++ .../gj_erp/listeners/ExcelJhxfListener.java | 154 +++++++ .../gj_erp/service/jhgk/DmSygdMxService.java | 5 + .../jhgk/impl/DmSygdMxServiceImpl.java | 395 +++++++++++++++++- .../java/com/dsic/gj_erp/util/MyString.java | 22 + 7 files changed, 827 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/excel/JhxfExcel.java create mode 100644 src/main/java/com/dsic/gj_erp/listeners/ExcelJhxfListener.java 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 a40f32f..b029d78 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 @@ -206,6 +206,27 @@ public class DmSygdMx implements Serializable { private String dmgxbm; private String qjggxbm; + @ApiModelProperty(value = "面板挤边") + private String mbjb; + @ApiModelProperty(value = "七垮型材米数") + private String qkxcms; + @ApiModelProperty(value = "型材面板") + private String xcmb; + @ApiModelProperty(value = "分段需求/小组配送结束") + private String fdxq; + @ApiModelProperty(value = "光电结束") + private String gdjs; + @ApiModelProperty(value = "备注") + private String bz; + + private String bzry; + private String bzrq; + private String drbs; + + + + + public void 更新排产信息(Constant.工序 _工序,String date){ switch(_工序){ diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/excel/JhxfExcel.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/excel/JhxfExcel.java new file mode 100644 index 0000000..fd09752 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/excel/JhxfExcel.java @@ -0,0 +1,207 @@ +package com.dsic.gj_erp.bean.jhgk.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * JhxfExcel: + * + * @author xhj + * @date 2024/10/09 + */ +@Data +public class JhxfExcel { + + + @ExcelProperty("产品") + private String dcCh; + + @ExcelProperty("批量") + private String dcPl; + + @ExcelProperty("分段") + private String dcFd; + + + + + @ApiModelProperty(value = "板数") + @ExcelProperty("板数") + private String bs1; + + @ApiModelProperty(value = "上料") + @ExcelProperty("上料") + @DateTimeFormat("yyyy/MM/dd") + private String sl; + + @ApiModelProperty(value = "型材抛丸") + @ExcelProperty("型材抛丸") + @DateTimeFormat("yyyy/MM/dd") + private String xcpw; + + @ApiModelProperty(value = "抛丸") + @ExcelProperty("抛丸") + @DateTimeFormat("yyyy/MM/dd") + private String pw; + + @ApiModelProperty(value = "一垮龙门板数") + @ExcelProperty("一垮龙门板数") + private String yklm; + + @ApiModelProperty(value = "一垮数控板数") + @ExcelProperty("一垮数控板数") + private String yksk; + + @ExcelProperty("大板切割开始") + @DateTimeFormat("yyyy/MM/dd") + private String dbqgks; + + @ApiModelProperty(value = "坡口切割结束") + @ExcelProperty("坡口切割结束") + @DateTimeFormat("yyyy/MM/dd") + private String ykpkjs; + + @ExcelProperty("二垮龙门板数") + private String eklmbs; + + @ExcelProperty("龙门切割开始") + @DateTimeFormat("yyyy/MM/dd") + private String lmqgks; + + @ExcelProperty("龙门切割结束") + @DateTimeFormat("yyyy/MM/dd") + private String lmqgjs; + + + + + + @ApiModelProperty(value = "二垮数控板数") + @ExcelProperty("二垮数控板数") + private String eksk; + + + + + + @ApiModelProperty(value = "数控切割开始") + @ExcelProperty(value ="数控切割开始",index=16) + @DateTimeFormat("yyyy/MM/dd") + private String ekskks; + + @ApiModelProperty(value = "坡口切割结束") + @ExcelProperty(value ="坡口切割结束",index=17) + @DateTimeFormat("yyyy/MM/dd") + private String ekpkjs; + + @ApiModelProperty(value = "三垮数控板数") + @ExcelProperty("三垮数控板数") + private String sksk; + + @ApiModelProperty(value = "数控切割开始") + @ExcelProperty(value ="数控切割开始",index=19) + @DateTimeFormat("yyyy/MM/dd") + private String skskqgks; + + @ApiModelProperty(value = "坡口切割结束") + @ExcelProperty(value ="坡口切割结束",index=20) + @DateTimeFormat("yyyy/MM/dd") + private String skpkjs; + + @ApiModelProperty(value = "三垮平铁板数") + @ExcelProperty("三垮平铁板数") + private String skpt; + + @ApiModelProperty(value = "平铁切割开始") + @ExcelProperty("平铁切割开始") + @DateTimeFormat("yyyy/MM/dd") + private String ptks; + + @ApiModelProperty(value = "平铁切割结束") + @ExcelProperty("平铁切割结束") + @DateTimeFormat("yyyy/MM/dd") + private String ptjs; + + @ApiModelProperty(value = "曲平铁转结束") + @ExcelProperty("曲平铁转结束") + @DateTimeFormat("yyyy/MM/dd") + private String qpt_zjs; + + @ApiModelProperty(value = "曲平铁结束") + @ExcelProperty("曲平铁结束") + @DateTimeFormat("yyyy/MM/dd") + private String qptjs; + + @ApiModelProperty(value = "曲外板结束") + @ExcelProperty("曲外板结束") + @DateTimeFormat("yyyy/MM/dd") + private String qwbjs; + + @ApiModelProperty(value = "组立") + @ExcelProperty("组立") + private String zl; + + + @ApiModelProperty(value = "腹板板数") + @ExcelProperty("腹板板数") + private String fbbs; + + @ApiModelProperty(value = "腹板切割开始") + @ExcelProperty("腹板切割开始") + @DateTimeFormat("yyyy/MM/dd") + private String fbqgks; + + @ApiModelProperty(value = "腹板切割结束") + @ExcelProperty("腹板切割结束") + @DateTimeFormat("yyyy/MM/dd") + private String fbqgjs; + + + @ApiModelProperty(value = "数控板数") + @ExcelProperty("数控板数") + + private String skbs; + + @ApiModelProperty(value = "数控切割开始") + @ExcelProperty(value = "数控切割开始",index = 32) + @DateTimeFormat("yyyy/MM/dd") + private String skqgks; + + + + + + + + @ApiModelProperty(value = "坡口切割结束") + @ExcelProperty(value = "坡口切割结束",index = 33) + @DateTimeFormat("yyyy/MM/dd") + private String pkqgjs; + + + @ApiModelProperty(value = "面板挤边") + @ExcelProperty("面板挤边") + @DateTimeFormat("yyyy/MM/dd") + private String mbjb; + @ApiModelProperty(value = "七垮型材米数") + @ExcelProperty("七垮型材米数") + private String qkxcms; + @ApiModelProperty(value = "型材面板") + @ExcelProperty("型材面板") + @DateTimeFormat("yyyy/MM/dd") + private String xcmb; + @ApiModelProperty(value = "分段需求/小组配送结束") + @ExcelProperty("小组配送结束") + @DateTimeFormat("yyyy/MM/dd") + private String fdxq; + @ApiModelProperty(value = "光电结束") + @ExcelProperty("光电结束") + @DateTimeFormat("yyyy/MM/dd") + private String gdjs; + @ApiModelProperty(value = "备注") + @ExcelProperty("备注") + private String bz; + +} 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 0544c65..55a4b0b 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 @@ -3,6 +3,7 @@ package com.dsic.gj_erp.controller.jhgk; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsic.gj_erp.annotation.AuthFunction; @@ -11,22 +12,29 @@ import com.dsic.gj_erp.bean.jcsj.DmCzplpNew; import com.dsic.gj_erp.bean.jcsj.EmGcrl; import com.dsic.gj_erp.bean.jcsj.EmSbcnp; import com.dsic.gj_erp.bean.jcsj.EmSbjbb; +import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; import com.dsic.gj_erp.bean.jhgk.DmQfxq; import com.dsic.gj_erp.bean.jhgk.DmSygd; import com.dsic.gj_erp.bean.jhgk.DmSygdMx; import com.dsic.gj_erp.bean.jhgk.DmYdjhxf; +import com.dsic.gj_erp.bean.jhgk.excel.JhxfExcel; import com.dsic.gj_erp.handler.ComputePlan; +import com.dsic.gj_erp.listeners.ExcelJhxfListener; +import com.dsic.gj_erp.listeners.ExcelPlListener; import com.dsic.gj_erp.pc.Manager; import com.dsic.gj_erp.pc.排产; import com.dsic.gj_erp.service.jcsj.EmGcrlService; import com.dsic.gj_erp.service.jcsj.EmSbcnpService; import com.dsic.gj_erp.service.jhgk.DmSygdMxService; import com.dsic.gj_erp.service.sy.SYService; +import com.sun.org.apache.bcel.internal.generic.RETURN; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.io.IOException; import java.util.*; import java.util.concurrent.Semaphore; import java.util.stream.Collectors; @@ -144,5 +152,21 @@ public class DmSygdMxController { return service.tqSygd(from,to); } + + @RequestMapping("/ydjhImport") + @AuthFunction + public ResultBean ydjhImport(@RequestParam("file") MultipartFile file , String isupload, HttpServletRequest req) throws IOException { + + + ExcelJhxfListener objectListener = new ExcelJhxfListener(); + EasyExcel.read(file.getInputStream(), JhxfExcel.class, objectListener).sheet(0).headRowNumber(1).doRead(); + List objList = objectListener.getObjectList(); + + service.ydjhImport(objList); + return new ResultBean(); + + + } + } diff --git a/src/main/java/com/dsic/gj_erp/listeners/ExcelJhxfListener.java b/src/main/java/com/dsic/gj_erp/listeners/ExcelJhxfListener.java new file mode 100644 index 0000000..c100a34 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/listeners/ExcelJhxfListener.java @@ -0,0 +1,154 @@ +package com.dsic.gj_erp.listeners; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.dsic.gj_erp.bean.jhgk.excel.JhxfExcel; +import com.dsic.gj_erp.util.ObjConvertUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Excel通用监听器 + */ +public class ExcelJhxfListener extends AnalysisEventListener { + + private static final int BATCH_COUNT = 5; + + List objectList = new ArrayList<>(); + List headList = new ArrayList<>(); + private String sheetName; + + List datas = new ArrayList(); + + private String dcch; + private String dcpl; + + @Override + public void invoke(JhxfExcel excelDemo, AnalysisContext analysisContext) { + //每解析一行数据,就会调用该方法一次 + //正常在这里调用数据处理得办法 + + //一条数据添加到暂时存储的存储结构中 + + + if(StringUtils.isBlank(excelDemo.getDcCh())){ + excelDemo.setDcCh(dcch); + }else{ + dcch=excelDemo.getDcCh(); + } + if(StringUtils.isBlank(excelDemo.getDcPl())){ + excelDemo.setDcPl(dcpl); + }else{ + dcpl=excelDemo.getDcPl(); + } + boolean a=false; + // 9个数量都为空 不导入 + if(StringUtils.isBlank(excelDemo.getBs1()) && + StringUtils.isBlank(excelDemo.getYklm())&& + StringUtils.isBlank(excelDemo.getYksk())&& + StringUtils.isBlank(excelDemo.getEklmbs())&& + StringUtils.isBlank(excelDemo.getEksk())&& + StringUtils.isBlank(excelDemo.getSksk())&& + StringUtils.isBlank(excelDemo.getSkpt())&& + StringUtils.isBlank(excelDemo.getFbbs())&& + StringUtils.isBlank(excelDemo.getSkbs()) + ){ + a=true; + } + + + boolean b = ObjConvertUtils.checkObjAllFieldsIsNull(excelDemo); + if(!b && !a){ + datas.add(excelDemo); + } + // + + + + + + // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM + if (datas.size() >= BATCH_COUNT) { + saveData(); + // 存储完成清理 list + datas.clear(); + } + } + + + + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + //获取sheetName + saveData(); + sheetName = context.readSheetHolder().getSheetName(); +// LOGGER.info("所有数据解析完成!"); + } + + //获取表头 + @Override + public void invokeHeadMap(Map headMap, AnalysisContext context) { + //把表头数据加入到存储结构中 + headList.add(headMap); + } + + /** + * 入库 + */ + private void saveData() { + //添加到返回的存储结构中,也可直接存储到数据库 + objectList.addAll(datas); + } + + public List getDatas() { + return datas; + } + + public void setDatas(List datas) { + this.datas = datas; + } + + public List getObjectList() { + return objectList; + } + + public void setObjectList(List objectList) { + this.objectList = objectList; + } + + public String getSheetName() { + return sheetName; + } + + public void setSheetName(String sheetName) { + this.sheetName = sheetName; + } + + public List getHeadList() { + return headList; + } + + public void setHeadList(List headList) { + this.headList = headList; + } + + public String getDcch() { + return dcch; + } + + public void setDcch(String dcch) { + this.dcch = dcch; + } + + public String getDcpl() { + return dcpl; + } + + public void setDcpl(String dcpl) { + this.dcpl = dcpl; + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java index e2ab9c6..ef90c35 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java @@ -2,9 +2,11 @@ package com.dsic.gj_erp.service.jhgk; import com.baomidou.mybatisplus.extension.service.IService; import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; import com.dsic.gj_erp.bean.jhgk.DmSygdMx; import com.dsic.gj_erp.bean.jhgk.DmYdjhxf; import com.dsic.gj_erp.bean.jhgk.dto.*; +import com.dsic.gj_erp.bean.jhgk.excel.JhxfExcel; import org.springframework.web.bind.annotation.RequestBody; import java.util.HashMap; @@ -32,4 +34,7 @@ public interface DmSygdMxService extends IService { List tqSygd1(String begin, String end); Object cgjhdhqk(Map map); + + + void ydjhImport(List objList); } 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 d976b20..2a601db 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 @@ -9,12 +9,15 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.jcsj.*; import com.dsic.gj_erp.bean.jhgk.*; import com.dsic.gj_erp.bean.jhgk.dto.*; +import com.dsic.gj_erp.bean.jhgk.excel.JhxfExcel; import com.dsic.gj_erp.bean.sy.Dm_zhbmp; import com.dsic.gj_erp.dao.sy.Dm_zhbmpRepository; import com.dsic.gj_erp.handler.ComputePlan; @@ -22,6 +25,8 @@ import com.dsic.gj_erp.handler.dto.RealCapacity; import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper; import com.dsic.gj_erp.service.jcsj.EmSbcnpService; import com.dsic.gj_erp.service.jhgk.*; +import com.dsic.gj_erp.util.MyString; +import io.swagger.annotations.ApiModelProperty; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -171,6 +176,8 @@ public class DmSygdMxServiceImpl extends ServiceImpl i return baseMapper.cgjhdhqk(map); } + + /** * 三月滚动需求期排产 * 滚动需求期信息,提取相应的BOM数据,后合并到套料图级别 @@ -936,6 +943,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i if ("5".equals(item.getKw())){ eksk2.updateAndGet(v -> v + 1); } + if ("14".equals(item.getKw())){ sksk.updateAndGet(v -> v + 1); } @@ -965,6 +973,10 @@ public class DmSygdMxServiceImpl extends ServiceImpl i val.stream().filter(item->StrUtil.isNotEmpty(item.getPwrq())) .min(Comparator.comparing(DmSygdMx::getPwrq)).ifPresent(item -> dmYdjhxf.setPw(item.getPwrq())); + + val.stream().filter(item->StrUtil.isNotEmpty(item.getGdjs())) + .min(Comparator.comparing(DmSygdMx::getPwrq)).ifPresent(item -> dmYdjhxf.setGdjs(item.getGdjs())); + //一跨龙门数量 dmYdjhxf.setYklm(yklm.get()+""); //一跨数控数量 @@ -989,7 +1001,8 @@ public class DmSygdMxServiceImpl extends ServiceImpl i dmYdjhxf.setSkpt(skpt.get()+""); val.stream().filter(item->"6".equals(item.getKw())) .min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setPtks(item.getQgrq())); - + val.stream().filter(item->"6".equals(item.getKw())) + .min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setPtjs(item.getQjgrq())); dmYdjhxf.setSkbs(skbs.get()+""); val.stream().filter(item->"15".equals(item.getKw())) .min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setSkqgks(item.getQgrq())); @@ -998,6 +1011,9 @@ public class DmSygdMxServiceImpl extends ServiceImpl i val.stream().filter(item->"11".equals(item.getKw())) .min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setSkbs2(item.getQgrq())); + val.stream().filter(item->"7".equals(item.getKw())) + .min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setYkpkjs(item.getQgrq())); + dmYdjhxf.setFdxq(val.get(0).getJssj()); list2.add(dmYdjhxf); }); @@ -1045,4 +1061,381 @@ public class DmSygdMxServiceImpl extends ServiceImpl i return this.tqSygd2(begin,end); } + + + @Override + public void ydjhImport(List objList) { + // 1,同产品与批量视为一条记录 dcch dcpl + // 2,板数是否为空 不为空循环板数增加记录(还有一个其他集合) bs1=7 + //3,后续数量中 bs2=2 bs3=5 其中两条rq='2024/10/25' 另外五条rq='2024/10/23' + String dcch=""; + String dcpl=""; + + int zz=0; + int num=0; + int zsl=0; + List overlist=new ArrayList<>(); + Map> map =new HashMap(); + for (int i = 0; i < objList.size(); i++) { + JhxfExcel jhxfExcel = objList.get(i); + + + if(!dcch.equals(jhxfExcel.getDcCh()) || !dcpl.equals(jhxfExcel.getDcPl())){ + //if(StringUtils.isBlank(dcch)){ + dcch=jhxfExcel.getDcCh(); + //} + // if(StringUtils.isBlank(dcpl)){ + dcpl=jhxfExcel.getDcPl(); + num=0; + zsl=0; + zz=0; + // } + //进行循环 + String bs1 = jhxfExcel.getBs1(); + // int num=0; + if(StringUtils.isNotBlank(bs1)){ + num= MyString.convertStringToNumber(bs1); + } + List insertsOne= new ArrayList<>(); + if(num>0){ + + for (int j = 0; j < num; j++) { + // 生成数据 + DmSygdMx sygdMx= new DmSygdMx(); + sygdMx.setDcCh(jhxfExcel.getDcCh()); + sygdMx.setDcPl(jhxfExcel.getDcPl()); + sygdMx.setDcFd(jhxfExcel.getDcFd()); + sygdMx.setSlrq(jhxfExcel.getSl()); + sygdMx.setPwrq(jhxfExcel.getPw()); + sygdMx.setZl(jhxfExcel.getZl()); + sygdMx.setJssj(jhxfExcel.getFdxq()); + +// @ApiModelProperty(value = "面板挤边") +// private String mbjb; +// @ApiModelProperty(value = "七垮型材米数") +// private String qkxcms; +// @ApiModelProperty(value = "型材面板") +// private String xcmb; +// @ApiModelProperty(value = "分段需求/小组配送结束") +// private String fdxq; +// @ApiModelProperty(value = "光电结束") +// private String gdjs; +// @ApiModelProperty(value = "备注") +// private String bz; +// +// private String bzry; +// private String bzrq; + + sygdMx.setMbjb(jhxfExcel.getMbjb()); + sygdMx.setQkxcms(jhxfExcel.getQkxcms()); + sygdMx.setXcmb(jhxfExcel.getXcmb()); + sygdMx.setFdxq(jhxfExcel.getFdxq()); + sygdMx.setGdjs(jhxfExcel.getGdjs()); + sygdMx.setBz(jhxfExcel.getBz()); + + insertsOne.add(sygdMx); + } + }else{ + continue; + } + int yklm=0; + if(StringUtils.isNotBlank(jhxfExcel.getYklm())){ + yklm= MyString.convertStringToNumber(jhxfExcel.getYklm()); + } + if(yklm>0){ + zz=yklm; + + + for (int j = 0; j < yklm; j++) { + // 生成数据 + insertsOne.get(j).setKw("7"); + insertsOne.get(j).setQgrq(jhxfExcel.getYkpkjs()); + zsl++; + if(zsl>num){ + continue; + } + } + } + + int yksk=0; + if(StringUtils.isNotBlank(jhxfExcel.getYksk())){ + yksk= MyString.convertStringToNumber(jhxfExcel.getYksk()); + } + if(yksk>0){ + for (int j = 0; j < yksk; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("8"); + insertsOne.get(zz+j).setQgrq(jhxfExcel.getYkpkjs()); + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+yksk; + } + int eklmbs=0; + if(StringUtils.isNotBlank(jhxfExcel.getEklmbs())){ + eklmbs= MyString.convertStringToNumber(jhxfExcel.getEksk()); + } + if(eklmbs>0){ + + for (int j = 0; j < eklmbs; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("5"); + insertsOne.get(zz+j).setQgrq(jhxfExcel.getLmqgks()); + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+eklmbs; + } + + int eksk=0; + if(StringUtils.isNotBlank(jhxfExcel.getEksk())){ + eksk= MyString.convertStringToNumber(jhxfExcel.getEksk()); + } + if(eksk>0){ + + for (int j = 0; j < eksk; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("9");/// 2跨超长超宽曲板 // 2跨T型材腹板 //2跨超长超宽板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getEkskks()); + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+eksk; + } + int sksk=0; + if(StringUtils.isNotBlank(jhxfExcel.getSksk())){ + sksk= MyString.convertStringToNumber(jhxfExcel.getSksk()); + } + if(sksk>0){ + + for (int j = 0; j < sksk; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("14");///3跨曲板 // 3跨厚板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getSkskqgks()); + + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+sksk; + } + int skpt=0; + if(StringUtils.isNotBlank(jhxfExcel.getSkpt())){ + skpt= MyString.convertStringToNumber(jhxfExcel.getSkpt()); + } + if(skpt>0){ + + for (int j = 0; j < skpt; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("6");///3跨曲板 // 3跨厚板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getPtks()); + insertsOne.get(zz+j).setQjgrq(jhxfExcel.getQptjs()); + + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+skpt; + } + + int skbs=0; + if(StringUtils.isNotBlank(jhxfExcel.getSkbs())){ + skbs= MyString.convertStringToNumber(jhxfExcel.getSkbs()); + } + if(skbs>0){ + + for (int j = 0; j < skbs; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("15");///3跨曲板 // 3跨厚板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getSkqgks()); + + + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+skbs; + } + map.put(dcch+dcpl,insertsOne); + + }{ + List insertsOne = map.get(dcch + dcpl); + + + int yklm=0; + if(StringUtils.isNotBlank(jhxfExcel.getYklm())){ + yklm= MyString.convertStringToNumber(jhxfExcel.getYklm()); + } + if(yklm>0){ + zz=yklm; + + + for (int j = 0; j < yklm; j++) { + // 生成数据 + insertsOne.get(j).setKw("7"); + insertsOne.get(j).setQgrq(jhxfExcel.getYkpkjs()); + zsl++; + if(zsl>num){ + continue; + } + } + } + + int yksk=0; + if(StringUtils.isNotBlank(jhxfExcel.getYksk())){ + yksk= MyString.convertStringToNumber(jhxfExcel.getYksk()); + } + if(yksk>0){ + for (int j = 0; j num){ + continue; + } + } + zz=zz+yksk; + } + int eklmbs=0; + if(StringUtils.isNotBlank(jhxfExcel.getEklmbs())){ + eklmbs= MyString.convertStringToNumber(jhxfExcel.getEksk()); + } + if(eklmbs>0){ + + for (int j = 0; j < eklmbs; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("5"); + insertsOne.get(zz+j).setQgrq(jhxfExcel.getLmqgks()); + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+eklmbs; + } + + int eksk=0; + if(StringUtils.isNotBlank(jhxfExcel.getEksk())){ + eksk= MyString.convertStringToNumber(jhxfExcel.getEksk()); + } + if(eksk>0){ + + for (int j = 0; j < eksk; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("9");/// 2跨超长超宽曲板 // 2跨T型材腹板 //2跨超长超宽板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getEkskks()); + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+eksk; + } + int sksk=0; + if(StringUtils.isNotBlank(jhxfExcel.getSksk())){ + sksk= MyString.convertStringToNumber(jhxfExcel.getSksk()); + } + if(sksk>0){ + + for (int j = 0; j < sksk; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("14");///3跨曲板 // 3跨厚板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getSkskqgks()); + + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+sksk; + } + int skpt=0; + if(StringUtils.isNotBlank(jhxfExcel.getSkpt())){ + skpt= MyString.convertStringToNumber(jhxfExcel.getSkpt()); + } + if(skpt>0){ + + for (int j = 0; j < skpt; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("6");///3跨曲板 // 3跨厚板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getPtks()); + insertsOne.get(zz+j).setQjgrq(jhxfExcel.getQptjs()); + + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+skpt; + } + + int skbs=0; + if(StringUtils.isNotBlank(jhxfExcel.getSkbs())){ + skbs= MyString.convertStringToNumber(jhxfExcel.getSkbs()); + } + if(skbs>0){ + + for (int j = 0; j < skbs; j++) { + // 生成数据 + insertsOne.get(zz+j).setKw("15");///3跨曲板 // 3跨厚板 + insertsOne.get(zz+j).setQgrq(jhxfExcel.getSkqgks()); + + + + zsl++; + if(zsl>num){ + continue; + } + } + zz=zz+skbs; + } + map.put(dcch+dcpl,insertsOne); + } + + + + + } + + for (Map.Entry> entry : map.entrySet()) { + String key = entry.getKey(); + List value = entry.getValue(); + + // 打印键和值 + System.out.println("Key: " + key); + System.out.println("Value: " + value); + + // 如果需要,这里还可以进一步遍历List + for (DmSygdMx item : value) { + // 对每个DmSygdMx对象进行操作 + System.out.println("DmSygdMx Object: " + item); + + /// 简单根据 船号 批量 删除后重复导入 + this.remove(new QueryWrapper().eq("dc_ch",item.getDcCh()).eq("dc_pl",item.getDcPl()) + .eq("dc_fd",item.getDcFd()) + ); + + + + + } + for (DmSygdMx item : value) { + item.setId(IdWorker.get32UUID()); + item.setDrbs("Y"); + this.save(item); + } + } + } + + } diff --git a/src/main/java/com/dsic/gj_erp/util/MyString.java b/src/main/java/com/dsic/gj_erp/util/MyString.java index bfd571a..b4f4ec9 100644 --- a/src/main/java/com/dsic/gj_erp/util/MyString.java +++ b/src/main/java/com/dsic/gj_erp/util/MyString.java @@ -24,6 +24,28 @@ public class MyString { return sb.toString(); } + public static Integer convertStringToNumber(String str) { + // 判断字符串是否为 null 或者空字符串 + if (str == null || str.isEmpty()) { + return null; // 这里返回 null 或者其他逻辑 + } + + // 判断字符串是否为数字 + for (char c : str.toCharArray()) { + if (!Character.isDigit(c)) { + return null; // 这里返回 null 或者其他逻辑 + } + } + + try { + // 将字符串转换为数字 + return Integer.parseInt(str); + } catch (NumberFormatException e) { + e.printStackTrace(); + return null; // 转换失败时返回 null + } + } + /** * findtest 个数 * @param srcText