Browse Source

commit code

master
刘力 3 years ago
parent
commit
a19017cdca
  1. 7
      APIService/src/main/java/com/storeroom/controller/TestApiServiceController.java
  2. 5
      APIService/src/main/java/com/storeroom/service/impl/ApiServiceImpl.java
  3. 111
      common/src/main/java/com/storeroom/utils/MacUtil.java
  4. 11
      common/src/test/java/IPTest.java
  5. 47
      storeroom/src/main/java/com/storeroom/modules/device/controller/BindDeviceController.java
  6. 9
      storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceArchivesTag.java
  7. 2
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java
  8. 2
      storeroom/src/main/java/com/storeroom/modules/device/service/DeviceArchivesTagService.java
  9. 6
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java
  10. 1
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java
  11. 111
      system/src/main/java/com/storeroom/modules/quartz/controller/QuartzJobController.java
  12. 3
      system/src/main/java/com/storeroom/modules/quartz/service/QuartzJobService.java
  13. 4
      system/src/main/java/com/storeroom/modules/quartz/service/impl/QuartzJobServiceImpl.java
  14. 24
      system/src/main/java/com/storeroom/modules/quartz/utils/FirstJob.java

7
APIService/src/main/java/com/storeroom/controller/TestApiServiceController.java

@ -4,6 +4,7 @@ package com.storeroom.controller;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.service.ApiService;
import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.MacUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@ -29,4 +30,10 @@ public class TestApiServiceController {
public ApiResponse<Object> getAllDevice() {
return ApiResponse.success(apiService.getDeviceAll());
}
@AnonymousGetMapping("ip")
@ApiOperation("获取内网ip")
public ApiResponse<Object> getIp() {
return ApiResponse.success(MacUtil.getIpAddress());
}
}

5
APIService/src/main/java/com/storeroom/service/impl/ApiServiceImpl.java

