diff --git a/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/DeviceBindResidentController.java b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/DeviceBindResidentController.java index d230d62..84b7084 100644 --- a/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/DeviceBindResidentController.java +++ b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/DeviceBindResidentController.java @@ -1,7 +1,7 @@ package com.xinelu.web.controller.familydoctor; import com.xinelu.common.core.controller.BaseController; -import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.domain.R; import com.xinelu.familydoctor.entity.DeviceBindResident; import com.xinelu.familydoctor.service.DeviceBindResidentService; import io.swagger.annotations.Api; @@ -26,38 +26,34 @@ public class DeviceBindResidentController extends BaseController { @ApiOperation("绑定设备") @PostMapping("binding") - public AjaxResult bind(@RequestBody DeviceBindResident entity) { + public R bind(@RequestBody DeviceBindResident entity) { if (deviceBindResidentService.repeatBind(entity)) { - return AjaxResult.error("设备【" + entity.getSn() + "】已绑定"); + return R.fail("设备【" + entity.getSn() + "】已绑定"); } - AjaxResult ajaxResult; int row = deviceBindResidentService.bindDevice(entity); if (row > 0) { - ajaxResult = AjaxResult.success(); + return R.ok(); } else { - ajaxResult = AjaxResult.error("绑定失败"); + return R.fail("绑定失败"); } - return ajaxResult; } @ApiOperation("已绑定的设备") @GetMapping("bound/{identity}") @ApiImplicitParam(name = "identity", value = "身份证号", required = true) - public AjaxResult boundDevice(@PathVariable String identity) { + public R> boundDevice(@PathVariable String identity) { List list = deviceBindResidentService.boundDevice(identity); - return AjaxResult.success(list); + return R.ok(list); } @ApiOperation("解绑设备") @PostMapping("unbind") - public AjaxResult unbindDevice(@RequestBody DeviceBindResident entity) { - AjaxResult ajaxResult; + public R unbindDevice(@RequestBody DeviceBindResident entity) { int row = deviceBindResidentService.unbindDevice(entity); if (row > 0) { - ajaxResult = AjaxResult.success(); + return R.ok(); } else { - ajaxResult = AjaxResult.error("解绑失败"); + return R.fail("解绑失败"); } - return ajaxResult; } } diff --git a/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/EvaluateAdviceTemplateController.java b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/EvaluateAdviceTemplateController.java new file mode 100644 index 0000000..72a5752 --- /dev/null +++ b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/EvaluateAdviceTemplateController.java @@ -0,0 +1,65 @@ +package com.xinelu.web.controller.familydoctor; + +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.familydoctor.entity.EvaluateAdviceTemplate; +import com.xinelu.familydoctor.service.EvaluateAdviceTemplateService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author gaoyu + * @description 自我评估处方模板接口控制器 + * @date 2023-10-16 16:59 + */ +@Api(tags = {"自我评估处方模板接口控制器"}) +@RestController +@RequestMapping("/evaluate/advice/template") +public class EvaluateAdviceTemplateController extends BaseController { + + @Resource + private EvaluateAdviceTemplateService evaluateAdviceTemplateService; + + @ApiOperation("模板列表") + @GetMapping("list") + public TableDataInfo list(EvaluateAdviceTemplate entity) { + startPage(); + List list = evaluateAdviceTemplateService.findList(entity); + return getDataTable(list); + } + + @ApiOperation("新增/编辑模板") + @PostMapping("save") + public AjaxResult save(@RequestBody EvaluateAdviceTemplate entity) { + evaluateAdviceTemplateService.save(entity); + return AjaxResult.success(); + } + + @ApiOperation("修改模板状态") + @PostMapping("change/status") + public AjaxResult changeStatus(@RequestBody EvaluateAdviceTemplate entity) { + evaluateAdviceTemplateService.changeStatus(entity); + return AjaxResult.success(); + } + + @ApiOperation("逻辑删除模板") + @PostMapping("del/{id}") + @ApiImplicitParam(name = "id", value = "模板ID", required = true) + public AjaxResult del(@PathVariable Long id) { + evaluateAdviceTemplateService.delTemplate(id); + return AjaxResult.success(); + } + + @ApiOperation("根据自评结果获取处方模板") + @GetMapping("get/{templateType}") + @ApiImplicitParam(name = "templateType", value = "处方模板类型", required = true) + public AjaxResult getTemplate(@PathVariable String templateType) { + return AjaxResult.success(evaluateAdviceTemplateService.getTemplate(templateType)); + } +} diff --git a/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/EvaluateSurveyController.java b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/EvaluateSurveyController.java new file mode 100644 index 0000000..a51b713 --- /dev/null +++ b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/EvaluateSurveyController.java @@ -0,0 +1,88 @@ +package com.xinelu.web.controller.familydoctor; + +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.familydoctor.entity.EvaluateRecord; +import com.xinelu.familydoctor.entity.EvaluateSurvey; +import com.xinelu.familydoctor.service.EvaluateRecordService; +import com.xinelu.familydoctor.service.EvaluateSurveyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author gaoyu + * @description 自我评估问卷控制器 + * @date 2023-10-10 11:02 + */ +@Api(tags = {"自我评估问卷控制器"}) +@RestController +@RequestMapping("/evaluate") +public class EvaluateSurveyController extends BaseController { + @Resource + private EvaluateSurveyService evaluateSurveyService; + @Resource + private EvaluateRecordService evaluateRecordService; + + @ApiOperation("问卷列表") + @GetMapping("survey/list") + public TableDataInfo surveyList(EvaluateSurvey entity) { + startPage(); + List list = evaluateSurveyService.findList(entity); + return getDataTable(list); + } + + @ApiOperation("问卷新增") + @PostMapping("survey/save") + public AjaxResult surveySave(@RequestBody EvaluateSurvey entity) { + evaluateSurveyService.insert(entity); + return AjaxResult.success(); + } + + @ApiOperation("问卷编辑") + @PostMapping("survey/update") + public AjaxResult surveyUpdate(@RequestBody EvaluateSurvey entity) { + evaluateSurveyService.update(entity); + return AjaxResult.success(); + } + + @ApiOperation("修改问卷状态(启用/停用)") + @PostMapping("survey/change/state") + public AjaxResult changeState() { + return AjaxResult.success(); + } + + @ApiOperation("获取问卷") + @GetMapping("survey/get/{subject}") + @ApiImplicitParam(name = "subject", value = "问卷主题", required = true) + public AjaxResult getSurvey(@PathVariable String subject) { + EvaluateSurvey survey = evaluateSurveyService.getSurvey(subject); + return AjaxResult.success(survey); + } + + @ApiOperation("问卷提交") + @PostMapping("survey/submit") + public AjaxResult surveySubmit(EvaluateRecord evaluateRecord) { + evaluateRecordService.submit(evaluateRecord); + return AjaxResult.success(); + } + + @ApiOperation("获取评估记录") + @GetMapping("record/timeline/{userId}") + @ApiImplicitParam(name = "userId", value = "用户ID", required = true) + public AjaxResult record(@PathVariable Long userId) { + return AjaxResult.success(evaluateRecordService.getEvaluateTimeline(userId)); + } + + @ApiOperation("获取评估问卷答案") + @GetMapping("survey/answer/{recordId}") + @ApiImplicitParam(name = "recordId", value = "评估记录ID", required = true) + public AjaxResult detail(@PathVariable Long recordId) { + return AjaxResult.success(evaluateRecordService.getAnswers(recordId)); + } +} diff --git a/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/PhysicalSignController.java b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/PhysicalSignController.java index f4dad3f..bee20b7 100644 --- a/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/PhysicalSignController.java +++ b/xinelu-admin/src/main/java/com/xinelu/web/controller/familydoctor/PhysicalSignController.java @@ -1,7 +1,7 @@ package com.xinelu.web.controller.familydoctor; import com.xinelu.common.core.controller.BaseController; -import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.domain.R; import com.xinelu.familydoctor.entity.*; import com.xinelu.familydoctor.service.PhysicalSignService; import io.swagger.annotations.Api; @@ -27,51 +27,51 @@ public class PhysicalSignController extends BaseController { @ApiOperation("上传血糖") @PostMapping("bg/save") - public AjaxResult saveBg(@RequestBody DeviceBgRecord record) { + public R saveBg(@RequestBody DeviceBgRecord record) { physicalSignService.saveBg(record); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("上传血压") @PostMapping("bp/save") - public AjaxResult saveBp(@RequestBody DeviceBpRecord record) { + public R saveBp(@RequestBody DeviceBpRecord record) { physicalSignService.saveBp(record); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("上传血脂") @PostMapping("bf/save") - public AjaxResult saveBf(@RequestBody DeviceBfRecord record) { + public R saveBf(@RequestBody DeviceBfRecord record) { physicalSignService.saveBf(record); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("上传BMI") @PostMapping("bmi/save") - public AjaxResult saveBmi(@RequestBody DeviceBmiRecord record) { + public R saveBmi(@RequestBody DeviceBmiRecord record) { physicalSignService.saveBmi(record); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("上传血氧") @PostMapping("bo/save") - public AjaxResult saveBo(@RequestBody DeviceBoRecord record) { + public R saveBo(@RequestBody DeviceBoRecord record) { physicalSignService.saveBo(record); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("上传心率") @PostMapping("hr/save") - public AjaxResult saveHr(@RequestBody DeviceHrRecord record) { + public R saveHr(@RequestBody DeviceHrRecord record) { physicalSignService.saveHr(record); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("上传体温") @PostMapping("temp/save") - public AjaxResult saveTemp(@RequestBody DeviceTempRecord record) { + public R saveTemp(@RequestBody DeviceTempRecord record) { physicalSignService.saveTemp(record); - return AjaxResult.success(); + return R.ok(); } @ApiOperation("获取体征记录") @@ -79,8 +79,8 @@ public class PhysicalSignController extends BaseController { @ApiImplicitParams({@ApiImplicitParam(name = "identity", value = "身份证号", required = true), @ApiImplicitParam(name = "type", value = "时间类型0:全部1:周2:月3:年", required = true), @ApiImplicitParam(name = "label", value = "查询标识1:血糖2:血压3:血脂4:bmi5:血氧6:心率7:体温", required = true)}) - public AjaxResult record(String identity, String type, String label) { + public R record(String identity, String type, String label) { Map map = physicalSignService.record(identity, type, label); - return AjaxResult.success(map); + return R.ok(map); } } diff --git a/xinelu-common/src/main/java/com/xinelu/common/enums/SurveySubjectEnum.java b/xinelu-common/src/main/java/com/xinelu/common/enums/SurveySubjectEnum.java new file mode 100644 index 0000000..29109f3 --- /dev/null +++ b/xinelu-common/src/main/java/com/xinelu/common/enums/SurveySubjectEnum.java @@ -0,0 +1,32 @@ +package com.xinelu.common.enums; +/** + * @description: 问卷主题枚举 + * @author gaoyu + * @date 2023-10-11 10:44 + */ +public enum SurveySubjectEnum { + HBP_EVALUATE("1001", "高血压评估问卷"), + BG_EVALUATE("1002", "糖尿病评估问卷"), + STOKE_EVALUATE("1003", "脑卒中评估问卷"), + COPD_EVALUATE("1004", "慢阻肺评估问卷"), + CHRONIC_EVALUATE("1005", "慢病评估问卷"), + NS_EVALUATE("1006", "糖尿病肾病评估问卷"), + ED_EVALUATE("1007", "糖尿病眼病评估问卷"), + FD_EVALUATE("1008", "糖尿病足病评估问卷"); + + private final String code; + private final String label; + + SurveySubjectEnum(String code, String label) { + this.code = code; + this.label = label; + } + + public String getCode() { + return code; + } + + public String getLabel() { + return label; + } +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBfRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBfRecord.java index 89bbe02..7f798ad 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBfRecord.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBfRecord.java @@ -3,48 +3,61 @@ package com.xinelu.familydoctor.entity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 血脂记录表 * @TableName device_bf_record */ +@ApiModel("血脂记录表") @Data public class DeviceBfRecord implements Serializable { /** * 自增主键 */ + @ApiModelProperty("自增主键") private Long id; /** * 居民身份证号 */ + @ApiModelProperty("居民身份证号") private String identity; /** * 血清总胆固醇(单位:mmol/L) */ + @ApiModelProperty("血清总胆固醇(单位:mmol/L)") private BigDecimal tc; /** * 甘油三酯(单位:mmol/L) */ + @ApiModelProperty("甘油三酯(单位:mmol/L)") private BigDecimal tg; /** * 高密度脂蛋白胆固醇(单位:mmol/L) */ + @ApiModelProperty("高密度脂蛋白胆固醇(单位:mmol/L)") private BigDecimal hdl; /** * 低密度脂蛋白胆固醇(单位:mmol/L) */ + @ApiModelProperty("低密度脂蛋白胆固醇(单位:mmol/L)") private BigDecimal ldl; /** * 测量时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("测量时间") private Date measureTime; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBgRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBgRecord.java index ddfd25d..c280e7c 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBgRecord.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBgRecord.java @@ -3,43 +3,55 @@ package com.xinelu.familydoctor.entity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 血糖记录表 * @TableName device_bg_record */ +@ApiModel("血糖记录表") @Data public class DeviceBgRecord implements Serializable { /** * 自增主键 */ + @ApiModelProperty("自增主键") private Long id; /** * 居民身份证号 */ + @ApiModelProperty("居民身份证号") private String identity; /** * 血糖值(单位:mmol/L) */ + @ApiModelProperty("血糖值(单位:mmol/L)") private BigDecimal bg; /** * 时间段1:凌晨2:早餐前3:早晨后4:午餐前5:午餐后6:晚餐前7:晚餐后8:睡前 */ + @ApiModelProperty("时间段1:凌晨2:早餐前3:早晨后4:午餐前5:午餐后6:晚餐前7:晚餐后8:睡前") private String bucket; /** * 测量时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("测量时间") private Date measureTime; /** * 上传方式1:手动2:自动 */ + @ApiModelProperty("上传方式1:手动2:自动") private String uploadType; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBindResident.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBindResident.java index a805ad2..0011b76 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBindResident.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBindResident.java @@ -34,9 +34,9 @@ public class DeviceBindResident implements Serializable { private String sn; /** - * 设备类型(0: 其他 1:血压计 2:血糖仪 3:血脂仪 4:血氧仪 5:体重秤 6:体温计) + * 设备类型(1:血压计 2:血糖仪 3:动态血压仪) */ - @ApiModelProperty("设备类型(0: 其他 1:血压计 2:血糖仪 3:血脂仪 4:血氧仪 5:体重秤 6:体温计)") + @ApiModelProperty("设备类型(1:血压计 2:血糖仪 3:动态血压仪)") private String deviceType; /** diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBmiRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBmiRecord.java index 6b382a9..43cfa46 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBmiRecord.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBmiRecord.java @@ -3,33 +3,43 @@ package com.xinelu.familydoctor.entity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * BMI记录表 * @TableName device_bmi_record */ +@ApiModel("BMI记录表") @Data public class DeviceBmiRecord implements Serializable { /** * 自增主键 */ + @ApiModelProperty("自增主键") private Long id; /** * 居民身份证号 */ + @ApiModelProperty("居民身份证号") private String identity; /** * BMI(单位:kg/m^2) */ + @ApiModelProperty("BMI(单位:kg/m^2)") private BigDecimal bmi; /** * 测量时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("测量时间") private Date measureTime; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBoRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBoRecord.java index 879080f..6ba73cf 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBoRecord.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBoRecord.java @@ -2,38 +2,49 @@ package com.xinelu.familydoctor.entity; import java.io.Serializable; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 血氧记录表 * @TableName device_bo_record */ +@ApiModel("血氧记录表") @Data public class DeviceBoRecord implements Serializable { /** * 自增主键 */ + @ApiModelProperty("自增主键") private Long id; /** * 居民身份证号 */ + @ApiModelProperty("居民身份证号") private String identity; /** * 血氧(单位:%) */ + @ApiModelProperty("血氧(单位:%)") private Integer spo2; /** * 脉搏(单位:次/分) */ + @ApiModelProperty("脉搏(单位:次/分)") private Integer pulse; /** * 测量时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("测量时间") private Date measureTime; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBpRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBpRecord.java index c12925b..371ef25 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBpRecord.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceBpRecord.java @@ -2,48 +2,61 @@ package com.xinelu.familydoctor.entity; import java.io.Serializable; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 血压记录表 * @TableName device_bp_record */ +@ApiModel("血压记录表") @Data public class DeviceBpRecord implements Serializable { /** * 自增主键 */ + @ApiModelProperty("自增主键") private Long id; /** * 居民身份证号 */ + @ApiModelProperty("居民身份证号") private String identity; /** * 收缩压(单位:mmHg) */ + @ApiModelProperty("收缩压(单位:mmHg)") private Integer sbp; /** * 舒张压(单位:mmHg) */ + @ApiModelProperty("舒张压(单位:mmHg)") private Integer dbp; /** * 心率(单位:次/分) */ + @ApiModelProperty("心率(单位:次/分)") private Integer hr; /** * 测量时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("测量时间") private Date measureTime; /** * 上传方式1:手动2:自动 */ + @ApiModelProperty("上传方式1:手动2:自动") private String uploadType; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceHrRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceHrRecord.java index 392635a..12f31af 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceHrRecord.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceHrRecord.java @@ -2,38 +2,49 @@ package com.xinelu.familydoctor.entity; import java.io.Serializable; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 心率记录表 * @TableName device_hr_record */ +@ApiModel("心率记录表") @Data public class DeviceHrRecord implements Serializable { /** * 自增主键 */ + @ApiModelProperty("自增主键") private Long id; /** * 居民身份证号 */ + @ApiModelProperty("居民身份证号") private String identity; /** * 心率(单位:次/分) */ + @ApiModelProperty("心率(单位:次/分)") private Integer hr; /** * 测量时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("测量时间") private Date measureTime; /** * 上传方式1:手动2:自动 */ + @ApiModelProperty("上传方式1:手动2:自动") private String uploadType; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceTempRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceTempRecord.java index 32c4f35..9b3c6dd 100644 --- a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceTempRecord.java +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/DeviceTempRecord.java @@ -3,33 +3,43 @@ package com.xinelu.familydoctor.entity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 体温记录表 * @TableName device_temp_record */ +@ApiModel("体温记录表") @Data public class DeviceTempRecord implements Serializable { /** * 自增主键 */ + @ApiModelProperty("自增主键") private Long id; /** * 居民身份证号 */ + @ApiModelProperty("居民身份证号") private String identity; /** * 体温(单位:℃) */ + @ApiModelProperty("体温(单位:℃)") private BigDecimal temp; /** * 测量时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @ApiModelProperty("测量时间") private Date measureTime; private static final long serialVersionUID = 1L; -} \ No newline at end of file +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateAdviceTemplate.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateAdviceTemplate.java new file mode 100644 index 0000000..b784d2b --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateAdviceTemplate.java @@ -0,0 +1,71 @@ +package com.xinelu.familydoctor.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + * 自我评估健康处方模板表 + * @TableName evaluate_advice_template + */ +@Data +public class EvaluateAdviceTemplate implements Serializable { + /** + * 自增主键 + */ + private Long id; + + /** + * 模板类型 + */ + private String templateType; + + /** + * 模板内容 + */ + private String content; + + /** + * 模板状态1:启用2:停用 + */ + private String useFlag; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private Long createBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新人 + */ + private Long updateBy; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标识1:正常2:删除 + */ + private String delFlag; + + /** + * 请求参数 + */ + private Map params; + + private static final long serialVersionUID = 1L; +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateAnswer.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateAnswer.java new file mode 100644 index 0000000..a750fc9 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateAnswer.java @@ -0,0 +1,38 @@ +package com.xinelu.familydoctor.entity; + +import java.io.Serializable; +import lombok.Data; + +/** + * 自评问卷答案表 + * @TableName evaluate_answer + */ +@Data +public class EvaluateAnswer implements Serializable { + /** + * 自增主键 + */ + private Long id; + + /** + * 自评记录ID + */ + private Long recordId; + + /** + * 问题ID + */ + private Long questionId; + + /** + * 选项ID + */ + private Long optionId; + + /** + * 选项内容 + */ + private String optionContent; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateOption.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateOption.java new file mode 100644 index 0000000..e99dd03 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateOption.java @@ -0,0 +1,38 @@ +package com.xinelu.familydoctor.entity; + +import java.io.Serializable; +import lombok.Data; + +/** + * 自评问题选项表 + * @TableName evaluate_option + */ +@Data +public class EvaluateOption implements Serializable { + /** + * 自增主键 + */ + private Long id; + + /** + * 问题ID + */ + private Long questionId; + + /** + * 问卷ID + */ + private Long surveyId; + + /** + * 选项名称 + */ + private String optionName; + + /** + * 选项排序 + */ + private Integer optionSort; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateQuestion.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateQuestion.java new file mode 100644 index 0000000..f987fb5 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateQuestion.java @@ -0,0 +1,47 @@ +package com.xinelu.familydoctor.entity; + +import java.io.Serializable; +import java.util.List; + +import lombok.Data; + +/** + * 自评问题表 + * @TableName evaluate_question + */ +@Data +public class EvaluateQuestion implements Serializable { + /** + * 自增主键 + */ + private Long id; + + /** + * 问卷ID + */ + private Long surveyId; + + /** + * 问题主题 + */ + private String questionName; + + /** + * 问题类型1:单选2:多选3:填空 + */ + private String questionType; + + /** + * 问题排序 + */ + private Integer questionSort; + + /** + * 是否必填1:必填2:非必填 + */ + private String requiredFlag; + + private List options; + + private static final long serialVersionUID = 1L; +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateRecord.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateRecord.java new file mode 100644 index 0000000..e020623 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateRecord.java @@ -0,0 +1,53 @@ +package com.xinelu.familydoctor.entity; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import lombok.Data; + +/** + * 自评记录表 + * @TableName evaluate_record + */ +@Data +public class EvaluateRecord implements Serializable { + /** + * 自增主键 + */ + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 问卷ID + */ + private Long surveyId; + + /** + * 问卷主题 + */ + private String surveySubject; + + /** + * 评估结果 + */ + private String evaluateResult; + + /** + * 健康处方 + */ + private String advice; + + /** + * 创建时间 + */ + private Date createTime; + + private List answers; + + private static final long serialVersionUID = 1L; +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateSurvey.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateSurvey.java new file mode 100644 index 0000000..1957da3 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/entity/EvaluateSurvey.java @@ -0,0 +1,70 @@ +package com.xinelu.familydoctor.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 自评问卷表 + * @TableName evaluate_survey + */ +@Data +public class EvaluateSurvey implements Serializable { + /** + * 自增主键 + */ + private Long id; + + /** + * 问卷主题1001:高血压评估问卷,1002:糖尿病评估问卷,1003:脑卒中评估问卷,1004:慢阻肺评估问卷,1005:慢病评估问卷, + * 1006:糖尿病肾病评估问卷,1007:糖尿病眼病评估问卷,1008:糖尿病足病评估问卷 + */ + private String surveySubject; + + /** + * 问卷状态1:启用2:停用 + */ + private String useFlag; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private Long createBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新人 + */ + private Long updateBy; + + /** + * 删除标识1:正常2:删除 + */ + private String delFlag; + + /** + * 备注 + */ + private String remark; + + private List questions; + + /** + * 请求参数 + */ + private Map params; + + private static final long serialVersionUID = 1L; +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateAdviceTemplateMapper.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateAdviceTemplateMapper.java new file mode 100644 index 0000000..437e255 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateAdviceTemplateMapper.java @@ -0,0 +1,23 @@ +package com.xinelu.familydoctor.mapper; + +import com.xinelu.familydoctor.entity.EvaluateAdviceTemplate; + +import java.util.List; + +/** +* @author gaoyu +* @description 针对表【evaluate_advice_template(自我评估健康处方模板表)】的数据库操作Mapper +* @createDate 2023-10-16 16:51:09 +* @Entity com.xinelu.familydoctor.entity.EvaluateAdviceTemplate +*/ +public interface EvaluateAdviceTemplateMapper { + + List findList(EvaluateAdviceTemplate record); + + EvaluateAdviceTemplate getTemplateByType(String templateType); + + int insert(EvaluateAdviceTemplate record); + + int update(EvaluateAdviceTemplate record); + +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateAnswerMapper.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateAnswerMapper.java new file mode 100644 index 0000000..32fe80b --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateAnswerMapper.java @@ -0,0 +1,21 @@ +package com.xinelu.familydoctor.mapper; + +import com.xinelu.familydoctor.entity.EvaluateAnswer; + +import java.util.List; + +/** +* @author gaoyu +* @description 针对表【evaluate_answer(自评问卷答案表)】的数据库操作Mapper +* @createDate 2023-10-11 09:51:39 +* @Entity com.xinelu.familydoctor.entity.EvaluateAnswer +*/ +public interface EvaluateAnswerMapper { + + List getAnswers(Long recordId); + + int insert(EvaluateAnswer record); + + int update(EvaluateAnswer recordId); + +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateOptionMapper.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateOptionMapper.java new file mode 100644 index 0000000..91d8cab --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateOptionMapper.java @@ -0,0 +1,32 @@ +package com.xinelu.familydoctor.mapper; + +import com.xinelu.familydoctor.entity.EvaluateOption; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author gaoyu +* @description 针对表【evaluate_option(自评问题选项表)】的数据库操作Mapper +* @createDate 2023-10-11 09:51:26 +* @Entity com.xinelu.familydoctor.entity.EvaluateOption +*/ +public interface EvaluateOptionMapper { + + List getOptions(Long questionId); + + int insert(EvaluateOption record); + + int update(EvaluateOption record); + + /** + * 清空问卷ID与wentiID + * @param questionId 问题ID + * @param surveyId 问卷ID + * @return {@link int} + * @author gaoyu + * @date 2023-10-11 17:31 + */ + int clearRelationId(@Param("questionId") Long questionId, @Param("surveyId") Long surveyId); + +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateQuestionMapper.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateQuestionMapper.java new file mode 100644 index 0000000..9e7a224 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateQuestionMapper.java @@ -0,0 +1,31 @@ +package com.xinelu.familydoctor.mapper; + +import com.xinelu.familydoctor.entity.EvaluateQuestion; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author gaoyu +* @description 针对表【evaluate_question(自评问题表)】的数据库操作Mapper +* @createDate 2023-10-11 09:51:20 +* @Entity com.xinelu.familydoctor.entity.EvaluateQuestion +*/ +public interface EvaluateQuestionMapper { + + List getQuestions(Long surveyId); + + int insert(EvaluateQuestion record); + + int update(EvaluateQuestion record); + + /** + * 清空问卷ID + * @param surveyId 问卷ID + * @return {@link int} + * @author gaoyu + * @date 2023-10-11 17:33 + */ + int clearSurveyId(@Param("surveyId") Long surveyId); + +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateRecordMapper.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateRecordMapper.java new file mode 100644 index 0000000..60c666f --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateRecordMapper.java @@ -0,0 +1,19 @@ +package com.xinelu.familydoctor.mapper; + +import com.xinelu.familydoctor.entity.EvaluateRecord; + +import java.util.List; + +/** +* @author gaoyu +* @description 针对表【evaluate_record(自评记录表)】的数据库操作Mapper +* @createDate 2023-10-11 09:51:34 +* @Entity com.xinelu.familydoctor.entity.EvaluateRecord +*/ +public interface EvaluateRecordMapper { + + List getTimeline(Long userId); + + int insert(EvaluateRecord record); + +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateSurveyMapper.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateSurveyMapper.java new file mode 100644 index 0000000..fa84949 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/mapper/EvaluateSurveyMapper.java @@ -0,0 +1,30 @@ +package com.xinelu.familydoctor.mapper; + +import com.xinelu.familydoctor.entity.EvaluateSurvey; + +import java.util.List; + +/** +* @author gaoyu +* @description 针对表【evaluate_survey(自评问卷表)】的数据库操作Mapper +* @createDate 2023-10-11 09:51:11 +* @Entity com.xinelu.familydoctor.entity.EvaluateSurvey +*/ +public interface EvaluateSurveyMapper { + + List findList(EvaluateSurvey entity); + + /** + * 获取问卷 + * @param surveySubject 问卷主题 + * @return {@link com.xinelu.familydoctor.entity.EvaluateSurvey} + * @author gaoyu + * @date 2023-10-12 17:22 + */ + EvaluateSurvey getSurvey(String surveySubject); + + int insert(EvaluateSurvey record); + + int update(EvaluateSurvey record); + +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateAdviceTemplateService.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateAdviceTemplateService.java new file mode 100644 index 0000000..edd279d --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateAdviceTemplateService.java @@ -0,0 +1,13 @@ +package com.xinelu.familydoctor.service; + +import com.xinelu.familydoctor.entity.EvaluateAdviceTemplate; + +import java.util.List; + +public interface EvaluateAdviceTemplateService { + List findList(EvaluateAdviceTemplate entity); + EvaluateAdviceTemplate getTemplate(String templateType); + void save(EvaluateAdviceTemplate entity); + void changeStatus(EvaluateAdviceTemplate entity); + void delTemplate(Long id); +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateRecordService.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateRecordService.java new file mode 100644 index 0000000..0009b70 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateRecordService.java @@ -0,0 +1,15 @@ +package com.xinelu.familydoctor.service; + +import com.xinelu.familydoctor.entity.EvaluateAnswer; +import com.xinelu.familydoctor.entity.EvaluateRecord; +import com.xinelu.familydoctor.vo.EvaluateRecordTimelineVO; + +import java.util.List; + +public interface EvaluateRecordService { + void submit(EvaluateRecord entity); + + List getEvaluateTimeline(Long userId); + + List getAnswers(Long recordId); +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateSurveyService.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateSurveyService.java new file mode 100644 index 0000000..00c4ef1 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/EvaluateSurveyService.java @@ -0,0 +1,22 @@ +package com.xinelu.familydoctor.service; + +import com.xinelu.familydoctor.entity.EvaluateSurvey; + +import java.util.List; + +public interface EvaluateSurveyService { + List findList(EvaluateSurvey entity); + + /** + * 获取问卷 + * @param surveySubject 问卷主题 + * @return {@link com.xinelu.familydoctor.entity.EvaluateSurvey} + * @author gaoyu + * @date 2023-10-12 17:23 + */ + EvaluateSurvey getSurvey(String surveySubject); + + void insert(EvaluateSurvey entity); + + void update(EvaluateSurvey entity); +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateAdviceTemplateServiceImpl.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateAdviceTemplateServiceImpl.java new file mode 100644 index 0000000..6b0b1d7 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateAdviceTemplateServiceImpl.java @@ -0,0 +1,63 @@ +package com.xinelu.familydoctor.service.impl; + +import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.familydoctor.entity.EvaluateAdviceTemplate; +import com.xinelu.familydoctor.mapper.EvaluateAdviceTemplateMapper; +import com.xinelu.familydoctor.service.EvaluateAdviceTemplateService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * @author gaoyu + * @description 自我评估处方模板实现类 + * @date 2023-10-16 16:58 + */ +@Service +public class EvaluateAdviceTemplateServiceImpl implements EvaluateAdviceTemplateService { + @Resource + private EvaluateAdviceTemplateMapper evaluateAdviceTemplateMapper; + + @Override + public List findList(EvaluateAdviceTemplate entity) { + return evaluateAdviceTemplateMapper.findList(entity); + } + + @Override + public EvaluateAdviceTemplate getTemplate(String templateType) { + return evaluateAdviceTemplateMapper.getTemplateByType(templateType); + } + + @Override + public void save(EvaluateAdviceTemplate entity) { + if (entity.getId() == null) { + entity.setCreateTime(new Date()); + entity.setCreateBy(SecurityUtils.getUserId()); + entity.setDelFlag("1"); + evaluateAdviceTemplateMapper.insert(entity); + } else { + entity.setUpdateBy(SecurityUtils.getUserId()); + entity.setUpdateTime(new Date()); + evaluateAdviceTemplateMapper.update(entity); + } + } + + @Override + public void changeStatus(EvaluateAdviceTemplate entity) { + entity.setUpdateBy(SecurityUtils.getUserId()); + entity.setUpdateTime(new Date()); + evaluateAdviceTemplateMapper.update(entity); + } + + @Override + public void delTemplate(Long id) { + EvaluateAdviceTemplate entity = new EvaluateAdviceTemplate(); + entity.setId(id); + entity.setDelFlag("2"); + entity.setUpdateBy(SecurityUtils.getUserId()); + entity.setUpdateTime(new Date()); + evaluateAdviceTemplateMapper.update(entity); + } +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateRecordServiceImpl.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateRecordServiceImpl.java new file mode 100644 index 0000000..16e098c --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateRecordServiceImpl.java @@ -0,0 +1,79 @@ +package com.xinelu.familydoctor.service.impl; + +import com.xinelu.common.utils.DateUtils; +import com.xinelu.familydoctor.entity.EvaluateAnswer; +import com.xinelu.familydoctor.entity.EvaluateRecord; +import com.xinelu.familydoctor.mapper.EvaluateAnswerMapper; +import com.xinelu.familydoctor.mapper.EvaluateRecordMapper; +import com.xinelu.familydoctor.service.EvaluateRecordService; +import com.xinelu.familydoctor.vo.EvaluateRecordResultVO; +import com.xinelu.familydoctor.vo.EvaluateRecordTimelineVO; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; + +/** + * @author gaoyu + * @description 自评记录 + * @date 2023-10-16 9:23 + */ +@Service +public class EvaluateRecordServiceImpl implements EvaluateRecordService { + @Resource + private EvaluateRecordMapper evaluateRecordMapper; + @Resource + private EvaluateAnswerMapper evaluateAnswerMapper; + + @Override + public void submit(EvaluateRecord entity) { + entity.setCreateTime(new Date()); + evaluateRecordMapper.insert(entity); + List answers = entity.getAnswers(); + if (CollectionUtils.isEmpty(answers)) { + for (EvaluateAnswer answer : answers) { + answer.setRecordId(entity.getId()); + evaluateAnswerMapper.insert(answer); + } + } + } + + @Override + public List getEvaluateTimeline(Long userId) { + List records = evaluateRecordMapper.getTimeline(userId); + List timeline = new ArrayList<>(); + Map> map = new HashMap<>(); + if (!CollectionUtils.isEmpty(records)) { + records.forEach(r -> { + List resultList; + if (!map.containsKey(DateUtils.formatDate(r.getCreateTime(), "yyyy-MM-dd"))) { + resultList = new ArrayList<>(); + } else { + resultList = map.get(DateUtils.formatDate(r.getCreateTime(), "yyyy-MM-dd")); + } + EvaluateRecordResultVO resultVO = new EvaluateRecordResultVO(); + resultVO.setRecordId(r.getId()); + resultVO.setEvaluateResult(r.getEvaluateResult()); + resultVO.setSurveySubject(r.getSurveySubject()); + resultVO.setAdvice(r.getAdvice()); + resultVO.setTime(DateUtils.formatDate(r.getCreateTime(), "HH:mm:ss")); + resultVO.setDate(DateUtils.formatDate(r.getCreateTime(), "yyyy-MM-dd")); + resultList.add(resultVO); + map.put(DateUtils.formatDate(r.getCreateTime(), "yyyy-MM-dd"), resultList); + }); + map.forEach((k, v) -> { + EvaluateRecordTimelineVO recordLine = new EvaluateRecordTimelineVO(); + recordLine.setDate(k); + recordLine.setRecords(v); + timeline.add(recordLine); + }); + } + return timeline; + } + + @Override + public List getAnswers(Long recordId) { + return evaluateAnswerMapper.getAnswers(recordId); + } +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateSurveyServiceImpl.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateSurveyServiceImpl.java new file mode 100644 index 0000000..b3bd420 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/service/impl/EvaluateSurveyServiceImpl.java @@ -0,0 +1,106 @@ +package com.xinelu.familydoctor.service.impl; + +import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.familydoctor.entity.EvaluateOption; +import com.xinelu.familydoctor.entity.EvaluateQuestion; +import com.xinelu.familydoctor.entity.EvaluateSurvey; +import com.xinelu.familydoctor.mapper.EvaluateOptionMapper; +import com.xinelu.familydoctor.mapper.EvaluateQuestionMapper; +import com.xinelu.familydoctor.mapper.EvaluateSurveyMapper; +import com.xinelu.familydoctor.service.EvaluateSurveyService; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @author gaoyu + * @description 自评问卷业务实现类 + * @date 2023-10-11 13:24 + */ +@Service +public class EvaluateSurveyServiceImpl implements EvaluateSurveyService { + @Resource + private EvaluateSurveyMapper evaluateSurveyMapper; + @Resource + private EvaluateQuestionMapper evaluateQuestionMapper; + @Resource + private EvaluateOptionMapper evaluateOptionMapper; + + @Override + public List findList(EvaluateSurvey entity) { + return evaluateSurveyMapper.findList(entity); + } + + @Override + public EvaluateSurvey getSurvey(String surveySubject) { + return evaluateSurveyMapper.getSurvey(surveySubject); + } + + @Override + public void insert(EvaluateSurvey entity) { + entity.setCreateBy(SecurityUtils.getUserId()); + entity.setCreateTime(new Date()); + entity.setDelFlag("1"); + int row = evaluateSurveyMapper.insert(entity); + if (row > 0) { + List questions = entity.getQuestions(); + if (!CollectionUtils.isEmpty(questions)) { + for (EvaluateQuestion question : questions) { + question.setSurveyId(entity.getId()); + row = evaluateQuestionMapper.insert(question); + if (row > 0) { + List options = question.getOptions(); + if (!CollectionUtils.isEmpty(options)) { + for (EvaluateOption option : options) { + option.setSurveyId(entity.getId()); + option.setQuestionId(question.getId()); + evaluateOptionMapper.insert(option); + } + } + } + } + } + } + } + + @Override + public void update(EvaluateSurvey entity) { + entity.setUpdateBy(SecurityUtils.getUserId()); + entity.setUpdateTime(new Date()); + entity.setDelFlag("1"); + int row = evaluateSurveyMapper.update(entity); + if (row > 0) { + List questions = entity.getQuestions(); + if (!CollectionUtils.isEmpty(questions)) { + evaluateQuestionMapper.clearSurveyId(entity.getId()); + for (EvaluateQuestion question : questions) { + question.setSurveyId(entity.getId()); + if (Objects.isNull(question.getId())) { + row = evaluateQuestionMapper.insert(question); + } else { + row = evaluateQuestionMapper.update(question); + } + if (row > 0) { + List options = question.getOptions(); + if (!CollectionUtils.isEmpty(options)) { + evaluateOptionMapper.clearRelationId(question.getId(), entity.getId()); + for (EvaluateOption option : options) { + option.setSurveyId(entity.getId()); + option.setQuestionId(question.getId()); + if (Objects.isNull(option.getId())) { + evaluateOptionMapper.insert(option); + } else { + evaluateOptionMapper.update(option); + } + } + } + } + } + } + } + } +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/vo/EvaluateRecordResultVO.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/vo/EvaluateRecordResultVO.java new file mode 100644 index 0000000..b24ab3b --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/vo/EvaluateRecordResultVO.java @@ -0,0 +1,20 @@ +package com.xinelu.familydoctor.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @author gaoyu + * @description 自评记录结果视图 + * @date 2023-10-16 11:38 + */ +@ApiModel("自评记录结果视图") +@Data +public class EvaluateRecordResultVO { + private Long recordId; + private String surveySubject; + private String evaluateResult; + private String advice; + private String time; + private String date; +} diff --git a/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/vo/EvaluateRecordTimelineVO.java b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/vo/EvaluateRecordTimelineVO.java new file mode 100644 index 0000000..ec64ae6 --- /dev/null +++ b/xinelu-familydoctor/src/main/java/com/xinelu/familydoctor/vo/EvaluateRecordTimelineVO.java @@ -0,0 +1,18 @@ +package com.xinelu.familydoctor.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.List; + +/** + * @author gaoyu + * @description 评估记录时间轴视图 + * @date 2023-10-16 11:30 + */ +@ApiModel("评估记录时间轴视图") +@Data +public class EvaluateRecordTimelineVO { + private String date; + private List records; +} diff --git a/xinelu-familydoctor/src/main/resources/mapper/EvaluateAdviceTemplateMapper.xml b/xinelu-familydoctor/src/main/resources/mapper/EvaluateAdviceTemplateMapper.xml new file mode 100644 index 0000000..6f025ad --- /dev/null +++ b/xinelu-familydoctor/src/main/resources/mapper/EvaluateAdviceTemplateMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + id,template_type,content, + use_flag,create_time,create_by, + update_time,update_by,remark, + del_flag + + + + + + + + insert into evaluate_advice_template + ( id,template_type,content + ,use_flag,create_time,create_by + ,update_time,update_by,remark + ,del_flag) + values (#{id,jdbcType=BIGINT},#{templateType,jdbcType=VARCHAR},#{content,jdbcType=VARCHAR} + ,#{useFlag,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP},#{createBy,jdbcType=BIGINT} + ,#{updateTime,jdbcType=TIMESTAMP},#{updateBy,jdbcType=BIGINT},#{remark,jdbcType=VARCHAR} + ,#{delFlag,jdbcType=VARCHAR}) + + + update evaluate_advice_template + + + template_type = #{templateType,jdbcType=VARCHAR}, + + + content = #{content,jdbcType=VARCHAR}, + + + use_flag = #{useFlag,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + create_by = #{createBy,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + update_by = #{updateBy,jdbcType=BIGINT}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + del_flag = #{delFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + diff --git a/xinelu-familydoctor/src/main/resources/mapper/EvaluateAnswerMapper.xml b/xinelu-familydoctor/src/main/resources/mapper/EvaluateAnswerMapper.xml new file mode 100644 index 0000000..0289279 --- /dev/null +++ b/xinelu-familydoctor/src/main/resources/mapper/EvaluateAnswerMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + id,record_id,question_id, + option_id,option_content + + + + + + insert into evaluate_answer + (record_id,question_id + ,option_id,option_content) + values (#{recordId,jdbcType=BIGINT},#{questionId,jdbcType=BIGINT} + ,#{optionId,jdbcType=BIGINT},#{optionContent,jdbcType=VARCHAR}) + + + update evaluate_answer + + + record_id = #{recordId,jdbcType=BIGINT}, + + + question_id = #{questionId,jdbcType=BIGINT}, + + + option_id = #{optionId,jdbcType=BIGINT}, + + + option_content = #{optionContent,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + diff --git a/xinelu-familydoctor/src/main/resources/mapper/EvaluateOptionMapper.xml b/xinelu-familydoctor/src/main/resources/mapper/EvaluateOptionMapper.xml new file mode 100644 index 0000000..2a6d823 --- /dev/null +++ b/xinelu-familydoctor/src/main/resources/mapper/EvaluateOptionMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + id,question_id,survey_id, + option_name,option_sort + + + + + + insert into evaluate_option + (question_id,survey_id + ,option_name,option_sort) + values (#{questionId,jdbcType=BIGINT},#{surveyId,jdbcType=BIGINT} + ,#{optionName,jdbcType=VARCHAR},#{optionSort,jdbcType=INTEGER}) + + + update evaluate_option + + + question_id = #{questionId,jdbcType=BIGINT}, + + + survey_id = #{surveyId,jdbcType=BIGINT}, + + + option_name = #{optionName,jdbcType=VARCHAR}, + + + option_sort = #{optionSort,jdbcType=INTEGER}, + + + where id = #{id,jdbcType=BIGINT} + + + + update evaluate_option set question_id = null, survey_id = null + where question_id = #{questionId,jdbcType=BIGINT} and survey_id = #{surveyId,jdbcType=BIGINT} + + diff --git a/xinelu-familydoctor/src/main/resources/mapper/EvaluateQuestionMapper.xml b/xinelu-familydoctor/src/main/resources/mapper/EvaluateQuestionMapper.xml new file mode 100644 index 0000000..e6c5a5b --- /dev/null +++ b/xinelu-familydoctor/src/main/resources/mapper/EvaluateQuestionMapper.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + t1.id,t1.survey_id,t1.question_name, + t1.question_type,t1.question_sort,t1.required_flag + + + + + + insert into evaluate_question + (survey_id,question_name + ,question_type,question_sort,required_flag) + values (#{surveyId,jdbcType=BIGINT},#{questionName,jdbcType=VARCHAR} + ,#{questionType,jdbcType=VARCHAR},#{questionSort,jdbcType=INTEGER},#{requiredFlag,jdbcType=VARCHAR}) + + + update evaluate_question + + + survey_id = #{surveyId,jdbcType=BIGINT}, + + + question_name = #{questionName,jdbcType=VARCHAR}, + + + question_type = #{questionType,jdbcType=VARCHAR}, + + + question_sort = #{questionSort,jdbcType=INTEGER}, + + + required_flag = #{requiredFlag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update evaluate_question set survey_id = null where survey_id = #{surveyId,jdbcType=BIGINT} + + diff --git a/xinelu-familydoctor/src/main/resources/mapper/EvaluateRecordMapper.xml b/xinelu-familydoctor/src/main/resources/mapper/EvaluateRecordMapper.xml new file mode 100644 index 0000000..2bfab9d --- /dev/null +++ b/xinelu-familydoctor/src/main/resources/mapper/EvaluateRecordMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + id,user_id,survey_id,survey_subject, + evaluate_result,advice,create_time + + + + + + insert into evaluate_record + (user_id,survey_id,survey_subject + ,evaluate_result,advice,create_time + ) + values (#{userId,jdbcType=BIGINT},#{surveyId,jdbcType=BIGINT},#{surveySubject,jdbcType=VARCHAR} + ,#{evaluateResult,jdbcType=VARCHAR},#{advice,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP} + ) + + diff --git a/xinelu-familydoctor/src/main/resources/mapper/EvaluateSurveyMapper.xml b/xinelu-familydoctor/src/main/resources/mapper/EvaluateSurveyMapper.xml new file mode 100644 index 0000000..f7aad1a --- /dev/null +++ b/xinelu-familydoctor/src/main/resources/mapper/EvaluateSurveyMapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + id,survey_name,use_flag, + create_time,create_by,update_time, + update_by,del_flag,remark + + + + + + + + insert into evaluate_survey + (survey_subject,use_flag + ,create_time,create_by,update_time + ,update_by,del_flag,remark + ) + values (#{surveySubject,jdbcType=VARCHAR},#{useFlag,jdbcType=VARCHAR} + ,#{createTime,jdbcType=TIMESTAMP},#{createBy,jdbcType=BIGINT},#{updateTime,jdbcType=TIMESTAMP} + ,#{updateBy,jdbcType=BIGINT},#{delFlag,jdbcType=VARCHAR},#{remark,jdbcType=VARCHAR} + ) + + + update evaluate_survey + + + survey_subject = #{surveySubject,jdbcType=VARCHAR}, + + + use_flag = #{useFlag,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + create_by = #{createBy,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + update_by = #{updateBy,jdbcType=BIGINT}, + + + del_flag = #{delFlag,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + +