Commit 74958735 by zhangmengqi

Merge branch 'dev'

parents aa9100a5 dae726f2
...@@ -119,7 +119,7 @@ dependencies { ...@@ -119,7 +119,7 @@ dependencies {
compile("com.google.zxing:core:3.3.3") compile("com.google.zxing:core:3.3.3")
compile("org.samba.jcifs:jcifs:1.2.9") compile("org.samba.jcifs:jcifs:1.2.9")
compile("com.google.zxing:javase:3.3.3") compile("com.google.zxing:javase:3.3.3")
compile("com.baomidou:dynamic-datasource-spring-boot-starter:2.5.7") compile ("org.rxtx:rxtx:2.1.7")
compile("com.qcloud:cos_api:5.2.4") { compile("com.qcloud:cos_api:5.2.4") {
exclude module: 'slf4j-log4j12' exclude module: 'slf4j-log4j12'
} }
......
package com.patzn.cloud.service.lims.common;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEventListener;
import gnu.io.UnsupportedCommOperationException;
import java.util.TooManyListenersException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 串口服务类,提供打开、关闭串口,读取、发送串口数据等服务(采用单例设计模式)
* @author zhong
*
*/
public class SerialTool {
protected static final Logger logger = LoggerFactory.getLogger(SerialTool.class);
private static SerialTool serialTool = null;
static {
//在该类被ClassLoader加载时就初始化一个SerialTool对象
if (serialTool == null) {
serialTool = new SerialTool();
}
}
//私有化SerialTool类的构造方法,不允许其他类生成SerialTool对象
private SerialTool() {
}
/**
* 获取提供服务的SerialTool对象
*
* @return serialTool
*/
public static SerialTool getSerialTool() {
if (serialTool == null) {
serialTool = new SerialTool();
}
return serialTool;
}
/**
* 查找所有可用端口
*
* @return 可用端口名称列表
*/
public static final ArrayList<String> findPort() {
//获得当前所有可用串口
Enumeration<CommPortIdentifier> portList = CommPortIdentifier.getPortIdentifiers();
ArrayList<String> portNameList = new ArrayList<>();
//将可用串口名添加到List并返回该List
while (portList.hasMoreElements()) {
String portName = portList.nextElement().getName();
portNameList.add(portName);
}
return portNameList;
}
/**
* 打开串口
*
*/
public synchronized static final SerialPort openPort(String portName, int baudrate) {
try {
//通过端口名识别端口
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
if (null == portIdentifier){
return null;
}
//打开端口,并给端口名字和一个timeout(打开操作的超时时间)
CommPort commPort = portIdentifier.open(portName, 500);
//判断是不是串口
if (commPort instanceof SerialPort) {
SerialPort serialPort = (SerialPort) commPort;
try {
//设置一下串口的波特率等参数
serialPort.setSerialPortParams(baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
// throw new SerialPortParameterFailure();
}
//System.out.println("Open " + portName + " sucessfully !");
return serialPort;
} else {
//不是串口
// throw new NotASerialPort();
}
} catch (NoSuchPortException e1) {
e1.printStackTrace();
//throw new NoSuchPort();
} catch (PortInUseException e2) {
e2.printStackTrace();
// throw new PortInUse();
}
return null;
}
/**
* 关闭串口
*
* @param serialport 待关闭的串口对象
*/
public static void closePort(SerialPort serialPort) {
if (serialPort != null) {
serialPort.close();
serialPort = null;
}
}
/**
* 往串口发送数据
*
* @param serialPort 串口对象
* @param order 待发送数据
*/
public static String sendToPort(SerialPort serialPort, byte[] order) throws Exception{
OutputStream out = null;
String value="";
try {
out = serialPort.getOutputStream();
out.write(order);
out.flush();
Thread.sleep(500);
value= readTextFromPort(serialPort);
} catch (IOException e) {
closePort(serialPort);
throw new Exception("向串口发送数据失败");
} finally {
try {
if (out != null) {
out.close();
out = null;
}
} catch (IOException e) {
closePort(serialPort);
throw new Exception("关闭串口对象的输出流出错");
}
}
return value;
}
/**
* 从串口读取数据
*
* @param serialPort 当前已建立连接的SerialPort对象
* @return 读取到的数据
*/
public static byte[] readFromPort(SerialPort serialPort) {
InputStream in = null;
byte[] bytes = null;
try {
in = serialPort.getInputStream();
int bufflenth = in.available(); //获取buffer里的数据长度
while (bufflenth != 0) {
bytes = new byte[bufflenth]; //初始化byte数组为buffer中数据的长度
in.read(bytes);
bufflenth = in.available();
}
} catch (Exception e) {
closePort(serialPort);
//throw new ReadDataFromSerialPortFailure();
} finally {
try {
if (in != null) {
in.close();
in = null;
}
} catch (IOException e) {
//throw new SerialPortInputStreamCloseFailure();
closePort(serialPort);
}
}
return bytes;
}
public static String readTextFromPort(SerialPort serialPort) {
byte [] bytes= SerialTool.readFromPort(serialPort);
if (null!=bytes){
return new String(bytes);
}
return "";
}
/**
* 添加监听器
*
* @param port 串口对象
* @param listener 串口监听器
* @throws TooManyListeners 监听类对象过多
*/
public static void addListener(SerialPort port, SerialPortEventListener listener) {
try {
//给串口添加监听器
port.addEventListener(listener);
//设置当有数据到达时唤醒监听接收线程
port.notifyOnDataAvailable(true);
//设置当通信中断时唤醒中断线程
port.notifyOnBreakInterrupt(true);
} catch (TooManyListenersException e) {
//throw new TooManyListeners();
}
}
public static String getSubUtilSimple(String soap, String rgex) {
logger.error("getSubUtilSimple--soap"+soap);
logger.error("getSubUtilSimple--rgex"+rgex);
if (StringUtils.isBlank(soap)){
return "";
}
Pattern pattern = Pattern.compile(rgex);// 匹配的模式
Matcher m = pattern.matcher(soap);
try {
while (m.find()) {
String value= m.group(1).trim();
if (StringUtils.isNotBlank(value)){
value= value.replace(",","").replace(",","");
return value.trim();
}
return value.trim();
}
}catch (Exception e){
logger.error("错误getSubUtilSimple"+e.getMessage(),e);
}
return "";
}
public static String getBalanceValue(HttpServletRequest request,String com,Integer baudrate) {
SerialPort serialPort =null;
try {
serialPort= SerialTool.openPort(com, baudrate);
if (null==serialPort){
return "";
}
String returnStr = SerialTool.readTextFromPort(serialPort);
boolean agin = (returnStr.contains("US,GS") || returnStr.contains("ST,GS")) && returnStr.contains(" g");
int num = 0;
while (!agin && num < 10) {
SerialPort serialPortA = null;
serialPortA= SerialTool.openPort("COM1", 9600);
returnStr = SerialTool.readTextFromPort(serialPortA);
agin = (returnStr.contains("US,GS") || returnStr.contains("ST,GS")) && returnStr.contains(" g");
num++;
SerialTool.closePort(serialPortA);
}
String regx = "";
if (returnStr.contains("US,GS-")) {
regx = "US,GS-(.*?)g";
} else if (returnStr.contains("US,GS")) {
regx = "US,GS(.*?)g";
} else if (returnStr.contains("ST,GS")) {
regx = "ST,GS(.*?)g";
}
if (null!=serialPort){
SerialTool.closePort(serialPort);
}
return getSubUtilSimple(returnStr, regx);
} catch (Exception e) {
logger.error("访问台秤数据异常"+e.getMessage(),e);
if (null!=serialPort){
closePort(serialPort);
}
e.printStackTrace();
}
return "";
}
public static String getTaiChengValue2(HttpServletRequest request) {
SerialPort serialPort =null;
try {
String ip=getIPAddress(request);
logger.error("getTaiChengValue2台秤开始访问---:IP"+ip);
serialPort= SerialTool.openPort("COM9", 2400);
if (null==serialPort){
return "";
}
String returnStr = SerialTool.readTextFromPort(serialPort);
boolean agin = (returnStr.contains("US,GS") || returnStr.contains("ST,GS")) && returnStr.contains(" g");
int num = 0;
while (!agin && num < 10) {
SerialPort serialPortA = null;
serialPortA= SerialTool.openPort("COM9", 2400);
returnStr = SerialTool.readTextFromPort(serialPortA);
agin = (returnStr.contains("US,GS") || returnStr.contains("ST,GS")) && returnStr.contains(" g");
num++;
SerialTool.closePort(serialPortA);
}
String regx = "";
if (returnStr.contains("US,GS-")) {
regx = "US,GS-(.*?)g";
} else if (returnStr.contains("US,GS")) {
regx = "US,GS(.*?)g";
} else if (returnStr.contains("ST,GS")) {
regx = "ST,GS(.*?)g";
}
if (null!=serialPort){
SerialTool.closePort(serialPort);
}
return getSubUtilSimple(returnStr, regx);
} catch (Exception e) {
logger.error("访问台秤数据异常"+e.getMessage(),e);
if (null!=serialPort){
closePort(serialPort);
}
e.printStackTrace();
}
return "";
}
public static String getIPAddress(HttpServletRequest request) {
String ip = null;
//X-Forwarded-For:Squid 服务代理
String ipAddresses = request.getHeader("X-Forwarded-For");
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
//Proxy-Client-IP:apache 服务代理
ipAddresses = request.getHeader("Proxy-Client-IP");
}
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
//WL-Proxy-Client-IP:weblogic 服务代理
ipAddresses = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
//HTTP_CLIENT_IP:有些代理服务器
ipAddresses = request.getHeader("HTTP_CLIENT_IP");
}
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
//X-Real-IP:nginx服务代理
ipAddresses = request.getHeader("X-Real-IP");
}
//有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IP
if (ipAddresses != null && ipAddresses.length() != 0) {
ip = ipAddresses.split(",")[0];
}
//还是不能获取到,最后再通过request.getRemoteAddr();获取
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
ip = request.getRemoteAddr();
}
return ip;
}
public static String getBalanceValue(String serialPortName,Integer baudRate,String command) {
SerialPort serialPort=null;
try {
serialPort= SerialTool.openPort(serialPortName, baudRate);
if (null == serialPort){
return "";
}
String returnStr = SerialTool.readTextFromPort(serialPort);
closePort(serialPort);
return returnStr;
} catch (Exception e) {
if (null!=serialPort){
closePort(serialPort);
}
e.printStackTrace();
}
return "";
}
}
package com.patzn.cloud.service.lims.config; package com.patzn.cloud.service.lims.config;
import com.baomidou.dynamic.datasource.plugin.MasterSlaveAutoRoutingPlugin;
import com.baomidou.mybatisplus.mapper.MetaObjectHandler; import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.plugins.PerformanceInterceptor; import com.baomidou.mybatisplus.plugins.PerformanceInterceptor;
...@@ -124,7 +123,6 @@ public class MybatisPlusConfig { ...@@ -124,7 +123,6 @@ public class MybatisPlusConfig {
return paginationInterceptor; return paginationInterceptor;
} }
/** /**
* mybatis-plus SQL执行效率插件 * mybatis-plus SQL执行效率插件
*/ */
...@@ -134,7 +132,6 @@ public class MybatisPlusConfig { ...@@ -134,7 +132,6 @@ public class MybatisPlusConfig {
return new PerformanceInterceptor(); return new PerformanceInterceptor();
} }
/** /**
* 注入自动填充器 * 注入自动填充器
*/ */
...@@ -142,13 +139,4 @@ public class MybatisPlusConfig { ...@@ -142,13 +139,4 @@ public class MybatisPlusConfig {
public MetaObjectHandler metaObjectHandler() { public MetaObjectHandler metaObjectHandler() {
return new PatznMetaObjectHandler(); return new PatznMetaObjectHandler();
} }
/**
* 读写分离配置
*/
@Bean
@Profile({"test"})
public MasterSlaveAutoRoutingPlugin masterSlaveAutoRoutingPlugin(){
return new MasterSlaveAutoRoutingPlugin();
}
} }
\ No newline at end of file
package com.patzn.cloud.service.lims.config; package com.patzn.cloud.service.lims.config;
import com.patzn.cloud.mq.MqAutoConfiguration;
import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import com.patzn.cloud.mq.MqAutoConfiguration;
import com.patzn.cloud.mq.log.LogDisruptor;
/** /**
* <p> * <p>
* RabbitMQ 消息推送服务配置 * RabbitMQ 消息推送服务配置
...@@ -27,16 +25,6 @@ public class RabbitMQConfig extends MqAutoConfiguration { ...@@ -27,16 +25,6 @@ public class RabbitMQConfig extends MqAutoConfiguration {
} }
/** /**
* 初始化跟踪日志队列
*/
@Bean
public Queue syslog() {
// 启动 lmax Disruptor
LogDisruptor.INSTANCE.start();
return new Queue(mqProperties.getTopic().getSyslog());
}
/**
* 初始化推送消息队列 * 初始化推送消息队列
*/ */
@Bean @Bean
......
...@@ -31,8 +31,6 @@ public class WebConfig extends WebServiceConfigurer { ...@@ -31,8 +31,6 @@ public class WebConfig extends WebServiceConfigurer {
registry.addInterceptor(ssoInterceptor).addPathPatterns("/**"); registry.addInterceptor(ssoInterceptor).addPathPatterns("/**");
// 表单重复提交拦截器 // 表单重复提交拦截器
// registry.addInterceptor(new RepeatFormInterceptor()).excludePathPatterns("/list"); // registry.addInterceptor(new RepeatFormInterceptor()).excludePathPatterns("/list");
// 注入跟踪访问日志
registry.addInterceptor(new LogInterceptor().setService("lims"));
} }
@Override @Override
......
...@@ -2,6 +2,8 @@ package com.patzn.cloud.service.lims.soil.controller; ...@@ -2,6 +2,8 @@ package com.patzn.cloud.service.lims.soil.controller;
import java.util.List; import java.util.List;
import com.baomidou.kisso.annotation.Action;
import com.baomidou.kisso.annotation.Login;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.soil.entity.SoilOriginalRecord; import com.patzn.cloud.service.soil.entity.SoilOriginalRecord;
import com.patzn.cloud.service.soil.vo.SoilOriginalRecordVO; import com.patzn.cloud.service.soil.vo.SoilOriginalRecordVO;
...@@ -123,4 +125,11 @@ public class SoilOriginalRecordController extends ServiceController { ...@@ -123,4 +125,11 @@ public class SoilOriginalRecordController extends ServiceController {
return success(soilOriginalRecordService.getExcelOriginalRecord(expId)); return success(soilOriginalRecordService.getExcelOriginalRecord(expId));
} }
@Login(action=Action.Skip)
@ApiOperation(value = "获取Excel原始记录", notes = "获取Excel原始记录")
@PostMapping("/get_balance_value")
public RestResult<String> getBalanceValue(@RequestParam("id")Long id,@RequestParam("location")String location) {
return success(soilOriginalRecordService.getBalanceValue(id,location));
}
} }
package com.patzn.cloud.service.lims.soil.controller;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplateBalance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.lims.soil.service.ISoilOriginalTemplateBalanceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* 天平配置表 前端控制器
*
* @author wwd
* @since 2021-03-16
*/
@Api(tags = "天平配置表")
@RestController
@RequestMapping("/v1/original_template_balance")
public class SoilOriginalTemplateBalanceController extends ServiceController {
@Autowired
private ISoilOriginalTemplateBalanceService soilOriginalTemplateBalanceService;
@ApiOperation("分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
})
@PostMapping("/page")
public RestResult<Page<SoilOriginalTemplateBalance>> getPage(SoilOriginalTemplateBalance soilOriginalTemplateBalance) {
return success(soilOriginalTemplateBalanceService.page(getPage(), soilOriginalTemplateBalance));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<SoilOriginalTemplateBalance> get(@PathVariable("id") Long id) {
return success(soilOriginalTemplateBalanceService.getById(id));
}
@ApiOperation("根据 id 修改信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, SoilOriginalTemplateBalance soilOriginalTemplateBalance) {
soilOriginalTemplateBalance.setId(id);
return success(soilOriginalTemplateBalanceService.updateById(soilOriginalTemplateBalance));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(SoilOriginalTemplateBalance soilOriginalTemplateBalance) {
return success(soilOriginalTemplateBalanceService.save(soilOriginalTemplateBalance));
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(soilOriginalTemplateBalanceService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplateBalance;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2021-03-16
*/
public interface SoilOriginalTemplateBalanceMapper extends BatchMapper<SoilOriginalTemplateBalance> {
}
...@@ -38,4 +38,6 @@ public interface ISoilOriginalRecordService extends IBaseService<SoilOriginalRec ...@@ -38,4 +38,6 @@ public interface ISoilOriginalRecordService extends IBaseService<SoilOriginalRec
SoilOriginalRecord uploadExpGenerate(Long[] ids, SoilOriginalTemplate template, SoilEntrust entrust, Account account, String remark, File file); SoilOriginalRecord uploadExpGenerate(Long[] ids, SoilOriginalTemplate template, SoilEntrust entrust, Account account, String remark, File file);
SoilOriginalRecord getExcelOriginalRecord(Long expId); SoilOriginalRecord getExcelOriginalRecord(Long expId);
String getBalanceValue(Long id,String location);
} }
package com.patzn.cloud.service.lims.soil.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplateBalance;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2021-03-16
*/
public interface ISoilOriginalTemplateBalanceService extends IBaseService<SoilOriginalTemplateBalance> {
Page<SoilOriginalTemplateBalance> page(Page<SoilOriginalTemplateBalance> page, SoilOriginalTemplateBalance soilOriginalTemplateBalance);
boolean removeByIds(List<Long> ids);
}
...@@ -3217,11 +3217,20 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap ...@@ -3217,11 +3217,20 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
try { try {
List<SoilExperimentCollectData> dataList= CollectUtil.txt2String(smbFile.getInputStream()); List<SoilExperimentCollectData> dataList= CollectUtil.txt2String(smbFile.getInputStream());
if (CollectionUtils.isNotEmpty(dataList)){ if (CollectionUtils.isNotEmpty(dataList)){
List<SoilItem> saveSoilItemList = new ArrayList<>(); List<SoilItem> saveSoilItemList = new ArrayList<>();
List<SoilItem> updateSoilItemList = new ArrayList<>();
String testMethod = null; String testMethod = null;
List<SoilItem> soilItems = soilItemService.list(Condition.create().eq("experiment_id",request.getExpId()));
Map<String,SoilItem> soilItemMap = new HashMap<>();
for (SoilItem item : soilItems) {
soilItemMap.put(item.getExperimentId()+item.getName(),item);
}
for (SoilExperimentCollectData collectData:dataList) { for (SoilExperimentCollectData collectData:dataList) {
collectData.setEquipName(request.getEquipName()); collectData.setEquipName(request.getEquipName());
collectData.setLabNum(request.getLabNum()); collectData.setLabNum(request.getLabNum());
...@@ -3243,12 +3252,21 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap ...@@ -3243,12 +3252,21 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
item.setTestValue(collectData.getTestValue()); item.setTestValue(collectData.getTestValue());
item.setExperimentId(request.getExpId()); item.setExperimentId(request.getExpId());
item.setUnit(collectData.getUnit()); item.setUnit(collectData.getUnit());
if (null==soilItemMap.get(item.getExperimentId()+item.getName())){
saveSoilItemList.add(item); saveSoilItemList.add(item);
}else{
updateSoilItemList.add(item);
}
} }
if (CollectionUtils.isNotEmpty(saveSoilItemList)){ if (CollectionUtils.isNotEmpty(saveSoilItemList)){
soilItemService.saveBatch(saveSoilItemList); soilItemService.saveBatch(saveSoilItemList);
} }
if (CollectionUtils.isNotEmpty(updateSoilItemList)){
soilItemService.updateBatchById(updateSoilItemList);
}
if (StringUtils.isNotBlank(testMethod)){ if (StringUtils.isNotBlank(testMethod)){
SoilExperiment experiment = new SoilExperiment(); SoilExperiment experiment = new SoilExperiment();
experiment.setTestMethod(testMethod); experiment.setTestMethod(testMethod);
......
...@@ -15,11 +15,9 @@ import com.patzn.cloud.oss.starter.OssClient; ...@@ -15,11 +15,9 @@ import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult; import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.eln.entity.ElnForm; import com.patzn.cloud.service.eln.entity.ElnForm;
import com.patzn.cloud.service.eln.entity.ElnTemplate; import com.patzn.cloud.service.eln.entity.ElnTemplate;
import com.patzn.cloud.service.lims.common.SerialTool;
import com.patzn.cloud.service.lims.soil.mapper.SoilOriginalRecordMapper; import com.patzn.cloud.service.lims.soil.mapper.SoilOriginalRecordMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilExpRelOriginalRecordService; import com.patzn.cloud.service.lims.soil.service.*;
import com.patzn.cloud.service.lims.soil.service.ISoilExperimentService;
import com.patzn.cloud.service.lims.soil.service.ISoilItemService;
import com.patzn.cloud.service.lims.soil.service.ISoilOriginalRecordService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.*; import com.patzn.cloud.service.soil.entity.*;
import com.patzn.cloud.service.soil.vo.SoilOriginalRecordVO; import com.patzn.cloud.service.soil.vo.SoilOriginalRecordVO;
...@@ -54,6 +52,18 @@ public class SoilOriginalRecordServiceImpl extends BaseServiceImpl<SoilOriginalR ...@@ -54,6 +52,18 @@ public class SoilOriginalRecordServiceImpl extends BaseServiceImpl<SoilOriginalR
@Autowired @Autowired
private ISoilExpRelOriginalRecordService soilExpRelOriginalRecordService; private ISoilExpRelOriginalRecordService soilExpRelOriginalRecordService;
@Autowired
private ISoilOriginalTemplateService soilOriginalTemplateService;
@Autowired
private ISoilOriginalTemplateConfigService soilOriginalTemplateConfigService;
@Autowired
private ISoilOriginalTemplateBalanceService soilOriginalTemplateBalanceService;
@Autowired @Autowired
private ISoilItemService soilItemService; private ISoilItemService soilItemService;
...@@ -201,4 +211,123 @@ public class SoilOriginalRecordServiceImpl extends BaseServiceImpl<SoilOriginalR ...@@ -201,4 +211,123 @@ public class SoilOriginalRecordServiceImpl extends BaseServiceImpl<SoilOriginalR
} }
return getById(recordList.get(0).getRecordId()); return getById(recordList.get(0).getRecordId());
} }
public String getABC(String str){
return str.replaceAll("\\s*","").replaceAll("[^(A-Za-z)]","");
}
public String get123(String str){
return str.replaceAll("\\s*","").replaceAll("[^(0-9)]","");
}
@Override
public String getBalanceValue(Long id,String location) {
if ("$A$1".equals(location)){
return "";
}
location = location.replace("$","");
String columnLabel = getABC(location);
Integer rowLabel = new Integer(get123(location)) ;
SoilOriginalRecord record = getById(id);
if (null !=record){
Long templateId = record.getTemplateId();
if (null == templateId){
return "";
}
SoilOriginalTemplate template = soilOriginalTemplateService.getById(templateId);
Integer integer = template.getSampleBeginRow();
if (null == integer){
return "";
}
if (null == template){
return "";
}
List<SoilOriginalTemplateConfig> configList = soilOriginalTemplateConfigService.list(Condition.create().
eq("template_id",templateId).isNotNull("column_place").eq("clicked",1));
if (CollectionUtils.isEmpty(configList)){
return "";
}
List<String> columNameList = new ArrayList<>();
for (SoilOriginalTemplateConfig config : configList) {
if (0==config.getColumnPlace()){
columNameList.add("A");
}else if (1==config.getColumnPlace()){
columNameList.add("B");
}else if (2==config.getColumnPlace()){
columNameList.add("C");
}else if (3==config.getColumnPlace()){
columNameList.add("D");
}else if (4==config.getColumnPlace()){
columNameList.add("E");
}else if (5==config.getColumnPlace()){
columNameList.add("F");
}else if (6==config.getColumnPlace()){
columNameList.add("G");
}else if (7==config.getColumnPlace()){
columNameList.add("H");
}else if (8==config.getColumnPlace()){
columNameList.add("I");
}else if (9==config.getColumnPlace()){
columNameList.add("J");
}else if (10==config.getColumnPlace()){
columNameList.add("K");
}else if (11==config.getColumnPlace()){
columNameList.add("L");
}else if (12==config.getColumnPlace()){
columNameList.add("M");
}else if (13==config.getColumnPlace()){
columNameList.add("N");
}else if (14==config.getColumnPlace()){
columNameList.add("O");
}else if (15==config.getColumnPlace()){
columNameList.add("P");
}else if (16==config.getColumnPlace()){
columNameList.add("Q");
}else if (17==config.getColumnPlace()){
columNameList.add("R");
}else if (18==config.getColumnPlace()){
columNameList.add("S");
}else if (19==config.getColumnPlace()){
columNameList.add("T");
}else if (20==config.getColumnPlace()){
columNameList.add("U");
}else if (21==config.getColumnPlace()){
columNameList.add("V");
}else if (22==config.getColumnPlace()){
columNameList.add("W");
}else if (23==config.getColumnPlace()){
columNameList.add("X");
}else if (24==config.getColumnPlace()){
columNameList.add("Y");
}else if (25==config.getColumnPlace()){
columNameList.add("Z");
}
}
if (!columNameList.contains(columnLabel)){
return "";
}
if (rowLabel<(integer+1)){
return "";
}
List<SoilOriginalTemplateBalance> balanceList = soilOriginalTemplateBalanceService.list(Condition.create().eq("template_id",templateId).orderBy("itemed",false));
for (SoilOriginalTemplateBalance balance : balanceList) {
String value = SerialTool.getBalanceValue(balance.getComName(),balance.getBaudRate(),balance.getCommand());
if (StringUtils.isNotBlank(value)){
return value;
}
}
return "";
}
return "";
}
} }
package com.patzn.cloud.service.lims.soil.service.impl;
import com.patzn.cloud.service.lims.soil.mapper.SoilOriginalTemplateBalanceMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilOriginalTemplateBalanceService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.entity.SoilOriginalTemplateBalance;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import java.util.List;
/**
* 服务实现类
*
* @author wwd
* @since 2021-03-16
*/
@Service
public class SoilOriginalTemplateBalanceServiceImpl extends BaseServiceImpl<SoilOriginalTemplateBalanceMapper, SoilOriginalTemplateBalance> implements ISoilOriginalTemplateBalanceService {
@Override
public Page<SoilOriginalTemplateBalance> page(Page<SoilOriginalTemplateBalance> page, SoilOriginalTemplateBalance soilOriginalTemplateBalance) {
Wrapper wrapper = new EntityWrapper<>(soilOriginalTemplateBalance);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
...@@ -236,6 +236,8 @@ ...@@ -236,6 +236,8 @@
WHERE e.deleted = 0 WHERE e.deleted = 0
<include refid="sqlWhere"/> <include refid="sqlWhere"/>
ORDER BY e.ctime DESC
</select> </select>
...@@ -322,6 +324,7 @@ ...@@ -322,6 +324,7 @@
JOIN soil_entrust e ON t.entrust_id = e.id JOIN soil_entrust e ON t.entrust_id = e.id
WHERE e.deleted = 0 WHERE e.deleted = 0
<include refid="sqlWhere"/> <include refid="sqlWhere"/>
ORDER BY e.ctime DESC
</select> </select>
...@@ -342,6 +345,7 @@ ...@@ -342,6 +345,7 @@
JOIN soil_entrust e ON t.entrust_id = e.id JOIN soil_entrust e ON t.entrust_id = e.id
WHERE e.deleted = 0 WHERE e.deleted = 0
<include refid="sqlWhere"/> <include refid="sqlWhere"/>
ORDER BY e.ctime DESC
</select> </select>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.soil.mapper.SoilOriginalTemplateBalanceMapper">
</mapper>
CREATE TABLE "public"."soil_original_template_balance" (
CREATE TABLE "public"."soil_original_template_balance" (
"id" int8 NOT NULL DEFAULT NULL,
"name" varchar(150) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"ip_address" varchar(150) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"com_name" varchar(16) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"baudRate" int2 DEFAULT NULL,
"company_id" int8 DEFAULT NULL,
"deleted" int2 DEFAULT 0,
"uid" int8 DEFAULT NULL,
"ctime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"lid" int8 DEFAULT NULL,
"ltime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"command" varchar(150) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"itemed" int2 DEFAULT NULL,
"template_id" int8 DEFAULT NULL
)
;
COMMENT ON COLUMN "public"."soil_original_template_balance"."id" IS '主键';
COMMENT ON COLUMN "public"."soil_original_template_balance"."name" IS '天平名称';
COMMENT ON COLUMN "public"."soil_original_template_balance"."ip_address" IS 'IP地址';
COMMENT ON COLUMN "public"."soil_original_template_balance"."com_name" IS '串口名称';
COMMENT ON COLUMN "public"."soil_original_template_balance"."baudRate" IS '波特率';
COMMENT ON COLUMN "public"."soil_original_template_balance"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."soil_original_template_balance"."deleted" IS '是否删除0否1是';
COMMENT ON COLUMN "public"."soil_original_template_balance"."uid" IS '创建人ID';
COMMENT ON COLUMN "public"."soil_original_template_balance"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."soil_original_template_balance"."lid" IS '最后修改人ID';
COMMENT ON COLUMN "public"."soil_original_template_balance"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."soil_original_template_balance"."command" IS '采集命令';
COMMENT ON COLUMN "public"."soil_original_template_balance"."itemed" IS '是否是首选天平';
COMMENT ON COLUMN "public"."soil_original_template_balance"."template_id" IS '原始记录ID';
ALTER TABLE "public"."soil_original_template_config"
ADD COLUMN "clicked" int2 DEFAULT 0;
COMMENT ON COLUMN "public"."soil_original_template_config"."clicked" IS '是否需要点击天平';
\ 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