From 6a6e163411d3863edba53198ae4934de2bbd4e64 Mon Sep 17 00:00:00 2001 From: wang0018 <1007152140@qq.com> Date: Thu, 4 Mar 2021 17:33:09 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=8B=89=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java | 2 +- tcm/src/main/resources/application.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java b/tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java index d48a4f67..fe447190 100644 --- a/tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java +++ b/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; } diff --git a/tcm/src/main/resources/application.yml b/tcm/src/main/resources/application.yml index 4ecd13fd..33b76558 100644 --- a/tcm/src/main/resources/application.yml +++ b/tcm/src/main/resources/application.yml @@ -1,5 +1,5 @@ spring: profiles: - active: dev - include: common, util-dev + active: green + include: common, util-green From ffe374d8d261cad4fe062fc9d145326183ecce9a Mon Sep 17 00:00:00 2001 From: wang0018 <1007152140@qq.com> Date: Thu, 4 Mar 2021 18:59:38 +0800 Subject: [PATCH 2/6] tijaio --- .../main/java/com/ccsens/tcm/service/PatientService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java index e8930e54..37500b55 100644 --- a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java +++ b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java @@ -119,13 +119,13 @@ public class PatientService implements IPatientService { List saveCaseMesSigList= param.getList(); Set stringSet=new HashSet(); 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(param.getList().get(i).getContentsType()==(byte) 0){ + if(stringSet.contains(param.getList().get(i).getTestQuestionsId()+"-"+param.getList().get(i).getContents())){ param.getList().remove(i); } } From 72d654d2bf9ca9e98b07eda118cf02f4bbfaf6f9 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Thu, 4 Mar 2021 19:51:30 +0800 Subject: [PATCH 3/6] 20210304v1.3 --- .../service/ParameterService.java | 139 +++++++++--------- .../main/java/com/ccsens/util/CRCUtil.java | 46 ++++++ .../test/java/com/ccsens/util/OtherTest.java | 13 ++ 3 files changed, 128 insertions(+), 70 deletions(-) create mode 100644 util/src/main/java/com/ccsens/util/CRCUtil.java 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 0ca4e4ea..834ea1c5 100644 --- a/beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java +++ b/beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java @@ -3,8 +3,12 @@ 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.util.CRCUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -24,6 +28,8 @@ import java.util.List; public class ParameterService implements IParameterService{ @Resource private RecordDao recordDao; + @Resource + private EquipmentTypeMapper equipmentTypeMapper; @Override public ParameterVo.QueryParameter queryParameter(Object param) { @@ -84,83 +90,76 @@ public class ParameterService implements IParameterService{ } parameterInfo.setParameter(parameters); + return parameterInfo; + } + @Override + public void updateParameter(ParameterDto.ParameterInfo param) { + 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); + + + + } + } + } +// //电磁阀1 +// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1(); +// if(ObjectUtil.isNotNull(solenoidValue1)){ // -// List 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 transducers = new ArrayList<>(); -// ParameterVo.Transducer transducer = new ParameterVo.Transducer(); -// transducer.setTitle("变频器"); -// transducer.setValues(transducerValues); -// transducers.add(transducer); -// -// List 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 beltWeighers1 = new ArrayList<>(); -// ParameterVo.BeltWeigher beltWeigher1 = new ParameterVo.BeltWeigher(); -// beltWeigher1.setTitle("皮带秤"); -// List 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); -// +// } +// //电磁阀1 +// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1(); +// if(ObjectUtil.isNotNull(solenoidValue1)){ // -// ParameterVo.BeltWeigher beltWeigher2 = new ParameterVo.BeltWeigher(); -// beltWeigher2.setTitle("流量计"); -// List 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); +// } +// //电磁阀1 +// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1(); +// if(ObjectUtil.isNotNull(solenoidValue1)){ // -// List parameters = new ArrayList<>(); -// ParameterVo.Parameter parameter = new ParameterVo.Parameter(); -// parameter.setTitle("电耳"); -// List parameterThresholds = new ArrayList<>(); +// } +// //电磁阀1 +// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1(); +// if(ObjectUtil.isNotNull(solenoidValue1)){ // -// 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))); +// } +// //电磁阀1 +// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1(); +// if(ObjectUtil.isNotNull(solenoidValue1)){ // -// 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) { } } diff --git a/util/src/main/java/com/ccsens/util/CRCUtil.java b/util/src/main/java/com/ccsens/util/CRCUtil.java new file mode 100644 index 00000000..f4dea530 --- /dev/null +++ b/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); + } + + +} diff --git a/util/src/test/java/com/ccsens/util/OtherTest.java b/util/src/test/java/com/ccsens/util/OtherTest.java index db53fbda..b5ce07f6 100644 --- a/util/src/test/java/com/ccsens/util/OtherTest.java +++ b/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)); + } } From e81ec538655b1e456675cae92d92464fafa420d4 Mon Sep 17 00:00:00 2001 From: wang0018 <1007152140@qq.com> Date: Mon, 8 Mar 2021 10:25:17 +0800 Subject: [PATCH 4/6] tijiao --- .../com/ccsens/tcm/service/PatientService.java | 3 +++ tcm/src/main/resources/mapper_dao/QuestionDao.xml | 15 +++++++++++---- util/src/main/java/com/ccsens/util/CodeEnum.java | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java index 37500b55..45ce209f 100644 --- a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java +++ b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java @@ -107,6 +107,9 @@ 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()); //处理过的答案信息集合 diff --git a/tcm/src/main/resources/mapper_dao/QuestionDao.xml b/tcm/src/main/resources/mapper_dao/QuestionDao.xml index dc968715..3693509f 100644 --- a/tcm/src/main/resources/mapper_dao/QuestionDao.xml +++ b/tcm/src/main/resources/mapper_dao/QuestionDao.xml @@ -123,7 +123,8 @@ diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index e5b5c429..915ca37d 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/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), ; From a7433f8dbd4499859ef722176c3b17892e37e8df Mon Sep 17 00:00:00 2001 From: wang0018 <1007152140@qq.com> Date: Mon, 8 Mar 2021 16:33:52 +0800 Subject: [PATCH 5/6] tijiao --- .../ccsens/tcm/service/PatientService.java | 47 +++++++++++++++---- .../ccsens/tcm/service/QuestionService.java | 2 +- .../main/resources/mapper_dao/QuestionDao.xml | 19 +++++--- 3 files changed, 51 insertions(+), 17 deletions(-) diff --git a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java index 45ce209f..a998098b 100644 --- a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java +++ b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java @@ -114,26 +114,43 @@ public class PatientService implements IPatientService { PatientInformation patientInformation = patientInformationMapper.selectByPrimaryKey(param.getPatientId()); //处理过的答案信息集合 List patientRecordList1=new ArrayList(); - //处理过的提交的试题id集合 + //处理过的提交的答案试题id,答案类型为0,1 集合 Set longSet=new HashSet(); + //处理过的提交的答案试题id,答案类型为2 集合 + Set longSet1=new HashSet(); + //用来装试题答案id和其数量 + Map shitiwei2de=new HashMap(); //下面是对试题进行处理 if(param.getList().size()>0) { //在这个地方修改其中得集合 List saveCaseMesSigList= param.getList(); Set stringSet=new HashSet(); + //类型为2的数组 + Set stringSet1=new HashSet(); saveCaseMesSigList.forEach(saveCaseMesSig -> { 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(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); @@ -145,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(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(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(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()); 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 -> { diff --git a/tcm/src/main/resources/mapper_dao/QuestionDao.xml b/tcm/src/main/resources/mapper_dao/QuestionDao.xml index 3693509f..bf0d3736 100644 --- a/tcm/src/main/resources/mapper_dao/QuestionDao.xml +++ b/tcm/src/main/resources/mapper_dao/QuestionDao.xml @@ -163,14 +163,19 @@ and q.rec_status = 0 and q.`code` = #{code} - ) qq, + ) qq left join ( + SELECT + test_questions_id, + contents + FROM t_patient_record tpr - where - tpr.test_questions_id = qq.qid - AND tpr.contents_type = 2 - AND tpr.patient_id = #{patientId} - AND tpr.collect_time = #{nums} - AND tpr.rec_status = 0 + 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 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 6/6] 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 -> {