@ -14,10 +14,10 @@ import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Service("ApiServiceImpl")
public class ApiServiceImpl implements ApiService {
String access_token = "";
@ -39,6 +39,7 @@ public class ApiServiceImpl implements ApiService {
access_token = Data.get("access_token").toString();
}
});
System.out.println(access_token);
return access_token;
} else {
//throw new BaseException("访问失败" + response.getStatusLine().getStatusCode() + "");

111
common/src/main/java/com/storeroom/utils/MacUtil.java

@ -1,13 +1,18 @@
package com.storeroom.utils;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.*;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class MacUtil {
/**
* 根据不同操作系统执行不同命令
* 获取本机 mac 地址集合
@ -26,4 +31,104 @@ public final class MacUtil {
return sb.toString();
}
// 从windows机器上获取mac地址
public static String getMacInWindows(final String ip) {
String macAddr = "";
try {
Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
InputStreamReader ir = new InputStreamReader(p.getInputStream(),"GBK");
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
String str = input.readLine();
// System.out.println(str);
//获取第14行的客户端mac地址
if (i==14) {
macAddr = str.split("=")[1].trim();
}
}
} catch (IOException e) {
e.printStackTrace(System.out);
}
return macAddr;
}
// 获取mac地址
public static String filterMacAddress(final String ip, final String sourceString, final String macSeparator) {
String result = "";
String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator + "){1,5})[0-9,A-F,a-f]{1,2})";
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(sourceString);
while (matcher.find()) {
result = matcher.group(1);
// 因计算机多网卡问题截取紧靠IP后的第一个mac地址
int num = sourceString.indexOf(ip) - sourceString.indexOf(": " + result + " ");
if (num > 0 && num < 300) {
break;
}
}
return result;
}
// 命令执行
public static String callCmd(String[] cmd, String[] another) {
String result = "";
String line = "";
try {
Runtime rt = Runtime.getRuntime();
// 执行第一个命令
Process proc = rt.exec(cmd);
proc.waitFor();
// 执行第二个命令
proc = rt.exec(another);
InputStreamReader is = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader(is);
while ((line = br.readLine()) != null) {
result += line;
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static String getIpAddress() {
// 本地IP如果没有配置外网IP则返回它
String localip = null;
// 外网IP
String netip = null;
try {
Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
// 是否找到外网IP
boolean finded = false;
while (netInterfaces.hasMoreElements() && !finded) {
NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
Enumeration address = ni.getInetAddresses();
while (address.hasMoreElements()) {
ip = (InetAddress) address.nextElement();
if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {
// 外网IP
netip = ip.getHostAddress();
finded = true;
break;
} else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {
// 内网IP
localip = ip.getHostAddress();
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
if (netip != null && !"".equals(netip)) {
return netip;
} else {
return localip;
}
}
}

11
common/src/test/java/IPTest.java

@ -0,0 +1,11 @@
import com.storeroom.utils.MacUtil;
import org.junit.jupiter.api.Test;
public class IPTest {
@Test
public void iptest() {
String ip = MacUtil.getIpAddress();
System.out.println(ip);
}
}

47
storeroom/src/main/java/com/storeroom/modules/device/controller/BindDeviceController.java

@ -1,6 +1,7 @@
package com.storeroom.modules.device.controller;
import com.google.common.base.Strings;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.annotaion.rest.AnonymousPostMapping;
import com.storeroom.exception.BaseException;
@ -18,6 +19,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequiredArgsConstructor
@Api(tags = "设备Mac地址")
@ -28,15 +31,50 @@ public class BindDeviceController {
@ApiOperation("获取mac地址")
@AnonymousGetMapping("get")
public ApiResponse<Object> getMacAddress() throws Exception{
return ApiResponse.success(MacUtil.getMac());
public ApiResponse<Object> getMacAddress(HttpServletRequest request) {
String Xip = request.getHeader("X-Real-IP");
String XFor = request.getHeader("X-Forwarded-For");
if (!Strings.isNullOrEmpty(XFor) && !"unKnown".equalsIgnoreCase(XFor)) {
//多次反向代理后会有多个ip值第一个ip才是真实ip
int index = XFor.indexOf(",");
if (index != -1) {
return ApiResponse.success(XFor.substring(0, index));
} else {
return ApiResponse.success(XFor);
}
}
XFor = Xip;
if (!Strings.isNullOrEmpty(XFor) && !"unKnown".equalsIgnoreCase(XFor)) {
//String mac = MacUtil.getMacInWindows(XFor);
return ApiResponse.success(XFor);
}
if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
XFor = request.getHeader("Proxy-Client-IP");
}
if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
XFor = request.getHeader("WL-Proxy-Client-IP");
}
if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
XFor = request.getHeader("HTTP_CLIENT_IP");
}
if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
XFor = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
XFor = request.getRemoteAddr();
}
//String mac = MacUtil.getMacInWindows(XFor);
return ApiResponse.success(XFor);
}
//return ApiResponse.success(MacUtil.getMac());
@ApiOperation("绑定Mac地址")
@AnonymousPostMapping("bind")
public ApiResponse<Object> bind(@RequestBody DeviceMacDto deviceMacDto){
if (StringUtils.isEmpty(deviceMacDto.getDeviceId()) || StringUtils.isEmpty(deviceMacDto.getMacAddress())){
public ApiResponse<Object> bind(@RequestBody DeviceMacDto deviceMacDto) {
if (StringUtils.isEmpty(deviceMacDto.getDeviceId()) || StringUtils.isEmpty(deviceMacDto.getMacAddress())) {
throw new BaseException("设备id或Mac地址不能为空");
}
deviceSpecParamService.bindMac(deviceMacDto);
@ -44,5 +82,4 @@ public class BindDeviceController {
}
}

9
storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceArchivesTag.java

@ -2,6 +2,7 @@ package com.storeroom.modules.device.domain;
import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Getter;
import lombok.Setter;
@ -71,17 +72,21 @@ public class DeviceArchivesTag extends BaseEntity implements Serializable {
@ApiModelProperty(value = "柜号")
private Integer cupboardNo;
@Column(name = "direction")
@ApiModelProperty(value = "方向")
private String direction;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DeviceArchivesTag that = (DeviceArchivesTag) o;
return Objects.equals(id, that.id) && Objects.equals(tid, that.tid) && Objects.equals(deviceInfoId, that.deviceInfoId) && Objects.equals(position, that.position);
return Objects.equals(id, that.id) && Objects.equals(tid, that.tid) && Objects.equals(deviceInfoId, that.deviceInfoId) && Objects.equals(position, that.position) && Objects.equals(position_name, that.position_name);
}
@Override
public int hashCode() {
return Objects.hash(id, tid, deviceInfoId, position);
return Objects.hash(id, tid, deviceInfoId, position, position_name);
}
}

2
storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java

@ -41,7 +41,7 @@ public interface DeviceArchivesTagRepository extends JpaRepository<DeviceArchive
* @param deviceInfoId /
* @return /
*/
List<DeviceArchivesTag> findByDeviceInfoId(String deviceInfoId,Pageable pageable);
Page<DeviceArchivesTag> findByDeviceInfoId(String deviceInfoId,Pageable pageable);
/**

2
storeroom/src/main/java/com/storeroom/modules/device/service/DeviceArchivesTagService.java

@ -18,7 +18,7 @@ public interface DeviceArchivesTagService {
* @param deviceInfoId 设备类型
* @return /
*/
List<DeviceArchivesTag> queryTagList(String deviceInfoId,Pageable pageable);
Object queryTagList(String deviceInfoId,Pageable pageable);
}

6
storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceArchivesTagImpl.java

@ -8,6 +8,7 @@ import com.storeroom.modules.device.service.DeviceArchivesTagService;
import com.storeroom.utils.PageUtil;
import com.storeroom.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@ -44,7 +45,8 @@ public class DeviceArchivesTagImpl implements DeviceArchivesTagService {
}
@Override
public List<DeviceArchivesTag> queryTagList(String deviceInfoId, Pageable pageable) {
return deviceArchivesTagRepository.findByDeviceInfoId(deviceInfoId, pageable);
public Object queryTagList(String deviceInfoId, Pageable pageable) {
Page<DeviceArchivesTag> page=deviceArchivesTagRepository.findByDeviceInfoId(deviceInfoId, pageable);
return PageUtil.toPage(page);
}
}

1
storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java

@ -140,6 +140,7 @@ public class DeviceImpl implements DeviceService {
deviceArchivesTag.setPosition(position);
deviceArchivesTag.setDeviceInfoId(deviceInfoDto.getId());
deviceArchivesTag.setPosition_name(positionName);
deviceArchivesTag.setDirection(leftOrRight);
deviceArchivesTagRepository.save(deviceArchivesTag);
}
}

