Commit 8ebfab8f authored by zhouleilei's avatar zhouleilei

1、解决海信信号机同步特殊日期问题;2、修改查询环图逻辑

parent edffcbec
......@@ -6,6 +6,8 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.Constants;
import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.ScheduleUtil;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.databus.dao.entity.*;
......@@ -14,10 +16,7 @@ import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.dao.mapper.CrossSchemeStageOptLogMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.dto.*;
import net.wanji.databus.po.CoordinationStatus;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.CrossInfoPOExt;
import net.wanji.databus.po.CrossNowSchemePO;
import net.wanji.databus.po.*;
import net.wanji.databus.vo.PlanSectionVO;
import net.wanji.databus.vo.SchemePhaseLightsVO;
import net.wanji.utc.hisense.cache.CrossInfoCache;
......@@ -26,7 +25,6 @@ import net.wanji.utc.hisense.common.constants.HttpConstants;
import net.wanji.utc.hisense.mapper.*;
import net.wanji.utc.hisense.pojo.dto.RingPhaseDTO;
import net.wanji.utc.hisense.pojo.dto.StagePhaseDTO;
import net.wanji.databus.po.CrossSchemeRings;
import net.wanji.utc.hisense.pojo.view.*;
import net.wanji.utc.hisense.service.StaticInfoService;
import net.wanji.utc.hisense.util.CommonUtils;
......@@ -665,6 +663,8 @@ public class StaticInfoServiceImpl implements StaticInfoService {
LambdaQueryWrapper<VNtcipTimeBaseScheduleView> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(VNtcipTimeBaseScheduleView::getCIntsID, code);
List<VNtcipTimeBaseScheduleView> vNtcipTimeBaseScheduleViews = vNtcipTimeBaseScheduleMapper.selectList(queryWrapper);
int year = DateUtil.getYear(new Date());
if (!CollectionUtils.isEmpty(vNtcipTimeBaseScheduleViews)) {
for (VNtcipTimeBaseScheduleView vNtcipTimeBaseScheduleView : vNtcipTimeBaseScheduleViews) {
if (Objects.nonNull(vNtcipTimeBaseScheduleView)) {
......@@ -683,6 +683,32 @@ public class StaticInfoServiceImpl implements StaticInfoService {
String monthsStr = ScheduleUtil.getSchedule(hisenseMonth.longValue(), 1);
String daysStr = ScheduleUtil.getSchedule(hisenseDays, 2);
String weekStr = ScheduleUtil.getSchedule(hisenseWeek.longValue(), 3);
if (StringUtils.isBlank(monthsStr)){
//如果没有月份数据,则为无效数据
continue;
}
//根据海信的视图数据,判断是否是特殊日期,如果 hisenseWeek 为0时,则为特殊日期
if (hisenseWeek == 0){
if (StringUtils.isNotBlank(daysStr)){
String[] days = daysStr.split(",");
for (String day : days) {
CrossSchedulesPO crossSchedulesPOWeek = new CrossSchedulesPO();
crossSchedulesPOWeek.setCrossId(crossId);
crossSchedulesPOWeek.setScheduleNo(vNtcipTimeBaseScheduleView.getNTimeBaseScheduleNumber());
crossSchedulesPOWeek.setName("调度" + vNtcipTimeBaseScheduleView.getNTimeBaseScheduleNumber());
crossSchedulesPOWeek.setWeek(0);
crossSchedulesPOWeek.setMonths(monthsStr);
crossSchedulesPOWeek.setDays(daysStr);
String date = year + "-" + monthsStr + "-" + day;
Date parse = DateUtil.parse(date, Constants.DATE_FORMAT.E_DATE_FORMAT_DAY);
crossSchedulesPOWeek.setSpecialDate(parse);
crossSchedulesPOWeek.setPlanId(hisensePlanId);
results.add(crossSchedulesPOWeek);
}
}
}else {
if (StringUtils.isNotBlank(weekStr)) {
String[] weekSplit = weekStr.split(",");
for (String oneWeek : weekSplit) {
......@@ -715,6 +741,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
}
}
}
}
return results;
}
......
package net.wanji.common.utils.tool;
import net.wanji.common.framework.Constants;
import java.text.ParseException;
import java.util.Date;
/**
* @Author: zhouleilei
* @date: 2024/11/09 15:15
......@@ -105,9 +110,23 @@ public class ScheduleUtil {
return inteterSum;
}
public static void main(String[] args) {
System.out.println(getSchedule(512L, 1));
System.out.println(getSchedule(4294967295L, 2));
System.out.println(getSchedule(4L, 3));
public static void main(String[] args) throws ParseException {
//月
String months = getSchedule(4L, 1);
System.out.println(months);
//日
String days = getSchedule(30L, 2);
System.out.println(days);
//星期
System.out.println(getSchedule(0L, 3));
int year = DateUtil.getYear(new Date());
String[] split = days.split(",");
for (String day : split) {
String date = year + "-" + months + "-" + day;
Date parse = DateUtil.parse(date, Constants.DATE_FORMAT.E_DATE_FORMAT_DAY);
System.out.println(parse);
}
}
}
......@@ -39,6 +39,7 @@ public class CrossSchedulesPO {
private String weeks;
/** 特殊日期 */
@ApiModelProperty(value = "特殊日期",notes = "")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date specialDate ;
/** 创建时间 */
@ApiModelProperty(value = "创建时间",notes = "")
......
......@@ -238,10 +238,20 @@
AND section.scheme_id = scheme.id
WHERE
schedules.cross_id = #{crossId}
AND schedules.`week` = #{week}
AND (
DATE_FORMAT(schedules.special_date, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
OR
(
schedules.week = #{week}
AND (
DATE_FORMAT(schedules.special_date, '%Y-%m-%d') != DATE_FORMAT(NOW(), '%Y-%m-%d')
OR schedules.special_date IS NULL
)
)
)
AND DATE_FORMAT( NOW(), '%H:%i' ) BETWEEN DATE_FORMAT( CAST( section.start_time AS TIME ), '%H:%i' )
AND DATE_FORMAT( CAST( section.end_time AS TIME ), '%H:%i' )
ORDER BY schedules.special_date, DATE_FORMAT( CAST( section.end_time AS TIME ), '%H:%i' ) DESC LIMIT 1
ORDER BY schedules.special_date, DATE_FORMAT( CAST( section.end_time AS TIME ), '%H:%i' ),schedules.special_date DESC LIMIT 1
</select>
<select id="selectSchemeByParams" resultType="net.wanji.databus.dao.entity.BaseCrossSchemePO">
......@@ -255,10 +265,21 @@
AND section.scheme_id = scheme.id
WHERE
schedules.cross_id = #{crossId}
AND schedules.`week` = #{week}
AND (
DATE_FORMAT(schedules.special_date, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
OR
(
schedules.week = #{week}
AND (
DATE_FORMAT(schedules.special_date, '%Y-%m-%d') != DATE_FORMAT(NOW(), '%Y-%m-%d')
OR schedules.special_date IS NULL
)
)
)
AND DATE_FORMAT( #{queryTime}, '%H:%i' ) BETWEEN DATE_FORMAT( CAST( section.start_time AS TIME ), '%H:%i' )
AND DATE_FORMAT( CAST( section.end_time AS TIME ), '%H:%i' )
ORDER BY schedules.special_date, DATE_FORMAT( CAST( section.end_time AS TIME ), '%H:%i' ) DESC LIMIT 1
ORDER BY schedules.special_date, DATE_FORMAT( CAST( section.end_time AS TIME ), '%H:%i' ),schedules.special_date DESC LIMIT 1
</select>
......
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