From 3b59e9a5a98dc08b548fa3fbc472da54b1bef831 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Mon, 8 Mar 2021 16:57:56 +0800 Subject: [PATCH] 20210308v1.1 --- .../api/ParameterController.java | 2 +- .../beneficiation/bean/dto/ParameterDto.java | 2 +- .../service/IMessageService.java | 7 + .../service/IParameterService.java | 3 +- .../beneficiation/service/MessageService.java | 28 +++ .../service/ParameterService.java | 183 ++++++++++++------ .../ccsens/beneficiation/util/Constant.java | 56 ++++++ .../src/main/resources/application.yml | 4 +- .../ccsens/tcm/service/QuestionService.java | 2 +- 9 files changed, 224 insertions(+), 63 deletions(-) create mode 100644 beneficiation/src/main/java/com/ccsens/beneficiation/service/IMessageService.java create mode 100644 beneficiation/src/main/java/com/ccsens/beneficiation/service/MessageService.java create mode 100644 beneficiation/src/main/java/com/ccsens/beneficiation/util/Constant.java diff --git a/beneficiation/src/main/java/com/ccsens/beneficiation/api/ParameterController.java b/beneficiation/src/main/java/com/ccsens/beneficiation/api/ParameterController.java index ddbf4a7c..7e4f53df 100644 --- a/beneficiation/src/main/java/com/ccsens/beneficiation/api/ParameterController.java +++ b/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 params) { + public JsonResponse updateParameter(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { log.info("修改设备的参数:{}",params); parameterService.updateParameter(params.getParam()); log.info("修改设备的参数成功"); diff --git a/beneficiation/src/main/java/com/ccsens/beneficiation/bean/dto/ParameterDto.java b/beneficiation/src/main/java/com/ccsens/beneficiation/bean/dto/ParameterDto.java index 08bf6857..049aefe8 100644 --- a/beneficiation/src/main/java/com/ccsens/beneficiation/bean/dto/ParameterDto.java +++ b/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; } diff --git a/beneficiation/src/main/java/com/ccsens/beneficiation/service/IMessageService.java b/beneficiation/src/main/java/com/ccsens/beneficiation/service/IMessageService.java new file mode 100644 index 00000000..aa1fb5ef --- /dev/null +++ b/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; +} diff --git a/beneficiation/src/main/java/com/ccsens/beneficiation/service/IParameterService.java b/beneficiation/src/main/java/com/ccsens/beneficiation/service/IParameterService.java index 86e54bbc..e09e03f6 100644 --- a/beneficiation/src/main/java/com/ccsens/beneficiation/service/IParameterService.java +++ b/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; } diff --git a/beneficiation/src/main/java/com/ccsens/beneficiation/service/MessageService.java b/beneficiation/src/main/java/com/ccsens/beneficiation/service/MessageService.java new file mode 100644 index 00000000..0e76faeb --- /dev/null +++ b/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)); + } +} diff --git a/beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java b/beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java index 834ea1c5..7c1cf23d 100644 --- a/beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java +++ b/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 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 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 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); } } diff --git a/beneficiation/src/main/java/com/ccsens/beneficiation/util/Constant.java b/beneficiation/src/main/java/com/ccsens/beneficiation/util/Constant.java new file mode 100644 index 00000000..aab22896 --- /dev/null +++ b/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; + } + +} diff --git a/beneficiation/src/main/resources/application.yml b/beneficiation/src/main/resources/application.yml index a47f2a7b..ac92adb9 100644 --- a/beneficiation/src/main/resources/application.yml +++ b/beneficiation/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: dev - include: common, util-dev + active: test + include: common, util-test diff --git a/tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java b/tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java index f76bbedd..b4c9c858 100644 --- a/tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java +++ b/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 subpatientQuestionNumList = questionDao.getQuestionByCodeAndPatientId(patientCode.getCode(),param.getId(),param.getNums()); + List subpatientQuestionNumList = questionDao.getQuestionByCodeAndPatientId(subReportCode.getCode(),param.getId(),param.getNums()); //查询选项关联的试题及答案 if(CollectionUtil.isNotEmpty(subpatientQuestionNumList)){ subpatientQuestionNumList.forEach(question -> {