工位信息二开导入

tags/yfai-mes-ext-v1.0
yxw 2 years ago
parent 215461b6ef
commit 6892a1af9b

@ -158,46 +158,53 @@ public class SxEquipmentCheckExcelService implements IExcelImportExtService {
equNo = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); equNo = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
//设备管理号
String equManageNo = null;
try {
row.getCell(3).setCellType(CellType.STRING);
equNo = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//设备名称 //设备名称
String equName = null; String equName = null;
try { try {
row.getCell(3).setCellType(CellType.STRING); row.getCell(4).setCellType(CellType.STRING);
equName = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); equName = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
//项目内容 //项目内容
String projectContent = null; String projectContent = null;
try { try {
row.getCell(4).setCellType(CellType.STRING); row.getCell(5).setCellType(CellType.STRING);
projectContent = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); projectContent = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
//点检方法 //点检方法
String checkMethod = null; String checkMethod = null;
try { try {
row.getCell(5).setCellType(CellType.STRING); row.getCell(6).setCellType(CellType.STRING);
checkMethod = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); checkMethod = row.getCell(6, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
//类型 //类型
String checkType = null; String checkType = null;
try { try {
row.getCell(6).setCellType(CellType.STRING); row.getCell(7).setCellType(CellType.STRING);
checkType = row.getCell(6, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); checkType = row.getCell(7, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
//上限值 //上限值
String upLimits = null; String upLimits = null;
try { try {
row.getCell(7).setCellType(CellType.STRING); row.getCell(8).setCellType(CellType.STRING);
upLimits = row.getCell(7, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); upLimits = row.getCell(8, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
//下限值 //下限值
String downLimits = null; String downLimits = null;
try { try {
row.getCell(8).setCellType(CellType.STRING); row.getCell(9).setCellType(CellType.STRING);
downLimits = row.getCell(8, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); downLimits = row.getCell(9, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
@ -235,33 +242,33 @@ public class SxEquipmentCheckExcelService implements IExcelImportExtService {
//校验项目内容 //校验项目内容
if (StringUtils.isEmpty(projectContent)) { if (StringUtils.isEmpty(projectContent)) {
errorNum ++; errorNum ++;
cellNum += "E;"; cellNum += "F;";
errorInfo += "第E列数据必填;"; errorInfo += "第F列数据必填;";
} else { } else {
if (projectContent.length() > 255) { if (projectContent.length() > 255) {
errorNum++; errorNum++;
cellNum += "E;"; cellNum += "F;";
errorInfo += "第E列数据长度不能超过255个字符;"; errorInfo += "第F列数据长度不能超过255个字符;";
} }
} }
//校验点击方法 //校验点击方法
if (StringUtils.isEmpty(checkMethod)) { if (StringUtils.isEmpty(checkMethod)) {
errorNum ++; errorNum ++;
cellNum += "F;"; cellNum += "G;";
errorInfo += "第F列数据必填;"; errorInfo += "第G列数据必填;";
} }
//校验点击方法 //校验点击方法
if (StringUtils.isEmpty(checkType)) { if (StringUtils.isEmpty(checkType)) {
errorNum ++; errorNum ++;
cellNum += "G;"; cellNum += "H;";
errorInfo += "第G列数据必填;"; errorInfo += "第H列数据必填;";
} else { } else {
if (StringUtils.isEmpty(MesExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType))) { if (StringUtils.isEmpty(MesExtEnumUtil.MES_EQUIPMENT_CHECK_TYPE.valueOfDescription(checkType))) {
errorNum ++; errorNum ++;
cellNum += "G;"; cellNum += "H;";
errorInfo += "第G列数据无效;"; errorInfo += "第H列数据无效;";
} }
} }
@ -272,13 +279,13 @@ public class SxEquipmentCheckExcelService implements IExcelImportExtService {
//校验 工作中心代码+工位代码+设备代码+项目内容+点检方法+类型 是否已经存在数据库 //校验 工作中心代码+工位代码+设备代码+项目内容+点检方法+类型 是否已经存在数据库
if (StringUtils.isEmpty(errorInfo) && !CollectionUtils.isEmpty(equipmentCheckMap) && equipmentCheckMap.containsKey(key)) { if (StringUtils.isEmpty(errorInfo) && !CollectionUtils.isEmpty(equipmentCheckMap) && equipmentCheckMap.containsKey(key)) {
errorNum ++; errorNum ++;
cellNum += "A+B+C+E+F+G;"; cellNum += "A+B+C+F+G+H;";
errorInfo += "第A+B+C+E+F+G列数据已经存在于数据库;"; errorInfo += "第A+B+C+F+G+H列数据已经存在于数据库;";
} }
} else { } else {
errorNum ++; errorNum ++;
cellNum += "A+B+C+E+F+G;"; cellNum += "A+B+C+F+G+H;";
errorInfo += "第A+B+C+E+F+G列数据跟第" + existMap.get(key) + "行的第A+B+C+E+F+G列数据重复;"; errorInfo += "第A+B+C+F+G+H列数据跟第" + existMap.get(key) + "行的第A+B+C+F+G+H列数据重复;";
} }
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(AuthUtil.getOrganizeCode()); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(AuthUtil.getOrganizeCode());
@ -345,6 +352,7 @@ public class SxEquipmentCheckExcelService implements IExcelImportExtService {
equipmentCheck.setWorkCellCode(workCellCode); equipmentCheck.setWorkCellCode(workCellCode);
equipmentCheck.setWorkCellName(workCellName); equipmentCheck.setWorkCellName(workCellName);
equipmentCheck.setEquNo(equNo); equipmentCheck.setEquNo(equNo);
equipmentCheck.setEquManageNo(equManageNo);
equipmentCheck.setEquName(equName); equipmentCheck.setEquName(equName);
equipmentCheck.setProjectContent(projectContent); equipmentCheck.setProjectContent(projectContent);
equipmentCheck.setCheckMethod(checkMethod); equipmentCheck.setCheckMethod(checkMethod);

@ -0,0 +1,300 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.jx;
import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService;
import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService;
import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : wangjie
* @CreateDate : 2019-04-23
* @Modify:
**/
@Service
public class WorkCellExtExcelService implements IExcelImportService {
@Autowired
private MesWorkCenterRepository workCenterRepository;
@Autowired
private MesWorkCellRepository workCellRepository;
@Autowired
private CommonService commonService;
/**
*
* @param workbook
* @param organizeCode
* @param userName
* @return
*/
@Override
public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) {
//读取表格
ExcelImportResultModel excelImportResultModel = this.sheetExtractMesWorkCell(workbook.getSheetAt(0), organizeCode, userName);
//数据入库
this.insertExcelMesWorkCell(excelImportResultModel);
return excelImportResultModel;
}
/**
* -
* @param sheetAt
* @param organizeCode
* @param userName
* @return
*/
private ExcelImportResultModel sheetExtractMesWorkCell(Sheet sheetAt, String organizeCode, String userName) {
//从0行开始读取
int totalNumberOfRows = sheetAt.getLastRowNum() + 1;
//MesWorkCell集合
List<MesWorkCell> workCellList = new ArrayList<>();
//成功数量
Integer successRowNum = 0;
//失败数量
Integer failRowNum = 0;
//错误的行号
String errorRows = "";
//错误行信息集合
List<ExcelImportErrorModel> excelImportErrorModels = new ArrayList<>();
//用于EXCEL表中的工位代码唯一校验keyworkCenterCode&workCellCodevaluerow
Map<String,String> workCenterCodeAndWorkCellCodeMap = new HashMap<>();
//查询工位表
List<MesWorkCell> workCells = workCellRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()});
Map<String, List<MesWorkCell>> workCellMap = workCells.stream().filter(workCell -> null != workCell)
.collect(Collectors.groupingBy(workCell -> (workCell.getWorkCenterCode() + "&" + workCell.getWorkCellCode())));
// 查询生产线表
Map<String, Object> workCenterCodeEntityMap;
try {
workCenterCodeEntityMap = MesCommonUtil.getCodeEntityMap(workCenterRepository, "workCenterCode", organizeCode, "生产线表");
} catch (Exception e) {
workCenterCodeEntityMap = null;
}
//从excel表的第5行数据开始导入getFirstRowNum是从0行开始读取
for (int i = (sheetAt.getFirstRowNum() + 4); i < totalNumberOfRows; i ++) {
Row row = sheetAt.getRow(i);
//空行跳过
if (null == row) {
continue;
}
//获取总列数
Short lastCellNum = row.getLastCellNum();
if (lastCellNum > 0) {
int rowNum = i + 1; //当前行号
int errorNum = 0; //错误数量
String cellNum = ""; //错误列号
String errorInfo = ""; //错误信息
//工位代码
try {
//第一列必须有值,否则跳过
row.getCell(0).setCellType(CellType.STRING);
} catch (Exception e) {
continue;
}
String workCellCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
//工位名称
String workCellName = null;
try {
row.getCell(1).setCellType(CellType.STRING);
workCellName = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//生产线代码
String workCenterCode = null;
try {
row.getCell(2).setCellType(CellType.STRING);
workCenterCode = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//工位类型
String workCellType = null;
try {
row.getCell(3).setCellType(CellType.STRING);
workCellType = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//工位等级
String gradeName = null;
try {
row.getCell(4).setCellType(CellType.STRING);
gradeName = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//序号
String seq = null;
try {
row.getCell(5).setCellType(CellType.STRING);
seq = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//区域代码
String areaCode = null;
boolean isExist = false;
//校验 工位代码+生产线 不重复
if (!workCenterCodeAndWorkCellCodeMap.containsKey(workCenterCode + "&" + workCellCode)) {
workCenterCodeAndWorkCellCodeMap.put(workCenterCode + "&" + workCellCode, String.valueOf(rowNum));
//校验 工位代码+生产线 是否已经存在数据库
if (!StringUtils.isEmpty(workCenterCode) && !StringUtils.isEmpty(workCellCode) && !CollectionUtils.isEmpty(workCellMap)
&& workCellMap.containsKey(workCenterCode + "&" + workCellCode)) {
isExist = true;
}
} else {
errorNum ++;
cellNum += "AC;";
errorInfo += "第A+C列数据跟第" + workCenterCodeAndWorkCellCodeMap.get(workCenterCode + "&" + workCellCode) + "行的第A+C列数据重复;";
}
//校验工位名称
if (StringUtils.isEmpty(workCellName)) {
errorNum ++;
cellNum += "B;";
errorInfo += "第B列数据必填;";
}
//校验生产线代码
if (StringUtils.isEmpty(workCenterCode)) {
errorNum ++;
cellNum += "C;";
errorInfo += "第C列数据必填;";
} else {
if (CollectionUtils.isEmpty(workCenterCodeEntityMap) ||
(!CollectionUtils.isEmpty(workCenterCodeEntityMap) && !workCenterCodeEntityMap.containsKey(workCenterCode))) {
errorNum ++;
cellNum += "C;";
errorInfo += "第C列数据无效;";
} else {
MesWorkCenter workCenter = (MesWorkCenter) workCenterCodeEntityMap.get(workCenterCode);
if (null != workCenter) {
areaCode = workCenter.getAreaCode();
}
}
}
//校验工位类型
if (StringUtils.isEmpty(workCellType)) {
errorNum ++;
cellNum += "D;";
errorInfo += "第D列数据必填;";
} else if (!StringUtils.isEmpty(workCellType) && StringUtils.isEmpty(MesEnumUtil.MES_WORK_CELL_TYPE.descriptionOfValue(workCellType))) {
errorNum ++;
cellNum += "D;";
errorInfo += "第D列数据无效;";
}
//校验工位等级
Integer grade = null;
if (!StringUtils.isEmpty(gradeName)) {
grade = MesEnumUtil.WORK_CELL_GRADE.descriptionOfValue(gradeName);
if (grade == null) {
errorNum ++;
cellNum += "E;";
errorInfo += "第E列数据无效;";
}
}
//校验序号
if (StringUtils.isEmpty(seq)) {
errorNum ++;
cellNum += "F;";
errorInfo += "第F列数据必填;";
} else {
try {
Integer.valueOf(seq);
} catch (NumberFormatException e) {
errorNum ++;
cellNum += "F;";
errorInfo += "第F列数据无效;";
}
}
//没有错误的时候封装MesWorkCell
if (errorNum == 0) {
MesWorkCell workCell;
if(isExist){
workCell = workCellMap.get(workCenterCode + "&" + workCellCode).get(0);
ConvertBean.serviceModelUpdate(workCell,userName);
}else{
workCell = new MesWorkCell();
ConvertBean.serviceModelInitialize(workCell, userName);
}
workCell.setWorkCellCode(workCellCode);
workCell.setWorkCellName(workCellName);
workCell.setWorkCenterCode(workCenterCode);
workCell.setAreaCode(areaCode);
workCell.setWorkCellType(MesEnumUtil.MES_WORK_CELL_TYPE.descriptionOfValue(workCellType));
workCell.setGrade(grade);
workCell.setSeq(Integer.valueOf(seq));
workCell.setOrganizeCode(organizeCode);
workCellList.add(workCell);
successRowNum ++;
} else {
//封装错误行信息ExcelImportErrorModel
excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo);
errorRows += rowNum + ";";
failRowNum ++;
}
}
}
//校验EXCEL数据
commonService.checkExcelData(failRowNum, successRowNum, errorRows);
//封装返回结果
ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows);
excelImportResultModel.setExcelList((failRowNum > 0) ? null : workCellList);
return excelImportResultModel;
}
/**
* -
* @param excelImportResultModel
*/
private void insertExcelMesWorkCell(ExcelImportResultModel excelImportResultModel) {
//导入数据
if (null != excelImportResultModel) {
List<MesWorkCell> excelList = excelImportResultModel.getExcelList();
if (!CollectionUtils.isEmpty(excelList)) workCellRepository.saveAll(excelList);
}
}
}

@ -60,6 +60,10 @@ public class MesEquipmentCheckDetail extends BaseBean implements Serializable {
@ApiParam("设备编号") @ApiParam("设备编号")
private String equNo; private String equNo;
@Column(name = "EQU_MANAGE_NO")
@ApiParam("设备管理号")
private String equManageNo;
@Column(name = "EQU_NAME") @Column(name = "EQU_NAME")
@ApiParam("设备名称") @ApiParam("设备名称")
private String equName; private String equName;

@ -82,7 +82,8 @@ public class MesExtEnumUtil {
MES_CAREER_CATEGORY_WORK_CENTER_CORRELATION_CFG(900, "sxCareerAndCategoryAndWorkCenterCfgExcelService", "综合能率目标导入"), MES_CAREER_CATEGORY_WORK_CENTER_CORRELATION_CFG(900, "sxCareerAndCategoryAndWorkCenterCfgExcelService", "综合能率目标导入"),
MES_PROCESS_TORQUE_MANAGE(910, "torqueManageExcelService", "扭矩管理项目导入"), MES_PROCESS_TORQUE_MANAGE(910, "torqueManageExcelService", "扭矩管理项目导入"),
MES_MANAGE_CODE(920, "manageCodeExcelService", "管理码信息导入"), MES_MANAGE_CODE(920, "manageCodeExcelService", "管理码信息导入"),
MES_ZJ_REWORK_ORDER_BIND_UNBIND_SN(930, "sxReworkOrderBindZjSnExcelService", "组件返工条码绑定导入"); MES_ZJ_REWORK_ORDER_BIND_UNBIND_SN(930, "sxReworkOrderBindZjSnExcelService", "组件返工条码绑定导入"),
MES_WORK_CELL_EXT(940, "workCellExtExcelService", "工位信息导入");
private int value; private int value;
private String service; private String service;

Loading…
Cancel
Save