lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java
@@ -51,4 +51,10 @@ */ public static final String OTHER_REST = "伿¯ç¨é¤,é¢é²æ§ç»´ä¿®"; public static final String DAY = "天"; public static final String WEEK = "å¨"; public static final String MONTH = "æ"; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcOverallEquipmentEfficiencyController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,62 @@ package org.jeecg.modules.mdc.controller; 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.vo.LoginUser; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.service.IMdcOverallEquipmentEfficiencyService; import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; /** * @Description: OEE设å¤ç»¼åæç表 * @Author: Lius * @Date: 2023-11-13 * @Version: V1.0 */ @Slf4j @Api(tags = "OEE设å¤ç»¼åæç表") @RestController @RequestMapping("/mdc/mdcOverallEquipmentEfficiency") public class MdcOverallEquipmentEfficiencyController extends JeecgController<MdcOverallEquipmentEfficiency, IMdcOverallEquipmentEfficiencyService> { @Resource private IMdcOverallEquipmentEfficiencyService mdcOverallEquipmentEfficiencyService; /** * * @param mdcOverallEquipmentEfficiencyVo * @param pageNo * @param pageSize * @param req * @return */ @AutoLog(value = "OEE设å¤ç»¼åæç表-å页å表æ¥è¯¢") @ApiOperation(value = "OEE设å¤ç»¼åæç表-å页å表æ¥è¯¢", notes = "OEE设å¤ç»¼åæç表-å页å表æ¥è¯¢") @GetMapping("/list") public Result queryPageList(MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); Page<MdcOverallEquipmentEfficiency> page = new Page<MdcOverallEquipmentEfficiency>(pageNo, pageSize); IPage<MdcOverallEquipmentEfficiency> pageList = mdcOverallEquipmentEfficiencyService.pageList(userId, page, mdcOverallEquipmentEfficiencyVo, req); return Result.OK(pageList); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java
@@ -121,16 +121,6 @@ @Excel(name = "设å¤åç", width = 15) @ApiModelProperty(value = "设å¤åç") private String devicePower; /** * åæ -å·¦ */ @ApiModelProperty(value = "åæ -å·¦") private Integer coordinateLeft; /** * åæ -ä¸ */ @ApiModelProperty(value = "åæ -ä¸") private Integer coordinateTop; /**é¨é¨åç§°*/ private transient String orgCodeTxt; lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcOverallEquipmentEfficiency.java
@@ -50,10 +50,10 @@ @ApiModelProperty(value = "æææ¥æ") private String validDate; /** * çæ¬¡id * çæ¬¡ */ @ApiModelProperty(value = "çæ¬¡id") private String shiftSubId; @ApiModelProperty(value = "çæ¬¡") private String shift; /** * æ¯çå°æ¶ */ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcWorkshopInfo.java
@@ -39,5 +39,11 @@ @Excel(name = "èæ¯å¾", width = 15) @ApiModelProperty(value = "èæ¯å¾") private String backgroundImage; /** * 设å¤ç¼å·é¢è² */ @ApiModelProperty(value = "设å¤ç¼å·é¢è²") private String equipmentIdColor; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java
@@ -23,9 +23,9 @@ List<MdcDeviceCalendarVo> findAcquiesceShift(); List<String> computeActualWorkDayCount(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate); List<String> computeActualWorkDayCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); List<String> findShiftSort(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); Integer computeShiftTimeCount(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate); Integer computeShiftTimeCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOvertimeMapper.java
@@ -40,5 +40,5 @@ * @param validDate * @return */ List<MdcEquipmentOvertime> computeOvertime(@Param("shiftSubId") String shiftSubId, @Param("equipmentId") String equipmentId, @Param("validDate") String validDate); List<MdcEquipmentOvertime> computeOvertime(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
@@ -20,5 +20,5 @@ */ MdcEquipmentStatisticalShiftInfo getMaxStaticsData(@Param("equipmentId") String equipmentid); BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate, @Param("shiftSubId") String shiftSubId); BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOverallEquipmentEfficiencyMapper.java
@@ -1,11 +1,25 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo; /** * @author Lius * @date 2023/11/3 14:29 */ public interface MdcOverallEquipmentEfficiencyMapper extends BaseMapper<MdcOverallEquipmentEfficiency> { /** * å页æ¥è¯¢ * * @param page * @param mdcOverallEquipmentEfficiencyVo * @return */ IPage<MdcOverallEquipmentEfficiency> pageList(Page<MdcOverallEquipmentEfficiency> page, @Param("mdcOverallEquipmentEfficiency") MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
@@ -93,18 +93,17 @@ WHERE effective_date LIKE CONCAT(#{ validDate }, '%') AND equipment_id = #{ equipmentId } AND shift_sub_id = #{ shiftSubId } </select> <!--æ¥è¯¢ç次åç±»--> <select id="findShiftSort" resultType="java.lang.String"> SELECT DISTINCT shift_sub_id SELECT DISTINCT t2.shift_name FROM mdc_device_calendar mdc_device_calendar t1 LEFT JOIN mdc_shift t2 ON t1.shift_id = t2.id WHERE effective_date LIKE CONCAT(#{ validDate }, '%') AND equipment_id = #{ equipmentId } t1.effective_date LIKE CONCAT(#{ validDate }, '%') AND t1.equipment_id = #{ equipmentId } </select> <!--æ¥è¯¢ç次æ°é--> @@ -116,7 +115,6 @@ WHERE effective_date LIKE CONCAT(#{ validDate }, '%') AND equipment_id = #{ equipmentId } AND shift_sub_id = #{ shiftSubId } </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
@@ -88,6 +88,5 @@ WHERE mdc.effective_date LIKE CONCAT(#{ validDate }, '%') AND mdc.equipment_id = #{ equipmentId } AND mdc.shift_sub_id = #{ shiftSubId } </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -15,7 +15,6 @@ mdc_equipment_statistical_shift_info WHERE equipment_id = #{ equipmentId } AND shift_sub_id = #{ shiftSubId } AND the_date LIKE CONCAT(#{ validDate },'%') </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOverallEquipmentEfficiencyMapper.xml
@@ -2,4 +2,52 @@ <!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.MdcOverallEquipmentEfficiencyMapper"> <!--å页å表--> <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency"> SELECT t1.id, t1.equipment_id, t1.equipment_name, t1.equipment_model, t1.valid_date, t1.shift, t1.shift_time_count, t1.overtime, t1.actual_work_day_count, t1.month_actual_work_day_time_count, t1.breakdown_down_duration, t1.conversion_debug_duration, t1.material_shortage_duration, t1.planned_task_duration, t1.inspect_duration, t1.other_duration, t1.planned_maintenance_duration, t1.conference_training_duration, t1.other_rest_duration, t1.load_time, t1.time_actuation_rate, t1.process_quantity, t1.standard_process_duration, t1.performance_rate, t1.unqualified_quantity, t1.pass_rate, t1.overall_equipment_efficiency, t1.create_by, t1.create_time, t1.update_by, t1.update_time FROM mdc_overall_equipment_efficiency t1 <where> <if test="mdcOverallEquipmentEfficiency.startTime != null and mdcOverallEquipmentEfficiency.startTime != '' and mdcOverallEquipmentEfficiency.endTime != null and mdcOverallEquipmentEfficiency.endTime != ''"> AND t1.valid_date BETWEEN #{ mdcOverallEquipmentEfficiency.startTime } AND #{ mdcOverallEquipmentEfficiency.endTime } </if> <if test="mdcOverallEquipmentEfficiency.equipmentIdList != null and mdcOverallEquipmentEfficiency.equipmentIdList.size() > 0 "> AND t1.equipment_id IN <foreach collection="mdcOverallEquipmentEfficiency.equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> </where> </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java
@@ -41,12 +41,11 @@ /** * 计ç®å®é çäº§å¤©æ° * * @param shiftSubId * @param equipmentId * @param validDate * @return */ BigDecimal computeActualWorkDayCount(String shiftSubId, String equipmentId, String validDate); BigDecimal computeActualWorkDayCount(String equipmentId, String validDate); /** * æ¥è¯¢ç次åç±» @@ -60,12 +59,11 @@ /** * 计ç®ç次æ¶é´ * * @param shiftSubId * @param equipmentId * @param validDate * @return */ BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate); BigDecimal computeShiftTimeCount(String equipmentId, String validDate); /** * çæè®¾å¤å·¥ä½æ¥å lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java
@@ -41,10 +41,9 @@ /** * 计ç®å çæ¶é´ * * @param shiftSubId * @param equipmentId * @param validDate * @return */ BigDecimal computeOvertime(String shiftSubId, String equipmentId, String validDate); BigDecimal computeOvertime(String equipmentId, String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
@@ -24,9 +24,8 @@ * * @param equipmentId * @param validDate * @param shiftSubId * @return */ BigDecimal findSpindleRunDuration(String equipmentId, String validDate, String shiftSubId); BigDecimal findSpindleRunDuration(String equipmentId, String validDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOverallEquipmentEfficiencyService.java
@@ -1,14 +1,32 @@ package org.jeecg.modules.mdc.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo; import javax.servlet.http.HttpServletRequest; /** * @author: LiuS * @create: 2023-10-18 09:25 */ public interface IMdcOverallEquipmentEfficiencyService { public interface IMdcOverallEquipmentEfficiencyService extends IService<MdcOverallEquipmentEfficiency> { /** * 计ç®è®¾å¤ç»¼åæçOEE */ void runningOverallEquipmentEfficiency(); /** * å页å表æ¥è¯¢ * * @param userId * @param page * @param mdcOverallEquipmentEfficiencyVo * @param req * @return */ IPage<MdcOverallEquipmentEfficiency> pageList(String userId, Page<MdcOverallEquipmentEfficiency> page, MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo, HttpServletRequest req); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.MdcPlanClose; import java.math.BigDecimal; /** * @Description: mdc计ååæºç»´æ¤è¡¨ * @Author: Lius @@ -11,4 +13,5 @@ */ public interface IMdcPlanCloseService extends IService<MdcPlanClose> { BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
@@ -146,15 +146,14 @@ /** * 计ç®å®é çäº§å¤©æ° * * @param shiftSubId * @param equipmentId * @param validDate * @return */ @Override public BigDecimal computeActualWorkDayCount(String shiftSubId, String equipmentId, String validDate) { public BigDecimal computeActualWorkDayCount(String equipmentId, String validDate) { validDate = validDate.replaceAll("-", ""); List<String> validDateList = this.baseMapper.computeActualWorkDayCount(shiftSubId, equipmentId, validDate); List<String> validDateList = this.baseMapper.computeActualWorkDayCount(equipmentId, validDate); return new BigDecimal(validDateList.size()); } @@ -174,14 +173,13 @@ /** * 计ç®ç次æ¶é´ * * @param shiftSubId * @param equipmentId * @param validDate * @return */ @Override public BigDecimal computeShiftTimeCount(String shiftSubId, String equipmentId, String validDate) { Integer shiftCount = this.baseMapper.computeShiftTimeCount(shiftSubId, equipmentId, validDate); public BigDecimal computeShiftTimeCount(String equipmentId, String validDate) { Integer shiftCount = this.baseMapper.computeShiftTimeCount(equipmentId, validDate); return new BigDecimal(shiftCount).multiply(new BigDecimal("8")).multiply(new BigDecimal("60")); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java
@@ -132,14 +132,13 @@ /** * 计ç®å çæ¶é´ï¼åéï¼ * * @param shiftSubId * @param equipmentId * @param validDate * @return */ @Override public BigDecimal computeOvertime(String shiftSubId, String equipmentId, String validDate) { List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(shiftSubId, equipmentId, validDate); public BigDecimal computeOvertime(String equipmentId, String validDate) { List<MdcEquipmentOvertime> list = this.baseMapper.computeOvertime(equipmentId, validDate); BigDecimal result = new BigDecimal("0"); if (list != null && !list.isEmpty()) { for (MdcEquipmentOvertime equipmentOvertime : list) { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -84,9 +84,9 @@ * @return */ @Override public BigDecimal findSpindleRunDuration(String equipmentId, String validDate, String shiftSubId) { public BigDecimal findSpindleRunDuration(String equipmentId, String validDate) { validDate = validDate.replaceAll("-", ""); BigDecimal duration = this.baseMapper.findSpindleRunDuration(equipmentId, validDate, shiftSubId); BigDecimal duration = this.baseMapper.findSpindleRunDuration(equipmentId, validDate); if (duration != null && duration.compareTo(BigDecimal.ZERO) != 0) { return duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP); } else { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
@@ -1,20 +1,26 @@ package org.jeecg.modules.mdc.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.mdc.constant.MdcConstant; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.entity.MdcStandardProcessDuration; import org.jeecg.modules.mdc.mapper.MdcOverallEquipmentEfficiencyMapper; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.vo.MdcOverallEquipmentEfficiencyVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.YearMonth; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** @@ -70,118 +76,157 @@ List<MdcEquipment> equipmentList = mdcEquipmentService.list(); for (MdcEquipment mdcEquipment : equipmentList) { String equipmentId = mdcEquipment.getEquipmentId(); // æ¥è¯¢ç次åç±» MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency(); // æ¶é´å¼å¨çè®¡ç® mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId); mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName()); mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel()); mdcOverallEquipmentEfficiency.setValidDate(validDate); // æ¥è¯¢çå¶åç±» List<String> shiftSubIdList = mdcDeviceCalendarService.findShiftSort(equipmentId, validDate); if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) { String shift = String.join(",", shiftSubIdList); mdcOverallEquipmentEfficiency.setShift(shift); } BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(equipmentId, validDate); mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount); // 计ç®å çæ¶é´ BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(equipmentId, validDate); mdcOverallEquipmentEfficiency.setOvertime(overtime); // 计ç®å®é çäº§å¤©æ° BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(equipmentId, validDate); mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount); // æåº¦å®é çäº§æ»æ¶é´(åé) mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime)); // æ éåæºæ¶é¿ç»è®¡(åé) BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration); // æ¢åè°è¯æ¶é¿ç»è®¡(åé) BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG); mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration); // ç©æç缺æ¶é¿ç»è®¡(åé) BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE); mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration); // 计åç任塿¶é¿ç»è®¡(åé) BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK); mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration); // æ£éªæ¶é¿ç»è®¡(åé) BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT); mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration); // å ¶ä»æ¶é¿ç»è®¡(åé) BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER); mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration); // 计åä¿å »æ¶é¿ç»è®¡(åé) BigDecimal plannedMaintenanceDuration = new BigDecimal("0"); BigDecimal plannedMaintenanceDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE); mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); // ä¼è®®/å¹è®æ¶é¿ç»è®¡(åé) BigDecimal conferenceTrainingDuration = new BigDecimal("0"); BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING); mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); // å ¶å®ä¼æ¯æ¶é¿ç»è®¡(åé) BigDecimal otherRestDuration = new BigDecimal("0"); if (shiftSubIdList != null && !shiftSubIdList.isEmpty()) { for (String shiftSubId : shiftSubIdList) { MdcOverallEquipmentEfficiency mdcOverallEquipmentEfficiency = new MdcOverallEquipmentEfficiency(); // æ¶é´å¼å¨çè®¡ç® mdcOverallEquipmentEfficiency.setEquipmentId(equipmentId); mdcOverallEquipmentEfficiency.setEquipmentName(mdcEquipment.getEquipmentName()); mdcOverallEquipmentEfficiency.setEquipmentModel(mdcEquipment.getEquipmentModel()); mdcOverallEquipmentEfficiency.setValidDate(validDate); // çæ¬¡ çæ¬¡æ¶é´ mdcOverallEquipmentEfficiency.setShiftSubId(shiftSubId); BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(shiftSubId, equipmentId, validDate); mdcOverallEquipmentEfficiency.setShiftTimeCount(shiftTimeCount); // 计ç®å çæ¶é´ BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(shiftSubId, equipmentId, validDate); mdcOverallEquipmentEfficiency.setOvertime(overtime); // 计ç®å®é çäº§å¤©æ° BigDecimal actualWorkDayCount = mdcDeviceCalendarService.computeActualWorkDayCount(shiftSubId, equipmentId, validDate); mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount); // æåº¦å®é çäº§æ»æ¶é´(åé) mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime)); // æ éåæºæ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration); // æ¢åè°è¯æ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration); // ç©æç缺æ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration); // 计åç任塿¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration); // æ£éªæ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration); // å ¶ä»æ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration); // 计åä¿å »æ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); // ä¼è®®/å¹è®æ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); // å ¶å®ä¼æ¯æ¶é¿ç»è®¡(åé) mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); /* è´è·æ¶é´(å°æ¶) = 工使¥åæ¶é´ - 计ååæºæ¶é´ 工使¥åæ¶é´ = æ¥åæ¶é´ - æ³å®åæ¥ - å伿¥ + å çæ¶é´ è®¡ååæºæ¶é´ = 计åä¿å »æ¶é¿ + ä¼è®®/å¹è®æ¶é¿ + ä¼è®®/å¹è®æ¶é¿ */ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration // è´è·æ¶é´(åé) BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP)); // æ¶é´å¼å¨ç BigDecimal timeActuationRate = BigDecimal.ZERO; if (loadTime.compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO); } else { timeActuationRate = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP); mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate); } // å å·¥é¶ä»¶æ°(ä»¶) processQuantity BigDecimal processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate); mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity); // æ åå å·¥æ¶é´(åé) MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId)); if (mdcStandardProcessDuration != null) { mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity)); } else { mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO); } // æ§è½å¼å¨ç = 主轴è¿è¡æ¶é´/è´è·æ¶é´ // æ¥è¯¢ä¸»è½´è¿è¡æ¶é´(åé) BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate, shiftSubId); if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0) { mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); } else { mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); } // åºåæ° unqualifiedQuantity BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate); mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity); // åæ ¼ç if (processQuantity.compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE); } else { mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP)); } // 设å¤ç»¼åæç = æ¶é´å¼å¨ç à æ§è½å¼å¨ç Ã åæ ¼åç mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate())); if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE); } result.add(mdcOverallEquipmentEfficiency); } BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST); mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); /* è´è·æ¶é´(å°æ¶) = 工使¥åæ¶é´ - 计ååæºæ¶é´ 工使¥åæ¶é´ = æ¥åæ¶é´ - æ³å®åæ¥ - å伿¥ + å çæ¶é´ è®¡ååæºæ¶é´ = 计åä¿å »æ¶é¿ + ä¼è®®/å¹è®æ¶é¿ + ä¼è®®/å¹è®æ¶é¿ */ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration // è´è·æ¶é´(åé) BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP)); // æ¶é´å¼å¨ç BigDecimal timeActuationRate = BigDecimal.ZERO; if (loadTime.compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO); } else { timeActuationRate = (loadTime.subtract(breakdownDownDuration).subtract(conversionDebugDuration).subtract(materialShortageDuration).subtract(plannedTaskDuration).subtract(inspectDuration).subtract(otherDuration)).divide(loadTime, 4, RoundingMode.HALF_UP); mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate); } // å å·¥é¶ä»¶æ°(ä»¶) processQuantity BigDecimal processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate); mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity); // æ åå å·¥æ¶é´(åé) MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId)); if (mdcStandardProcessDuration != null) { mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity)); } else { mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO); } // æ§è½å¼å¨ç = 主轴è¿è¡æ¶é´/è´è·æ¶é´ // æ¥è¯¢ä¸»è½´è¿è¡æ¶é´(åé) BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate); if (loadTime.compareTo(BigDecimal.ZERO) != 0) { mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); } else { mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); } // åºåæ° unqualifiedQuantity BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate); mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity); // åæ ¼ç if (processQuantity.compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE); } else { mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP)); } // 设å¤ç»¼åæç = æ¶é´å¼å¨ç à æ§è½å¼å¨ç Ã åæ ¼åç mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate())); if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) { mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ONE); } result.add(mdcOverallEquipmentEfficiency); } super.saveBatch(result); } /** * å页å表æ¥è¯¢ * * @param userId * @param page * @param mdcOverallEquipmentEfficiencyVo * @param req * @return */ @Override public IPage<MdcOverallEquipmentEfficiency> pageList(String userId, Page<MdcOverallEquipmentEfficiency> page, MdcOverallEquipmentEfficiencyVo mdcOverallEquipmentEfficiencyVo, HttpServletRequest req) { List<String> equipmentIds = new ArrayList<>(); if (StringUtils.isNotEmpty(mdcOverallEquipmentEfficiencyVo.getParentId()) && StringUtils.isEmpty(mdcOverallEquipmentEfficiencyVo.getEquipmentId())) { if ("2".equals(mdcOverallEquipmentEfficiencyVo.getTypeTree())) { // é¨é¨å±çº§ equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcOverallEquipmentEfficiencyVo.getParentId()); } else { // 产线å±çº§ equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcOverallEquipmentEfficiencyVo.getParentId()); } } else if (StringUtils.isNotEmpty(mdcOverallEquipmentEfficiencyVo.getEquipmentId())) { // åå°è®¾å¤ä¿¡æ¯ mdcOverallEquipmentEfficiencyVo.setEquipmentIdList(Collections.singletonList(mdcOverallEquipmentEfficiencyVo.getEquipmentId())); } else { // æ¥è¯¢ç¨æ·æ¥æçææè®¾å¤ä¿¡æ¯ if ("2".equals(mdcOverallEquipmentEfficiencyVo.getTypeTree())) { // é¨é¨å±çº§ equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); } else { // 产线å±çº§ equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); } } if (mdcOverallEquipmentEfficiencyVo.getEquipmentIdList() == null || mdcOverallEquipmentEfficiencyVo.getEquipmentIdList().isEmpty()) { mdcOverallEquipmentEfficiencyVo.setEquipmentIdList(equipmentIds); } if (mdcOverallEquipmentEfficiencyVo.getEquipmentIdList() == null || mdcOverallEquipmentEfficiencyVo.getEquipmentIdList().isEmpty()) { return null; } return this.baseMapper.pageList(page, mdcOverallEquipmentEfficiencyVo); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java
@@ -1,11 +1,16 @@ 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.jeecg.modules.mdc.entity.MdcPlanClose; import org.jeecg.modules.mdc.mapper.MdcPlanCloseMapper; import org.jeecg.modules.mdc.service.IMdcPlanCloseService; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Collections; import java.util.List; /** @@ -17,4 +22,27 @@ @Service public class MdcPlanCloseServiceImpl extends ServiceImpl<MdcPlanCloseMapper, MdcPlanClose> implements IMdcPlanCloseService { @Override public BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType) { BigDecimal result = new BigDecimal("0"); List<MdcPlanClose> mdcPlanCloses = this.baseMapper.selectList(new LambdaQueryWrapper<MdcPlanClose>().in(MdcPlanClose::getPlanCloseType, Collections.singletonList(planCloseType))); if (mdcPlanCloses != null && !mdcPlanCloses.isEmpty()) { for (MdcPlanClose mdcPlanClose : mdcPlanCloses) { switch (mdcPlanClose.getPlanCloseTimeType()) { case "天": result = result.add(actualWorkDayCount.multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()))); break; case "å¨": result = result.add(new BigDecimal("4").multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()))); break; case "æ": result = result.add(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong())); break; default: break; } } } return result; } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOverallEquipmentEfficiencyVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ package org.jeecg.modules.mdc.vo; import lombok.Data; import java.util.List; /** * @author Lius * @date 2023/11/13 17:10 */ @Data public class MdcOverallEquipmentEfficiencyVo { /** * å¼å§æ¶é´ -> 20220101 */ private String startTime; /** * ç»ææ¶é´ -> 20220101 */ private String endTime; /** * æ ç±»å -> 1:车é´å±çº§ 2:é¨é¨å±çº§ */ private String typeTree; /** * å±çº§ID */ private String parentId; /** * 设å¤Id */ private String equipmentId; /** * çå¶Id */ private String shiftId; /** * çæ¬¡Id */ private String shiftSubId; /** * 设å¤ids */ private List<String> equipmentIdList; }