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 >= #{ 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 >= #{ 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 > #{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>