Browse Source

20210308v1.1

recovery
zy_Java 4 years ago
parent
commit
3b59e9a5a9
  1. 2
      beneficiation/src/main/java/com/ccsens/beneficiation/api/ParameterController.java
  2. 2
      beneficiation/src/main/java/com/ccsens/beneficiation/bean/dto/ParameterDto.java
  3. 7
      beneficiation/src/main/java/com/ccsens/beneficiation/service/IMessageService.java
  4. 3
      beneficiation/src/main/java/com/ccsens/beneficiation/service/IParameterService.java
  5. 28
      beneficiation/src/main/java/com/ccsens/beneficiation/service/MessageService.java
  6. 183
      beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java
  7. 56
      beneficiation/src/main/java/com/ccsens/beneficiation/util/Constant.java
  8. 4
      beneficiation/src/main/resources/application.yml
  9. 2
      tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java

2
beneficiation/src/main/java/com/ccsens/beneficiation/api/ParameterController.java

@ -44,7 +44,7 @@ public class ParameterController {
@MustLogin
@ApiOperation(value = "修改设备的参数", notes = "")
@RequestMapping(value = "/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateParameter(@ApiParam @Validated @RequestBody QueryDto<ParameterDto.ParameterInfo> params) {
public JsonResponse updateParameter(@ApiParam @Validated @RequestBody QueryDto<ParameterDto.ParameterInfo> params) throws Exception {
log.info("修改设备的参数:{}",params);
parameterService.updateParameter(params.getParam());
log.info("修改设备的参数成功");

2
beneficiation/src/main/java/com/ccsens/beneficiation/bean/dto/ParameterDto.java

@ -62,7 +62,7 @@ public class ParameterDto {
public static class Threshold{
@ApiModelProperty("最小")
private BigDecimal minValue;
@ApiModelProperty("最")
@ApiModelProperty("最")
private BigDecimal maxValue;
}

7
beneficiation/src/main/java/com/ccsens/beneficiation/service/IMessageService.java

@ -0,0 +1,7 @@
package com.ccsens.beneficiation.service;
import com.ccsens.util.bean.message.common.InMessage;
public interface IMessageService {
void sendToCarRecord(InMessage inMessage) throws Exception;
}

3
beneficiation/src/main/java/com/ccsens/beneficiation/service/IParameterService.java

@ -2,6 +2,7 @@ package com.ccsens.beneficiation.service;
import com.ccsens.beneficiation.bean.dto.ParameterDto;
import com.ccsens.beneficiation.bean.vo.ParameterVo;
import com.fasterxml.jackson.core.JsonProcessingException;
/**
* @author
@ -18,5 +19,5 @@ public interface IParameterService {
* 修改一起的参数
* @param param 参数
*/
void updateParameter(ParameterDto.ParameterInfo param);
void updateParameter(ParameterDto.ParameterInfo param) throws JsonProcessingException, Exception;
}

28
beneficiation/src/main/java/com/ccsens/beneficiation/service/MessageService.java

@ -0,0 +1,28 @@
package com.ccsens.beneficiation.service;
import com.ccsens.util.JacksonUtil;
import com.ccsens.util.bean.message.common.InMessage;
import com.ccsens.util.config.RabbitMQConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class MessageService implements IMessageService{
@Autowired
private AmqpTemplate rabbitTemplate;
@Override
public void sendToCarRecord(InMessage inMessage) throws Exception{
// log.info(JacksonUtil.beanToJson(inMessage));
//FixMe 发送到消息队列
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
log.info("发送到消息队列:{}",JacksonUtil.beanToJson(inMessage));
}
}

183
beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java

@ -8,16 +8,18 @@ import com.ccsens.beneficiation.bean.po.EquipmentTypeExample;
import com.ccsens.beneficiation.bean.vo.ParameterVo;
import com.ccsens.beneficiation.persist.dao.RecordDao;
import com.ccsens.beneficiation.persist.mapper.EquipmentTypeMapper;
import com.ccsens.beneficiation.util.Constant;
import com.ccsens.util.CRCUtil;
import com.ccsens.util.bean.message.common.InMessage;
import com.ccsens.util.bean.message.common.MessageConstant;
import com.ccsens.util.bean.message.common.MessageRule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
* @author
@ -30,6 +32,8 @@ public class ParameterService implements IParameterService{
private RecordDao recordDao;
@Resource
private EquipmentTypeMapper equipmentTypeMapper;
@Resource
private IMessageService messageService;
@Override
public ParameterVo.QueryParameter queryParameter(Object param) {
@ -94,72 +98,137 @@ public class ParameterService implements IParameterService{
}
@Override
public void updateParameter(ParameterDto.ParameterInfo param) {
public void updateParameter(ParameterDto.ParameterInfo param) throws Exception {
if(ObjectUtil.isNull(param)){
return;
}
byte[] header = new byte[]{(byte)0xff,(byte)0xfe,(byte)0x00};
//电磁阀1
ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
if(ObjectUtil.isNotNull(solenoidValue1)){
if(ObjectUtil.isNotNull(solenoidValue1.getSettingValue())){
//根据id和数据类型 查找该设备的addr 设置值是1
EquipmentTypeExample equipmentTypeExample = new EquipmentTypeExample();
equipmentTypeExample.createCriteria().andEquipmentIdEqualTo(solenoidValue1.getId()).andTypeEqualTo((byte) 1);
List<EquipmentType> equipmentTypes = equipmentTypeMapper.selectByExample(equipmentTypeExample);
if(CollectionUtil.isNotEmpty(equipmentTypes)){
EquipmentType equipmentType = equipmentTypes.get(0);
//计算value的高低值
byte uc1 = (byte) (solenoidValue1.getSettingValue().intValue() >> 8);
byte uc2 = (byte) (solenoidValue1.getSettingValue().intValue() & 0xff);
//计算addr的高低值
byte addr1 = (byte) (equipmentType.getAddr() >> 8);
byte addr2 = (byte) (equipmentType.getAddr() & 0xff);
//TODO 长度未处理 传感器地址未处理
byte[] center = new byte[]{(byte)0x00,(byte)0x06,addr1,addr2,uc1,uc2};
byte[] crc = new byte[2];
CRCUtil.crc16(crc,center,0,center.length);
byte[] all = new byte[header.length + center.length + crc.length];
System.arraycopy(header,0,all,0,header.length);
System.arraycopy(center,0,all,header.length,center.length);
System.arraycopy(crc,0,all,header.length + center.length,crc.length);
all[2] = (byte) (all.length - 3);
transducer(solenoidValue1);
//电磁阀2
ParameterDto.Parameter solenoidValue2 = param.getSolenoidValue2();
transducer(solenoidValue2);
//变频器1
ParameterDto.Parameter transducer1 = param.getTransducer1();
transducer(transducer1);
//变频器2
ParameterDto.Parameter transducer2 = param.getTransducer1();
transducer(transducer2);
//变频器3
ParameterDto.Parameter transducer3 = param.getTransducer1();
transducer(transducer3);
//变频器4
ParameterDto.Parameter transducer4 = param.getTransducer1();
transducer(transducer4);
//电耳1
ParameterDto.ParameterThreshold electricEar1 = param.getElectricEar1();
electric(electricEar1);
//电耳2
ParameterDto.ParameterThreshold electricEar2 = param.getElectricEar2();
electric(electricEar2);
}
private void transducer(ParameterDto.Parameter transducer3) throws Exception {
if (ObjectUtil.isNotNull(transducer3)) {
if (ObjectUtil.isNotNull(transducer3.getSettingValue())) {
getBytes(transducer3.getId(), transducer3.getSettingValue().intValue(), Constant.Type.SET_VALUE);
}
}
}
private void electric(ParameterDto.ParameterThreshold electricEar) throws Exception {
if (ObjectUtil.isNotNull(electricEar)) {
//最低值
if (ObjectUtil.isNotNull(electricEar.getThresholdValue1())) {
ParameterDto.Threshold threshold = electricEar.getThresholdValue1();
//低
if (ObjectUtil.isNotNull(threshold.getMinValue())) {
getBytes(electricEar.getId(), threshold.getMinValue().intValue(), Constant.Type.MINIMUM_VALUE_MIN);
}
//高
if (ObjectUtil.isNotNull(threshold.getMaxValue())) {
getBytes(electricEar.getId(), threshold.getMaxValue().intValue(), Constant.Type.MINIMUM_VALUE_MAX);
}
}
//理想值
if (ObjectUtil.isNotNull(electricEar.getThresholdValue2())) {
ParameterDto.Threshold threshold = electricEar.getThresholdValue2();
//低
if (ObjectUtil.isNotNull(threshold.getMinValue())) {
getBytes(electricEar.getId(), threshold.getMinValue().intValue(), Constant.Type.MINIMUM_VALUE_MIN);
}
//高
if (ObjectUtil.isNotNull(threshold.getMaxValue())) {
getBytes(electricEar.getId(), threshold.getMaxValue().intValue(), Constant.Type.MINIMUM_VALUE_MAX);
}
}
//最高值
if (ObjectUtil.isNotNull(electricEar.getThresholdValue3())) {
ParameterDto.Threshold threshold = electricEar.getThresholdValue3();
//低
if (ObjectUtil.isNotNull(threshold.getMinValue())) {
getBytes(electricEar.getId(), threshold.getMinValue().intValue(), Constant.Type.MINIMUM_VALUE_MIN);
}
//高
if (ObjectUtil.isNotNull(threshold.getMaxValue())) {
getBytes(electricEar.getId(), threshold.getMaxValue().intValue(), Constant.Type.MINIMUM_VALUE_MAX);
}
}
}
// //电磁阀1
// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// if(ObjectUtil.isNotNull(solenoidValue1)){
//
// }
// //电磁阀1
// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// if(ObjectUtil.isNotNull(solenoidValue1)){
//
// }
// //电磁阀1
// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// if(ObjectUtil.isNotNull(solenoidValue1)){
//
// }
// //电磁阀1
// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// if(ObjectUtil.isNotNull(solenoidValue1)){
//
// }
// //电磁阀1
// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// if(ObjectUtil.isNotNull(solenoidValue1)){
//
// }
//生成数组
}
/**
* 获取设置值的byte数组 并发送消息
*/
private void getBytes(Long id, int value,byte type) throws Exception {
//根据id和数据类型 查找该设备的addr 设置值是1
EquipmentTypeExample equipmentTypeExample = new EquipmentTypeExample();
equipmentTypeExample.createCriteria().andEquipmentIdEqualTo(id).andTypeEqualTo(type);
List<EquipmentType> equipmentTypes = equipmentTypeMapper.selectByExample(equipmentTypeExample);
if(CollectionUtil.isNotEmpty(equipmentTypes)){
EquipmentType equipmentType = equipmentTypes.get(0);
log.info("查找设备配置信息:{}",equipmentType);
byte[] header = new byte[]{(byte)0xff,(byte)0xfe,(byte)0x00};
byte uc1 = (byte) (value >> 8);
byte uc2 = (byte) (value & 0xff);
log.info("计算value的高低值:{}---{}",uc1,uc2);
byte addr1 = (byte) (equipmentType.getAddr() >> 8);
byte addr2 = (byte) (equipmentType.getAddr() & 0xff);
log.info("计算addr的高低值:{}---{}",addr1,addr2);
byte[] center = new byte[]{(byte)0x10,(byte)0x06,addr1,addr2,uc1,uc2};
byte[] crc = new byte[2];
CRCUtil.crc16(crc,center,0,center.length);
log.info("计算crc校验:{}---{}",crc[0],crc[1]);
byte[] all = new byte[header.length + center.length + crc.length];
System.arraycopy(header,0,all,0,header.length);
System.arraycopy(center,0,all,header.length,center.length);
System.arraycopy(crc,0,all,header.length + center.length,crc.length);
all[2] = (byte) (all.length - 3);
sendInMessage(all);
}
}
/**
* 生成InMessage消息并发送
*/
private void sendInMessage(byte[] all) throws Exception {
Set<String> userIdSet = new HashSet<>();
userIdSet.add(String.valueOf(2));
MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User);
messageRule.setAckRule(MessageRule.AckRule.NONE);
messageRule.setOfflineDiscard((byte) 1);
String s = Arrays.toString(all);
InMessage inMessage = InMessage.newToUserMessage(null,userIdSet,null,messageRule,s);
//发送消息
messageService.sendToCarRecord(inMessage);
}
}

56
beneficiation/src/main/java/com/ccsens/beneficiation/util/Constant.java

@ -0,0 +1,56 @@
package com.ccsens.beneficiation.util;
/**
* @author
*/
public class Constant {
/**注册来源*/
public static final class Type {
/**
* 实时值
*/
public final static byte REAL_VALUE = 0;
/**
* 设置值
*/
public final static byte SET_VALUE = 1;
/**
* 累计值
*/
public final static byte AGGREGATE_VALUE = 2;
/**
* 最低值
*/
public final static byte MINIMUM_VALUE_MIN = 3;
/**
* 最低值
*/
public final static byte MINIMUM_VALUE_MAX = 8;
/**
* 理想值
*/
public final static byte IDEAL_VALUE_MIN = 4;
/**
* 理想值
*/
public final static byte IDEAL_VALUE_MAX = 9;
/**
* 最高值
*/
public final static byte MAXIMUM_VALUE_MIN = 5;
/**
* 最高值
*/
public final static byte MAXIMUM_VALUE_MAX = 10;
/**
* 迟滞
*/
public final static byte HYSTERESIS = 6;
/**
* 迟滞
*/
public final static byte OTHER = 7;
}
}

4
beneficiation/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring:
profiles:
active: dev
include: common, util-dev
active: test
include: common, util-test

2
tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java

@ -53,7 +53,7 @@ public class QuestionService implements IQuestionService{
if(CollectionUtil.isNotEmpty(patientCode.getSubReportCodes())){
patientCode.getSubReportCodes().forEach(subReportCode -> {
//查询二级code下的试题和答案
List<QuestionVo.PatientQuestion> subpatientQuestionNumList = questionDao.getQuestionByCodeAndPatientId(patientCode.getCode(),param.getId(),param.getNums());
List<QuestionVo.PatientQuestion> subpatientQuestionNumList = questionDao.getQuestionByCodeAndPatientId(subReportCode.getCode(),param.getId(),param.getNums());
//查询选项关联的试题及答案
if(CollectionUtil.isNotEmpty(subpatientQuestionNumList)){
subpatientQuestionNumList.forEach(question -> {

Loading…
Cancel
Save