111
system/src/main/java/com/storeroom/modules/quartz/controller/QuartzJobController.java

@ -0,0 +1,111 @@
package com.storeroom.modules.quartz.controller;
import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.quartz.domain.QuartzJob;
import com.storeroom.modules.quartz.service.QuartzJobService;
import com.storeroom.modules.quartz.service.dto.JobQueryCriteria;
import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.enums.ResponseStatus;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Set;
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/jobs")
@Api(tags = "系统:定时任务管理")
public class QuartzJobController {
private static final String ENTITY_NAME = "quartzJob";
private final QuartzJobService quartzJobService;
@ApiOperation("查询定时任务")
@AnonymousGetMapping
// @PreAuthorize("@el.check('timing:list')")
public ApiResponse<Object> queryQuartzJob(JobQueryCriteria criteria, Pageable pageable) {
return ApiResponse.success(quartzJobService.queryAll(criteria, pageable));
}
@ApiOperation("导出任务数据")
@GetMapping(value = "/download")
//@PreAuthorize("@el.check('timing:list')")
public void exportQuartzJob(HttpServletResponse response, JobQueryCriteria criteria) throws IOException {
quartzJobService.download(quartzJobService.queryAll(criteria), response);
}
@ApiOperation("导出日志数据")
@GetMapping(value = "/logs/download")
//@PreAuthorize("@el.check('timing:list')")
public void exportQuartzJobLog(HttpServletResponse response, JobQueryCriteria criteria) throws IOException {
quartzJobService.downloadLog(quartzJobService.queryAllLog(criteria), response);
}
@ApiOperation("查询任务执行日志")
@GetMapping(value = "/logs")
//@PreAuthorize("@el.check('timing:list')")
public ApiResponse<Object> queryQuartzJobLog(JobQueryCriteria criteria, Pageable pageable) {
return ApiResponse.success(quartzJobService.queryAllLog(criteria, pageable));
}
// @Log("新增定时任务")
@ApiOperation("新增定时任务")
@PostMapping
// @PreAuthorize("@el.check('timing:add')")
public ApiResponse<Object> createQuartzJob(@Validated @RequestBody QuartzJob resources) {
if (resources.getId() != null) {
throw new BaseException("A new " + ENTITY_NAME + " cannot already have an ID");
}
quartzJobService.create(resources);
return ApiResponse.success(ResponseStatus.SUCCESS);
}
// @Log("修改定时任务")
@ApiOperation("修改定时任务")
@PutMapping
// @PreAuthorize("@el.check('timing:edit')")
public ApiResponse<Object> updateQuartzJob(@Validated(QuartzJob.Update.class) @RequestBody QuartzJob resources) {
quartzJobService.update(resources);
return ApiResponse.success(ResponseStatus.SUCCESS);
}
// @Log("更改定时任务状态")
@ApiOperation("更改定时任务状态")
@PutMapping(value = "/{id}")
// @PreAuthorize("@el.check('timing:edit')")
public ApiResponse<Object> updateQuartzJobStatus(@PathVariable Long id) {
quartzJobService.updateIsPause(quartzJobService.findById(id));
return ApiResponse.success(ResponseStatus.SUCCESS);
}
// @Log("执行定时任务")
@ApiOperation("执行定时任务")
@PutMapping(value = "/exec/{id}")
// @PreAuthorize("@el.check('timing:edit')")
public ApiResponse<Object> executionQuartzJob(@PathVariable Long id) {
quartzJobService.execution(quartzJobService.findById(id));
return ApiResponse.success(ResponseStatus.SUCCESS);
}
//@Log("删除定时任务")
@ApiOperation("删除定时任务")
@DeleteMapping
// @PreAuthorize("@el.check('timing:del')")
public ApiResponse<Object> deleteQuartzJob(@RequestBody Set<Long> ids) {
quartzJobService.delete(ids);
return ApiResponse.success(ResponseStatus.SUCCESS);
}
}

