Lius
2023-11-07 7389eaa9dfccf6765fc9b3c62b258625292181c3
自动生成设备工作日历任务
已添加1个文件
已修改4个文件
115 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcBigScreenEquipmentDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/GenerateDeviceCalendarJob.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcBigScreenEquipmentDto.java
@@ -21,6 +21,8 @@
    private Integer equipmentStatus;
    private String equId;
    /**
     * åæ ‡-å·¦
     */
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/GenerateDeviceCalendarJob.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package org.jeecg.modules.mdc.job;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.mdc.service.IMdcDeviceCalendarService;
import org.jeecg.modules.mdc.util.ThrowableUtil;
import org.jeecg.modules.quartz.entity.QuartzJob;
import org.jeecg.modules.quartz.entity.SysQuartzLog;
import org.jeecg.modules.quartz.service.IQuartzJobService;
import org.jeecg.modules.quartz.service.ISysQuartzLogService;
import org.jeecg.modules.system.service.ISysAnnouncementService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * @author Lius
 * @date 2023/11/6 17:45
 */
@Slf4j
public class GenerateDeviceCalendarJob implements Job {
    @Resource
    private IQuartzJobService quartzJobService;
    @Resource
    private ISysQuartzLogService sysQuartzLogService;
    @Resource
    private ISysAnnouncementService sysAnnouncementService;
    @Resource
    private IMdcDeviceCalendarService mdcDeviceCalendarService;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        SysQuartzLog quartzLog = new SysQuartzLog();
        quartzLog.setCreateTime(new Date());
        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
        if (byJobClassName != null && !byJobClassName.isEmpty()) {
            quartzLog.setJobId(byJobClassName.get(0).getId());
        }
        log.info("定时生成设备工作日历任务 GenerateDeviceCalendarJob start!  æ—¶é—´:" + DateUtils.now());
        long startTime = System.currentTimeMillis();
        try {
            mdcDeviceCalendarService.generateDeviceCalendar();
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
            quartzLog.setIsSuccess(-1);
            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
            // å‘送消息通知
            sysAnnouncementService.jobSendMessage("定时生成双休日任务", quartzLog.getExceptionDetail());
        }
        long endTime = System.currentTimeMillis();
        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
        sysQuartzLogService.save(quartzLog);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml
@@ -14,7 +14,8 @@
            mew.coordinate_left coordinateLeft,
            mew.coordinate_top coordinateTop,
            mew.vw vw,
            mew.vh vh
            mew.vh vh,
            me.id equId
        FROM
            EquipmentLog a
            INNER JOIN ( SELECT EquipmentID, MAX ( CollectTime ) 'maxgdtime' FROM EquipmentLog GROUP BY EquipmentID ) b ON a.EquipmentID= b.EquipmentID
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java
@@ -66,4 +66,10 @@
     * @return
     */
    BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate);
    /**
     * ç”Ÿæˆè®¾å¤‡å·¥ä½œæ—¥åކ
     */
    void generateDeviceCalendar();
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
@@ -6,11 +6,14 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.modules.mdc.entity.MdcDeviceCalendar;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.mdc.entity.MdcShiftSub;
import org.jeecg.modules.mdc.entity.MdcVacationManagement;
import org.jeecg.modules.mdc.mapper.MdcDeviceCalendarMapper;
import org.jeecg.modules.mdc.service.IMdcDeviceCalendarService;
import org.jeecg.modules.mdc.service.IMdcEquipmentService;
import org.jeecg.modules.mdc.service.IMdcShiftSubService;
import org.jeecg.modules.mdc.service.IMdcVacationManagementService;
import org.jeecg.modules.mdc.vo.EquipmentCalendarVo;
import org.jeecg.modules.mdc.vo.MdcDeviceCalendarQueryVo;
import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo;
@@ -20,6 +23,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -37,6 +41,9 @@
    private IMdcEquipmentService mdcEquipmentService;
    @Resource
    private IMdcShiftSubService mdcShiftSubService;
    @Resource
    private IMdcVacationManagementService mdcVacationManagementService;
    /**
     * åˆ†é¡µåˆ—表查询
@@ -178,4 +185,39 @@
        return new BigDecimal(shiftCount).multiply(new BigDecimal("8")).multiply(new BigDecimal("60"));
    }
    /**
     * è‡ªåŠ¨ç”Ÿæˆè®¾å¤‡å·¥ä½œæ—¥åŽ†
     */
    @Override
    public void generateDeviceCalendar() {
        // æš‚定每天晚上11点执行
        //查询默认班制
        List<MdcDeviceCalendarVo> acquiesceShift = this.baseMapper.findAcquiesceShift();
        // èŽ·å–æ˜Žæ—¥æ—¥æœŸ
        String localDate = LocalDate.now().plusDays(1).toString();
        // èŽ·å–è®¾å¤‡åˆ—è¡¨
        List<MdcEquipment> equipmentList = mdcEquipmentService.list();
        List<MdcDeviceCalendar> result = new ArrayList<>();
        for (MdcEquipment mdcEquipment : equipmentList) {
            List<MdcDeviceCalendar> list = super.list(new LambdaQueryWrapper<MdcDeviceCalendar>().eq(MdcDeviceCalendar::getEquipmentId, mdcEquipment.getEquipmentId()).eq(MdcDeviceCalendar::getEffectiveDate, localDate.replaceAll("-", "")));
            if (list == null || list.isEmpty()) {
                List<MdcVacationManagement> vacationManagementList = mdcVacationManagementService.list(new LambdaQueryWrapper<MdcVacationManagement>().eq(MdcVacationManagement::getEquipmentId, mdcEquipment.getEquipmentId()).eq(MdcVacationManagement::getVacationDate, localDate));
                if (vacationManagementList == null || vacationManagementList.isEmpty()) {
                    String effectiveDate = localDate.replaceAll("-", "");
                    for (MdcDeviceCalendarVo mdcDeviceCalendarVo : acquiesceShift) {
                        MdcDeviceCalendar mdcDeviceCalendar = new MdcDeviceCalendar();
                        mdcDeviceCalendar.setEquipmentId(mdcEquipment.getEquipmentId());
                        mdcDeviceCalendar.setEffectiveDate(effectiveDate);
                        mdcDeviceCalendar.setShiftId(mdcDeviceCalendarVo.getShiftId());
                        mdcDeviceCalendar.setShiftSubId(mdcDeviceCalendarVo.getShiftSubId());
                        result.add(mdcDeviceCalendar);
                    }
                }
            }
        }
        if (!result.isEmpty()) {
            super.saveBatch(result);
        }
    }
}