diff --git a/modules/i3plus-ext-mes-apiservice/pom.xml b/modules/i3plus-ext-mes-apiservice/pom.xml index 3794804..339ba20 100644 --- a/modules/i3plus-ext-mes-apiservice/pom.xml +++ b/modules/i3plus-ext-mes-apiservice/pom.xml @@ -110,7 +110,12 @@ com.itextpdf itextpdf - + + cn.hutool + hutool-all + 5.8.16 + compile + org.apache.cxf diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy index 15bea67..deb8a58 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductionAssembly.groovy @@ -49,6 +49,8 @@ class MesToPiscesProductionAssembly { } else { LOGGER.info("条码:{}信息不存在", String.valueOf(rowMap.get("assembly_sn"))) } + }else{ + rowMap.put("ASSEMBLY_BARCODE_ID", null) } //条码 if (!StringUtils.isEmpty(rowMap.get("product_sn"))) { @@ -58,6 +60,8 @@ class MesToPiscesProductionAssembly { } else { LOGGER.info("条码:{}信息不存在", String.valueOf(rowMap.get("product_sn"))) } + }else{ + rowMap.put("BARCODE_ID", null) } //加工记录表 if (!StringUtils.isEmpty(rowMap.get("production_record_id"))) { @@ -71,6 +75,8 @@ class MesToPiscesProductionAssembly { } else { LOGGER.info("原材料容器id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("production_record_id")))) } + }else{ + rowMap.put("PRODUCTION_LOG_FID", null) } //获取设备FID if (!StringUtils.isEmpty(rowMap.get("equipment_code"))) { @@ -78,8 +84,10 @@ class MesToPiscesProductionAssembly { if (!Objects.isNull(mesEquipment)) { rowMap.put("EQUIPMENT_FID", mesEquipment.getFid()) } else { - LOGGER.info("设备代码:{}信息不存在", String.valueOf(rowMap.get("EQUIPMENT_FID"))) + LOGGER.info("设备代码:{}信息不存在", String.valueOf(rowMap.get("equipment_code"))) } + }else{ + rowMap.put("EQUIPMENT_FID", null) } } return srcData; diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesRawPartCharging.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesRawPartCharging.groovy index 5cba587..a7158af 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesRawPartCharging.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesRawPartCharging.groovy @@ -51,6 +51,9 @@ class MesToPiscesRawPartCharging { } else { LOGGER.info("原材料容器id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("package_id")))) } + }else{ + rowMap.put("PACKAGE_NAME", null) + rowMap.put("PACKAGE_FID", null) } //防错配置明细 if (!StringUtils.isEmpty(rowMap.get("package_detail_id"))) { @@ -64,6 +67,8 @@ class MesToPiscesRawPartCharging { } else { LOGGER.info("原材料容器明细id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("package_detail_id")))) } + }else{ + rowMap.put("PACKAGE_DETAIL_FID", null) } //原材料容器零件关系表 if (!StringUtils.isEmpty(rowMap.get("package_part_id"))) { @@ -77,6 +82,8 @@ class MesToPiscesRawPartCharging { } else { LOGGER.info("原材料容器明细id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("package_part_id")))) } + }else { + rowMap.put("PACKAGE_PART_FID", null) } } return srcData; diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/CsvImportUtil.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/CsvImportUtil.java new file mode 100644 index 0000000..28b98cd --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/CsvImportUtil.java @@ -0,0 +1,59 @@ +package cn.estsh.i3plus.ext.mes.apiservice.utils; + +import cn.estsh.i3plus.mes.apiservice.util.BeanMapUtils; +import cn.hutool.core.text.csv.*; +import cn.hutool.core.util.CharsetUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +public class CsvImportUtil { + + // 读取csv中的数据 + public static List csvImports(MultipartFile file, Class dbClass) { + //2. 进行配置 + CsvReadConfig csvReadConfig = new CsvReadConfig(); + // 是否跳过空白行 + csvReadConfig.setSkipEmptyRows(true); + // 是否设置首行为标题行 + csvReadConfig.setContainsHeader(true); + //构建 CsvReader 对象 + CsvReader csvReader = CsvUtil.getReader(csvReadConfig); + // 这里转了下 可能会产生临时文件,临时文件目录可以设置,也可以立马删除 + CsvData read = csvReader.read(multipartFile2File(file), CharsetUtil.CHARSET_UTF_8); + List> mapList = new ArrayList<>(); + for (CsvRow row : read.getRows()) { + Map map = new HashMap<>(); + for (int i = 0; i < row.size(); i++) { + map.put(read.getHeader().get(i), row.get(i)); + } + mapList.add(map); + } + return BeanMapUtils.mapToBean(mapList, dbClass); + } + + /** + * multipartFile转File + **/ + public static File multipartFile2File(MultipartFile multipartFile) { + File file = null; + if (multipartFile != null) { + try { + file = File.createTempFile("tmp", null); + multipartFile.transferTo(file); + System.gc(); + file.deleteOnExit(); + } catch (Exception e) { + e.printStackTrace(); + log.warn("multipartFile转File发生异常:" + e); + } + } + return file; + } +} \ No newline at end of file