Commit a9b2d08c authored by duanruiming's avatar duanruiming

[update] 添加web数据下发到utc数据库

parent 53feba75
package net.wanji.utc.config;
import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.TimeZone;
/**
* 全局日期处理
*
* @author Kent HAN
* @date 2023/1/12 21:49
*/
@Configuration
@AutoConfigureBefore(JacksonAutoConfiguration.class)
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper()
.setLocale(Locale.CHINA)
.setTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault()))
// 反序列化的格式
.registerModule(javaTimeModule())
// 序列化的格式
.setDateFormat(new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN))
.setLocale(Locale.CHINA)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.findAndRegisterModules();
}
@Bean
public Module javaTimeModule() {
JavaTimeModule module = new JavaTimeModule();
module.addSerializer(new LocalDateTimeSerializer(
DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)
));
module.addSerializer(new LocalTimeSerializer(
DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN))
);
module.addSerializer(new LocalDateSerializer(
DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))
);
module.addDeserializer(LocalDateTime.class,
new LocalDateTimeDeserializer(
DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)
));
module.addDeserializer(LocalDate.class,
new LocalDateDeserializer(
DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)
));
module.addDeserializer(LocalTime.class,
new LocalTimeDeserializer(
DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)
));
return module;
}
}
\ No newline at end of file
...@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
import net.wanji.common.annotation.aspect.AspectLog; import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum; import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.po.SaveToUtcPO;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import net.wanji.utc.service.control.ControlCommandStrategyService; import net.wanji.utc.service.control.ControlCommandStrategyService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
...@@ -212,4 +213,11 @@ public class ControlCommandController { ...@@ -212,4 +213,11 @@ public class ControlCommandController {
public JsonViewObject tempScheme(@RequestParam String crossCode, @RequestParam Integer schemeNo) throws Exception { public JsonViewObject tempScheme(@RequestParam String crossCode, @RequestParam Integer schemeNo) throws Exception {
return controlCommandStrategyService.tempScheme(crossCode, schemeNo); return controlCommandStrategyService.tempScheme(crossCode, schemeNo);
} }
@AspectLog(description = "下发数据到UTC", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "下发数据到UTC", notes = "下发数据到UTC")
@PostMapping("/saveToUtc")
public JsonViewObject saveToUtc(@RequestBody @Validated SaveToUtcPO saveToUtcPO) throws Exception {
return controlCommandStrategyService.saveToUtc(saveToUtcPO);
}
} }
package net.wanji.utc.service.control; package net.wanji.utc.service.control;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.po.SaveToUtcPO;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import java.util.Date; import java.util.Date;
...@@ -96,4 +97,6 @@ public interface ControlCommandStrategyService { ...@@ -96,4 +97,6 @@ public interface ControlCommandStrategyService {
JsonViewObject timing(String crossCode, Date date) throws Exception; JsonViewObject timing(String crossCode, Date date) throws Exception;
JsonViewObject tempScheme(String crossCode, Integer schemeNo) throws Exception; JsonViewObject tempScheme(String crossCode, Integer schemeNo) throws Exception;
JsonViewObject saveToUtc(SaveToUtcPO saveToUtcPO) throws Exception;
} }
package net.wanji.utc.service.control.impl; package net.wanji.utc.service.control.impl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.dao.entity.*; import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.po.BaseCrossLightsPO;
import net.wanji.databus.po.CrossInfoPO; import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.SaveToUtcPO;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import net.wanji.utc.cache.CrossInfoCache; import net.wanji.utc.cache.CrossInfoCache;
import net.wanji.utc.common.typeenum.BasicEnum; import net.wanji.utc.common.typeenum.BasicEnum;
...@@ -13,8 +16,10 @@ import net.wanji.utc.po.hk.request.DelBaseConfigPO; ...@@ -13,8 +16,10 @@ import net.wanji.utc.po.hk.request.DelBaseConfigPO;
import net.wanji.utc.service.control.ControlCommandService; import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.service.control.ControlCommandStrategyService; import net.wanji.utc.service.control.ControlCommandStrategyService;
import net.wanji.utc.util.StringUtils; import net.wanji.utc.util.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.ParseException; import java.text.ParseException;
...@@ -30,6 +35,7 @@ import java.util.Objects; ...@@ -30,6 +35,7 @@ import java.util.Objects;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class ControlCommandStrategyServiceImpl implements ControlCommandStrategyService { public class ControlCommandStrategyServiceImpl implements ControlCommandStrategyService {
@Resource(name = "hkControlCommandService") @Resource(name = "hkControlCommandService")
...@@ -44,11 +50,13 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -44,11 +50,13 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
private final CrossPlanMapper crossPlanMapper; private final CrossPlanMapper crossPlanMapper;
private final CrossSchedulesMapper crossSchedulesMapper; private final CrossSchedulesMapper crossSchedulesMapper;
private final CrossInfoCache crossInfoCache; private final CrossInfoCache crossInfoCache;
private final CrossLightsMapper crossLightsMapper;
private final CrossPhaseLightsMapper crossPhaseLightsMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public JsonViewObject schemeSendStrategy(SchemeSendVO schemeSendVO) throws Exception { public JsonViewObject schemeSendStrategy(SchemeSendVO schemeSendVO) throws Exception {
schemeSendDataInsert(schemeSendVO);
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(schemeSendVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(schemeSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
...@@ -56,11 +64,12 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -56,11 +64,12 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
} else { } else {
jsonViewObject = wanJiControlCommandService.schemeSend(schemeSendVO); jsonViewObject = wanJiControlCommandService.schemeSend(schemeSendVO);
} }
schemeSendDataInsert(schemeSendVO);
return jsonViewObject; return jsonViewObject;
} }
private void schemeSendDataInsert(SchemeSendVO schemeSendVO) { @Transactional(rollbackFor = Exception.class)
public void schemeSendDataInsert(SchemeSendVO schemeSendVO) throws Exception {
try {
// 入库操作 // 入库操作
List<CrossSchemePO> crossSchemePOList = new ArrayList<>(); List<CrossSchemePO> crossSchemePOList = new ArrayList<>();
schemeSendVO.getPatternList().forEach(pattern -> { schemeSendVO.getPatternList().forEach(pattern -> {
...@@ -103,11 +112,15 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -103,11 +112,15 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
}); });
// 入库信号方案表 // 入库信号方案表
crossSchemeMapper.insertBatch(crossSchemePOList); crossSchemeMapper.insertBatch(crossSchemePOList);
} catch (Exception e) {
log.error("下发方案相位数据到utc数据库失败", e);
throw new Exception("下发方案相位数据到utc数据库失败");
}
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public JsonViewObject planSendStrategy(PlanSendVO planSendVO) throws Exception { public JsonViewObject planSendStrategy(PlanSendVO planSendVO) throws Exception {
planSendDataInsert(planSendVO);
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(planSendVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(planSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
...@@ -115,11 +128,12 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -115,11 +128,12 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
} else { } else {
jsonViewObject = wanJiControlCommandService.planSend(planSendVO); jsonViewObject = wanJiControlCommandService.planSend(planSendVO);
} }
planSendDataInsert(planSendVO);
return jsonViewObject; return jsonViewObject;
} }
private void planSendDataInsert(PlanSendVO planSendVO) { @Transactional(rollbackFor = Exception.class)
public void planSendDataInsert(PlanSendVO planSendVO) throws Exception {
try {
List<CrossPlanPO> crossPlanPOList = new ArrayList<>(); List<CrossPlanPO> crossPlanPOList = new ArrayList<>();
planSendVO.getPlanList().forEach(plan -> { planSendVO.getPlanList().forEach(plan -> {
CrossPlanPO crossPlanPO = new CrossPlanPO(); CrossPlanPO crossPlanPO = new CrossPlanPO();
...@@ -144,11 +158,15 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -144,11 +158,15 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
}); });
// 入库路口计划表 // 入库路口计划表
crossPlanMapper.insertBatch(crossPlanPOList); crossPlanMapper.insertBatch(crossPlanPOList);
} catch (Exception e) {
log.error("下发时段日计划数据到UTC数据库失败", e);
throw new Exception("下发时段日计划数据到UTC数据库失败");
}
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public JsonViewObject scheduleSendStrategy(ScheduleSendVO scheduleSendVO) throws Exception { public JsonViewObject scheduleSendStrategy(ScheduleSendVO scheduleSendVO) throws Exception {
scheduleSendDataInsert(scheduleSendVO);
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(scheduleSendVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(scheduleSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
...@@ -156,11 +174,12 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -156,11 +174,12 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
} else { } else {
jsonViewObject = wanJiControlCommandService.scheduleSend(scheduleSendVO); jsonViewObject = wanJiControlCommandService.scheduleSend(scheduleSendVO);
} }
scheduleSendDataInsert(scheduleSendVO);
return jsonViewObject; return jsonViewObject;
} }
private void scheduleSendDataInsert(ScheduleSendVO scheduleSendVO) { @Transactional(rollbackFor = Exception.class)
public void scheduleSendDataInsert(ScheduleSendVO scheduleSendVO) throws Exception {
try {
// 1、入库操作 // 1、入库操作
SimpleDateFormat sdf = new SimpleDateFormat(DateStyle.YYYY_MM_DD.getValue()); SimpleDateFormat sdf = new SimpleDateFormat(DateStyle.YYYY_MM_DD.getValue());
ArrayList<CrossSchedulesPO> crossSchedulesPOS = new ArrayList<>(); ArrayList<CrossSchedulesPO> crossSchedulesPOS = new ArrayList<>();
...@@ -196,6 +215,10 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -196,6 +215,10 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
}); });
// 入库时间表 // 入库时间表
crossSchedulesMapper.insertBatch(crossSchedulesPOS); crossSchedulesMapper.insertBatch(crossSchedulesPOS);
} catch (Exception e) {
log.error("下发调度数据到utc数据库失败", e);
throw new Exception("下发调度数据到utc数据库失败");
}
} }
@Override @Override
...@@ -312,4 +335,86 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -312,4 +335,86 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
} }
return jsonViewObject; return jsonViewObject;
} }
@Override
@Transactional
public JsonViewObject saveToUtc(SaveToUtcPO saveToUtcPO) throws Exception {
try {
if (Objects.nonNull(saveToUtcPO)) {
List<BaseCrossLightsPO> lightsPOS = saveToUtcPO.getLightsPOS();
CrossSchedulesPO crossSchedulesPO = saveToUtcPO.getSchedulesPOS().get(0);
String crossId = crossSchedulesPO.getCrossId();
if (!CollectionUtils.isEmpty(lightsPOS)) {
crossLightsMapper.deleteByCrossId(crossId);
for (BaseCrossLightsPO lightsPO : lightsPOS) {
CrossLightsPO crossLightsPO = new CrossLightsPO();
BeanUtils.copyProperties(lightsPO, crossLightsPO);
crossLightsPO.setName("灯组".concat(lightsPO.getLightsNo()));
crossLightsPO.setType(1);
if (Objects.equals(lightsPO.getType(), 1)) {
crossLightsPO.setType(2); // 1箭头 2圆饼
} else if (Objects.equals(lightsPO.getType(), 2)) {
crossLightsPO.setTurn(1); // 1箭头 2圆饼
} else if (Objects.equals(lightsPO.getType(), 3)) {
crossLightsPO.setTurn(2); // 1箭头 2圆饼
} else if (Objects.equals(lightsPO.getType(), 4)) {
crossLightsPO.setTurn(3); // 1箭头 2圆饼
} else if (Objects.equals(lightsPO.getType(), 20)) {
crossLightsPO.setType(3); // 1箭头 2圆饼
crossLightsPO.setTurn(20);
}
crossLightsMapper.insertOne(crossLightsPO);
}
}
List<CrossPhasePO> phasePOS = saveToUtcPO.getPhasePOS();
crossPhaseMapper.deleteByCrossId(crossId);
if (!CollectionUtils.isEmpty(phasePOS)) {
for (CrossPhasePO phasePO : phasePOS) {
CrossPhasePO crossPhasePO = new CrossPhasePO();
BeanUtils.copyProperties(phasePO, crossPhasePO);
crossPhasePO.setName("相位".concat(phasePO.getPhaseNo()));
crossPhasePO.setGroupNo(1);
crossPhasePO.setRingNo(1);
crossPhaseMapper.insertOne(crossPhasePO);
}
}
List<CrossPhaseLightsPO> phaseLightsPOS = saveToUtcPO.getPhaseLightsPOS();
crossPhaseLightsMapper.deleteByCrossId(crossId);
crossPhaseLightsMapper.insertBatch(phaseLightsPOS);
List<BaseCrossSchemePO> schemePOS = saveToUtcPO.getSchemePOS();
if (!CollectionUtils.isEmpty(schemePOS)) {
for (BaseCrossSchemePO schemePO : schemePOS) {
CrossSchemePO crossSchemePO = new CrossSchemePO();
BeanUtils.copyProperties(schemePO, crossSchemePO);
crossSchemeMapper.insertOne(crossSchemePO);
}
}
List<CrossSectionPO> sectionPOS = saveToUtcPO.getSectionPOS();
crossSectionMapper.deleteOne(crossId, null,null);
if (!CollectionUtils.isEmpty(sectionPOS)) {
for (CrossSectionPO sectionPO : sectionPOS) {
CrossSectionPO crossSectionPO = new CrossSectionPO();
BeanUtils.copyProperties(sectionPO, crossSectionPO);
crossSectionMapper.insertOne(crossSectionPO);
}
}
List<BaseCrossPlanPO> planPOS = saveToUtcPO.getPlanPOS();
if (!CollectionUtils.isEmpty(planPOS)) {
for (BaseCrossPlanPO planPO : planPOS) {
CrossPlanPO crossPlanPO = new CrossPlanPO();
BeanUtils.copyProperties(planPO, crossPlanPO);
crossPlanMapper.deleteOne(planPO.getCrossId(), Integer.valueOf(crossPlanPO.getPlanNo()));
crossPlanMapper.insertOne(crossPlanPO);
}
}
List<CrossSchedulesPO> schedulesPOS = saveToUtcPO.getSchedulesPOS();
crossSchedulesMapper.deleteByCrossId(crossId);
crossSchedulesMapper.insertBatch(schedulesPOS);
}
} catch (Exception e) {
log.error("下发数据到utc数据库失败:", e);
throw new Exception(e);
}
return JsonViewObject.newInstance().success("数据下发到Utc数据库成功");
}
} }
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