Lius
2024-10-24 a7a4e0e6ae09c720e50dc22fc50c67519414067c
update
已添加11个文件
已修改29个文件
1024 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcComponentInfoController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeListDto.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeResultDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcComponentInfo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcComponentInfoMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcComponentInfoMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRepairMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcNoplanCloseMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessQuantityMapper.xml 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcStandardProcessDurationMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcVacationManagementMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcComponentInfoService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcComponentInfoServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoQueryVo.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeVo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/ClassMonthlyscheduleMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcProductDayscheduleMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/ClassMonthlyscheduleMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcProductDayscheduleMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IClassMonthlyScheduleService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcProductDayScheduleService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/ClassMonthlyScheduleServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcProductDayScheduleServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcComponentInfoController.java
@@ -53,7 +53,7 @@
                                   HttpServletRequest req) {
        QueryWrapper<MdcComponentInfo> queryWrapper = QueryGenerator.initQueryWrapper(mdcComponentInfo, req.getParameterMap());
        Page<MdcComponentInfo> page = new Page<MdcComponentInfo>(pageNo, pageSize);
        IPage<MdcComponentInfo> pageList = mdcComponentInfoService.page(page);
        IPage<MdcComponentInfo> pageList = mdcComponentInfoService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.mdc.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.mdc.entity.MdcOeeInfo;
import org.jeecg.modules.mdc.service.IMdcOeeInfoService;
import org.jeecg.modules.mdc.vo.MdcOeeInfoQueryVo;
import org.jeecg.modules.mdc.vo.MdcOeeVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
/**
 * @Description: OEE
 * @Author: lius
 * @Date: 2024-10-22
 * @Version: V1.0
 */
@Slf4j
@Api(tags = "OEE")
@RestController
@RequestMapping("/mdc/mdcOeeInfo")
public class MdcOeeInfoController extends JeecgController<MdcOeeInfo, IMdcOeeInfoService> {
    @Resource
    private IMdcOeeInfoService mdcOeeInfoService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param mdcOeeInfo
     * @return
     */
    @AutoLog(value = "OEE-分页列表查询")
    @ApiOperation(value = "OEE-分页列表查询", notes = "OEE-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(MdcOeeInfoQueryVo mdcOeeInfo) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        MdcOeeVo result = mdcOeeInfoService.pageList(userId, mdcOeeInfo);
        return Result.OK(result);
    }
    /**
     * æ·»åŠ 
     *
     * @param mdcOeeInfo
     * @return
     */
    @AutoLog(value = "OEE-添加")
    @ApiOperation(value = "OEE-添加", notes = "OEE-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody MdcOeeInfo mdcOeeInfo) {
        mdcOeeInfoService.save(mdcOeeInfo);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param mdcOeeInfo
     * @return
     */
    @AutoLog(value = "OEE-编辑")
    @ApiOperation(value = "OEE-编辑", notes = "OEE-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<?> edit(@RequestBody MdcOeeInfo mdcOeeInfo) {
        mdcOeeInfoService.updateById(mdcOeeInfo);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "OEE-通过id删除")
    @ApiOperation(value = "OEE-通过id删除", notes = "OEE-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
        mdcOeeInfoService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "OEE-批量删除")
    @ApiOperation(value = "OEE-批量删除", notes = "OEE-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        this.mdcOeeInfoService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡id查询
     *
     * @param id
     * @return
     */
    @AutoLog(value = "OEE-通过id查询")
    @ApiOperation(value = "OEE-通过id查询", notes = "OEE-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
        MdcOeeInfo mdcOeeInfo = mdcOeeInfoService.getById(id);
        return Result.OK(mdcOeeInfo);
    }
    /**
     * å¯¼å‡ºexcel
     *
     * @param request
     * @param mdcOeeInfo
     */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, MdcOeeInfo mdcOeeInfo) {
        return super.exportXls(request, mdcOeeInfo, MdcOeeInfo.class, "OEE");
    }
    /**
     * é€šè¿‡excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, MdcOeeInfo.class);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeListDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package org.jeecg.modules.mdc.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author Lius
 * @date 2024/10/22 13:46
 */
@Data
public class MdcOeeListDto {
    /**
     * è®¾å¤‡ç¼–码
     */
    private String equipmentId;
    /**
     * è®¾å¤‡åç§°
     */
    private String equipmentName;
    /**
     * ç»„别
     */
    private String clazz;
    /**
     * è®¾å¤‡ç±»åž‹
     */
    private String equipmentType;
    /**
     * ç­æ¬¡
     */
    private String shiftSubName;
    /**
     * oee数据
     */
    private List<MdcOeeResultDto> dataList;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeResultDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package org.jeecg.modules.mdc.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author Lius
 * @date 2024/10/22 15:11
 */
@Data
public class MdcOeeResultDto {
    /**
     * æœ‰æ•ˆæ—¥æœŸ
     */
    private String theDate;
    /**
     * oee
     */
    private BigDecimal oeeRate = BigDecimal.ZERO;
    /**
     * é¢œè‰²
     */
    private String color;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcComponentInfo.java
@@ -60,13 +60,6 @@
    //@Excel(name = "产线", width = 15)
    //@ApiModelProperty(value = "产线")
    private String beltlineId;
//    /**
//     * è½¦é—´åç§°
//     */
//    @TableField(exist = false)
//    @Excel(name = "产线", width = 15)
//    @ApiModelProperty(value = "产线")
//    private String productionName;
    /**
     * æ˜¯å¦ä¸ºè‡ªåŠ¨çº¿
     */
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
package org.jeecg.modules.mdc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.system.base.entity.JeecgEntity;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * @Description: OEE
 * @Author: lius
 * @Date: 2024-10-22
 * @Version: V1.0
 */
@Data
@TableName("mdc_oee_info")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "mdc_oee_info对象", description = "OEE")
public class MdcOeeInfo extends JeecgEntity implements Serializable {
    private static final long serialVersionUID = 5695983942696582911L;
    /**
     * è®¾å¤‡ç¼–号
     */
    @Excel(name = "设备编号", width = 15)
    @ApiModelProperty(value = "设备编号")
    private String equipmentId;
    /**
     * æ—¥æœŸ
     */
    @Excel(name = "日期", width = 15)
    @ApiModelProperty(value = "日期")
    private String workDate;
    /**
     * å¼€å§‹æ—¶é—´
     */
    @Excel(name = "开始时间", width = 15)
    @ApiModelProperty(value = "开始时间")
    private String startTime;
    /**
     * ç»“束时间
     */
    @Excel(name = "结束时间", width = 15)
    @ApiModelProperty(value = "结束时间")
    private String endTime;
    /**
     * åŠ å·¥æ—¶é—´
     */
    @Excel(name = "加工时间", width = 15)
    @ApiModelProperty(value = "加工时间")
    private BigDecimal processLong;
    /**
     * å¾…机时间
     */
    @Excel(name = "待机时间", width = 15)
    @ApiModelProperty(value = "待机时间")
    private BigDecimal waitLong;
    /**
     * å¼€æœºæ—¶é—´
     */
    @Excel(name = "开机时间", width = 15)
    @ApiModelProperty(value = "开机时间")
    private BigDecimal openLong;
    /**
     * å…³æœºæ—¶é—´
     */
    @Excel(name = "关机时间", width = 15)
    @ApiModelProperty(value = "关机时间")
    private BigDecimal closeLong;
    /**
     * clazz
     */
    @Excel(name = "clazz", width = 15)
    @ApiModelProperty(value = "clazz")
    private String workTeam;
    /**
     * è®¡åˆ’量
     */
    @Excel(name = "计划量", width = 15)
    @ApiModelProperty(value = "计划量")
    private Integer planNum;
    /**
     * å®Œæˆé‡
     */
    @Excel(name = "完成量", width = 15)
    @ApiModelProperty(value = "完成量")
    private Integer completeNum;
    /**
     * åˆæ ¼é‡
     */
    @Excel(name = "合格量", width = 15)
    @ApiModelProperty(value = "合格量")
    private Integer qualityNum;
    /**
     * ç­äº§èƒ½
     */
    @Excel(name = "班产能", width = 15)
    @ApiModelProperty(value = "班产能")
    private Integer scheduleNum;
    /**
     * é›¶ä»¶å·
     */
    @Excel(name = "零件号", width = 15)
    @ApiModelProperty(value = "零件号")
    private String componentNo;
    /**
     * è·¨å¤©æ ‡è¯†
     */
    @Excel(name = "跨天标识", width = 15)
    @ApiModelProperty(value = "跨天标识")
    private String interDayFlag;
    /**
     * ç­åˆ¶ID
     */
    @Excel(name = "班制ID", width = 15)
    @ApiModelProperty(value = "班制ID")
    private String shiftId;
    /**
     * ç­æ¬¡ID
     */
    @Excel(name = "班次ID", width = 15)
    @ApiModelProperty(value = "班次ID")
    private String shiftSubId;
    /**
     * oee
     */
    @Excel(name = "oee", width = 15)
    @ApiModelProperty(value = "oee")
    private BigDecimal oeeRate;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package org.jeecg.modules.mdc.job;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.mdc.service.IMdcOeeInfoService;
import org.jeecg.modules.mdc.service.IMdcOverallEquipmentEfficiencyService;
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.*;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * @Description: å®šæ—¶è®¡ç®—设备综合效率OEE任务
 * @author: LiuS
 * @create: 2023-07-24 10:26
 */
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
@Slf4j
public class RunningOEEJob implements Job {
    /**
     * è‹¥å‚数变量名修改 QuartzJobController中也需对应修改  æ—¶é—´ï¼š yyyyMMdd ä¾‹ï¼š 20230414
     */
    private String parameter;
    public void setParameter(String parameter) {
        this.parameter = parameter;
    }
    @Resource
    private IQuartzJobService quartzJobService;
    @Resource
    private ISysAnnouncementService sysAnnouncementService;
    @Resource
    private ISysQuartzLogService sysQuartzLogService;
    @Resource
    private IMdcOeeInfoService mdcOeeInfoService;
    @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());
        }
        quartzLog.setParams(this.parameter);
        log.info("定时计算设备综合效率OEE任务 RunningOverallEquipmentEfficiencyJob start!  æ—¶é—´:" + DateUtils.now(), this.parameter);
        long startTime = System.currentTimeMillis();
        try {
            mdcOeeInfoService.runningOverallEquipmentEfficiency(this.parameter);
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
            quartzLog.setIsSuccess(-1);
            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
            // å‘送消息通知
            sysAnnouncementService.jobSendMessage("定时计算设备综合效率OEE任务", 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/job/RunningOverallEquipmentEfficiencyJob.java
@@ -64,7 +64,7 @@
            quartzLog.setIsSuccess(-1);
            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
            // å‘送消息通知
            sysAnnouncementService.jobSendMessage("定时统计段时间任务", quartzLog.getExceptionDetail());
            sysAnnouncementService.jobSendMessage("定时计算设备综合效率OEE任务", quartzLog.getExceptionDetail());
        }
        long endTime = System.currentTimeMillis();
        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcComponentInfoMapper.java
@@ -6,6 +6,8 @@
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.mdc.entity.MdcComponentInfo;
import java.util.List;
/**
 * @Description: é›¶ä»¶è¡¨
 * @Author: lius
@@ -22,4 +24,6 @@
     * @return
     */
    IPage<MdcComponentInfo> pageList(Page<MdcComponentInfo> page, @Param("mdcComponentInfo") MdcComponentInfo mdcComponentInfo);
    List<MdcComponentInfo> findByComponentNo(@Param("equipmentId") String equipmentId, @Param("productNo") String productNo);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.mdc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.mdc.entity.MdcOeeInfo;
import org.jeecg.modules.mdc.vo.MdcOeeInfoQueryVo;
import java.util.List;
/**
 * @Description: OEE
 * @Author: lius
 * @Date: 2024-10-22
 * @Version: V1.0
 */
public interface MdcOeeInfoMapper extends BaseMapper<MdcOeeInfo> {
    List<MdcOeeInfo> oeeList(@Param("vo") MdcOeeInfoQueryVo vo);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcComponentInfoMapper.xml
@@ -15,4 +15,16 @@
            </if>
        </where>
    </select>
    <select id="findByComponentNo" resultType="org.jeecg.modules.mdc.entity.MdcComponentInfo">
        SELECT
            t1.*
        FROM
            mdc_component_info t1
                LEFT JOIN mdc_production_equipment t2 ON t1.beltline_id = t2.production_id
                LEFT JOIN mdc_equipment t3 ON t3.id = t2.equipment_id
        WHERE
            t1.component_no = #{productNo}
          AND t3.equipment_id = #{equipmentId}
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
@@ -21,7 +21,7 @@
            LEFT JOIN mdc_equipment t4 ON t1.equipment_id = t4.equipment_id
        WHERE 1=1
        <if test="deviceCalendar.effectiveDate != null and deviceCalendar.effectiveDate != ''">
            AND t1.effective_date LIKE CONCAT('%',#{ deviceCalendar.effectiveDate },'%')
            AND t1.effective_date LIKE '%' + #{ deviceCalendar.effectiveDate } + '%'
        </if>
        <if test="deviceCalendar.equipmentId != null and deviceCalendar.equipmentId != ''">
            AND t1.equipment_id = #{ deviceCalendar.equipmentId }
@@ -91,7 +91,7 @@
        FROM
            mdc_device_calendar
        WHERE
            effective_date LIKE CONCAT(#{ validDate }, '%')
            effective_date LIKE #{ validDate } + '%'
            AND equipment_id = #{ equipmentId }
    </select>
@@ -102,7 +102,7 @@
        FROM
            mdc_device_calendar t1 LEFT JOIN mdc_shift t2 ON t1.shift_id = t2.id
        WHERE
            t1.effective_date LIKE CONCAT(#{ validDate }, '%')
            t1.effective_date LIKE #{ validDate } + '%')
            AND t1.equipment_id = #{ equipmentId }
    </select>
@@ -113,7 +113,7 @@
        FROM
            mdc_device_calendar
        WHERE
            effective_date LIKE CONCAT(#{ validDate }, '%')
            effective_date LIKE #{ validDate } + '%')
            AND equipment_id = #{ equipmentId }
    </select>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -195,10 +195,10 @@
            LEFT JOIN mdc_production t3 ON t2.production_id = t3.id
        <where>
            <if test="mdcEquipment.equipmentId != null and mdcEquipment.equipmentId != '' ">
                AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipment.equipmentId}),'%')
                AND t1.equipment_id LIKE '%' + #{mdcEquipment.equipmentId} + '%'
            </if>
            <if test="mdcEquipment.equipmentName != null and mdcEquipment.equipmentName != '' ">
                AND t1.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipment.equipmentName}),'%')
                AND t1.equipment_name LIKE '%' + #{mdcEquipment.equipmentName} + '%'
            </if>
            <if test="mdcEquipment.equipmentModel != null and mdcEquipment.equipmentModel != '' ">
                AND t1.equipment_name = #{mdcEquipment.equipmentModel}
@@ -234,10 +234,10 @@
            LEFT JOIN mdc_production t3 ON t2.production_id = t3.id
        <where>
            <if test="mdcEquipment.equipmentId != null and mdcEquipment.equipmentId != '' ">
                AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipment.equipmentId}),'%')
                AND t1.equipment_id LIKE '%' + #{mdcEquipment.equipmentId} + '%'
            </if>
            <if test="mdcEquipment.equipmentName != null and mdcEquipment.equipmentName != '' ">
                AND t1.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipment.equipmentName}),'%')
                AND t1.equipment_name LIKE '%' + #{mdcEquipment.equipmentName} + '%'
            </if>
            <if test="mdcEquipment.equipmentModel != null and mdcEquipment.equipmentModel != '' ">
                AND t1.equipment_name = #{mdcEquipment.equipmentModel}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
