lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
@@ -592,4 +592,10 @@ */ String DICT_EQUIPMENT_RATE_NORMAL = "equipment_rate_normal"; /** * å çæ°æ® èªå¨è®¡ç®æ è¯ 1(æ¯) 2(å¦) */ Integer AUTO_FLAG_Y = 1; Integer AUTO_FLAG_N = 2; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentOvertimeController.java
@@ -1,7 +1,6 @@ package org.jeecg.modules.mdc.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; @@ -20,9 +19,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @Description: 设å¤å ç管ç @@ -72,18 +69,13 @@ @ApiOperation(value = "设å¤å ç管ç-æ·»å ", notes = "设å¤å ç管ç-æ·»å ") @PostMapping(value = "/add") public Result<?> add(@RequestBody MdcEquipmentOvertime mdcEquipmentOvertime) { String[] calendarIdList = mdcEquipmentOvertime.getCalendarId().split(","); List<MdcEquipmentOvertime> equipmentOvertimeList = new ArrayList<>(); mdcEquipmentOvertimeService.remove(new LambdaQueryWrapper<MdcEquipmentOvertime>().in(MdcEquipmentOvertime::getCalendarId, Arrays.asList(calendarIdList))); for (String calendarId : calendarIdList) { MdcEquipmentOvertime equipmentOvertime = new MdcEquipmentOvertime(); equipmentOvertime.setCalendarId(calendarId); equipmentOvertime.setStartTime(mdcEquipmentOvertime.getStartTime()); equipmentOvertime.setEndTime(mdcEquipmentOvertime.getEndTime()); equipmentOvertime.setRemark(mdcEquipmentOvertime.getRemark()); equipmentOvertimeList.add(equipmentOvertime); if (org.apache.commons.lang3.StringUtils.isBlank(mdcEquipmentOvertime.getEquipmentId())) { return Result.error("æªéæ©è®¾å¤ï¼è¯·ææ¥ï¼"); } mdcEquipmentOvertimeService.saveBatch(equipmentOvertimeList); boolean result = mdcEquipmentOvertimeService.addOvertime(mdcEquipmentOvertime); if (!result) { return Result.error("æ·»å 失败ï¼"); } return Result.OK("æ·»å æåï¼"); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentOvertime.java
@@ -7,10 +7,12 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.entity.JeecgEntity; import org.jeecgframework.poi.excel.annotation.Excel; import java.io.Serializable; import java.math.BigDecimal; import java.util.List; /** @@ -28,42 +30,20 @@ private static final long serialVersionUID = -7163039765166584824L; @TableField(exist = false) @Excel(name = "设å¤ç¼å·", width = 20) @ApiModelProperty("æ¥æ") private String equipmentId; @TableField(exist = false) @Excel(name = "设å¤åç§°", width = 20) private String equipmentName; /** * çææ¥æ */ @Excel(name = "çææ¥æ", width = 15) @TableField(exist = false) private String effectiveDate; @ApiModelProperty("æ¥æ") private String theDate; /** * çæ¬¡å¼å§æ¶é´ */ @Excel(name = "çæ¬¡å¼å§æ¶é´", width = 20) @ApiModelProperty("çæ¬¡å¼å§æ¶é´") @TableField(exist = false) private String startDate; /** * çæ¬¡ç»ææ¶é´ */ @Excel(name = "çæ¬¡ç»ææ¶é´", width = 20) @ApiModelProperty("çæ¬¡ç»ææ¶é´") @TableField(exist = false) private String endDate; /** * 工使¥åid */ @ApiModelProperty(value = "工使¥åid") private String calendarId; @Excel(name = "èªå¨è®¡ç®æ è¯", width = 15) @ApiModelProperty("èªå¨è®¡ç®æ è¯") private Integer autoFlag = CommonConstant.AUTO_FLAG_N; /** * å çå¼å§æ¶é´ @@ -79,6 +59,13 @@ private String endTime; /** * å çæ¶é¿ */ @Excel(name = "æ¶é¿", width = 20) @ApiModelProperty(value = "æ¶é¿") private BigDecimal duration; /** * 夿³¨ */ @Excel(name = "夿³¨") lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -72,8 +72,8 @@ log.info("设å¤ç¶æé¿ææ å忥è¦ä»»å¡ RunningEquipmentStatusJob start! æ¶é´:" + DateUtils.getNow()); long startTime = System.currentTimeMillis(); try { //List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<>()); List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<>()); //List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); // è·åå©ç¨çå¤å®å¤©æ° List<DictModel> dictModelList1 = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_EQUIPMENT_RATE_JUDGE); Integer equipmentRateJudge = 5; lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOvertimeDurationJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,194 @@ package org.jeecg.modules.mdc.job; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentOvertime; import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; import org.jeecg.modules.mdc.entity.MdcSystemParameters; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo; 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.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @author Lius * @Description: 设å¤å çæ¶é¿ç®æ³ç»è®¡ * @date 2024/1/24 17:12 */ @PersistJobDataAfterExecution @DisallowConcurrentExecution @Slf4j public class RunningOvertimeDurationJob implements Job { @Resource private IQuartzJobService quartzJobService; @Resource private ISysQuartzLogService sysQuartzLogService; @Resource private IMdcEquipmentService mdcEquipmentService; @Resource private IMdcEquipmentOvertimeService mdcEquipmentOvertimeService; /** * è¥åæ°åéåä¿®æ¹ QuartzJobControllerä¸ä¹é对åºä¿®æ¹ æ¶é´ï¼ yyyyMMdd ä¾ï¼ 20230414 */ private String parameter; public void setParameter(String parameter) { this.parameter = parameter; } @Resource private ISysAnnouncementService sysAnnouncementService; @Resource private IMdcDeviceCalendarService mdcDeviceCalendarService; @Resource private IMdcSystemParametersService mdcSystemParametersService; @Resource private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService; @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(String.format("宿¶ç»è®¡è®¾å¤å çæ¶é¿ä»»å¡ param: %s RunningOvertimeDurationJob start! æ¶é´:" + DateUtils.getNow(), this.parameter)); long startTime = System.currentTimeMillis(); try { String date = ""; if (StringUtils.isNotBlank(this.parameter)) { date = DateUtils.format(DateUtils.toDate(this.parameter, DateUtils.STRDATE), DateUtils.STR_DATE); Date initDate = DateUtils.toDate(this.parameter, DateUtils.STRDATE); if (initDate != null) { mdcEquipmentOvertimeService.remove(new LambdaQueryWrapper<MdcEquipmentOvertime>().eq(MdcEquipmentOvertime::getTheDate, this.parameter).eq(MdcEquipmentOvertime::getAutoFlag, CommonConstant.AUTO_FLAG_Y)); } } else { date = DateUtils.format(DateUtils.getNow(), DateUtils.STR_DATE); } List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<>()); MdcSystemParameters mdcSystemParameters = mdcSystemParametersService.getOne(new LambdaQueryWrapper<MdcSystemParameters>().eq(MdcSystemParameters::getCode, "equip_log_statis_time")); if (mdcSystemParameters == null) { throw new JobExecutionException("mdc_system_parameters è¡¨ä¸æ°æ®ç¼ºå¤±"); } String value = mdcSystemParameters.getValue(); List<MdcEquipmentOvertime> result = new ArrayList<>(); for (MdcEquipment mdcEquipment : equipmentList) { // è·å设å¤å·¥ä½æ¥å List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentIdAndDate(mdcEquipment.getEquipmentId(), this.parameter); if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) { //è·åæåä¸ä¸ªçæ¬¡ç»ææ¶é´ Date startDate = this.getCalendarEndDate(mdcDeviceCalendarVos, date); Date endDate = DateUtils.plusTime(DateUtils.toDate(date + " " + value, DateUtils.STR_DATE_TIME_SMALL), 1); List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), startDate, endDate); if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) { // æ¶é´ä¿®æ£ if (equipmentRunningSectionList.get(0).getStartTime().before(startDate)) { equipmentRunningSectionList.get(0).setStartTime(startDate); } if (equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).getEndTime().after(endDate)) { equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).setEndTime(endDate); } BigDecimal duration = BigDecimal.ZERO; for (MdcEquipmentRunningSection mdcEquipmentRunningSection : equipmentRunningSectionList) { duration = duration.add(new BigDecimal(DateUtils.differentSecond(mdcEquipmentRunningSection.getStartTime(), mdcEquipmentRunningSection.getEndTime()))); } MdcEquipmentOvertime mdcEquipmentOvertime = new MdcEquipmentOvertime(); mdcEquipmentOvertime.setEquipmentId(mdcEquipment.getEquipmentId()); mdcEquipmentOvertime.setDuration(duration); mdcEquipmentOvertime.setAutoFlag(CommonConstant.AUTO_FLAG_Y); mdcEquipmentOvertime.setTheDate(this.parameter); result.add(mdcEquipmentOvertime); } } else { // 没æç次é ç½®ï¼è®¡ç®å ¨å¤©ç设å¤å å·¥ç¶æ Date startDate = DateUtils.toDate(date + " " + value, DateUtils.STR_DATE_TIME_SMALL); Date endDate = DateUtils.plusTime(startDate, 1); List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), startDate, endDate); if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) { // æ¶é´ä¿®æ£ if (equipmentRunningSectionList.get(0).getStartTime().before(startDate)) { equipmentRunningSectionList.get(0).setStartTime(startDate); } if (equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).getEndTime().after(endDate)) { equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).setEndTime(endDate); } BigDecimal duration = BigDecimal.ZERO; for (MdcEquipmentRunningSection mdcEquipmentRunningSection : equipmentRunningSectionList) { duration = duration.add(new BigDecimal(DateUtils.differentSecond(mdcEquipmentRunningSection.getStartTime(), mdcEquipmentRunningSection.getEndTime()))); } MdcEquipmentOvertime mdcEquipmentOvertime = new MdcEquipmentOvertime(); mdcEquipmentOvertime.setEquipmentId(mdcEquipment.getEquipmentId()); mdcEquipmentOvertime.setDuration(duration); mdcEquipmentOvertime.setAutoFlag(CommonConstant.AUTO_FLAG_Y); mdcEquipmentOvertime.setTheDate(this.parameter); result.add(mdcEquipmentOvertime); } } } if (!result.isEmpty()) { mdcEquipmentOvertimeService.saveBatch(result); } quartzLog.setIsSuccess(0); } catch (Exception e) { quartzLog.setIsSuccess(-1); quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); // åéæ¶æ¯éç¥ sysAnnouncementService.jobSendMessage("宿¶ç»è®¡è®¾å¤å çæ¶é¿ä»»å¡å¤±è´¥", quartzLog.getExceptionDetail()); } long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); sysQuartzLogService.save(quartzLog); } private Date getCalendarEndDate(List<MdcDeviceCalendarVo> mdcDeviceCalendarVos, String date) { date = DateUtils.format(DateUtils.toDate(date, DateUtils.STRDATE), DateUtils.STR_DATE); String endDate = ""; for (MdcDeviceCalendarVo mdcDeviceCalendarVo : mdcDeviceCalendarVos) { String shiftEndDate = ""; if ("true".equals(mdcDeviceCalendarVo.getIsDaySpan())) { shiftEndDate = DateUtils.format(DateUtils.plusTime(DateUtils.toDate(date, DateUtils.STR_DATE), 1), DateUtils.STR_DATE) + " " + mdcDeviceCalendarVo.getEndDate(); } else { shiftEndDate = date + " " + mdcDeviceCalendarVo.getEndDate(); } if (StringUtils.isBlank(endDate)) { endDate = shiftEndDate; } else { // endDate Date date1 = DateUtils.toDate(endDate, DateUtils.STR_DATE_TIME_SMALL); // shiftEndDate Date date2 = DateUtils.toDate(shiftEndDate, DateUtils.STR_DATE_TIME_SMALL); if (date2.after(date1)) { endDate = shiftEndDate; } } } return DateUtils.toDate(endDate, DateUtils.STR_DATE_TIME_SMALL); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOvertimeMapper.xml
@@ -6,13 +6,12 @@ <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentOvertime"> SELECT t1.id, t2.equipment_id equipmentId, t4.equipment_name equipmentName, t2.effective_date effectiveDate, t3.start_date startDate, t3.end_date endDate, t1.equipment_id equipmentId, t2.equipment_name equipmentName, t1.the_date theDate, t1.start_time startTime, t1.end_time endTime, t1.duration duration, t1.remark remark, t1.create_by createBy, t1.create_time createTime, @@ -20,37 +19,37 @@ t1.update_time updateTime FROM mdc_equipment_overtime t1 LEFT JOIN mdc_device_calendar t2 ON t1.calendar_id = t2.id LEFT JOIN mdc_shift_sub t3 ON t3.id = t2.shift_sub_id LEFT JOIN mdc_equipment t4 ON t4.equipment_id = t2.equipment_id LEFT JOIN mdc_equipment t2 ON t2.equipment_id = t1.equipment_id <where> <if test="mdcEquipmentOvertime.equipmentName != null and mdcEquipmentOvertime.equipmentName != '' "> AND t4.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentName}),'%') AND t2.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentName}),'%') </if> <if test="mdcEquipmentOvertime.equipmentId != null and mdcEquipmentOvertime.equipmentId != '' "> AND t2.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentId}),'%') AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentId}),'%') </if> <if test="mdcEquipmentOvertime.mdcSectionIds != null and mdcEquipmentOvertime.mdcSectionIds.size() > 0 "> AND t2.equipment_id IN AND t1.equipment_id IN <foreach collection="mdcEquipmentOvertime.mdcSectionIds" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> <if test="mdcEquipmentOvertime.startTime != null and mdcEquipmentOvertime.startTime != '' and mdcEquipmentOvertime.endTime != null and mdcEquipmentOvertime.endTime != ''"> AND t1.the_date BETWEEN #{ mdcEquipmentOvertime.startTime } AND #{ mdcEquipmentOvertime.endTime } </if> </where> order by t2.effective_date asc order by t1.the_date asc </select> <!--listå表--> <select id="list" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentOvertime"> SELECT t1.id, t2.equipment_id equipmentId, t4.equipment_name equipmentName, t2.effective_date effectiveDate, t3.start_date startDate, t3.end_date endDate, t1.equipment_id equipmentId, t2.equipment_name equipmentName, t1.the_date theDate, t1.start_time startTime, t1.end_time endTime, t1.duration duration, t1.remark remark, t1.create_by createBy, t1.create_time createTime, @@ -58,24 +57,25 @@ t1.update_time updateTime FROM mdc_equipment_overtime t1 LEFT JOIN mdc_device_calendar t2 ON t1.calendar_id = t2.id LEFT JOIN mdc_shift_sub t3 ON t3.id = t2.shift_sub_id LEFT JOIN mdc_equipment t4 ON t4.equipment_id = t2.equipment_id LEFT JOIN mdc_equipment t2 ON t2.equipment_id = t1.equipment_id <where> <if test="mdcEquipmentOvertime.equipmentName != null and mdcEquipmentOvertime.equipmentName != '' "> AND t4.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentName}),'%') AND t2.equipment_name LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentName}),'%') </if> <if test="mdcEquipmentOvertime.equipmentId != null and mdcEquipmentOvertime.equipmentId != '' "> AND t2.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentId}),'%') AND t1.equipment_id LIKE CONCAT(CONCAT('%',#{mdcEquipmentOvertime.equipmentId}),'%') </if> <if test="mdcEquipmentOvertime.mdcSectionIds != null and mdcEquipmentOvertime.mdcSectionIds.size() > 0 "> AND t2.equipment_id IN AND t1.equipment_id IN <foreach collection="mdcEquipmentOvertime.mdcSectionIds" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> <if test="mdcEquipmentOvertime.startTime != null and mdcEquipmentOvertime.startTime != '' and mdcEquipmentOvertime.endTime != null and mdcEquipmentOvertime.endTime != ''"> AND t1.the_date BETWEEN #{ mdcEquipmentOvertime.startTime } AND #{ mdcEquipmentOvertime.endTime } </if> </where> order by t2.effective_date asc order by t1.the_date asc </select> <!--æ¥è¯¢å çæ¶é¿--> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java
@@ -71,4 +71,6 @@ void generateDeviceCalendar(); MdcDeviceCalendar getFirstData(String equipmentId); List<MdcDeviceCalendarVo> listByEquipmentIdAndDate(String equipmentId, String date); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOvertimeService.java
@@ -46,4 +46,12 @@ * @return */ BigDecimal computeOvertime(String equipmentId, String validDate); /** * æ·»å * @param mdcEquipmentOvertime * @return */ boolean addOvertime(MdcEquipmentOvertime mdcEquipmentOvertime); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
@@ -210,4 +210,9 @@ return this.baseMapper.getFirstData(equipmentId); } @Override public List<MdcDeviceCalendarVo> listByEquipmentIdAndDate(String equipmentId, String date) { return this.baseMapper.listByEquipmentAndDate(equipmentId, date); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -1160,8 +1160,11 @@ mdcEfficiencyShiftResultDto.setCloseLong(equipmentStatisticalShiftInfo.getCloseLong()); mdcEfficiencyShiftResultDto.setOpenLong(equipmentStatisticalShiftInfo.getOpenLong()); mdcEfficiencyShiftResultDto.setWaitLong(equipmentStatisticalShiftInfo.getWaitLong()); if (equipmentStatisticalShiftInfo.getTotalLong().compareTo(BigDecimal.ZERO) == 0) { mdcEfficiencyShiftResultDto.setOpenRate(BigDecimal.ZERO); } else { mdcEfficiencyShiftResultDto.setOpenRate(equipmentStatisticalShiftInfo.getOpenLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, RoundingMode.HALF_UP)); } long rate = mdcEfficiencyShiftResultDto.getUtilizationRate().multiply(new BigDecimal("100")).longValue(); for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (rate >= mdcUtilizationRate.getMinimumRange() && rate < mdcUtilizationRate.getMaximumRange()) { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOvertimeServiceImpl.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.mdc.entity.MdcEquipmentOvertime; import org.jeecg.modules.mdc.mapper.MdcEquipmentOvertimeMapper; @@ -153,4 +154,31 @@ } return result; } /** * æ·»å * * @param mdcEquipmentOvertime * @return */ @Override public boolean addOvertime(MdcEquipmentOvertime mdcEquipmentOvertime) { String[] equipmentIds = mdcEquipmentOvertime.getEquipmentIds().split(","); List<MdcEquipmentOvertime> mdcEquipmentOvertimes = new ArrayList<>(); // è®¡ç®æ¶é¿(ç§) String startTime = mdcEquipmentOvertime.getStartTime(); String endTime = mdcEquipmentOvertime.getEndTime(); long duration = DateUtils.differentSecond(DateUtils.setTimeForDay(DateUtils.getNow(), startTime), DateUtils.setTimeForDay(DateUtils.getNow(), endTime)); for (String equipmentId : equipmentIds) { MdcEquipmentOvertime equipmentOvertime = new MdcEquipmentOvertime(); equipmentOvertime.setEquipmentId(equipmentId); equipmentOvertime.setTheDate(mdcEquipmentOvertime.getTheDate()); equipmentOvertime.setAutoFlag(CommonConstant.AUTO_FLAG_N); equipmentOvertime.setStartTime(mdcEquipmentOvertime.getStartTime()); equipmentOvertime.setEndTime(mdcEquipmentOvertime.getEndTime()); equipmentOvertime.setDuration(new BigDecimal(duration)); mdcEquipmentOvertimes.add(equipmentOvertime); } return super.saveBatch(mdcEquipmentOvertimes); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
@@ -108,9 +108,13 @@ } // BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(equipmentId, validDate); if (StringUtils.isEmpty(mdcOverallEquipmentEfficiency.getShift())) { mdcOverallEquipmentEfficiency.setShiftTimeCount(BigDecimal.ZERO); } else { mdcOverallEquipmentEfficiency.setShiftTimeCount(new BigDecimal("8")); } // 计ç®å çæ¶é´ // TODO 计ç®å çæ¶é´ BigDecimal overtime = mdcEquipmentOvertimeService.computeOvertime(equipmentId, validDate); mdcOverallEquipmentEfficiency.setOvertime(overtime); @@ -119,7 +123,7 @@ mdcOverallEquipmentEfficiency.setActualWorkDayCount(actualWorkDayCount); // æåº¦å®é çäº§æ»æ¶é´(åé) mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().add(overtime)); mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().multiply(actualWorkDayCount).multiply(new BigDecimal("60")).add(overtime)); // æ éåæºæ¶é¿ç»è®¡(åé) BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); @@ -156,7 +160,7 @@ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration // è´è·æ¶é´(åé) BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); if (loadTime.compareTo(BigDecimal.ZERO) > -1) { if (loadTime.compareTo(BigDecimal.ZERO) < 0) { loadTime = BigDecimal.ZERO; } mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP));