From a7a4e0e6ae09c720e50dc22fc50c67519414067c Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期四, 24 十月 2024 09:45:55 +0800
Subject: [PATCH] update

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcNoplanCloseMapper.xml                   |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcProductDayscheduleMapper.java             |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml                     |    8 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeVo.java                                      |   18 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java                       |   30 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/ClassMonthlyScheduleServiceImpl.java   |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml                       |   24 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcProductDayscheduleMapper.xml          |   20 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java                  |  151 ++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcComponentInfoMapper.xml                 |   12 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcProductDayScheduleService.java          |    1 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcProductDayScheduleServiceImpl.java  |    7 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcComponentInfo.java                          |    7 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcComponentInfoServiceImpl.java         |   12 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoQueryVo.java                             |   52 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml                |    8 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeResultDto.java                              |   25 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java                                |   75 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml             |   10 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcComponentInfoService.java                 |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/ClassMonthlyscheduleMapper.java              |    7 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IClassMonthlyScheduleService.java           |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml |    2 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml    |    6 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java         |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcVacationManagementMapper.xml            |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRepairMapper.xml               |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/ClassMonthlyscheduleMapper.xml           |   11 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java               |  263 ++++++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcComponentInfoController.java            |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml                          |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml               |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeListDto.java                                |   40 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java                          |   19 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcComponentInfoMapper.java                    |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcStandardProcessDurationMapper.xml       |   10 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml                  |    4 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml                  |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessQuantityMapper.xml               |   20 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java                                |  138 +++++++
 40 files changed, 941 insertions(+), 83 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcComponentInfoController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcComponentInfoController.java
index 6cd683a..c46ac96 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcComponentInfoController.java
+++ b/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);
     }
 
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOeeInfoController.java
new file mode 100644
index 0000000..2c918c6
--- /dev/null
+++ b/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);
+    }
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeListDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeListDto.java
new file mode 100644
index 0000000..bad2e0a
--- /dev/null
+++ b/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;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeResultDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcOeeResultDto.java
new file mode 100644
index 0000000..724dd7e
--- /dev/null
+++ b/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;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcComponentInfo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcComponentInfo.java
index 0666eff..3cfab7a 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcComponentInfo.java
+++ b/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;
     /**
      * 鏄惁涓鸿嚜鍔ㄧ嚎
      */
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOeeInfo.java
new file mode 100644
index 0000000..e0d2678
--- /dev/null
+++ b/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;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java
new file mode 100644
index 0000000..795812d
--- /dev/null
+++ b/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);
+    }
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java
index 304cc7b..98b06f2 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java
+++ b/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)));
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcComponentInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcComponentInfoMapper.java
index a7c1893..71eee64 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcComponentInfoMapper.java
+++ b/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);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java
new file mode 100644
index 0000000..31d2f8f
--- /dev/null
+++ b/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);
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcComponentInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcComponentInfoMapper.xml
index 5a7f989..826a10f 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcComponentInfoMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
index 77de9af..1645e09 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
+++ b/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>
 
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
index 828999f..42d2e73 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
+++ b/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}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
index 3056797..121b2a7 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRepairMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRepairMapper.xml
index 80e6716..3343ab0 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRepairMapper.xml
+++ b/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 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
index 97acaba..d1cec54 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml
index b809b98..973f7f1 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml
+++ b/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>
 
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml
index 4e53609..cd7f198 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcMessageApprovalMapper.xml
+++ b/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>
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcNoplanCloseMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcNoplanCloseMapper.xml
index bfcf755..a53352f 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcNoplanCloseMapper.xml
+++ b/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 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml
new file mode 100644
index 0000000..09431dc
--- /dev/null
+++ b/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>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml
index f812bb9..a22fe70 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverrunAlarmMapper.xml
+++ b/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}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessQuantityMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessQuantityMapper.xml
index f484955..5544a96 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessQuantityMapper.xml
+++ b/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 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcStandardProcessDurationMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcStandardProcessDurationMapper.xml
index e6a576c..d547309 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcStandardProcessDurationMapper.xml
+++ b/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
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml
index efe16ba..a056a45 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml
+++ b/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 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcVacationManagementMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcVacationManagementMapper.xml
index 632c1d0..0bc9f59 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcVacationManagementMapper.xml
+++ b/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 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcComponentInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcComponentInfoService.java
index 9353a44..9ec1f96 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcComponentInfoService.java
+++ b/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);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java
new file mode 100644
index 0000000..badf107
--- /dev/null
+++ b/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);
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcComponentInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcComponentInfoServiceImpl.java
index 528ec66..80509bd 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcComponentInfoServiceImpl.java
+++ b/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;
+        }
+    }
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java
new file mode 100644
index 0000000..31f1291
--- /dev/null
+++ b/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);
+        }
+    }
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoQueryVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeInfoQueryVo.java
new file mode 100644
index 0000000..d4a3a28
--- /dev/null
+++ b/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;
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeVo.java
new file mode 100644
index 0000000..c5e7657
--- /dev/null
+++ b/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;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/ClassMonthlyscheduleMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/ClassMonthlyscheduleMapper.java
index 0607604..fa11e7e 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/ClassMonthlyscheduleMapper.java
+++ b/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);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcProductDayscheduleMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcProductDayscheduleMapper.java
index 53d2355..589d023 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/MdcProductDayscheduleMapper.java
+++ b/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);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/ClassMonthlyscheduleMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/ClassMonthlyscheduleMapper.xml
index 6bd63ac..552c0fe 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/ClassMonthlyscheduleMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcProductDayscheduleMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcProductDayscheduleMapper.xml
index 26aa0db..2681160 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/mapper/xml/MdcProductDayscheduleMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IClassMonthlyScheduleService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IClassMonthlyScheduleService.java
index 1c7f7a3..101bcad 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IClassMonthlyScheduleService.java
+++ b/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);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcProductDayScheduleService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcProductDayScheduleService.java
index c92edd7..e757995 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcProductDayScheduleService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/IMdcProductDayScheduleService.java
@@ -25,4 +25,5 @@
      */
     MdcProductDayschedule findYesterdayData();
 
+    String findClazz(String equipmentId);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/ClassMonthlyScheduleServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/ClassMonthlyScheduleServiceImpl.java
index e1363d7..8d3f93a 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/ClassMonthlyScheduleServiceImpl.java
+++ b/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);
-    }
-
-
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcProductDayScheduleServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcProductDayScheduleServiceImpl.java
index c55f23a..89ab5c2 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdcJc/service/impl/MdcProductDayScheduleServiceImpl.java
+++ b/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);
     }
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
index 3e751a9..ed5646d 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
+++ b/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>
\ No newline at end of file

--
Gitblit v1.9.3