e8716608 张雷

feat(equipment): 添加维保任务提醒定时 job

- 新增 TaskRemindJob 类实现人员任务提醒定时任务
- 添加维保任务查询和消息推送逻辑
-优化 EquipmentMaintainTaskMapper 接口,增加 getList 方法
-调整 NFDataSyncJob 中的 SQL 查询条件
- 移除 WorkAnalysisController 中的冗余代码
1 个父辈 ab98a7fd
......@@ -312,31 +312,17 @@ public class WorkAnalysisController {
}
private String getSafeProgressSql( String departIds,String startTime, String endTime){
/* JdbcTemplate jdbcTemplate = (JdbcTemplate) SpringContextUtils.getBean("master");
String userIdsSql = "select GROUP_CONCAT( DISTINCT exam_user_ids) 'user_ids' from edu_paper where end_time >='"+startTime+"' and end_time <= '"+endTime+"'";
String userIds = jdbcTemplate.queryForObject(userIdsSql , String.class);
if(StringUtils.isNotEmpty(userIds)){
userIds = JSUtils.quoteEach(userIds,",");
}else{
userIds = "''";
}*/
String sql = "";
//会议任务
sql += " left join( select depart_id , count(1) 'count' from ajh_meeting_send where meet_status =2 and meet_time >='"+startTime+"' and meet_time <= '"+endTime+"' group by depart_id )aaa on aaa.depart_id = d.id ";
sql += " left join (select depart_id , count(1) 'count' from ajh_meeting_send where meet_id in (select id from ajh_meeting where send_time >='"+startTime+"' and send_time <= '"+endTime+"') group by depart_id ) bbb on bbb.depart_id = d.id ";
// 考试任务
// sql += " left join (select depart_id,count(user_id) 'count' from edu_user_paper where DATE_FORMAT(end_time,'%Y-%m-%d') >='"+startTime+"' and end_time <= '"+endTime+"' and user_id in("+userIds+") group by depart_id )ccc on ccc.depart_id = d.id";
// sql += " left join ( select dep_id,count(user_id) 'count' from sys_user_depart where user_id in("+userIds+") group by dep_id )ddd on ddd.dep_id = d.id";
sql += " left join (select depart_id ,count(id) 'count' from edu_paper_task where DATE_FORMAT(end_time,'%Y-%m-%d') >='"+startTime+"' and DATE_FORMAT(end_time,'%Y-%m-%d') <= '"+endTime+"' and status=1 group by depart_id )ccc on ccc.depart_id = d.id";
sql += " left join ( select depart_id ,count(id) 'count' from edu_paper_task where DATE_FORMAT(create_time,'%Y-%m-%d') >='"+startTime+"' and DATE_FORMAT(end_time,'%Y-%m-%d') <= '"+endTime+"' group by depart_id )ddd on ddd.dep_id = d.id";
sql += " left join ( select depart_id ,count(id) 'count' from edu_paper_task where DATE_FORMAT(create_time,'%Y-%m-%d') >='"+startTime+"' and DATE_FORMAT(end_time,'%Y-%m-%d') <= '"+endTime+"' group by depart_id ) ddd on ddd.depart_id = d.id";
//风险排查任务
sql += " left join ( select depart_id ,count(id) 'count' from danger_inspection_record where status = '2' and report_date >= '"+startTime+" 00:00:00' and report_date <='"+endTime+" 23:59:59' group by depart_id ) eee on eee.depart_id = d.id ";
sql += " left join ( select depart_id ,count(id) 'count' from danger_inspection_record where report_date >= '"+startTime+" 00:00:00' and report_date <='"+endTime+" 23:59:59' group by depart_id ) ggg on ggg.depart_id = d.id ";
sql += " left join( select sum( (DATEDIFF('"+endTime+"', '"+startTime+"') +1)*24/ dlm.frequency ) 'count' , dlm.depart_id from danger_level_manage dlm where dlm.frequency IS NOT NULL and frequency <> '' ) fff on fff.depart_id = d.id ";
return sql ;
}
......
......@@ -32,7 +32,7 @@ public class NFDataSyncJob implements Job {
//供水指标
private static String gsFields = "GSL,YSSD,CCSWD,YSWD,CCSPH,YSPH,CCSAD,YSAD,CCSHYL,YSHYL,CCSSD," +
"YSNRDCGJQ,CCSRYHT,YSRYHT,CCSNRDCGJQ,CCSZDCGJQ,CCSJLZS,YSZDCGJQ,YSJLZS,CCSRYKJD,YSRYKJD,CCSCHW,YSCHW,CCSHZD,YSHZD";
private static String nhFields = "DLHJ";
/**
* 若参数变量名修改 QuartzJobController中也需对应修改
*/
......@@ -51,7 +51,7 @@ public class NFDataSyncJob implements Job {
Map<String,String> nfData = nfDrugConvert();
log.info("开始同步【"+yesterday+"】恩菲的数据入报表");
JdbcTemplate nfDb = (JdbcTemplate) SpringContextUtils.getBean("nf-db");
String sql = "select * from day_report_data where update_time like '"+yesterday+"%' and item_type = 'nhrb'";
String sql = "select * from day_report_data where update_time like '"+yesterday+"%'";
List<Map<String, Object>> dataList = nfDb.queryForList(sql);
if(dataList.size() > 0){
for (Map<String, Object> map : dataList) {
......@@ -76,6 +76,10 @@ public class NFDataSyncJob implements Job {
data.put(itemCode, itemValue);
data.put("reportId", ReportConstant.view6643);
reportDataService.insertOrUpdateReportData(departId, time, data, ReportConstant.view6643);
}else if(nhFields.contains(itemCode)){
data.put(itemCode, itemValue);
data.put("reportId", ReportConstant.view3a24);
reportDataService.insertOrUpdateReportData(departId, time, data, ReportConstant.view3a24);
}else{
data.put(itemCode, itemValue);
}
......
......@@ -2,6 +2,7 @@ package com.skua.modules.equipment.mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.skua.modules.equipment.vo.*;
......@@ -58,7 +59,8 @@ public interface EquipmentMaintainTaskMapper extends BaseMapper<EquipmentMaintai
Integer deleteMaintainTask(@Param("time") String time, @Param("id") String id);
Integer updateResultsEnforcement(@Param("nowDate") Date nowDate, @Param("afterResultsEnforcement") Integer afterResultsEnforcement, @Param("nowResultsEnforcement") Integer nowResultsEnforcement, @Param("id") String id);
Integer updateResultsEnforcement(@Param("nowDate") Date nowDate, @Param("afterResultsEnforcement") Integer afterResultsEnforcement,
@Param("nowResultsEnforcement") Integer nowResultsEnforcement, @Param("id") String id);
//新增每个任务对应维护内容的结果
Integer addTaskResult(String id,String taskId,String standardId,String result);
......@@ -77,5 +79,8 @@ public interface EquipmentMaintainTaskMapper extends BaseMapper<EquipmentMaintai
*/
List<EquipmentMaintainTaskForm> queryMaintainTaskFormByList(EquipmentMaintainTaskForm maintainTaskForm);
IPage<EquipmentMaintainTaskForm> queryMaintainTaskFormByPage(Page<EquipmentMaintainTaskForm> page, @Param("param") EquipmentMaintainTaskForm maintainTaskForm);
IPage<EquipmentMaintainTaskForm> queryMaintainTaskFormByPage(Page<EquipmentMaintainTaskForm> page,
@Param("param") EquipmentMaintainTaskForm maintainTaskForm);
List<Map<String, Object>> getList(@Param("startTime") String startTime, @Param("endTime") String endTime);
}
......
......@@ -161,6 +161,9 @@
#{item}
</foreach>
</if>
<if test="ids ==null or ids.size()==0">
id in ('')
</if>
</where>
</select>
......
......@@ -56,7 +56,11 @@
and emt.plan_id=#{equipmentMaintainTask.planId}
</if>
<if test="equipmentMaintainTask.departId !=null and equipmentMaintainTask.departId !=''">
and emt. depart_id=#{equipmentMaintainTask.departId}
and emt.depart_id in
<foreach item="item" index="index" collection="equipmentMaintainTask.departId.split(',')" open="("
separator="," close=")">
'${item}'
</foreach>
</if>
<if test="equipmentMaintainTask.maintainPlanName !=null and equipmentMaintainTask.maintainPlanName !=''">
and emt.maintain_plan_name like concat('%',#{equipmentMaintainTask.maintainPlanName},'%')
......@@ -81,7 +85,7 @@
and emt.results_enforcement=#{equipmentMaintainTask.resultsEnforcement}
</if>
<if test="equipmentMaintainTask.maintainTime !=null ">
and #{equipmentMaintainTask.maintainTime}>= emt. maintain_time
and #{equipmentMaintainTask.maintainTime}>= emt.maintain_time
</if>
<!-- <if test="equipmentMaintainTask.taskStartTime !=null and equipmentMaintainTask.taskStartTime !=''">
and emt.maintain_time BETWEEN #{equipmentMaintainTask.taskStartTime} and
......@@ -271,5 +275,8 @@
order by aaa.end_time desc
</select>
<select id="getList" resultType="java.util.HashMap">
</select>
</mapper>
......
package com.skua.modules.equipment.quartz;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import com.skua.core.util.push.MessageEntity;
import com.skua.modules.alarmtmp.entity.AlarmRecordHistory;
import com.skua.modules.equipment.entity.EquipmentMaintainTask;
import com.skua.modules.equipment.service.IEquipmentInfoService;
import com.skua.modules.equipment.service.IEquipmentMaintainTaskService;
import com.skua.modules.system.service.WebNoticePushServiceExt;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @program: skboot
* @description: 人员任务提醒定时任务
* @author: zhanglei
* @create: 2025/03/08 16:05:05
*/
@Slf4j
@Component
public class TaskRemindJob implements Job {
@Autowired
private IEquipmentMaintainTaskService equipmentMaintainTaskService;
@Autowired
private WebNoticePushServiceExt webNoticePushServiceExt;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.info("人员任务提醒定时任务开始");
//当前时间
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//一小时后时间
LocalDateTime oneHourLater = now.plus(1, ChronoUnit.HOURS);
String startTime = now.format(formatter);
String endTime = oneHourLater.format(formatter);
startTime = "2025-04-07 00:00:00";
endTime = "2025-04-08 23:59:59";
List<Map<String, Object>> wbList = getWbList(startTime,endTime);
//推送维保消息
pushWbMessage(wbList);
log.info("人员任务提醒定时任务结束");
}
private boolean pushWbMessage(List<Map<String, Object>> wbList) {
for (Map<String, Object> wbMap : wbList) {
//获取用户列表后做消息推送
MessageEntity messageEntity = new MessageEntity();
messageEntity.setMessageTitle("流程审批消息");
messageEntity.setMessageBody("您有一条【" + wbMap.get("taskName") + "】维保任务需要完成,请及时处理");
messageEntity.setReceiveUser(null);
messageEntity.setReceiveUserCid(null);
messageEntity.setSendUser("系统");
messageEntity.setForwardTag("maintain");
webNoticePushServiceExt.pushMessage(messageEntity, "maintain", "M");
}
return true;
}
//maintain_plan_name 计划名称' maintainer_id` 维保人
private List<Map<String, Object>> getWbList(String startTime, String endTime) {
List<Map<String, Object>> list = new ArrayList<>();
list = equipmentMaintainTaskService.getList(startTime, endTime);
return list;
}
}
......@@ -58,4 +58,5 @@ public interface IEquipmentMaintainTaskService extends IService<EquipmentMaintai
*/
List<EquipmentMaintainTaskForm> queryMaintainTaskFormByList( EquipmentMaintainTaskForm maintainTaskForm);
List<Map<String, Object>> getList(String startTime, String endTime);
}
......
......@@ -8,6 +8,7 @@ import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import com.skua.core.util.ConvertUtils;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -133,17 +134,27 @@ public class EquipmentMaintainPlanServiceImpl extends ServiceImpl<EquipmentMaint
@Override
public void release(EquipmentMaintainPlanDTO equipmentMaintainPlanDTO) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//判断状态
EquipmentMaintainPlan equipmentMaintainPlan = equipmentMaintainPlanMapper.selectById(equipmentMaintainPlanDTO.getId());
if (null != equipmentMaintainPlan && equipmentMaintainPlanDTO.getReleaseStatus() == 0) {
//取消发布动作,保留已经开始的任务,删除未来没有开始的任务
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String a = sdf.format(new Date())+" 00:00:00";
equipmentMaintainTaskMapper.deleteMaintainTask(a, equipmentMaintainPlanDTO.getId());
}
if (equipmentMaintainPlanDTO.getReleaseStatus() == 1) {
String startTimeStr = DateUtils.format(equipmentMaintainPlan.getStartTime(), "yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date today = calendar.getTime();
Date startTime = equipmentMaintainPlan.getStartTime();
// 比较 startTime 是否大于当天零点
if (!startTime.after(today)) {
startTimeStr = sdf.format(new Date())+" 00:00:00";
}
String endTimeStr = DateUtils.format(equipmentMaintainPlan.getEndTime(), "yyyy-MM-dd")+" 00:00:00";
//循环周期
int cycle = equipmentMaintainPlan.getCycle();
......@@ -186,7 +197,6 @@ public class EquipmentMaintainPlanServiceImpl extends ServiceImpl<EquipmentMaint
}
}
//厂站
List<EquipmentMaintainStandard> equipmentMaintainStandardByPlanId = equipmentMaintainPlanMapper.getEquipmentMaintainStandardByPlanId(equipmentMaintainPlan.getId());
List<String> collect = equipmentMaintainStandardByPlanId.stream().map(EquipmentMaintainStandard::getId).collect(Collectors.toList());
......@@ -194,16 +204,35 @@ public class EquipmentMaintainPlanServiceImpl extends ServiceImpl<EquipmentMaint
List<EquipmentInformationVO> equipmentInformationByPlanId = equipmentMaintainPlanMapper.getEquipmentInformationByPlanId(equipmentMaintainPlan.getId());
List<String> collect1 = equipmentInformationByPlanId.stream().map(EquipmentInformationVO::getId).collect(Collectors.toList());
equipmentMaintainPlanDTO.setEquipmentIds(collect1);
if(equipmentMaintainPlanDTO.getEquipmentIds().size()==0){
createTaskByTimeList(timeList,equipmentMaintainPlan,null,modeAndLevelByIds);
}else{
for (int m = 0; m < equipmentMaintainPlanDTO.getEquipmentIds().size(); m++) {
createTaskByTimeList(timeList,equipmentMaintainPlan,equipmentMaintainPlanDTO.getEquipmentIds().get(m),modeAndLevelByIds);
}
}
}
equipmentMaintainPlan.setReleaseStatus(equipmentMaintainPlanDTO.getReleaseStatus());
equipmentMaintainPlanMapper.updateById(equipmentMaintainPlan);
}
//创建任务
private void createTaskByTimeList(List<String> timeList,EquipmentMaintainPlan equipmentMaintainPlan,String equipmentId,EquipmentMaintainStandard modeAndLevelByIds) {
try{
if(timeList!=null&&timeList.size()<500) {
for(String time : timeList) {
String[] timeArray = time.split("#");
EquipmentMaintainTask equipmentMaintainTask = new EquipmentMaintainTask();
equipmentMaintainTask.setEquipmentId(equipmentMaintainPlanDTO.getEquipmentIds().get(m));
equipmentMaintainTask.setEquipmentId(equipmentId);
equipmentMaintainTask.setDepartId(equipmentMaintainPlan.getDepartId());
equipmentMaintainTask.setMaintainPlanName(equipmentMaintainPlan.getPlanName());
if(ConvertUtils.isNotEmpty(modeAndLevelByIds)){
equipmentMaintainTask.setMaintainMode(modeAndLevelByIds.getMaintenanceMode());
equipmentMaintainTask.setMaintainLevel(modeAndLevelByIds.getMaintenanceLevel());
}else{
equipmentMaintainTask.setMaintainMode(null);
equipmentMaintainTask.setMaintainLevel(null);
}
equipmentMaintainTask.setResultsEnforcement(1);
equipmentMaintainTask.setStartTime(DateUtils.parse(timeArray[0], "yyyy-MM-dd HH:mm:ss"));
equipmentMaintainTask.setEndTime(DateUtils.parse(timeArray[1], "yyyy-MM-dd HH:mm:ss"));
......@@ -219,10 +248,10 @@ public class EquipmentMaintainPlanServiceImpl extends ServiceImpl<EquipmentMaint
equipmentMaintainTaskMapper.insert(equipmentMaintainTask);
}
}
}catch (Exception e) {
e.printStackTrace();
}
}
equipmentMaintainPlan.setReleaseStatus(equipmentMaintainPlanDTO.getReleaseStatus());
equipmentMaintainPlanMapper.updateById(equipmentMaintainPlan);
}
......
package com.skua.modules.equipment.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.skua.modules.equipment.vo.*;
......@@ -161,6 +155,13 @@ public class EquipmentMaintainTaskServiceImpl extends ServiceImpl<EquipmentMaint
if (null != equipmentMaintainTask.getType() && equipmentMaintainTask.getType() == 0) {
//type=0表示保养任务查询,type=1表示保养记录查询
equipmentMaintainTask.setPlanArrangerId(userCode);
}else{
if (null == equipmentMaintainTask.getType()) {
if(ConvertUtils.isEmpty(equipmentMaintainTask.getDepartId())){
equipmentMaintainTask.setDepartId(BaseContextHandler.getDeparts());
}
equipmentMaintainTask.setResultsEnforcement(1);
}
}
List<EquipmentMaintainTaskVO> equipmentMaintainTasks = baseMapper.queryCustomPageList(pageList, equipmentMaintainTask);
equipmentMaintainTasks.forEach(e -> {
......@@ -173,8 +174,7 @@ public class EquipmentMaintainTaskServiceImpl extends ServiceImpl<EquipmentMaint
if(e.getResultsEnforcement()==3&&userCode.equals(e.getPlanAccepterId())) {
e.setCurrentState(3);
}
}
);
});
return pageList.setRecords(equipmentMaintainTasks);
}
......@@ -364,6 +364,7 @@ public class EquipmentMaintainTaskServiceImpl extends ServiceImpl<EquipmentMaint
* @param maintainTaskForm
* @return
*/
@Override
public IPage<EquipmentMaintainTaskForm> queryMaintainTaskFormByPage(Page<EquipmentMaintainTaskForm> page, EquipmentMaintainTaskForm maintainTaskForm){
return this.baseMapper.queryMaintainTaskFormByPage(page,maintainTaskForm);
}
......@@ -372,12 +373,19 @@ public class EquipmentMaintainTaskServiceImpl extends ServiceImpl<EquipmentMaint
* @param maintainTaskForm
* @return
*/
@Override
public List<EquipmentMaintainTaskForm> queryMaintainTaskFormByList( EquipmentMaintainTaskForm maintainTaskForm){
List<EquipmentMaintainTaskForm> dataList = this.baseMapper.queryMaintainTaskFormByList(maintainTaskForm);
return dataList;
}
@Override
public List<Map<String, Object>> getList(String startTime, String endTime) {
List<Map<String, Object>> list = baseMapper.getList(startTime, endTime);
return list;
}
@Override
public boolean updateResultsEnforcement(String id) {
baseMapper.updateResultsEnforcement(new Date(), 1, 2, id);
return true;
......
......@@ -417,42 +417,15 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
return pageList.setRecords(equipmentStatistics);
}
@Override
public IPage<EquipmentStatisticsCountVO> getEquipmentStatisticsDetailsNew(Page<EquipmentStatisticsCountVO> pageList, ReportStatisticsDTO reportStatisticsDTO) {
/* String dict_sql = "select t.item_value as 'id' , t.item_text , 'name' from sys_dict_item t where t.dict_id in (select id from sys_dict where dict_code = 'equipment-equipment_level') order by t.id asc ";
List<Map<String,Object>> mapList = commonSqlService.queryForList(dict_sql);
List<String> categoryNameList = new ArrayList<>();
List<String> categoryIdList = new ArrayList<>();*/
/* String startTime;
String endTime = DateUtils.getDateByAfterMonth(0);//当前日期
if (6 == reportStatisticsDTO.getTimeUnit()) {
startTime = DateUtils.getDateByAfterMonth(-6);
} else {
startTime = DateUtils.getDateByAfterMonth(-12);
}
reportStatisticsDTO.setStartTime(startTime);
reportStatisticsDTO.setEndTime(endTime);*/
return productionEquipmentMapper.getEquipmentStatisticsDetailsNew(pageList,reportStatisticsDTO);
IPage<EquipmentStatisticsCountVO> page = productionEquipmentMapper.getEquipmentStatisticsDetailsNew(pageList,reportStatisticsDTO);
return page;
}
@Override
public List<TOPTenVO> getEquipmentState(ReportStatisticsDTO reportStatisticsDTO) {
List<TOPTenVO> list = new ArrayList<>();
/* TOPTenVO topTenVO = new TOPTenVO();
reportStatisticsDTO.setEquipmentType("wxdd");
Integer equipmentStatus = productionEquipmentMapper.getEquipmentStatus(reportStatisticsDTO);
topTenVO.setFactoryName("待修");
topTenVO.setNum(equipmentStatus.toString());
list.add(topTenVO);
TOPTenVO topTenVO1 = new TOPTenVO();
reportStatisticsDTO.setEquipmentType("sbwx");
Integer equipmentStatus1 = productionEquipmentMapper.getEquipmentStatus(reportStatisticsDTO);
topTenVO1.setFactoryName("在修");
topTenVO1.setNum(equipmentStatus1.toString());
list.add(topTenVO1);*/
String sql = "select count(1) from equipment_repair where del_flag = 1 AND finish_flag = 'djx' ";
if(StringUtils.isNotEmpty(reportStatisticsDTO.getStartTime() )){
sql += " AND create_time >='"+reportStatisticsDTO.getStartTime()+"' ";
......
package com.skua.modules.equipment.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.skua.core.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @auther kangwei
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!