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 1363d75..030b533 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 @@ -242,20 +242,14 @@ public class DmYdjh implements Serializable { private String ylbhgg; - //fixme 正式使用时需取消@TableField(exist = false) - @TableField(exist = false) private String jhsyylbh;//计划使用余料编号 - @TableField(exist = false) private String ylCh;//来源余料船号 - @TableField(exist = false) private String ylPl;//来源余料批量 - @TableField(exist = false) private String ylTh;//来源余料图号 - @TableField(exist = false) private String ylbh;//来源余料编号 private String parentId; diff --git a/src/main/java/com/dsic/gj_erp/bean/zyjh/DmYlInfo.java b/src/main/java/com/dsic/gj_erp/bean/zyjh/DmYlInfo.java index ca0513a..526f2c0 100644 --- a/src/main/java/com/dsic/gj_erp/bean/zyjh/DmYlInfo.java +++ b/src/main/java/com/dsic/gj_erp/bean/zyjh/DmYlInfo.java @@ -11,7 +11,6 @@ import lombok.Getter; import lombok.Setter; import java.math.BigDecimal; -import java.util.Arrays; @Getter @Setter @@ -154,10 +153,4 @@ public class DmYlInfo { public enum UseStatus{ 未使用,已使用,已打印,已切割 } - - public static void main(String[] args) { - String a="1527*11360"; - System.out.println(a.split("\\*").length); -// System.out.println(a.substring(a.indexOf("*")+1)); - } } diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/BomUploadController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/BomUploadController.java index 27d562b..df8f8ac 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jcsj/BomUploadController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/BomUploadController.java @@ -20,8 +20,11 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.IOException; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -57,6 +60,7 @@ public class BomUploadController { ResultBean bean= bomUploadService.uploadZ( file , czbh, pl,isupload, req,path); Map map =(Map)bean.getData(); if(map.get("zt").equals("01")){ + bomUploadService.updateYdjhYlUseInfo(file,czbh,pl); if (uploadPDF(tltList, czbh, pl,date)) { return bean; }else { diff --git a/src/main/java/com/dsic/gj_erp/controller/zyjh/YlController.java b/src/main/java/com/dsic/gj_erp/controller/zyjh/YlController.java index 3d655a6..c37f822 100644 --- a/src/main/java/com/dsic/gj_erp/controller/zyjh/YlController.java +++ b/src/main/java/com/dsic/gj_erp/controller/zyjh/YlController.java @@ -147,7 +147,7 @@ public class YlController { out: for (DmYdjh ydjh:list){ for(DmYlInfo ylInfo:dto.getYlList()){ - if (ylInfo.指定余料编号的上料匹配(ydjh.getYlbhgg())){//暂时不支持,仅保留分支流程 + if (ylInfo.指定余料编号的上料匹配(ydjh.getJhsyylbh())&&ylInfo.上料匹配(ydjh)){//暂时不支持,仅保留分支流程 ylInfo.修正上料信息(ydjh); 匹配成功的余料信息.add(ylInfo); continue out; diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java index ef8adbe..1f9d5c3 100644 --- a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java @@ -2,9 +2,12 @@ package com.dsic.gj_erp.service.jcsj.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.jcsj.*; import com.dsic.gj_erp.bean.jcsj.vo.BomVO; @@ -21,8 +24,10 @@ import com.dsic.gj_erp.service.jhgk.DmTzjhService; import com.dsic.gj_erp.service.jhgk.DmYdjhService; import com.dsic.gj_erp.service.pgd.PgdTzjhService; import com.dsic.gj_erp.service.sy.SYService; +import com.dsic.gj_erp.util.ExcelUtil; import com.dsic.gj_erp.util.MyFileUtil; import com.dsic.gj_erp.util.ObjConvertUtils; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,6 +41,8 @@ import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -46,6 +53,7 @@ import java.util.stream.Collectors; * @author xn * @since 2023-09-11 */ +@Slf4j @Service public class BomUploadServiceImpl { private static String dezt; @@ -89,6 +97,65 @@ public class BomUploadServiceImpl { @Autowired DmYdjhService dmYdjhService; + public void updateYdjhYlUseInfo(MultipartFile[] file,String dcCh,String dcPl){ + try { + String p=".*用板统计表.*[.xlsx?|.xls?]$"; + Pattern r = Pattern.compile(p); + Arrays.stream(file) + .filter(item -> { + if(item.getOriginalFilename()!=null){ + Matcher m = r.matcher(item.getOriginalFilename()); + return m.matches(); + } + return false; + }).forEach(item->{ + if(StrUtil.isNotEmpty(item.getOriginalFilename())){ + String tzbh=""; + try { + List lines = ExcelUtil.ReadExcelByLine(item.getInputStream(), item.getOriginalFilename()); + boolean handlerFlag=false; + for (int i = 1; i < lines.size(); i++) { + String lastLine=lines.get(i-1); + if (StrUtil.containsAll(lastLine,"船号","批量")){ + handlerFlag=false; + } + String line=lines.get(i); + if (StrUtil.containsAll(line,"船研所船体室套料科","打印时间")){ + handlerFlag=false; + } + if (StrUtil.containsAll(lastLine,"余料编号","余料规格","调用信息","转出信息")){ + handlerFlag=true; + } + if (handlerFlag){ + String[] split = line.split(" "); + if (StrUtil.isAllEmpty(split)){ + continue; + } + if (split.length<=8){ + continue; + } + tzbh=split[8]; + if (StrUtil.isEmpty(tzbh)){ + continue; + } + + dmYdjhService.update(Wrappers.update().set("jhsyylbh",tzbh) + .eq("dc_ch", dcCh) + .eq("dc_pl", dcPl) + .eq("tzbh", split[1]) + ); + } + } + } catch (IOException e) { + log.info("修正余料计划调用信息失败,船号:{},批次:{},图号:{}",dcCh,dcPl,tzbh); + } + } + }); + }catch (Exception e) { + log.info("修正余料计划调用信息失败,船号:{},批次:{}",dcCh,dcPl); + } + } + @Transactional(rollbackFor = Exception.class) public ResultBean uploadZ(MultipartFile[] file, String czbh, String pl, String isupload, HttpServletRequest req,String path) throws IOException, CustomException, ScriptException { String savePath = UUID.randomUUID().toString().replace("-", ""); diff --git a/src/main/java/com/dsic/gj_erp/util/ExcelUtil.java b/src/main/java/com/dsic/gj_erp/util/ExcelUtil.java index 3a7f403..83805ba 100644 --- a/src/main/java/com/dsic/gj_erp/util/ExcelUtil.java +++ b/src/main/java/com/dsic/gj_erp/util/ExcelUtil.java @@ -14,6 +14,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.regex.Matcher; @@ -37,6 +38,19 @@ public class ExcelUtil { return new ArrayList<>(); } + public static List ReadExcelByLine(InputStream fis, String fileName){ + try (Workbook workbook = new XSSFWorkbook(fis)) { // 对于xls文件,使用HSSFWorkbook + return handler(workbook); + } catch (IOException e) { + try (Workbook workbook = new HSSFWorkbook(fis)){ + return handler(workbook); + }catch (IOException e1){ + log.info("{}损坏",fileName); + } + } + return new ArrayList<>(); + } + private static List handler(Workbook workbook){ ArrayList strs = new ArrayList<>(); Sheet sheet = workbook.getSheetAt(1); // 获取第一个工作表