jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -26,4 +26,6 @@ ErrorCode DEV_MODEL_NOT_EXISTS = new ErrorCode(1_010_005_000, "设å¤åå·ä¸åå¨"); ErrorCode DEVICE_NOT_EXISTS = new ErrorCode(1_010_005_001, "设å¤ä¸åå¨"); ErrorCode DEV_RENT_NOT_EXISTS = new ErrorCode(1_010_005_002, "ç§åä¸åå¨"); ErrorCode JOB_RECORD_NOT_EXISTS = new ErrorCode(1_010_006_000, "å·¥ä½è®°å½ä¸åå¨"); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/JobRecordController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,95 @@ package cn.lihu.jh.module.ecg.controller.admin.jobrecord; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; import java.io.IOException; import cn.lihu.jh.framework.common.pojo.PageParam; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.pojo.CommonResult; import cn.lihu.jh.framework.common.util.object.BeanUtils; import static cn.lihu.jh.framework.common.pojo.CommonResult.success; import cn.lihu.jh.framework.excel.core.util.ExcelUtils; import cn.lihu.jh.framework.apilog.core.annotation.ApiAccessLog; import static cn.lihu.jh.framework.apilog.core.enums.OperateTypeEnum.*; import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO; import cn.lihu.jh.module.ecg.service.jobrecord.JobRecordService; @Tag(name = "管çåå° - å·¥ä½è®°å½") @RestController @RequestMapping("/ecg/job-record") @Validated public class JobRecordController { @Resource private JobRecordService jobRecordService; @PostMapping("/create") @Operation(summary = "å建工ä½è®°å½") @PreAuthorize("@ss.hasPermission('ecg:job-record:create')") public CommonResult<Long> createJobRecord(@Valid @RequestBody JobRecordSaveReqVO createReqVO) { return success(jobRecordService.createJobRecord(createReqVO)); } @PutMapping("/update") @Operation(summary = "æ´æ°å·¥ä½è®°å½") @PreAuthorize("@ss.hasPermission('ecg:job-record:update')") public CommonResult<Boolean> updateJobRecord(@Valid @RequestBody JobRecordSaveReqVO updateReqVO) { jobRecordService.updateJobRecord(updateReqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "å é¤å·¥ä½è®°å½") @Parameter(name = "id", description = "ç¼å·", required = true) @PreAuthorize("@ss.hasPermission('ecg:job-record:delete')") public CommonResult<Boolean> deleteJobRecord(@RequestParam("id") Long id) { jobRecordService.deleteJobRecord(id); return success(true); } @GetMapping("/get") @Operation(summary = "è·å¾å·¥ä½è®°å½") @Parameter(name = "id", description = "ç¼å·", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('ecg:job-record:query')") public CommonResult<JobRecordRespVO> getJobRecord(@RequestParam("id") Long id) { JobRecordDO jobRecord = jobRecordService.getJobRecord(id); return success(BeanUtils.toBean(jobRecord, JobRecordRespVO.class)); } @GetMapping("/page") @Operation(summary = "è·å¾å·¥ä½è®°å½å页") @PreAuthorize("@ss.hasPermission('ecg:job-record:query')") public CommonResult<PageResult<JobRecordRespVO>> getJobRecordPage(@Valid JobRecordPageReqVO pageReqVO) { PageResult<JobRecordDO> pageResult = jobRecordService.getJobRecordPage(pageReqVO); return success(BeanUtils.toBean(pageResult, JobRecordRespVO.class)); } @GetMapping("/export-excel") @Operation(summary = "导åºå·¥ä½è®°å½ Excel") @PreAuthorize("@ss.hasPermission('ecg:job-record:export')") @ApiAccessLog(operateType = EXPORT) public void exportJobRecordExcel(@Valid JobRecordPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List<JobRecordDO> list = jobRecordService.getJobRecordPage(pageReqVO).getList(); // å¯¼åº Excel ExcelUtils.write(response, "å·¥ä½è®°å½.xls", "æ°æ®", JobRecordRespVO.class, BeanUtils.toBean(list, JobRecordRespVO.class)); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordPageReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,50 @@ package cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; import cn.lihu.jh.framework.common.pojo.PageParam; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import static cn.lihu.jh.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管çåå° - å·¥ä½è®°å½å页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class JobRecordPageReqVO extends PageParam { @Schema(description = "ä½ä¸ç±»å", example = "1") private Integer jobType; @Schema(description = "å»çç¼å·", example = "24197") private Long docId; @Schema(description = "å»çåç§°", example = "èµµå ") private String docName; @Schema(description = "设å¤ç¼å·", example = "9159") private String devId; @Schema(description = "æ£è ç¼å·", example = "19193") private String patId; @Schema(description = "æ£è åç§°", example = "èè¿") private String patName; @Schema(description = "ä½ä¸æ¶é´") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] jobTime; @Schema(description = "ä½ä¸æ¦è¦") private Integer summary; @Schema(description = "夿³¨", example = "ä½ ç") private String remark; @Schema(description = "å建æ¶é´") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordRespVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ package cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import com.alibaba.excel.annotation.*; @Schema(description = "管çåå° - å·¥ä½è®°å½ Response VO") @Data @ExcelIgnoreUnannotated public class JobRecordRespVO { @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2037") @ExcelProperty("id") private Long id; @Schema(description = "ä½ä¸ç±»å", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty("ä½ä¸ç±»å") private Integer jobType; @Schema(description = "å»çç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "24197") @ExcelProperty("å»çç¼å·") private Long docId; @Schema(description = "å»çåç§°", example = "èµµå ") @ExcelProperty("å»çåç§°") private String docName; @Schema(description = "设å¤ç¼å·", example = "9159") @ExcelProperty("设å¤ç¼å·") private String devId; @Schema(description = "æ£è ç¼å·", example = "19193") @ExcelProperty("æ£è ç¼å·") private String patId; @Schema(description = "æ£è åç§°", example = "èè¿") @ExcelProperty("æ£è åç§°") private String patName; @Schema(description = "ä½ä¸æ¶é´") @ExcelProperty("ä½ä¸æ¶é´") private LocalDateTime jobTime; @Schema(description = "ä½ä¸æ¦è¦") @ExcelProperty("ä½ä¸æ¦è¦") private Integer summary; @Schema(description = "夿³¨", example = "ä½ ç") @ExcelProperty("夿³¨") private String remark; @Schema(description = "å建æ¶é´", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("å建æ¶é´") private LocalDateTime createTime; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordSaveReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import jakarta.validation.constraints.*; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; @Schema(description = "管çåå° - å·¥ä½è®°å½æ°å¢/ä¿®æ¹ Request VO") @Data public class JobRecordSaveReqVO { @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2037") private Long id; @Schema(description = "ä½ä¸ç±»å", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "ä½ä¸ç±»åä¸è½ä¸ºç©º") private Integer jobType; @Schema(description = "å»çç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "24197") @NotNull(message = "å»çç¼å·ä¸è½ä¸ºç©º") private Long docId; @Schema(description = "å»çåç§°", example = "èµµå ") private String docName; @Schema(description = "设å¤ç¼å·", example = "9159") private String devId; @Schema(description = "æ£è ç¼å·", example = "19193") private String patId; @Schema(description = "æ£è åç§°", example = "èè¿") private String patName; @Schema(description = "ä½ä¸æ¶é´") private LocalDateTime jobTime; @Schema(description = "ä½ä¸æ¦è¦") private Integer summary; @Schema(description = "夿³¨", example = "ä½ ç") private String remark; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/jobrecord/JobRecordDO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,68 @@ package cn.lihu.jh.module.ecg.dal.dataobject.jobrecord; import lombok.*; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO; /** * å·¥ä½è®°å½ DO * * @author èéæºç */ @TableName("job_record") @KeySequence("job_record_seq") // ç¨äº OracleãPostgreSQLãKingbaseãDB2ãH2 æ°æ®åºç主é®èªå¢ãå¦ææ¯ MySQL çæ°æ®åºï¼å¯ä¸åã @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class JobRecordDO extends BaseDO { /** * id */ @TableId private Long id; /** * ä½ä¸ç±»å */ private Integer jobType; /** * å»çç¼å· */ private Long docId; /** * å»çåç§° */ private String docName; /** * 设å¤ç¼å· */ private String devId; /** * æ£è ç¼å· */ private String patId; /** * æ£è åç§° */ private String patName; /** * ä½ä¸æ¶é´ */ private LocalDateTime jobTime; /** * ä½ä¸æ¦è¦ */ private Integer summary; /** * 夿³¨ */ private String remark; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/jobrecord/JobRecordMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package cn.lihu.jh.module.ecg.dal.mysql.jobrecord; import java.util.*; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.lihu.jh.framework.mybatis.core.mapper.BaseMapperX; import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO; import org.apache.ibatis.annotations.Mapper; import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.*; /** * å·¥ä½è®°å½ Mapper * * @author èéæºç */ @Mapper public interface JobRecordMapper extends BaseMapperX<JobRecordDO> { default PageResult<JobRecordDO> selectPage(JobRecordPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX<JobRecordDO>() .eqIfPresent(JobRecordDO::getJobType, reqVO.getJobType()) .eqIfPresent(JobRecordDO::getDocId, reqVO.getDocId()) .likeIfPresent(JobRecordDO::getDocName, reqVO.getDocName()) .eqIfPresent(JobRecordDO::getDevId, reqVO.getDevId()) .eqIfPresent(JobRecordDO::getPatId, reqVO.getPatId()) .likeIfPresent(JobRecordDO::getPatName, reqVO.getPatName()) .betweenIfPresent(JobRecordDO::getJobTime, reqVO.getJobTime()) .eqIfPresent(JobRecordDO::getSummary, reqVO.getSummary()) .eqIfPresent(JobRecordDO::getRemark, reqVO.getRemark()) .betweenIfPresent(JobRecordDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(JobRecordDO::getId)); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/jobrecord/JobRecordService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ package cn.lihu.jh.module.ecg.service.jobrecord; import java.util.*; import jakarta.validation.*; import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.pojo.PageParam; /** * å·¥ä½è®°å½ Service æ¥å£ * * @author èéæºç */ public interface JobRecordService { /** * å建工ä½è®°å½ * * @param createReqVO åå»ºä¿¡æ¯ * @return ç¼å· */ Long createJobRecord(@Valid JobRecordSaveReqVO createReqVO); /** * æ´æ°å·¥ä½è®°å½ * * @param updateReqVO æ´æ°ä¿¡æ¯ */ void updateJobRecord(@Valid JobRecordSaveReqVO updateReqVO); /** * å é¤å·¥ä½è®°å½ * * @param id ç¼å· */ void deleteJobRecord(Long id); /** * è·å¾å·¥ä½è®°å½ * * @param id ç¼å· * @return å·¥ä½è®°å½ */ JobRecordDO getJobRecord(Long id); /** * è·å¾å·¥ä½è®°å½å页 * * @param pageReqVO å页æ¥è¯¢ * @return å·¥ä½è®°å½å页 */ PageResult<JobRecordDO> getJobRecordPage(JobRecordPageReqVO pageReqVO); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/jobrecord/JobRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ package cn.lihu.jh.module.ecg.service.jobrecord; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.pojo.PageParam; import cn.lihu.jh.framework.common.util.object.BeanUtils; import cn.lihu.jh.module.ecg.dal.mysql.jobrecord.JobRecordMapper; import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*; /** * å·¥ä½è®°å½ Service å®ç°ç±» * * @author èéæºç */ @Service @Validated public class JobRecordServiceImpl implements JobRecordService { @Resource private JobRecordMapper jobRecordMapper; @Override public Long createJobRecord(JobRecordSaveReqVO createReqVO) { // æå ¥ JobRecordDO jobRecord = BeanUtils.toBean(createReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); // è¿å return jobRecord.getId(); } @Override public void updateJobRecord(JobRecordSaveReqVO updateReqVO) { // æ ¡éªåå¨ validateJobRecordExists(updateReqVO.getId()); // æ´æ° JobRecordDO updateObj = BeanUtils.toBean(updateReqVO, JobRecordDO.class); jobRecordMapper.updateById(updateObj); } @Override public void deleteJobRecord(Long id) { // æ ¡éªåå¨ validateJobRecordExists(id); // å é¤ jobRecordMapper.deleteById(id); } private void validateJobRecordExists(Long id) { if (jobRecordMapper.selectById(id) == null) { throw exception(JOB_RECORD_NOT_EXISTS); } } @Override public JobRecordDO getJobRecord(Long id) { return jobRecordMapper.selectById(id); } @Override public PageResult<JobRecordDO> getJobRecordPage(JobRecordPageReqVO pageReqVO) { return jobRecordMapper.selectPage(pageReqVO); } } jh-module-ecg/jh-module-ecg-biz/src/main/resources/mapper/jobrecord/JobRecordMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.lihu.jh.module.ecg.dal.mysql.jobrecord.JobRecordMapper"> <!-- ä¸è¬æ åµä¸ï¼å°½å¯è½ä½¿ç¨ Mapper è¿è¡ CRUD å¢å æ¹æ¥å³å¯ã æ æ³æ»¡è¶³çåºæ¯ï¼ä¾å¦è¯´å¤è¡¨å ³èæ¥è¯¢ï¼æä½¿ç¨ XML ç¼å SQLã 代ç çæå¨ææ¶åªçæ Mapper XML æä»¶æ¬èº«ï¼æ´å¤æ¨è MybatisX å¿«éå¼åæä»¶æ¥çææ¥è¯¢ã ææ¡£å¯è§ï¼https://www.iocoder.cn/MyBatis/x-plugins/ --> </mapper> sql/mysql/jh.sql
@@ -166,7 +166,7 @@ CREATE TABLE `job_record` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', `job_type` int NOT NULL COMMENT 'ä½ä¸ç±»å', `doc_id` varchar(45) DEFAULT NULL COMMENT 'å»çç¼å·', `doc_id` bigint NOT NULL COMMENT 'å»çç¼å·', `doc_name` varchar(45) DEFAULT NULL COMMENT 'å»çåç§°', `dev_id` varchar(45) DEFAULT NULL COMMENT '设å¤ç¼å·', `pat_id` varchar(45) DEFAULT NULL COMMENT 'æ£è ç¼å·',