package com.example.server.progressTrack.service;
|
|
import com.example.client.dto.JComboBoxItem;
|
import com.example.client.service.BaseService;
|
import com.example.server.progressTrack.Dto.NetworkNodeStatusDto;
|
import com.example.server.progressTrack.dao.DjJdgzNetworkLevel3Dao;
|
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
|
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
|
import com.example.server.teamGroup.service.SysTeamGroupClassService;
|
import com.example.server.utils.FileUtils;
|
import com.example.server.utils.ImportUtil;
|
import com.example.server.utils.UUIDUtil;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.IOException;
|
import java.util.*;
|
|
|
/**
|
* dj_jdgz_network_level3
|
*
|
* @author zt generator
|
* @since 1.0.0 2024-12-17
|
*/
|
@Service
|
public class DjJdgzNetworkLevel3Service extends BaseService<DjJdgzNetworkLevel3Dao, DjJdgzNetworkLevel3> {
|
@Autowired
|
NetWorkDiagramService netWorkDiagramService;
|
@Autowired
|
DjJdgzNetworkLevel3ListService DjJdgzNetworkLevel3ListService;
|
@Autowired
|
SysTeamGroupClassService sysTeamGroupClassService;
|
|
|
@Value("${zt.oss.local-path}")
|
private String path;
|
|
public List<DjJdgzNetworkLevel3> getList(Long shipId) {
|
List<DjJdgzNetworkLevel3> list = baseDao.getList(shipId);
|
return list;
|
}
|
|
/**
|
* 获取节点状态数据
|
*/
|
public List<NetworkNodeStatusDto> getNodeStatusData(Long id) {
|
List<NetworkNodeStatusDto> list = baseDao.getNodeStatusData(id);
|
return list;
|
}
|
|
/**
|
* 删除
|
*
|
* @param ids
|
*/
|
public void delete(Long[] ids) {
|
super.deleteLogic(ids);
|
}
|
|
public String getStatusDiagram(Long id) {
|
DjJdgzNetworkLevel3 djJdgzNetworkLevel3 = this.get(id);
|
String json = djJdgzNetworkLevel3.getContent();
|
List<NetworkNodeStatusDto> nodeStatusData = this.getNodeStatusData(id);
|
String statusDiagram = netWorkDiagramService.getStatusDiagram(json, null, nodeStatusData);
|
return statusDiagram;
|
}
|
|
public void deleteLevel3(Long id) {
|
baseDao.deleteLevel3List(id);
|
baseDao.deleteLevel3(id);
|
}
|
|
public List<DjJdgzNetworkLevel3> getDiagramByNodeId(Long id) {
|
List<DjJdgzNetworkLevel3> data = baseDao.getByNodeId(id);
|
return data;
|
}
|
|
public JComboBoxItem[] getListByLevel1(Long level1NetworkId) {
|
return baseDao.getListByLevel1(level1NetworkId);
|
}
|
|
public String importDiagramFromExcel(String path, Long level1NetworkId, Long level2NetworkId, Long level2NodeId) {
|
String result = "true";
|
Integer sum = 0; // 总共的条数
|
Integer suc = 0; // 成功的条数
|
Integer err = 0; // 失败的条数
|
Map<String, Object> errMap = new HashMap<>();
|
MultipartFile mutFile = null;
|
try {
|
mutFile = FileUtils.convertFileToMultipartFile(path);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String sheetName = null;
|
int row1 = 0;
|
try {
|
// 获取导入文件的后缀名
|
String fileName = mutFile.getOriginalFilename();
|
Workbook workbook = null;
|
//解决excel版本问题
|
if (fileName != null && fileName.endsWith(".xls")) {
|
workbook = new HSSFWorkbook(mutFile.getInputStream());
|
} else if (fileName != null && fileName.endsWith(".xlsx")) {
|
workbook = new XSSFWorkbook(mutFile.getInputStream());
|
}
|
assert workbook != null; //断言如果[boolean表达式]为true,则程序继续执行。 如果为false,则程序抛出AssertionError,并终止执行。
|
|
Sheet sheet = workbook.getSheetAt(0);
|
int num = sheet.getLastRowNum(); // 一共有多少行
|
sheetName = sheet.getSheetName(); //获取当前sheet名称
|
sum = sum + num;
|
|
Map<Integer, String> mapProcessName = new HashMap<>();
|
mapProcessName.put(1,"设备拆卸出舱");
|
mapProcessName.put(2,"设备分交");
|
mapProcessName.put(3,"拆检鉴定");
|
mapProcessName.put(4,"设备返厂");
|
mapProcessName.put(5,"回装");
|
|
Map<String, String> mapTeamGroup = sysTeamGroupClassService.getMapGroup(false, "hld");
|
|
for (int j = 1; j <= num; j++) {
|
DjJdgzNetworkLevel3 data = new DjJdgzNetworkLevel3();
|
DjJdgzNetworkLevel3List node = new DjJdgzNetworkLevel3List();
|
|
boolean isErr = false;
|
row1 = j + 1;
|
String pattern = "yyyy-MM-dd";
|
Row row = sheet.getRow(j);
|
|
String name = ImportUtil.getCellValue(row, 0, pattern);
|
String teamGroup = ImportUtil.getCellValue(row, 1, pattern);
|
String time1 = ImportUtil.getCellValue(row, 2, pattern);
|
String time2 = ImportUtil.getCellValue(row, 3, pattern);
|
String time3 = ImportUtil.getCellValue(row, 4, pattern);
|
String time4 = ImportUtil.getCellValue(row, 5, pattern);
|
String time5 = ImportUtil.getCellValue(row, 6, pattern);
|
String repairUnit = ImportUtil.getCellValue(row, 7, pattern);
|
String repairUnitDirector = ImportUtil.getCellValue(row, 8, pattern);
|
String repairUnitContact = ImportUtil.getCellValue(row, 9, pattern);
|
String generalRepairUnit = ImportUtil.getCellValue(row, 10, pattern);
|
String generalRepairUnitDirector = ImportUtil.getCellValue(row, 11, pattern);
|
String generalRepairUnitContact = ImportUtil.getCellValue(row, 12, pattern);
|
|
Long id = UUIDUtil.generateId();
|
if (StringUtils.isEmpty(name)) {
|
result = "第"+j+"行"+"设备名称不能为空";
|
isErr = true;
|
} else {
|
data.setId(id);
|
data.setName(name);
|
data.setLevel1NetworkId(level1NetworkId);
|
data.setLevel2NetworkId(level2NetworkId);
|
data.setLevel2NodeId(level2NodeId);
|
}
|
|
if (StringUtils.isEmpty(teamGroup)) {
|
result = "第"+j+"行"+"专业不能为空";
|
isErr = true;
|
} else {
|
Long teamGroupId = Long.valueOf(mapTeamGroup.get(teamGroup));
|
//删除数据库中相同专业及相同三级网络图数据
|
baseDao.deleteByTeamGroup(teamGroupId, name);
|
|
node.setTeamgroupId(teamGroupId);
|
node.setTeamgroupName(teamGroup);
|
node.setNetworkId(id);
|
}
|
|
if (StringUtils.isEmpty(time1)) {
|
result = "第"+j+"行"+"第"+1+"个"+"节点时间不能为空";
|
isErr = true;
|
} else {
|
if (time1.matches("[0-9/]+")) {
|
time1 = time1.replace("/", "-");
|
node.setRequiredCompletionTime(time1);
|
node.setProcessName(mapProcessName.get(1));
|
node.setSort(1);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time1.matches("[0-9.]+")) {
|
time1 = time1.replace(".", "-");
|
node.setRequiredCompletionTime(time1);
|
node.setProcessName(mapProcessName.get(1));
|
node.setSort(1);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time1.matches("[0-9-]+")) {
|
node.setRequiredCompletionTime(time1);
|
node.setProcessName(mapProcessName.get(1));
|
node.setSort(1);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else {
|
result = "第"+j+"行"+"第"+1+"个"+"节点时间日期格式不规范";
|
isErr = true;
|
}
|
}
|
|
if (StringUtils.isEmpty(time2)) {
|
result = "第"+j+"行"+"第"+2+"个"+"节点时间不能为空";
|
isErr = true;
|
} else {
|
if (node.getId()!=null){
|
node.setId(null);
|
}
|
if (time2.matches("[0-9/]+")) {
|
node.setRequiredCompletionTime(time2);
|
node.setProcessName(mapProcessName.get(2));
|
node.setSort(2);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time2.matches("[0-9.]+")) {
|
time2 = time2.replace(".", "-");
|
node.setRequiredCompletionTime(time2);
|
node.setProcessName(mapProcessName.get(2));
|
node.setSort(2);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time2.matches("[0-9-]+")) {
|
node.setRequiredCompletionTime(time2);
|
node.setProcessName(mapProcessName.get(2));
|
node.setSort(2);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else {
|
result = "第"+j+"行"+"第"+2+"个"+"节点时间的日期格式不规范";
|
isErr = true;
|
}
|
}
|
|
if (StringUtils.isEmpty(time3)) {
|
result = "第"+j+"行"+"第"+3+"个"+"节点时间不能为空";
|
isErr = true;
|
} else {
|
if (node.getId()!=null){
|
node.setId(null);
|
}
|
if (time3.matches("[0-9/]+")) {
|
time3 = time3.replace("/", "-");
|
node.setRequiredCompletionTime(time3);
|
node.setProcessName(mapProcessName.get(3));
|
node.setSort(3);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time3.matches("[0-9.]+")) {
|
time3 = time3.replace(".", "-");
|
node.setRequiredCompletionTime(time3);
|
node.setProcessName(mapProcessName.get(3));
|
node.setSort(3);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time3.matches("[0-9-]+")) {
|
node.setRequiredCompletionTime(time3);
|
node.setProcessName(mapProcessName.get(3));
|
node.setSort(3);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else {
|
result = "第"+j+"行"+"第"+3+"个"+"节点时间的日期格式不规范";
|
isErr = true;
|
}
|
}
|
|
if (StringUtils.isEmpty(time4)) {
|
result = "第"+j+"行"+"第"+4+"个"+"节点时间不能为空";
|
isErr = true;
|
} else {
|
if (node.getId()!=null){
|
node.setId(null);
|
}
|
if (time4.matches("[0-9/]+")) {
|
time4 = time4.replace("/", "-");
|
node.setRequiredCompletionTime(time4);
|
node.setProcessName(mapProcessName.get(4));
|
node.setSort(4);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time4.matches("[0-9.]+")) {
|
time4 = time4.replace(".", "-");
|
node.setRequiredCompletionTime(time4);
|
node.setProcessName(mapProcessName.get(4));
|
node.setSort(4);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time4.matches("[0-9-]+")) {
|
node.setRequiredCompletionTime(time4);
|
node.setProcessName(mapProcessName.get(4));
|
node.setSort(4);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else {
|
result = "第"+j+"行"+"第"+4+"个"+"节点时间的日期格式不规范";
|
isErr = true;
|
}
|
}
|
|
if (StringUtils.isEmpty(time5)) {
|
result = "第"+j+"行"+"第"+5+"个"+"节点时间不能为空";
|
isErr = true;
|
} else {
|
if (node.getId()!=null){
|
node.setId(null);
|
}
|
if (time5.matches("[0-9/]+")) {
|
time5 = time5.replace("/", "-");
|
node.setRequiredCompletionTime(time5);
|
node.setProcessName(mapProcessName.get(5));
|
node.setSort(5);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time5.matches("[0-9.]+")) {
|
time5 = time5.replace(".", "-");
|
node.setRequiredCompletionTime(time5);
|
node.setProcessName(mapProcessName.get(5));
|
node.setSort(5);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else if (time5.matches("[0-9-]+")) {
|
node.setRequiredCompletionTime(time5);
|
node.setProcessName(mapProcessName.get(5));
|
node.setSort(5);
|
DjJdgzNetworkLevel3ListService.insert(node);
|
} else {
|
result = "第"+j+"行"+"第"+5+"个"+"要求完成时间的日期格式不规范";
|
isErr = true;
|
}
|
}
|
|
if(StringUtils.isNotBlank(generalRepairUnit)){
|
data.setGeneralRepairUnit(generalRepairUnit);
|
}
|
if(StringUtils.isNotBlank(generalRepairUnitContact)){
|
data.setGeneralRepairUnitContact(generalRepairUnitContact);
|
}
|
if(StringUtils.isNotBlank(generalRepairUnitDirector)){
|
data.setGeneralRepairUnitDirector(generalRepairUnitDirector);
|
}
|
if(StringUtils.isNotBlank(generalRepairUnit)){
|
data.setRepairUnit(repairUnit);
|
}
|
if(StringUtils.isNotBlank(generalRepairUnit)){
|
data.setRepairUnitContact(repairUnitContact);
|
}
|
if(StringUtils.isNotBlank(generalRepairUnit)){
|
data.setRepairUnitDirector(repairUnitDirector);
|
}
|
|
if (!isErr) {
|
this.insert(data);
|
String diagram = DjJdgzNetworkLevel3ListService.getDiagram(data.getId());
|
data.setContent(diagram);
|
this.update(data);
|
}
|
if (isErr) {
|
err++;
|
continue;
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
result = "导入"+row1+"行数据时检测到异常,中断导入操作。";
|
}
|
|
suc = sum - err;
|
|
return result;
|
}
|
/* public void exportExcelTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException {
|
String excelName="三级网络图批量模版";
|
String excelPath = path + "template/jx-model/" + excelName + ".xlsx"; //模板路径
|
File file = new File(excelPath);
|
excelName = excelName + "_" + DateUtil.now() + ".xlsx";
|
DownloadService.exportModelPath(excelPath, excelName, file, response, request);
|
}*/
|
}
|