135 lines
5.3 KiB
Java
Raw Normal View History

2023-07-10 15:20:27 +08:00
package com.zhgd.xmgl.task;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
2023-11-27 10:48:17 +08:00
import com.alibaba.fastjson.JSON;
2023-08-04 17:25:38 +08:00
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
2023-08-02 18:07:29 +08:00
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
2023-10-11 11:16:24 +08:00
import com.zhgd.mybatis.Aes;
2023-08-04 17:25:38 +08:00
import com.zhgd.xmgl.modules.basicdata.entity.Engineering;
2023-08-02 18:07:29 +08:00
import com.zhgd.xmgl.modules.basicdata.entity.EngineeringMain;
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
import com.zhgd.xmgl.modules.basicdata.service.IEngineeringMainService;
2023-08-04 17:25:38 +08:00
import com.zhgd.xmgl.modules.basicdata.service.IEngineeringService;
2023-08-02 18:07:29 +08:00
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
2023-07-31 17:55:54 +08:00
import com.zhgd.xmgl.modules.safety.entity.InspectRecord;
2023-07-10 15:20:27 +08:00
import com.zhgd.xmgl.modules.safety.entity.ProjectSubItem;
2023-08-02 18:07:29 +08:00
import com.zhgd.xmgl.modules.safety.entity.Remind;
2023-07-26 18:10:45 +08:00
import com.zhgd.xmgl.modules.safety.service.IInspectRecordService;
2023-07-10 15:20:27 +08:00
import com.zhgd.xmgl.modules.safety.service.IProjectSubItemService;
2023-08-02 18:07:29 +08:00
import com.zhgd.xmgl.modules.safety.service.IRemindService;
2023-08-04 17:25:38 +08:00
import com.zhgd.xmgl.util.SMS;
2023-07-10 15:20:27 +08:00
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
2023-07-26 18:10:45 +08:00
import java.util.Arrays;
2023-07-10 15:20:27 +08:00
import java.util.Date;
import java.util.List;
/**
* @description: 视频监控定时任务
**/
@Slf4j
@Component
public class SlippageTask {
@Autowired
private IProjectSubItemService projectSubItemService;
2023-07-26 18:10:45 +08:00
@Autowired
private IInspectRecordService inspectRecordService;
2023-08-02 18:07:29 +08:00
@Autowired
private IRemindService remindService;
@Autowired
private IEngineeringMainService engineeringMainService;
2023-08-04 17:25:38 +08:00
@Autowired
private IEngineeringService engineeringService;
2023-08-02 18:07:29 +08:00
@Autowired
private ISystemUserService systemUserService;
2023-07-10 15:20:27 +08:00
/**
2023-07-26 18:10:45 +08:00
* 每天凌晨计算项目进度是否逾期临期
2023-07-10 15:20:27 +08:00
*/
2023-08-04 17:25:38 +08:00
@Scheduled(cron = "0 0 1 * * ?")
2023-07-10 15:20:27 +08:00
private void projectSubItem() {
2023-10-11 11:16:24 +08:00
List<String> phone = new ArrayList<>();
String desc = "施工进度逾期";
2023-07-26 18:10:45 +08:00
List<Integer> states = Arrays.asList(3, 6, 7);
2023-07-10 15:20:27 +08:00
List<ProjectSubItem> change = new ArrayList<>();
List<ProjectSubItem> list = projectSubItemService.list();
list.stream().forEach(l -> {
2023-07-26 18:10:45 +08:00
if (l.getState() < 3 && DateUtil.between(new Date(), l.getPlanEndTime(), DateUnit.DAY, false) <= 15) {
2023-07-10 15:20:27 +08:00
l.setState(4);
change.add(l);
}
2023-07-26 18:10:45 +08:00
if (!states.contains(l.getState()) && DateUtil.between(l.getPlanEndTime(), new Date(), DateUnit.DAY, false) > 0) {
l.setState(5);
change.add(l);
2023-10-11 11:16:24 +08:00
saveRemind(1, desc, l.getEngineeringSn(), phone);
2023-07-26 18:10:45 +08:00
}
2023-07-10 15:20:27 +08:00
});
if (change.size() > 0) {
projectSubItemService.updateBatchById(change);
}
2023-10-11 11:16:24 +08:00
if (phone.size() > 0) {
JSONObject params = new JSONObject();
2023-11-27 10:48:17 +08:00
params.put("phone", Aes.hzEncrypt(JSON.toJSONString(phone)));
2023-10-11 11:16:24 +08:00
params.put("project", Aes.hzEncrypt("项目管理子系统"));
params.put("alarm", Aes.hzEncrypt(desc));
SMS.sendToPhone(params);
}
2023-07-10 15:20:27 +08:00
log.info("=========定时修改项目进度状态任务执行成功========");
}
2023-07-26 18:10:45 +08:00
2023-10-11 11:16:24 +08:00
private void saveRemind(Integer type, String desc, String engineeringSn, List<String> phone) {
2023-08-02 18:07:29 +08:00
Remind remind = new Remind();
EngineeringMain jsUser = engineeringMainService.getOne(Wrappers.<EngineeringMain>lambdaQuery()
2023-08-04 17:25:38 +08:00
.eq(EngineeringMain::getEngineeringSn, engineeringSn).eq(EngineeringMain::getType, 1));
2023-08-02 18:07:29 +08:00
if (jsUser != null) {
2023-08-04 17:25:38 +08:00
Engineering engineering = engineeringService.getOne(Wrappers.<Engineering>lambdaQuery().eq(Engineering::getEngineeringSn, jsUser.getEngineeringSn()));
2023-08-02 18:07:29 +08:00
SystemUser manager = systemUserService.getOne(Wrappers.<SystemUser>lambdaQuery().eq(SystemUser::getSn, jsUser.getEnterpriseSn()).eq(SystemUser::getIsManager, true));
remind.setType(type);
remind.setRemindDesc(desc);
remind.setCreateTime(new Date());
remind.setUserId(manager.getUserId());
remind.setUserPhone(manager.getUserTel());
remindService.save(remind);
2023-08-04 17:25:38 +08:00
if (StringUtils.isNotBlank(manager.getUserTel())) {
2023-10-11 11:16:24 +08:00
phone.add(manager.getUserTel());
2023-08-04 17:25:38 +08:00
}
2023-08-02 18:07:29 +08:00
}
}
2023-07-26 18:10:45 +08:00
/**
* 每天凌晨计算安全质量临期
*/
2023-07-31 17:55:54 +08:00
@Scheduled(cron = "0 0 1 * * ?")
private void inspectRecord() {
List<Integer> states = Arrays.asList(1, 4);
List<InspectRecord> change = new ArrayList<>();
List<InspectRecord> list = inspectRecordService.list();
list.stream().forEach(l -> {
if (!states.contains(l.getState()) && DateUtil.between(new Date(), l.getDeadline(), DateUnit.DAY, false) <= 15) {
l.setSlippageState(2);
change.add(l);
}
if (!states.contains(l.getState()) && DateUtil.between(l.getDeadline(), new Date(), DateUnit.DAY, false) > 0) {
l.setSlippageState(3);
change.add(l);
}
});
if (change.size() > 0) {
inspectRecordService.updateBatchById(change);
}
log.info("=========定时修改项目进度状态任务执行成功========");
}
2023-07-10 15:20:27 +08:00
}