liweidong^2
张乾翔 1 day ago
parent 3c3cfd9b76
commit 4862b3218c
  1. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/mapper/EpciuPatrolInspectionMapper.xml
  2. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEpciuPatrolInspectionServiceImpl.java
  3. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsSafePatrolInspectionServiceImpl.java
  4. 498
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/DateTools.java
  5. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java

@ -32,7 +32,7 @@
left join blade_user u on u.id = n.INS_MAN
<where>
n.is_deleted = 0
<if test="bsEpciuPatrolInspection.taskStatus!=null">
<if test="bsEpciuPatrolInspection.taskStatus!=null and bsEpciuPatrolInspection.taskStatus!= ''">
and n.TASK_STATUS = #{bsEpciuPatrolInspection.taskStatus}
</if>
<if test="bsEpciuPatrolInspection.insNum!=null and bsEpciuPatrolInspection.insNum!=''">
@ -41,19 +41,19 @@
<if test="bsEpciuPatrolInspection.insSite!=null and bsEpciuPatrolInspection.insSite!=''">
and n.INS_SITE like '%' || #{bsEpciuPatrolInspection.insSite} || '%'
</if>
<if test="bsEpciuPatrolInspection.insType!=null">
<if test="bsEpciuPatrolInspection.insType!=null and bsEpciuPatrolInspection.insType!=''">
and n.INS_TYPE = #{bsEpciuPatrolInspection.insType}
</if>
<if test="bsEpciuPatrolInspection.insMan!=null and bsEpciuPatrolInspection.insMan!=''">
and n.INS_MAN like '%' || #{bsEpciuPatrolInspection.insMan} || '%'
</if>
<if test="bsEpciuPatrolInspection.insType!=null">
<if test="bsEpciuPatrolInspection.insType!=null and bsEpciuPatrolInspection.insType!=''">
and n.INS_TYPE = #{bsEpciuPatrolInspection.insType}
</if>
<if test="bsEpciuPatrolInspection.queryLaunchTime!=null">
<if test="bsEpciuPatrolInspection.queryLaunchTime!=null and bsEpciuPatrolInspection.queryLaunchTime!= ''">
and n.LAUNCH_TIME BETWEEN to_date(#{bsEpciuPatrolInspection.startDate},'YYYY-MM-DD HH24:MI:SS') AND to_date(#{bsEpciuPatrolInspection.endDate},'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="bsEpciuPatrolInspection.queryTestTime!=null">
<if test="bsEpciuPatrolInspection.queryTestTime!=null and bsEpciuPatrolInspection.queryTestTime!=''">
and n.TEST_TIME BETWEEN to_date(#{bsEpciuPatrolInspection.startTestDate},'YYYY-MM-DD HH24:MI:SS') AND to_date(#{bsEpciuPatrolInspection.endTestDate},'YYYY-MM-DD HH24:MI:SS')
</if>
</where>

@ -124,7 +124,7 @@ public class BsEpciuPatrolInspectionServiceImpl extends BaseServiceImpl<BsEpciuP
BsEpciuPatrolInspectionEntity epPatrolInspection;
for (BsEpciuInspectionPointEntity epInspectionPoint : epInspectionPointList) {
epPatrolInspection = new BsEpciuPatrolInspectionEntity();
// 如果是整点
// 如果是整8
if (flag) {
epPatrolInspection.setEpcId(epInspectionPoint.getId());
epPatrolInspection.setInsNum(epInspectionPoint.getInsNum());
@ -150,14 +150,14 @@ public class BsEpciuPatrolInspectionServiceImpl extends BaseServiceImpl<BsEpciuP
SimpleDateFormat format = new SimpleDateFormat("HH");
String lastHours = format.format(lastInsCycle);
// 下次触发时间
Long insCycle = epInspectionPoint.getInsCycle() + Integer.valueOf(lastHours);
Long insCycle = epInspectionPoint.getInsCycle() + Integer.parseInt(lastHours);
if (insCycle < 24) {
// 如果当前时间与下次触发时间一样就生成任务
isAdd = hour == insCycle;
// 特殊情况下服务器停的时间过长
if (Integer.valueOf(lastHours) + epInspectionPoint.getInsCycle() < hour) {
if (insCycle < hour) {
isAdd = true;
}
} else {

@ -41,6 +41,7 @@ import org.springblade.desk.energy.pojo.entity.BsSafePatrolInspectionEntity;
import org.springblade.desk.energy.pojo.vo.BsSafePatrolInspectionVO;
import org.springblade.desk.energy.service.IBsSafeInspectionPointService;
import org.springblade.desk.energy.service.IBsSafePatrolInspectionService;
import org.springblade.desk.energy.util.DateTools;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -89,9 +90,10 @@ public class BsSafePatrolInspectionServiceImpl extends BaseServiceImpl<BsSafePat
@Override
public void createSafPatrolTask() {
// 如果是节假日就不需要生产任务
// if (DateTools.isHoliday()) {
// return;
// }
if (DateTools.isHoliday()) {
return;
}
//查询巡检配置
List<BsSafeInspectionPointEntity> ipLiST = bsSafeInspectionPointService.list();
if (ipLiST.size() == 0) {
@ -107,13 +109,16 @@ public class BsSafePatrolInspectionServiceImpl extends BaseServiceImpl<BsSafePat
pi.setInsMemo(ip.getMemo());
pi.setLaunchTime(new Date());
pi.setTaskStatus(BsSafePatrolInspectionEntity.PREPARE_TEXT.toString());
baseMapper.insertOrUpdate(pi);
//修改insertOrUpdate为insert避免歧义
baseMapper.insert(pi);
}
}
@Override
public void handleSafPatrolTask() {
baseMapper.update(Wrappers.<BsSafePatrolInspectionEntity>update().lambda().set(BsSafePatrolInspectionEntity::getTaskStatus, BsSafePatrolInspectionEntity.NO_CHECK).eq(BsSafePatrolInspectionEntity::getTaskStatus, BsSafePatrolInspectionEntity.PREPARE_TEXT));
baseMapper.update(Wrappers.<BsSafePatrolInspectionEntity>update().lambda()
.set(BsSafePatrolInspectionEntity::getTaskStatus, BsSafePatrolInspectionEntity.NO_CHECK)
.eq(BsSafePatrolInspectionEntity::getTaskStatus, BsSafePatrolInspectionEntity.PREPARE_TEXT));
}
@Override

@ -0,0 +1,498 @@
package org.springblade.desk.energy.util;/**
* @date : 2026/4/25 11:47
*/
import com.alibaba.fastjson.JSONObject;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 文件名称
* @module 归属项目
* @author ***
* @date 2025/11/26 10:27
*/
public class DateTools {
/**
* 查询今日是否是节假日
*
* @return
*/
public static Boolean isHoliday() {
//IBsFactoryCalDataService bsFactoryCalDataService = (IBsFactoryCalDataService) SpringContextUtil.getBean("bsFactoryCalDataService");
//
//Calendar c = Calendar.getInstance();
//c.setTime(new Date());
//
//int YY = c.get(Calendar.YEAR);
//int MM = c.get(Calendar.MONTH) + 1;
//int DD = c.get(Calendar.DATE);
//
//StringBuffer sb = new StringBuffer();
//sb.append(YY);
//sb.append(MM < 10 ? "0" : "").append(MM);
//sb.append(DD < 10 ? "0" : "").append(DD);
//BsFactoryCalData bsFactoryCalData = bsFactoryCalDataService.getByYmd(Integer.valueOf(sb.toString()));
//
//return bsFactoryCalData == null ? false : bsFactoryCalData.getDayOff() == 1 ? true : false;
return false;
}
/**
* 获取当前日期的往后day天的所有日期集合
*
* @return
*/
public static List<Date> listNextDayDates(Integer day) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(new Date());
cal2.setTime(new Date());
cal1.add(Calendar.DAY_OF_MONTH, 0);
cal2.add(Calendar.DAY_OF_MONTH, day);
Calendar cStart = Calendar.getInstance();
cStart.setTime(cal1.getTime());
List dateList = new ArrayList();
//别忘了,把起始日期加上
dateList.add(cal1.getTime());
// 此日期是否在指定日期之后
while (cal2.getTime().after(cStart.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
cStart.add(Calendar.DAY_OF_MONTH, 1);
dateList.add(cStart.getTime());
}
return dateList;
}
/**
* 获取当前时 Calendar.HOUR_OF_DAY
*
* @return
*/
public static Integer getDateTime(int cal) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int i = calendar.get(cal);
if (Calendar.MONTH == cal) {
i += 1;
}
return i;
}
/**
* 获取传入日期时 Calendar.HOUR_OF_DAY
*
* @return
*/
public static Integer getDateTime(Date date, int cal) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int i = calendar.get(cal);
if (Calendar.MONTH == cal) {
i += 1;
}
return i;
}
/**
* 补全数值类型
*
* @return
*/
public static String repairVal(Integer val) {
String valStr = null;
if (val < 10) {
valStr = "0" + val;
} else {
valStr = "" + val;
}
return valStr;
}
/**
* 获取月多少天
*
* @return
*/
public static Integer getMonthHowDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 获取月份最小日期时间
*
* @param d
* @return
*/
public static final String getDateWithoutTime(Date d) {
if (d == null) {
return null;
} else {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.DATE, 1);
c.set(11, 0);
c.set(12, 0);
c.set(13, 0);
c.set(14, 0);
return DateTime.date2String(c.getTime(), true, true);
}
}
/**
* 获取月份最大日期时间
*
* @param d
* @return
*/
public static final String getDateWithMaxTime(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.DATE, DateTools.getMonthHowDay(d));
c.set(11, 23);
c.set(12, 59);
c.set(13, 59);
c.set(14, 999);
return DateTime.date2String(c.getTime(), true, true);
}
/**
* 获取当年的第一天
*
* @return
*/
public static final String getCurrYearFirst() {
Calendar currCal = Calendar.getInstance();
int currentYear = currCal.get(Calendar.YEAR);
return getYearFirst(currentYear);
}
/**
* 获取当年的最后一天
*
* @return
*/
public static final String getCurrYearLast() {
Calendar currCal = Calendar.getInstance();
int currentYear = currCal.get(Calendar.YEAR);
return getYearLast(currentYear);
}
/**
* 获取某年第一天日期
*
* @param year 年份
* @return Date
*/
public static final String getYearFirst(int year) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
return DateTime.date2String(calendar.getTime(), true, true);
}
/**
* 获取某年最后一天日期
*
* @param year 年份
* @return Date
*/
public static final String getYearLast(int year) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
return DateTime.date2String(calendar.getTime(), true, true);
}
/**
* 获得本月的开始时间
*
* @return
*/
public static String getMonthStartTimeStr(Date date) {
Calendar c = Calendar.getInstance();
c.clear();
c.setTime(date);
c.set(Calendar.DATE, 1);
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()) + " 00:00:00";
}
/**
* 本月的结束时间
*
* @return
*/
public static String getMonthEndTimeStr(Date date) {
Calendar c = Calendar.getInstance();
c.clear();
c.setTime(date);
c.set(Calendar.DATE, 1);
c.add(Calendar.MONTH, 1);
c.add(Calendar.DATE, -1);
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()) + " 23:59:59";
}
/**
* 获取某年开始时间
*
* @return Date
*/
public static final String getYearStartTimeStr(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
return calendar.get(Calendar.YEAR) + "-01-01 00:00:00";
}
/**
* 获取某年结束时间
*
* @return Date
*/
public static final String getYearEndTimeStr(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
return calendar.get(Calendar.YEAR) + "-12-31 23:59:59";
}
/**
* <p>方法名: getTomorrow </p>
* <p>方法描述: 获取当前日期后几天 </p>
*
* @param day
* @author lyj
* @date 2022-02-19 16:59
*/
public static final String getTomorrow(int day) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, day);
return DateTime.date2String(calendar.getTime(), true, true);
}
/**
* <p>方法名: getYesterday </p>
* <p>方法描述: 获取当前日期前几天 </p>
*
* @param day
* @author lyj
* @date 2022-02-19 16:59
*/
public static final String getYesterday(int day) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -day);
return DateTime.date2String(calendar.getTime(), true, true);
}
public static Date dateAdd(Date date, int x) {
//入参的格式
// 24小时制
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 24小时制
cal.add(Calendar.DATE, x);
//得到结算后的结果 yyyy-MM-dd HH:mm
date = cal.getTime();
return date;
}
public static Date dateAdd(Date date, int field, int x) {
//入参的格式
// 24小时制
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(field, x);
//得到结算后的结果 yyyy-MM-dd HH:mm
date = cal.getTime();
return date;
}
/**
* <p>Description: 计算间隔天数 </p>
*
* @param date
* @param remDays
* @return: int
* @Author qjh
* @Date: 2022-10-11 9:11
*/
public static int cycleDay(Date date, Integer remDays) {
int days = ((int) (System.currentTimeMillis() / 1000) - (int) (date.getTime() / 1000)) / (60 * 60 * 24);
if (remDays != null) {
days += remDays;
}
return days;
}
/**
* 根据当前日期返回日期范围
*
* @return
*/
public static JSONObject getQuantityDate() {
Calendar cal = Calendar.getInstance();
int YY = cal.get(Calendar.YEAR);
int MM = cal.get(Calendar.MONTH) + 1;
int DD = cal.get(Calendar.DATE);
JSONObject obj = new JSONObject();
String str1 = "";
String str2 = "";
String str3 = "";
String str4 = "";
// 如果当前日期大于20,返回本月21号,下月20
if (DD > 20) {
// 本月
str1 = YY + "-" + MM + "-" + "21 00:00:00";
if (MM == 12) {
str2 = (YY + 1) + "-" + 1 + "-" + "20 23:59:59";
} else {
str2 = YY + "-" + (MM + 1) + "-" + "20 23:59:59";
}
str3 = String.valueOf(MM);
str4 = String.valueOf(YY);
} else {
str3 = String.valueOf(MM);
str4 = String.valueOf(YY);
// 返回上月21号,本月20
if (MM == 1) {
str1 = (YY - 1) + "-" + 12 + "-" + "21 00:00:00";
str4 = String.valueOf(YY - 1);
} else {
str1 = YY + "-" + (MM - 1) + "-" + "21 00:00:00";
str3 = String.valueOf(MM - 1);
}
str2 = YY + "-" + MM + "-" + "20 23:59:59";
}
obj.put("YY", str4 + "-1-1 00:00:00");
obj.put("MM", str3);
obj.put("startTime", str1);
obj.put("endTime", str2);
return obj;
}
/**
* 获取传入日期的年月
*
* @return
*/
public static String getYearMonth(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
String month = cal.get(Calendar.MONTH) + 1 >= 10 ? String.valueOf(cal.get(Calendar.MONTH) + 1) : "0" + (cal.get(Calendar.MONTH) + 1);
return year + "-" + month;
}
/**
* 根据当前日期获取上个月减去N天的日期
*
* @return
*/
public static String getLastMonthData(Integer day) {
Calendar cal = Calendar.getInstance();
int YY = cal.get(Calendar.YEAR);
int MM = cal.get(Calendar.MONTH);
int DD = cal.get(Calendar.DATE);
String mm = MM < 10 ? "0" + MM : MM + "";
String dd = DD < 10 ? "0" + DD : DD + "";
Integer monthHowDay = DateTools.getMonthHowDay(DateTime.parse(YY + "-" + mm + "-" + dd + " 00:00:00"));
DD = monthHowDay - day + 1;
System.out.println(YY + "-" + mm + "-" + DD + " 00:00:00");
return YY + "-" + mm + "-" + DD + " 00:00:00";
}
/**
* 功能描述: 获取上一周的开始时间和结束时间
*/
public static JSONObject getLastWeekStartOrEndDayOfWeek(Integer weekNum) {
JSONObject obj = new JSONObject();
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -7 * weekNum); // 获取上一周
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 设置为周一
Date monday = calendar.getTime();
calendar.add(Calendar.DATE, 6); // 设置为周日
Date sunday = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
obj.put("monday",sdf.format(monday));
obj.put("sunday",sdf.format(sunday));
return obj;
}
//20240929 新建以下方法 获取25-25号的时间
public static JSONObject getStartEndDate() {
Calendar cal = Calendar.getInstance();
int YY = cal.get(Calendar.YEAR);
int MM = cal.get(Calendar.MONTH) + 1;
int DD = cal.get(Calendar.DATE);
JSONObject obj = new JSONObject();
String str1 = "";
String str2 = "";
// 如果当前日期大于25,返回本月25号,下月25
if (DD > 25) {
// 本月
str1 = YY + "-" + (MM > 9 ? MM : "0" + MM) + "-" + "25 00:00:00";
if (MM == 12) {
str2 = (YY + 1) + "-" + "01" + "-" + "25 23:59:59";
} else {
str2 = YY + "-" + ((MM + 1) > 9 ? (MM + 1) : "0" + (MM + 1)) + "-" + "25 23:59:59";
}
} else {
// 返回上月25号,本月25
if (MM == 1) {
str1 = (YY - 1) + "-" + 12 + "-" + "25 00:00:00";
} else {
str1 = YY + "-" + ((MM - 1) > 9 ? MM - 1 : "0" + (MM - 1)) + "-" + "25 00:00:00";
}
str2 = YY + "-" + (MM > 9 ? MM : "0" + MM) + "-" + "25 23:59:59";
}
obj.put("startTime", str1);
obj.put("endTime", str2);
System.out.println(str1);
System.out.println(str2);
return obj;
}
}

@ -451,8 +451,8 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
//安全 - 巡检
List<BsSafePatrolInspectionEntity> piList = inspectionService.getByCode(code);
piList = piList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(BsSafePatrolInspectionEntity::getIpId))), ArrayList::new));
//piList = piList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
// new TreeSet<>(Comparator.comparing(BsSafePatrolInspectionEntity::getIpId))), ArrayList::new));
if (null == piList || piList.size() == 0) {
if (flag) {
throw new RuntimeException("未查询到安全巡检任务,product.noPatrolCheckTask");

Loading…
Cancel
Save