1. 程式人生 > 其它 >小白記錄下使用mybatisplus條件構造器的例項

小白記錄下使用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 }