Compare commits

...

2 Commits

Author SHA1 Message Date
暴炳林 c9e6d8627a Merge branch 'main' of http://47.100.54.81:3000/huojin/hefeihvac_java
# Conflicts:
#	youchain-system/src/main/java/com/youchain/AppRun.java
#	youchain-system/src/main/java/com/youchain/modules/license/LicenseValidate.java
2024-05-28 10:09:51 +08:00
暴炳林 e0585fad31 no message 2024-05-28 09:58:24 +08:00
24 changed files with 280 additions and 113 deletions

View File

@ -1,6 +1,7 @@
package com.youchain.exception.handler; package com.youchain.exception.handler;
import lombok.Data; import lombok.Data;
import org.springframework.http.HttpStatus;
@Data @Data
public class ApiResult { public class ApiResult {
@ -40,4 +41,8 @@ public class ApiResult {
rs.setData(data); rs.setData(data);
return rs; return rs;
} }
public HttpStatus getStatus() {
return HttpStatus.valueOf(this.code);
}
} }

View File

@ -22,6 +22,8 @@ import java.security.cert.X509Certificate;
@Slf4j @Slf4j
public class HttpPostUtil { public class HttpPostUtil {
public static String sendPostReq(String api_url, String request) { public static String sendPostReq(String api_url, String request) {
System.out.println("api:"+api_url);
System.out.println("request:"+request);
InputStream instr = null; InputStream instr = null;
String str = ""; String str = "";
try { try {
@ -46,6 +48,7 @@ public class HttpPostUtil {
System.out.println("返回空"); System.out.println("返回空");
} }
str = ResponseString; str = ResponseString;
System.out.println("返回:"+str);
} catch (Exception e) { } catch (Exception e) {
log.info("接口异常"); log.info("接口异常");
// throw new Error(e.getMessage()); // throw new Error(e.getMessage());
@ -54,6 +57,9 @@ public class HttpPostUtil {
} }
public static String sendPostReq(String api_url, String request, String token) { public static String sendPostReq(String api_url, String request, String token) {
System.out.println("api:"+api_url);
System.out.println("request:"+request);
System.out.println("token:"+token);
InputStream instr = null; InputStream instr = null;
String str = ""; String str = "";
try { try {

View File

@ -119,9 +119,13 @@
<artifactId>s7connector</artifactId> <artifactId>s7connector</artifactId>
<version>2.1</version> <version>2.1</version>
</dependency> </dependency>
</dependencies> </dependencies>
<repositories>
<repository>
<id>aliyunmaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<!-- 打包 --> <!-- 打包 -->
<build> <build>

View File

@ -60,6 +60,11 @@ public class AppRun {
springApplication.run(args); springApplication.run(args);
log.error(JSONUtil.toJsonStr(LicenseValidate.getDeviceInfo())); log.error(JSONUtil.toJsonStr(LicenseValidate.getDeviceInfo()));
try{
log.error(JSONUtil.toJsonStr(LicenseValidate.getLicense("2026-05-26")));
}catch (Exception e){
}
} }

View File

@ -34,6 +34,7 @@ import com.youchain.exception.handler.ApiResult;
import com.youchain.modules.system.domain.Dept; import com.youchain.modules.system.domain.Dept;
import com.youchain.utils.BaseStatus; import com.youchain.utils.BaseStatus;
import com.youchain.utils.FileUtil; import com.youchain.utils.FileUtil;
import com.youchain.utils.ImportEntityUtils;
import com.youchain.utils.UserUtils; import com.youchain.utils.UserUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -61,7 +62,7 @@ import static org.springframework.http.HttpStatus.BAD_REQUEST;
**/ **/
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@Api(tags = "ponit管理") @Api(tags = "点位管理")
@Slf4j @Slf4j
@RequestMapping("/api/point") @RequestMapping("/api/point")
public class PointController { public class PointController {
@ -102,10 +103,11 @@ public class PointController {
try { try {
List<Map<String, Object>> readAll = reader.readAll(); List<Map<String, Object>> readAll = reader.readAll();
for (i = 0; i < readAll.size(); i++) { for (i = 0; i < readAll.size(); i++) {
String code = readAll.get(i).get("编码").toString().trim(); String code = readAll.get(i).get("外部编码").toString().trim();
String types = readAll.get(i).get("类型").toString().trim(); String name = readAll.get(i).get("名称").toString().trim();
String types = readAll.get(i).get("存储类型").toString().trim();
String areaCode = readAll.get(i).get("库区").toString().trim(); String areaCode = readAll.get(i).get("库区").toString().trim();
String ccTYPE = readAll.get(i).get("存储类型") == null ? "" : readAll.get(i).get("存储类型").toString().trim(); String enabled = readAll.get(i).get("是否启用").toString().trim();
Double x = readAll.get(i).get("坐标X") == null ? 0 : Double.parseDouble(readAll.get(i).get("坐标X").toString()); Double x = readAll.get(i).get("坐标X") == null ? 0 : Double.parseDouble(readAll.get(i).get("坐标X").toString());
Double y = readAll.get(i).get("坐标Y") == null ? 0 : Double.parseDouble(readAll.get(i).get("坐标Y").toString()); Double y = readAll.get(i).get("坐标Y") == null ? 0 : Double.parseDouble(readAll.get(i).get("坐标Y").toString());
Area area = areaService.findByCode(areaCode); Area area = areaService.findByCode(areaCode);
@ -117,9 +119,9 @@ public class PointController {
if (point == null) { if (point == null) {
point = new Point(); point = new Point();
point.setCode(code); point.setCode(code);
point.setName(code); point.setName(name);
String lx = ""; String lx = "";
if (types.equals("存点")) { if (types.equals("点")) {
lx = BaseStatus.STORAGE; lx = BaseStatus.STORAGE;
} else if (types.equals("线边点位")) { } else if (types.equals("线边点位")) {
@ -128,7 +130,6 @@ public class PointController {
point.setType(lx); point.setType(lx);
point.setArea(area); point.setArea(area);
point.setDept(dept); point.setDept(dept);
point.setDescription(ccTYPE);
point.setPosX(x); point.setPosX(x);
point.setPosY(y); point.setPosY(y);
point.setEnabled(true); point.setEnabled(true);
@ -148,8 +149,10 @@ public class PointController {
point.setType(lx); point.setType(lx);
point.setArea(area); point.setArea(area);
point.setDept(dept); point.setDept(dept);
point.setDescription(ccTYPE);
point.setPosX(x); point.setPosX(x);
if (ImportEntityUtils.stringFlag(enabled)){
point.setEnabled(Boolean.valueOf(enabled));
}
point.setPosY(y); point.setPosY(y);
pointService.update(point); pointService.update(point);
edit_len++; edit_len++;

View File

@ -143,27 +143,13 @@ public class PointServiceImpl implements PointService {
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
for (PointDto point : all) { for (PointDto point : all) {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
map.put("RCS代码", point.getCode()); map.put("外部编码", point.getCode());
map.put("名称", point.getName()); map.put("名称", point.getName());
map.put("状态", point.getStatus()); map.put("状态", point.getStatus());
map.put("描述", point.getDescription()); map.put("描述", point.getDescription());
map.put("区域编码", point.getBeatCode()); map.put("库区", point.getArea().getName());
map.put("物料编码", point.getItemCode());
map.put("库区名称", point.getArea().getName());
map.put("是否启用", point.getEnabled()); map.put("是否启用", point.getEnabled());
map.put("仓库名称", point.getDept().getName()); map.put("仓库名称", point.getDept().getName());
map.put("坐标X", point.getPosX());
map.put("坐标Y", point.getPosY());
map.put("坐标Z", point.getPosZ());
map.put("层", point.getRows());
map.put("列", point.getCol());
map.put("排", point.getLine());
map.put("类型", point.getType());
map.put("热度", point.getHeat());
map.put("创建人", point.getCreateBy());
map.put("修改人", point.getUpdateBy());
map.put("创建时间", point.getCreateTime());
map.put("修改时间", point.getUpdateTime());
list.add(map); list.add(map);
} }
FileUtil.downloadExcel(list, response); FileUtil.downloadExcel(list, response);

View File

@ -22,6 +22,7 @@ import com.alibaba.fastjson.JSONObject;
import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.AnonymousAccess;
import com.youchain.annotation.Log; import com.youchain.annotation.Log;
import com.youchain.businessdata.domain.AgvTask; import com.youchain.businessdata.domain.AgvTask;
import com.youchain.businessdata.repository.AgvTaskRepository;
import com.youchain.businessdata.service.AgvTaskService; import com.youchain.businessdata.service.AgvTaskService;
import com.youchain.businessdata.service.dto.AgvTaskDto; import com.youchain.businessdata.service.dto.AgvTaskDto;
import com.youchain.businessdata.service.dto.AgvTaskQueryCriteria; import com.youchain.businessdata.service.dto.AgvTaskQueryCriteria;
@ -54,6 +55,7 @@ import javax.servlet.http.HttpServletResponse;
public class AgvTaskController { public class AgvTaskController {
private final AgvTaskService agvTaskService; private final AgvTaskService agvTaskService;
private final AgvTaskRepository agvTaskRepository;
@Log("导出数据") @Log("导出数据")
@ApiOperation("导出数据") @ApiOperation("导出数据")
@ -177,4 +179,20 @@ public class AgvTaskController {
agvTaskService.getConveyorState(conveyorId); agvTaskService.getConveyorState(conveyorId);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PostMapping("/sendReAgvTask")
@Log("KMReS搬运任务下发")
@ApiOperation("KMReS搬运任务下发")
@AnonymousAccess
public ResponseEntity<Object> sendReAgvTask(@RequestBody String idsBody) {
JSONArray ids=JSONArray.parseArray(idsBody);
List<AgvTask> agvTasks=new ArrayList<>();
for (int i = 0; i < ids.size(); i++) {
Long id=ids.getLong(i);
AgvTask agvTask=agvTaskRepository.getById(Math.toIntExact(id));
agvTasks.add(agvTask);
}
agvTaskService.sendAgvTaskLXImpl(agvTasks);
ApiResult apiResult=ApiResult.fail(200,"发送成功",null);
return new ResponseEntity<>(apiResult, apiResult.getStatus());
}
} }

View File

@ -38,21 +38,21 @@ public class PlcController {
@Log("PLC扫描容器") @Log("PLC扫描容器")
@ApiOperation("PLC扫描容器") @ApiOperation("PLC扫描容器")
public ResponseEntity<Object> scanMo(@RequestBody String moJson) { public ResponseEntity<Object> scanMo(@RequestBody String moJson) {
S7Connector connector = S7ConnectorUtils.connect();
if (connector == null) {
return new ResponseEntity<>(ApiResult.success(BAD_REQUEST.value(), "PLC连接失败", ""), HttpStatus.BAD_REQUEST);
}
try { try {
JSONObject json = JSONObject.parseObject(moJson); JSONObject json = JSONObject.parseObject(moJson);
if (json == null) { if (json == null) {
return new ResponseEntity<>(ApiResult.success(BAD_REQUEST.value(), "参数错误", ""), HttpStatus.BAD_REQUEST); return new ResponseEntity<>(ApiResult.success(BAD_REQUEST.value(), "参数错误", ""), HttpStatus.BAD_REQUEST);
} }
String mo = json.getString("mo"); String mo = json.getString("mo");// MO票
moService.scanMo(mo); String lx = json.getString("lx");// 容器
//S7ConnectorUtils.write(connector,2); String it = mo.substring(19, 33);// 料号
String labelNo=mo.substring(40, 52);// 标签
moService.scanMo(it,lx,labelNo);
S7ConnectorUtils.write(S7ConnectorUtils.s7Connector,2);
return new ResponseEntity<>(ApiResult.success(OK.value(), "", ""), HttpStatus.OK); return new ResponseEntity<>(ApiResult.success(OK.value(), "", ""), HttpStatus.OK);
} catch (Exception e) { } catch (Exception e) {
//S7ConnectorUtils.write(connector,1); S7ConnectorUtils.write(S7ConnectorUtils.s7Connector,1);
return new ResponseEntity<>(ApiResult.success(BAD_REQUEST.value(), e.getMessage(), ""), HttpStatus.BAD_REQUEST); return new ResponseEntity<>(ApiResult.success(BAD_REQUEST.value(), e.getMessage(), ""), HttpStatus.BAD_REQUEST);
} }

View File

@ -97,7 +97,7 @@ public interface MoService {
* MO * MO
* @param mo MO * @param mo MO
*/ */
void scanMo(String mo); void scanMo(String itemCode,String stockCode,String labelNo);
/** /**
* labelNosMO * labelNosMO

View File

@ -274,13 +274,13 @@ public class AgvTaskServiceImpl implements AgvTaskService {
objMap.put("missionData", missionDataArray); objMap.put("missionData", missionDataArray);
jsonObject.putAll(objMap); jsonObject.putAll(objMap);
String resultJson = "{\n" + /*String resultJson = "{\n" +
" \"data\": null,\n" + " \"data\": null,\n" +
" \"code\": \"0\",\n" + " \"code\": \"0\",\n" +
" \"message\": null,\n" + " \"message\": null,\n" +
" \"success\": true\n" + " \"success\": true\n" +
"}"; "}";*/
//String resultJson = HttpPostUtil.sendPostReq(UrlApi.submitMission, jsonObject.toString()); String resultJson = HttpPostUtil.sendPostReq(UrlApi.submitMission, jsonObject.toString());
if (resultJson == null) { if (resultJson == null) {
return null; return null;
} }

View File

@ -153,16 +153,16 @@ public class MoServiceImpl implements MoService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void scanMo(String mo) { public void scanMo(String itemCode,String stockCode,String labelNo) {
//条码格式12227000016951-qth1847-240411422924 //条码格式12227000016951-qth1847-240411422924
// 验证条码格式 // 验证条码格式
validateBarcodeFormat(mo); // validateBarcodeFormat(mo);
String[] arr = mo.split("-"); // String[] arr = mo.split("-");
String itemCode = arr[0];//物料编号 // String itemCode = arr[0];//物料编号
String stockCode = arr[1];//容器编号 // String stockCode = arr[1];//容器编号
String labelNo = arr[2];//标签号 // String labelNo = arr[2];//标签号
// 验证物料是否存在 // 验证物料是否存在
Item item = redisObjectUtils.getObjectFromCache(itemCode, () -> itemService.existItem(itemCode), itemCode + " 系统无此物料!"); Item item = redisObjectUtils.getObjectFromCache(itemCode, () -> itemService.existItem(itemCode), itemCode + " 系统无此物料!");
@ -267,6 +267,10 @@ public class MoServiceImpl implements MoService {
//生成收货记录 //生成收货记录
Task task = new Task(item, itemKey, orderDto.getBarcodeNumber(), BizStatus.ASN, asnDetail, null, null, null, stock, stock, srcPoint, endPoint, stock.getCode(), stock.getCode(), srcPoint.getCode(), endPoint.getCode(), null, BizStatus.OPEN, asnDetail.getOrderQty(), null, null, item.getDept(), agvTask); Task task = new Task(item, itemKey, orderDto.getBarcodeNumber(), BizStatus.ASN, asnDetail, null, null, null, stock, stock, srcPoint, endPoint, stock.getCode(), stock.getCode(), srcPoint.getCode(), endPoint.getCode(), null, BizStatus.OPEN, asnDetail.getOrderQty(), null, null, item.getDept(), agvTask);
taskService.create(task); taskService.create(task);
// 发送AGV任务
List<AgvTask> agvTasks=new ArrayList<>();
agvTasks.add(agvTask);
agvTaskService.sendAgvTaskLXImpl(agvTasks);
} }
// 提取更新容器状态和目标点位状态的逻辑到单独方法 // 提取更新容器状态和目标点位状态的逻辑到单独方法

View File

@ -18,24 +18,25 @@ import java.util.Arrays;
import java.util.Date; import java.util.Date;
@Slf4j
public class LicenseValidate { public class LicenseValidate {
public static void validate() throws Exception{ public static void validate() throws Exception{
//读取本地文件 //读取本地文件
FileProperties properties= SpringContextHolder.getBean(FileProperties.class); FileProperties properties= SpringContextHolder.getBean(FileProperties.class);
log.info(properties.getPath().getPath());
String result=""; String result="";
try{ try{
FileReader fileReader = new FileReader(properties.getPath().getPath()+"key/"+"license.key"); FileReader fileReader = new FileReader(properties.getPath().getPath()+"key/"+"license.key");
result = fileReader.readString(); result = fileReader.readString();
}catch (Exception e){ }catch (Exception e){
throw new BadRequestException("License不存在,请上传License"); // throw new BadRequestException("License不存在,请上传License");
} }
log.error(result);
String rsaResult= RsaUtils.decryptByPublicKey(RsaProperties.licenseKey,result); String rsaResult= RsaUtils.decryptByPublicKey(RsaProperties.licenseKey,result);
log.error("------------------------解密完成-----------------------");
LicenseCheck key_price = JSONUtil.toBean(rsaResult, LicenseCheck.class); LicenseCheck key_price = JSONUtil.toBean(rsaResult, LicenseCheck.class);
LicenseCheck system_price = getDeviceInfo(); LicenseCheck system_price = getDeviceInfo();
@ -43,15 +44,15 @@ public class LicenseValidate {
if(key_price.getMainBoardSerial().equals(system_price.getMainBoardSerial())){ if(key_price.getMainBoardSerial().equals(system_price.getMainBoardSerial())){
log.error("主板匹配成功");
}else{ }else{
log.error("主板匹配失败");
throw new BadRequestException("主板匹配失败"); throw new BadRequestException("主板匹配失败");
} }
if(key_price.getCpuSerial().equals(system_price.getCpuSerial())){ if(key_price.getCpuSerial().equals(system_price.getCpuSerial())){
log.error("CPU匹配成功");
}else{ }else{
log.error("CPU匹配失败");
throw new BadRequestException("CPU匹配失败"); throw new BadRequestException("CPU匹配失败");
} }
@ -62,7 +63,7 @@ public class LicenseValidate {
if(end_date.before(now_date)){ if(end_date.before(now_date)){
throw new BadRequestException("过期的License,请重新生成"); throw new BadRequestException("过期的License,请重新生成");
}else{ }else{
log.error("有效期验证通过");
} }
}catch (Exception e){ }catch (Exception e){
throw new BadRequestException("无效的License,请重新生成"); throw new BadRequestException("无效的License,请重新生成");
@ -71,35 +72,37 @@ public class LicenseValidate {
public static String getLicense(String time) throws Exception{
LicenseCheck licenseCheck=getDeviceInfo();
licenseCheck.setEndTime(time);
String rest= JSONUtil.toJsonStr(licenseCheck).trim();
String priKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDFlDBnrKTnnAbXTCfUh3fhq81dXZUd/i0czbNGiWR9s4ocNEKK/fbMx8Qsghb3UK3MH7Vf+7X7cIOXaEO5g+mGou6RPKn/WsqgtGhVida7ZOLYv7q2LBkxzkB/KUCmidED+1Jre22T7kN5to84iT2JRMyYOkxHdIHAcYVpxTqpYJHWYrGI6Tvw4v2cL+vbhfN++ZaO9xtezsh/0Xk0PZVL17lZ46/rIwW5dKH9XmpkCTINsRXvpO2jbWcu40UtQPeI1xRh7KuezwP1QAh0O2nixS8gAMGdaVW1c237rxrwGeVim2+lb2bQwIlmWYjPEBBjhGukedcXb3JAH0C4/CPPAgMBAAECggEBAKKGsgK2W7hB+saj2KfU/+JdRsOktYNEkKt+8hf18PoN9HAa9RoMqzXspgzOvkGW1kBxXOulzR8WgMjNddhnEHQ2FvTV6Ckr8D6d6K1kg4UHCiuuG9K7F8aGmTuBHbNg7tTNqhDMKWlkt5CpgcrJ6hq+w2X9nr2wswMw3sQQ/55PZLzgwzv6WQtkJ58w78r9fZJsOgjldwE35nliDo8Xwoa1YCVcEjfH+sgPfFJzilFtJ9wjmx/HZb2EBcUUSaW5ewsqvN9dk1EgAJjmwWVW84NUkrbXD0nhUTx4MHfx4MA1fqPjkwkHCrEBA5idsQkwtoIETg1hN+QUR9iBLhelJIECgYEA83CRN6Zu0RpsP4JPuov06qRM3dV+ErjjApfENJzLk7DW4GlkgNRG9pWv6xJxlEbxf7k+M5jMEGrfE6o8xuBYoEm2BHy8WZF0zPeVnyOrk28xoDUKlsbT2lFYvVbHWBDj4dbu/WoqH2r3bWedVSr+QgpGLuHn//3a3bwplqvzAW8CgYEAz8XgXgtnckQRDNFhUDmS/QVdthaiYERerEk+qem1o2/7IEBSF7xxu+yRm5DTJumD4kQiilcQJngmrQ23HDZO4S61lyCBv0lx8y0A2sAHt9v63Dz7P270tMs1tJW8iSC7VUNtMwFMdc+MjTlHq99mg5USgusM+fB8FkEmkpRDE6ECgYBTqpB+S9kyTJ5/hU3Zk1htfGJeq41U6e47aeWpH2poLBLttcsw68Qn43I+nGwkxe0iNIxIN2+LBO/+VjflMh3DmRHRoP0q228FMuJde2jwlvq7UP9+qn8NPX/+MuD4R3XKnJAu0FoBykWXeFD+gHQ6RkWwvzt5I8ohAxZYDmjKSQKBgB5gwhM9+5v7U7raCi5enJ0d4buzx33nwSfTdbQGFaaVwtPOU7JgvQhK6GckX5r63WuBpsMvQ488VftLXBBl6FaIK8iy2gWLyXtSgyN4nChHo3/78ogtwt2EMI/8rJooDPvEZfzlHbbD57rmOxJoEWb/rrsxfq40eRAP6oHX547BAoGBAMK7GGdYkzxkD2xuMZSfPro/sO0EbghJdJ/l8nioTEPTPyRx5AZBe/7OhiKYohpUdi5F8+S18ACn88rJkZn7iQGuJvjXCFYnt9bec+w8lqiUcjfw3l4+aAkNTfquIdKz6gJyUBVjbuQYYkzGf052HbMacDwwfbHIlDvpfAS7FUpq";
/*String result=RsaUtils.encryptByPrivateKey(priKey,rest);
public static void saveCode(String license_code) throws Exception{
//读取本地文件 //读取本地文件
String rsaResult=""; log.error("------------------------加密完成-----------------------");
try{
rsaResult= RsaUtils.decryptByPublicKey(RsaProperties.licenseKey,license_code);
}catch (Exception e){
throw new BadRequestException("License无效请重新生成");
}
log.error(result);
String rsaResult= RsaUtils.decryptByPublicKey(RsaProperties.licenseKey,result);
log.error(rsaResult);
log.error("------------------------解密完成-----------------------");
LicenseCheck key_price = JSONUtil.toBean(rsaResult, LicenseCheck.class); LicenseCheck key_price = JSONUtil.toBean(rsaResult, LicenseCheck.class);
LicenseCheck system_price = getDeviceInfo(); LicenseCheck system_price = getDeviceInfo();
if(key_price.getMainBoardSerial().equals(system_price.getMainBoardSerial())){ if(key_price.getMainBoardSerial().equals(system_price.getMainBoardSerial())){
log.error("主板匹配成功");
}else{ }else{
log.error("主板匹配失败");
throw new BadRequestException("主板匹配失败"); throw new BadRequestException("主板匹配失败");
} }
if(key_price.getCpuSerial().equals(system_price.getCpuSerial())){ if(key_price.getCpuSerial().equals(system_price.getCpuSerial())){
log.error("CPU匹配成功");
}else{ }else{
log.error("CPU匹配失败");
throw new BadRequestException("CPU匹配失败"); throw new BadRequestException("CPU匹配失败");
} }
@ -110,14 +113,61 @@ public class LicenseValidate {
if(end_date.before(now_date)){ if(end_date.before(now_date)){
throw new BadRequestException("过期的License,请重新生成"); throw new BadRequestException("过期的License,请重新生成");
}else{ }else{
log.error("有效期验证通过");
}
}catch (Exception e){
throw new BadRequestException("无效的License,请重新生成");
}*/
return null;
}
public static void saveCode(String license_code) throws Exception{
//读取本地文件
log.error(license_code);
String rsaResult="";
try{
rsaResult= RsaUtils.decryptByPublicKey(RsaProperties.licenseKey,license_code);
}catch (Exception e){
throw new BadRequestException("License无效请重新生成");
}
log.error("解密完成");
log.error(rsaResult);
LicenseCheck key_price = JSONUtil.toBean(rsaResult, LicenseCheck.class);
LicenseCheck system_price = getDeviceInfo();
if(key_price.getMainBoardSerial().equals(system_price.getMainBoardSerial())){
log.error("主板匹配成功");
}else{
log.error("主板匹配失败");
throw new BadRequestException("主板匹配失败");
}
if(key_price.getCpuSerial().equals(system_price.getCpuSerial())){
log.error("CPU匹配成功");
}else{
log.error("CPU匹配失败");
throw new BadRequestException("CPU匹配失败");
}
try{
Date end_date = DateUtil.parse(key_price.getEndTime());
Date now_date = DateUtil.date();
if(end_date.before(now_date)){
throw new BadRequestException("过期的License,请重新生成");
}else{
log.error("有效期验证通过");
} }
}catch (Exception e){ }catch (Exception e){
throw new BadRequestException("无效的License,请重新生成"); throw new BadRequestException("无效的License,请重新生成");
} }
FileProperties properties= SpringContextHolder.getBean(FileProperties.class); FileProperties properties= SpringContextHolder.getBean(FileProperties.class);
log.info(properties.getPath().getPath());
FileWriter writer = new FileWriter(properties.getPath().getPath()+"key/"+"license.key"); FileWriter writer = new FileWriter(properties.getPath().getPath()+"key/"+"license.key");
writer.write(license_code); writer.write(license_code);

View File

@ -1,5 +1,6 @@
package com.youchain.modules.quartz.task; package com.youchain.modules.quartz.task;
import cn.hutool.core.date.DateUtil;
import com.youchain.businessdata.inputJson.MoInfo; import com.youchain.businessdata.inputJson.MoInfo;
import com.youchain.businessdata.inputJson.MoParams; import com.youchain.businessdata.inputJson.MoParams;
import com.youchain.businessdata.service.MlsService; import com.youchain.businessdata.service.MlsService;
@ -8,6 +9,8 @@ import com.youchain.utils.UrlApi;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -42,12 +45,17 @@ public class moTask {
Set invCodes = new HashSet<>(); Set invCodes = new HashSet<>();
invCodes.add("MA2111"); invCodes.add("MA2111");
params.setInvCodes(invCodes); params.setInvCodes(invCodes);
//DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd HH:mm:ss")
params.setIqcResult(""); params.setIqcResult("");
params.setStartTime("2024-04-27 00:00:00");
params.setEndTime("2024-04-27 23:59:59"); /*String startTime = DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd HH:mm:ss");
params.setStartTime(startTime);
String endData = DateUtil.format(new Date(), "yyyy-MM-dd");
params.setEndTime(endData+" 23:59:59");*/
params.setStartTime("2024-05-22 00:00:00");
params.setEndTime("2024-05-22 23:59:59");
params.setPageNo(1); params.setPageNo(1);
params.setPageSize(100); params.setPageSize(10000);
MoInfo moInfo = new MoInfo(); MoInfo moInfo = new MoInfo();
moInfo.setIfaceCode("MLS-WQ-003"); moInfo.setIfaceCode("MLS-WQ-003");
moInfo.setSourceSystem("WQ"); moInfo.setSourceSystem("WQ");

View File

@ -59,11 +59,14 @@ public class orderTask {
invCodes.add("MA2111"); invCodes.add("MA2111");
params.setInvCodes(invCodes); params.setInvCodes(invCodes);
params.setIqcResult(""); params.setIqcResult("");
//DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd HH:mm:ss") /*String startTime = DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd HH:mm:ss");
params.setStartTime("2024-04-27 00:00:00"); params.setStartTime(startTime);
params.setEndTime("2024-04-27 23:59:59"); String endData = DateUtil.format(new Date(), "yyyy-MM-dd");
params.setEndTime(endData+" 23:59:59");*/
params.setStartTime("2024-05-22 00:00:00");
params.setEndTime("2024-05-22 23:59:59");
params.setPageNo(1); params.setPageNo(1);
params.setPageSize(100); params.setPageSize(10000);
OrderInfo orderInfo = new OrderInfo(); OrderInfo orderInfo = new OrderInfo();
orderInfo.setIfaceCode("MLS-WQ-002"); orderInfo.setIfaceCode("MLS-WQ-002");
orderInfo.setSourceSystem("WQ"); orderInfo.setSourceSystem("WQ");

View File

@ -1,5 +1,6 @@
package com.youchain.modules.quartz.task; package com.youchain.modules.quartz.task;
import com.alibaba.fastjson.JSONObject;
import com.github.s7connector.api.S7Connector; import com.github.s7connector.api.S7Connector;
import com.youchain.businessdata.rest.MoController; import com.youchain.businessdata.rest.MoController;
import com.youchain.businessdata.rest.PlcController; import com.youchain.businessdata.rest.PlcController;
@ -22,12 +23,38 @@ public class plcTask {
} }
public void plcTask() { public void plcTask() {
try { S7ConnectorUtils.connect();
S7Connector connector = S7ConnectorUtils.connect(); JSONObject jsonObject=new JSONObject();
String mo = S7ConnectorUtils.readMo(connector); String mo="LB]A0006907]240522]12125300001741]50.00]240522554318]]";
plcController.scanMo(mo); String lx="01010007";
// String mo = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,12);
// String lx = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,0);
if (mo.length()>0&&lx.length()>0){
jsonObject.put("mo",mo);
jsonObject.put("lx",lx);
try {
plcController.scanMo(jsonObject+"");
System.out.println("222");
}catch (Exception e){
throw new RuntimeException("校验失败:" + mo+"|"+lx+"错误信息:"+e.getMessage());
}
}else {
throw new RuntimeException("数据格式错误:"+mo+"|"+lx);
}
/*try {
S7ConnectorUtils.connect();
JSONObject jsonObject=new JSONObject();
String mo = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,12);
String lx = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,0);
if (mo.length()>0&&lx.length()>0){
jsonObject.put("mo",mo);
jsonObject.put("lx",lx);
plcController.scanMo(jsonObject+"");
}else {
throw new RuntimeException("数据格式错误:"+mo+"|"+lx);
}
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("异常信息" + e.getMessage()); throw new RuntimeException("异常信息" + e.getMessage());
} }*/
} }
} }

View File

@ -45,7 +45,6 @@ public class QuartzRunnable implements Callable<Object> {
} }
@Override @Override
@SuppressWarnings("all")
public Object call() throws Exception { public Object call() throws Exception {
ReflectionUtils.makeAccessible(method); ReflectionUtils.makeAccessible(method);
if (StringUtils.isNotBlank(params)) { if (StringUtils.isNotBlank(params)) {

View File

@ -12,7 +12,7 @@ import javax.annotation.PostConstruct;
@Component @Component
public class BaseCode { public class BaseCode {
/** PLC IP*/ /** PLC IP*/
public static String PLC_IP = ""; public static String PLC_IP = "10.173.188.201";
/** PLC 端口号*/ /** PLC 端口号*/
public static int PLC_PORT = 0; public static int PLC_PORT = 0;
public static String MLS_IP = ""; public static String MLS_IP = "";

View File

@ -0,0 +1,17 @@
package com.youchain.utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class ImportEntityUtils {
public static Boolean stringFlag(String s){
if (s!=null&&!s.equals("null")&&s.length()>0){
return true;
}else {
return false;
}
}
}

View File

@ -1,14 +1,18 @@
package com.youchain.utils; package com.youchain.utils;
import cn.hutool.core.date.DateUtil;
import com.github.s7connector.api.DaveArea; import com.github.s7connector.api.DaveArea;
import com.github.s7connector.api.S7Connector; import com.github.s7connector.api.S7Connector;
import com.github.s7connector.api.S7Serializer;
import com.github.s7connector.api.factory.S7ConnectorFactory; import com.github.s7connector.api.factory.S7ConnectorFactory;
import com.github.s7connector.api.factory.S7SerializerFactory;
import com.github.s7connector.impl.serializer.converter.StringConverter; import com.github.s7connector.impl.serializer.converter.StringConverter;
import com.sun.mail.iap.ConnectionException; import com.sun.mail.iap.ConnectionException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.Date;
/** /**
@ -19,32 +23,58 @@ import java.nio.ByteBuffer;
*/ */
@Slf4j @Slf4j
public class S7ConnectorUtils { public class S7ConnectorUtils {
public static S7Connector s7Connector=null;
public static S7Connector connect() { public static S7Connector connect() {
S7Connector s7Connector = null; if (s7Connector != null){
try { try {
s7Connector = S7ConnectorFactory s7Connector.close();
.buildTCPConnector() //关闭连接
.withHost(BaseCode.PLC_IP)//设置PLC的IP地址 log.info("关闭s7连接");
.withPort(BaseCode.PLC_PORT)//设置PLC的端口号 }catch (Exception e){
.withTimeout(10000)//设置连接超时时间
.withRack(0)//设置PLC的机架号
.withSlot(2)//设置PLC的插槽号
.build();
return s7Connector;
} catch (Exception e) {
return null;
}
}
}finally {
s7Connector=null;
}
}
s7Connector = S7ConnectorFactory
.buildTCPConnector()
.withHost(BaseCode.PLC_IP)//设置PLC的IP地址
// .withPort(BaseCode.PLC_PORT)//设置PLC的端口号
.withTimeout(10000) //连接超时时间
.withRack(0)//设置PLC的机架号
.withSlot(1)//设置PLC的插槽号
.build();
S7Serializer s7Serializer2L = S7SerializerFactory.buildSerializer(s7Connector);
log.info("初始化s7连接");
return s7Connector;
}
public static void main(String[] args) {
/*String a="LB]A0006907]240522]12125300001741]50.00]240522554318]]";
String I=a.substring(19, 33);
System.out.println("I:"+I);
String M=a.substring(40, 52);
System.out.println("M:"+M);*/
S7ConnectorUtils.connect();
String lh = S7ConnectorUtils.readMo(s7Connector,0);
System.out.println("LH:"+lh);
String mo = S7ConnectorUtils.readMo(s7Connector,12);
System.out.println("MO:"+mo);
// S7ConnectorUtils.write(s7Connector,1);
/*if (lh.length()>0&&mo.length()>0){
S7ConnectorUtils.write(s7Connector,1);
}*/
/* String a = cn.hutool.core.date.DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd HH:mm:ss");
System.out.println("日期:"+a);*/
}
/** /**
* PLC * PLC
* *
* * @param offset 0-12-MO
* @param connector * @param connector
*/ */
public static String readMo(S7Connector connector) { public static String readMo(S7Connector connector,int offset) {
String mo = null; String mo = null;
if (connector == null) { if (connector == null) {
throw new RuntimeException("PLC连接失败请检查!"); throw new RuntimeException("PLC连接失败请检查!");
@ -57,7 +87,7 @@ public class S7ConnectorUtils {
* 500 * 500
* 0 * 0
*/ */
byte[] PlcData = connector.read(DaveArea.DB, 100, 500, 0); byte[] PlcData = connector.read(DaveArea.DB, 100, 60, offset);
long endTime = System.currentTimeMillis(); long endTime = System.currentTimeMillis();
log.info("读取耗时:" + (endTime - startTime) + "ms"); log.info("读取耗时:" + (endTime - startTime) + "ms");
@ -67,13 +97,13 @@ public class S7ConnectorUtils {
mo = converter.extract(str1.getClass(), PlcData, 0, 0); mo = converter.extract(str1.getClass(), PlcData, 0, 0);
log.info("内置方法转换str=" + mo); log.info("内置方法转换str=" + mo);
try { /*try {
connector.close(); connector.close();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }*/
return mo; return mo.replace(" ", "");
} }
/** /**
@ -125,7 +155,7 @@ public class S7ConnectorUtils {
ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES); ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES);
buffer.putInt(instruct); buffer.putInt(instruct);
byte[] bytes = buffer.array(); byte[] bytes = buffer.array();
connector.write(DaveArea.DB, 100, 22, bytes); connector.write(DaveArea.DB, 100, 70, bytes);
long endTime = System.currentTimeMillis(); long endTime = System.currentTimeMillis();
System.out.println((endTime - startTime) + "ms"); System.out.println((endTime - startTime) + "ms");
System.out.print("写入成功"); System.out.print("写入成功");

View File

@ -4,22 +4,22 @@ public class UrlApi {
/** /**
* *
*/ */
public static String submitMission = "http://10.177.202.230:10870/interfaces/api/amr/submitMission"; public static String submitMission = "http://10.175.163.70:10870/interfaces/api/amr/submitMission";
/** /**
* *
*/ */
public static String containerIn = "http://10.177.202.230:10870/interfaces/api/amr/containerIn"; public static String containerIn = "http://10.175.163.70:10870/interfaces/api/amr/containerIn";
/** /**
* *
*/ */
public static String containerOut = "http://10.177.202.230:10870/interfaces/api/amr/containerOut"; public static String containerOut = "http://10.175.163.70:10870/interfaces/api/amr/containerOut";
/** /**
* *
*/ */
public static String containerQuery = "http://10.177.202.230:10870/interfaces/api/amr/containerQuery"; public static String containerQuery = "http://10.175.163.70:10870/interfaces/api/amr/containerQuery";
/** /**
* 线 * 线

View File

@ -14,9 +14,11 @@ spring:
druid: druid:
db-type: com.alibaba.druid.pool.DruidDataSource db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:47.100.54.81}:${DB_PORT:53306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false # url: jdbc:log4jdbc:mysql://${DB_HOST:47.100.54.81}:${DB_PORT:53306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: ${DB_USER:root} username: ${DB_USER:root}
password: ${DB_PWD:Youchain@56} # password: ${DB_PWD:Youchain@56}
password: ${DB_PWD:123456}
# 初始连接数 # 初始连接数
initial-size: 5 initial-size: 5
# 最小连接数 # 最小连接数

View File

@ -1,5 +1,5 @@
server: server:
port: 8010 port: 8000
spring: spring:
main: main:
allow-circular-references: true allow-circular-references: true