lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
@@ -94,6 +94,9 @@ filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdfé¢è§ filterChainDefinitionMap.put("/generic/**", "anon");//pdfé¢è§éè¦æä»¶ filterChainDefinitionMap.put("/sys/user/updatePassword", "anon");//é¦é¡µç¨æ·ä¿®æ¹å¯ç filterChainDefinitionMap.put("/outer/bigScreen/**", "anon");//çæ¿ filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //ç»å½äºç»´ç filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //ç嬿«ç lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.EquipmentLog; import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo; import java.util.Date; import java.util.List; @@ -13,10 +14,13 @@ */ public interface EquipmentLogMapper extends BaseMapper<EquipmentLog> { List<AllEquipmentLogVo> findAllEquipmentLog(@Param("yesterday") Date yesterday); EquipmentLog getRow(@Param("equipmentid") String equipmentid, @Param("startTime") Date startTime); EquipmentLog selectEquipmentOporation(@Param("equipmentId") String equipmentId); List<EquipmentLog> getEquipmentStatusList(@Param("equipmentIdList") List<String> equipmentIdList); EquipmentLog getOne(@Param("equipmentId") String equipmentId); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentStatisticalInfoMapper.java
@@ -1,11 +1,20 @@ 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.EquipmentStatisticalInfo; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo; import java.util.List; /** * @author Lius * @date 2023/10/24 14:05 */ public interface EquipmentStatisticalInfoMapper extends BaseMapper<EquipmentStatisticalInfo> { List<LastWeekDataVo> findDataRankingForBigScreen(@Param("equipmentIdList") List<String> equipmentIdList, @Param("monday") String monday, @Param("saturday") String saturday); List<String> findEquipmentId(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date); List<LastWeekDataVo> findDataForBigScreen(@Param("equipmentIdList") List<String> equipmentIdList, @Param("monday") String monday, @Param("saturday") String saturday); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java
@@ -124,4 +124,5 @@ * @return */ MdcEquipmentDetailedDto findById(@Param("id") String id); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java
@@ -3,8 +3,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo; import java.math.BigDecimal; import java.util.List; /** * @author: LiuS @@ -21,4 +23,8 @@ MdcEquipmentStatisticalShiftInfo getMaxStaticsData(@Param("equipmentId") String equipmentid); BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); List<LastWeekDataVo> findDataForBigScreen(@Param("equipmentIdList") List<String> equipmentIdList, @Param("monday") String monday, @Param("saturday") String saturday); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml
@@ -2,6 +2,18 @@ <!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.EquipmentLogMapper"> <select id="findAllEquipmentLog" resultType="org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo"> SELECT * FROM EQUIPMENTLOG WHERE COLLECTTIME >= #{ yesterday } AND ALARM IS NOT NULL and ALARM != '' ORDER BY COLLECTTIME DESC; </select> <select id="getRow" resultType="org.jeecg.modules.mdc.entity.EquipmentLog"> SELECT top 1 * FROM EquipmentLog WHERE EquipmentID = #{ equipmentid } AND CollectTime <= #{ startTime } AND Oporation in ('0','1','2','3') ORDER BY CollectTime ASC </select> @@ -25,4 +37,13 @@ </foreach> </if> </select> <select id="getOne" resultType="org.jeecg.modules.mdc.entity.EquipmentLog"> SELECT top 1 * FROM ( SELECT * FROM EQUIPMENTLOG WHERE EQUIPMENTID = #{ equipmentId } ORDER BY COLLECTTIME DESC ) </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentStatisticalInfoMapper.xml
@@ -1,5 +1,71 @@ <?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.EquipmentStatisticalInfoMapper"> <select id="findDataRankingForBigScreen" resultType="org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo"> SELECT EQUIPMENT, SUM( CLOSEDLONG ) CLOSEDLONG, SUM( ERRORINGLONG ) ERRORINGLONG, SUM( OPENINGLONG ) OPENINGLONG, SUM( PROCESSINGLONG ) PROCESSINGLONG, SUM( WAITINGLONG ) WAITINGLONG FROM EQUIPMENTSTATISTICALINFO <where> <if test="equipmentIdList != null and equipmentIdList.size() > 0"> AND EQUIPMENT IN <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> AND THEDATE >= #{ monday } AND THEDATE <= #{ saturday } </where> GROUP BY EQUIPMENT; </select> <select id="findDataForBigScreen" resultType="org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo"> SELECT THEDATE, SUM( OPENINGLONG ) OPENINGLONG, SUM(CLOSEDLONG) CLOSEDLONG, SUM(PROCESSINGLONG) PROCESSINGLONG, SUM(WAITINGLONG) WAITINGLONG FROM EQUIPMENTSTATISTICALINFO <where> <if test="equipmentIdList != null and equipmentIdList.size() > 0"> AND EQUIPMENT IN <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> AND THEDATE >= #{ monday } AND THEDATE <= #{ saturday } </where> GROUP BY THEDATE ORDER BY THEDATE ASC; </select> <select id="findEquipmentId" resultType="java.lang.String"> SELECT DISTINCT EQUIPMENT FROM EQUIPMENTSTATISTICALINFO <where> <if test="equipmentIdList != null and equipmentIdList.size() > 0"> AND EQUIPMENT IN <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> <if test="date != null and date != ''"> AND THEDATE = #{ date } </if> </where> </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml
@@ -17,4 +17,32 @@ equipment_id = #{ equipmentId } AND the_date LIKE CONCAT(#{ validDate },'%') </select> <select id="findDataForBigScreen" resultType="org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo"> SELECT THE_DATE, SUM( close_long ) close_long, SUM( open_long ) open_long, SUM( error_long ) error_long, SUM( wait_long ) wait_long, SUM( process_long ) process_long, SUM( total_long ) total_long FROM mdc_equipment_statistical_shift_info <where> <if test="equipmentIdList != null and equipmentIdList.size() > 0"> AND EQUIPMENT_ID IN <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> AND THE_DATE >= #{ monday } AND THE_DATE <= #{ saturday } </where> GROUP BY THE_DATE ORDER BY THE_DATE ASC; </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.EquipmentLog; import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo; import java.util.Date; import java.util.List; @@ -30,4 +31,12 @@ EquipmentLog selectEquipmentOporation(String equipmentId); List<EquipmentLog> getEquipmentStatusList(List<String> equipmentIdList); /** * å ¨é¿è®¾å¤æ¥è¦æ°æ® * @return */ List<AllEquipmentLogVo> getALLEquipmentLog(); EquipmentLog findEquipmentLog(String equipmentId); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentStatisticalInfoService.java
@@ -2,10 +2,28 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.EquipmentStatisticalInfo; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo; import java.util.List; /** * @author Lius * @date 2023/10/24 14:04 */ public interface IEquipmentStatisticalInfoService extends IService<EquipmentStatisticalInfo> { /** * æ¥è¯¢æ®µæ¶é´å çæ°æ® * * @return */ List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday); Integer findEquipmentId(List<String> equipmentIdList, String date); /** * æ¥è¯¢æ®µæ¶é´å çæ°æ®(设å¤ç»´åº¦) */ List<LastWeekDataVo> findDataRankingForBigScreen(List<String> equipmentIdList, String monday, String saturday); Long selectSize(String equipmentId, String monday, String saturday); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java
@@ -210,4 +210,5 @@ List<String> listEquipmentIdShift(MdcEfficiencyReportShiftQueryVo vo); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java
@@ -2,8 +2,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo; import java.math.BigDecimal; import java.util.List; /** * @Description: 设å¤åæ¥ç次è¿è¡æ°æ®è¡¨ @@ -28,4 +30,10 @@ */ BigDecimal findSpindleRunDuration(String equipmentId, String validDate); /** * è·åå7çæ¬¡å©ç¨çæ°æ® */ List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java
@@ -5,6 +5,11 @@ import org.jeecg.modules.mdc.entity.EquipmentLog; import org.jeecg.modules.mdc.mapper.EquipmentLogMapper; import org.jeecg.modules.mdc.service.IEquipmentLogService; import org.jeecg.modules.mdc.service.IMdcAlarmInfoService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo; import org.jeecg.modules.mdc.util.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; @@ -17,8 +22,6 @@ */ @Service public class EquipmentLogServiceImpl extends ServiceImpl<EquipmentLogMapper, EquipmentLog> implements IEquipmentLogService { @Override public List<EquipmentLog> findEquipmentLogByEndTime(String equipmentId, Date maxDate) { LambdaQueryChainWrapper<EquipmentLog> lambdaQuery = this.lambdaQuery(); @@ -58,4 +61,17 @@ public List<EquipmentLog> getEquipmentStatusList(List<String> equipmentIdList) { return this.baseMapper.getEquipmentStatusList(equipmentIdList); } @Override public List<AllEquipmentLogVo> getALLEquipmentLog() { //è·åå½åæ¶é´24å°æ¶ä¹åçè®¾å¤æ¥è¦æ°æ® Date yesterday = DateUtils.getPreviousDay(DateUtils.getNow()); List<AllEquipmentLogVo> list = this.baseMapper.findAllEquipmentLog(yesterday); return list; } @Override public EquipmentLog findEquipmentLog(String equipmentId) { return this.baseMapper.getOne(equipmentId); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentStatisticalInfoServiceImpl.java
@@ -1,10 +1,14 @@ 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.EquipmentStatisticalInfo; import org.jeecg.modules.mdc.mapper.EquipmentStatisticalInfoMapper; import org.jeecg.modules.mdc.service.IEquipmentStatisticalInfoService; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo; import org.springframework.stereotype.Service; import java.util.List; /** * @author Lius @@ -12,4 +16,26 @@ */ @Service public class EquipmentStatisticalInfoServiceImpl extends ServiceImpl<EquipmentStatisticalInfoMapper, EquipmentStatisticalInfo> implements IEquipmentStatisticalInfoService { @Override public List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday) { return this.baseMapper.findDataForBigScreen(equipmentIdList, monday, saturday); } @Override public Integer findEquipmentId(List<String> equipmentIdList, String date) { List<String> list = this.baseMapper.findEquipmentId(equipmentIdList, date); return list.size(); } @Override public List<LastWeekDataVo> findDataRankingForBigScreen(List<String> equipmentIdList, String monday, String saturday) { return this.baseMapper.findDataRankingForBigScreen(equipmentIdList, monday, saturday); } @Override public Long selectSize(String equipmentId, String monday, String saturday) { return this.baseMapper.selectCount(new LambdaQueryWrapper<EquipmentStatisticalInfo>(). eq(EquipmentStatisticalInfo::getEquipment, equipmentId).ge(EquipmentStatisticalInfo::getTheDate, monday).le(EquipmentStatisticalInfo::getTheDate, saturday)); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -703,23 +703,24 @@ @Override public List<String> listEquipmentId(MdcEfficiencyReportQueryVo vo) { LambdaQueryWrapper<MdcEquipment> queryWrapper = new LambdaQueryWrapper<>(); if (vo.getEquipmentIdList() != null && !vo.getEquipmentIdList().isEmpty()) { queryWrapper.in(MdcEquipment::getEquipmentId, vo.getEquipmentIdList()); } if (StringUtils.isNotEmpty(vo.getEquipmentType())) { queryWrapper.in(MdcEquipment::getEquipmentType, Arrays.asList(vo.getEquipmentType().split(","))); } if (StringUtils.isNotEmpty(vo.getDeviceLevel())) { queryWrapper.in(MdcEquipment::getDeviceLevel, Arrays.asList(vo.getDeviceLevel().split(","))); } if (StringUtils.isNotEmpty(vo.getDriveType())) { queryWrapper.in(MdcEquipment::getDriveType, Arrays.asList(vo.getDriveType().split(","))); } if (StringUtils.isNotEmpty(vo.getDeviceCategory())) { queryWrapper.in(MdcEquipment::getDeviceCategory, Arrays.asList(vo.getDeviceCategory().split(","))); if (vo != null) { if (vo.getEquipmentIdList() != null && !vo.getEquipmentIdList().isEmpty()) { queryWrapper.in(MdcEquipment::getEquipmentId, vo.getEquipmentIdList()); } if (StringUtils.isNotEmpty(vo.getEquipmentType())) { queryWrapper.in(MdcEquipment::getEquipmentType, Arrays.asList(vo.getEquipmentType().split(","))); } if (StringUtils.isNotEmpty(vo.getDeviceLevel())) { queryWrapper.in(MdcEquipment::getDeviceLevel, Arrays.asList(vo.getDeviceLevel().split(","))); } if (StringUtils.isNotEmpty(vo.getDriveType())) { queryWrapper.in(MdcEquipment::getDriveType, Arrays.asList(vo.getDriveType().split(","))); } if (StringUtils.isNotEmpty(vo.getDeviceCategory())) { queryWrapper.in(MdcEquipment::getDeviceCategory, Arrays.asList(vo.getDeviceCategory().split(","))); } } List<MdcEquipment> list = super.list(queryWrapper); // List<MdcEquipment> list = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentType, equipmentType).in(MdcEquipment::getEquipmentId, equipmentIdList)); return list.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList()); } @@ -873,5 +874,4 @@ // List<MdcEquipment> list = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentType, equipmentType).in(MdcEquipment::getEquipmentId, equipmentIdList)); return list.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList()); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -9,6 +9,7 @@ import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalShiftInfoMapper; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.MdcDateVo; import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo; @@ -44,6 +45,12 @@ @Resource private IMdcEquipmentRepairService mdcEquipmentRepairService; @Override public List<LastWeekDataVo> findDataForBigScreen(List<String> equipmentIdList, String monday, String saturday) { return this.baseMapper.findDataForBigScreen(equipmentIdList, monday, saturday); } /** * 计ç®è®¾å¤åæ¥ç次è¿è¡æ°æ® * lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/api/MdcBigScreenController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,78 @@ package org.jeecg.modules.mdc.subcontrol.api; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.mdc.service.IEquipmentLogService; import org.jeecg.modules.mdc.subcontrol.service.MdcBigScreenService; import org.jeecg.modules.mdc.subcontrol.vo.AllEquipmentLogVo; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataRankingVo; import org.jeecg.modules.mdc.subcontrol.vo.MdcEquipmentOpVo; import org.jeecg.modules.mdc.vo.MdcEquipmentVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author: LiuS * @create: 2022-12-28 10:43 */ @Slf4j @RestController @RequestMapping("/outer/bigScreen") @Api(tags = "大屿¥å£") public class MdcBigScreenController { @Resource private MdcBigScreenService mdcBigScreenService; @Autowired private IEquipmentLogService equipmentLogService; @ApiOperation("å ¨åæ¥è¦ä¿¡æ¯") @GetMapping("/findAlarmInfo") public Result findAlarmInfo() { List<AllEquipmentLogVo> result = equipmentLogService.getALLEquipmentLog(); return Result.OK(result); } @ApiOperation("è·åå7æ°æ®") @GetMapping("/findDataByLastWeek") public Result findDataByLastWeek() { Map<String, Object> result = mdcBigScreenService.findDataByLastWeek(); return Result.OK(result); } @ApiOperation("è·åå7æ°æ®æå") @GetMapping("/findDataRankingByLastWeek") public Result findDataRankingByLastWeek() { List<LastWeekDataRankingVo> rankingByLastWeek = mdcBigScreenService.findDataRankingByLastWeek(); return Result.OK(rankingByLastWeek); } @ApiOperation("è·åå½å设å¤ç¶æä¿¡æ¯") @GetMapping("/findEquipmentStatus") public Result findEquipmentStatus() { Map<String, Object> result = new HashMap<>(); List<MdcEquipmentOpVo> list = mdcBigScreenService.findEquipmentStatus(); result.put("equipmentStatusList", list); return Result.OK(result); } @ApiOperation("è·åå ¨åå½å设å¤ç¶æä¿¡æ¯") @GetMapping("/findAllEquipmentStatus") public Result findAllEquipmentStatus() { Map<String, Object> result = mdcBigScreenService.findAllEquipmentStatus(); return Result.OK(result); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/service/MdcBigScreenService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package org.jeecg.modules.mdc.subcontrol.service; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataRankingVo; import org.jeecg.modules.mdc.subcontrol.vo.MdcEquipmentOpVo; import org.jeecg.modules.mdc.vo.MdcEquipmentVo; import java.util.List; import java.util.Map; /** * @author: LiuS * @create: 2023-01-05 11:41 */ public interface MdcBigScreenService { /** * æ ¹æ®ååºidè·åä¸å¨æ°æ® */ Map<String, Object> findDataByLastWeek(); /** * æ ¹æ®ååºidè·åä¸å¨è¿è¡æçæå */ List<LastWeekDataRankingVo> findDataRankingByLastWeek(); /** * è·å设å¤å½åç¶æ */ List<MdcEquipmentOpVo> findEquipmentStatus(); /** * è·åå ¨åå½å设å¤ç¶æä¿¡æ¯ */ Map<String, Object> findAllEquipmentStatus(); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/service/impl/MdcBigScreenServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,288 @@ package org.jeecg.modules.mdc.subcontrol.service.impl; import org.apache.commons.lang.StringUtils; import org.jeecg.modules.mdc.entity.EquipmentLog; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.subcontrol.service.MdcBigScreenService; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataRankingVo; import org.jeecg.modules.mdc.subcontrol.vo.LastWeekDataVo; import org.jeecg.modules.mdc.subcontrol.vo.MdcEquipmentOpVo; import org.jeecg.modules.mdc.vo.MdcEquipmentVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.stream.Collectors; /** * @author: LiuS * @create: 2023-01-05 11:42 */ @Service public class MdcBigScreenServiceImpl implements MdcBigScreenService { @Resource private IMdcEquipmentService mdcEquipmentService; @Resource private IEquipmentStatisticalInfoService equipmentStatisticalInfoService; @Autowired private IMdcEquipmentStatisticalShiftInfoService mdcEquipmentStatisticalShiftInfoService; @Resource private IEquipmentLogService equipmentLogService; /** * æ ¹æ®ååºidè·åä¸å¨æ°æ® */ @Override public Map<String, Object> findDataByLastWeek() { Map<String, Object> result = new HashMap<>(); List<BigDecimal> openingRateList = new ArrayList<>(); List<BigDecimal> processingRateList = new ArrayList<>(); List<BigDecimal> shiftRateList = new ArrayList<>(); //è·åä¸å¨å¨ä¸æ¥æåå¨å æ¥æ LocalDate today = LocalDate.now(); LocalDate monday = today.minusDays(7); LocalDate saturday = today.minusDays(1); List<String> dates = getMiddleDate(monday, saturday); List<String> equipmentIdList = new ArrayList<>(); //æ ¹æ®ååºidè·åååºè®¾å¤ä¿¡æ¯ equipmentIdList = mdcEquipmentService.listEquipmentId(null); //ä¸å¨å©ç¨çå弿ºçæ°æ® List<LastWeekDataVo> lastWeekDataVos = equipmentStatisticalInfoService.findDataForBigScreen(equipmentIdList, monday.format(DateTimeFormatter.BASIC_ISO_DATE), saturday.format(DateTimeFormatter.BASIC_ISO_DATE)); if (lastWeekDataVos.isEmpty()) { for (int i = 0; i < dates.size(); i++) { openingRateList.add(new BigDecimal("0")); processingRateList.add(new BigDecimal("0")); } } else { for (int i = 0; i < dates.size(); i++) { Integer size = equipmentStatisticalInfoService.findEquipmentId(equipmentIdList, dates.get(i)); if (dates.get(i).equals(lastWeekDataVos.get(i).getTheDate())) { openingRateList.add(new BigDecimal(String.format("%.2f", (Float.parseFloat(lastWeekDataVos.get(i).getOpeningLong()) / (86400 * size) * 100)))); processingRateList.add(new BigDecimal(String.format("%.2f", (Float.parseFloat(lastWeekDataVos.get(i).getProcessingLong()) / (86400 * size) * 100)))); } else { openingRateList.add(new BigDecimal("0")); processingRateList.add(new BigDecimal("0")); } } } //ä¸å¨ç次å©ç¨çæ°æ® List<LastWeekDataVo> lastWeekDataList = mdcEquipmentStatisticalShiftInfoService.findDataForBigScreen(equipmentIdList, monday.toString(), saturday.toString()); List<String> middleDates = getMiddleDates(monday, saturday); if (lastWeekDataList.isEmpty()) { for (int i = 0; i < middleDates.size(); i++) { shiftRateList.add(new BigDecimal("0")); } } else { for (int i = 0; i < middleDates.size(); i++) { if (i < lastWeekDataList.size()) { if (middleDates.get(i).equals(lastWeekDataList.get(i).getTheDate()) && !"0".equals(lastWeekDataList.get(i).getTotalLong())) { shiftRateList.add(new BigDecimal(lastWeekDataList.get(i).getProcessingLong()). divide(new BigDecimal(lastWeekDataList.get(i).getTotalLong()), 6, BigDecimal.ROUND_HALF_UP) .setScale(6, BigDecimal.ROUND_HALF_UP)); } else { shiftRateList.add(new BigDecimal("0")); } } else { shiftRateList.add(new BigDecimal("0")); } } } result.put("openingRateList", openingRateList); result.put("processingRateList", processingRateList); result.put("shiftRateList", shiftRateList); return result; } /** * æ ¹æ®ååºidè·åä¸å¨è¿è¡æçæå */ @Override public List<LastWeekDataRankingVo> findDataRankingByLastWeek() { List<LastWeekDataRankingVo> voList = new ArrayList<>(); //è·åä¸å¨å¨ä¸æ¥æåå¨å æ¥æ LocalDate today = LocalDate.now(); String monday = today.minusDays(7).format(DateTimeFormatter.BASIC_ISO_DATE); String saturday = today.minusDays(1).format(DateTimeFormatter.BASIC_ISO_DATE); //æ ¹æ®idè·å设å¤idéå List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(null); if (!equipmentIdList.isEmpty()) { List<LastWeekDataVo> lastWeekDataVos = equipmentStatisticalInfoService.findDataRankingForBigScreen(equipmentIdList, monday, saturday); if (!lastWeekDataVos.isEmpty()) { for (LastWeekDataVo lastWeekDataVo : lastWeekDataVos) { Long size = equipmentStatisticalInfoService.selectSize(lastWeekDataVo.getEquipment(), monday, saturday); lastWeekDataVo.setUtilization(new BigDecimal(String.format("%.2f", (Float.parseFloat(lastWeekDataVo.getProcessingLong()) / (86400 * size) * 100)))); } List<LastWeekDataVo> collect = lastWeekDataVos.stream().sorted(Comparator.comparing(LastWeekDataVo::getUtilization).reversed()).collect(Collectors.toList()); if (collect.size() > 3) { List<LastWeekDataVo> topList = collect.subList(0, 6); for (LastWeekDataVo vo : topList) { LastWeekDataRankingVo rankingVo = new LastWeekDataRankingVo(); rankingVo.setTopName(vo.getEquipment()); rankingVo.setTopRate(vo.getUtilization().toString()); voList.add(rankingVo); } } } } return voList; } /** * è·å设å¤å½åç¶æ */ @Override public List<MdcEquipmentOpVo> findEquipmentStatus() { List<MdcEquipmentOpVo> result = new ArrayList<>(); //æ ¹æ®idè·å设å¤idéå List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(null); if (!equipmentIdList.isEmpty()) { List<EquipmentLog> logs = equipmentLogService.getEquipmentStatusList(equipmentIdList); //æ ¹æ®è®¾å¤idéåæ¥è¯¢è®¾å¤å®æ¶ç¶æ for (EquipmentLog equipmentId : logs) { if (equipmentId != null) { MdcEquipmentOpVo vo = new MdcEquipmentOpVo(); vo.setEquipmentId(equipmentId.getEquipmentId()); if (equipmentId.getOporation() != null) { switch (equipmentId.getOporation()) { case 1: vo.setOporation(1); vo.setOporationDict("å¾ æº"); break; case 2: vo.setOporationDict("å¾ æº"); vo.setOporation(2); break; case 3: vo.setOporationDict("è¿è¡"); vo.setOporation(3); break; case 22: vo.setOporationDict("æ¥è¦"); vo.setOporation(22); break; default: vo.setOporationDict("å ³æº"); vo.setOporation(0); break; } } else { vo.setOporation(0); vo.setOporationDict("å ³æº"); } result.add(vo); } else { MdcEquipmentOpVo vo = new MdcEquipmentOpVo(); vo.setOporation(0); vo.setOporationDict("å ³æº"); result.add(vo); } } } return result; } /** * è·åå ¨åå½å设å¤ç¶æä¿¡æ¯ */ @Override public Map<String, Object> findAllEquipmentStatus() { int runCount = 0; int standbyCount = 0; int alarmCount = 0; int offCount = 0; List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(null); List<EquipmentLog> equipmentLogs = new ArrayList<>(); for (String equipmentId : equipmentIdList) { EquipmentLog equipmentLog = equipmentLogService.selectEquipmentOporation(equipmentId); if (equipmentLog != null) { equipmentLogs.add(equipmentLog); } else { offCount += 1; } } if (!equipmentLogs.isEmpty()) { for (EquipmentLog equipmentLog : equipmentLogs) { if (equipmentLog.getOporation() != null) { switch (equipmentLog.getOporation()) { case 1: case 2: standbyCount += 1; break; case 3: runCount += 1; break; case 22: alarmCount += 1; break; default: offCount += 1; break; } } else { offCount += 1; } } } Map<String, Object> result = new HashMap<>(); result.put("runCount", runCount); result.put("standbyCount", standbyCount); result.put("alarmCount", alarmCount); result.put("offCount", offCount); return result; } /** * 20230101 * * @param begin å¼å§æ¥æ * @param end ç»ææ¥æ * @return å¼å§ä¸ç»æä¹é´çæææ¥æï¼å æ¬èµ·æ¢ */ public static List<String> getMiddleDate(LocalDate begin, LocalDate end) { List<String> localDateList = new ArrayList<>(); long length = end.toEpochDay() - begin.toEpochDay(); for (long i = length; i >= 0; i--) { localDateList.add(end.minusDays(i).format(DateTimeFormatter.BASIC_ISO_DATE)); } return localDateList; } /** * 2023-01-01 * * @param begin å¼å§æ¥æ * @param end ç»ææ¥æ * @return å¼å§ä¸ç»æä¹é´çæææ¥æï¼å æ¬èµ·æ¢ */ public static List<String> getMiddleDates(LocalDate begin, LocalDate end) { List<String> localDateList = new ArrayList<>(); long length = end.toEpochDay() - begin.toEpochDay(); for (long i = length; i >= 0; i--) { localDateList.add(end.minusDays(i).toString()); } return localDateList; } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/AllEquipmentLogVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package org.jeecg.modules.mdc.subcontrol.vo; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.util.Date; /** * @author: LiuS * @create: 2022-12-28 11:04 */ @Data public class AllEquipmentLogVo { //车é´åç§° @TableField(exist = false) private String parentName; //设å¤ç¼å· private String equipmentId; //设å¤åç§° private String equipmentName; //æ¶é´ private Date collectTime; // private Integer oporation; //æ¥è¦å· private String alarm; //æ¥è¦æè¿°ï¼æ éç±»åï¼ private String alarmDescription; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/LastWeekDataRankingVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package org.jeecg.modules.mdc.subcontrol.vo; import lombok.Data; /** * @author: LiuS * @create: 2023-01-09 10:58 */ @Data public class LastWeekDataRankingVo { private String topName; private String topRate; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/LastWeekDataVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package org.jeecg.modules.mdc.subcontrol.vo; import lombok.Data; import java.math.BigDecimal; /** * @author: LiuS * @create: 2023-01-05 17:35 */ @Data public class LastWeekDataVo { //设å¤id private String equipment; //æ¥æ private String theDate; //弿ºæ¶é¿ private String openingLong; //å ³æºæ¶é¿ private String closedLong; //工使¶é¿ private String processingLong; //æ¥è¦æ¶é¿ private String waitingLong; //æ éæ¶é´ private String faultLong; //æ»æ¶é¿ private String totalLong; //é²ç½®æ¶é¿ private String idleLong; //å©ç¨ç private BigDecimal utilization; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/MdcEquipmentAndTypeVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package org.jeecg.modules.mdc.subcontrol.vo; import lombok.Data; /** * @author clown * * @date 2022/7/19 */ @Data public class MdcEquipmentAndTypeVo { private String parentId; //å表ID private Integer mdcType; //é»è®¤1 private Integer dayOrMonth; // 1 天 2 æ } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/subcontrol/vo/MdcEquipmentOpVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package org.jeecg.modules.mdc.subcontrol.vo; import lombok.Data; import org.jeecg.modules.mdc.entity.MdcEquipment; /** * @author clown * * @date 2025/2/19 */ @Data public class MdcEquipmentOpVo extends MdcEquipment { private static final long serialVersionUID = -8341212703599621003L; private String status; private String oporationDict; }