@@ -22,10 +22,10 @@
            LEFT JOIN mdc_equipment t2 ON t2.equipment_id = t1.equipment_id
        <where>
            <if test="mdcEquipmentOvertime.equipmentName != null and mdcEquipmentOvertime.equipmentName != '' ">
                AND t2.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentName}),'%')
                AND t2.equipment_name LIKE '%' + #{mdcEquipmentOvertime.equipmentName} + '%'
            </if>
            <if test="mdcEquipmentOvertime.equipmentId != null and mdcEquipmentOvertime.equipmentId != '' ">
                AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentId}),'%')
                AND t1.equipment_id LIKE '%' + #{mdcEquipmentOvertime.equipmentId} + '%'
            </if>
            <if test="mdcEquipmentOvertime.mdcSectionIds != null and mdcEquipmentOvertime.mdcSectionIds.size() > 0 ">
                AND t1.equipment_id IN
@@ -60,10 +60,10 @@
            LEFT JOIN mdc_equipment t2 ON t2.equipment_id = t1.equipment_id
        <where>
            <if test="mdcEquipmentOvertime.equipmentName != null and mdcEquipmentOvertime.equipmentName != '' ">
                AND t2.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentName}),'%')
                AND t2.equipment_name LIKE '%' + #{mdcEquipmentOvertime.equipmentName} + '%'
            </if>
            <if test="mdcEquipmentOvertime.equipmentId != null and mdcEquipmentOvertime.equipmentId != '' ">
                AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentId}),'%')
                AND t1.equipment_id LIKE '%' + #{mdcEquipmentOvertime.equipmentId} + '%'
            </if>
            <if test="mdcEquipmentOvertime.mdcSectionIds != null and mdcEquipmentOvertime.mdcSectionIds.size() > 0 ">
                AND t1.equipment_id IN
@@ -85,6 +85,6 @@
        FROM
            mdc_equipment_overtime
        WHERE
            the_date LIKE CONCAT(#{ validDate }, '%') AND equipment_id = #{ equipmentId }
            the_date LIKE #{ validDate } + '%' AND equipment_id = #{ equipmentId }
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRepairMapper.xml
@@ -10,10 +10,10 @@
            mdc_equipment_repair
        WHERE 1=1
        <if test="repair.equipmentName != null and repair.equipmentName != '' ">
            AND equipment_name LIKE CONCAT(CONCAT('%',#{repair.equipmentName}),'%')
            AND equipment_name LIKE '%' + #{repair.equipmentName} + '%'
        </if>
        <if test="repair.equipmentId != null and repair.equipmentId != '' ">
            AND equipment_id LIKE CONCAT(CONCAT('%',#{repair.equipmentId}),'%')
            AND equipment_id LIKE '%' + #{repair.equipmentId} + '%'
        </if>
        <if test="repair.startTime != null ">
            AND end_time &gt;= #{ repair.startTime }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -15,6 +15,6 @@
            mdc_equipment_statistical_shift_info
        WHERE
            equipment_id = #{ equipmentId }
            AND the_date LIKE CONCAT(#{ validDate },'%')
            AND the_date LIKE #{ validDate } + '%'
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml
@@ -58,7 +58,7 @@
                    #{id}
                </foreach>
            </if>
            AND the_date LIKE CONCAT('%', #{ date } ,'%')
            AND the_date LIKE '%' + #{ date } + '%'
        </where>
    </select>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml
@@ -9,7 +9,7 @@
        FROM
            mdc_message_approval
        <where>
            (sender_ids LIKE CONCAT(CONCAT('%',#{userId}),'%') OR approver_ids LIKE CONCAT(CONCAT('%',#{userId}),'%'))
            (sender_ids LIKE '%' + #{userId} +'%' OR approver_ids LIKE '%' + #{userId} +'%')
            <if test="mdcMessageApproval.equipmentId != null and mdcMessageApproval.equipmentId != ''">
                AND equipment_id = #{mdcMessageApproval.equipmentId}
            </if>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcNoplanCloseMapper.xml
@@ -10,10 +10,10 @@
            mdc_noplan_close
        <where>
            <if test="mdcNoplanClose.equipmentName != null and mdcNoplanClose.equipmentName != '' ">
                AND equipment_name LIKE CONCAT(CONCAT('%',#{mdcNoplanClose.equipmentName}),'%')
                AND equipment_name LIKE '%' + #{mdcNoplanClose.equipmentName} + '%'
            </if>
            <if test="mdcNoplanClose.equipmentId != null and mdcNoplanClose.equipmentId != '' ">
                AND equipment_id LIKE CONCAT(CONCAT('%',#{mdcNoplanClose.equipmentId}),'%')
                AND equipment_id LIKE '%' + #{mdcNoplanClose.equipmentId} + '%'
            </if>
            <if test="mdcNoplanClose.startTime != null ">
                AND end_time &gt;= #{ mdcNoplanClose.startTime }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.mdc.mapper.MdcOeeInfoMapper">
    <select id="oeeList" resultType="org.jeecg.modules.mdc.entity.MdcOeeInfo">
        SELECT
            *
        FROM
            mdc_oee_info
        <where>
            AND work_date BETWEEN #{vo.startTime} AND #{vo.endTime}
            <if test="vo.shiftSubId != null and vo.shiftSubId != '' ">
                AND shift_sub_id = #{vo.shiftSubId}
            </if>
            <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 ">
                AND equipment_id IN
                <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                    #{ id }
                </foreach>
            </if>
        </where>
        ORDER BY work_date
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml
@@ -10,7 +10,7 @@
                LEFT JOIN mdc_equipment t2 ON t1.equipment_id = t2.equipment_id
        <where>
            <if test="mdcEquipment.equipmentId != null and mdcEquipment.equipmentId != '' ">
                AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipment.equipmentId}),'%')
                AND t1.equipment_id LIKE '%' + #{mdcEquipment.equipmentId} + '%'
            </if>
            <if test="mdcEquipment.equipmentType != null and mdcEquipment.equipmentType != '' ">
                AND t2.equipment_type = #{mdcEquipment.equipmentType}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessQuantityMapper.xml
@@ -23,19 +23,19 @@
        FROM mdc_process_quantity mpq LEFT JOIN mdc_standard_process_duration mspd ON mpq.standard_id = mspd.id
        <where>
            <if test="mdcProcessQuantity.equipmentId != null and mdcProcessQuantity.equipmentId != ''">
                AND mspd.equipment_id LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.equipmentId }),'%')
                AND mspd.equipment_id LIKE '%' + #{ mdcProcessQuantity.equipmentId } + '%'
            </if>
            <if test="mdcProcessQuantity.equipmentName != null and mdcProcessQuantity.equipmentName != ''">
                AND mspd.equipment_name LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.equipmentName }),'%')
                AND mspd.equipment_name LIKE '%' + #{ mdcProcessQuantity.equipmentName } + '%'
            </if>
            <if test="mdcProcessQuantity.partsCode != null and mdcProcessQuantity.partsCode != ''">
                AND mspd.parts_code LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.partsCode }),'%')
                AND mspd.parts_code LIKE '%' + #{ mdcProcessQuantity.partsCode } + '%'
            </if>
            <if test="mdcProcessQuantity.batchCode != null and mdcProcessQuantity.batchCode != ''">
                AND mspd.batch_code LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.batchCode }),'%')
                AND mspd.batch_code LIKE '%' + #{ mdcProcessQuantity.batchCode } + '%'
            </if>
            <if test="mdcProcessQuantity.sequenceNumber != null and mdcProcessQuantity.sequenceNumber != ''">
                AND mspd.sequence_number LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.sequenceNumber }),'%')
                AND mspd.sequence_number LIKE '%' + #{ mdcProcessQuantity.sequenceNumber } + '%'
            </if>
            <if test="mdcProcessQuantity.startTime != null and mdcProcessQuantity.endTime != null">
                AND mpq.efficient_date BETWEEN #{ mdcProcessQuantity.startTime } AND #{ mdcProcessQuantity.endTime }
