Merge remote-tracking branch 'origin/feature/DM/nflg-bom' into feature/DM/nflg-bom
This commit is contained in:
commit
350c68897b
|
|
@ -20,6 +20,8 @@ public class ImportExcelField{
|
|||
private String cellThird;
|
||||
|
||||
|
||||
@ExcelProperty(value="",index = 3)
|
||||
private String cellRemark;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,11 @@ public class ImportExcelHelper<T> {
|
|||
ImportExcelListener<T> listener = new ImportExcelListener<>(headRowNumber);
|
||||
try {
|
||||
|
||||
EasyExcel.read(inputStream, clazz, listener).extraRead(CellExtraTypeEnum.MERGE).sheet(sheetNo).headRowNumber(headRowNumber).doRead();
|
||||
EasyExcel.read(inputStream, clazz, listener)
|
||||
.extraRead(CellExtraTypeEnum.MERGE)
|
||||
.sheet(sheetNo)
|
||||
.headRowNumber(headRowNumber)
|
||||
.doRead();
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.getMessage());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,415 @@
|
|||
//package com.nflg.product.bomnew.service.aggreg;
|
||||
//
|
||||
//import cn.hutool.core.collection.CollectionUtil;
|
||||
//import cn.hutool.core.convert.Convert;
|
||||
//import cn.hutool.core.date.DateUtil;
|
||||
//import cn.hutool.core.lang.TypeReference;
|
||||
//import cn.hutool.core.util.StrUtil;
|
||||
//import cn.hutool.extra.spring.SpringUtil;
|
||||
//import com.alibaba.fastjson.JSON;
|
||||
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
//import com.nflg.product.base.core.conmon.util.SessionUtil;
|
||||
//import com.nflg.product.base.core.exception.NflgBusinessException;
|
||||
//import com.nflg.product.bomnew.constant.OptionalBomConstant;
|
||||
//import com.nflg.product.bomnew.excel.ImportExcelField;
|
||||
//import com.nflg.product.bomnew.excel.ImportExcelHelper;
|
||||
//import com.nflg.product.bomnew.pojo.dto.OptionalEbomImportChildDTO;
|
||||
//import com.nflg.product.bomnew.pojo.dto.OptionalEbomImportDTO;
|
||||
//import com.nflg.product.bomnew.pojo.dto.OptionalEbomImportExcelDTO;
|
||||
//import com.nflg.product.bomnew.pojo.dto.OptionalEbomMainDTO;
|
||||
//import com.nflg.product.bomnew.pojo.entity.OptionalEbomImportChildEntity;
|
||||
//import com.nflg.product.bomnew.pojo.entity.OptionalEbomImportEntity;
|
||||
//import com.nflg.product.bomnew.pojo.entity.OptionalEbomMainEntity;
|
||||
//import com.nflg.product.bomnew.service.MaterialMainService;
|
||||
//import com.nflg.product.bomnew.service.OptionalEbomImportChildService;
|
||||
//import com.nflg.product.bomnew.service.OptionalEbomImportService;
|
||||
//import com.nflg.product.bomnew.service.OptionalEbomMainService;
|
||||
//import nflg.product.common.constant.STATE;
|
||||
//import org.apache.commons.lang.StringUtils;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//import org.springframework.transaction.annotation.Transactional;
|
||||
//
|
||||
//import javax.annotation.Resource;
|
||||
//import java.io.InputStream;
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//import java.util.concurrent.atomic.AtomicInteger;
|
||||
//import java.util.stream.Collectors;
|
||||
//
|
||||
///**
|
||||
// * 导入移动破
|
||||
// */
|
||||
//
|
||||
//public class OldOptionalExcelService {
|
||||
//
|
||||
// @Resource
|
||||
// private OptionalEbomMainService optionalEbomMainService;
|
||||
//
|
||||
// @Resource
|
||||
// private OptionalEbomImportChildService optionalEbomImportChildService;
|
||||
// @Resource
|
||||
// private OptionalEbomImportService optionalEbomImportService;
|
||||
//
|
||||
// private void parsecColumn3(List<ImportExcelField> v1, OptionalEbomImportDTO optionalEbomImportLevel2Dto) {
|
||||
// AtomicInteger partTypeCount = new AtomicInteger();
|
||||
//
|
||||
// //解析第三列
|
||||
// v1.forEach(item -> {
|
||||
// //OCE-NFS780DP-037B-OPT:加装回料输送机(可选)
|
||||
// OptionalEbomImportChildDTO levelDto3 = new OptionalEbomImportChildDTO();
|
||||
//
|
||||
// if (CollectionUtil.isEmpty(optionalEbomImportLevel2Dto.getChild())) {
|
||||
// optionalEbomImportLevel2Dto.setChild(new ArrayList<OptionalEbomImportChildDTO>());
|
||||
// }
|
||||
//
|
||||
// optionalEbomImportLevel2Dto.getChild().add(levelDto3);
|
||||
// String cloumn3=item.getCellThird().trim();
|
||||
// String materialName;
|
||||
// if(cloumn3.contains(":")) {
|
||||
// String[] optionName1 = item.getCellThird().trim().split(":");
|
||||
// materialName = optionName1[1];
|
||||
// levelDto3.setDrawingNo(optionName1[0]);
|
||||
//
|
||||
// }else{
|
||||
// materialName=cloumn3;
|
||||
// }
|
||||
// // levelDto3.setMaterialName(optionName1[1]);
|
||||
// levelDto3.setLineNo(item.getLineNo());
|
||||
//
|
||||
// levelDto3.setPartType(OptionalBomConstant.PartTypeEnum.PART_TYPE_RADIO.getValue());
|
||||
// //(标配) (可选)
|
||||
// levelDto3.setTag(materialName.contains("无"));
|
||||
// if (levelDto3.getTag()) {
|
||||
// levelDto3.setMaterialDesc(levelDto3.getMaterialName());
|
||||
// }
|
||||
//
|
||||
// if (materialName.contains("标配")) {
|
||||
// levelDto3.setChooseStatus(OptionalBomConstant.ChooseStatusEnum.CHOOSE_STATUS_YES.getValue());
|
||||
// partTypeCount.getAndIncrement();
|
||||
// //包含多个标配
|
||||
// if (partTypeCount.get() > 1) {
|
||||
// levelDto3.setError(OptionalBomConstant.ExcelErrorTagEnum.REPEAT.getValue());
|
||||
// optionalEbomImportLevel2Dto.setError(true);
|
||||
// }
|
||||
// } else {
|
||||
// levelDto3.setChooseStatus(OptionalBomConstant.ChooseStatusEnum.CHOOSE_STATUS_NO.getValue());
|
||||
// }
|
||||
//
|
||||
// levelDto3.setMaterialName(materialName.replace("(标配)", "").replace("(可选)", ""));
|
||||
// levelDto3.setMaterialDesc(levelDto3.getMaterialDesc());
|
||||
//
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// private void parsecColumn2(Map<String, List<ImportExcelField>> listMap, OptionalEbomImportDTO optionalEbomImportDTO) {
|
||||
//
|
||||
// listMap.forEach((k1, v1) -> {
|
||||
// OptionalEbomImportDTO optionalEbomImportLevel2Dto = new OptionalEbomImportDTO();
|
||||
// String[] optionName = k1.trim().split(" ");
|
||||
//
|
||||
// optionalEbomImportLevel2Dto.setOptionDrawingNo(optionName[0]);
|
||||
// optionalEbomImportLevel2Dto.setOptionName(optionName[1]);
|
||||
// if (CollectionUtil.isEmpty(optionalEbomImportDTO.getChild())) {
|
||||
// optionalEbomImportDTO.setChild(new ArrayList<OptionalEbomImportDTO>());
|
||||
// }
|
||||
// optionalEbomImportDTO.getChild().add(optionalEbomImportLevel2Dto);
|
||||
// parsecColumn3(v1, optionalEbomImportLevel2Dto);
|
||||
// });
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// private OptionalEbomImportExcelDTO parsecColumn1(List<ImportExcelField> list) {
|
||||
// OptionalEbomImportExcelDTO optionalEbomInportExcelDTO = new OptionalEbomImportExcelDTO();
|
||||
// int row = 1;
|
||||
// ImportExcelField device = list.get(0);
|
||||
// //设备信息
|
||||
// String[] deviceInfo = device.getCellFirst().trim().split(" ");
|
||||
// optionalEbomInportExcelDTO.setDeviceInfo(new OptionalEbomMainDTO());
|
||||
// optionalEbomInportExcelDTO.getDeviceInfo().setDeviceNo(deviceInfo[0]);
|
||||
// optionalEbomInportExcelDTO.getDeviceInfo().setDeviceName(deviceInfo[1]);
|
||||
//
|
||||
// String name = "";
|
||||
// //相同类
|
||||
// List<ImportExcelField> classList = new ArrayList<>();
|
||||
//
|
||||
// for (; row < list.size(); row++) {
|
||||
// ImportExcelField rowField = list.get(row);
|
||||
// //相同列为根
|
||||
// if ((row==list.size()-1)||(rowField.getCellFirst().trim().equals(rowField.getCellSecond().trim())
|
||||
// && rowField.getCellSecond().trim().equals(rowField.getCellThird().trim()))) {
|
||||
//
|
||||
//
|
||||
// if((row==list.size()-1)){
|
||||
// classList.add(rowField);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if (CollectionUtil.isNotEmpty(classList)) {
|
||||
// String finalName = name;
|
||||
// Map<String, Map<String, List<ImportExcelField>>> group1 = classList.parallelStream().collect(Collectors.groupingBy(ImportExcelField::getCellFirst, Collectors.groupingBy(ImportExcelField::getCellSecond)));
|
||||
// //第一列
|
||||
// group1.forEach((k, v) -> {
|
||||
// OptionalEbomImportDTO optionalEbomImportDTO = new OptionalEbomImportDTO();
|
||||
// optionalEbomImportDTO.setOptionName(finalName);
|
||||
// optionalEbomImportDTO.setOptionDrawingNo(k);
|
||||
// if (CollectionUtil.isEmpty(optionalEbomInportExcelDTO.getOptionInfo())) {
|
||||
// optionalEbomInportExcelDTO.setOptionInfo(new ArrayList<OptionalEbomImportDTO>());
|
||||
// }
|
||||
// optionalEbomInportExcelDTO.getOptionInfo().add(optionalEbomImportDTO);
|
||||
//
|
||||
// parsecColumn2(v, optionalEbomImportDTO);
|
||||
// });
|
||||
// classList.clear();
|
||||
//
|
||||
// }
|
||||
// if((row!=list.size()-1)) {
|
||||
// name = rowField.getCellFirst();
|
||||
// }
|
||||
//
|
||||
// } else {
|
||||
// classList.add(rowField);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// //最后一项处理
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// return optionalEbomInportExcelDTO;
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public Boolean importExcel(InputStream inputStream) throws NflgBusinessException {
|
||||
// if (inputStream == null) {
|
||||
// new NflgBusinessException(STATE.Error, "文件流内容空");
|
||||
// }
|
||||
// //解析excel
|
||||
// ImportExcelHelper<ImportExcelField> helper = new ImportExcelHelper<>();
|
||||
// List<ImportExcelField> list = helper.getList(inputStream, ImportExcelField.class, 0, 0);
|
||||
// OptionalEbomImportExcelDTO optionalEbomInportExcelDTO = null;
|
||||
// if (CollectionUtil.isNotEmpty(list)) {
|
||||
// optionalEbomInportExcelDTO = parsecColumn1(list);
|
||||
// }
|
||||
//
|
||||
// if (optionalEbomInportExcelDTO != null) {
|
||||
// optionalEbomInportExcelDTO.getOptionInfo().forEach(item -> {
|
||||
// List<OptionalEbomImportDTO> listParent = item.getChild();
|
||||
// for (OptionalEbomImportDTO item1 :
|
||||
// listParent) {
|
||||
// List<OptionalEbomImportChildDTO> listChild = item1.getChild();
|
||||
// SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNoImmul(listChild, OptionalEbomImportChildDTO::getDrawingNo, OptionalEbomImportChildDTO::setMaterialNo, OptionalEbomImportChildDTO::setMaterialDesc);
|
||||
//
|
||||
// //构建测试数据 无物料号 用图号代替
|
||||
// for (OptionalEbomImportChildDTO childDTO : listChild) {
|
||||
// if (!childDTO.getTag() && StringUtils.isEmpty(childDTO.getMaterialNo())) {
|
||||
// // childDTO.setMaterialNo(childDTO.getDrawingNo());
|
||||
// childDTO.setError(childDTO.getError() | OptionalBomConstant.ExcelErrorTagEnum.MATERIA_NO_UNKOWN.getValue());
|
||||
// item1.setError(true);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// System.out.println(JSON.toJSON(optionalEbomInportExcelDTO));
|
||||
//
|
||||
// }
|
||||
//
|
||||
// //检查是否满足条件 除了‘无’ ,物料号不能为空
|
||||
// String hintMsg = isValiData(optionalEbomInportExcelDTO.getOptionInfo());
|
||||
// if (StrUtil.isNotEmpty(hintMsg)) {
|
||||
// throw new NflgBusinessException(STATE.Error, hintMsg);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// //保存db
|
||||
// return batchExcelToRepertory(optionalEbomInportExcelDTO);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private String isValiData(List<OptionalEbomImportDTO> excelList) {
|
||||
//
|
||||
// StringBuffer title = new StringBuffer();
|
||||
// excelList.forEach(item -> {
|
||||
// List<OptionalEbomImportDTO> listParent = item.getChild();
|
||||
// for (OptionalEbomImportDTO item1 : listParent) {
|
||||
// if (item1.isError()) {
|
||||
//
|
||||
// List<OptionalEbomImportChildDTO> listChild = item1.getChild();
|
||||
// for (OptionalEbomImportChildDTO item2 : listChild) {
|
||||
// if (item2.getError() == OptionalBomConstant.ExcelErrorTagEnum.REPEAT.getValue()) {
|
||||
// title.append(String.format("第%d行 %s\n", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.REPEAT.getDescription()));
|
||||
// } else if (item2.getError() == OptionalBomConstant.ExcelErrorTagEnum.MATERIA_NO_UNKOWN.getValue()) {
|
||||
// title.append(String.format("第%d行 %s\n", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.MATERIA_NO_UNKOWN.getDescription()));
|
||||
// } else if (item2.getError() == OptionalBomConstant.ExcelErrorTagEnum.ALL.getValue()) {
|
||||
// title.append(String.format("第%d行 %s\n", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.ALL.getDescription()));
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// return title.toString();
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public Boolean batchExcelToRepertory(OptionalEbomImportExcelDTO ebomImportExcelDTO) {
|
||||
//
|
||||
// OptionalEbomMainEntity optionalEbomMainEntity = Convert.convert(new TypeReference<OptionalEbomMainEntity>() {
|
||||
// }, ebomImportExcelDTO.getDeviceInfo());
|
||||
//
|
||||
//
|
||||
// QueryWrapper<OptionalEbomMainEntity> queryWrapper = new QueryWrapper();
|
||||
// queryWrapper.lambda().eq(OptionalEbomMainEntity::getDeviceNo, optionalEbomMainEntity.getDeviceNo());
|
||||
//
|
||||
// OptionalEbomMainEntity queryDevice = optionalEbomMainService.getOne(queryWrapper);
|
||||
//// if (ObjectUtil.isNotEmpty(queryDevice)) {
|
||||
//// throw new NflgBusinessException(STATE.Error, String.format("已存在设备数据%s", optionalEbomMainEntity.getDeviceNo()));
|
||||
//// }
|
||||
//
|
||||
// if (queryDevice == null) {
|
||||
// optionalEbomMainEntity.setCreatedBy(SessionUtil.getUserCode());
|
||||
// optionalEbomMainEntity.setRealName(SessionUtil.getRealName());
|
||||
// optionalEbomMainEntity.setDeptName(SessionUtil.getDepartName());
|
||||
//
|
||||
// optionalEbomMainEntity.setCreatedTime(DateUtil.now());
|
||||
// optionalEbomMainEntity.setDeptRowId(SessionUtil.getPartRowId());
|
||||
// optionalEbomMainService.save(optionalEbomMainEntity);
|
||||
//
|
||||
//
|
||||
// }else{
|
||||
// optionalEbomMainEntity=queryDevice;
|
||||
//
|
||||
// }
|
||||
//
|
||||
// if (optionalEbomMainEntity == null || optionalEbomMainEntity.getRowId() == null) {
|
||||
// throw new NflgBusinessException(STATE.Error, "保存设备数据失败");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// List<OptionalEbomImportDTO> parentOptionList = ebomImportExcelDTO.getOptionInfo();
|
||||
//
|
||||
// //保存选项
|
||||
// for (OptionalEbomImportDTO parentOption : parentOptionList) {
|
||||
//
|
||||
//
|
||||
// QueryWrapper<OptionalEbomImportEntity> queryWrapper1 = new QueryWrapper<>();
|
||||
// queryWrapper1.lambda().eq(OptionalEbomImportEntity::getRootRowId, optionalEbomMainEntity.getRowId());
|
||||
// queryWrapper1.lambda().eq(OptionalEbomImportEntity::getOptionDrawingNo, parentOption.getOptionDrawingNo());
|
||||
//
|
||||
// OptionalEbomImportEntity parentOptionEntity = optionalEbomImportService.getOne(queryWrapper1);
|
||||
// if (parentOptionEntity == null) {
|
||||
// parentOptionEntity = Convert.convert(new TypeReference<OptionalEbomImportEntity>() {
|
||||
// }, parentOption);
|
||||
// parentOptionEntity.setRootRowId(optionalEbomMainEntity.getRowId());
|
||||
// parentOptionEntity.setCreatedTime(DateUtil.now());
|
||||
// parentOptionEntity.setCreatedBy(SessionUtil.getUserCode());
|
||||
// optionalEbomImportService.save(parentOptionEntity);
|
||||
// }
|
||||
//
|
||||
// if (parentOptionEntity == null || parentOptionEntity.getRowId() == null) {
|
||||
// throw new NflgBusinessException(STATE.Error, "保存选项数据失败");
|
||||
// }
|
||||
//
|
||||
// List<OptionalEbomImportDTO> childOptionList = parentOption.getChild();
|
||||
//
|
||||
// for (OptionalEbomImportDTO childOption : childOptionList) {
|
||||
//
|
||||
// QueryWrapper<OptionalEbomImportEntity> queryWrapper2 = new QueryWrapper<>();
|
||||
// queryWrapper2.lambda().eq(OptionalEbomImportEntity::getRootRowId, optionalEbomMainEntity.getRowId());
|
||||
// queryWrapper2.lambda().eq(OptionalEbomImportEntity::getOptionDrawingNo, childOption.getOptionDrawingNo());
|
||||
//
|
||||
// OptionalEbomImportEntity childOptionEntity = optionalEbomImportService.getOne(queryWrapper2);
|
||||
// if (childOptionEntity == null) {
|
||||
// childOptionEntity = Convert.convert(new TypeReference<OptionalEbomImportEntity>() {
|
||||
// }, childOption);
|
||||
// childOptionEntity.setCreatedBy(SessionUtil.getUserCode());
|
||||
// childOptionEntity.setRootRowId(optionalEbomMainEntity.getRowId());
|
||||
// childOptionEntity.setParentRowId(parentOptionEntity.getRowId());
|
||||
//
|
||||
// childOptionEntity.setCreatedTime(DateUtil.now());
|
||||
// optionalEbomImportService.save(childOptionEntity);
|
||||
// }
|
||||
//// else{
|
||||
//// childOptionEntity.setParentRowId(parentOptionEntity.getRowId());
|
||||
////
|
||||
//// optionalEbomImportService.updateById(childOptionEntity);
|
||||
//// }
|
||||
//
|
||||
//
|
||||
// if (childOptionEntity == null || childOptionEntity.getRowId() == null) {
|
||||
//
|
||||
// throw new NflgBusinessException(STATE.Error, "保存选项数据失败");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// List<OptionalEbomImportChildDTO> optionImportChildDtoList = childOption.getChild();
|
||||
// List<OptionalEbomImportChildEntity> optionImportChildEntityList = Convert.convert(new TypeReference<List<OptionalEbomImportChildEntity>>() {
|
||||
// }, optionImportChildDtoList);
|
||||
//
|
||||
//
|
||||
// if (CollectionUtil.isNotEmpty(optionImportChildEntityList)) {
|
||||
// for (OptionalEbomImportChildEntity item :
|
||||
// optionImportChildEntityList) {
|
||||
//
|
||||
//
|
||||
// item.setSource(OptionalBomConstant.SourceTypeEnum.SOURCE_EXCEL.getValue());
|
||||
//
|
||||
// item.setRootRowId(optionalEbomMainEntity.getRowId());
|
||||
// item.setParentRowId(childOptionEntity.getRowId());
|
||||
//
|
||||
// optionalEbomImportChildService.insertOptionAction(item);
|
||||
//
|
||||
//// QueryWrapper<OptionalEbomImportChildEntity> queryWrapper3 = new QueryWrapper<>();
|
||||
//// // 同一个机型下不可以存在相同的物料信息(物料编号),如果是“无”的情况,需同一个机型+同一个选项来做唯一判断
|
||||
//// if (StrUtil.isEmpty(item.getMaterialNo()) && item.getMaterialName().equals("无")) {
|
||||
////
|
||||
//// queryWrapper3.lambda().eq(OptionalEbomImportChildEntity::getRootRowId, optionalEbomMainEntity.getRowId());
|
||||
//// queryWrapper3.lambda().eq(OptionalEbomImportChildEntity::getParentRowId, childOptionEntity.getParentRowId());
|
||||
//// queryWrapper3.lambda().eq(OptionalEbomImportChildEntity::getIsDel, 0);
|
||||
////
|
||||
//// } else {
|
||||
//// queryWrapper3.lambda().eq(OptionalEbomImportChildEntity::getRootRowId, optionalEbomMainEntity.getRowId());
|
||||
//// queryWrapper3.lambda().eq(OptionalEbomImportChildEntity::getMaterialNo, item.getMaterialNo());
|
||||
//// queryWrapper3.lambda().eq(OptionalEbomImportChildEntity::getIsDel, 0);
|
||||
//// }
|
||||
////
|
||||
////
|
||||
//// OptionalEbomImportChildEntity childEntity = optionalEbomImportChildService.getOne(queryWrapper3);
|
||||
//// if (childEntity == null) {
|
||||
//// item.setParentRowId(childOptionEntity.getRowId());
|
||||
//// item.setRootRowId(optionalEbomMainEntity.getRowId());
|
||||
//// item.setCreatedBy(SessionUtil.getUserCode());
|
||||
//// // item.setCreatedTime(new Date());
|
||||
//// // item.setUpdatedTime(new Date());
|
||||
//// optionalEbomImportChildService.save(item);
|
||||
//// } else {
|
||||
//// item.setRowId(childEntity.getRowId());
|
||||
//// optionalEbomImportChildService.updateById(item);
|
||||
////
|
||||
//// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// return true;
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
//}
|
||||
//
|
||||
//
|
||||
//
|
||||
|
|
@ -52,9 +52,21 @@ public class OptionalExcelService {
|
|||
|
||||
private void parsecColumn3(List<ImportExcelField> v1, OptionalEbomImportDTO optionalEbomImportLevel2Dto) {
|
||||
AtomicInteger partTypeCount = new AtomicInteger();
|
||||
boolean tag=false;
|
||||
//解析物料
|
||||
for (ImportExcelField item:
|
||||
v1) {
|
||||
|
||||
|
||||
if (StrUtil.isEmpty(item.getCellSecond())) {
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行, {} {}出现空物料数据", item.getLineNo(), optionalEbomImportLevel2Dto.getOptionName(), optionalEbomImportLevel2Dto.getOptionDrawingNo()));
|
||||
}
|
||||
|
||||
if (StrUtil.isEmpty(item.getCellThird())) {
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,物料信息{}未填写标配/可选", item.getLineNo(), item.getCellSecond()));
|
||||
}
|
||||
|
||||
|
||||
//解析第三列
|
||||
v1.forEach(item -> {
|
||||
//OCE-NFS780DP-037B-OPT:加装回料输送机(可选)
|
||||
OptionalEbomImportChildDTO levelDto3 = new OptionalEbomImportChildDTO();
|
||||
|
||||
|
|
@ -62,58 +74,102 @@ public class OptionalExcelService {
|
|||
optionalEbomImportLevel2Dto.setChild(new ArrayList<OptionalEbomImportChildDTO>());
|
||||
}
|
||||
|
||||
optionalEbomImportLevel2Dto.getChild().add(levelDto3);
|
||||
String cloumn3=item.getCellThird().trim();
|
||||
String materialName;
|
||||
if(cloumn3.contains(":")) {
|
||||
String[] optionName1 = item.getCellThird().trim().split(":");
|
||||
materialName = optionName1[1];
|
||||
levelDto3.setDrawingNo(optionName1[0]);
|
||||
|
||||
}else{
|
||||
materialName=cloumn3;
|
||||
String materialDesc = item.getCellSecond().trim();
|
||||
//替换统一格式
|
||||
materialDesc = materialDesc.replace(":", ":");
|
||||
|
||||
|
||||
if (!materialDesc.contains(":")) {
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,格式错误,物料数据未使用:或:分隔,{}", item.getLineNo(), item.getCellSecond()));
|
||||
}
|
||||
// levelDto3.setMaterialName(optionName1[1]);
|
||||
levelDto3.setLineNo(item.getLineNo());
|
||||
|
||||
|
||||
levelDto3.setDrawingNo(StrUtil.sub(materialDesc, 0, materialDesc.indexOf(":")));
|
||||
String materialName = StrUtil.subSuf(materialDesc, materialDesc.indexOf(":") + 1);
|
||||
|
||||
// if (StrUtil.isEmpty(levelDto3.getDrawingNo())) {
|
||||
// throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,格式错误,解析后不包含物料图号", item.getLineNo(), item.getCellSecond()));
|
||||
// }
|
||||
|
||||
if (StrUtil.isEmpty(materialName)) {
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,格式错误,解析后不包含物料名", item.getLineNo(), item.getCellSecond()));
|
||||
}
|
||||
|
||||
levelDto3.setMaterialName(materialName);
|
||||
levelDto3.setLineNo(item.getLineNo());
|
||||
levelDto3.setPartType(OptionalBomConstant.PartTypeEnum.PART_TYPE_RADIO.getValue());
|
||||
//(标配) (可选)
|
||||
levelDto3.setTag(materialName.contains("无"));
|
||||
if (levelDto3.getTag()) {
|
||||
levelDto3.setMaterialDesc(levelDto3.getMaterialName());
|
||||
}
|
||||
levelDto3.setMaterialDesc(materialDesc);
|
||||
//多个无
|
||||
if (tag && levelDto3.getTag()) {
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,{} {} 包含多个无", item.getLineNo(),optionalEbomImportLevel2Dto.getOptionName(), optionalEbomImportLevel2Dto.getOptionDrawingNo()));
|
||||
|
||||
if (materialName.contains("标配")) {
|
||||
}
|
||||
tag = levelDto3.getTag();
|
||||
|
||||
|
||||
// if (levelDto3.getTag()) {
|
||||
// levelDto3.setMaterialDesc(materialName);
|
||||
// }
|
||||
|
||||
if (item.getCellThird().contains("标配")) {
|
||||
levelDto3.setChooseStatus(OptionalBomConstant.ChooseStatusEnum.CHOOSE_STATUS_YES.getValue());
|
||||
partTypeCount.getAndIncrement();
|
||||
//包含多个标配
|
||||
if (partTypeCount.get() > 1) {
|
||||
levelDto3.setError(OptionalBomConstant.ExcelErrorTagEnum.REPEAT.getValue());
|
||||
optionalEbomImportLevel2Dto.setError(true);
|
||||
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,{} {} 包含多个标配", item.getLineNo(),optionalEbomImportLevel2Dto.getOptionName(), optionalEbomImportLevel2Dto.getOptionDrawingNo()));
|
||||
}
|
||||
} else {
|
||||
levelDto3.setChooseStatus(OptionalBomConstant.ChooseStatusEnum.CHOOSE_STATUS_NO.getValue());
|
||||
}
|
||||
|
||||
levelDto3.setMaterialName(materialName.replace("(标配)", "").replace("(可选)", ""));
|
||||
levelDto3.setMaterialDesc(levelDto3.getMaterialDesc());
|
||||
levelDto3.setRemak(item.getCellRemark());
|
||||
optionalEbomImportLevel2Dto.getChild().add(levelDto3);
|
||||
// levelDto3.setMaterialName(materialName.replace("(标配)", "").replace("(可选)", ""));
|
||||
// levelDto3.setMaterialDesc(levelDto3.getMaterialDesc());
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void parsecColumn2(Map<String, List<ImportExcelField>> listMap, OptionalEbomImportDTO optionalEbomImportDTO) {
|
||||
|
||||
listMap.forEach((k1, v1) -> {
|
||||
OptionalEbomImportDTO optionalEbomImportLevel2Dto = new OptionalEbomImportDTO();
|
||||
String[] optionName = k1.trim().split(" ");
|
||||
//子项
|
||||
listMap.forEach((k, v) -> {
|
||||
if(CollectionUtil.isEmpty(v)){
|
||||
throw new NflgBusinessException(STATE.Error,StrUtil.format("{} {} 下无物料数据",optionalEbomImportDTO.getOptionDrawingNo(),optionalEbomImportDTO.getOptionName()));
|
||||
}
|
||||
int optionChildPos=k.indexOf(" ");
|
||||
|
||||
if(optionChildPos<0){
|
||||
throw new NflgBusinessException(STATE.Error,StrUtil.format("第{}行,格式错误,选项使用空格分隔名称和图号",v.get(0).getLineNo()));
|
||||
}
|
||||
OptionalEbomImportDTO optionalEbomImportL2 = new OptionalEbomImportDTO();
|
||||
|
||||
optionalEbomImportL2.setOptionDrawingNo(StrUtil.sub(k,0,optionChildPos));
|
||||
optionalEbomImportL2.setOptionName(StrUtil.subSuf(k,optionChildPos+1));
|
||||
|
||||
if (StrUtil.isEmpty(optionalEbomImportL2.getOptionDrawingNo())) {
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,格式错误,解析后没有图号", v.get(0).getLineNo()));
|
||||
}
|
||||
|
||||
if (StrUtil.isEmpty(optionalEbomImportL2.getOptionName())) {
|
||||
throw new NflgBusinessException(STATE.Error, StrUtil.format("第{}行,格式错误,解析后没有选项名", v.get(0).getLineNo()));
|
||||
}
|
||||
|
||||
|
||||
optionalEbomImportLevel2Dto.setOptionDrawingNo(optionName[0]);
|
||||
optionalEbomImportLevel2Dto.setOptionName(optionName[1]);
|
||||
if (CollectionUtil.isEmpty(optionalEbomImportDTO.getChild())) {
|
||||
optionalEbomImportDTO.setChild(new ArrayList<OptionalEbomImportDTO>());
|
||||
}
|
||||
optionalEbomImportDTO.getChild().add(optionalEbomImportLevel2Dto);
|
||||
parsecColumn3(v1, optionalEbomImportLevel2Dto);
|
||||
optionalEbomImportDTO.getChild().add(optionalEbomImportL2);
|
||||
|
||||
|
||||
|
||||
parsecColumn3(v, optionalEbomImportL2);
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -121,13 +177,29 @@ public class OptionalExcelService {
|
|||
|
||||
private OptionalEbomImportExcelDTO parsecColumn1(List<ImportExcelField> list) {
|
||||
OptionalEbomImportExcelDTO optionalEbomInportExcelDTO = new OptionalEbomImportExcelDTO();
|
||||
int row = 1;
|
||||
int row = 2;
|
||||
ImportExcelField device = list.get(0);
|
||||
|
||||
if(StrUtil.isEmpty(device.getCellFirst())){
|
||||
throw new NflgBusinessException(STATE.Error,"机型数据不能为空");
|
||||
}
|
||||
String deviceInfo = device.getCellFirst();
|
||||
int deviceSplitPos=deviceInfo.indexOf(" ");
|
||||
|
||||
//设备信息
|
||||
String[] deviceInfo = device.getCellFirst().trim().split(" ");
|
||||
if(deviceSplitPos<0 ){
|
||||
throw new NflgBusinessException(STATE.Error,"第1行,机型设备型号格式异常,使用空格分隔设备编号和名称");
|
||||
}
|
||||
|
||||
optionalEbomInportExcelDTO.setDeviceInfo(new OptionalEbomMainDTO());
|
||||
optionalEbomInportExcelDTO.getDeviceInfo().setDeviceNo(deviceInfo[0]);
|
||||
optionalEbomInportExcelDTO.getDeviceInfo().setDeviceName(deviceInfo[1]);
|
||||
optionalEbomInportExcelDTO.getDeviceInfo().setDeviceNo(StrUtil.sub(deviceInfo,0 ,deviceSplitPos ));
|
||||
|
||||
optionalEbomInportExcelDTO.getDeviceInfo().setDeviceName(StrUtil.subSuf(deviceInfo, deviceSplitPos+1 ));
|
||||
|
||||
if(StrUtil.isEmpty( optionalEbomInportExcelDTO.getDeviceInfo().getDeviceName())){
|
||||
throw new NflgBusinessException(STATE.Error,"第1行,格式错误,解析后不包含设备名称");
|
||||
}
|
||||
optionalEbomInportExcelDTO.getDeviceInfo().setDeviceName( optionalEbomInportExcelDTO.getDeviceInfo().getDeviceName() .replace("\n",""));
|
||||
|
||||
String name = "";
|
||||
//相同类
|
||||
|
|
@ -135,9 +207,15 @@ public class OptionalExcelService {
|
|||
|
||||
for (; row < list.size(); row++) {
|
||||
ImportExcelField rowField = list.get(row);
|
||||
|
||||
//第一选项未合并单元格
|
||||
if (StrUtil.isEmpty(rowField.getCellThird()) && !rowField.getCellFirst().equals(rowField.getCellSecond())){
|
||||
throw new NflgBusinessException(STATE.Error,StrUtil.format("第{}行,请保持相同格式,{} 未合并单元格 ",rowField.getLineNo(),rowField.getCellFirst()));
|
||||
}
|
||||
|
||||
//相同列为根
|
||||
if ((row==list.size()-1)||(rowField.getCellFirst().trim().equals(rowField.getCellSecond().trim())
|
||||
&& rowField.getCellSecond().trim().equals(rowField.getCellThird().trim()))) {
|
||||
if ((row==list.size()-1)||(rowField.getCellFirst().equals(rowField.getCellSecond())
|
||||
&& StrUtil.isEmpty(rowField.getCellThird() ) )) {
|
||||
|
||||
|
||||
if((row==list.size()-1)){
|
||||
|
|
@ -147,24 +225,45 @@ public class OptionalExcelService {
|
|||
|
||||
if (CollectionUtil.isNotEmpty(classList)) {
|
||||
String finalName = name;
|
||||
Map<String, Map<String, List<ImportExcelField>>> group1 = classList.parallelStream().collect(Collectors.groupingBy(ImportExcelField::getCellFirst, Collectors.groupingBy(ImportExcelField::getCellSecond)));
|
||||
//第一列
|
||||
group1.forEach((k, v) -> {
|
||||
OptionalEbomImportDTO optionalEbomImportDTO = new OptionalEbomImportDTO();
|
||||
optionalEbomImportDTO.setOptionName(finalName);
|
||||
optionalEbomImportDTO.setOptionDrawingNo(k);
|
||||
if (CollectionUtil.isEmpty(optionalEbomInportExcelDTO.getOptionInfo())) {
|
||||
optionalEbomInportExcelDTO.setOptionInfo(new ArrayList<OptionalEbomImportDTO>());
|
||||
}
|
||||
optionalEbomInportExcelDTO.getOptionInfo().add(optionalEbomImportDTO);
|
||||
//黄色根部选项解析
|
||||
int optionParentPos=finalName.indexOf(" ");
|
||||
if(optionParentPos<0){
|
||||
throw new NflgBusinessException(STATE.Error,StrUtil.format("选项格式错误未使用空格分隔,{}",finalName));
|
||||
}
|
||||
|
||||
|
||||
|
||||
OptionalEbomImportDTO optionalEbomImportL1 = new OptionalEbomImportDTO();
|
||||
optionalEbomImportL1.setOptionDrawingNo(StrUtil.sub(finalName,0,optionParentPos));
|
||||
optionalEbomImportL1.setOptionName(StrUtil.subSuf(finalName,optionParentPos+1));
|
||||
|
||||
if (CollectionUtil.isEmpty(optionalEbomInportExcelDTO.getOptionInfo())) {
|
||||
optionalEbomInportExcelDTO.setOptionInfo(new ArrayList<OptionalEbomImportDTO>());
|
||||
}
|
||||
optionalEbomInportExcelDTO.getOptionInfo().add(optionalEbomImportL1);
|
||||
|
||||
Map<String, List<ImportExcelField> > group1 = classList.parallelStream()
|
||||
.collect(Collectors.groupingBy(ImportExcelField::getCellFirst,LinkedHashMap::new,Collectors.toList()));
|
||||
|
||||
if(group1==null || CollectionUtil.isEmpty(group1)){
|
||||
throw new NflgBusinessException(STATE.Error,StrUtil.format("转换{}选项下数据异常",name));
|
||||
}
|
||||
|
||||
parsecColumn2(group1, optionalEbomImportL1);
|
||||
|
||||
parsecColumn2(v, optionalEbomImportDTO);
|
||||
});
|
||||
classList.clear();
|
||||
|
||||
}
|
||||
if((row!=list.size()-1)) {
|
||||
name = rowField.getCellFirst();
|
||||
if(StrUtil.isEmpty(name)){
|
||||
throw new NflgBusinessException(STATE.Error,StrUtil.format("第{}行,选项数据不能为空",rowField.getLineNo()));
|
||||
}
|
||||
|
||||
if(!name.contains(" ")){
|
||||
throw new NflgBusinessException(STATE.Error,StrUtil.format("第{}行,格式错误,选项使用空格分隔名称和图号",rowField.getLineNo()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
@ -224,9 +323,9 @@ public class OptionalExcelService {
|
|||
throw new NflgBusinessException(STATE.Error, hintMsg);
|
||||
}
|
||||
|
||||
|
||||
// return true;
|
||||
//保存db
|
||||
return batchExcelToRepertory(optionalEbomInportExcelDTO);
|
||||
return batchExcelToRepertory(optionalEbomInportExcelDTO);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -241,11 +340,11 @@ public class OptionalExcelService {
|
|||
List<OptionalEbomImportChildDTO> listChild = item1.getChild();
|
||||
for (OptionalEbomImportChildDTO item2 : listChild) {
|
||||
if (item2.getError() == OptionalBomConstant.ExcelErrorTagEnum.REPEAT.getValue()) {
|
||||
title.append(String.format("第%d行 %s\n", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.REPEAT.getDescription()));
|
||||
title.append(String.format("第%d行 %s ", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.REPEAT.getDescription()));
|
||||
} else if (item2.getError() == OptionalBomConstant.ExcelErrorTagEnum.MATERIA_NO_UNKOWN.getValue()) {
|
||||
title.append(String.format("第%d行 %s\n", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.MATERIA_NO_UNKOWN.getDescription()));
|
||||
title.append(String.format("第%d行 %s ", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.MATERIA_NO_UNKOWN.getDescription()));
|
||||
} else if (item2.getError() == OptionalBomConstant.ExcelErrorTagEnum.ALL.getValue()) {
|
||||
title.append(String.format("第%d行 %s\n", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.ALL.getDescription()));
|
||||
title.append(String.format("第%d行 %s ", item2.getLineNo(), OptionalBomConstant.ExcelErrorTagEnum.ALL.getDescription()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue