From 92ca5218dc6186881a5b24c0592ff23baaff6064 Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 14:30:44 +0800 Subject: [PATCH 1/8] =?UTF-8?q?update:=20=E6=BC=94=E7=BB=83=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/safeproduct/vo/RehearsalDetailVO.java | 55 ---------------------- .../safeproduct/vo/RehearsalRecordDetailVO.java | 55 ++++++++++++++++++++++ .../controller/RehearsalController.java | 8 ++-- .../safeproduct/mapper/RehearsalRecordMapper.java | 4 +- .../safeproduct/mapper/RehearsalRecordMapper.xml | 2 +- .../service/IRehearsalRecordService.java | 6 +-- .../service/impl/RehearsalRecordServiceImpl.java | 20 ++++++-- 7 files changed, 80 insertions(+), 70 deletions(-) delete mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java deleted file mode 100644 index bb7bd8e..0000000 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hnac.hzims.safeproduct.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Date; - -/** - * @author liwen - * @date 2024-01-15 - */ -@Data -@ApiModel(value = "演练记录表VO类") -public class RehearsalDetailVO { - - @ApiModelProperty("编码") - private String code; - - @ApiModelProperty("参演人员") - private String peopleName; - - @ApiModelProperty("演练实际开始时间") - private Date actualStartTime; - - @ApiModelProperty("演练实际结束时间") - private Date actualEndTime; - - @ApiModelProperty("演练记录") - private String record; - - @ApiModelProperty("演练评价") - private String comment; - - @ApiModelProperty("演练图片") - private String imgPath; - - @ApiModelProperty("演练附件") - private String filePath; - - @ApiModelProperty("单位") - private String unit; - - @ApiModelProperty("演练地点") - private String location; - - @ApiModelProperty("总指挥") - private String commander; - - @ApiModelProperty("演练方式") - private String rehearsalMethod; - - @ApiModelProperty("演练科目") - private String subject; -} diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java new file mode 100644 index 0000000..86afcbe --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalRecordDetailVO.java @@ -0,0 +1,55 @@ +package com.hnac.hzims.safeproduct.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author liwen + * @date 2024-01-15 + */ +@Data +@ApiModel(value = "演练记录表VO类") +public class RehearsalRecordDetailVO { + + @ApiModelProperty("编码") + private String code; + + @ApiModelProperty("参演人员") + private String peopleName; + + @ApiModelProperty("演练实际开始时间") + private Date actualStartTime; + + @ApiModelProperty("演练实际结束时间") + private Date actualEndTime; + + @ApiModelProperty("演练记录") + private String record; + + @ApiModelProperty("演练评价") + private String comment; + + @ApiModelProperty("演练图片") + private String imgPath; + + @ApiModelProperty("演练附件") + private String filePath; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("演练地点") + private String location; + + @ApiModelProperty("总指挥") + private String commander; + + @ApiModelProperty("演练方式") + private String rehearsalMethod; + + @ApiModelProperty("演练科目") + private String subject; +} diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java index 60c96c9..afb6c70 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java @@ -7,7 +7,7 @@ import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity; import com.hnac.hzims.safeproduct.service.IRehearsalPlanService; import com.hnac.hzims.safeproduct.service.IRehearsalRecordService; -import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; +import com.hnac.hzims.safeproduct.vo.RehearsalRecordDetailVO; import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; import io.swagger.annotations.Api; @@ -106,7 +106,7 @@ public class RehearsalController extends BladeController { @GetMapping("/rehearsalRecordDetail") @ApiOperation(value = "演练记录详情") @ApiOperationSupport(order = 9) - public R rehearsalRecordDetail(@RequestParam Long id) { + public R rehearsalRecordDetail(@RequestParam Long id) { return R.data(rehearsalRecordService.getRecordDetailVOById(id)); } @@ -153,7 +153,7 @@ public class RehearsalController extends BladeController { @GetMapping("/exportRecordDetailData") @ApiOperation(value = "演练记录表导出") @ApiOperationSupport(order = 14) - public void exportRecordDetailData(@RequestParam Long id, HttpServletResponse response) { - rehearsalRecordService.exportRecordDetailData(id, response); + public void exportRehearsalRecordData(@RequestParam Long id, HttpServletResponse response) { + rehearsalRecordService.exportRehearsalRecordData(id, response); } } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java index 9cbd708..9a55888 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java @@ -2,7 +2,7 @@ package com.hnac.hzims.safeproduct.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity; -import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; +import com.hnac.hzims.safeproduct.vo.RehearsalRecordDetailVO; import org.apache.ibatis.annotations.Mapper; /** @@ -19,5 +19,5 @@ public interface RehearsalRecordMapper extends BaseMapper * @param id 演练记录id * @return 演练记录表VO类 */ - RehearsalDetailVO getRecordDetailVOById(Long id); + RehearsalRecordDetailVO getRecordDetailVOById(Long id); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml index 4eb9ff8..eecddec 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml @@ -2,7 +2,7 @@ - SELECT t1.code, t1.actual_start_time, t1.actual_end_time, t2.unit, t2.location, t2.rehearsal_method, t2.commander, t2.subject, t1.people_name, t1.record, t1.img_path, t1.command, t1.file_path diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java index 8f5d5e2..83dec8b 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java @@ -2,7 +2,7 @@ package com.hnac.hzims.safeproduct.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity; -import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; +import com.hnac.hzims.safeproduct.vo.RehearsalRecordDetailVO; import javax.servlet.http.HttpServletResponse; @@ -40,12 +40,12 @@ public interface IRehearsalRecordService extends IService * @param id 演练记录id * @param response 响应类 */ - void exportRecordDetailData(Long id, HttpServletResponse response); + void exportRehearsalRecordData(Long id, HttpServletResponse response); /** * 查询演练记录表详情 * @param id 演练记录id * @return 演练记录表VO类 */ - RehearsalDetailVO getRecordDetailVOById(Long id); + RehearsalRecordDetailVO getRecordDetailVOById(Long id); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java index f6ece0d..68dbb45 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java @@ -8,12 +8,13 @@ import com.hnac.hzims.common.logs.utils.StringUtils; import com.hnac.hzims.safeproduct.constants.SafeProductConstant; import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity; +import com.hnac.hzims.safeproduct.enums.RehearsalMethodEnum; import com.hnac.hzims.safeproduct.enums.RehearsalStatusEnum; import com.hnac.hzims.safeproduct.mapper.RehearsalPlanMapper; import com.hnac.hzims.safeproduct.mapper.RehearsalRecordMapper; import com.hnac.hzims.safeproduct.service.IRehearsalRecordService; import com.hnac.hzims.safeproduct.utils.BaseUtil; -import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; +import com.hnac.hzims.safeproduct.vo.RehearsalRecordDetailVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -129,9 +130,18 @@ public class RehearsalRecordServiceImpl extends ServiceImpl params = BaseUtil.obj2Map(rehearsalDetailVO); + public void exportRehearsalRecordData(Long id, HttpServletResponse response) { + RehearsalRecordDetailVO rehearsalRecordDetailVO = this.getRecordDetailVOById(id); + // 演练方式字段 + String rehearsalMethod = rehearsalRecordDetailVO.getRehearsalMethod(); + if (rehearsalMethod.equals(RehearsalMethodEnum.MIXED.getValue())) { + rehearsalRecordDetailVO.setRehearsalMethod(RehearsalMethodEnum.MIXED.getDesc()); + } else if (rehearsalMethod.equals(RehearsalMethodEnum.ONLINE.getValue())) { + rehearsalRecordDetailVO.setRehearsalMethod(RehearsalMethodEnum.ONLINE.getDesc()); + } else { + rehearsalRecordDetailVO.setRehearsalMethod(RehearsalMethodEnum.OFFLINE.getDesc()); + } + Map params = BaseUtil.obj2Map(rehearsalRecordDetailVO); String templateFile = "template/演练记录表" + SafeProductConstant.DOCX_SUFFIX; String wordPath = savePath + "/演练记录表" + SafeProductConstant.DOCX_SUFFIX; String pdfPath = savePath + "/演练记录表" + SafeProductConstant.PDF_SUFFIX; @@ -142,7 +152,7 @@ public class RehearsalRecordServiceImpl extends ServiceImpl Date: Mon, 15 Jan 2024 14:35:17 +0800 Subject: [PATCH 2/8] =?UTF-8?q?update:=20=E5=9F=B9=E8=AE=AD=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/entity/TrainRecordEntity.java | 10 --- .../hzims/safeproduct/enums/TrainMethodEnum.java | 31 ++++++++ .../hzims/safeproduct/vo/TrainRecordDetailVO.java | 55 +++++++++++++ .../safeproduct/controller/TrainController.java | 14 ++-- .../safeproduct/mapper/TrainRecordMapper.java | 8 ++ .../hzims/safeproduct/mapper/TrainRecordMapper.xml | 12 +++ .../safeproduct/service/ITrainRecordService.java | 13 +++- .../service/impl/TrainRecordServiceImpl.java | 90 +++++++--------------- 8 files changed, 151 insertions(+), 82 deletions(-) create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TrainMethodEnum.java create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/TrainRecordDetailVO.java diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TrainRecordEntity.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TrainRecordEntity.java index b8728dc..ad42f8a 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TrainRecordEntity.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TrainRecordEntity.java @@ -1,7 +1,5 @@ package com.hnac.hzims.safeproduct.entity; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -18,7 +16,6 @@ import java.util.Date; */ @Data @EqualsAndHashCode(callSuper = true) -@ExcelIgnoreUnannotated @TableName("hzims_train_record") @ApiModel(value = "培训记录实体类") public class TrainRecordEntity extends BaseEntity { @@ -28,34 +25,27 @@ public class TrainRecordEntity extends BaseEntity { @Size(max = 50, message = "名称字段长度不能超过50") @ApiModelProperty("培训记录名称") - @ExcelProperty(value = "培训记录名称", index = 1) private String trainRecordName; @Size(max = 50, message = "编码字段长度不能超过50") @ApiModelProperty("编码") - @ExcelProperty(value = "编码", index = 0) private String code; @Size(max = 5000, message = "培训学员字段长度超出限制范围") @ApiModelProperty("培训学员") - @ExcelProperty(value = "培训学员", index = 3) private String peopleName; @ApiModelProperty("培训内容") - @ExcelProperty(value = "培训内容", index = 2) private String content; @ApiModelProperty("实际培训开始时间") - @ExcelProperty(value = "实际开始时间", index = 5) private Date actualStartTime; @ApiModelProperty("实际培训结束时间") - @ExcelProperty(value = "实际结束时间", index = 6) private Date actualEndTime; @Size(max = 250, message = "培训评价字段长度不能超过250") @ApiModelProperty("培训评价") - @ExcelProperty(value = "培训评价", index = 4) private String command; @Size(max = 1000, message = "培训图片字段长度不能超过1000") diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TrainMethodEnum.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TrainMethodEnum.java new file mode 100644 index 0000000..843244d --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TrainMethodEnum.java @@ -0,0 +1,31 @@ +package com.hnac.hzims.safeproduct.enums; + +/** + * 培训方式枚举类 + * + * @author liwen + * @date 2024-01-15 + */ +public enum TrainMethodEnum { + + ONLINE("ONLINE", "线上"), + OFFLINE("OFFLINE", "线下"), + MIXED("MIXED", "线上+线下"); + + private final String value; + + private final String desc; + + TrainMethodEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } + + public String getValue() { + return value; + } + + public String getDesc() { + return desc; + } +} diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/TrainRecordDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/TrainRecordDetailVO.java new file mode 100644 index 0000000..ecf6b78 --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/TrainRecordDetailVO.java @@ -0,0 +1,55 @@ +package com.hnac.hzims.safeproduct.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author liwen + * @date 2024-01-15 + */ +@Data +@ApiModel(value = "培训记录表VO类") +public class TrainRecordDetailVO { + + @ApiModelProperty("编码") + private String code; + + @ApiModelProperty("实际培训开始时间") + private Date actualStartTime; + + @ApiModelProperty("实际培训结束时间") + private Date actualEndTime; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("培训地点") + private String location; + + @ApiModelProperty("培训方式") + private String trainMethod; + + @ApiModelProperty("培训讲师") + private String teacher; + + @ApiModelProperty("培训课程") + private String lesson; + + @ApiModelProperty("培训学员") + private String peopleName; + + @ApiModelProperty("培训内容") + private String content; + + @ApiModelProperty("培训评价") + private String command; + + @ApiModelProperty("培训图片") + private String imgPath; + + @ApiModelProperty("培训附件") + private String filePath; +} diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java index 8cf7a62..0cd49d3 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java @@ -15,6 +15,7 @@ import com.hnac.hzims.safeproduct.service.ITrainPlanService; import com.hnac.hzims.safeproduct.service.ITrainRecordService; import com.hnac.hzims.safeproduct.vo.TestScoreVO; import com.hnac.hzims.safeproduct.vo.TrainMonthVO; +import com.hnac.hzims.safeproduct.vo.TrainRecordDetailVO; import com.hnac.hzims.safeproduct.vo.TrainYearVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -117,8 +118,8 @@ public class TrainController extends BladeController { @GetMapping("/trainRecordDetail") @ApiOperation(value = "培训记录详情") @ApiOperationSupport(order = 9) - public R trainRecordDetail(@RequestParam Long id) { - return R.data(trainRecordService.getById(id)); + public R trainRecordDetail(@RequestParam Long id) { + return R.data(trainRecordService.getTrainRecordDetailById(id)); } @GetMapping("/trainRecordPage") @@ -234,12 +235,9 @@ public class TrainController extends BladeController { } @GetMapping("/exportTrainRecordData") - @ApiImplicitParams({ - @ApiImplicitParam(name = "trainPlanId", value = "培训计划id", dataType = "query", paramType = "string") - }) - @ApiOperation(value = "培训记录数据导出") + @ApiOperation(value = "培训记录表导出") @ApiOperationSupport(order = 23) - public void exportTrainRecordData(@ApiIgnore @RequestParam Map param, HttpServletResponse response) { - trainRecordService.exportTrainRecordData(param, response); + public void exportTrainRecordData(@RequestParam Long id, HttpServletResponse response) { + trainRecordService.exportTrainRecordData(id, response); } } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java index 2e170c9..a268688 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java @@ -3,6 +3,7 @@ package com.hnac.hzims.safeproduct.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hnac.hzims.safeproduct.dto.TrainRecordDTO; import com.hnac.hzims.safeproduct.entity.TrainRecordEntity; +import com.hnac.hzims.safeproduct.vo.TrainRecordDetailVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -22,4 +23,11 @@ public interface TrainRecordMapper extends BaseMapper { * @return 培训记录名称列表 */ List getTrainRecordNameList(String trainPlanId); + + /** + * 查询培训记录表详情 + * @param id 培训记录id + * @return 培训记录表VO类 + */ + TrainRecordDetailVO getTrainRecordDetailById(Long id); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml index 01f1e58..e4f15af 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml @@ -15,4 +15,16 @@ ORDER BY create_time DESC + + \ No newline at end of file diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java index bd89033..13d443a 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java @@ -3,10 +3,10 @@ package com.hnac.hzims.safeproduct.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hnac.hzims.safeproduct.dto.TrainRecordDTO; import com.hnac.hzims.safeproduct.entity.TrainRecordEntity; +import com.hnac.hzims.safeproduct.vo.TrainRecordDetailVO; import javax.servlet.http.HttpServletResponse; import java.util.List; -import java.util.Map; /** * 培训记录服务类 @@ -53,8 +53,15 @@ public interface ITrainRecordService extends IService { /** * 培训记录数据导出 - * @param param 入参 + * @param id 培训记录id * @param response 响应类 */ - void exportTrainRecordData(Map param, HttpServletResponse response); + void exportTrainRecordData(Long id, HttpServletResponse response); + + /** + * 查询培训记录表详情 + * @param id 培训记录id + * @return 培训记录表VO类 + */ + TrainRecordDetailVO getTrainRecordDetailById(Long id); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java index c2312e4..f791960 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java @@ -1,35 +1,28 @@ package com.hnac.hzims.safeproduct.service.impl; import cn.hutool.core.date.DatePattern; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.ExcelWriter; -import com.alibaba.excel.converters.longconverter.LongStringConverter; import com.alibaba.excel.util.CollectionUtils; -import com.alibaba.excel.write.metadata.WriteSheet; -import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hnac.hzims.safeproduct.constants.SafeProductConstant; import com.hnac.hzims.safeproduct.dto.TrainRecordDTO; import com.hnac.hzims.safeproduct.entity.TrainPlanEntity; import com.hnac.hzims.safeproduct.entity.TrainRecordEntity; +import com.hnac.hzims.safeproduct.enums.TrainMethodEnum; import com.hnac.hzims.safeproduct.enums.TrainStatusEnum; import com.hnac.hzims.safeproduct.mapper.TrainPlanMapper; import com.hnac.hzims.safeproduct.mapper.TrainRecordMapper; import com.hnac.hzims.safeproduct.service.ITestService; import com.hnac.hzims.safeproduct.service.ITrainRecordService; import com.hnac.hzims.safeproduct.utils.BaseUtil; -import org.springblade.core.log.exception.ServiceException; +import com.hnac.hzims.safeproduct.vo.TrainRecordDetailVO; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URLEncoder; import java.util.Date; import java.util.List; import java.util.Map; @@ -50,6 +43,9 @@ public class TrainRecordServiceImpl extends ServiceImpl param, HttpServletResponse response) { - ServletOutputStream outputStream = null; - try { - outputStream = response.getOutputStream(); - String trainPlanId = String.valueOf(param.get("trainPlanId")); - List trainRecordList = getTrainRecordByTrainPlanId(trainPlanId); - // 设置响应头 - // URLEncoder.encode防止中文乱码 - String fileName = URLEncoder.encode("培训记录表", "UTF-8"); - response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); - response.setContentType("application/vnd.ms-excel"); - response.setCharacterEncoding("UTF-8"); - // ExcelWriter初始化 - ExcelWriter excelWriter = EasyExcel - .write(response.getOutputStream()) - .autoCloseStream(Boolean.TRUE) - .registerConverter(new LongStringConverter()) - .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) - .build(); - WriteSheet writeSheet = EasyExcel.writerSheet(1, "培训记录表").head(TrainRecordEntity.class) - .build(); - excelWriter.write(trainRecordList, writeSheet); - excelWriter.finish(); - } catch (Exception e) { - // 重置response - response.reset(); - response.setContentType("application/json"); - response.setCharacterEncoding("utf-8"); - throw new ServiceException("培训记录数据导出异常: " + e.getMessage()); - } finally { - if (outputStream != null) { - try { - outputStream.close(); - } catch (IOException e) { - log.error("培训记录导出响应头输出流关闭异常: " + e.getMessage()); - } - } + public void exportTrainRecordData(Long id, HttpServletResponse response) { + TrainRecordDetailVO trainRecordDetailVO = this.getTrainRecordDetailById(id); + // 培训方式字段 + String trainMethod = trainRecordDetailVO.getTrainMethod(); + if (trainMethod.equals(TrainMethodEnum.MIXED.getValue())) { + trainRecordDetailVO.setTrainMethod(TrainMethodEnum.MIXED.getDesc()); + } else if (trainMethod.equals(TrainMethodEnum.ONLINE.getValue())) { + trainRecordDetailVO.setTrainMethod(TrainMethodEnum.ONLINE.getDesc()); + } else { + trainRecordDetailVO.setTrainMethod(TrainMethodEnum.OFFLINE.getDesc()); } + Map params = BaseUtil.obj2Map(trainRecordDetailVO); + String templateFile = "template/培训记录表" + SafeProductConstant.DOCX_SUFFIX; + String wordPath = savePath + "/培训记录表" + SafeProductConstant.DOCX_SUFFIX; + String pdfPath = savePath + "/培训记录表" + SafeProductConstant.PDF_SUFFIX; + BaseUtil.exportDocument(templateFile, params, wordPath, pdfPath, response); + } + + /** + * 查询培训记录表详情 + */ + @Override + public TrainRecordDetailVO getTrainRecordDetailById(Long id) { + return baseMapper.getTrainRecordDetailById(id); } /** @@ -202,18 +184,4 @@ public class TrainRecordServiceImpl extends ServiceImpl getTrainRecordByTrainPlanId(String trainPlanId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (!trainPlanId.equals("null")) { - queryWrapper.ge(TrainRecordEntity::getTrainPlanId, trainPlanId); - } - queryWrapper.orderByDesc(TrainRecordEntity::getCreateTime); - return this.list(queryWrapper); - } } From e3232d0227ad0543e760c6ac854b054e6acda06e Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 14:36:07 +0800 Subject: [PATCH 3/8] =?UTF-8?q?update:=20=E4=BC=9A=E8=AE=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/vo/ConferenceRecordDetailVO.java | 52 ++++++++++++++++++++++ .../controller/ConferenceController.java | 12 ++++- .../safeproduct/mapper/ConferenceRecordMapper.java | 7 +++ .../safeproduct/mapper/ConferenceRecordMapper.xml | 12 +++++ .../service/IConferenceRecordService.java | 17 +++++++ .../service/impl/ConferenceRecordServiceImpl.java | 38 ++++++++++++++++ 6 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/ConferenceRecordDetailVO.java diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/ConferenceRecordDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/ConferenceRecordDetailVO.java new file mode 100644 index 0000000..87880ad --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/ConferenceRecordDetailVO.java @@ -0,0 +1,52 @@ +package com.hnac.hzims.safeproduct.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author liwen + * @date 2024-01-15 + */ +@Data +@ApiModel(value = "会议记录表VO类") +public class ConferenceRecordDetailVO { + + @ApiModelProperty("会议实际开始时间") + private Date actualStartTime; + + @ApiModelProperty("会议实际结束时间") + private Date actualEndTime; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("会议地点") + private String location; + + @ApiModelProperty("主持人") + private String host; + + @ApiModelProperty("会议方式") + private String conferenceMethod; + + @ApiModelProperty("会议主题") + private String theme; + + @ApiModelProperty("记录人") + private String recorder; + + @ApiModelProperty("参会人员") + private String peopleName; + + @ApiModelProperty("会议内容") + private String content; + + @ApiModelProperty("会议图片") + private String imgPath; + + @ApiModelProperty("会议附件") + private String filePath; +} diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java index 2a09af6..8b1f328 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java @@ -7,6 +7,7 @@ import com.hnac.hzims.safeproduct.entity.ConferencePlanEntity; import com.hnac.hzims.safeproduct.entity.ConferenceRecordEntity; import com.hnac.hzims.safeproduct.service.IConferencePlanService; import com.hnac.hzims.safeproduct.service.IConferenceRecordService; +import com.hnac.hzims.safeproduct.vo.ConferenceRecordDetailVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -103,8 +104,8 @@ public class ConferenceController extends BladeController { @GetMapping("/recordDetail") @ApiOperation(value = "会议记录详情") @ApiOperationSupport(order = 9) - public R recordDetail(@RequestParam Long id) { - return R.data(conferenceRecordService.getById(id)); + public R recordDetail(@RequestParam Long id) { + return R.data(conferenceRecordService.getConferenceRecordDetailById(id)); } @GetMapping("/recordPage") @@ -130,4 +131,11 @@ public class ConferenceController extends BladeController { public void exportConferenceData(@ApiIgnore @RequestParam Map param, HttpServletResponse response) { conferencePlanService.exportConferenceData(param, response); } + + @GetMapping("/exportConferenceRecordData") + @ApiOperation(value = "会议记录表导出") + @ApiOperationSupport(order = 12) + public void exportConferenceRecordData(@RequestParam Long id, HttpServletResponse response) { + conferenceRecordService.exportConferenceRecordData(id, response); + } } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.java index eed6c2c..85d3c62 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.java @@ -2,6 +2,7 @@ package com.hnac.hzims.safeproduct.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hnac.hzims.safeproduct.entity.ConferenceRecordEntity; +import com.hnac.hzims.safeproduct.vo.ConferenceRecordDetailVO; import org.apache.ibatis.annotations.Mapper; /** @@ -13,4 +14,10 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ConferenceRecordMapper extends BaseMapper { + /** + * 查询会议记录表详情 + * @param id 会议记录id + * @return 会议记录表VO类 + */ + ConferenceRecordDetailVO getConferenceRecordDetailById(Long id); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.xml index ccb0eac..1de030a 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/ConferenceRecordMapper.xml @@ -1,4 +1,16 @@ + \ No newline at end of file diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferenceRecordService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferenceRecordService.java index b7b867d..a792243 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferenceRecordService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferenceRecordService.java @@ -2,6 +2,9 @@ package com.hnac.hzims.safeproduct.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hnac.hzims.safeproduct.entity.ConferenceRecordEntity; +import com.hnac.hzims.safeproduct.vo.ConferenceRecordDetailVO; + +import javax.servlet.http.HttpServletResponse; /** * 会议记录服务类 @@ -24,4 +27,18 @@ public interface IConferenceRecordService extends IService params = BaseUtil.obj2Map(conferenceRecordDetailVO); + String templateFile = "template/会议记录表" + SafeProductConstant.DOCX_SUFFIX; + String wordPath = savePath + "/会议记录表" + SafeProductConstant.DOCX_SUFFIX; + String pdfPath = savePath + "/会议记录表" + SafeProductConstant.PDF_SUFFIX; + BaseUtil.exportDocument(templateFile, params, wordPath, pdfPath, response); + } + + /** + * 查询会议记录表详情 + */ + @Override + public ConferenceRecordDetailVO getConferenceRecordDetailById(Long id) { + return baseMapper.getConferenceRecordDetailById(id); + } + + /** * 查询是否存在同月编号 * @param currentMonth 当月 * @return 存在则返回上一编号,否则返回null From 71b40978d780eaa8e64f5669683d908e6a8aa7ea Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 14:37:02 +0800 Subject: [PATCH 4/8] =?UTF-8?q?update:=20=E5=8D=AB=E7=94=9F=E8=87=AA?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/entity/HygieneRecordEntity.java | 2 + .../safeproduct/entity/HygieneZoneEntity.java | 5 ++ .../safeproduct/controller/HygieneController.java | 8 +-- .../safeproduct/service/IHygieneRecordService.java | 6 +- .../service/impl/HygieneRecordServiceImpl.java | 66 ++++------------------ 5 files changed, 25 insertions(+), 62 deletions(-) diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneRecordEntity.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneRecordEntity.java index e58f745..933ecb9 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneRecordEntity.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneRecordEntity.java @@ -39,9 +39,11 @@ public class HygieneRecordEntity extends BaseEntity { @ApiModelProperty("实际结束时间") private Date actualEndTime; + @Size(max = 20, message = "检查人字段长度不能超过20") @ApiModelProperty("检查人") private String checkUser; + @Size(max = 1000, message = "责任区id字段长度不能超过1000") @ApiModelProperty("责任区id") private String hygieneZoneIds; diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneZoneEntity.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneZoneEntity.java index 415e47b..5406110 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneZoneEntity.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneZoneEntity.java @@ -7,6 +7,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import javax.validation.constraints.Size; + /** * @author liwen * @date 2024-01-02 @@ -20,15 +22,18 @@ public class HygieneZoneEntity extends BaseEntity { @ApiModelProperty("卫生自查计划id") private Long hygienePlanId; + @Size(max = 50, message = "责任区字段长度不能超过50") @ApiModelProperty("责任区") private String zone; + @Size(max = 20, message = "责任人字段长度不能超过20") @ApiModelProperty("责任人") private String principal; @ApiModelProperty("检查项") private String checkItem; + @Size(max = 255, message = "检查项分值字段长度不能超过255") @ApiModelProperty("检查项分值") private String checkItemScore; } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/HygieneController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/HygieneController.java index 63bdafe..0a271f9 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/HygieneController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/HygieneController.java @@ -131,11 +131,11 @@ public class HygieneController extends BladeController { return R.data(page); } - @GetMapping("/exportHygieneData") - @ApiOperation(value = "卫生自查数据导出") + @GetMapping("/exportHygieneRecordData") + @ApiOperation(value = "卫生自查记录表导出") @ApiOperationSupport(order = 12) - public void exportHygieneData(@RequestParam Long hygieneRecordId, HttpServletResponse response) { - hygieneRecordService.exportHygieneData(hygieneRecordId, response); + public void exportHygieneRecordData(@RequestParam Long id, HttpServletResponse response) { + hygieneRecordService.exportHygieneRecordData(id, response); } @GetMapping("/exportMonthData") diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneRecordService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneRecordService.java index d717ad5..86d8637 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneRecordService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneRecordService.java @@ -57,9 +57,9 @@ public interface IHygieneRecordService extends IService { IPage recordPage(Map param, Query query); /** - * 卫生自查记录数据导出 - * @param hygieneRecordId 卫生自查记录id + * 卫生自查记录表导出 + * @param id 卫生自查记录id * @param response 响应类 */ - void exportHygieneData(Long hygieneRecordId, HttpServletResponse response); + void exportHygieneRecordData(Long id, HttpServletResponse response); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneRecordServiceImpl.java index 2baeec5..051e0c7 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneRecordServiceImpl.java @@ -1,13 +1,7 @@ package com.hnac.hzims.safeproduct.service.impl; import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.ExcelWriter; -import com.alibaba.excel.converters.longconverter.LongStringConverter; import com.alibaba.excel.util.CollectionUtils; -import com.alibaba.excel.write.metadata.WriteSheet; -import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -17,7 +11,6 @@ import com.hnac.hzims.safeproduct.dto.HygieneRecordDTO; import com.hnac.hzims.safeproduct.entity.HygienePlanEntity; import com.hnac.hzims.safeproduct.entity.HygieneRecordEntity; import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity; -import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; import com.hnac.hzims.safeproduct.enums.RehearsalStatusEnum; import com.hnac.hzims.safeproduct.mapper.HygienePlanMapper; import com.hnac.hzims.safeproduct.mapper.HygieneRecordMapper; @@ -27,18 +20,15 @@ import com.hnac.hzims.safeproduct.utils.BaseUtil; import com.hnac.hzims.safeproduct.vo.HygieneRecordPageVO; import com.hnac.hzims.safeproduct.vo.HygieneZoneDetailVO; import com.hnac.hzims.safeproduct.vo.HygieneRecordDetailVO; -import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URLEncoder; import java.time.LocalDate; import java.time.ZoneId; import java.time.temporal.WeekFields; @@ -60,6 +50,9 @@ public class HygieneRecordServiceImpl extends ServiceImpl records = recordDetailVO.getCheckList(); - // 设置响应头 - // URLEncoder.encode防止中文乱码 - String fileName = URLEncoder.encode("卫生自查记录数据表", "UTF-8"); - response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); - response.setContentType("application/vnd.ms-excel"); - response.setCharacterEncoding("UTF-8"); - // ExcelWriter初始化 - ExcelWriter excelWriter = EasyExcel - .write(response.getOutputStream()) - .autoCloseStream(Boolean.TRUE) - .registerConverter(new LongStringConverter()) - .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) - .build(); - Date endTime = recordDetailVO.getActualEndTime(); - String name = DateUtil.format(endTime, "yyyy年mm月") + "第" + recordDetailVO.getWeekNum() + "周卫生自查表"; - List head = new ArrayList<>(); - head.add(name); - WriteSheet writeSheet = EasyExcel.writerSheet(1, "卫生自查记录数据表") - .head(Collections.singletonList(head)) - .head(HygieneZoneDetailVO.class) - .build(); - excelWriter.write(records, writeSheet); - excelWriter.finish(); - } catch (Exception e) { - // 重置response - response.reset(); - response.setContentType("application/json"); - response.setCharacterEncoding("utf-8"); - throw new ServiceException("卫生自查记录数据导出异常: " + e.getMessage()); - } finally { - if (outputStream != null) { - try { - outputStream.close(); - } catch (IOException e) { - log.error("卫生自查记录数据导出输出流关闭异常: " + e.getMessage()); - } - } - } + public void exportHygieneRecordData(Long id, HttpServletResponse response) { + HygieneRecordDetailVO hygieneRecordDetailVO = this.getRecordDetail(id); + Map params = BaseUtil.obj2Map(hygieneRecordDetailVO); + String templateFile = "template/卫生自查记录表" + SafeProductConstant.DOCX_SUFFIX; + String wordPath = savePath + "/卫生自查记录表" + SafeProductConstant.DOCX_SUFFIX; + String pdfPath = savePath + "/卫生自查记录表" + SafeProductConstant.PDF_SUFFIX; + BaseUtil.exportDocument(templateFile, params, wordPath, pdfPath, response); } /** From eefe20e66b72fd023c7f940fc535ca96fec16e25 Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 14:39:07 +0800 Subject: [PATCH 5/8] =?UTF-8?q?update:=20=E8=BD=A6=E8=BE=86=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hnac/hzims/safeproduct/controller/CarController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/CarController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/CarController.java index 658d496..e977e2b 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/CarController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/CarController.java @@ -254,6 +254,10 @@ public class CarController extends BladeController { } @GetMapping("/exportCarMilesData") + @ApiImplicitParams({ + @ApiImplicitParam(name = "unit", value = "单位", dataType = "query", paramType = "string"), + @ApiImplicitParam(name = "year", value = "年份", dataType = "query", paramType = "string") + }) @ApiOperation(value = "导出年度里程数据") @ApiOperationSupport(order = 27) public void exportCarMilesData(@ApiIgnore @RequestParam Map param, Query query, HttpServletResponse response) { From 77ac751701023dcbfd4158af50100174f35d2816 Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 14:42:42 +0800 Subject: [PATCH 6/8] =?UTF-8?q?docs:=20V1.0.2=E8=84=9A=E6=9C=AC=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/src/main/resources/db/1.0.1.sql | 343 +-------------------- .../safeproduct/src/main/resources/db/1.0.2.sql | 340 +++++++++++++++++++- 2 files changed, 340 insertions(+), 343 deletions(-) diff --git a/hzims-service/safeproduct/src/main/resources/db/1.0.1.sql b/hzims-service/safeproduct/src/main/resources/db/1.0.1.sql index 404ba74..f63ae4c 100644 --- a/hzims-service/safeproduct/src/main/resources/db/1.0.1.sql +++ b/hzims-service/safeproduct/src/main/resources/db/1.0.1.sql @@ -9,345 +9,4 @@ create table document_management update_time datetime default current_timestamp on update current_timestamp comment '更新时间', is_deleted tinyint default 0 comment '逻辑删除' -) comment '文档管理'; - -CREATE TABLE `hzims_rehearsal_plan` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `unit` varchar(50) NOT NULL COMMENT '单位', - `subject` varchar(50) NOT NULL COMMENT '演练科目', - `scheduled_start_time` date NOT NULL COMMENT '演练计划开始时间', - `scheduled_end_time` date NOT NULL COMMENT '演练计划结束时间', - `location` varchar(255) NOT NULL COMMENT '演练地点', - `commander` varchar(10) NOT NULL COMMENT '总指挥', - `rehearsal_method` varchar(20) DEFAULT '' COMMENT '演练方式', - `rehearsal_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '演练状态', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='演练计划表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_rehearsal_record` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `rehearsal_plan_id` bigint(20) NOT NULL COMMENT '演练计划id', - `code` varchar(50) NOT NULL COMMENT '编号', - `people_num` int(10) NOT NULL DEFAULT '0' COMMENT '参演人数', - `people_name` varchar(5000) DEFAULT '' COMMENT '参演人员', - `actual_start_time` datetime NOT NULL COMMENT '演练实际开始时间', - `actual_end_time` datetime NOT NULL COMMENT '演练实际结束时间', - `record` varchar(250) NOT NULL DEFAULT '' COMMENT '演练记录', - `comment` varchar(250) NOT NULL DEFAULT '' COMMENT '演练评价', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '演练图片', - `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '演练附件', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='演练记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_train_plan` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `unit` varchar(50) NOT NULL COMMENT '单位', - `scheduled_start_time` date NOT NULL COMMENT '计划培训开始时间', - `scheduled_end_time` date NOT NULL COMMENT '计划培训结束时间', - `lesson` varchar(255) NOT NULL COMMENT '培训课程', - `location` varchar(255) NOT NULL COMMENT '培训地点', - `train_method` varchar(20) DEFAULT '' COMMENT '培训方式', - `teacher` varchar(20) NOT NULL DEFAULT '' COMMENT '培训讲师', - `train_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '培训状态', - `is_test` int(2) NOT NULL DEFAULT '0' COMMENT '关联考试:0-否,1-是', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='培训计划表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_train_record` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `train_plan_id` bigint(20) DEFAULT NULL COMMENT '培训计划id', - `train_record_name` varchar(50) NOT NULL DEFAULT '' COMMENT '培训记录名称', - `code` varchar(50) NOT NULL COMMENT '编号', - `people_name` varchar(5000) DEFAULT '' COMMENT '培训学员', - `content` mediumtext DEFAULT '' COMMENT '培训内容', - `actual_start_time` datetime DEFAULT NULL COMMENT '实际培训开始时间', - `actual_end_time` datetime DEFAULT NULL COMMENT '实际培训结束时间', - `command` varchar(250) DEFAULT NULL COMMENT '培训评价', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '培训图片', - `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '培训附件', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='培训记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_test` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `train_plan_id` bigint(20) DEFAULT NULL COMMENT '培训计划id', - `train_record_id` bigint(20) DEFAULT NULL COMMENT '培训记录id', - `test_name` varchar(50) NOT NULL DEFAULT '' COMMENT '考试记录名称', - `code` varchar(50) NOT NULL COMMENT '编号', - `unit` varchar(50) NOT NULL COMMENT '单位', - `test_start_time` datetime NOT NULL COMMENT '考试开始时间', - `test_end_time` datetime NOT NULL COMMENT '考试结束时间', - `location` varchar(255) NOT NULL COMMENT '考试地点', - `subject` varchar(50) NOT NULL COMMENT '考试科目', - `proctor` varchar(20) NOT NULL COMMENT '监考人', - `people_name` varchar(1000) DEFAULT '' COMMENT '参考人员', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '考试图片', - `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '考试附件', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_test_score` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `test_id` bigint(20) DEFAULT NULL COMMENT '考试记录id', - `name` varchar(50) NOT NULL COMMENT '姓名', - `score` int(10) DEFAULT NULL COMMENT '成绩', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试成绩表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_conference_plan` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `unit` varchar(50) NOT NULL COMMENT '单位', - `theme` varchar(50) NOT NULL COMMENT '会议主题', - `scheduled_start_time` date NOT NULL COMMENT '会议计划开始时间', - `scheduled_end_time` date NOT NULL COMMENT '会议计划结束时间', - `location` varchar(255) NOT NULL COMMENT '会议地点', - `host` varchar(10) NOT NULL COMMENT '主持人', - `conference_method` varchar(20) DEFAULT '' COMMENT '会议方式', - `conference_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '会议状态', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议计划表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_conference_record` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `conference_plan_id` bigint(20) NOT NULL COMMENT '会议计划id', - `code` varchar(50) NOT NULL COMMENT '编号', - `people_name` varchar(5000) DEFAULT '' COMMENT '参会人员', - `actual_start_time` datetime DEFAULT NULL COMMENT '会议实际开始时间', - `actual_end_time` datetime DEFAULT NULL COMMENT '会议实际结束时间', - `recorder` varchar(20) DEFAULT '' COMMENT '记录人', - `content` mediumtext DEFAULT '' DEFAULT '' COMMENT '会议内容', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '会议图片', - `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '会议附件', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_hygiene_plan` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `code` varchar(50) NOT NULL COMMENT '编码', - `standard_score` int(10) NOT NULL DEFAULT '100' COMMENT '标准总分值', - `scheduled_start_time` date NOT NULL COMMENT '计划开始时间', - `scheduled_end_time` date NOT NULL COMMENT '计划结束时间', - `hygiene_plan_status` varchar(50) NOT NULL DEFAULT 'WAITING' COMMENT '自查计划状态', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查计划表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_hygiene_zone` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `hygiene_plan_id` bigint(20) NOT NULL COMMENT '卫生自查计划id', - `unit` varchar(50) NOT NULL COMMENT '单位', - `zone` varchar(50) NOT NULL COMMENT '责任区', - `principal` varchar(20) NOT NULL COMMENT '责任人', - `check_item` mediumtext NOT NULL COMMENT '检查项', - `check_item_score` varchar(255) NOT NULL COMMENT '检查项分值', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查区域表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_hygiene_record` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `hygiene_plan_id` bigint(20) NOT NULL COMMENT '卫生自查计划id', - `unit` varchar(50) NOT NULL COMMENT '单位', - `code` varchar(50) NOT NULL COMMENT '编号', - `actual_start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '实际开始时间', - `actual_end_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '实际结束时间', - `check_user` varchar(20) NOT NULL DEFAULT '' COMMENT '检查人', - `hygiene_zone_ids` varchar(1000) NOT NULL COMMENT '卫生自查区域id', - `check_result` mediumtext NOT NULL COMMENT '检查结果', - `comprehensive_score` int(10) NOT NULL COMMENT '综合评分', - `week_num` int(10) NOT NULL COMMENT '周数', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '检查图片', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_car` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `unit` varchar(50) NOT NULL COMMENT '单位', - `car_brand` varchar(50) NOT NULL COMMENT '品牌', - `car_type` varchar(50) NOT NULL COMMENT '型号', - `plate_number` varchar(50) NOT NULL COMMENT '车牌号', - `registration_time` date NOT NULL COMMENT '上牌时间', - `insurance_pay_last_time` date NOT NULL COMMENT '上期缴车保时间', - `insurance_pay_next_time` date NOT NULL COMMENT '下期缴车保时间', - `annual_inspection_time` date NOT NULL COMMENT '年检时间', - `annual_inspection_status` varchar(50) NOT NULL COMMENT '年检状态', - `insurance_status` varchar(50) NOT NULL COMMENT '保险状态', - `maintenance_last_time` date DEFAULT NULL COMMENT '上期保养时间', - `maintenance_next_time` date DEFAULT NULL COMMENT '下期保养时间', - `maintenance_mileage` decimal(10, 2) DEFAULT NULL COMMENT '保养里程', - `maintenance_status` varchar(50) DEFAULT NULL COMMENT '保养状态', - `manager` varchar(50) NOT NULL COMMENT '车辆管理人', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '车辆图片', - `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '车辆附件', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车辆台账表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_car_maintenance` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `car_id` bigint(20) NOT NULL COMMENT '车辆id', - `code` varchar(50) NOT NULL COMMENT '编号', - `maintenance_type` varchar(50) NOT NULL COMMENT '维保类型', - `content` mediumtext NOT NULL COMMENT '维保内容', - `start_time` date NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '维保开始时间', - `end_time` date NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '维保结束时间', - `location` varchar(255) NOT NULL COMMENT '维保地点', - `cost` bigint(20) NOT NULL COMMENT '维保费用', - `maintainer` varchar(20) NOT NULL COMMENT '维保人', - `manager_advice` varchar(500) DEFAULT NULL COMMENT '车辆管理人意见', - `maintenance_status` varchar(50) DEFAULT NULL COMMENT '维保状态', - `confirmation_time` datetime DEFAULT NULL COMMENT '确认时间', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '维保图片', - `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '维保附件', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车辆维保记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_car_used_record` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `car_id` bigint(20) NOT NULL COMMENT '车辆id', - `code` varchar(50) NOT NULL COMMENT '编号', - `unit` varchar(50) NOT NULL COMMENT '用车单位', - `used_location` varchar(255) NOT NULL COMMENT '使用地点', - `user` varchar(20) NOT NULL COMMENT '使用人', - `remark` mediumtext DEFAULT NULL COMMENT '使用详情', - `start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '使用时间', - `end_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收车时间', - `start_miles` decimal(10, 2) NOT NULL COMMENT '出车公里数', - `end_miles` decimal(10, 2) NOT NULL COMMENT '收车公里数', - `miles` decimal(10, 2) NOT NULL COMMENT '行驶公里数', - `used_status` varchar(50) DEFAULT NULL COMMENT '用车状态', - `confirmation_time` datetime DEFAULT NULL COMMENT '确认时间', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '里程图片', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用车记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_car_check_record` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `car_id` bigint(20) NOT NULL COMMENT '车辆id', - `code` varchar(50) NOT NULL COMMENT '编号', - `checker` varchar(50) NOT NULL COMMENT '检查人', - `check_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '检查时间', - `conclusion` mediumtext NOT NULL COMMENT '检查结论', - `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '填报备注', - `confirmation_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '确认时间', - `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '里程图片', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车检记录表' ROW_FORMAT=Dynamic; - -CREATE TABLE `hzims_car_check_item` ( - `id` bigint(20) NOT NULL COMMENT '主键id', - `car_check_record_id` bigint(20) NOT NULL COMMENT '车检记录id', - `check_item` varchar(500) NOT NULL COMMENT '检查项目', - `check_content` mediumtext NOT NULL COMMENT '检查内容', - `check_result` mediumtext NOT NULL COMMENT '检查结果', - `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', - `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', - `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', - `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车检项表' ROW_FORMAT=Dynamic; \ No newline at end of file +) comment '文档管理'; \ No newline at end of file diff --git a/hzims-service/safeproduct/src/main/resources/db/1.0.2.sql b/hzims-service/safeproduct/src/main/resources/db/1.0.2.sql index daedcb2..9f2813e 100644 --- a/hzims-service/safeproduct/src/main/resources/db/1.0.2.sql +++ b/hzims-service/safeproduct/src/main/resources/db/1.0.2.sql @@ -1 +1,339 @@ -alter table `hzims_safe_safety_tool` add column `advance_notice_days` tinyint(4) default 0 comment '安全工器具提前通知天数'; \ No newline at end of file +alter table `hzims_safe_safety_tool` add column `advance_notice_days` tinyint(4) default 0 comment '安全工器具提前通知天数'; + +CREATE TABLE `hzims_rehearsal_plan` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `unit` varchar(50) NOT NULL COMMENT '单位', + `subject` varchar(50) NOT NULL COMMENT '演练科目', + `scheduled_start_time` date NOT NULL COMMENT '演练计划开始时间', + `scheduled_end_time` date NOT NULL COMMENT '演练计划结束时间', + `location` varchar(255) NOT NULL COMMENT '演练地点', + `commander` varchar(10) NOT NULL COMMENT '总指挥', + `rehearsal_method` varchar(20) DEFAULT '' COMMENT '演练方式', + `rehearsal_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '演练状态', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='演练计划表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_rehearsal_record` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `rehearsal_plan_id` bigint(20) NOT NULL COMMENT '演练计划id', + `code` varchar(50) NOT NULL COMMENT '编号', + `people_num` int(10) NOT NULL DEFAULT '0' COMMENT '参演人数', + `people_name` varchar(5000) DEFAULT '' COMMENT '参演人员', + `actual_start_time` datetime NOT NULL COMMENT '演练实际开始时间', + `actual_end_time` datetime NOT NULL COMMENT '演练实际结束时间', + `record` varchar(250) NOT NULL DEFAULT '' COMMENT '演练记录', + `comment` varchar(250) NOT NULL DEFAULT '' COMMENT '演练评价', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '演练图片', + `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '演练附件', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='演练记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_train_plan` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `unit` varchar(50) NOT NULL COMMENT '单位', + `scheduled_start_time` date NOT NULL COMMENT '计划培训开始时间', + `scheduled_end_time` date NOT NULL COMMENT '计划培训结束时间', + `lesson` varchar(255) NOT NULL COMMENT '培训课程', + `location` varchar(255) NOT NULL COMMENT '培训地点', + `train_method` varchar(20) DEFAULT '' COMMENT '培训方式', + `teacher` varchar(20) NOT NULL DEFAULT '' COMMENT '培训讲师', + `train_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '培训状态', + `is_test` int(2) NOT NULL DEFAULT '0' COMMENT '关联考试:0-否,1-是', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='培训计划表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_train_record` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `train_plan_id` bigint(20) DEFAULT NULL COMMENT '培训计划id', + `train_record_name` varchar(50) NOT NULL DEFAULT '' COMMENT '培训记录名称', + `code` varchar(50) NOT NULL COMMENT '编号', + `people_name` varchar(5000) DEFAULT '' COMMENT '培训学员', + `content` mediumtext DEFAULT '' COMMENT '培训内容', + `actual_start_time` datetime DEFAULT NULL COMMENT '实际培训开始时间', + `actual_end_time` datetime DEFAULT NULL COMMENT '实际培训结束时间', + `command` varchar(250) DEFAULT NULL COMMENT '培训评价', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '培训图片', + `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '培训附件', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='培训记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_test` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `train_plan_id` bigint(20) DEFAULT NULL COMMENT '培训计划id', + `train_record_id` bigint(20) DEFAULT NULL COMMENT '培训记录id', + `test_name` varchar(50) NOT NULL DEFAULT '' COMMENT '考试记录名称', + `code` varchar(50) NOT NULL COMMENT '编号', + `unit` varchar(50) NOT NULL COMMENT '单位', + `test_start_time` datetime NOT NULL COMMENT '考试开始时间', + `test_end_time` datetime NOT NULL COMMENT '考试结束时间', + `location` varchar(255) NOT NULL COMMENT '考试地点', + `subject` varchar(50) NOT NULL COMMENT '考试科目', + `proctor` varchar(20) NOT NULL COMMENT '监考人', + `people_name` varchar(1000) DEFAULT '' COMMENT '参考人员', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '考试图片', + `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '考试附件', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_test_score` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `test_id` bigint(20) DEFAULT NULL COMMENT '考试记录id', + `name` varchar(50) NOT NULL COMMENT '姓名', + `score` int(10) DEFAULT NULL COMMENT '成绩', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试成绩表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_conference_plan` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `unit` varchar(50) NOT NULL COMMENT '单位', + `theme` varchar(50) NOT NULL COMMENT '会议主题', + `scheduled_start_time` date NOT NULL COMMENT '会议计划开始时间', + `scheduled_end_time` date NOT NULL COMMENT '会议计划结束时间', + `location` varchar(255) NOT NULL COMMENT '会议地点', + `host` varchar(10) NOT NULL COMMENT '主持人', + `conference_method` varchar(20) DEFAULT '' COMMENT '会议方式', + `conference_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '会议状态', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议计划表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_conference_record` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `conference_plan_id` bigint(20) NOT NULL COMMENT '会议计划id', + `code` varchar(50) NOT NULL COMMENT '编号', + `people_name` varchar(5000) DEFAULT '' COMMENT '参会人员', + `actual_start_time` datetime DEFAULT NULL COMMENT '会议实际开始时间', + `actual_end_time` datetime DEFAULT NULL COMMENT '会议实际结束时间', + `recorder` varchar(20) DEFAULT '' COMMENT '记录人', + `content` mediumtext DEFAULT '' DEFAULT '' COMMENT '会议内容', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '会议图片', + `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '会议附件', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_hygiene_plan` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `code` varchar(50) NOT NULL COMMENT '编码', + `standard_score` int(10) NOT NULL DEFAULT '100' COMMENT '标准总分值', + `scheduled_start_time` date NOT NULL COMMENT '计划开始时间', + `scheduled_end_time` date NOT NULL COMMENT '计划结束时间', + `hygiene_plan_status` varchar(50) NOT NULL DEFAULT 'WAITING' COMMENT '自查计划状态', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查计划表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_hygiene_zone` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `hygiene_plan_id` bigint(20) NOT NULL COMMENT '卫生自查计划id', + `zone` varchar(50) NOT NULL COMMENT '责任区', + `principal` varchar(20) NOT NULL COMMENT '责任人', + `check_item` mediumtext NOT NULL COMMENT '检查项', + `check_item_score` varchar(255) NOT NULL COMMENT '检查项分值', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查区域表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_hygiene_record` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `hygiene_plan_id` bigint(20) NOT NULL COMMENT '卫生自查计划id', + `unit` varchar(50) NOT NULL COMMENT '单位', + `code` varchar(50) NOT NULL COMMENT '编号', + `actual_start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '实际开始时间', + `actual_end_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '实际结束时间', + `check_user` varchar(20) NOT NULL DEFAULT '' COMMENT '检查人', + `hygiene_zone_ids` varchar(1000) NOT NULL COMMENT '卫生自查区域id', + `check_result` mediumtext NOT NULL COMMENT '检查结果', + `comprehensive_score` int(10) NOT NULL COMMENT '综合评分', + `week_num` int(10) NOT NULL COMMENT '周数', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '检查图片', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_car` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `unit` varchar(50) NOT NULL COMMENT '单位', + `car_brand` varchar(50) NOT NULL COMMENT '品牌', + `car_type` varchar(50) NOT NULL COMMENT '型号', + `plate_number` varchar(50) NOT NULL COMMENT '车牌号', + `registration_time` date NOT NULL COMMENT '上牌时间', + `insurance_pay_last_time` date NOT NULL COMMENT '上期缴车保时间', + `insurance_pay_next_time` date NOT NULL COMMENT '下期缴车保时间', + `annual_inspection_time` date NOT NULL COMMENT '年检时间', + `annual_inspection_status` varchar(50) NOT NULL COMMENT '年检状态', + `insurance_status` varchar(50) NOT NULL COMMENT '保险状态', + `maintenance_last_time` date DEFAULT NULL COMMENT '上期保养时间', + `maintenance_next_time` date DEFAULT NULL COMMENT '下期保养时间', + `maintenance_mileage` decimal(10, 2) DEFAULT NULL COMMENT '保养里程', + `maintenance_status` varchar(50) DEFAULT NULL COMMENT '保养状态', + `manager` varchar(50) NOT NULL COMMENT '车辆管理人', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '车辆图片', + `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '车辆附件', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车辆台账表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_car_maintenance` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `car_id` bigint(20) NOT NULL COMMENT '车辆id', + `code` varchar(50) NOT NULL COMMENT '编号', + `maintenance_type` varchar(50) NOT NULL COMMENT '维保类型', + `content` mediumtext NOT NULL COMMENT '维保内容', + `start_time` date NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '维保开始时间', + `end_time` date NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '维保结束时间', + `location` varchar(255) NOT NULL COMMENT '维保地点', + `cost` bigint(20) NOT NULL COMMENT '维保费用', + `maintainer` varchar(20) NOT NULL COMMENT '维保人', + `manager_advice` varchar(500) DEFAULT NULL COMMENT '车辆管理人意见', + `maintenance_status` varchar(50) DEFAULT NULL COMMENT '维保状态', + `confirmation_time` datetime DEFAULT NULL COMMENT '确认时间', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '维保图片', + `file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '维保附件', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车辆维保记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_car_used_record` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `car_id` bigint(20) NOT NULL COMMENT '车辆id', + `code` varchar(50) NOT NULL COMMENT '编号', + `unit` varchar(50) NOT NULL COMMENT '用车单位', + `used_location` varchar(255) NOT NULL COMMENT '使用地点', + `user` varchar(20) NOT NULL COMMENT '使用人', + `remark` mediumtext DEFAULT NULL COMMENT '使用详情', + `start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '使用时间', + `end_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收车时间', + `start_miles` decimal(10, 2) NOT NULL COMMENT '出车公里数', + `end_miles` decimal(10, 2) NOT NULL COMMENT '收车公里数', + `miles` decimal(10, 2) NOT NULL COMMENT '行驶公里数', + `used_status` varchar(50) DEFAULT NULL COMMENT '用车状态', + `confirmation_time` datetime DEFAULT NULL COMMENT '确认时间', + `img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '里程图片', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用车记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_car_check_record` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `car_id` bigint(20) NOT NULL COMMENT '车辆id', + `code` varchar(50) NOT NULL COMMENT '编号', + `checker` varchar(50) NOT NULL COMMENT '检查人', + `check_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '检查时间', + `conclusion` mediumtext NOT NULL COMMENT '检查结论', + `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '填报备注', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车检记录表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_car_check_item` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `car_check_record_id` bigint(20) NOT NULL COMMENT '车检记录id', + `check_item` varchar(500) NOT NULL COMMENT '检查项目', + `check_content` mediumtext NOT NULL COMMENT '检查内容', + `check_result` mediumtext NOT NULL COMMENT '检查结果', + `create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人', + `create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_user` bigint(20) DEFAULT '-1' COMMENT '更新人', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态', + `is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车检项表' ROW_FORMAT=Dynamic; \ No newline at end of file From eabc134458a1615ae6a19d769713ab4710f9963b Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 16:01:14 +0800 Subject: [PATCH 7/8] =?UTF-8?q?update:=20=E6=BC=94=E7=BB=83=E3=80=81?= =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E3=80=81=E5=8D=AB=E7=94=9F=E8=87=AA=E6=9F=A5?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hnac/hzims/safeproduct/jobs/ConferenceJob.java | 39 ++++++++++++++++++++++ .../hnac/hzims/safeproduct/jobs/HygieneJob.java | 39 ++++++++++++++++++++++ .../hnac/hzims/safeproduct/jobs/RehearsalJob.java | 2 +- .../service/IConferencePlanService.java | 9 +++++ .../safeproduct/service/IHygienePlanService.java | 9 +++++ .../service/impl/ConferencePlanServiceImpl.java | 12 +++++++ .../service/impl/HygienePlanServiceImpl.java | 13 ++++++++ 7 files changed, 122 insertions(+), 1 deletion(-) diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/ConferenceJob.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/ConferenceJob.java index 83ea0fa..26e40c5 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/ConferenceJob.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/ConferenceJob.java @@ -1,4 +1,43 @@ package com.hnac.hzims.safeproduct.jobs; +import com.hnac.hzims.safeproduct.entity.ConferencePlanEntity; +import com.hnac.hzims.safeproduct.enums.ConferenceStatusEnum; +import com.hnac.hzims.safeproduct.service.IConferencePlanService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; + +/** + * 会议管理模块定时任务 + * + * @author liwen + * @date 2024-01-15 + */ +@Component public class ConferenceJob { + + @Autowired + IConferencePlanService conferencePlanService; + + @XxlJob("autoChangeConferencePlanStatus") + public ReturnT autoChangeConferencePlanStatus(String param) { + // 获取时间范围 + Date current = DateUtil.now(); + Date before = DateUtil.minusDays(current, 1); + String today = DateUtil.format(current, "yyyy-mm-dd hh:MM:ss"); + String yesterday = DateUtil.format(before, "yyyy-mm-dd hh:MM:ss"); + // 查询前一天的超时未完成会议计划 + List list = conferencePlanService.getWaitingConferencePlanInTimeRange(yesterday, today); + list.forEach(x -> { + x.setConferenceStatus(ConferenceStatusEnum.UNFINISHED.getValue()); + }); + // 将状态置为未完成 + boolean flag = conferencePlanService.updateBatchById(list); + return flag ? ReturnT.SUCCESS : ReturnT.FAIL; + } } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/HygieneJob.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/HygieneJob.java index 745ae01..4a8aabf 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/HygieneJob.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/HygieneJob.java @@ -1,4 +1,43 @@ package com.hnac.hzims.safeproduct.jobs; +import com.hnac.hzims.safeproduct.entity.HygienePlanEntity; +import com.hnac.hzims.safeproduct.enums.TrainStatusEnum; +import com.hnac.hzims.safeproduct.service.IHygienePlanService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; + +/** + * 卫生自查模块定时任务 + * + * @author liwen + * @date 2024-01-15 + */ +@Component public class HygieneJob { + + @Autowired + IHygienePlanService hygienePlanService; + + @XxlJob("autoChangeHygienePlanStatus") + public ReturnT autoChangeHygienePlanStatus(String param) { + // 获取时间范围 + Date current = DateUtil.now(); + Date before = DateUtil.minusDays(current, 1); + String today = DateUtil.format(current, "yyyy-mm-dd hh:MM:ss"); + String yesterday = DateUtil.format(before, "yyyy-mm-dd hh:MM:ss"); + // 查询前一天的超时未完成卫生自查计划 + List list = hygienePlanService.getWaitingHygienePlanInTimeRange(yesterday, today); + list.forEach(x -> { + x.setHygienePlanStatus(TrainStatusEnum.UNFINISHED.getValue()); + }); + // 将状态置为未完成 + boolean flag = hygienePlanService.updateBatchById(list); + return flag ? ReturnT.SUCCESS : ReturnT.FAIL; + } } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/RehearsalJob.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/RehearsalJob.java index 44ff7d8..d6eda46 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/RehearsalJob.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/jobs/RehearsalJob.java @@ -31,7 +31,7 @@ public class RehearsalJob { Date before = DateUtil.minusDays(current, 1); String today = DateUtil.format(current, "yyyy-mm-dd hh:MM:ss"); String yesterday = DateUtil.format(before, "yyyy-mm-dd hh:MM:ss"); - // 查询前一天的超时未完成演练记录 + // 查询前一天的超时未完成演练计划 List list = rehearsalPlanService.getWaitingRehearsalInTimeRange(yesterday, today); list.forEach(x -> { x.setRehearsalStatus(RehearsalStatusEnum.UNFINISHED.getValue()); diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferencePlanService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferencePlanService.java index 2c3581d..dc916b6 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferencePlanService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IConferencePlanService.java @@ -6,6 +6,7 @@ import com.hnac.hzims.safeproduct.entity.ConferencePlanEntity; import org.springblade.core.mp.support.Query; import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Map; /** @@ -37,4 +38,12 @@ public interface IConferencePlanService extends IService { * @param response 响应类 */ void exportConferenceData(Map param, HttpServletResponse response); + + /** + * 查询时间范围内未开始的会议计划数据 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 会议计划数据 + */ + List getWaitingConferencePlanInTimeRange(String startTime, String endTime); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygienePlanService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygienePlanService.java index 0846fbb..5337d07 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygienePlanService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygienePlanService.java @@ -10,6 +10,7 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Map; /** @@ -76,4 +77,12 @@ public interface IHygienePlanService extends IService { * 月度数据导出 */ void exportMonthData(Map param, Query query, HttpServletResponse response); + + /** + * 查询时间范围内未开始的卫生自查计划数据 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 卫生自查计划数据 + */ + List getWaitingHygienePlanInTimeRange(String startTime, String endTime); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/ConferencePlanServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/ConferencePlanServiceImpl.java index 08255fc..6a2dcf8 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/ConferencePlanServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/ConferencePlanServiceImpl.java @@ -147,6 +147,18 @@ public class ConferencePlanServiceImpl extends ServiceImpl getWaitingConferencePlanInTimeRange(String startTime, String endTime) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(ConferencePlanEntity::getConferenceStatus, ConferenceStatusEnum.WAITING.getValue()) + .ge(ConferencePlanEntity::getScheduledEndTime, startTime) + .le(ConferencePlanEntity::getScheduledEndTime, endTime); + return this.list(queryWrapper); + } + + /** * 根据单位和计划时间查询会议记录 * @param unit 单位 * @param startTime 计划开始时间 diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygienePlanServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygienePlanServiceImpl.java index 3292edd..4cf06fd 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygienePlanServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygienePlanServiceImpl.java @@ -13,6 +13,7 @@ import com.hnac.hzims.common.utils.Condition; import com.hnac.hzims.safeproduct.dto.HygienePlanDTO; import com.hnac.hzims.safeproduct.entity.HygienePlanEntity; import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity; +import com.hnac.hzims.safeproduct.enums.HygieneStatusEnum; import com.hnac.hzims.safeproduct.mapper.HygienePlanMapper; import com.hnac.hzims.safeproduct.service.IHygienePlanService; import com.hnac.hzims.safeproduct.service.IHygieneRecordService; @@ -284,4 +285,16 @@ public class HygienePlanServiceImpl extends ServiceImpl getWaitingHygienePlanInTimeRange(String startTime, String endTime) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(HygienePlanEntity::getHygienePlanStatus, HygieneStatusEnum.WAITING.getValue()) + .ge(HygienePlanEntity::getScheduledEndTime, startTime) + .le(HygienePlanEntity::getScheduledEndTime, endTime); + return this.list(queryWrapper); + } } From 2def81882e9ee882708bdc16dfcb1ba1895e12f1 Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 16:01:37 +0800 Subject: [PATCH 8/8] =?UTF-8?q?docs:=20=E5=AF=BC=E5=87=BA=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=96=87=E4=BB=B6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/template/会议记录表.docx | Bin 0 -> 11901 bytes .../main/resources/template/卫生自查表.docx | Bin 0 -> 11350 bytes .../main/resources/template/培训记录表.docx | Bin 0 -> 11749 bytes .../main/resources/template/演练记录表.docx | Bin 11783 -> 11851 bytes .../main/resources/template/用车记录单.docx | Bin 11366 -> 11565 bytes .../main/resources/template/车辆检查表.docx | Bin 11695 -> 11759 bytes .../resources/template/车辆维保记录单.docx | Bin 11538 -> 11754 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 hzims-service/safeproduct/src/main/resources/template/会议记录表.docx create mode 100644 hzims-service/safeproduct/src/main/resources/template/卫生自查表.docx create mode 100644 hzims-service/safeproduct/src/main/resources/template/培训记录表.docx diff --git a/hzims-service/safeproduct/src/main/resources/template/会议记录表.docx b/hzims-service/safeproduct/src/main/resources/template/会议记录表.docx new file mode 100644 index 0000000000000000000000000000000000000000..aea2d33da5e1bb27979e282eb7a6e04ef0ca6f16 GIT binary patch literal 11901 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 literal 0 HcmV?d00001 diff --git a/hzims-service/safeproduct/src/main/resources/template/卫生自查表.docx b/hzims-service/safeproduct/src/main/resources/template/卫生自查表.docx new file mode 100644 index 0000000000000000000000000000000000000000..07d4aa615bc814daac8cbd789ade58824904329e GIT binary patch literal 11350 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 BBG>=` literal 0 HcmV?d00001 diff --git a/hzims-service/safeproduct/src/main/resources/template/培训记录表.docx b/hzims-service/safeproduct/src/main/resources/template/培训记录表.docx new file mode 100644 index 0000000000000000000000000000000000000000..de921b100ded12ed1e58841789efd8613801a4ba GIT binary patch literal 11749 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 WiL{B>;ub~1LD2HBqcL*+WAGn6oS^#v diff --git a/hzims-service/safeproduct/src/main/resources/template/用车记录单.docx b/hzims-service/safeproduct/src/main/resources/template/用车记录单.docx index b1def9c11455498c8b378cd9e9a964a9f15149ed..e56cfba30f27ff248d5e6aab9ecee7ec571272d3 100644 GIT binary patch delta 4581 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 delta 4377 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 Ce#zGW diff --git a/hzims-service/safeproduct/src/main/resources/template/车辆维保记录单.docx b/hzims-service/safeproduct/src/main/resources/template/车辆维保记录单.docx index 95d10d34693ab7789e1b94ed1af0e40b4f3765e9..e85d514d68f4c0f58e5864517152c2ec638aefac 100644 GIT binary patch delta 6985 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 NZEQ@aQ09N^{{zaj!ju32