Commit 0b2e127a authored by 喻训浩's avatar 喻训浩

fix:启动修改

parent ec59b1f3
......@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/api/demo")
@Api(description = "星期配置")
@Api(description = "demo")
public class DemoController {
@Autowired
......
package net.vtstar.zhongtong.avi.equipment.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.utils.domain.Return;
import net.vtstar.zhongtong.avi.equipment.service.EquipmentService;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@Api(description = "设备模块")
@RequestMapping("/api/equipment")
@RestController
public class EquipmentController {
@Autowired
private EquipmentService equipmentService;
@ApiOperation(value = "获取设备实时监控数据")
@GetMapping(value = "/data")
private Return getRealTimeData(@RequestParam("ShopCode") String ShopCode,@RequestParam("equipType") String equipType){
Object realTimeData = equipmentService.findRealTimeData();
return Return.success(realTimeData);
}
}
package net.vtstar.zhongtong.avi.equipment.service;
import net.vtstar.zhongtong.avi.stamping.domain.LaserCuttingMachine;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class EquipmentService {
public <T> T findRealTimeData() {
List<LaserCuttingMachine> ma = new ArrayList<>();
return (T) ma;
}
}
package net.vtstar.zhongtong.avi.global.config;
import org.springframework.cache.Cache;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
@Primary
ConcurrentMapCacheManager cacheManager() {
ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager();
return cacheManager;
}
@Bean
Cache showFieldCache(ConcurrentMapCacheManager cacheManager) {
return cacheManager.getCache("showFieldCache");
}
}
package net.vtstar.zhongtong.avi.global.listener;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.search.Search;
import net.vtstar.user.util.ReadAnnotationUtils;
import net.vtstar.zhongtong.avi.global.web.Show;
import net.vtstar.zhongtong.avi.global.web.domain.ShowFiled;
import org.springframework.cache.Cache;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Slf4j
@Component
public class WebFiledListener implements ApplicationListener<ContextRefreshedEvent> {
@Resource(name = "showFieldCache")
private Cache showFieldCache;
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
Set<Class> classes = ReadAnnotationUtils.getClazzFromAnnotation("net.vtstar.zhongtong", Search.class);
if (CollectionUtils.isEmpty(classes)) {
return;
}
for (Class<?> clazz : classes) {
Search clazzAnnotation = clazz.getAnnotation(Search.class);
if (StringUtils.isEmpty(clazzAnnotation.code())) {
log.error("{} 类@Search注解code属性未赋值!", clazz);
}
List<ShowFiled> showFileds = new ArrayList<>();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
ShowFiled showFiled = new ShowFiled();
Show annotation = field.getAnnotation(Show.class);
if (null == annotation) {
continue;
}
String value = annotation.value();
if (StringUtils.isEmpty(value)) {
value = field.getName();
}
showFiled.setValue(value);
String label = annotation.label();
if (StringUtils.isEmpty(label)) {
log.error("{} 类{} 字段 @show 注解 label 属性未赋值", clazz, field.getName());
}
showFiled.setLabel(label);
showFileds.add(showFiled);
}
showFieldCache.put(clazzAnnotation.code(),showFileds);
}
}
}
package net.vtstar.zhongtong.avi.global.web;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.LOCAL_VARIABLE})
public @interface Show {
/**
* 展示字段值
*/
String value() default "";
/**
* 展示字段名/标签
*/
String label() default "";
/**
* 是否排序
*/
boolean sortable() default false;
}
package net.vtstar.zhongtong.avi.global.web.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("前端展示字段")
public class ShowFiled {
@ApiModelProperty("字段值")
private String value;
@ApiModelProperty("标签名")
private String label;
}
package net.vtstar.zhongtong.avi.stamping.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import java.math.BigDecimal;
@Data
@Search(code = "LASER")
@ApiModel("激光切割机")
public class LaserCuttingMachine extends EquipmentData {
@Search
@Show(label = "切割速率",sortable = true)
@ApiModelProperty("切割速率")
private BigDecimal cuttingSpeed;
@Search
@Show(label = "激光器功率")
@ApiModelProperty("激光器功率")
private BigDecimal laserPower;
@Search
@Show(label = "气体压力")
@ApiModelProperty("气体压力")
private BigDecimal gasPressure;
private Integer state;
}
package net.vtstar.zhongtong.avi.stamping.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.scada.base.gather.job.GatherJob;
import net.vtstar.zhongtong.avi.stamping.domain.LaserCuttingMachine;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;
/**
* 激光切割机数据采集JOB
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class LaserCuttingMachineJob extends GatherJob {
private static final String NAME = "LASER";
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, LaserCuttingMachine.class);
}
protected boolean handleObject(EquipmentData equipmentData) {
LaserCuttingMachine data = (LaserCuttingMachine) equipmentData;
Integer state = data.getState();
return false;
}
}
......@@ -2,7 +2,7 @@
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.quartz.jdbc.comment-prefix=--
spring.quartz.startupDelay=10s
spring.quartz.startupDelay=2s
spring.quartz.auto-startup=true
spring.quartz.properties.org.quartz.scheduler.instanceName=myScheduler-scada
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
......@@ -17,3 +17,11 @@ spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThre
spring.quartz.properties.org.quartz.threadPool.threadCount=25
spring.quartz.properties.org.quartz.threadPool.threadPriority=5
spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
quartz.job.allow-start=true
quartz.job.taskInfos[0].jobName=net.vtstar.zhongtong.avi.stamping.job.LaserCuttingMachineJob
quartz.job.taskInfos[0].jobGroup=LaserCuttingMachineJob
quartz.job.taskInfos[0].jobDescription=\u5C01\u88C5\u7EBF\u9884\u710A\u673A\u6570\u636E\u91C7\u96C6job
quartz.job.taskInfos[0].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[0].start=true
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment