Commit 271591d2 authored by hkl's avatar hkl

feat:1.人工检查数据导入bug

parent aac0e86f
......@@ -10,9 +10,11 @@ import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.checkData.entity.MovementCourse;
import org.jeecg.modules.checkData.entity.MovementCourseInfo;
import org.jeecg.modules.checkData.entity.MovementRecordsMaster;
import org.jeecg.modules.checkData.face.MovementRecordsMasterFace;
import org.jeecg.modules.checkData.service.IMovementCourseInfoService;
import org.jeecg.modules.checkData.service.IMovementCourseService;
import org.jeecg.modules.checkData.service.IMovementRecordsMasterService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
......@@ -34,6 +36,9 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
@Resource
private IMovementCourseInfoService movementCourseInfoService;
@Resource
private IMovementRecordsMasterService movementRecordsMasterService;
@Override
public void saveLabourCheckItem(MovementCourse record) {
......@@ -90,6 +95,8 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
List<MovementCourse> movementCourseList = new ArrayList<>();
List<MovementCourseInfo> movementCourseInfoList = new ArrayList<>();
MovementRecordsMaster recordsMaster = this.movementRecordsMasterService.getById(id);
// 1.excel导入List<List<Object>> 中
CurrentRowHandler currentRowHandler = new CurrentRowHandler();
ExcelUtil.readBySax(inputStream, 0, currentRowHandler);
......@@ -99,6 +106,8 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
int column = currentRowHandler.rowRecords.get(0).size();
int sort = 0;
int trackCodeCount = 1;
boolean startExist = false;
boolean endExist = false;
for (int i = 0; i < column; i++) {
// 2.1 解析检查项目 获取 起止里程,曲线半径,超高,加宽,顺坡率,线路全长
......@@ -126,6 +135,25 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
BigDecimal startMileage = Convert.toBigDecimal(startMileageStr);
BigDecimal endMileage = Convert.toBigDecimal(endMileageStr);
if (startMileage.compareTo(endMileage) >= 0) {
throw JeecgBootException.error("开始里程不能大于等于结束里程");
}
if (startMileage.compareTo(recordsMaster.getStartingMileage()) < 0) {
throw JeecgBootException.error("开始里程小于当前批次开始里程");
} else if (startMileage.compareTo(recordsMaster.getStartingMileage()) == 0) {
startExist = true;
}
// 如果结束里程 < 外面的主表的结束里程
if (endMileage.compareTo(recordsMaster.getEndMileage()) > 0) {
throw JeecgBootException.error("结束里程大于当前批次结束里程");
} else if (endMileage.compareTo(recordsMaster.getEndMileage()) == 0) {
endExist = true;
}
// ② 获取曲线半径,可能为空,‘/’ 视为空
startIndex = startingAndRowDataStr.indexOf("曲线半径");
endIndex = startingAndRowDataStr.indexOf("m");
......@@ -276,6 +304,13 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
}
}
if (!startExist) {
throw JeecgBootException.error("起点里程要和批次的起点里程一致");
}
if (!endExist) {
throw JeecgBootException.error("终点里程要和批次的终点里程一致");
}
// 保存之前先删除
movementCourseService.lambdaUpdate().eq(MovementCourse::getMovementMasterId, id).remove();
movementCourseInfoService.lambdaUpdate().eq(MovementCourseInfo::getMovementMasterId, id).remove();
......
......@@ -10,14 +10,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.checkData.entity.MovementRecordsMaster;
import org.jeecg.modules.checkData.entity.RailInspectionEquipmentItem;
import org.jeecg.modules.checkData.entity.RailInspectionEquipmentItemDetail;
import org.jeecg.modules.checkData.mapper.MovementRecordsMasterMapper;
import org.jeecg.modules.checkData.mapper.RailInspectionEquipmentItemDetailMapper;
import org.jeecg.modules.checkData.mapper.RailInspectionEquipmentItemMapper;
import org.jeecg.modules.checkData.service.IRailInspectionEquipmentItemService;
import org.jeecg.modules.checkData.vo.RailInspectionEquipmentItemDetailVO;
import org.jeecg.modules.checkData.vo.RailInspectionEquipmentItemVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
......@@ -41,14 +44,21 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
@Resource
private RailInspectionEquipmentItemDetailMapper railInspectionEquipmentItemDetailMapper;
@Resource
private MovementRecordsMasterMapper movementRecordsMasterMapper;
@Override
public List<RailInspectionEquipmentItemVO> queryList(String masterId) {
return this.baseMapper.queryList(masterId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void uploadFile(String masterId, MultipartFile file) {
try {
MovementRecordsMaster recordsMaster = movementRecordsMasterMapper.selectById(masterId);
//读取第一个sheet页的数据
ExcelReader reader = ExcelUtil.getReader(file.getInputStream(), 0);
//读取Excel中所有的数据,以行保存
......@@ -57,15 +67,41 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
List<RailInspectionEquipmentItem> items = new ArrayList<>();
List<RailInspectionEquipmentItemDetail> itemDetails = new ArrayList<>();
boolean startExist = false;
boolean endExist = false;
int sort = 1;
for (int i = 0; i < rowRecords.size(); ) {
List<Object> cols = rowRecords.get(i);
String titleHeader = Convert.toStr(cols.get(13));
// 检查起始里程
BigDecimal courseStartingMileage = Convert.toBigDecimal(cols.get(3));
// 检查终点里程
BigDecimal courseEndMileage = Convert.toBigDecimal(cols.get(6));
if ((ObjectUtil.isNotEmpty(titleHeader) && titleHeader.contains("股道")) && (ObjectUtil.isNotEmpty(courseStartingMileage) && ObjectUtil.isNotEmpty(courseEndMileage))) {
// 如果开始里程 > 外面的主表的开始程则报错
BigDecimal currentStartMileage = courseStartingMileage.multiply(new BigDecimal(1000));
BigDecimal currentEntMileage = courseEndMileage.multiply(new BigDecimal(1000));
if (currentStartMileage.compareTo(currentEntMileage) >= 0) {
throw JeecgBootException.error("开始里程不能大于等于结束里程");
}
if (currentStartMileage.compareTo(recordsMaster.getStartingMileage()) < 0) {
throw JeecgBootException.error("开始里程小于当前批次开始里程");
} else if (currentStartMileage.compareTo(recordsMaster.getStartingMileage()) == 0) {
startExist = true;
}
// 如果结束里程 < 外面的主表的结束里程
if (currentEntMileage.compareTo(recordsMaster.getEndMileage()) > 0) {
throw JeecgBootException.error("结束里程大于当前批次结束里程");
} else if (currentEntMileage.compareTo(recordsMaster.getEndMileage()) == 0) {
endExist = true;
}
// 曲线半径
BigDecimal curveRadius = null;
if (ObjectUtil.isNotEmpty(cols.get(18).toString().trim())) {
......@@ -88,24 +124,26 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
item.setCurveRadius(curveRadius);
item.setSuperHigh(superHigh);
item.setSlopeRatio(slopeRatio);
item.setRailInspectionEquipmentId(masterId);
item.setDelFlag("0");
item.setSort(sort);
items.add(item);
int skipRow = analysisItemDetail(i, titleHeader, item.getId(), rowRecords, itemDetails);
// 读取item详情
int skipRow = readItemDetail(i, titleHeader, item.getId(), rowRecords, itemDetails);
i = i + skipRow;
sort++;
} else {
i++;
}
}
for (int i = 0; i < items.size(); i++) {
RailInspectionEquipmentItem item = items.get(i);
item.setSort(i + 1);
item.setDelFlag("0");
item.setRailInspectionEquipmentId(masterId);
if (!startExist) {
throw JeecgBootException.error("起点里程要和批次的起点里程一致");
}
if (!endExist) {
throw JeecgBootException.error("终点里程要和批次的起点里程一致");
}
// 项目信息-先删除,再导入
this.lambdaUpdate().eq(RailInspectionEquipmentItem::getRailInspectionEquipmentId, masterId).remove();
......@@ -113,17 +151,15 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
queryWrapper.eq(RailInspectionEquipmentItemDetail::getRailInspectionEquipmentId, masterId);
railInspectionEquipmentItemDetailMapper.delete(queryWrapper);
railInspectionEquipmentItemDetailMapper.insertBatch(itemDetails);
this.saveBatch(items);
} catch (IOException io) {
throw new JeecgBootException(io);
}
}
private int analysisItemDetail(int rows, String titleHeader, String itemId, List<List<Object>> rowRecords, List<RailInspectionEquipmentItemDetail> itemDetails) {
private int readItemDetail(int rows, String titleHeader, String itemId, List<List<Object>> rowRecords, List<RailInspectionEquipmentItemDetail> itemDetails) {
// 解析检查项目:1行:跳过2行不解析
......@@ -183,9 +219,9 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
// 解析轨向、高低及其它 1行:空白不解析
// 解析临修日期及内容 1行:空白不解析
// 如果是正线解析首轮检查负责人1行
// 如果是股道解析首轮检查负责人1行
int skipRow = 14;
if (titleHeader.contains("正线")) {
if (titleHeader.contains("股道")) {
skipRow = skipRow + 1;
}
......@@ -258,17 +294,7 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
@Override
public void updateRecord(RailInspectionEquipmentItem record) {
this.lambdaUpdate()
.set(RailInspectionEquipmentItem::getRemark, record.getRemark())
.set(RailInspectionEquipmentItem::getCourseStartingMileage, record.getCourseStartingMileage())
.set(RailInspectionEquipmentItem::getCourseEndMileage, record.getCourseEndMileage())
.set(RailInspectionEquipmentItem::getCurveRadius, record.getCurveRadius())
.set(RailInspectionEquipmentItem::getLongExtent, record.getLongExtent())
.set(RailInspectionEquipmentItem::getSlopeRatio, record.getSlopeRatio())
.set(RailInspectionEquipmentItem::getSuperHigh, record.getSuperHigh())
.set(RailInspectionEquipmentItem::getWiden, record.getWiden())
.eq(RailInspectionEquipmentItem::getId, record.getId())
.update();
this.lambdaUpdate().set(RailInspectionEquipmentItem::getRemark, record.getRemark()).set(RailInspectionEquipmentItem::getCourseStartingMileage, record.getCourseStartingMileage()).set(RailInspectionEquipmentItem::getCourseEndMileage, record.getCourseEndMileage()).set(RailInspectionEquipmentItem::getCurveRadius, record.getCurveRadius()).set(RailInspectionEquipmentItem::getLongExtent, record.getLongExtent()).set(RailInspectionEquipmentItem::getSlopeRatio, record.getSlopeRatio()).set(RailInspectionEquipmentItem::getSuperHigh, record.getSuperHigh()).set(RailInspectionEquipmentItem::getWiden, record.getWiden()).eq(RailInspectionEquipmentItem::getId, record.getId()).update();
// this.updateById(record);
}
......
......@@ -1676,10 +1676,13 @@ public class AnalysisAlgorithm {
// 计算超限:如果为null则计算,否则和单元绑定
if (null == transfinite) {
transfinite = this.labourCheckTransfinite(analysisBatch, movementCourseInfo);
} else {
// 如果超限不为空则添加进去
if (null != transfinite) {
unitDevice.put("labourCheckTransfinite", transfinite);
}
}
}
// 计算得分
this.labourCheckScore(analysisBatch, labourCheckList, unitDevice);
......
......@@ -8,8 +8,15 @@ import cn.hutool.core.util.ObjectUtil;
import org.jeecg.common.api.dto.PageSearch;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.checkData.entity.MovementRecordsMaster;
import org.jeecg.modules.checkData.entity.RecordsMasterCheck;
import org.jeecg.modules.checkData.mapper.MovementRecordsMasterMapper;
import org.jeecg.modules.checkData.service.IMovementRecordsMasterService;
import org.jeecg.modules.checkData.service.IRecordsMasterCheckService;
import org.jeecg.modules.deviceAsset.entity.*;
import org.jeecg.modules.deviceAsset.service.*;
import org.jeecg.modules.dynamicStaticAnalysis.service.IAnalysisBatchService;
import org.jeecg.modules.maintenanceWork.service.IWorkBatchService;
import org.jeecg.modules.subwayNetwork.dto.SubwaySectionEditDTO;
import org.jeecg.modules.subwayNetwork.dto.SubwaySectionQueryDTO;
import org.jeecg.modules.subwayNetwork.entity.SectionStationMap;
......@@ -56,7 +63,11 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
private ISignBoardManagementService signBoardManagementService;
@Resource
private ISleeperManagementService sleeperManagementService;
@Resource
private IMovementRecordsMasterService movementRecordsMasterService;
@Resource
private IRecordsMasterCheckService recordsMasterCheckService;
@AutoLog(value = "线路车站-地铁区间-分页列表查询")
@ApiOperation(value = "线路车站-地铁区间-分页列表查询", notes = "线路车站-地铁区间-分页列表查询")
......@@ -132,7 +143,12 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
Long signBoardCount = signBoardManagementService.lambdaQuery()
.eq(SignBoardManagement::getSectionId, id)
.count();
Long movementRecordsCount = movementRecordsMasterService.lambdaQuery()
.eq(MovementRecordsMaster::getSubwaySectionId, id)
.count();
Long recordsMasterCount = recordsMasterCheckService.lambdaQuery()
.eq(RecordsMasterCheck::getSubwaySectionId, id)
.count();
boolean isDel = false;
StringBuilder errorMsg = new StringBuilder("该区间下还有");
......@@ -168,6 +184,14 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
isDel = true;
errorMsg.append("轨行区标示牌:" + signBoardCount + "个");
}
if (movementRecordsCount != 0) {
isDel = true;
errorMsg.append("动静态几何数据关联:" + movementRecordsCount + "条");
}
if (recordsMasterCount != 0) {
isDel = true;
errorMsg.append("设备检查记录数据关联:" + recordsMasterCount + "条");
}
if (isDel) {
throw JeecgBootException.error(errorMsg.toString());
}
......@@ -223,6 +247,12 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
Long signBoardCount = signBoardManagementService.lambdaQuery()
.eq(SignBoardManagement::getSectionId, id)
.count();
Long movementRecordsCount = movementRecordsMasterService.lambdaQuery()
.eq(MovementRecordsMaster::getSubwaySectionId, id)
.count();
Long recordsMasterCount = recordsMasterCheckService.lambdaQuery()
.eq(RecordsMasterCheck::getSubwaySectionId, id)
.count();
boolean isDel = false;
if (railCount != 0) {
isDel = true;
......@@ -248,6 +278,12 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
if (signBoardCount != 0) {
isDel = true;
}
if (movementRecordsCount != 0) {
isDel = true;
}
if (recordsMasterCount != 0) {
isDel = true;
}
if (isDel) {
failNum++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment