jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/common/CacheConstants.java
@@ -12,7 +12,9 @@ WORK_ORDER("workOrder","å·¥åMAP"), EQP_MAP("eqpMap", "设å¤MAP,key:tenantId+equipmentId"); EQP_MAP("eqpMap", "设å¤MAP,key:tenantId+equipmentId"), NEAR_TEN("nearTen", "æè¿å次æçåæ¶èå¹³å,key:tenantId+orderCode+equipmentId"); private String code; private String text; jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java
@@ -175,6 +175,10 @@ */ private Double reduce; /**å¹³åæç**/ private Double efficAvg; /**平忱½è**/ private Double steamAvg; jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryRecentOrderAvg.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package org.jeecg.modules.dry.vo; import lombok.Data; @Data public class DryRecentOrderAvg { private Double efficAvg; private Double steamAvg; private Double wattAvg; } jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/DryOrderMapper.java
@@ -3,6 +3,7 @@ import org.apache.ibatis.annotations.Param; import org.jeecg.modules.dry.entity.DryOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.dry.vo.DryRecentOrderAvg; import java.util.List; @@ -15,4 +16,6 @@ public interface DryOrderMapper extends BaseMapper<DryOrder> { List<String> queryMonthOverview(@Param("month") String month, @Param("tenantId") int tenantId); DryRecentOrderAvg queryRecentOrderAvg(@Param("tenantId") Integer tenantId, @Param("herbName") String herbName); } jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/xml/DryOrderMapper.xml
@@ -8,4 +8,13 @@ and tenant_id = #{tenantId} group by orderTime order by orderTime desc </select> <select id="queryRecentOrderAvg" resultType="org.jeecg.modules.dry.vo.DryRecentOrderAvg"> select avg(a.xiaolv) efficAvg,avg(a.zq) steamAvg,avg(a.dn) wattAvg from ( select (origin_weight-yield)/dry_time*60 xiaolv, steam/(origin_weight-yield) zq, watt/(origin_weight-yield) dn from dry_order where tenant_id = #{tenantId} and herb_name = #{herbName} and dry_time > 0 order by order_time desc limit 10 ) a </select> </mapper> jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryOrderService.java
@@ -19,4 +19,6 @@ void saveRealTimeData(DryOrderVo orderVo); List<String> queryMonthOverview(String month, int tenantId); void queryRecentOrderAvg(DryOrderVo orderVo); } jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryOrderServiceImpl.java
@@ -1,15 +1,20 @@ package org.jeecg.modules.dry.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.dry.common.CacheConstants; import org.jeecg.modules.dry.entity.DryOrder; import org.jeecg.modules.dry.mapper.DryOrderMapper; import org.jeecg.modules.dry.service.IDryOrderService; import org.jeecg.modules.dry.vo.DryOrderVo; import org.jeecg.modules.dry.vo.DryRecentOrderAvg; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.List; /** * @Description: å¹²ç¥å·¥å @@ -21,6 +26,8 @@ @Service public class DryOrderServiceImpl extends ServiceImpl<DryOrderMapper, DryOrder> implements IDryOrderService { @Autowired private RedisUtil redisUtil; @Override public void saveRealTimeData(DryOrderVo orderVo) { log.info("ä¿å宿¶æ°æ®ï¼" + orderVo.toString()); @@ -31,4 +38,24 @@ public List<String> queryMonthOverview(String month, int tenantId) { return baseMapper.queryMonthOverview(month, tenantId); } @Override public void queryRecentOrderAvg(DryOrderVo orderVo) { DryRecentOrderAvg recentOrderAvg = (DryRecentOrderAvg) redisUtil.hget(CacheConstants.RedisKeyEnum.NEAR_TEN.getCode(), orderVo.getTenantId() + "_" + orderVo.getCode() + "_" + orderVo.getEquId()); if (recentOrderAvg != null) { orderVo.setEfficAvg(recentOrderAvg.getEfficAvg()); orderVo.setSteamAvg(recentOrderAvg.getSteamAvg()); orderVo.setWattAvg(recentOrderAvg.getWattAvg()); } else { DryRecentOrderAvg orderAvg = baseMapper.queryRecentOrderAvg(orderVo.getTenantId(), orderVo.getHerbName()); if(orderAvg != null) { redisUtil.hset(CacheConstants.RedisKeyEnum.NEAR_TEN.getCode(), orderVo.getTenantId() + "_" + orderVo.getCode() + "_" + orderVo.getEquId(),orderAvg,60*10); orderVo.setEfficAvg(orderAvg.getEfficAvg()); orderVo.setSteamAvg(orderAvg.getSteamAvg()); orderVo.setWattAvg(orderAvg.getWattAvg()); } } } } jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
@@ -57,8 +57,6 @@ @Autowired private IDryProdRecordService prodRecordService; @Autowired private CommonAPI commonAPI; private String token; @@ -317,47 +315,55 @@ public Result<?> queryMachineRealTImeData(RealTimeDataVo realTimeDataVo) { TenantContext.setTenant(realTimeDataVo.getTenantid()+""); // æ¥è¯¢æææºå°æ¥è¯¢ç»è£ LambdaQueryWrapper<DryEquipment> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(DryEquipment::getTenantId, realTimeDataVo.getTenantid()); queryWrapper.eq(DryEquipment::getTenantId, realTimeDataVo.getTenantid()); queryWrapper.eq(DryEquipment::getEnable, "Y"); queryWrapper.orderByAsc(DryEquipment::getCode); // æ¥è¯¢æææºå° List<DryEquipment> dryEquipments = equipmentService.list(queryWrapper); // æºå°å表ï¼ç¨äºæçå¯¹æ¯ List<String> list = new ArrayList<>(); // æçå表ï¼ç¨äºæçå¯¹æ¯ List<Double> dList = new ArrayList<>(); // æ¥è¯¢å½åæºå°å·¥å DryOrderVo orderVo = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), realTimeDataVo.getTenantid() + "_" + realTimeDataVo.getMachineid()); try { try { // 妿æå¯ç¨æºå° if (dryEquipments != null && dryEquipments.size() > 0) { // æ¥è¯¢å ¶å®æºå°å·¥å dryEquipments.stream().forEach(item -> { // è·åå·¥å DryOrderVo order = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), realTimeDataVo.getTenantid() + "_" + item.getCode()); list.add(item.getName().substring(0, item.getName().indexOf('#')+1)); if (order != null) { // 计ç®å¹²ç¥æçï¼ç¨äºå¯¹æ¯ DryOrderTrendVo dryOrderTrendVo = order.getDetailList().get(order.getDetailList().size() - 1); double v = order.getOriginWeight() - dryOrderTrendVo.getWeight(); if (dryEquipments != null && dryEquipments.size() > 0) { dryEquipments.stream().forEach(item -> { DryOrderVo order = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), realTimeDataVo.getTenantid() + "_" + item.getCode()); list.add(item.getName().substring(0, item.getName().indexOf('#')+1)); if (order != null) { DryOrderTrendVo dryOrderTrendVo = order.getDetailList().get(order.getDetailList().size() - 1); double v = order.getOriginWeight() - dryOrderTrendVo.getWeight(); if (v > 0 && dryOrderTrendVo.getTotalTime()>0) { DecimalFormat df = new DecimalFormat("#.00"); dList.add(Double.valueOf(df.format(v / dryOrderTrendVo.getTotalTime() * 60))); } else { dList.add(50d); } if (v > 0 && dryOrderTrendVo.getTotalTime()>0) { DecimalFormat df = new DecimalFormat("#.00"); dList.add(Double.valueOf(df.format(v / dryOrderTrendVo.getTotalTime() * 60))); } else { dList.add(50d); } dList.add(0d); }); } if (orderVo != null) { orderVo.setCompEqpNum(list); orderVo.setCompEqpEffic(dList); } }catch (Exception e) { e.printStackTrace(); } // å¦ææ²¡æçäº§ï¼æçç½®0 dList.add(0d); }); } if (orderVo != null) { // å°æçå¯¹æ¯æ°æ®æ¾å ¥å½åæºå°å®æ¶æ°æ®ä¸è¿å orderVo.setCompEqpNum(list); orderVo.setCompEqpEffic(dList); // æ¥è¯¢è¿å次æçåè½è½èå¹³å dryOrderService.queryRecentOrderAvg(orderVo); } }catch (Exception e) { e.printStackTrace(); } return Result.ok(orderVo); }