Commit 8ebfab8f authored by zhouleilei's avatar zhouleilei

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

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