@@ -74,19 +74,19 @@
        FROM mdc_process_quantity mpq LEFT JOIN mdc_standard_process_duration mspd ON mpq.standard_id = mspd.id
        <where>
            <if test="mdcProcessQuantity.equipmentId != null and mdcProcessQuantity.equipmentId != ''">
                AND mspd.equipment_id LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.equipmentId }),'%')
                AND mspd.equipment_id LIKE '%' + #{ mdcProcessQuantity.equipmentId } + '%'
            </if>
            <if test="mdcProcessQuantity.equipmentName != null and mdcProcessQuantity.equipmentName != ''">
                AND mspd.equipment_name LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.equipmentName }),'%')
                AND mspd.equipment_name LIKE '%' + #{ mdcProcessQuantity.equipmentName } + '%'
            </if>
            <if test="mdcProcessQuantity.partsCode != null and mdcProcessQuantity.partsCode != ''">
                AND mspd.parts_code LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.partsCode }),'%')
                AND mspd.parts_code LIKE '%' + #{ mdcProcessQuantity.partsCode } + '%'
            </if>
            <if test="mdcProcessQuantity.batchCode != null and mdcProcessQuantity.batchCode != ''">
                AND mspd.batch_code LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.batchCode }),'%')
                AND mspd.batch_code LIKE '%' + #{ mdcProcessQuantity.batchCode } + '%'
            </if>
            <if test="mdcProcessQuantity.sequenceNumber != null and mdcProcessQuantity.sequenceNumber != ''">
                AND mspd.sequence_number LIKE CONCAT(CONCAT('%',#{ mdcProcessQuantity.sequenceNumber }),'%')
                AND mspd.sequence_number LIKE '%' + #{ mdcProcessQuantity.sequenceNumber } + '%'
            </if>
            <if test="mdcProcessQuantity.startTime != null and mdcProcessQuantity.endTime != null">
                AND mpq.efficient_date BETWEEN #{ mdcProcessQuantity.startTime } AND #{ mdcProcessQuantity.endTime }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcStandardProcessDurationMapper.xml
@@ -7,19 +7,19 @@
        SELECT * FROM mdc_standard_process_duration
        <where>
            <if test="mdcStandardProcessDuration.equipmentId != null and mdcStandardProcessDuration.equipmentId != ''">
                AND equipment_id LIKE CONCAT(CONCAT('%',#{ mdcStandardProcessDuration.equipmentId }),'%')
                AND equipment_id LIKE '%' + #{ mdcStandardProcessDuration.equipmentId } + '%'
            </if>
            <if test="mdcStandardProcessDuration.equipmentName != null and mdcStandardProcessDuration.equipmentName != ''">
                AND equipment_name LIKE CONCAT(CONCAT('%',#{ mdcStandardProcessDuration.equipmentName }),'%')
                AND equipment_name LIKE '%' + #{ mdcStandardProcessDuration.equipmentName } + '%'
            </if>
            <if test="mdcStandardProcessDuration.partsCode != null and mdcStandardProcessDuration.partsCode != ''">
                AND parts_code LIKE CONCAT(CONCAT('%',#{ mdcStandardProcessDuration.partsCode }),'%')
                AND parts_code LIKE '%' + #{ mdcStandardProcessDuration.partsCode } + '%'
            </if>
            <if test="mdcStandardProcessDuration.batchCode != null and mdcStandardProcessDuration.batchCode != ''">
                AND batch_code LIKE CONCAT(CONCAT('%',#{ mdcStandardProcessDuration.batchCode }),'%')
                AND batch_code LIKE '%' + #{ mdcStandardProcessDuration.batchCode } + '%'
            </if>
            <if test="mdcStandardProcessDuration.sequenceNumber != null and mdcStandardProcessDuration.sequenceNumber != ''">
                AND sequence_number LIKE CONCAT(CONCAT('%',#{ mdcStandardProcessDuration.sequenceNumber }),'%')
                AND sequence_number LIKE '%' + #{ mdcStandardProcessDuration.sequenceNumber } + '%'
            </if>
            <if test="mdcStandardProcessDuration.mdcSectionIds != null and mdcStandardProcessDuration.mdcSectionIds.size() > 0 ">
                AND equipment_id IN
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml
@@ -7,10 +7,10 @@
        select * from mdc_torque_config
        <where>
            <if test="mdcTorqueConfig.equipmentId != null and mdcTorqueConfig.equipmentId != '' ">
                AND equipment_id LIKE CONCAT(CONCAT('%',#{mdcTorqueConfig.equipmentId}),'%')
                AND equipment_id LIKE '%' + #{mdcTorqueConfig.equipmentId} + '%'
            </if>
            <if test="mdcTorqueConfig.equipmentName != null and mdcTorqueConfig.equipmentName != '' ">
                AND equipment_name LIKE CONCAT(CONCAT('%',#{mdcTorqueConfig.equipmentName}),'%')
                AND equipment_name LIKE '%' + #{mdcTorqueConfig.equipmentName} + '%'
            </if>
            <if test="mdcTorqueConfig.startTime != null and mdcTorqueConfig.endTime != null">
                AND torque_date BETWEEN #{ mdcTorqueConfig.startTime } AND #{ mdcTorqueConfig.endTime }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcVacationManagementMapper.xml
@@ -6,10 +6,10 @@
        select * from mdc_vacation_management
        <where>
            <if test="vacation.equipmentName != null and vacation.equipmentName != '' ">
                and equipment_name like concat(concat('%',#{vacation.equipmentName}),'%')
                and equipment_name like '%' + #{vacation.equipmentName} + '%'
            </if>
            <if test="vacation.equipmentId != null and vacation.equipmentId !='' ">
                and equipment_id like concat(concat('%',#{vacation.equipmentId}),'%')
                and equipment_id like '%' + #{vacation.equipmentId} + '%'
            </if>
            <if test="vacation.startTime != null and vacation.endTime != null">
                and vacation_date between #{ vacation.startTime } and #{ vacation.endTime }
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcComponentInfoService.java
@@ -16,4 +16,6 @@
public interface IMdcComponentInfoService extends IService<MdcComponentInfo> {
    IPage<MdcComponentInfo> pageList(Page<MdcComponentInfo> page, MdcComponentInfo mdcComponentInfo, HttpServletRequest req);
    MdcComponentInfo findByComponentNo(String equipmentId, String productNo);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package org.jeecg.modules.mdc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.mdc.entity.MdcOeeInfo;
import org.jeecg.modules.mdc.vo.MdcOeeInfoQueryVo;
import org.jeecg.modules.mdc.vo.MdcOeeVo;
/**
 * @Description: OEE
 * @Author: jeecg-boot
 * @Date:   2024-10-22
 * @Version: V1.0
 */
public interface IMdcOeeInfoService extends IService<MdcOeeInfo> {
    /**
     * oee列表
     * @param userId
     * @param mdcOeeInfo
     * @return
     */
    MdcOeeVo pageList(String userId, MdcOeeInfoQueryVo mdcOeeInfo);
    /**
     * è®¡ç®—oee任务
     * @param date
     */
    void runningOverallEquipmentEfficiency(String date);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcComponentInfoServiceImpl.java
@@ -6,9 +6,11 @@
import org.jeecg.modules.mdc.entity.MdcComponentInfo;
import org.jeecg.modules.mdc.mapper.MdcComponentInfoMapper;
import org.jeecg.modules.mdc.service.IMdcComponentInfoService;
import org.slf4j.MDC;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
 * @Description: é›¶ä»¶è¡¨
@@ -23,4 +25,14 @@
    public IPage<MdcComponentInfo> pageList(Page<MdcComponentInfo> page, MdcComponentInfo mdcComponentInfo, HttpServletRequest req) {
        return this.baseMapper.pageList(page, mdcComponentInfo);
    }
    @Override
    public MdcComponentInfo findByComponentNo(String equipmentId, String productNo) {
        List<MdcComponentInfo> mdcComponentInfoList = this.baseMapper.findByComponentNo(equipmentId, productNo);
        if (mdcComponentInfoList != null && !mdcComponentInfoList.isEmpty()) {
            return mdcComponentInfoList.get(0);
        } else {
            return null;
        }
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,263 @@
package org.jeecg.modules.mdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.mdc.dto.MdcOeeListDto;
import org.jeecg.modules.mdc.dto.MdcOeeResultDto;
import org.jeecg.modules.mdc.entity.*;
import org.jeecg.modules.mdc.mapper.MdcOeeInfoMapper;
import org.jeecg.modules.mdc.service.*;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.vo.MdcOeeInfoQueryVo;
import org.jeecg.modules.mdc.vo.MdcOeeVo;
import org.jeecg.modules.mdcJc.entity.MdcProductDayschedule;
import org.jeecg.modules.mdcJc.service.IMdcProductDayScheduleService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Description: OEE
 * @Author: lius
 * @Date: 2024-10-22
 * @Version: V1.0
 */
@Service
public class MdcOeeInfoServiceImpl extends ServiceImpl<MdcOeeInfoMapper, MdcOeeInfo> implements IMdcOeeInfoService {
    @Resource
    private IMdcEquipmentService mdcEquipmentService;
    @Resource
    private IMdcShiftSubService mdcShiftSubService;
    @Resource
    private IMdcUtilizationRateService mdcUtilizationRateService;
    @Resource
    private IMdcComponentInfoService mdcComponentInfoService;
    @Resource
    private IMdcProductDayScheduleService mdcProductDayScheduleService;
    @Resource
    private IEquipmentService equipmentService;
    @Resource
    private IMdcEquipmentStatisticalShiftInfoService mdcEquipmentStatisticalShiftInfoService;
    /**
     * oee列表
     * @param userId
     * @param vo
     * @return
     */
    @Override
    public MdcOeeVo pageList(String userId, MdcOeeInfoQueryVo vo) {
        MdcOeeVo result = new MdcOeeVo();
        List<MdcOeeListDto> listDtos = new ArrayList<>();
        List<String> equipmentIds = new ArrayList<>();
        if (StringUtils.isNotEmpty(vo.getParentId()) && StringUtils.isEmpty(vo.getEquipmentId())) {
            if ("2".equals(vo.getTypeTree())) {
                // éƒ¨é—¨å±‚级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, vo.getParentId());
            } else {
                // äº§çº¿å±‚级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, vo.getParentId());
            }
        } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) {
            // å•台设备信息
            vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId()));
        } else {
            // æŸ¥è¯¢ç”¨æˆ·æ‹¥æœ‰çš„æ‰€æœ‰è®¾å¤‡ä¿¡æ¯
            if ("2".equals(vo.getTypeTree())) {
                // éƒ¨é—¨å±‚级
                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
            } else {
                // äº§çº¿å±‚级
                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
            }
        }
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            vo.setEquipmentIdList(equipmentIds);
        }
        List<String> dates = DateUtils.getDatesStringList2(DateUtils.getShortDate2(vo.getStartTime()), DateUtils.getShortDate2(vo.getEndTime()));
        result.setDates(dates);
        // oee等级
        List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("oee");
        if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) {
            result.setMdcOeeListDtoList(listDtos);
        } else {
            LambdaQueryWrapper<MdcEquipment> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.isNotNull(MdcEquipment::getEquipmentId);
            if (vo.getEquipmentIdList() != null && !vo.getEquipmentIdList().isEmpty()) {
                queryWrapper.in(MdcEquipment::getEquipmentId, vo.getEquipmentIdList());
            }
            queryWrapper.orderByAsc(MdcEquipment::getEquipmentName);
            List<MdcEquipment> equipmentList = mdcEquipmentService.list(queryWrapper);
            //查询oee数据
            List<MdcOeeInfo> oeeList = this.baseMapper.oeeList(vo);
            //数据处理
            String shiftSubName = "全部";
            if (!StringUtils.isBlank(vo.getShiftId())) {
                List<MdcShiftSub> mdcShiftSubList = new ArrayList<>();
                if (StringUtils.isNotBlank(vo.getShiftSubId())) {
                    mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getId, vo.getShiftSubId()).eq(MdcShiftSub::getShiftSubStatus, "1"));
                    oeeList = oeeList.stream().filter(mdcOeeInfo -> mdcOeeInfo.getShiftId().equals(vo.getShiftId()) && mdcOeeInfo.getShiftSubId().equals(vo.getShiftSubId())).collect(Collectors.toList());
                } else {
                    mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftId, vo.getShiftId()).eq(MdcShiftSub::getShiftSubStatus, "1"));
                    oeeList = oeeList.stream().filter(mdcOeeInfo -> mdcOeeInfo.getShiftId().equals(vo.getShiftId())).collect(Collectors.toList());
                }
                List<String> shiftSubNames = mdcShiftSubList.stream().map(MdcShiftSub::getShiftSubName).collect(Collectors.toList());
                shiftSubName = String.join(",", shiftSubNames);
            }
            for (MdcEquipment mdcEquipment : equipmentList) {
                MdcOeeListDto mdcOeeListDto = new MdcOeeListDto();
                mdcOeeListDto.setEquipmentId(mdcEquipment.getEquipmentId());
                mdcOeeListDto.setEquipmentName(mdcEquipment.getEquipmentName());
                mdcOeeListDto.setEquipmentType(mdcEquipment.getEquipmentType());
                mdcOeeListDto.setShiftSubName(shiftSubName);
                mdcOeeListDto.setClazz(mdcProductDayScheduleService.findClazz(mdcEquipment.getEquipmentId()));
                List<MdcOeeResultDto> mdcOeeResultList = new ArrayList<>();
                for (String date : dates) {
                    MdcOeeResultDto mdcOeeResultDto = new MdcOeeResultDto();
                    mdcOeeResultDto.setTheDate(date);
                    String format = DateUtils.format(DateUtils.toDate(date, DateUtils.STRDATE), DateUtils.STR_DATE);
                    List<MdcOeeInfo> mdcOeeInfoList = oeeList.stream().filter(mdcOeeInfo -> mdcOeeInfo.getEquipmentId().equals(mdcEquipment.getEquipmentId()) && mdcOeeInfo.getWorkDate().equals(format)).collect(Collectors.toList());
                    BigDecimal oeeRate = BigDecimal.ZERO;
                    if (!mdcOeeInfoList.isEmpty()) {
                        BigDecimal count = mdcOeeInfoList.stream().map(MdcOeeInfo::getOeeRate).reduce(BigDecimal.ZERO, BigDecimal::add);
                        oeeRate = count.divide(new BigDecimal(mdcOeeInfoList.size()), 2, RoundingMode.HALF_UP);
                        mdcOeeResultDto.setOeeRate(oeeRate);
                    }
                    long rate = oeeRate.multiply(new BigDecimal("100")).longValue();
                    for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) {
                        if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) {
                            mdcOeeResultDto.setColor(mdcUtilizationRate.getRateParameterColor());
                        }
                    }
                    mdcOeeResultList.add(mdcOeeResultDto);
                }
                mdcOeeListDto.setDataList(mdcOeeResultList);
                listDtos.add(mdcOeeListDto);
            }
            result.setMdcOeeListDtoList(listDtos);
        }
        return result;
    }
    /**
     * è®¡ç®—oee
     * @param date
     */
    @Override
    public void runningOverallEquipmentEfficiency(String date) {
        // èŽ·å–æœ‰æ•ˆæ—¥æœŸ æ ¼å¼ yyyy-MM-dd
        String validDate = LocalDate.now().plusDays(-1).toString();
        if (StringUtils.isNotBlank(date)) {
            validDate = DateUtils.format(DateUtils.toDate(date, "yyyyMMdd"), DateUtils.STR_DATE);
            try {
                if (validDate != null) {
                    this.remove(new LambdaQueryWrapper<MdcOeeInfo>().
                            eq(MdcOeeInfo::getWorkDate, validDate));
                }
            } catch (Exception e) {
                log.error("参数格式不对", e);
            }
        }
        //获取班次
        List<MdcShiftSub> mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftSubStatus, CommonConstant.STATUS_1));
        if (mdcShiftSubList == null || mdcShiftSubList.isEmpty()) {
            return;
        }
        List<Equipment> equipmentList = equipmentService.list();
        if (equipmentList == null || equipmentList.isEmpty()) {
            return;
        }
        List<MdcOeeInfo> result = new ArrayList<>();
        for (Equipment equipment : equipmentList) {
            //获取零部件计划
            List<MdcProductDayschedule> productDayScheduleList = mdcProductDayScheduleService.list(new LambdaQueryWrapper<MdcProductDayschedule>()
                    .eq(MdcProductDayschedule::getPlanDate, validDate)
                    .eq(MdcProductDayschedule::getEquipmentId, equipment.getEquipmentid()));
            if (productDayScheduleList != null && !productDayScheduleList.isEmpty()) {
                MdcProductDayschedule mdcProductDayschedule;
                MdcOeeInfo mdcOeeInfo = new MdcOeeInfo();
                for (MdcShiftSub mdcShiftSub : mdcShiftSubList) {
                    String id = mdcShiftSub.getId();
                    if (productDayScheduleList.stream().anyMatch(productDayschedule -> productDayschedule.getOrderId().substring(8, 10).equals(id))) {
                        mdcOeeInfo.setEquipmentId(equipment.getEquipmentid());
                        mdcOeeInfo.setWorkDate(validDate);
                        mdcOeeInfo.setStartTime(mdcShiftSub.getStartDate());
                        mdcOeeInfo.setEndTime(mdcShiftSub.getEndDate());
                        mdcOeeInfo.setInterDayFlag(mdcShiftSub.getIsDaySpan());
                        mdcOeeInfo.setShiftId(mdcShiftSub.getShiftId());
                        mdcOeeInfo.setShiftSubId(id);
                        //获取设备运行数据
                        MdcEquipmentStatisticalShiftInfo mdcEquipmentStatisticalShiftInfo = mdcEquipmentStatisticalShiftInfoService.getOne(new LambdaQueryWrapper<MdcEquipmentStatisticalShiftInfo>()
                                .eq(MdcEquipmentStatisticalShiftInfo::getEquipmentId, equipment.getEquipmentid())
                                .eq(MdcEquipmentStatisticalShiftInfo::getTheDate, validDate)
                                .eq(MdcEquipmentStatisticalShiftInfo::getShiftSubId, id));
                        if (mdcEquipmentStatisticalShiftInfo == null) {
                            continue;
                        }
                        mdcOeeInfo.setProcessLong(mdcEquipmentStatisticalShiftInfo.getProcessLong());
                        mdcOeeInfo.setWaitLong(mdcEquipmentStatisticalShiftInfo.getWaitLong());
                        mdcOeeInfo.setOpenLong(mdcEquipmentStatisticalShiftInfo.getOpenLong());
                        mdcOeeInfo.setCloseLong(mdcEquipmentStatisticalShiftInfo.getCloseLong());
                        //获取设备生产计划
                        mdcProductDayschedule = productDayScheduleList.stream().filter(productDayschedule -> productDayschedule.getOrderId().substring(8, 10).equals(id)).findAny().orElse(null);
                        if (mdcProductDayschedule == null) {
                            continue;
                        }
                        mdcOeeInfo.setWorkTeam(mdcProductDayschedule.getClazz());
                        mdcOeeInfo.setPlanNum(mdcProductDayschedule.getPlanCount());
                        mdcOeeInfo.setCompleteNum(mdcProductDayschedule.getCompletionCount());
                        mdcOeeInfo.setQualityNum(mdcProductDayschedule.getQualifiedCount());
                        mdcOeeInfo.setComponentNo(mdcProductDayschedule.getProductNo());
                        //查询班产能
                        MdcComponentInfo mdcComponentInfo = null;
                        if (mdcProductDayschedule.getIsAutomaticLine().equals(CommonConstant.STATUS_1)) {
                            //自动线
                            mdcComponentInfo = mdcComponentInfoService.findByComponentNo(equipment.getEquipmentid(), mdcProductDayschedule.getProductNo());
                        } else {
                            //非自动线
                            List<MdcComponentInfo> componentInfoList = mdcComponentInfoService.list(new LambdaQueryWrapper<MdcComponentInfo>()
                                    .eq(MdcComponentInfo::getComponentNo, mdcProductDayschedule.getProductNo())
                                    .like(MdcComponentInfo::getEquipmentId, equipment.getEquipmentid()));
                            if (componentInfoList != null && !componentInfoList.isEmpty()) {
                                mdcComponentInfo = componentInfoList.get(0);
                            }
                        }
                        if (mdcComponentInfo == null) {
                            continue;
                        }
                        mdcOeeInfo.setScheduleNum(mdcComponentInfo.getScheduleNum());
                        BigDecimal oeeRate = mdcOeeInfo.getProcessLong().multiply(new BigDecimal(mdcOeeInfo.getPlanNum())).multiply(new BigDecimal(mdcOeeInfo.getQualityNum()))
                                        .divide(mdcEquipmentStatisticalShiftInfo.getTotalLong(), 2, RoundingMode.HALF_UP)
                                        .divide(new BigDecimal(mdcOeeInfo.getScheduleNum()), 2, RoundingMode.HALF_UP)
                                        .divide(new BigDecimal(mdcOeeInfo.getCompleteNum()), 2, RoundingMode.HALF_UP);
                        mdcOeeInfo.setOeeRate(oeeRate);
                        result.add(mdcOeeInfo);
                    }
                }
            }
        }
        if (!result.isEmpty()) {
            this.saveBatch(result);
        }
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoQueryVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package org.jeecg.modules.mdc.vo;
import lombok.Data;
import java.util.List;
/**
 * @author Lius
 * @date 2024/10/22 14:10
 */
@Data
public class MdcOeeInfoQueryVo {
    /**
     * æ—¥æœŸ
     */
    private String dateTime;
    /**
     * å¼€å§‹æ—¶é—´  ->  20220101
     */
    private String startTime;
    /**
     * ç»“束时间  ->  20220101
     */
    private String endTime;
    /**
     * æ ‘类型    ->  1:车间层级   2:部门层级
     */
    private String typeTree;
    /**
     * ç­åˆ¶ID
     */
    private String shiftId;
    /**
     * ç­æ¬¡ID
     */
    private String shiftSubId;
    /**
     * å±‚级ID
     */
    private String parentId;
    /**
     * è®¾å¤‡Id
     */
    private String equipmentId;
    /**
     * è®¾å¤‡ids
     */
    private List<String> equipmentIdList;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package org.jeecg.modules.mdc.vo;
import lombok.Data;
import org.jeecg.modules.mdc.dto.MdcOeeListDto;
import java.util.List;
/**
 * @author Lius
 * @date 2024/10/22 13:45
 */
@Data
public class MdcOeeVo {
    private List<MdcOeeListDto> mdcOeeListDtoList;
    private List<String> dates;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/ClassMonthlyscheduleMapper.java
@@ -74,11 +74,4 @@
     */
    List<UnderLineQueue> findListUnderLineQueue(@Param("id") Integer id);
    /**
     * èŽ·å–æ˜¨æ—¥æ•°æ®
     *
     * @param date
     * @return
     */
    MdcProductDayschedule findYesterdayData(@Param("date") String date);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcProductDayscheduleMapper.java
@@ -13,4 +13,8 @@
public interface MdcProductDayscheduleMapper extends BaseMapper<MdcProductDayschedule> {
    List<String> selectDateList(@Param("dateTime") String dateTime);
    MdcProductDayschedule findYesterdayData(@Param("date") String date);
    String findClazz(@Param("equipmentId") String equipmentId);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/ClassMonthlyscheduleMapper.xml
@@ -34,15 +34,4 @@
        SELECT * FROM T_UnderLine_Queue WHERE ID &gt; #{id}
    </select>
    <select id="findYesterdayData" resultType="org.jeecg.modules.mdcJc.entity.MdcProductDayschedule">
        SELECT
            SUM(planCount) planDate,
            SUM ( completionCount ) completionCount,
            SUM ( qualifiedCount ) qualifiedCount
        FROM
            mdcJc_ProductDayschedule
        WHERE
            planDate = #{date}
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcProductDayscheduleMapper.xml
@@ -7,4 +7,24 @@
        SELECT mdc_id FROM mdcJc_ProductDayschedule WHERE planDate = #{ dateTime }
    </select>
    <select id="findYesterdayData" resultType="org.jeecg.modules.mdcJc.entity.MdcProductDayschedule">
        SELECT
            SUM ( planCount ) planDate,
            SUM ( completionCount ) completionCount,
            SUM ( qualifiedCount ) qualifiedCount
        FROM
            mdcJc_ProductDayschedule
        WHERE
            planDate = #{date}
    </select>
    <select id="findClazz" resultType="java.lang.String">
        SELECT
            TOP 1 clazz
        FROM
            mdcJc_ProductDayschedule
        WHERE equipmentID = #{equipmentId}
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IClassMonthlyScheduleService.java
@@ -65,10 +65,4 @@
     */
    List<UnderLineQueue> findListUnderLineQueue(Integer id);
    /**
     * èŽ·å–æ˜¨æ—¥æ•°æ®
     * @param date
     * @return
     */
    MdcProductDayschedule findYesterdayData(String date);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcProductDayScheduleService.java
@@ -25,4 +25,5 @@
     */
    MdcProductDayschedule findYesterdayData();
    String findClazz(String equipmentId);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/ClassMonthlyScheduleServiceImpl.java
@@ -58,10 +58,4 @@
        return super.baseMapper.findListUnderLineQueue(id);
    }
    @Override
    public MdcProductDayschedule findYesterdayData(String date) {
        return this.baseMapper.findYesterdayData(date);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcProductDayScheduleServiceImpl.java
@@ -52,6 +52,11 @@
    @Override
    public MdcProductDayschedule findYesterdayData() {
        String date = LocalDate.now().plusDays(-1).toString();
        return classMonthlyScheduleService.findYesterdayData(date);
        return this.baseMapper.findYesterdayData(date);
    }
    @Override
    public String findClazz(String equipmentId) {
        return this.baseMapper.findClazz(equipmentId);
    }
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
@@ -78,10 +78,10 @@
        <if test="userParams != null">
            <if test="userParams.realname != null and userParams.realname != ''">
                AND sys_user.realname LIKE concat(concat('%',#{userParams.realname}),'%')
                AND sys_user.realname LIKE '%' + #{userParams.realname} + '%'
            </if>
            <if test="userParams.workNo != null and userParams.workNo != ''">
                AND sys_user.work_no LIKE concat(concat('%',#{userParams.workNo}),'%')
                AND sys_user.work_no LIKE '%' + #{userParams.workNo} + '%'
            </if>
        </if>
    </sql>
@@ -215,6 +215,6 @@
                LEFT JOIN sys_user_role t2 ON t1.id = t2.user_id
                LEFT JOIN sys_role t3 ON t2.role_id = t3.id
        WHERE
            t3.role_code = #{roleCode} AND equipment_ids LIKE concat(concat('%',#{equipmentId}),'%')
            t3.role_code = #{roleCode} AND equipment_ids LIKE '%' + #{equipmentId} + '%'
    </select>
</mapper>