Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

recovery
zhizhi wu 4 years ago
parent
commit
db42c21739
  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. 220
      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/bean/dto/PatientDto.java
  10. 58
      tcm/src/main/java/com/ccsens/tcm/service/PatientService.java
  11. 2
      tcm/src/main/java/com/ccsens/tcm/service/QuestionService.java
  12. 4
      tcm/src/main/resources/application.yml
  13. 20
      tcm/src/main/resources/mapper_dao/QuestionDao.xml
  14. 46
      util/src/main/java/com/ccsens/util/CRCUtil.java
  15. 1
      util/src/main/java/com/ccsens/util/CodeEnum.java
  16. 13
      util/src/test/java/com/ccsens/util/OtherTest.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));
}
}

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

@ -3,17 +3,23 @@ package com.ccsens.beneficiation.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.beneficiation.bean.dto.ParameterDto;
import com.ccsens.beneficiation.bean.po.EquipmentType;
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
@ -24,6 +30,10 @@ import java.util.List;
public class ParameterService implements IParameterService{
@Resource
private RecordDao recordDao;
@Resource
private EquipmentTypeMapper equipmentTypeMapper;
@Resource
private IMessageService messageService;
@Override
public ParameterVo.QueryParameter queryParameter(Object param) {
@ -84,83 +94,141 @@ public class ParameterService implements IParameterService{
}
parameterInfo.setParameter(parameters);
//
// List<ParameterVo.TransducerValue> transducerValues = new ArrayList<>();
// ParameterVo.TransducerValue transducer1 = new ParameterVo.TransducerValue(6L,"transducer1","实时/设置1", BigDecimal.valueOf(45));
// ParameterVo.TransducerValue transducer2 = new ParameterVo.TransducerValue(7L,"transducer2","实时/设置2", BigDecimal.valueOf(8));
// ParameterVo.TransducerValue transducer3 = new ParameterVo.TransducerValue(8L,"transducer3","实时/设置3", BigDecimal.valueOf(67));
// ParameterVo.TransducerValue transducer4 = new ParameterVo.TransducerValue(10L,"transducer4","实时/设置4", BigDecimal.valueOf(75));
// transducerValues.add(transducer1);
// transducerValues.add(transducer2);
// transducerValues.add(transducer3);
// transducerValues.add(transducer4);
//
// List<ParameterVo.Transducer> transducers = new ArrayList<>();
// ParameterVo.Transducer transducer = new ParameterVo.Transducer();
// transducer.setTitle("变频器");
// transducer.setValues(transducerValues);
// transducers.add(transducer);
//
// List<ParameterVo.TransducerValue> transducerValues1 = new ArrayList<>();
// ParameterVo.TransducerValue transducer11 = new ParameterVo.TransducerValue(6L,"solenoidValue1","实时/设置1", BigDecimal.valueOf(45));
// ParameterVo.TransducerValue transducer21 = new ParameterVo.TransducerValue(7L,"solenoidValue2","实时/设置2", BigDecimal.valueOf(8));
// transducerValues1.add(transducer11);
// transducerValues1.add(transducer21);
//
// ParameterVo.Transducer transducer12 = new ParameterVo.Transducer();
// transducer12.setTitle("电磁阀");
// transducer12.setValues(transducerValues1);
// transducers.add(transducer12);
//
// parameterInfo.setTransducers(transducers);
//
//
// List<ParameterVo.BeltWeigher> beltWeighers1 = new ArrayList<>();
// ParameterVo.BeltWeigher beltWeigher1 = new ParameterVo.BeltWeigher();
// beltWeigher1.setTitle("皮带秤");
// List<ParameterVo.BeltWeigherValue> beltWeigherValueList1 = new ArrayList<>();
// ParameterVo.BeltWeigherValue beltWeigher01 = new ParameterVo.BeltWeigherValue(1L,"实时/累计", BigDecimal.valueOf(12),BigDecimal.valueOf(1212));
// beltWeigherValueList1.add(beltWeigher01);
// beltWeigher1.setValues(beltWeigherValueList1);
// beltWeighers1.add(beltWeigher1);
//
//
// ParameterVo.BeltWeigher beltWeigher2 = new ParameterVo.BeltWeigher();
// beltWeigher2.setTitle("流量计");
// List<ParameterVo.BeltWeigherValue> beltWeigherValueList2 = new ArrayList<>();
// ParameterVo.BeltWeigherValue beltWeigher02 = new ParameterVo.BeltWeigherValue(2L,"实时/累计", BigDecimal.valueOf(16),BigDecimal.valueOf(1524));
// ParameterVo.BeltWeigherValue beltWeigher03 = new ParameterVo.BeltWeigherValue(3L,"实时/累计", BigDecimal.valueOf(5),BigDecimal.valueOf(232));
// beltWeigherValueList2.add(beltWeigher02);
// beltWeigherValueList2.add(beltWeigher03);
// beltWeigher2.setValues(beltWeigherValueList2);
// beltWeighers1.add(beltWeigher2);
// parameterInfo.setBeltWeigher(beltWeighers1);
//
// List<ParameterVo.Parameter> parameters = new ArrayList<>();
// ParameterVo.Parameter parameter = new ParameterVo.Parameter();
// parameter.setTitle("电耳");
// List<ParameterVo.ParameterThreshold> parameterThresholds = new ArrayList<>();
//
// ParameterVo.ParameterThreshold parameterThreshold1 = new ParameterVo.ParameterThreshold(11L,"electricEar1","实时",BigDecimal.valueOf(60),
// new ParameterVo.ThresholdValue(1L,"thresholdValue1","阀值1",BigDecimal.valueOf(20),BigDecimal.valueOf(60)),
// new ParameterVo.ThresholdValue(2L,"thresholdValue2","阀值2",BigDecimal.valueOf(30),BigDecimal.valueOf(70)),
// new ParameterVo.ThresholdValue(3L,"thresholdValue3","阀值3",BigDecimal.valueOf(40),BigDecimal.valueOf(80)));
//
// ParameterVo.ParameterThreshold parameterThreshold2 = new ParameterVo.ParameterThreshold(12L,"electricEar1","实时",BigDecimal.valueOf(65),
// new ParameterVo.ThresholdValue(4L,"thresholdValue1","阀值1",BigDecimal.valueOf(30),BigDecimal.valueOf(70)),
// new ParameterVo.ThresholdValue(5L,"thresholdValue2","阀值2",BigDecimal.valueOf(40),BigDecimal.valueOf(80)),
// new ParameterVo.ThresholdValue(6L,"thresholdValue3","阀值3",BigDecimal.valueOf(50),BigDecimal.valueOf(90)));
// parameterThresholds.add(parameterThreshold1);
// parameterThresholds.add(parameterThreshold2);
// parameter.setValues(parameterThresholds);
// parameters.add(parameter);
// parameterInfo.setParameter(parameters);
return parameterInfo;
}
@Override
public void updateParameter(ParameterDto.ParameterInfo param) {
public void updateParameter(ParameterDto.ParameterInfo param) throws Exception {
if(ObjectUtil.isNull(param)){
return;
}
//电磁阀1
ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
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);
}
}
}
}
/**
* 获取设置值的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/bean/dto/PatientDto.java

@ -47,7 +47,6 @@ public class PatientDto {
@ApiModelProperty("每页数量")
private Integer pageSize=10;
}
@Data
@ApiModel("保存患者的多个病例信息")
public static class saveCaseMes {
@ -59,6 +58,7 @@ public class PatientDto {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
@ApiModelProperty("诊断时间")
private Date timeSlot=new Date(System.currentTimeMillis());
@NotNull
@ApiModelProperty("保存天数")
private Integer nums;
}

58
tcm/src/main/java/com/ccsens/tcm/service/PatientService.java

@ -107,30 +107,50 @@ public class PatientService implements IPatientService {
@Override
public void saveCaseMes(PatientDto.saveCaseMes param, Long userId) {
if(param.getList().size()==0){
throw new BaseException(CodeEnum.QINGTIJIAOSHITI);
}
//拿到这个患者的基本信息
PatientInformation patientInformation = patientInformationMapper.selectByPrimaryKey(param.getPatientId());
//处理过的答案信息集合
List<PatientRecord> patientRecordList1=new ArrayList<PatientRecord>();
//处理过的提交的试题id集合
//处理过的提交的答案试题id,答案类型为0,1 集合
Set<Long> longSet=new HashSet<Long>();
//处理过的提交的答案试题id,答案类型为2 集合
Set<Long> longSet1=new HashSet<Long>();
//用来装试题答案id和其数量
Map<Long,Integer> shitiwei2de=new HashMap<Long, Integer>();
//下面是对试题进行处理
if(param.getList().size()>0) {
//在这个地方修改其中得集合
List<PatientDto.saveCaseMesSig> saveCaseMesSigList= param.getList();
Set<String> stringSet=new HashSet<String>();
//类型为2的数组
Set<String> stringSet1=new HashSet<String>();
saveCaseMesSigList.forEach(saveCaseMesSig -> {
if(saveCaseMesSig.getContentsType()==(byte)0){
stringSet.add(saveCaseMesSig.getTestQuestionsId()+"-"+saveCaseMesSig.getContents());
if(saveCaseMesSig.getContentsType()==(byte)1){
stringSet.add(saveCaseMesSig.getTestQuestionsId()+"-"+saveCaseMesSig.getContents().substring(0,saveCaseMesSig.getContents().indexOf(":")));
}
});
for (int i = param.getList().size() - 1; i >= 0; i--) {
if(param.getList().get(i).getContentsType()==(byte) 1){
if(!stringSet.contains(param.getList().get(i).getTestQuestionsId()+"-"+param.getList().get(i).getContents())){
//先统计一下数量
if(shitiwei2de.containsKey(param.getList().get(i))){
shitiwei2de.put( param.getList().get(i).getTestQuestionsId(),shitiwei2de.get(param.getList().get(i).getTestQuestionsId())+1);
}else {
shitiwei2de.put( param.getList().get(i).getTestQuestionsId(),1);
}
if(param.getList().get(i).getContentsType()==(byte) 0){
if(stringSet.contains(param.getList().get(i).getTestQuestionsId()+"-"+param.getList().get(i).getContents())){
param.getList().remove(i);
}
}
}
for (int i = 0; i < param.getList().size(); i++) {
//拿出答案类型为2的并且数量为1的
if((param.getList().get(i).getContentsType()==(byte) 2 )&&(shitiwei2de.get(param.getList().get(i).getTestQuestionsId())==1)){
longSet1.add(param.getList().get(i).getTestQuestionsId());
}
}
for (int i = 0; i < param.getList().size(); i++) {
PatientRecord patientRecord=new PatientRecord();
BeanUtils.copyProperties(param.getList().get(i),patientRecord);
@ -142,17 +162,29 @@ public class PatientService implements IPatientService {
patientRecord.setId(param.getList().get(i).getPatientRecordId());
}
patientRecord.setUserId(userId);
longSet.add(patientRecord.getTestQuestionsId());
if(!longSet1.contains(param.getList().get(i).getTestQuestionsId())){
longSet.add(patientRecord.getTestQuestionsId());
}
//因为得删除之前得内容,所以把试题集合都抽出来,另外再写循环进行插入
patientRecordList1.add(patientRecord);
}
}
//对答案进行更新删除
PatientRecordExample patientRecordExample=new PatientRecordExample();
patientRecordExample.createCriteria().andTestQuestionsIdIn(new ArrayList<Long>(longSet)).andRecStatusEqualTo((byte) 0).andPatientIdEqualTo(param.getPatientId()).andCollectTimeEqualTo(param.getNums());
PatientRecord patientRecord=new PatientRecord();
patientRecord.setRecStatus((byte)2);
patientRecordMapper.updateByExampleSelective(patientRecord,patientRecordExample);
if(longSet.size()>0) {
//对答案 0 和 1 进行更新删除
PatientRecordExample patientRecordExample = new PatientRecordExample();
patientRecordExample.createCriteria().andTestQuestionsIdIn(new ArrayList<Long>(longSet)).andRecStatusEqualTo((byte) 0).andPatientIdEqualTo(param.getPatientId()).andCollectTimeEqualTo(param.getNums());
PatientRecord patientRecord = new PatientRecord();
patientRecord.setRecStatus((byte) 2);
patientRecordMapper.updateByExampleSelective(patientRecord, patientRecordExample);
}
//对答案是2的进行删除
if(longSet1.size()>0) {
PatientRecordExample patientRecordExample1 = new PatientRecordExample();
patientRecordExample1.createCriteria().andTestQuestionsIdIn(new ArrayList<Long>(longSet1)).andRecStatusEqualTo((byte) 0).andPatientIdEqualTo(param.getPatientId()).andCollectTimeEqualTo(param.getNums()).andContentsTypeEqualTo((byte) 2);
PatientRecord patientRecord2 = new PatientRecord();
patientRecord2.setRecStatus((byte) 2);
patientRecordMapper.updateByExampleSelective(patientRecord2, patientRecordExample1);
}
//插入答案
patientRecordList1.forEach(patientRecord1 -> {
patientRecord1.setId(snowflake.nextId());

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 -> {

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

@ -1,5 +1,5 @@
spring:
profiles:
active: dev
include: common, util-dev
active: green
include: common, util-green

20
tcm/src/main/resources/mapper_dao/QuestionDao.xml

@ -123,7 +123,8 @@
<select id="getQuestionByCodeAndPatientId" resultMap="getQuestionByCodeAndPatientId">
SELECT
*
*,
tpr.contents AS explains
FROM
(
SELECT
@ -146,7 +147,6 @@
r.id as recordId,
if(r.collect_time is null, 0,r.collect_time) as collect_time,
r.contents as answer,
if(r.contents_type = 2,r.contents,null) as explains,
if(r.contents_type = 1 and SUBSTRING_INDEX(r.contents,':',1) = o.submit_value,
SUBSTRING(r.contents,char_length(o.submit_value)+2),null
@ -163,8 +163,20 @@
and q.rec_status = 0
and q.`code` = #{code}
)a
ORDER BY a.qsort,a.osort,a.choose DESC,-a.otherInformation DESC
) qq left join (
SELECT
test_questions_id,
contents
FROM
t_patient_record tpr
WHERE
tpr.contents_type = 2
AND tpr.patient_id = #{patientId}
AND tpr.collect_time = #{nums}
AND tpr.rec_status = 0
) tpr on tpr.test_questions_id = qq.qid
ORDER BY qq.qsort,qq.osort,qq.choose DESC,-qq.otherInformation DESC
</select>
<resultMap id="getQuestionByOptionId" type="com.ccsens.tcm.bean.vo.QuestionVo$PatientQuestion">

46
util/src/main/java/com/ccsens/util/CRCUtil.java

@ -0,0 +1,46 @@
package com.ccsens.util;
public class CRCUtil {
public static void crc16(byte crc[], byte data[], int index, int len) {
// 预置16位crc寄存器,初值全部为1
int wcrc = 0xFFFF;
// 定义中间变量
int temp;
// 定义计数
int i = 0, j = 0, k = index;
// 循环计算每个数据
for (i = 0; i < len; i++)
{
// 将八位数据与crc寄存器亦或
temp = (data[k] & 0xFF);
// 指针地址增加,指向下个数据
k++;
// 将数据存入crc寄存器
wcrc ^= temp;
// 循环计算数据的
for (j = 0; j < 8; j++)
{
// 判断右移出的是不是1,如果是1则与多项式进行异或。
if ((wcrc & 0x0001) == 1)
{
// 先将数据右移一位
wcrc >>= 1;
// 与上面的多项式进行异或
wcrc ^= 0XA001;
} else// 如果不是1,则直接移出
{
// 直接移出
wcrc >>= 1;
}
}
}
// crc的值
temp = wcrc;
// crc的低八位
crc[0] = (byte)(wcrc & 0xFF);
// crc的高八位
crc[1] = (byte)((wcrc >> 8) & 0xFF);
}
}

1
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -185,6 +185,7 @@ public enum CodeEnum {
NOT_HOSPITAL(154,"未找到医院信息",true),
ZHUYUANIDCHONGFU(155,"住院号重复",true),
MEIYOUGAIYISHENG(156,"该医生信息查询不正确",true),
QINGTIJIAOSHITI(157,"请提交答案",true),
;

13
util/src/test/java/com/ccsens/util/OtherTest.java

@ -105,5 +105,18 @@ public class OtherTest {
System.out.print(aa.b);
});
}
@Test
public void test7() {
int a = 0x0A;
int b = 0x08;
System.out.println(a << 8 | b);
int c = 2568;
int uc1 = c >> 8;
int uc2 = c & 0xff;
System.out.println(Integer.toHexString(uc1));
System.out.println(Integer.toHexString(uc2));
}
}

Loading…
Cancel
Save