Commit 9234c3b2 authored by hkl's avatar hkl

feat:1.调整程序

parent 3cc309c3
...@@ -30,9 +30,11 @@ public class AsyncTask implements AsyncConfigurer { ...@@ -30,9 +30,11 @@ public class AsyncTask implements AsyncConfigurer {
public Executor getAsyncExecutor() { public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 设置核心线程数 // 设置核心线程数
executor.setCorePoolSize(10); // CPU密集型(CPU密集型也叫计算密集型,指的是运算较多,cpu占用高,读/写I/O(硬盘/内存)较少):corePoolSize = CPU核数 + 1
// IO密集型(与cpu密集型相反,系统运作,大部分的状况是CPU在等I/O (硬盘/内存) 的读/写操作,此时CPU Loading并不高。):corePoolSize = CPU核数 * 2
executor.setCorePoolSize(8);
// 设置最大线程数 // 设置最大线程数
executor.setMaxPoolSize(100); executor.setMaxPoolSize(8);
// 线程池所使用的缓冲队列 // 线程池所使用的缓冲队列
executor.setQueueCapacity(10); executor.setQueueCapacity(10);
// 等待任务在关机时完成-- 表明等待所有线程执行完 // 等待任务在关机时完成-- 表明等待所有线程执行完
......
...@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiOperation;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.deviceAsset.dto.FastenerManagementDTO; import org.jeecg.modules.deviceAsset.dto.FastenerManagementDTO;
import org.jeecg.modules.deviceAsset.entity.FastenerManagement; import org.jeecg.modules.deviceAsset.entity.FastenerManagement;
import org.jeecg.modules.deviceAsset.service.IFastenerManagementService; import org.jeecg.modules.deviceAsset.service.IFastenerManagementService;
...@@ -46,6 +47,7 @@ public class FastenerManagementController extends JeecgController<FastenerManage ...@@ -46,6 +47,7 @@ public class FastenerManagementController extends JeecgController<FastenerManage
@PostMapping(value = "/edit") @PostMapping(value = "/edit")
public Result<String> edit(@RequestBody FastenerManagement fastenerManagement) { public Result<String> edit(@RequestBody FastenerManagement fastenerManagement) {
if (ObjectUtil.isEmpty(fastenerManagement.getId())) { if (ObjectUtil.isEmpty(fastenerManagement.getId())) {
fastenerManagement.setId(UUIDGenerator.generate());
this.service.save(fastenerManagement); this.service.save(fastenerManagement);
} else { } else {
this.service.updateById(fastenerManagement); this.service.updateById(fastenerManagement);
......
...@@ -8,6 +8,7 @@ import io.swagger.annotations.Api; ...@@ -8,6 +8,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.deviceAsset.dto.FastenerManagementDTO; import org.jeecg.modules.deviceAsset.dto.FastenerManagementDTO;
import org.jeecg.modules.deviceAsset.dto.SignBoardManagementDTO; import org.jeecg.modules.deviceAsset.dto.SignBoardManagementDTO;
import org.jeecg.modules.deviceAsset.entity.FastenerManagement; import org.jeecg.modules.deviceAsset.entity.FastenerManagement;
...@@ -50,6 +51,7 @@ public class SignBoardManagementController extends JeecgController<SignBoardMana ...@@ -50,6 +51,7 @@ public class SignBoardManagementController extends JeecgController<SignBoardMana
@PostMapping(value = "/edit") @PostMapping(value = "/edit")
public Result<String> edit(@RequestBody SignBoardManagement signBoardManagement) { public Result<String> edit(@RequestBody SignBoardManagement signBoardManagement) {
if (ObjectUtil.isEmpty(signBoardManagement.getId())) { if (ObjectUtil.isEmpty(signBoardManagement.getId())) {
signBoardManagement.setId(UUIDGenerator.generate());
this.service.save(signBoardManagement); this.service.save(signBoardManagement);
} else { } else {
this.service.updateById(signBoardManagement); this.service.updateById(signBoardManagement);
......
...@@ -8,6 +8,7 @@ import io.swagger.annotations.Api; ...@@ -8,6 +8,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.deviceAsset.dto.SignBoardManagementDTO; import org.jeecg.modules.deviceAsset.dto.SignBoardManagementDTO;
import org.jeecg.modules.deviceAsset.dto.SleeperManagementDTO; import org.jeecg.modules.deviceAsset.dto.SleeperManagementDTO;
import org.jeecg.modules.deviceAsset.entity.SignBoardManagement; import org.jeecg.modules.deviceAsset.entity.SignBoardManagement;
...@@ -51,6 +52,7 @@ public class SleeperManagementController extends JeecgController<SleeperManageme ...@@ -51,6 +52,7 @@ public class SleeperManagementController extends JeecgController<SleeperManageme
@PostMapping(value = "/edit") @PostMapping(value = "/edit")
public Result<String> edit(@RequestBody SleeperManagement sleeperManagement) { public Result<String> edit(@RequestBody SleeperManagement sleeperManagement) {
if (ObjectUtil.isEmpty(sleeperManagement.getId())) { if (ObjectUtil.isEmpty(sleeperManagement.getId())) {
sleeperManagement.setId(UUIDGenerator.generate());
this.service.save(sleeperManagement); this.service.save(sleeperManagement);
} else { } else {
this.service.updateById(sleeperManagement); this.service.updateById(sleeperManagement);
......
...@@ -12,6 +12,7 @@ import io.swagger.annotations.ApiParam; ...@@ -12,6 +12,7 @@ import io.swagger.annotations.ApiParam;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.deviceAsset.dto.TrackBedManagementDTO; import org.jeecg.modules.deviceAsset.dto.TrackBedManagementDTO;
import org.jeecg.modules.deviceAsset.entity.TrackBedManagement; import org.jeecg.modules.deviceAsset.entity.TrackBedManagement;
import org.jeecg.modules.deviceAsset.service.ITrackBedManagementService; import org.jeecg.modules.deviceAsset.service.ITrackBedManagementService;
...@@ -50,6 +51,7 @@ public class TrackBedManagementController extends JeecgController<TrackBedManage ...@@ -50,6 +51,7 @@ public class TrackBedManagementController extends JeecgController<TrackBedManage
@PostMapping(value = "/edit") @PostMapping(value = "/edit")
public Result<String> edit(@RequestBody TrackBedManagement trackBedManagement) { public Result<String> edit(@RequestBody TrackBedManagement trackBedManagement) {
if (ObjectUtil.isEmpty(trackBedManagement.getId())) { if (ObjectUtil.isEmpty(trackBedManagement.getId())) {
trackBedManagement.setId(UUIDGenerator.generate());
this.service.save(trackBedManagement); this.service.save(trackBedManagement);
} else { } else {
this.service.updateById(trackBedManagement); this.service.updateById(trackBedManagement);
......
...@@ -5,29 +5,28 @@ ...@@ -5,29 +5,28 @@
<select id="queryPageList" resultType="org.jeecg.modules.deviceAsset.vo.CurveManagementQueryVO"> <select id="queryPageList" resultType="org.jeecg.modules.deviceAsset.vo.CurveManagementQueryVO">
SELECT SELECT
t1.*, t1.*,
t2.light_rail_name, t2.light_rail_name,
t2.light_rail_id, t2.light_rail_id,
t2.section_name, t2.section_name,
(SELECT line_alias_name FROM t_sn_line_alias WHERE id = t1.line_alias_id limit 1) line_alias_name (SELECT line_alias_name FROM t_sn_line_alias WHERE id = t1.line_alias_id limit 1) line_alias_name
FROM FROM
t_da_curve_management t1 t_da_curve_management t1
LEFT JOIN t_sn_subway_section t2 ON t1.section_id = t2.id LEFT JOIN t_sn_subway_section t2 ON t1.section_id = t2.id
LEFT JOIN t_sn_light_rail t3 ON t2.light_rail_id = t3.id LEFT JOIN t_sn_light_rail t3 ON t2.light_rail_id = t3.id
<where> WHERE t3.status = 1
<if test="dto.curveCode != null and dto.curveCode != ''"> <if test="dto.curveCode != null and dto.curveCode != ''">
AND t1.curve_code like concat('%',#{dto.curveCode},'%') AND t1.curve_code like concat('%',#{dto.curveCode},'%')
</if> </if>
<if test="dto.sectionId != null and dto.sectionId != ''"> <if test="dto.sectionId != null and dto.sectionId != ''">
AND t1.section_id = #{dto.sectionId} AND t1.section_id = #{dto.sectionId}
</if> </if>
<if test="dto.lightRailId != null and dto.lightRailId != ''"> <if test="dto.lightRailId != null and dto.lightRailId != ''">
AND t2.light_rail_id = #{dto.lightRailId} AND t2.light_rail_id = #{dto.lightRailId}
</if> </if>
<if test="dto.lineAliasId != null and dto.lineAliasId != ''"> <if test="dto.lineAliasId != null and dto.lineAliasId != ''">
AND t1.line_alias_id = #{dto.lineAliasId} AND t1.line_alias_id = #{dto.lineAliasId}
</if> </if>
AND t3.status = 1 order by t1.line_alias_id,t1.curve_mileage_zh
</where>
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -27,58 +27,70 @@ ...@@ -27,58 +27,70 @@
</if> </if>
</select> </select>
<select id="getLineSpecialRail" resultType="java.util.Map"> <select id="getLineSpecialRail" resultType="java.util.Map">
SELECT SELECT id,
id, unitCode,
unitCode, deviceCode,
startMileage, startMileage,
endMileage, endMileage,
type ROUND((startMileage + endMileage) / 2, 3) centerMileage,
FROM type,
( typeName
SELECT FROM (
t1.id, <!--
t1.unit_code unitCode, SELECT t1.id,
t1.curve_mileage_zh startMileage, t1.unit_code unitCode,
t1.curve_mileage_hz endMileage, t1.rail_code deviceCode,
'曲线' type t1.starting_mileage startMileage,
FROM t1.end_mileage endMileage,
t_da_curve_management t1 1 type,
LEFT JOIN t_sn_train_station t2 ON t1.section_id = t1.id '钢轨' typeName
WHERE FROM t_da_rail_management t1
t1.line_alias_id = #{lineAliasId} WHERE t1.line_alias_id = #{lineAliasId}
AND t2.light_rail_id = #{lightRailId} AND t1.light_rail_id = #{lightRailId}
UNION ALL
-->
SELECT t1.id,
t1.unit_code unitCode,
t1.curve_code deviceCode,
t1.curve_mileage_zh startMileage,
t1.curve_mileage_hz endMileage,
2 type,
'曲线' typeName
FROM t_da_curve_management t1
LEFT JOIN t_sn_subway_section t2 ON t1.section_id = t2.id
WHERE t1.line_alias_id = #{lineAliasId}
AND t2.light_rail_id = #{lightRailId}
UNION ALL
SELECT t1.id,
t1.unit_code unitCode,
t1.vertical_curve_code deviceCode,
t1.starting_mileage startMileage,
t1.end_mileage endMileage,
3 type,
'竖曲线' typeName
FROM t_da_vertical_curve_management t1
LEFT JOIN t_sn_subway_section t2 ON t1.section_id = t2.id
WHERE t1.line_alias_id = #{lineAliasId}
AND t2.light_rail_id = #{lightRailId}
UNION ALL UNION ALL
SELECT
t1.id,
t1.unit_code unitCode,
t1.starting_mileage startMileage,
t1.end_mileage endMileage,
'竖曲线' type
FROM
t_da_vertical_curve_management t1
LEFT JOIN t_sn_train_station t2 ON t1.section_id = t1.id
WHERE
t1.line_alias_id = #{lineAliasId}
AND t2.light_rail_id = #{lightRailId}
UNION ALL SELECT t1.id,
SELECT t1.unit_code unitCode,
t1.id, t1.switch_code deviceCode,
t1.unit_code unitCode, t1.byroad_pre_mileage startMileage,
t1.byroad_pre_mileage startMileage, t1.byroad_end_mileage endMileage,
t1.byroad_end_mileage endMileage, 4 type,
'道岔' type '道岔' typeName
FROM FROM t_da_switch_management t1
t_da_switch_management t1 LEFT JOIN t_sn_section_station_map t2 ON t1.section_station_map_id = t2.id
LEFT JOIN t_sn_section_station_map t2 ON t1.section_station_map_id = t2.id LEFT JOIN t_sn_subway_section t3 ON t2.section_id = t3.id AND t3.line_alias_id = t1.line_alias_id
LEFT JOIN t_sn_subway_section t3 ON t2.section_id = t3.id WHERE t1.line_alias_id = #{lineAliasId}
AND t3.line_alias_id = t1.line_alias_id AND t2.light_rail_id = #{lightRailId}
WHERE ) t
t1.line_alias_id = #{lineAliasId} ORDER BY t.startMileage
AND t2.light_rail_id = #{lightRailId}
) t
ORDER BY
t.startMileage
</select> </select>
</mapper> </mapper>
...@@ -3,6 +3,7 @@ package org.jeecg.modules.deviceAsset.service.impl; ...@@ -3,6 +3,7 @@ package org.jeecg.modules.deviceAsset.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.deviceAsset.dto.CurveManagementDTO; import org.jeecg.modules.deviceAsset.dto.CurveManagementDTO;
import org.jeecg.modules.deviceAsset.entity.CurveManagement; import org.jeecg.modules.deviceAsset.entity.CurveManagement;
import org.jeecg.modules.deviceAsset.mapper.CurveManagementMapper; import org.jeecg.modules.deviceAsset.mapper.CurveManagementMapper;
...@@ -36,6 +37,7 @@ public class CurveManagementServiceImpl extends ServiceImpl<CurveManagementMappe ...@@ -36,6 +37,7 @@ public class CurveManagementServiceImpl extends ServiceImpl<CurveManagementMappe
@Override @Override
public void edit(CurveManagement curveManagement) { public void edit(CurveManagement curveManagement) {
if (ObjectUtil.isEmpty(curveManagement.getId())) { if (ObjectUtil.isEmpty(curveManagement.getId())) {
curveManagement.setId(UUIDGenerator.generate());
String utilCode = UnitCodeUtil.curveUnitCodeUtil(curveManagement.getLineAliasId()); String utilCode = UnitCodeUtil.curveUnitCodeUtil(curveManagement.getLineAliasId());
curveManagement.setUnitCode(utilCode); curveManagement.setUnitCode(utilCode);
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.util.UUIDGenerator; import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.config.AsyncTask;
import org.jeecg.modules.deviceAsset.dto.RailManagementDTO; import org.jeecg.modules.deviceAsset.dto.RailManagementDTO;
import org.jeecg.modules.deviceAsset.entity.RailManagement; import org.jeecg.modules.deviceAsset.entity.RailManagement;
import org.jeecg.modules.deviceAsset.mapper.RailManagementMapper; import org.jeecg.modules.deviceAsset.mapper.RailManagementMapper;
...@@ -46,6 +47,9 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper, ...@@ -46,6 +47,9 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper,
@Resource @Resource
private SubwaySectionMapper subwaySectionMapper; private SubwaySectionMapper subwaySectionMapper;
@Resource
private AsyncTask asyncTask;
@Override @Override
public Page<RailManagementVO> queryPageList(Page<RailManagementVO> pageData, RailManagementDTO dto) { public Page<RailManagementVO> queryPageList(Page<RailManagementVO> pageData, RailManagementDTO dto) {
return this.baseMapper.queryPageList(pageData, dto); return this.baseMapper.queryPageList(pageData, dto);
...@@ -70,7 +74,7 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper, ...@@ -70,7 +74,7 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper,
@Override @Override
public void intelligentGeneration(String lightRailId) { public void intelligentGeneration(String lightRailId) {
// 1.删除整条线的 // 1.删除整条线的
this.lambdaUpdate().eq(RailManagement::getLightRailId,lightRailId).remove(); this.lambdaUpdate().eq(RailManagement::getLightRailId, lightRailId).remove();
// 2.查询当前车站的上下行里程 // 2.查询当前车站的上下行里程
...@@ -119,7 +123,11 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper, ...@@ -119,7 +123,11 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper,
allRailList.addAll(downRailList); allRailList.addAll(downRailList);
this.saveBatch(allRailList); // 异步执行保存
asyncTask.getAsyncExecutor().execute(() -> {
this.saveBatch(allRailList);
});
} }
/** /**
...@@ -185,7 +193,7 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper, ...@@ -185,7 +193,7 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper,
* @param lineAliasId * @param lineAliasId
*/ */
private void generationCore(LightRail lightRail, List<RailManagement> allRailList, String lineAliasId) { private void generationCore(LightRail lightRail, List<RailManagement> allRailList, String lineAliasId) {
List<Map<String, Object>> lineSpecialRailList = this.getLineSpecialRail(lightRail.getId(),lineAliasId); List<Map<String, Object>> lineSpecialRailList = this.getLineSpecialRail(lightRail.getId(), lineAliasId);
BigDecimal lineStartMileage = BigDecimal.ZERO; BigDecimal lineStartMileage = BigDecimal.ZERO;
BigDecimal endMileage = lightRail.getUpLineMileage(); BigDecimal endMileage = lightRail.getUpLineMileage();
...@@ -269,6 +277,6 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper, ...@@ -269,6 +277,6 @@ public class RailManagementServiceImpl extends ServiceImpl<RailManagementMapper,
@Override @Override
public List<Map<String, Object>> getLineSpecialRail(String lightRailId, String lineAliasId) { public List<Map<String, Object>> getLineSpecialRail(String lightRailId, String lineAliasId) {
return this.baseMapper.getLineSpecialRail(lightRailId,lineAliasId); return this.baseMapper.getLineSpecialRail(lightRailId, lineAliasId);
} }
} }
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.api.dto.PageSearch; import org.jeecg.common.api.dto.PageSearch;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.deviceAsset.dto.SwitchManagementQueryDTO; import org.jeecg.modules.deviceAsset.dto.SwitchManagementQueryDTO;
import org.jeecg.modules.deviceAsset.entity.SwitchManagement; import org.jeecg.modules.deviceAsset.entity.SwitchManagement;
import org.jeecg.modules.deviceAsset.mapper.SwitchManagementMapper; import org.jeecg.modules.deviceAsset.mapper.SwitchManagementMapper;
...@@ -35,6 +36,7 @@ public class SwitchManagementServiceImpl extends ServiceImpl<SwitchManagementMap ...@@ -35,6 +36,7 @@ public class SwitchManagementServiceImpl extends ServiceImpl<SwitchManagementMap
@Override @Override
public void edit(SwitchManagement switchManagement) { public void edit(SwitchManagement switchManagement) {
if (ObjectUtil.isEmpty(switchManagement.getId())) { if (ObjectUtil.isEmpty(switchManagement.getId())) {
switchManagement.setId(UUIDGenerator.generate());
String utilCode = UnitCodeUtil.switchUnitCodeUtil(switchManagement.getLineAliasId()); String utilCode = UnitCodeUtil.switchUnitCodeUtil(switchManagement.getLineAliasId());
switchManagement.setUnitCode(utilCode); switchManagement.setUnitCode(utilCode);
this.save(switchManagement); this.save(switchManagement);
......
...@@ -2,6 +2,7 @@ package org.jeecg.modules.deviceAsset.service.impl; ...@@ -2,6 +2,7 @@ package org.jeecg.modules.deviceAsset.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.deviceAsset.dto.VerticalCurveManagementDTO; import org.jeecg.modules.deviceAsset.dto.VerticalCurveManagementDTO;
import org.jeecg.modules.deviceAsset.entity.VerticalCurveManagement; import org.jeecg.modules.deviceAsset.entity.VerticalCurveManagement;
import org.jeecg.modules.deviceAsset.mapper.VerticalCurveManagementMapper; import org.jeecg.modules.deviceAsset.mapper.VerticalCurveManagementMapper;
...@@ -30,6 +31,7 @@ public class VerticalCurveManagementServiceImpl extends ServiceImpl<VerticalCurv ...@@ -30,6 +31,7 @@ public class VerticalCurveManagementServiceImpl extends ServiceImpl<VerticalCurv
@Override @Override
public void edit(VerticalCurveManagement verticalCurveManagement) { public void edit(VerticalCurveManagement verticalCurveManagement) {
if (ObjectUtil.isEmpty(verticalCurveManagement.getId())) { if (ObjectUtil.isEmpty(verticalCurveManagement.getId())) {
verticalCurveManagement.setId(UUIDGenerator.generate());
String utilCode = UnitCodeUtil.verticalCurveUnitCodeUtil(verticalCurveManagement.getLineAliasId()); String utilCode = UnitCodeUtil.verticalCurveUnitCodeUtil(verticalCurveManagement.getLineAliasId());
verticalCurveManagement.setUnitCode(utilCode); verticalCurveManagement.setUnitCode(utilCode);
this.save(verticalCurveManagement); this.save(verticalCurveManagement);
......
...@@ -65,738 +65,6 @@ public class AnalysisAlgorithm { ...@@ -65,738 +65,6 @@ public class AnalysisAlgorithm {
@Resource @Resource
private IMovementOverReportService movementOverReportService; private IMovementOverReportService movementOverReportService;
/**
* 分析
*/
public void analysis2(String analysisBatchId) {
// 1.映射单元格
// 1.1 获取分析批次数据
AnalysisBatch analysisBatch = analysisBatchService.getById(analysisBatchId);
List<AnalysisBatchCheckDataMap> analysisBatchCheckDataMapList = analysisBatchCheckDataMapService.lambdaQuery()
.eq(AnalysisBatchCheckDataMap::getAnalysisBatchId, analysisBatchId)
.list();
// 1.2 按公里数正序排序所有1-钢轨,2-曲线,3-竖曲线,4-道岔
List<Map<String, Object>> unitDeviceList = analysisAlgorithmMapper.getUnitDevice(analysisBatch.getLightRailId(), analysisBatch.getLineAliasId());
Map<String, Map<String, Object>> unitDeviceTable = new TreeMap<>();
// 1.3 获取检查数据
for (AnalysisBatchCheckDataMap checkDataMap : analysisBatchCheckDataMapList) {
// 检查数据类型 1-人工静态检查 2-轨检仪静态检查 3-轨检车检查 4-添乘仪检查
if (1 == checkDataMap.getEkType()) {
List<MovementCheckDataUnitDeviceMap> movementCheckDataUnitDeviceMaps = new ArrayList<>();
// 1 获取人工检查数据
List<MovementCourse> checkItemList = movementCourseService.lambdaQuery()
.eq(MovementCourse::getMovementMasterId, checkDataMap.getEkId())
.list();
List<MovementCourseInfo> checkItemItemDetailList = movementCourseInfoService.lambdaQuery()
.eq(MovementCourseInfo::getMovementMasterId, checkDataMap.getEkId())
.list();
Map<String, List<MovementCourseInfo>> checkItemItemDetailMap = checkItemItemDetailList.stream()
.collect(Collectors.groupingBy(MovementCourseInfo::getMovementCourseId));
// 2 循环遍历检查项目比较【开始-结束】来映射关联关系
for (MovementCourse checkItem : checkItemList) {
// 2.1 这里可能出现开始时间比结束时间大的情况
BigDecimal checkItemStartingMileage = checkItem.getCourseStartingMileage();
BigDecimal checkItemEndMileage = checkItem.getCourseEndMileage();
if (checkItemStartingMileage.compareTo(checkItemEndMileage) > 0) {
checkItemStartingMileage = checkItem.getCourseEndMileage();
checkItemEndMileage = checkItem.getCourseStartingMileage();
}
// 2.2 单元设备中心里程落在检查项目【开始-结束】这个区间视为这个区间的单元设备
for (Map<String, Object> unitDevice : unitDeviceList) {
BigDecimal startMileage = Convert.toBigDecimal(unitDevice.get("startMileage"));
BigDecimal endMileage = Convert.toBigDecimal(unitDevice.get("endMileage"));
BigDecimal centerMileage = startMileage.add(endMileage).divide(new BigDecimal("2"), 3, RoundingMode.HALF_UP);
unitDevice.put("centerMileage", centerMileage);
// 2.2.1 命中检查项目
if (checkItemStartingMileage.compareTo(centerMileage) <= 0 && checkItemEndMileage.compareTo(centerMileage) > 0) {
List<MovementCourseInfo> movementCourseInfos = checkItemItemDetailMap.get(checkItem.getId());
if (ObjectUtil.isNotEmpty(movementCourseInfos)) {
// 1 处理3个格子映射问题
Map<String, List<MovementCourseInfo>> trackCodeMap = movementCourseInfos.stream()
.collect(Collectors.groupingBy(MovementCourseInfo::getTrackCode));
int size = trackCodeMap.size();
BigDecimal averageDec = checkItemEndMileage.subtract(checkItemStartingMileage).divide(new BigDecimal(size), 3, RoundingMode.HALF_UP);
List<String> trackCodes = trackCodeMap.keySet().stream()
.mapToInt(Integer::valueOf)
.sorted()
.mapToObj(String::valueOf)
.collect(Collectors.toList());
BigDecimal currentStartMileage = checkItemStartingMileage;
BigDecimal currentEndEndMileage = checkItemStartingMileage.add(averageDec);
for (String trackCode : trackCodes) {
// 2.命中格子
if (currentStartMileage.compareTo(centerMileage) <= 0 && currentEndEndMileage.compareTo(centerMileage) > 0) {
String unitCode = Convert.toStr(unitDevice.get("unitCode"));
// 人工检查数据
List<MovementCourseInfo> labourCheck = trackCodeMap.get(trackCode);
unitDevice.put("labourCheck", labourCheck);
unitDeviceTable.putIfAbsent(unitCode, unitDevice);
// 保存单元-测点数据
for (MovementCourseInfo movementCourseInfo : labourCheck) {
MovementCheckDataUnitDeviceMap movementCheckDataUnitDeviceMap = new MovementCheckDataUnitDeviceMap();
movementCheckDataUnitDeviceMap.setId(UUIDGenerator.generate());
movementCheckDataUnitDeviceMap.setCheckType(1);// 人工检查
movementCheckDataUnitDeviceMap.setUnitId(Convert.toStr(unitDevice.get("id")));
movementCheckDataUnitDeviceMap.setUnitCode(Convert.toStr(unitDevice.get("unitCode")));
movementCheckDataUnitDeviceMap.setUnitType(Convert.toInt(unitDevice.get("type")));
movementCheckDataUnitDeviceMap.setUnitTypeName(Convert.toStr(unitDevice.get("typeName")));
movementCheckDataUnitDeviceMap.setUnitStartingMileage(Convert.toBigDecimal(unitDevice.get("startMileage")));
movementCheckDataUnitDeviceMap.setUnitCenterMileage(centerMileage);
movementCheckDataUnitDeviceMap.setUnitEndMileage(Convert.toBigDecimal(unitDevice.get("endMileage")));
movementCheckDataUnitDeviceMap.setCheckId(checkItem.getMovementMasterId());
movementCheckDataUnitDeviceMap.setCheckItemId(checkItem.getId());
movementCheckDataUnitDeviceMap.setCheckItemStartingMileage(checkItem.getCourseStartingMileage());
movementCheckDataUnitDeviceMap.setCheckItemEndMileage(checkItem.getCourseEndMileage());
movementCheckDataUnitDeviceMap.setCheckItemText(movementCourseInfo.getTrackCode());
movementCheckDataUnitDeviceMap.setCheckDetailId(movementCourseInfo.getId());
movementCheckDataUnitDeviceMap.setCheckDetailStartingMileage(currentStartMileage);
movementCheckDataUnitDeviceMap.setCheckDetailEndMileage(currentEndEndMileage);
movementCheckDataUnitDeviceMap.setTrackGauge(movementCourseInfo.getTrackGauge());
movementCheckDataUnitDeviceMap.setLevel(movementCourseInfo.getLevel());
movementCheckDataUnitDeviceMap.setTriangularPit(movementCourseInfo.getTriangularPit());
movementCheckDataUnitDeviceMap.setMeasurePoint(movementCourseInfo.getMeasurePoint());
movementCheckDataUnitDeviceMap.setDirection(movementCourseInfo.getDirection());
movementCheckDataUnitDeviceMap.setHeight(movementCourseInfo.getHeight());
movementCheckDataUnitDeviceMap.setStructure(movementCourseInfo.getStructure());
movementCheckDataUnitDeviceMap.setRectification(movementCourseInfo.getRectification());
movementCheckDataUnitDeviceMaps.add(movementCheckDataUnitDeviceMap);
}
}
currentStartMileage = currentEndEndMileage;
currentEndEndMileage = currentEndEndMileage.add(averageDec);
}
}
}
}
}
// 保存之前先删除
movementCheckDataUnitDeviceMapService.lambdaUpdate().eq(MovementCheckDataUnitDeviceMap::getCheckId, checkDataMap.getEkId()).remove();
movementCheckDataUnitDeviceMapService.saveBatch(movementCheckDataUnitDeviceMaps);
} else if (2 == checkDataMap.getEkType()) {
List<MovementCheckDataUnitDeviceMap> movementCheckDataUnitDeviceMaps = new ArrayList<>();
// 1 获取轨检仪静态检查
List<RailInspectionEquipmentItem> checkItemList = railInspectionEquipmentItemService.lambdaQuery()
.eq(RailInspectionEquipmentItem::getRailInspectionEquipmentId, checkDataMap.getEkId())
.list();
List<RailInspectionEquipmentItemDetail> checkItemItemDetailList = railInspectionEquipmentItemDetailService.lambdaQuery()
.eq(RailInspectionEquipmentItemDetail::getRailInspectionEquipmentId, checkDataMap.getEkId())
.list();
Map<String, List<RailInspectionEquipmentItemDetail>> checkItemItemDetailMap = checkItemItemDetailList.stream()
.collect(Collectors.groupingBy(RailInspectionEquipmentItemDetail::getRailInspectionEquipmentItemId));
// 2 循环遍历检查项目比较【开始-结束】来映射关联关系
for (RailInspectionEquipmentItem checkItem : checkItemList) {
// 2.1 这里可能出现开始时间比结束时间大的情况
BigDecimal checkItemStartingMileage = checkItem.getCourseStartingMileage();
BigDecimal checkItemEndMileage = checkItem.getCourseEndMileage();
if (checkItemStartingMileage.compareTo(checkItemEndMileage) > 0) {
checkItemStartingMileage = checkItem.getCourseEndMileage();
checkItemEndMileage = checkItem.getCourseStartingMileage();
}
// 2.2 单元设备中心里程落在检查项目【开始-结束】这个区间视为这个区间的单元设备
for (Map<String, Object> unitDevice : unitDeviceList) {
BigDecimal startMileage = Convert.toBigDecimal(unitDevice.get("startMileage"));
BigDecimal endMileage = Convert.toBigDecimal(unitDevice.get("endMileage"));
BigDecimal centerMileage = startMileage.add(endMileage).divide(new BigDecimal("2"), 3, RoundingMode.HALF_UP);
unitDevice.put("centerMileage", centerMileage);
// 2.2.1 命中检查项目
if (checkItemStartingMileage.compareTo(centerMileage) <= 0 && checkItemEndMileage.compareTo(centerMileage) > 0) {
List<RailInspectionEquipmentItemDetail> movementCourseInfos = checkItemItemDetailMap.get(checkItem.getId());
for (RailInspectionEquipmentItemDetail info : movementCourseInfos) {
String checkItemKey = info.getCheckItem();
BigDecimal bigDecimal = new BigDecimal(checkItemKey);
BigDecimal multiply = bigDecimal.multiply(new BigDecimal("1000"));
info.setCheckItem(String.valueOf(multiply.intValue()));
}
if (ObjectUtil.isNotEmpty(movementCourseInfos)) {
// 1.处理3个格子映射问题
Map<String, List<RailInspectionEquipmentItemDetail>> trackCodeMap = movementCourseInfos.stream()
.collect(Collectors.groupingBy(RailInspectionEquipmentItemDetail::getCheckItem));
int size = trackCodeMap.size();
BigDecimal averageDec = checkItemEndMileage.subtract(checkItemStartingMileage).divide(new BigDecimal(size), 3, RoundingMode.HALF_UP);
List<String> trackCodes = trackCodeMap.keySet().stream()
.mapToInt(Integer::valueOf)
.sorted()
.mapToObj(String::valueOf)
.collect(Collectors.toList());
BigDecimal currentStartMileage = checkItemStartingMileage;
BigDecimal currentEndEndMileage = checkItemStartingMileage.add(averageDec);
for (String trackCode : trackCodes) {
// 2.命中格子
if (currentStartMileage.compareTo(centerMileage) <= 0 && currentEndEndMileage.compareTo(centerMileage) > 0) {
String unitCode = Convert.toStr(unitDevice.get("unitCode"));
// 轨检仪检查数据
List<RailInspectionEquipmentItemDetail> railDevice = trackCodeMap.get(trackCode);
unitDevice.put("railDevice", railDevice);
unitDeviceTable.putIfAbsent(unitCode, unitDevice);
// 保存单元-测点数据
for (RailInspectionEquipmentItemDetail movementCourseInfo : railDevice) {
MovementCheckDataUnitDeviceMap movementCheckDataUnitDeviceMap = new MovementCheckDataUnitDeviceMap();
movementCheckDataUnitDeviceMap.setId(UUIDGenerator.generate());
movementCheckDataUnitDeviceMap.setCheckType(2);// 2-轨检仪静态检查
movementCheckDataUnitDeviceMap.setUnitId(Convert.toStr(unitDevice.get("id")));
movementCheckDataUnitDeviceMap.setUnitCode(Convert.toStr(unitDevice.get("unitCode")));
movementCheckDataUnitDeviceMap.setUnitType(Convert.toInt(unitDevice.get("type")));
movementCheckDataUnitDeviceMap.setUnitTypeName(Convert.toStr(unitDevice.get("typeName")));
movementCheckDataUnitDeviceMap.setUnitStartingMileage(Convert.toBigDecimal(unitDevice.get("startMileage")));
movementCheckDataUnitDeviceMap.setUnitCenterMileage(centerMileage);
movementCheckDataUnitDeviceMap.setUnitEndMileage(Convert.toBigDecimal(unitDevice.get("endMileage")));
movementCheckDataUnitDeviceMap.setCheckId(checkItem.getRailInspectionEquipmentId());
movementCheckDataUnitDeviceMap.setCheckItemId(checkItem.getRailInspectionEquipmentId());
movementCheckDataUnitDeviceMap.setCheckItemStartingMileage(checkItem.getCourseStartingMileage());
movementCheckDataUnitDeviceMap.setCheckItemEndMileage(checkItem.getCourseEndMileage());
movementCheckDataUnitDeviceMap.setCheckItemText(movementCourseInfo.getCheckItem());
movementCheckDataUnitDeviceMap.setCheckDetailId(movementCourseInfo.getId());
movementCheckDataUnitDeviceMap.setCheckDetailStartingMileage(currentStartMileage);
movementCheckDataUnitDeviceMap.setCheckDetailEndMileage(currentEndEndMileage);
movementCheckDataUnitDeviceMap.setTrackGauge(movementCourseInfo.getTrackGauge());
movementCheckDataUnitDeviceMap.setLevel(movementCourseInfo.getLevel());
movementCheckDataUnitDeviceMap.setTriangularPit(movementCourseInfo.getTriangularPit());
movementCheckDataUnitDeviceMap.setMeasurePoint(movementCourseInfo.getMeasurePoint());
movementCheckDataUnitDeviceMaps.add(movementCheckDataUnitDeviceMap);
}
}
currentStartMileage = currentEndEndMileage;
currentEndEndMileage = currentEndEndMileage.add(averageDec);
}
}
}
}
}
// 保存之前先删除
movementCheckDataUnitDeviceMapService.lambdaUpdate().eq(MovementCheckDataUnitDeviceMap::getCheckId, checkDataMap.getEkId()).remove();
movementCheckDataUnitDeviceMapService.saveBatch(movementCheckDataUnitDeviceMaps);
} else if (3 == checkDataMap.getEkType()) {
} else {
}
}
// 2.计算超限&计算评分
if (ObjectUtil.isNotEmpty(unitDeviceTable)) {
for (Map.Entry<String, Map<String, Object>> entry : unitDeviceTable.entrySet()) {
Map<String, Object> unitDevice = entry.getValue();
// 1.计算超限
List<MovementCourseInfo> labourCheckList = (List<MovementCourseInfo>) unitDevice.get("labourCheck");
if (ObjectUtil.isNotEmpty(labourCheckList)) {
// 1.计算超限
JSONObject allowValue = JSONObject.parseObject(analysisBatch.getAllowValue());
Integer bigTrackGauge = Convert.toInt(allowValue.get("bigTrackGauge")); // 大轨距
Integer smallTrackGauge = Convert.toInt(allowValue.get("smallTrackGauge")); // 小轨距
Integer allowLevel = Convert.toInt(allowValue.get("level")); // 水平
Integer allowTriangularPit = Convert.toInt(allowValue.get("triangularPit")); // 三角坑
Integer allowHeight = Convert.toInt(allowValue.get("height")); // 高低
Integer allowDirection = Convert.toInt(allowValue.get("direction")); // 轨向
boolean isTransfinite = false;
String allowValueSave = "";
String measurePointValue = "";
String transfiniteType = "";
for (MovementCourseInfo movementCourseInfo : labourCheckList) {
// 轨距
Integer trackGauge = Convert.toInt(movementCourseInfo.getTrackGauge());
if (ObjectUtil.isNotEmpty(trackGauge)) {
if (trackGauge > bigTrackGauge) {
isTransfinite = true;
allowValueSave = bigTrackGauge.toString();
measurePointValue = trackGauge.toString();
transfiniteType = "大轨距";
break;
} else if (trackGauge < smallTrackGauge) {
isTransfinite = true;
allowValueSave = smallTrackGauge.toString();
measurePointValue = trackGauge.toString();
transfiniteType = "小轨距";
break;
}
}
// 水平
Integer level = Convert.toInt(movementCourseInfo.getLevel());
if (ObjectUtil.isNotEmpty(level)) {
if (level > allowLevel) {
isTransfinite = true;
allowValueSave = allowLevel.toString();
measurePointValue = level.toString();
transfiniteType = "水平";
break;
}
}
//三角坑
Integer triangularPit = Convert.toInt(movementCourseInfo.getTriangularPit());
if (ObjectUtil.isNotEmpty(triangularPit)) {
if (triangularPit > allowTriangularPit) {
isTransfinite = true;
allowValueSave = allowTriangularPit.toString();
measurePointValue = triangularPit.toString();
transfiniteType = "三角坑";
break;
}
}
// 高低
Integer height = Convert.toInt(movementCourseInfo.getHeight());
if (ObjectUtil.isNotEmpty(height)) {
if (height > allowHeight) {
isTransfinite = true;
allowValueSave = allowHeight.toString();
measurePointValue = height.toString();
transfiniteType = "高低";
break;
}
}
// 轨向
Integer direction = Convert.toInt(movementCourseInfo.getDirection());
if (ObjectUtil.isNotEmpty(direction)) {
if (direction > allowDirection) {
isTransfinite = true;
allowValueSave = allowDirection.toString();
measurePointValue = direction.toString();
transfiniteType = "轨向";
break;
}
}
}
Integer isWork = 1;
String reasonLabel = "";
JSONArray dispatchingList = JSONArray.parseArray(analysisBatch.getDispatching());
for (Object obj : dispatchingList) {
JSONObject dispatching = (JSONObject) obj;
String reasonValue = String.valueOf(dispatching.get("reasonValue"));
reasonLabel = String.valueOf(dispatching.get("reasonLabel"));
if ("static_limit".equals(reasonValue)) {
Boolean isWorkTemp = Boolean.valueOf(dispatching.get("isWork").toString());
if (isWorkTemp) {
isWork = 1;
} else {
isWork = 0;
}
}
}
// 超限
if (isTransfinite) {
AnalysisBatchUnitDeviceTransfinite analysisBatchUnitDeviceTransfinite = new AnalysisBatchUnitDeviceTransfinite();
analysisBatchUnitDeviceTransfinite.setId(UUIDGenerator.generate());
analysisBatchUnitDeviceTransfinite.setTransfiniteGrade(1);
analysisBatchUnitDeviceTransfinite.setTransfiniteGradeName(reasonLabel);
analysisBatchUnitDeviceTransfinite.setTransfiniteType(transfiniteType);
analysisBatchUnitDeviceTransfinite.setAllowValue(allowValueSave);
analysisBatchUnitDeviceTransfinite.setMeasurePointValue(measurePointValue);
analysisBatchUnitDeviceTransfinite.setIsWork(isWork);
unitDevice.put("transfinite", analysisBatchUnitDeviceTransfinite);
}
}
// 2.计算评分
if (ObjectUtil.isNotEmpty(labourCheckList)) {
Integer analysisType = analysisBatch.getAnalysisType();
Integer finalTrackGauge = null;
Integer finalLevel = null;
Integer finalTriangularPit = null;
Integer finalHeight = null;
Integer finalDirection = null;
int sumTrackGauge = 0;
int sumLevel = 0;
int sumTriangularPit = 0;
int sumHeight = 0;
int sumDirection = 0;
int maxTrackGauge = 0;
int maxLevel = 0;
int maxTriangularPit = 0;
int maxHeight = 0;
int maxDirection = 0;
int avgTrackGauge = 0;
int avgLevel = 0;
int avgTriangularPit = 0;
int avgHeight = 0;
int avgDirection = 0;
int trackGaugeSize = 0;
int levelSize = 0;
int triangularPitSize = 0;
int heightSize = 0;
int directionSize = 0;
// 循环计算均值/峰值
for (MovementCourseInfo movementCourseInfo : labourCheckList) {
// 轨距
Integer trackGauge = Convert.toInt(movementCourseInfo.getTrackGauge());
if (ObjectUtil.isNotEmpty(trackGauge)) {
trackGauge = Math.abs(trackGauge);
// 均值
sumTrackGauge = sumTrackGauge + trackGauge;
trackGaugeSize++;
avgTrackGauge = sumTrackGauge / trackGaugeSize;
// 峰值
if (trackGauge > maxTrackGauge) {
maxTrackGauge = trackGauge;
}
if (1 == analysisType) {
finalTrackGauge = avgTrackGauge;
} else {
finalTrackGauge = maxLevel;
}
}
// 水平
Integer level = Convert.toInt(movementCourseInfo.getLevel());
if (ObjectUtil.isNotEmpty(level)) {
level = Math.abs(level);
// 均值
sumLevel = sumLevel + level;
levelSize++;
avgLevel = sumLevel / levelSize;
// 峰值
if (level > maxLevel) {
maxLevel = level;
}
if (1 == analysisType) {
finalLevel = avgLevel;
} else {
finalLevel = maxLevel;
}
}
//三角坑
Integer triangularPit = Convert.toInt(movementCourseInfo.getTriangularPit());
if (ObjectUtil.isNotEmpty(triangularPit)) {
triangularPit = Math.abs(triangularPit);
// 均值
sumTriangularPit = sumTriangularPit + triangularPit;
triangularPitSize++;
avgTriangularPit = sumTriangularPit / triangularPitSize;
// 峰值
if (triangularPit > maxTriangularPit) {
maxTriangularPit = triangularPit;
}
if (1 == analysisType) {
finalTriangularPit = avgTriangularPit;
} else {
finalTriangularPit = maxTriangularPit;
}
}
// 高低
Integer height = Convert.toInt(movementCourseInfo.getHeight());
if (ObjectUtil.isNotEmpty(height)) {
height = Math.abs(height);
// 均值
sumHeight = sumHeight + height;
heightSize++;
avgHeight = sumHeight / heightSize;
// 峰值
if (height > maxHeight) {
maxHeight = height;
}
if (1 == analysisType) {
finalHeight = avgHeight;
} else {
finalHeight = maxHeight;
}
}
// 轨向
Integer direction = Convert.toInt(movementCourseInfo.getDirection());
if (ObjectUtil.isNotEmpty(direction)) {
direction = Math.abs(direction);
// 均值
sumDirection = sumDirection + direction;
directionSize++;
avgDirection = sumDirection / directionSize;
// 峰值
if (direction > maxDirection) {
maxDirection = direction;
}
if (1 == analysisType) {
finalDirection = avgDirection;
} else {
finalDirection = maxDirection;
}
}
}
ConfigLabourCheck configLabour = configLabourCheckService.lambdaQuery()
.eq(ConfigLabourCheck::getSpeedMax, analysisBatch.getSpeedMax())
.eq(ConfigLabourCheck::getSpeedMin, analysisBatch.getSpeedMin())
.eq(ConfigLabourCheck::getDelFlag, "0")
.last("limit 1")
.one();
// 1-钢轨,2-曲线,3-竖曲线,4-道岔
Integer type = Convert.toInt(unitDevice.get("type"));
JSONObject jsonObject = null;
if (type == 1) {
jsonObject = JSONObject.parseObject(configLabour.getRail());
} else if (type == 2) {
jsonObject = JSONObject.parseObject(configLabour.getCurve());
} else if (type == 3) {
jsonObject = JSONObject.parseObject(configLabour.getVerticalCurve());
} else if (type == 4) {
jsonObject = JSONObject.parseObject(configLabour.getRailSwitch());
}
BigDecimal trackGaugeWeightValues = jsonObject.getBigDecimal("trackGauge");
BigDecimal directionWeightValues = jsonObject.getBigDecimal("direction");
BigDecimal triangularPitWeightValues = jsonObject.getBigDecimal("triangularPit");
BigDecimal heightWeightValues = jsonObject.getBigDecimal("height");
BigDecimal levelWeightValues = jsonObject.getBigDecimal("level");
// 总单元得分
BigDecimal sumUnitScore = null;
// 轨距单元得分
BigDecimal trackGaugeUnitScore;
List<AnalysisBatchUnitDevicePointScore> scoreList = new ArrayList<>();
if (ObjectUtil.isNotEmpty(finalTrackGauge)) {
trackGaugeUnitScore = trackGaugeWeightValues.multiply(new BigDecimal(finalTrackGauge.toString()));
if (sumUnitScore == null) {
sumUnitScore = BigDecimal.ZERO;
}
sumUnitScore = sumUnitScore.add(trackGaugeUnitScore);
AnalysisBatchUnitDevicePointScore score = new AnalysisBatchUnitDevicePointScore();
score.setId(UUIDGenerator.generate());
score.setAnalysisType(analysisType);
score.setSpeedMax(analysisBatch.getSpeedMax());
score.setSpeedMin(analysisBatch.getSpeedMin());
score.setAnalysisBatchId(analysisBatch.getId());
score.setAnalysisBatchCode(analysisBatch.getAnalysisBatchCode());
score.setAnalysisBatchUnitDeviceId("轨距");
score.setPointValue(finalTrackGauge);
score.setWeightValues(trackGaugeWeightValues);
score.setPointScore(trackGaugeUnitScore);
scoreList.add(score);
}
// 轨向单元得分
BigDecimal directionGaugeUnitScore = null;
if (ObjectUtil.isNotEmpty(finalDirection)) {
directionGaugeUnitScore = directionWeightValues.multiply(new BigDecimal(finalDirection.toString()));
if (sumUnitScore == null) {
sumUnitScore = BigDecimal.ZERO;
}
sumUnitScore = sumUnitScore.add(directionGaugeUnitScore);
AnalysisBatchUnitDevicePointScore score = new AnalysisBatchUnitDevicePointScore();
score.setId(UUIDGenerator.generate());
score.setAnalysisType(analysisType);
score.setSpeedMax(analysisBatch.getSpeedMax());
score.setSpeedMin(analysisBatch.getSpeedMin());
score.setAnalysisBatchId(analysisBatch.getId());
score.setAnalysisBatchCode(analysisBatch.getAnalysisBatchCode());
score.setAnalysisBatchUnitDeviceId("轨向");
score.setPointValue(finalDirection);
score.setWeightValues(directionGaugeUnitScore);
score.setPointScore(directionGaugeUnitScore);
scoreList.add(score);
}
// 三角坑单元得分
BigDecimal triangularPitGaugeUnitScore;
if (ObjectUtil.isNotEmpty(finalTriangularPit)) {
triangularPitGaugeUnitScore = triangularPitWeightValues.multiply(new BigDecimal(finalTriangularPit.toString()));
if (sumUnitScore == null) {
sumUnitScore = BigDecimal.ZERO;
}
sumUnitScore = sumUnitScore.add(triangularPitGaugeUnitScore);
AnalysisBatchUnitDevicePointScore score = new AnalysisBatchUnitDevicePointScore();
score.setId(UUIDGenerator.generate());
score.setAnalysisType(analysisType);
score.setSpeedMax(analysisBatch.getSpeedMax());
score.setSpeedMin(analysisBatch.getSpeedMin());
score.setAnalysisBatchId(analysisBatch.getId());
score.setAnalysisBatchCode(analysisBatch.getAnalysisBatchCode());
score.setAnalysisBatchUnitDeviceId("三角坑");
score.setPointValue(finalTriangularPit);
score.setWeightValues(triangularPitWeightValues);
score.setPointScore(triangularPitGaugeUnitScore);
scoreList.add(score);
}
// 高低单元得分
BigDecimal heightGaugeUnitScore;
if (ObjectUtil.isNotEmpty(finalHeight)) {
heightGaugeUnitScore = heightWeightValues.multiply(new BigDecimal(finalHeight.toString()));
if (sumUnitScore == null) {
sumUnitScore = BigDecimal.ZERO;
}
sumUnitScore = sumUnitScore.add(heightGaugeUnitScore);
AnalysisBatchUnitDevicePointScore score = new AnalysisBatchUnitDevicePointScore();
score.setId(UUIDGenerator.generate());
score.setAnalysisType(analysisType);
score.setSpeedMax(analysisBatch.getSpeedMax());
score.setSpeedMin(analysisBatch.getSpeedMin());
score.setAnalysisBatchId(analysisBatch.getId());
score.setAnalysisBatchCode(analysisBatch.getAnalysisBatchCode());
score.setAnalysisBatchUnitDeviceId("高低");
score.setPointValue(finalHeight);
score.setWeightValues(heightWeightValues);
score.setPointScore(heightGaugeUnitScore);
scoreList.add(score);
}
// 水平单元得分
BigDecimal levelUnitScore;
if (ObjectUtil.isNotEmpty(finalLevel)) {
levelUnitScore = levelWeightValues.multiply(new BigDecimal(finalLevel.toString()));
if (sumUnitScore == null) {
sumUnitScore = BigDecimal.ZERO;
}
sumUnitScore = sumUnitScore.add(levelUnitScore);
AnalysisBatchUnitDevicePointScore score = new AnalysisBatchUnitDevicePointScore();
score.setId(UUIDGenerator.generate());
score.setAnalysisType(analysisType);
score.setSpeedMax(analysisBatch.getSpeedMax());
score.setSpeedMin(analysisBatch.getSpeedMin());
score.setAnalysisBatchId(analysisBatch.getId());
score.setAnalysisBatchCode(analysisBatch.getAnalysisBatchCode());
score.setAnalysisBatchUnitDeviceId("高低");
score.setPointValue(finalLevel);
score.setWeightValues(levelWeightValues);
score.setPointScore(levelUnitScore);
scoreList.add(score);
}
unitDevice.put("labourCheckScore", sumUnitScore);
unitDevice.put("labourCheckScoreList", scoreList);
}
}
}
// 3.保存算法结果
if (ObjectUtil.isNotEmpty(unitDeviceTable)) {
List<AnalysisBatchUnitDevice> analysisBatchUnitDevices = new ArrayList<>();
for (Map.Entry<String, Map<String, Object>> entry : unitDeviceTable.entrySet()) {
Map<String, Object> unitDevice = entry.getValue();
AnalysisBatchUnitDevice analysisBatchUnitDevice = new AnalysisBatchUnitDevice();
analysisBatchUnitDevice.setId(UUIDGenerator.generate());
analysisBatchUnitDevice.setAnalysisBatchId(analysisBatch.getId());
analysisBatchUnitDevice.setAnalysisBatchCode(analysisBatch.getAnalysisBatchCode());
analysisBatchUnitDevice.setUnitId(Convert.toStr(unitDevice.get("id")));
analysisBatchUnitDevice.setUnitCode(Convert.toStr(unitDevice.get("unitCode")));
analysisBatchUnitDevice.setUnitDeviceCode(Convert.toStr(unitDevice.get("deviceCode")));
analysisBatchUnitDevice.setUnitType(Convert.toInt(unitDevice.get("type")));
analysisBatchUnitDevice.setUnitTypeName(Convert.toStr(unitDevice.get("typeName")));
analysisBatchUnitDevice.setUnitStartingMileage(Convert.toBigDecimal(unitDevice.get("startMileage")));
analysisBatchUnitDevice.setUnitCenterMileage(Convert.toBigDecimal(unitDevice.get("centerMileage")));
analysisBatchUnitDevice.setUnitEndMileage(Convert.toBigDecimal(unitDevice.get("endMileage")));
Object labourCheckData = unitDevice.get("labourCheck");
if (ObjectUtil.isNotEmpty(labourCheckData)) {
analysisBatchUnitDevice.setLabourCheck(1);
} else {
analysisBatchUnitDevice.setLabourCheck(0);
}
BigDecimal labourCheckScore = (BigDecimal) unitDevice.get("labourCheckScore");
// -1代表未评分
if (labourCheckScore == null) {
analysisBatchUnitDevice.setLabourCheckScore(new BigDecimal("-1"));
} else {
analysisBatchUnitDevice.setLabourCheckScore(labourCheckScore);
// 先写死
analysisBatchUnitDevice.setUnitScore(labourCheckScore);
analysisBatchUnitDevice.setUnitScoreLevel(3);
}
Object railDeviceData = unitDevice.get("railDevice");
if (ObjectUtil.isNotEmpty(railDeviceData)) {
analysisBatchUnitDevice.setRailDeviceCheck(1);
} else {
analysisBatchUnitDevice.setRailDeviceCheck(0);
}
analysisBatchUnitDevices.add(analysisBatchUnitDevice);
// 保存超限
Object transfiniteData = unitDevice.get("transfinite");
if (ObjectUtil.isNotEmpty(transfiniteData)) {
AnalysisBatchUnitDeviceTransfinite transfinite = (AnalysisBatchUnitDeviceTransfinite) transfiniteData;
transfinite.setAnalysisBatchUnitDeviceId(analysisBatchUnitDevice.getId());
transfinite.setAnalysisBatchId(analysisBatchUnitDevice.getAnalysisBatchId());
transfinite.setAnalysisBatchCode(analysisBatchUnitDevice.getAnalysisBatchCode());
transfinite.setUnitId(analysisBatchUnitDevice.getUnitId());
transfinite.setUnitCode(analysisBatchUnitDevice.getUnitCode());
transfinite.setUnitType(analysisBatchUnitDevice.getUnitType());
transfinite.setUnitTypeName(analysisBatchUnitDevice.getUnitTypeName());
analysisBatchUnitDeviceTransfiniteService.lambdaUpdate().eq(AnalysisBatchUnitDeviceTransfinite::getAnalysisBatchUnitDeviceId, analysisBatchUnitDevice.getId()).remove();
analysisBatchUnitDeviceTransfiniteService.save(transfinite);
}
// 保存得分
List<AnalysisBatchUnitDevicePointScore> scoreList = (List<AnalysisBatchUnitDevicePointScore>) unitDevice.get("labourCheckScoreList");
if (ObjectUtil.isNotEmpty(scoreList)) {
for (AnalysisBatchUnitDevicePointScore score : scoreList) {
score.setAnalysisBatchUnitDeviceId(analysisBatchUnitDevice.getId());
score.setAnalysisBatchId(analysisBatchUnitDevice.getAnalysisBatchId());
score.setAnalysisBatchCode(analysisBatchUnitDevice.getAnalysisBatchCode());
score.setUnitId(analysisBatchUnitDevice.getUnitId());
score.setUnitCode(analysisBatchUnitDevice.getUnitCode());
score.setUnitType(analysisBatchUnitDevice.getUnitType());
score.setUnitTypeName(analysisBatchUnitDevice.getUnitTypeName());
}
analysisBatchUnitDevicePointScoreService.lambdaUpdate().eq(AnalysisBatchUnitDevicePointScore::getAnalysisBatchUnitDeviceId, analysisBatchUnitDevice.getId()).remove();
analysisBatchUnitDevicePointScoreService.saveBatch(scoreList);
}
}
analysisBatchUnitDeviceService.lambdaUpdate().eq(AnalysisBatchUnitDevice::getAnalysisBatchId, analysisBatchId).remove();
analysisBatchUnitDeviceService.saveBatch(analysisBatchUnitDevices);
}
}
public void analysis(String analysisBatchId) { public void analysis(String analysisBatchId) {
Map<String, Map<String, Object>> unitDeviceTable = new TreeMap<>(); Map<String, Map<String, Object>> unitDeviceTable = new TreeMap<>();
......
...@@ -133,7 +133,6 @@ public class AnalysisBatchUnitDevice implements Serializable { ...@@ -133,7 +133,6 @@ public class AnalysisBatchUnitDevice implements Serializable {
@TableField("add_device_check_score") @TableField("add_device_check_score")
private BigDecimal addDeviceCheckScore; private BigDecimal addDeviceCheckScore;
@ApiModelProperty("备注") @ApiModelProperty("备注")
@TableField("remark") @TableField("remark")
private String remark; private String remark;
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
deviceCode, deviceCode,
startMileage, startMileage,
endMileage, endMileage,
ROUND((startMileage + endMileage) / 2, 3) centerMileage,
type, type,
typeName typeName
FROM (SELECT t1.id, FROM (SELECT t1.id,
...@@ -31,7 +32,7 @@ ...@@ -31,7 +32,7 @@
2 type, 2 type,
'曲线' typeName '曲线' typeName
FROM t_da_curve_management t1 FROM t_da_curve_management t1
LEFT JOIN t_sn_train_station t2 ON t1.section_id = t1.id LEFT JOIN t_sn_subway_section t2 ON t1.section_id = t2.id
WHERE t1.line_alias_id = #{lineAliasId} WHERE t1.line_alias_id = #{lineAliasId}
AND t2.light_rail_id = #{lightRailId} AND t2.light_rail_id = #{lightRailId}
...@@ -45,10 +46,12 @@ ...@@ -45,10 +46,12 @@
3 type, 3 type,
'竖曲线' typeName '竖曲线' typeName
FROM t_da_vertical_curve_management t1 FROM t_da_vertical_curve_management t1
LEFT JOIN t_sn_train_station t2 ON t1.section_id = t1.id LEFT JOIN t_sn_subway_section t2 ON t1.section_id = t2.id
WHERE t1.line_alias_id = #{lineAliasId} WHERE t1.line_alias_id = #{lineAliasId}
AND t2.light_rail_id = #{lightRailId} AND t2.light_rail_id = #{lightRailId}
UNION ALL UNION ALL
SELECT t1.id, SELECT t1.id,
t1.unit_code unitCode, t1.unit_code unitCode,
t1.switch_code deviceCode, t1.switch_code deviceCode,
...@@ -57,11 +60,11 @@ ...@@ -57,11 +60,11 @@
4 type, 4 type,
'道岔' typeName '道岔' typeName
FROM t_da_switch_management t1 FROM t_da_switch_management t1
LEFT JOIN t_sn_section_station_map t2 ON t1.section_station_map_id = t2.id LEFT JOIN t_sn_section_station_map t2 ON t1.section_station_map_id = t2.id
LEFT JOIN t_sn_subway_section t3 ON t2.section_id = t3.id LEFT JOIN t_sn_subway_section t3 ON t2.section_id = t3.id AND t3.line_alias_id = t1.line_alias_id
AND t3.line_alias_id = t1.line_alias_id
WHERE t1.line_alias_id = #{lineAliasId} WHERE t1.line_alias_id = #{lineAliasId}
AND t2.light_rail_id = #{lightRailId}) t AND t2.light_rail_id = #{lightRailId}
) t
ORDER BY t.startMileage ORDER BY t.startMileage
</select> </select>
</mapper> </mapper>
...@@ -62,17 +62,18 @@ public class WorkBatchController extends JeecgController<WorkBatch, IWorkBatchSe ...@@ -62,17 +62,18 @@ public class WorkBatchController extends JeecgController<WorkBatch, IWorkBatchSe
return Result.OK("操作成功"); return Result.OK("操作成功");
} }
@AutoLog(value = "维修作业管理-作业计划批次管理-超限页面新增")
@ApiOperation(value = "维修作业管理-作业计划批次管理-超限页面新增", notes = "维修作业管理-作业计划批次管理-超限页面新增")
@PostMapping(value = "/batchSaveRecord")
public Result<String> batchSaveRecord(@RequestBody AnalysisBatchSaveDTO dto) {
@AutoLog(value = "维修作业管理-作业计划批次管理-维修作业管理页面更新") this.service.batchSaveRecord(dto);
@ApiOperation(value = "维修作业管理-作业计划批次管理-维修作业管理页面更新", notes = "维修作业管理-作业计划批次管理-维修作业管理页面更新")
@PostMapping(value = "/updateRecord")
public Result<String> updateRecord(@RequestBody WorkBatchSaveOrUpdateDTO dto) {
this.service.updateRecord(dto);
return Result.OK("操作成功"); return Result.OK("操作成功");
} }
@AutoLog(value = "维修作业管理-作业计划批次管理-通过id删除") @AutoLog(value = "维修作业管理-作业计划批次管理-通过id删除")
@ApiOperation(value = "维修作业管理-作业计划批次管理-通过id删除", notes = "维修作业管理-作业计划批次管理-通过id删除") @ApiOperation(value = "维修作业管理-作业计划批次管理-通过id删除", notes = "维修作业管理-作业计划批次管理-通过id删除")
@GetMapping(value = "/deleteRecord") @GetMapping(value = "/deleteRecord")
...@@ -83,25 +84,11 @@ public class WorkBatchController extends JeecgController<WorkBatch, IWorkBatchSe ...@@ -83,25 +84,11 @@ public class WorkBatchController extends JeecgController<WorkBatch, IWorkBatchSe
@AutoLog(value = "维修作业管理-作业计划批次管理-获取里程单元设备") @AutoLog(value = "维修作业管理-作业计划批次管理-获取里程单元设备")
@ApiOperation(value = "维修作业管理-作业计划批次管理-获取里程单元设备", notes = "维修作业管理-作业计划批次管理-获取里程单元设备") @ApiOperation(value = "维修作业管理-作业计划批次管理-获取里程单元设备", notes = "维修作业管理-作业计划批次管理-获取里程单元设备")
@GetMapping(value = "/getUnitDeviceList") @PostMapping(value = "/getUnitDeviceList")
public Result<List<Map<String, Object>>> getUnitDeviceList(@RequestBody UnitDeviceDTO dto) { public Result<List<Map<String, Object>>> getUnitDeviceList(@RequestBody UnitDeviceDTO dto) {
List<Map<String, Object>> records = this.service.getUnitDeviceList(dto); List<Map<String, Object>> records = this.service.getUnitDeviceList(dto);
return Result.OK(records); return Result.OK(records);
} }
@AutoLog(value = "维修作业管理-作业计划批次管理-维修作业管理页面详情新增")
@ApiOperation(value = "维修作业管理-作业计划批次管理-维修作业管理页面新增", notes = "维修作业管理-作业计划批次管理-维修作业管理页面新增")
@PostMapping(value = "/saveDetailRecord")
public Result<String> saveDetailRecord(@RequestBody WorkBatchDetailDTO dto) {
this.service.saveDetailRecord(dto);
return Result.OK("操作成功");
}
} }
package org.jeecg.modules.maintenanceWork.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* 维修作业管理-作业计划批次管理表
* </p>
*
* @author hkl
* @since 2023-08-09
*/
@Data
@ApiModel(value = "PageSaveOrUpdateDTO对象", description = "维修作业管理-页面来源保存或更新dto")
public class AnalysisBatchSaveDTO {
private static final long serialVersionUID = 1L;
private String id;
@ApiModelProperty("作业计划批次号")
private String workBatchCode;
@ApiModelProperty("所属线路id")
private String lightRailId;
@ApiModelProperty("所属线路名称")
private String lightRailName;
@ApiModelProperty("所属线别id")
private String lineAliasId;
@ApiModelProperty("所属线别名称")
private String lineAliasName;
@ApiModelProperty("作业起始里程")
private BigDecimal workStartingMileage;
@ApiModelProperty("作业终点里程")
private BigDecimal workEndMileage;
@ApiModelProperty("作业终止时间")
private Date workStartTime;
@ApiModelProperty("作业终止时间")
private Date workEndTime;
@ApiModelProperty("作业班组")
private String team;
@ApiModelProperty("作业状态 0-未作业 1-已作业")
private Integer workStatus;
@ApiModelProperty("来源 1-一键全部派工 2-一键失格派工")
private Integer saveType;
@ApiModelProperty("分析批次id")
private String analysisBatchId;
}
...@@ -9,12 +9,18 @@ import java.math.BigDecimal; ...@@ -9,12 +9,18 @@ import java.math.BigDecimal;
@Data @Data
@ApiModel(value = "UnitDeviceDTO对象", description = "fsf1") @ApiModel(value = "UnitDeviceDTO对象", description = "fsf1")
public class UnitDeviceDTO { public class UnitDeviceDTO {
@ApiModelProperty("作业计划批次号") @ApiModelProperty("车站id")
private String lightRailId; private String lightRailId;
@ApiModelProperty("作业计划批次号")
@ApiModelProperty("线别id")
private String lineAliasId; private String lineAliasId;
@ApiModelProperty("作业计划批次号")
@ApiModelProperty("开始里程")
private BigDecimal startMileage; private BigDecimal startMileage;
@ApiModelProperty("作业计划批次号")
@ApiModelProperty("结束里程")
private BigDecimal endMileage; private BigDecimal endMileage;
@ApiModelProperty("设备类型 1-钢轨 2-曲线 3-竖曲线 4-道岔")
private String type;
} }
...@@ -6,6 +6,7 @@ import lombok.Data; ...@@ -6,6 +6,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* <p> * <p>
...@@ -58,4 +59,7 @@ public class WorkBatchSaveOrUpdateDTO { ...@@ -58,4 +59,7 @@ public class WorkBatchSaveOrUpdateDTO {
@ApiModelProperty("作业状态 0-未作业 1-已作业") @ApiModelProperty("作业状态 0-未作业 1-已作业")
private Integer workStatus; private Integer workStatus;
@ApiModelProperty("单元设备列表")
private List<DispatchDTO> unitDeviceList;
} }
...@@ -23,13 +23,13 @@ public interface IWorkBatchService extends IService<WorkBatch> { ...@@ -23,13 +23,13 @@ public interface IWorkBatchService extends IService<WorkBatch> {
void saveRecord(WorkBatchSaveOrUpdateDTO dto); void saveRecord(WorkBatchSaveOrUpdateDTO dto);
void updateRecord(WorkBatchSaveOrUpdateDTO dto);
void deleteRecord(String id); void deleteRecord(String id);
void transfiniteSaveRecord(WorkBatchTransfiniteSaveDTO dto); void transfiniteSaveRecord(WorkBatchTransfiniteSaveDTO dto);
void saveDetailRecord(WorkBatchDetailDTO dto);
List<Map<String, Object>> getUnitDeviceList(UnitDeviceDTO dto); List<Map<String, Object>> getUnitDeviceList(UnitDeviceDTO dto);
void batchSaveRecord(AnalysisBatchSaveDTO dto);
} }
...@@ -2,11 +2,14 @@ package org.jeecg.modules.maintenanceWork.service.impl; ...@@ -2,11 +2,14 @@ package org.jeecg.modules.maintenanceWork.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.util.UUIDGenerator; import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.modules.dynamicStaticAnalysis.entity.AnalysisBatchUnitDevice;
import org.jeecg.modules.dynamicStaticAnalysis.mapper.AnalysisAlgorithmMapper; import org.jeecg.modules.dynamicStaticAnalysis.mapper.AnalysisAlgorithmMapper;
import org.jeecg.modules.dynamicStaticAnalysis.mapper.AnalysisBatchUnitDeviceMapper;
import org.jeecg.modules.maintenanceWork.dto.*; import org.jeecg.modules.maintenanceWork.dto.*;
import org.jeecg.modules.maintenanceWork.entity.WorkBatch; import org.jeecg.modules.maintenanceWork.entity.WorkBatch;
import org.jeecg.modules.maintenanceWork.entity.WorkBatchDetail; import org.jeecg.modules.maintenanceWork.entity.WorkBatchDetail;
...@@ -40,6 +43,9 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch ...@@ -40,6 +43,9 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch
@Resource @Resource
private AnalysisAlgorithmMapper analysisAlgorithmMapper; private AnalysisAlgorithmMapper analysisAlgorithmMapper;
@Resource
private AnalysisBatchUnitDeviceMapper analysisBatchUnitDeviceMapper;
@Override @Override
public Page<WorkBatchVO> listRecord(Page<WorkBatchVO> pageData, WorkBatchDTO dto) { public Page<WorkBatchVO> listRecord(Page<WorkBatchVO> pageData, WorkBatchDTO dto) {
return this.baseMapper.listRecord(pageData, dto); return this.baseMapper.listRecord(pageData, dto);
...@@ -47,15 +53,40 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch ...@@ -47,15 +53,40 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch
@Override @Override
public void saveRecord(WorkBatchSaveOrUpdateDTO dto) { public void saveRecord(WorkBatchSaveOrUpdateDTO dto) {
// 保存主信息
WorkBatch workBatch = BeanUtil.copyProperties(dto, WorkBatch.class); WorkBatch workBatch = BeanUtil.copyProperties(dto, WorkBatch.class);
workBatch.setId(UUIDGenerator.generate()); if (ObjectUtil.isEmpty(dto.getId())) {
this.save(workBatch); workBatch.setId(UUIDGenerator.generate());
} workBatch.setWorkStatus(9);
}
@Override this.saveOrUpdate(workBatch);
public void updateRecord(WorkBatchSaveOrUpdateDTO dto) {
WorkBatch workBatch = BeanUtil.copyProperties(dto, WorkBatch.class);
this.updateById(workBatch); // 保证明细信息
// 先删除
LambdaQueryWrapper<WorkBatchDetail> delWrapper = Wrappers.lambdaQuery();
delWrapper.eq(WorkBatchDetail::getWorkBatchId, dto.getId());
workBatchDetailMapper.delete(delWrapper);
List<DispatchDTO> transfiniteList = dto.getUnitDeviceList();
for (DispatchDTO dispatchDTO : transfiniteList) {
WorkBatchDetail workBatchDetail = new WorkBatchDetail();
workBatchDetail.setId(UUIDGenerator.generate());
workBatchDetail.setWorkBatchId(dto.getId());
workBatchDetail.setWorkBatchCode(dto.getWorkBatchCode());
workBatchDetail.setUnitId(dispatchDTO.getUnitId());
workBatchDetail.setUnitCode(dispatchDTO.getUnitCode());
workBatchDetail.setUnitType(dispatchDTO.getUnitType());
workBatchDetail.setUnitTypeName(dispatchDTO.getUnitTypeName());
workBatchDetail.setUnitDeviceCode(dispatchDTO.getUnitDeviceCode());
workBatchDetail.setUnitEndMileage(dispatchDTO.getUnitStartingMileage());
workBatchDetail.setUnitEndMileage(dispatchDTO.getUnitEndMileage());
workBatchDetail.setUnitCenterMileage(dispatchDTO.getUnitCenterMileage());
workBatchDetail.setUnitScore(dispatchDTO.getUnitScore());
workBatchDetail.setUnitScoreLevel(dispatchDTO.getUnitScoreLevel());
workBatchDetail.setUnitScoreLevelStr(dispatchDTO.getUnitScoreLevelStr());
workBatchDetailMapper.insert(workBatchDetail);
}
} }
@Override @Override
...@@ -99,43 +130,13 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch ...@@ -99,43 +130,13 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch
} }
@Override
public void saveDetailRecord(WorkBatchDetailDTO dto) {
// 先删除
LambdaQueryWrapper<WorkBatchDetail> delWrapper = Wrappers.lambdaQuery();
delWrapper.eq(WorkBatchDetail::getWorkBatchId, dto.getWorkBatchId());
workBatchDetailMapper.delete(delWrapper);
List<DispatchDTO> transfiniteList = dto.getUnitDeviceList();
for (DispatchDTO dispatchDTO : transfiniteList) {
WorkBatchDetail workBatchDetail = new WorkBatchDetail();
workBatchDetail.setId(UUIDGenerator.generate());
workBatchDetail.setWorkBatchId(dto.getWorkBatchId());
workBatchDetail.setWorkBatchCode(dto.getWorkBatchCode());
workBatchDetail.setUnitId(dispatchDTO.getUnitId());
workBatchDetail.setUnitCode(dispatchDTO.getUnitCode());
workBatchDetail.setUnitType(dispatchDTO.getUnitType());
workBatchDetail.setUnitTypeName(dispatchDTO.getUnitTypeName());
workBatchDetail.setUnitDeviceCode(dispatchDTO.getUnitDeviceCode());
workBatchDetail.setUnitEndMileage(dispatchDTO.getUnitStartingMileage());
workBatchDetail.setUnitEndMileage(dispatchDTO.getUnitEndMileage());
workBatchDetail.setUnitCenterMileage(dispatchDTO.getUnitCenterMileage());
workBatchDetail.setUnitScore(dispatchDTO.getUnitScore());
workBatchDetail.setUnitScoreLevel(dispatchDTO.getUnitScoreLevel());
workBatchDetail.setUnitScoreLevelStr(dispatchDTO.getUnitScoreLevelStr());
workBatchDetailMapper.insert(workBatchDetail);
}
}
@Override @Override
public List<Map<String, Object>> getUnitDeviceList(UnitDeviceDTO dto) { public List<Map<String, Object>> getUnitDeviceList(UnitDeviceDTO dto) {
List<Map<String, Object>> resultList = new ArrayList<>(); List<Map<String, Object>> resultList = new ArrayList<>();
List<Map<String, Object>> unitDeviceList = analysisAlgorithmMapper.getUnitDevice(dto.getLightRailId(), dto.getLineAliasId()); List<Map<String, Object>> unitDeviceList = analysisAlgorithmMapper.getUnitDevice(dto.getLightRailId(), dto.getLineAliasId());
for (Map<String, Object> unitDevice : unitDeviceList) { for (Map<String, Object> unitDevice : unitDeviceList) {
BigDecimal startMileage = Convert.toBigDecimal(unitDevice.get("startMileage")); BigDecimal centerMileage = Convert.toBigDecimal(unitDevice.get("centerMileage"));
BigDecimal endMileage = Convert.toBigDecimal(unitDevice.get("endMileage"));
BigDecimal centerMileage = startMileage.add(endMileage).divide(new BigDecimal("2"), 3, RoundingMode.HALF_UP);
if (dto.getStartMileage().compareTo(centerMileage) <= 0 && dto.getEndMileage().compareTo(centerMileage) > 0) { if (dto.getStartMileage().compareTo(centerMileage) <= 0 && dto.getEndMileage().compareTo(centerMileage) > 0) {
resultList.add(unitDevice); resultList.add(unitDevice);
} }
...@@ -143,4 +144,39 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch ...@@ -143,4 +144,39 @@ public class WorkBatchServiceImpl extends ServiceImpl<WorkBatchMapper, WorkBatch
return resultList; return resultList;
} }
@Override
public void batchSaveRecord(AnalysisBatchSaveDTO dto) {
WorkBatch workBatch = BeanUtil.copyProperties(dto, WorkBatch.class);
workBatch.setId(UUIDGenerator.generate());
workBatch.setWorkStatus(9); // 9-已作业
workBatch.setSource(2); // 超限页面
this.save(workBatch);
// 2.查询
LambdaQueryWrapper<AnalysisBatchUnitDevice> unitDeviceWrapper = Wrappers.lambdaQuery();
if (dto.getSaveType() == 2) {
unitDeviceWrapper.eq(AnalysisBatchUnitDevice::getUnitScoreLevel, 3);
}
List<AnalysisBatchUnitDevice> unitDevices = analysisBatchUnitDeviceMapper.selectList(unitDeviceWrapper);
for (AnalysisBatchUnitDevice unitDevice : unitDevices) {
WorkBatchDetail workBatchDetail = new WorkBatchDetail();
workBatchDetail.setId(UUIDGenerator.generate());
workBatchDetail.setWorkBatchId(workBatch.getId());
workBatchDetail.setWorkBatchCode(workBatch.getWorkBatchCode());
workBatchDetail.setUnitId(unitDevice.getUnitId());
workBatchDetail.setUnitCode(unitDevice.getUnitCode());
workBatchDetail.setUnitType(unitDevice.getUnitType());
workBatchDetail.setUnitTypeName(unitDevice.getUnitTypeName());
workBatchDetail.setUnitDeviceCode(unitDevice.getUnitDeviceCode());
workBatchDetail.setUnitEndMileage(unitDevice.getUnitStartingMileage());
workBatchDetail.setUnitEndMileage(unitDevice.getUnitEndMileage());
workBatchDetail.setUnitCenterMileage(unitDevice.getUnitCenterMileage());
workBatchDetail.setUnitScore(unitDevice.getUnitScore());
workBatchDetail.setUnitScoreLevel(unitDevice.getUnitScoreLevel());
workBatchDetail.setUnitScoreLevelStr(unitDevice.getUnitScoreLevelStr());
workBatchDetailMapper.insert(workBatchDetail);
}
}
} }
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