3
system/src/main/java/com/storeroom/modules/quartz/service/QuartzJobService.java

@ -2,7 +2,8 @@ package com.storeroom.modules.quartz.service;
import com.storeroom.modules.quartz.domain.QuartzJob;
import com.storeroom.modules.quartz.domain.QuartzLog;
import com.storeroom.modules.system.service.dto.JobQueryCriteria;
import com.storeroom.modules.quartz.service.dto.JobQueryCriteria;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;

4
system/src/main/java/com/storeroom/modules/quartz/service/impl/QuartzJobServiceImpl.java

@ -1,6 +1,6 @@
package com.storeroom.modules.quartz.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.quartz.domain.QuartzJob;
@ -8,8 +8,8 @@ import com.storeroom.modules.quartz.domain.QuartzLog;
import com.storeroom.modules.quartz.repository.QuartzJobRepository;
import com.storeroom.modules.quartz.repository.QuartzLogRepository;
import com.storeroom.modules.quartz.service.QuartzJobService;
import com.storeroom.modules.quartz.service.dto.JobQueryCriteria;
import com.storeroom.modules.quartz.utils.QuartzManage;
import com.storeroom.modules.system.service.dto.JobQueryCriteria;
import com.storeroom.utils.*;
import lombok.RequiredArgsConstructor;
import org.quartz.CronExpression;

24
system/src/main/java/com/storeroom/modules/quartz/utils/FirstJob.java

@ -0,0 +1,24 @@
package com.storeroom.modules.quartz.utils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
public class FirstJob implements Job {
private static Logger _log = LoggerFactory.getLogger(FirstJob.class);
public FirstJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
_log.error("Hello Job执行时间: " + new Date());
}
}
Loading…
Cancel
Save