Commit bf8820eb by wangweidong

土工平台修改

parent dad7f6a6
......@@ -49,9 +49,6 @@ public class WuCollectHandle implements ICollectHandler {
soilExperimentService.parseWuxingTxt(smbFile,request);
}
if (!name.equals(checkNameSiteNo)&&!name.equals(checkNameSampleCode)){
continue;
}
if (smbFile.getName().contains(".png")||smbFile.getName().contains(".bmp")){
soilExperimentService.uploadCollectPng(smbFile,request);
}
......
......@@ -83,22 +83,10 @@ public class CollectUtil {
System.out.println(sampleCode);
if (listTwo.size()>0){
SoilExperimentCollectDataVO collectData = new SoilExperimentCollectDataVO();
collectData.setName("液限含水率");
collectData.setTestValue(listTwo.get(listTwo.size()-1));
collectData.setEntrustCode(gcbh);
collectData.setSiteNo(sampleCode);
collectData.setExpName("界限含水率");
dataList.add(collectData);
dataList.add(getDataVO("液限含水率",listTwo.get(listTwo.size()-1),gcbh,sampleCode,"界限含水率"));
}
if (listFour.size()>0){
SoilExperimentCollectDataVO collectData = new SoilExperimentCollectDataVO();
collectData.setName("塑限含水率");
collectData.setTestValue(listFour.get(listFour.size()-1));
collectData.setEntrustCode(gcbh);
collectData.setSiteNo(sampleCode);
collectData.setExpName("界限含水率");
dataList.add(collectData);
dataList.add(getDataVO("塑限含水率",listFour.get(listFour.size()-1),gcbh,sampleCode,"界限含水率"));
}
System.out.println(listOne);
......@@ -183,22 +171,10 @@ public class CollectUtil {
if (!"".equals(sampleCode)&&!"".equals(gcbh)){
if (listTwo.size()>0){
SoilExperimentCollectDataVO collectData = new SoilExperimentCollectDataVO();
collectData.setName("液限含水率");
collectData.setTestValue(listTwo.get(listTwo.size()-1));
collectData.setEntrustCode(gcbh);
collectData.setSiteNo(sampleCode);
collectData.setExpName("界限含水率");
dataList.add(collectData);
dataList.add(getDataVO("液限含水率",listTwo.get(listTwo.size()-1),gcbh,sampleCode,"界限含水率"));
}
if (listFour.size()>0){
SoilExperimentCollectDataVO collectData = new SoilExperimentCollectDataVO();
collectData.setName("塑限含水率");
collectData.setTestValue(listFour.get(listFour.size()-1));
collectData.setEntrustCode(gcbh);
collectData.setSiteNo(sampleCode);
collectData.setExpName("界限含水率");
dataList.add(collectData);
dataList.add(getDataVO("塑限含水率",listFour.get(listFour.size()-1),gcbh,sampleCode,"界限含水率"));
}
System.out.println(listOne);
System.out.println(listTwo);
......@@ -215,6 +191,18 @@ public class CollectUtil {
return dataList;
}
public static SoilExperimentCollectDataVO getDataVO(String name,String value,String gcbh,String siteNo,String expName){
SoilExperimentCollectDataVO collectData = new SoilExperimentCollectDataVO();
collectData.setName(name);
collectData.setTestValue(value);
collectData.setEntrustCode(gcbh);
collectData.setSiteNo(siteNo);
collectData.setExpName(expName);
return collectData;
}
public static List<SoilExperimentCollectData> txt2String(InputStream io){
StringBuilder result = new StringBuilder();
List<SoilExperimentCollectData> dataList = new ArrayList<>();
......
package com.patzn.cloud.service.lims.socket;
import com.patzn.cloud.service.lims.soil.service.ISoilItemService;
import com.patzn.cloud.service.lims.soil.service.impl.SoilItemServiceImpl;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.util.zip.DataFormatException;
public class ServerConfig extends Thread {
private Socket socket;
public ServerConfig(Socket socket) {
this.socket = socket;
}
// 获取spring容器管理的类,可以获取到sevrice的类
private ISoilItemService service = SpringUtil.getBean(SoilItemServiceImpl.class);
private String handle(InputStream inputStream) throws IOException, DataFormatException {
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
if (len != -1) {
StringBuffer request = new StringBuffer();
request.append(new String(bytes, 0, len, "UTF-8"));
System.out.println("接受的数据: " + request);
System.out.println("from client ... " + request + "当前线程" + Thread.currentThread().getName());
} else {
throw new DataFormatException("数据处理异常");
}
return "";
}
@Override
public void run() {
BufferedWriter writer = null;
try {
// 设置连接超时9秒
socket.setSoTimeout(9000);
System.out.println("客户 - " + socket.getRemoteSocketAddress() + " -> 机连接成功");
InputStream inputStream = socket.getInputStream();
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String result = null;
try {
result = handle(inputStream);
writer.write(result);
writer.newLine();
writer.flush();
} catch (IOException | DataFormatException | IllegalArgumentException e) {
writer.write("error");
writer.newLine();
writer.flush();
System.out.println("发生异常");
try {
System.out.println("再次接受!");
result = handle(inputStream);
writer.write(result);
writer.newLine();
writer.flush();
} catch (DataFormatException | SocketTimeoutException ex) {
System.out.println("再次接受, 发生异常,连接关闭");
}
}
} catch (SocketException socketException) {
socketException.printStackTrace();
try {
writer.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.patzn.cloud.service.lims.socket;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@Configuration
@PropertySource("classpath:application.yml")
@ConfigurationProperties(prefix = "socket")
public class SocketProperties {
private Integer port;
private Integer poolKeep;
private Integer poolCore;
private Integer poolMax;
private Integer poolQueueInit;
public Integer getPort() {
return port;
}
public void setPort(Integer port) {
this.port = port;
}
public Integer getPoolKeep() {
return poolKeep;
}
public void setPoolKeep(Integer poolKeep) {
this.poolKeep = poolKeep;
}
public Integer getPoolCore() {
return poolCore;
}
public void setPoolCore(Integer poolCore) {
this.poolCore = poolCore;
}
public Integer getPoolMax() {
return poolMax;
}
public void setPoolMax(Integer poolMax) {
this.poolMax = poolMax;
}
public Integer getPoolQueueInit() {
return poolQueueInit;
}
public void setPoolQueueInit(Integer poolQueueInit) {
this.poolQueueInit = poolQueueInit;
}
}
package com.patzn.cloud.service.lims.socket;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SpringUtil.applicationContext == null) {
SpringUtil.applicationContext = applicationContext;
}
}
/**
* 获取applicationContext
* @return
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 通过name获取 Bean.
* @param name
* @return
*/
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
/**
* 通过class获取Bean.
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(Class<T> clazz){
return getApplicationContext().getBean(clazz);
}
/**
* 通过name,以及Clazz返回指定的Bean
* @param name
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext().getBean(name, clazz);
}
}
package com.patzn.cloud.service.lims.socket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Component
public class TestRunner implements CommandLineRunner {
@Autowired
private SocketProperties properties;
@Override
public void run(String... args) throws Exception {
ServerSocket server = null;
Socket socket = null;
server = new ServerSocket(properties.getPort());
System.out.println("设备服务器已经开启, 监听端口:" + properties.getPort());
ThreadPoolExecutor pool = new ThreadPoolExecutor(
properties.getPoolCore(),
properties.getPoolMax(),
properties.getPoolKeep(),
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(properties.getPoolQueueInit()),
new ThreadPoolExecutor.DiscardOldestPolicy()
);
while (true) {
socket = server.accept();
pool.execute(new ServerConfig(socket));
}
}
}
......@@ -73,3 +73,15 @@ print.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
res.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
convert.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
soil.ribbon.NFLoadBalancerRuleClassName: com.patzn.cloud.zuul.LocalRule
socket:
# 监听端口 2323
port: 2323
# 线程池 - 保持线程数 20
pool-keep: 20
# 线程池 - 核心线程数 10
pool-core: 10
# 线程池 - 最大线程数 20
pool-max: 30
# 线程队列容量 10
pool-queue-init: 10
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