小白记录下使用mybatisplus条件构造器的实例

 1 controller层
 2 这里主表为任务表记录了各种用户的健康任务
 3 CkdPatientOutsideHealth
 4 具体的健康数据表为
 5 CkdBmiRecord记录了各种身高体重等数据
 6 /**
 7  * 查询主表表周期时间内健康任务中BMI的健康数据
 8  *
 9  * @return
10  */
11 @RequestMapping("/selectCkdBMiRecord/{StartDate}/{EndDate}/{Code}")
12 public Result selectCkdBMiRecord(@PathVariable("StartDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date StartDate, @PathVariable("EndDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date EndDate) {
13     Result result = new Result<>();
14     //格式化时间 这里设置
15     String strDateFormat = "yyyy-MM-dd";
16     SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
17     sdf.format(StartDate);
18     sdf.format(EndDate);
19     //先查询出条件为 code:BMI 开始时间-结束时间
20     List<CkdPatientOutsideHealth> listP = iCkdPatientOutsideHealthService.lambdaQuery()
21             //这里选取code 为BMI条件
22             .in(CkdPatientOutsideHealth::getCode, "BMI")
23             //设置大于开始的时间
24             .ge(CkdPatientOutsideHealth::getStartDate, StartDate)
25             //设置小于结束的时间
26             .le(CkdPatientOutsideHealth::getEndDate, EndDate) .list();
27     //根据长度判断是否有数据
28     if (listP.size() == 0) {
29         result.setError("无法查询到该期间的数据");
30         return result;
31     }
32     //获取所有用户id
33     List listid = listP.stream().map(CkdPatientOutsideHealth::getUserId).collect(Collectors.toList());
34     //批量查询
35     List<CkdBmiRecord> bmiRecordList = iCkdBmiRecordService.listByIds(listid);
36     result.setData(bmiRecordList);
37     return result;
38 }
39 
40 /**
41  * 保存根据身高,体重当前任务周期内执行的BMI数据
42  *
43  * @return
44  */
45 @RequestMapping(value = "/SaveCkdBMiRecord", method = RequestMethod.POST)
46 @Transactional(rollbackFor = Exception.class)
47 public Result SaveCkdBMiRecord(Integer userId, @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate, Integer finished, String code, Float weight, Integer height) {
48     CkdPatientOutsideHealth ckdPatientOutsideHealth = new CkdPatientOutsideHealth();
49     ckdPatientOutsideHealth.setUserId(userId);
50     ckdPatientOutsideHealth.setStartDate(startDate);
51     ckdPatientOutsideHealth.setFinished(finished);
52     ckdPatientOutsideHealth.setCode(code);
53     //格式化时间
54     Date startDates = ckdPatientOutsideHealth.getStartDate();
55     String strDateFormat = "yyyy-MM-dd HH:mm:ss";
56     SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
57     sdf.format(startDates);
58     Result result = new Result<>();
59     //判断是否为执行任务
60     if (ckdPatientOutsideHealth.getFinished().equals(0)) {
61         //code进行判断,如果为BMI
62         if (ckdPatientOutsideHealth.getCode().equals("BMI") && ckdPatientOutsideHealth.getStartDate().equals(startDate)) {
63             //进行一个表的
64             CkdBmiRecord ckdBmiRecord = iCkdBmiRecordService.getById(ckdPatientOutsideHealth.getUserId());
65             ckdBmiRecord.setHeight(height);
66             ckdBmiRecord.setWeight(weight);
67             //判断是身高,体重是否为空,不为空进行计算
68             if (ckdBmiRecord.getHeight() != 0 && ckdBmiRecord.getWeight() != 0) {
69                 DecimalFormat df = new DecimalFormat("0.0000");
70                 //BMI  体质公式: 体重指数(BMI)=体重(kg)÷身高^2(m) 这里height为Integer 默认输入为cm 故乘100
71                 ckdBmiRecord.setBmi(Float.parseFloat(df.format(weight / (((float) height / 100) * ((float) height / 100)))));
72                 //进行对应的useid修改
73                 iCkdBmiRecordService.update(new UpdateWrapper<CkdBmiRecord>().lambda()
74                         .eq(CkdBmiRecord::getUserId, ckdBmiRecord.getUserId())
75                         .set(true, CkdBmiRecord::getHeight, ckdBmiRecord.getHeight())
76                         .set(true, CkdBmiRecord::getWeight, ckdBmiRecord.getWeight())
77                         .set(true, CkdBmiRecord::getBmi, ckdBmiRecord.getBmi())
78                 );
79             } else {
80                 result.setError("身高体重不能为空或0");
81             }
82         } else {
83             result.setError("codeerror");
84         }
85     } else {
86         result.setError("无法保存已完成的任务");
87     }
88     return result;
89 }

 



posted @ 2021-11-10 17:10  无名的电击使  阅读(108)  评论(0)    收藏  举报