From 38a1f1d2a75d18278baf1f6cddd4ade98ac0d842 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Fri, 12 Jan 2024 16:44:18 +0800 Subject: [PATCH 01/20] =?UTF-8?q?#=E6=B0=B4=E7=94=B5=E7=AB=99=E5=8F=91?= =?UTF-8?q?=E7=94=B5=E9=87=8F=E5=85=B3=E8=81=94=E6=95=B0=E6=8D=AE=E8=AF=A6?= =?UTF-8?q?=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operational/census/service/impl/TargetServiceImpl.java | 2 +- .../operational/fill/service/impl/GenerateServiceImpl.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/census/service/impl/TargetServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/census/service/impl/TargetServiceImpl.java index 169fe70..a7a0deb 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/census/service/impl/TargetServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/census/service/impl/TargetServiceImpl.java @@ -1242,7 +1242,7 @@ public class TargetServiceImpl implements TargetService { detail.setElectric(Double.valueOf(mon.getPower())); return detail; } - detail.setElectric((double) (monMap.get(mon.getStrMonth()) + mon.getPower())); + detail.setElectric((double) (Optional.ofNullable(monMap.get(mon.getStrMonth())).orElse(0f) + mon.getPower())); return detail; }).collect(Collectors.toList()); }else if(HomePageConstant.MON.equals(type)){ diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/impl/GenerateServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/impl/GenerateServiceImpl.java index 8ed3a73..cd315be 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/impl/GenerateServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/impl/GenerateServiceImpl.java @@ -178,7 +178,12 @@ public class GenerateServiceImpl extends BaseServiceImplrecord.getFillDate().equals(day)).mapToDouble(GenerateEntity::getGenerate).sum()); + double sum = records.stream().filter(record->record.getFillDate().equals(day)).mapToDouble(GenerateEntity::getGenerate).sum(); + if(Math.abs(sum) > 0){ + powerDay.setGenerate((float)sum); + }else{ + powerDay.setGenerate(0f); + } return powerDay; }).collect(Collectors.toList()); } @@ -231,7 +236,12 @@ public class GenerateServiceImpl extends BaseServiceImplo.getFillDate().equals(mon)).mapToDouble(GenerateEntity::getGenerate).sum()); + double sum = format.stream().filter(o->o.getFillDate().equals(mon)).mapToDouble(GenerateEntity::getGenerate).sum(); + if(Math.abs(sum) > 0){ + powerMonth.setPower((float)sum); + }else{ + powerMonth.setPower(0f); + } return powerMonth; }).collect(Collectors.toList()); } From a44b2c3272914116818cae90d7bda85f99882b16 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Sun, 14 Jan 2024 16:31:01 +0800 Subject: [PATCH 02/20] =?UTF-8?q?#=E5=91=8A=E8=AD=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java | 1 + .../hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java b/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java index f1accc5..862cbe0 100644 --- a/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java +++ b/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java @@ -301,6 +301,7 @@ public class AlarmServiceImpl extends BaseServiceImpl mailMessageDTO.setBusinessClassify("system"); mailMessageDTO.setBusinessKey("Mail"); mailMessageDTO.setSubject("邮件发送"); + mailMessageDTO.setContent(name+"websocket链接失败;"+"链接失败次数:"+num); R> res = userClient.userListByRoleAlias("200000", "sendMail"); if (!res.isSuccess()||CollectionUtil.isEmpty(res.getData())){ diff --git a/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java b/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java index 0a83591..bafc8de 100644 --- a/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java +++ b/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java @@ -38,7 +38,7 @@ public class AlarmTabulateServiceImpl implements AlarmTabulateService { public IPage early(IPage page, TabulateEarlyVo tabulateEarly) { StbAnalysisDTO param = new StbAnalysisDTO(); if(StringUtil.isNotBlank(tabulateEarly.getStartTime())){ - param.setStartTime(LocalDateTime.parse(tabulateEarly.getStartTime(), DateUtil.DATETIME_FORMATTER)); + param.setStartTime(LocalDateTime.parse(tabulateEarly.getStartTime())); } if(StringUtil.isNotBlank(tabulateEarly.getEndTime())){ param.setEndTime(LocalDateTime.parse(tabulateEarly.getEndTime(), DateUtil.DATETIME_FORMATTER)); From 048caaf49140a15d24bf16fb51d5493cc745fea7 Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 10:36:09 +0800 Subject: [PATCH 03/20] =?UTF-8?q?update:=20=E8=BD=A6=E8=BE=86=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/constants/SafeProductConstant.java | 9 +++ .../dto/CarMaintenanceConfirmationDTO.java | 4 ++ .../safeproduct/entity/CarCheckItemEntity.java | 1 - .../safeproduct/vo/CarCheckRecordDetailVO.java | 4 ++ .../safeproduct/vo/CarUsedRecordDetailVO.java | 3 + .../safeproduct/mapper/CarUsedRecordMapper.xml | 2 +- .../service/impl/CarCheckRecordServiceImpl.java | 12 ++-- .../service/impl/CarMaintenanceServiceImpl.java | 11 ++-- .../service/impl/CarUsedRecordServiceImpl.java | 14 ++--- .../com/hnac/hzims/safeproduct/utils/BaseUtil.java | 70 ++++++++++++--------- .../safeproduct/src/main/resources/db/1.0.1.sql | 5 +- .../main/resources/template/用车记录单.docx | Bin 0 -> 11366 bytes .../main/resources/template/车辆检查表.docx | Bin 0 -> 11695 bytes 13 files changed, 84 insertions(+), 51 deletions(-) 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-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/constants/SafeProductConstant.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/constants/SafeProductConstant.java index bcfb2fb..3a4e9b9 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/constants/SafeProductConstant.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/constants/SafeProductConstant.java @@ -13,6 +13,15 @@ public interface SafeProductConstant { int SUCCESS = 1; int FAILURE = 0; + /** + * 文件后缀 + */ + String DOCX_SUFFIX = ".docx"; + String PDF_SUFFIX = ".pdf"; + + /** + * 培训管理 + */ int TRAIN_PLAN_HAS_TEST = 1; int TRAIN_PLAN_HAS_NO_TEST = 0; } diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/CarMaintenanceConfirmationDTO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/CarMaintenanceConfirmationDTO.java index 9bfbcf7..13b943f 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/CarMaintenanceConfirmationDTO.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/CarMaintenanceConfirmationDTO.java @@ -1,10 +1,12 @@ package com.hnac.hzims.safeproduct.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.Date; @@ -21,10 +23,12 @@ public class CarMaintenanceConfirmationDTO { private Long carMaintenanceId; @NotNull + @Size(max = 500, message = "车辆管理人意见长度不能超过500") @ApiModelProperty("车辆管理人意见") private String managerAdvice; @NotNull + @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("下次维保时间") private Date maintenanceNextTime; diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/CarCheckItemEntity.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/CarCheckItemEntity.java index 3461c52..cd02dc3 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/CarCheckItemEntity.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/CarCheckItemEntity.java @@ -1,6 +1,5 @@ package com.hnac.hzims.safeproduct.entity; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarCheckRecordDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarCheckRecordDetailVO.java index 2c1ff91..4aa745b 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarCheckRecordDetailVO.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarCheckRecordDetailVO.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -19,6 +20,9 @@ public class CarCheckRecordDetailVO { @ApiModelProperty("检查人") private String checker; + @ApiModelProperty("检查时间") + private Date checkTime; + @ApiModelProperty("品牌") private String carBrand; diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarUsedRecordDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarUsedRecordDetailVO.java index 06cdf91..b415ff1 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarUsedRecordDetailVO.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarUsedRecordDetailVO.java @@ -27,6 +27,9 @@ public class CarUsedRecordDetailVO { @ApiModelProperty("品牌") private String carBrand; + @ApiModelProperty("车辆类型") + private String carType; + @ApiModelProperty("车牌号") private String plateNumber; diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarUsedRecordMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarUsedRecordMapper.xml index 0150cb2..ad456ed 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarUsedRecordMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarUsedRecordMapper.xml @@ -5,7 +5,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 + FROM + hzims_rehearsal_record t1 + LEFT JOIN hzims_rehearsal_plan t2 ON t1.rehearsal_plan_id = t2.id + WHERE + t1.is_deleted = 0 + AND t1.id = #{id} + \ No newline at end of file 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 f1092da..8f5d5e2 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,6 +2,9 @@ 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 javax.servlet.http.HttpServletResponse; /** * 演练记录服务类 @@ -35,6 +38,14 @@ public interface IRehearsalRecordService extends IService /** * 演练记录表导出 * @param id 演练记录id + * @param response 响应类 + */ + void exportRecordDetailData(Long id, HttpServletResponse response); + + /** + * 查询演练记录表详情 + * @param id 演练记录id + * @return 演练记录表VO类 */ - void exportRecordDetailData(Long id); + RehearsalDetailVO 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 e37f4b5..f6ece0d 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 @@ -13,17 +13,13 @@ 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.ticket.constants.WorkTicketConstants; -import com.hnac.hzims.ticket.workTicket.entity.WorkTicketInfoEntity; +import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.springblade.core.log.exception.ServiceException; -import org.springblade.core.tool.utils.StringUtil; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; import javax.annotation.Resource; -import java.io.IOException; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -40,6 +36,9 @@ public class RehearsalRecordServiceImpl extends ServiceImpl { - throw new ServiceException("未找到模板文件,预览失败!"); - }); + public void exportRecordDetailData(Long id, HttpServletResponse response) { + RehearsalDetailVO rehearsalDetailVO = this.getRecordDetailVOById(id); + Map params = BaseUtil.obj2Map(rehearsalDetailVO); + 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 RehearsalDetailVO getRecordDetailVOById(Long id) { + return baseMapper.getRecordDetailVOById(id); } } 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..07a0f0e7b4fe1146ada1f53dc1c5c22423f1a80d GIT binary patch literal 11783 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 Date: Mon, 15 Jan 2024 14:30:44 +0800 Subject: [PATCH 06/20] =?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 07/20] =?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 08/20] =?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 09/20] =?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 10/20] =?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 11/20] =?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 12/20] =?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 13/20] =?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 From 666779445f7f3c73adaff5f02eb7adaa49128245 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Mon, 15 Jan 2024 16:17:04 +0800 Subject: [PATCH 14/20] =?UTF-8?q?#=E5=B7=A5=E4=BD=9C=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/ticket/repair/entity/WorkTaskEntity.java | 14 +- .../hzims/ticket/repair/vo/WorkTaskContentVO.java | 18 ++ .../hzims/ticket/repair/vo/WorkTaskPreviewVO.java | 83 +++++++ .../service/impl/AlarmTabulateServiceImpl.java | 2 +- .../strategy/serviceimpl/WorkTaskServiceImpl.java | 12 +- .../repair/controller/WorkTaskController.java | 18 +- .../ticket/repair/service/IWorkTaskService.java | 3 + .../repair/service/impl/WorkTaskServiceImpl.java | 268 +++++++++++++++++---- .../template/excel/work_task_template.xlsx | Bin 0 -> 19699 bytes 9 files changed, 352 insertions(+), 66 deletions(-) create mode 100644 hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskContentVO.java create mode 100644 hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskPreviewVO.java create mode 100644 hzims-service/ticket/src/main/resources/template/excel/work_task_template.xlsx diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/entity/WorkTaskEntity.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/entity/WorkTaskEntity.java index c9dadf1..adf341f 100644 --- a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/entity/WorkTaskEntity.java +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/entity/WorkTaskEntity.java @@ -30,7 +30,7 @@ public class WorkTaskEntity extends TenantEntity { @ApiModelProperty(value = "工作负责人名称") private String headName; - @ApiModelProperty(value = "工作负责人名称") + @ApiModelProperty(value = "工作负责人处理时间") private Date headHandleTime; @ApiModelProperty(value = "班组ID") @@ -45,12 +45,6 @@ public class WorkTaskEntity extends TenantEntity { @ApiModelProperty(value = "班组成员名称 : 按 “,”分割") private String memberName; - @ApiModelProperty(value = "签名班组人员ID : 按 “,”分割") - private String signatureMember; - - @ApiModelProperty(value = "签名班组成员名称 : 按 “,”分割") - private String signatureMemberName; - @ApiModelProperty(value = "工作计划开始时间") private Date planStartTime; @@ -78,6 +72,12 @@ public class WorkTaskEntity extends TenantEntity { @ApiModelProperty(value = "许可时间") private Date licensorTime; + @ApiModelProperty(value = "工作终结人") + private Long terminator; + + @ApiModelProperty(value = "工作终结人名称") + private String terminatorName; + @ApiModelProperty(value = "工作结束时间") private Date workEndTime; diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskContentVO.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskContentVO.java new file mode 100644 index 0000000..e2cd03d --- /dev/null +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskContentVO.java @@ -0,0 +1,18 @@ +package com.hnac.hzims.ticket.repair.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author ysj + */ +@Data +public class WorkTaskContentVO { + + @ApiModelProperty(value = "工作地点") + private String location; + + @ApiModelProperty(value = "工作内容") + private Integer content; + +} diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskPreviewVO.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskPreviewVO.java new file mode 100644 index 0000000..090f28e --- /dev/null +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/repair/vo/WorkTaskPreviewVO.java @@ -0,0 +1,83 @@ +package com.hnac.hzims.ticket.repair.vo; + +import com.hnac.hzims.ticket.repair.entity.WorkTaskEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author ysj + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class WorkTaskPreviewVO extends WorkTaskEntity { + + @ApiModelProperty(value = "机构名称") + private String deptName; + + @ApiModelProperty(value = "班组成员数量") + private Integer groupCount; + + @ApiModelProperty(value = "工作地点") + private String location; + + @ApiModelProperty(value = "工作内容") + private String content; + + @ApiModelProperty(value = "计划工作时间") + private String planTimeInterval; + + @ApiModelProperty(value = "工作派工单签发人") + private String createName; + + @ApiModelProperty(value = "签发时间: 年") + private Integer createYear; + + @ApiModelProperty(value = "签发时间: 月") + private Integer createMon; + + @ApiModelProperty(value = "签发时间: 日") + private Integer createDay; + + @ApiModelProperty(value = "签发时间: 时") + private Integer createHour; + + @ApiModelProperty(value = "签发时间: 分") + private Integer createMin; + + + @ApiModelProperty(value = "开票处理时间: 年") + private Integer headYear; + + @ApiModelProperty(value = "开票处理时间: 月") + private Integer headMon; + + @ApiModelProperty(value = "开票处理时间: 日") + private Integer headDay; + + @ApiModelProperty(value = "开票处理时间: 时") + private Integer headHour; + + @ApiModelProperty(value = "开票处理时间: 分") + private Integer headMin; + + + @ApiModelProperty(value = "结束时间: 年") + private Integer endYear; + + @ApiModelProperty(value = "结束时间: 月") + private Integer endMon; + + @ApiModelProperty(value = "结束时间: 日") + private Integer endDay; + + @ApiModelProperty(value = "结束时间: 时") + private Integer endHour; + + @ApiModelProperty(value = "结束时间: 分") + private Integer endMin; + + @ApiModelProperty(value = "许可时间") + private String licensorExportTime; + +} diff --git a/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java b/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java index bafc8de..dba391b 100644 --- a/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java +++ b/hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/tabulate/service/impl/AlarmTabulateServiceImpl.java @@ -38,7 +38,7 @@ public class AlarmTabulateServiceImpl implements AlarmTabulateService { public IPage early(IPage page, TabulateEarlyVo tabulateEarly) { StbAnalysisDTO param = new StbAnalysisDTO(); if(StringUtil.isNotBlank(tabulateEarly.getStartTime())){ - param.setStartTime(LocalDateTime.parse(tabulateEarly.getStartTime())); + param.setStartTime(LocalDateTime.parse(tabulateEarly.getStartTime(),DateUtil.DATETIME_FORMATTER)); } if(StringUtil.isNotBlank(tabulateEarly.getEndTime())){ param.setEndTime(LocalDateTime.parse(tabulateEarly.getEndTime(), DateUtil.DATETIME_FORMATTER)); diff --git a/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/processflow/strategy/serviceimpl/WorkTaskServiceImpl.java b/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/processflow/strategy/serviceimpl/WorkTaskServiceImpl.java index e9f5d72..dd9d8a6 100644 --- a/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/processflow/strategy/serviceimpl/WorkTaskServiceImpl.java +++ b/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/processflow/strategy/serviceimpl/WorkTaskServiceImpl.java @@ -4,9 +4,13 @@ import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; import com.hnac.hzims.middle.processflow.service.ProcessDictService; import com.hnac.hzims.middle.processflow.strategy.abstracts.ProcessAbstractService; import com.hnac.hzims.middle.processflow.strategy.entity.WorkflowQueue; +import com.hnac.hzims.ticket.repair.fegin.IWorkTaskClient; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.tool.api.R; import org.springframework.stereotype.Service; + import static com.hnac.hzims.middle.process.constant.TicketProcessConstant.WORK_TASK; /** @@ -19,6 +23,8 @@ public class WorkTaskServiceImpl extends ProcessAbstractService { private final ProcessDictService processDictService; + private final IWorkTaskClient workTaskClient; + /** * 消息确认-工作任务单 * @param flowQueue @@ -36,9 +42,9 @@ public class WorkTaskServiceImpl extends ProcessAbstractService { */ @Override public void calculate(ProcessWorkFlowResponse response) { - - /*if (!defect.isSuccess()) { + R workTask = workTaskClient.listener(response); + if (!workTask.isSuccess() || !workTask.getData()) { throw new ServiceException("检修任务业务执行异常!"); - }*/ + } } } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/controller/WorkTaskController.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/controller/WorkTaskController.java index 27cf9f0..45ba555 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/controller/WorkTaskController.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/controller/WorkTaskController.java @@ -52,20 +52,22 @@ public class WorkTaskController extends BladeController { return R.data(workTaskService.workTaskService(Condition.getPage(query), workTask)); } - @GetMapping("/workTicketList") + @GetMapping("/preview") @ApiOperationSupport(order = 2) - @ApiOperation(value = "分页") + @ApiOperation(value = "工作任务单预览", notes = "工作任务单预览") + public void preview(@RequestParam @ApiParam("工作任务单预览主键ID") @NotNull @Valid Long id) { + workTaskService.preview(id); + } + + @GetMapping("/workTicketList") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "查询工作票") public R> workTicketList(@RequestParam(value = "ticketCode",required = false) String ticketCode) { return R.data(workTaskService.workTicketList(ticketCode)); } - /** - * 工作任务单-开启流程 - * @param workTask - * @return - */ @PostMapping("/startProcess") - @ApiOperationSupport(order = 3) + @ApiOperationSupport(order = 4) @ApiOperation(value = "工作任务单") public R startV4(@RequestBody WorkTaskVO workTask) { return R.status(workTaskService.start(workTask)); diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/IWorkTaskService.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/IWorkTaskService.java index 9595912..119bdf0 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/IWorkTaskService.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/IWorkTaskService.java @@ -21,5 +21,8 @@ public interface IWorkTaskService extends BaseService { IPage workTaskService(IPage page, WorkTaskVO workTask); + + void preview(Long id); + List workTicketList(String ticketName); } \ No newline at end of file diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java index 26e35ba..cc05cf4 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java @@ -1,38 +1,45 @@ package com.hnac.hzims.ticket.repair.service.impl; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; import com.hnac.hzims.ticket.repair.entity.WorkTaskEntity; import com.hnac.hzims.ticket.repair.mapper.WorkTaskMapper; import com.hnac.hzims.ticket.repair.service.IWorkTaskService; +import com.hnac.hzims.ticket.repair.vo.WorkTaskContentVO; +import com.hnac.hzims.ticket.repair.vo.WorkTaskPreviewVO; import com.hnac.hzims.ticket.repair.vo.WorkTaskVO; +import com.hnac.hzims.ticket.utils.ExcelUtil; +import com.hnac.hzims.ticket.utils.PdfUtils; import com.hnac.hzims.ticket.workTicket.entity.WorkTicketInfoEntity; import com.hnac.hzims.ticket.workTicket.service.IWorkTicketInfoService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; -import org.springblade.core.tool.utils.DateUtil; -import org.springblade.core.tool.utils.ObjectUtil; -import org.springblade.core.tool.utils.StringUtil; +import org.springblade.core.tool.utils.*; import org.springblade.flow.core.entity.BladeFlow; import org.springblade.flow.core.feign.IFlowClient; import org.springblade.flow.core.utils.FlowUtil; import org.springblade.flow.core.utils.TaskUtil; import org.springblade.system.entity.Dept; import org.springblade.system.feign.ISysClient; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; -import java.util.Date; -import java.util.List; -import java.util.Map; +import javax.servlet.http.HttpServletResponse; +import java.util.*; /** * @author ysj @@ -48,43 +55,14 @@ public class WorkTaskServiceImpl extends BaseServiceImpl workTaskService(IPage page, WorkTaskVO workTask) { - QueryWrapper wrapper = Condition.getQueryWrapper(workTask); - if(StringUtil.isNotBlank(workTask.getStartTime())){ - wrapper.ge("CREATE_TIME",workTask.getStartTime()); - } - if(StringUtil.isNotBlank(workTask.getEndTime())){ - wrapper.le("CREATE_TIME",workTask.getEndTime()); - } - if(ObjectUtil.isNotEmpty(workTask.getGroupId())){ - wrapper.eq("GROUP_ID",workTask.getGroupId()); - } - if(ObjectUtil.isNotEmpty(workTask.getGroupId())){ - wrapper.eq("CREATE_DEPT",workTask.getDeptId()); - } - return super.page(page, wrapper); - } + private final IUserClient userClient; + + @Value("${hzims.ticket.workTask.saveWrokTask.xlsx}") + private String saveWrokTaskXlsxPath; + + @Value("${hzims.ticket.workTask.saveWrokTask.pdf}") + private String saveWrokTaskPdfPath; - /** - * 查询工作票数据 - * @param ticketCode - * @return - */ - @Override - public List workTicketList(String ticketCode) { - if(StringUtil.isEmpty(ticketCode)){ - return workTicketInfoService.list(); - } - return workTicketInfoService.list(Wrappers.lambdaQuery() - .like(WorkTicketInfoEntity::getCode,ticketCode)); - } /** * 工作任务单-开启流程 @@ -106,8 +84,12 @@ public class WorkTaskServiceImpl extends BaseServiceImpl member.length){ + variables.put("duty" + i, ""); + }else{ + variables.put("duty" + i, TaskUtil.getTaskUser(member[i-1])); + } } R result = flowClient.startProcessInstanceContainNameByKey("work_task", FlowUtil.getBusinessKey("work_task_v4",String.valueOf(workTask.getId())), workTask.getCode(), variables); log.error("work_task_start_process_result :{}",result); @@ -142,14 +124,206 @@ public class WorkTaskServiceImpl extends BaseServiceImpl variables = (Map) processWorkFlowResponse.getVariables(); + log.error("work_task_listener_variables : {}",variables); + Object head = variables.get("head"); + if(ObjectUtil.isNotEmpty(head)){ + variables.put("head",head.toString().replaceAll("taskUser_","")); + } WorkTaskVO entity = JSONObject.parseObject(JSONObject.toJSONString(variables), new TypeReference(){}); // 当前流程名称 entity.setTaskName(processWorkFlowResponse.getTaskName()); // 流程阶段执行人员名称 entity.setNextStepOperator(processWorkFlowResponse.getNextStepOperator()); - + if(ObjectUtil.isNotEmpty(entity.getWorkTicketId())){ + entity.setHeadHandleTime(new Date()); + } + if(ObjectUtil.isNotEmpty(entity.getTerminator())){ + entity.setWorkEndTime(new Date()); + } + if(StringUtil.isNotBlank(entity.getLicensorName())){ + entity.setLicensorTime(new Date()); + } // 更新工作任务单信息 this.updateById(entity); - return false; + return true; + } + + /** + * 工作任务单-分页查询 + * @param page + * @param workTask + * @return + */ + @Override + public IPage workTaskService(IPage page, WorkTaskVO workTask) { + QueryWrapper wrapper = Condition.getQueryWrapper(workTask); + if(StringUtil.isNotBlank(workTask.getStartTime())){ + wrapper.ge("CREATE_TIME",workTask.getStartTime()); + } + if(StringUtil.isNotBlank(workTask.getEndTime())){ + wrapper.le("CREATE_TIME",workTask.getEndTime()); + } + if(ObjectUtil.isNotEmpty(workTask.getGroupId())){ + wrapper.eq("GROUP_ID",workTask.getGroupId()); + } + if(ObjectUtil.isNotEmpty(workTask.getGroupId())){ + wrapper.eq("CREATE_DEPT",workTask.getDeptId()); + } + return super.page(page, wrapper); + } + + /** + * 工作任务单预览 + * @param id + */ + @Override + public void preview(Long id) { + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletResponse response = servletRequestAttributes.getResponse(); + //准备数据 + WorkTaskPreviewVO preview = this.workTaskExport(id); + if(ObjectUtil.isEmpty(preview)){ + throw new ServiceException("查询应急抢修单失败"); + } + Map params = new HashMap<>(); + try { + params = PdfUtils.objectToMap(preview); + }catch (Exception e) { + log.error("转换对象失败!"); + } + TemplateExportParams templateExportParams = new TemplateExportParams("template/excel/work_task_template.xlsx", true); + Workbook workbook = null; + try { + workbook = ExcelUtil.getWorkbook(templateExportParams,params); + } catch (Exception e) { + e.printStackTrace(); + } + //上传xlsx至服务器 + String fileName = preview.getCode() + "_工作任务单" + PdfUtils.XLSX_SUFFIX; + try { + ExcelUtil.upload(workbook,saveWrokTaskXlsxPath,fileName); + } catch (Exception e) { + e.printStackTrace(); + } + //将docx文件转换为pdf并保存 + String pdfFileName = preview.getCode() + "_工作任务单" + PdfUtils.PDF_SUFFIX; + String xlsxFileName = preview.getCode() + "_工作任务单" + PdfUtils.XLSX_SUFFIX; + PdfUtils.convertPdf(saveWrokTaskPdfPath, xlsxFileName, saveWrokTaskPdfPath, pdfFileName); + String savePath = saveWrokTaskPdfPath + pdfFileName; + // 设置response参数,可以打开下载页面 + PdfUtils.readPdf(response,savePath); + } + + /** + * 转换工作任务单预览对象 + * @param id + * @return + */ + private WorkTaskPreviewVO workTaskExport(Long id) { + // 查询工作任务单对象 + WorkTaskEntity workTask = this.getById(id); + if(ObjectUtil.isEmpty(workTask)){ + throw new ServiceException("未查询到工作任务单数据!"); + } + // 对象属性拷贝 + WorkTaskPreviewVO preview = new WorkTaskPreviewVO(); + BeanUtil.copyProperties(preview,workTask); + // 机构名称 + R result = sysClient.getDept(workTask.getCreateDept()); + if(result.isSuccess() && ObjectUtil.isNotEmpty(result.getData())){ + preview.setDeptName(result.getData().getDeptName()); + } + // 班组数量 + if(StringUtil.isNotBlank(workTask.getMember())){ + preview.setGroupCount(workTask.getMember().split(",").length); + } + // 工作地点 、工作内容 + if(StringUtil.isNotBlank(workTask.getWorkTask())){ + List contents = JSONObject.parseObject(workTask.getWorkTask(), new TypeReference>() {}); + if(CollectionUtil.isNotEmpty(contents)){ + StringBuilder location = new StringBuilder(),content = new StringBuilder(); + for(WorkTaskContentVO item : contents){ + location.append(item.getLocation()).append("\n"); + content.append(item.getContent()).append("\n"); + } + preview.setLocation(location.substring(0,location.toString().length() - 1)); + preview.setContent(content.substring(0,location.toString().length() - 1)); + } + } + // 计划工作时间 + if(ObjectUtil.isNotEmpty(workTask.getPlanStartTime()) && ObjectUtil.isNotEmpty(workTask.getPlanEndTime())){ + Calendar start = Calendar.getInstance(); + start.setTime(workTask.getPlanStartTime()); + StringBuilder planTimeInterval = new StringBuilder(); + + planTimeInterval.append(start.get(Calendar.YEAR)).append("年").append(start.get(Calendar.MONTH)).append("月").append(start.get(Calendar.DAY_OF_MONTH)) + .append("日").append(start.get(Calendar.HOUR_OF_DAY)).append("时").append(start.get(Calendar.MINUTE)).append("分").append("至"); + Calendar end = Calendar.getInstance(); + end.setTime(workTask.getPlanStartTime()); + planTimeInterval.append(end.get(Calendar.YEAR)).append("年").append(end.get(Calendar.MONTH)).append("月").append(end.get(Calendar.DAY_OF_MONTH)) + .append("日").append(end.get(Calendar.HOUR_OF_DAY)).append("时").append(end.get(Calendar.MINUTE)).append("分"); + preview.setPlanTimeInterval(planTimeInterval.toString()); + } + // 工作派工单签发人 + R user = userClient.userInfoById(workTask.getCreateUser()); + if(user.isSuccess() && ObjectUtil.isNotEmpty(user.getData())){ + preview.setCreateName(user.getData().getName()); + } + // 工作派工单签发时间 + if(ObjectUtil.isNotEmpty(workTask.getCreateTime())){ + Calendar createTime = Calendar.getInstance(); + createTime.setTime(workTask.getCreateTime()); + preview.setCreateYear(createTime.get(Calendar.YEAR)); + preview.setCreateMon(createTime.get(Calendar.MONTH)); + preview.setCreateDay(createTime.get(Calendar.DAY_OF_MONTH)); + preview.setCreateHour(createTime.get(Calendar.HOUR_OF_DAY)); + preview.setCreateMin(createTime.get(Calendar.MINUTE)); + } + // 开票处理时间 + if(ObjectUtil.isNotEmpty(workTask.getHeadHandleTime())){ + Calendar headTime = Calendar.getInstance(); + headTime.setTime(workTask.getHeadHandleTime()); + preview.setHeadYear(headTime.get(Calendar.YEAR)); + preview.setHeadMon(headTime.get(Calendar.MONTH)); + preview.setHeadDay(headTime.get(Calendar.DAY_OF_MONTH)); + preview.setHeadHour(headTime.get(Calendar.HOUR_OF_DAY)); + preview.setHeadMin(headTime.get(Calendar.MINUTE)); + } + // 工单结束时间 + if(ObjectUtil.isNotEmpty(workTask.getWorkEndTime())){ + Calendar entTime = Calendar.getInstance(); + entTime.setTime(workTask.getWorkEndTime()); + preview.setEndYear(entTime.get(Calendar.YEAR)); + preview.setEndMon(entTime.get(Calendar.MONTH)); + preview.setEndDay(entTime.get(Calendar.DAY_OF_MONTH)); + preview.setEndHour(entTime.get(Calendar.HOUR_OF_DAY)); + preview.setEndMin(entTime.get(Calendar.MINUTE)); + } + // 许可时间 + if(ObjectUtil.isNotEmpty(workTask.getLicensorTime())){ + Calendar licensorTime = Calendar.getInstance(); + licensorTime.setTime(workTask.getLicensorTime()); + String licensorExportTime = licensorTime.get(Calendar.YEAR) + "年" + licensorTime.get(Calendar.MONTH) + "月" + licensorTime.get(Calendar.DAY_OF_MONTH) + + "日" + licensorTime.get(Calendar.HOUR_OF_DAY) + "时" + licensorTime.get(Calendar.MINUTE) + "分"; + preview.setLicensorExportTime(licensorExportTime); + } + return preview; + } + + + /** + * 查询工作票数据 + * @param ticketCode + * @return + */ + @Override + public List workTicketList(String ticketCode) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.lambda().orderByDesc(WorkTicketInfoEntity::getCreateTime); + if(StringUtil.isEmpty(ticketCode)){ + return workTicketInfoService.list(queryWrapper); + } + queryWrapper.lambda().like(WorkTicketInfoEntity::getCode,ticketCode); + return workTicketInfoService.list(queryWrapper); } } \ No newline at end of file diff --git a/hzims-service/ticket/src/main/resources/template/excel/work_task_template.xlsx b/hzims-service/ticket/src/main/resources/template/excel/work_task_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bf8b77622277eb088b24413f63a95c8ed1c21ebb GIT binary patch literal 19699 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�)8PaB2D)7o|@rm#ni6V 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 Mtb4Qn=9kd^2Xw!!*Z=?k literal 0 HcmV?d00001 From cc068becb26b6988ee97fb60249087e847cb7c30 Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 19:43:19 +0800 Subject: [PATCH 15/20] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E6=BC=94?= =?UTF-8?q?=E7=BB=83=E8=AE=B0=E5=BD=95=E8=A1=A8=E5=AF=BC=E5=87=BA=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 eecddec..63a048e 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 @@ -5,7 +5,7 @@ SELECT - t1.actual_start_time, t1.actual_end_time, t2.unit, t2.location, t2.host, t2.conference_method, t2.theme, + t1.code, t1.actual_start_time, t1.actual_end_time, t2.unit, t2.location, t2.host, t2.conference_method, t2.theme, t1.recorder, t1.people_name, t1.content, t1.img_path, t1.file_path FROM hzims_conference_record t1 - ON hzims_conference_plan t2 ON t1.conference_plan_id = t2.id + LEFT JOIN hzims_conference_plan t2 ON t1.conference_plan_id = t2.id WHERE - t1.is_deteled = 0 + t1.is_deleted = 0 AND t1.id = #{id} \ No newline at end of file diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.java index 8497c60..23290b8 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.java @@ -19,7 +19,8 @@ public interface TestScoreMapper extends BaseMapper { /** * 查询考试成绩列表 * @param testId 考试记录id + * @param name 姓名 * @return 考试成绩列表 */ - List testScoreList(Long testId); + List testScoreList(Long testId, String name); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.xml index cf6795a..fcd0903 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestScoreMapper.xml @@ -12,6 +12,9 @@ AND test_id = #{testId} + + AND name like concat('%', #{name}, '%'} + ORDER BY score DESC diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestScoreService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestScoreService.java index 802e6ea..85d8e4e 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestScoreService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestScoreService.java @@ -18,9 +18,10 @@ public interface ITestScoreService extends IService { /** * 查询考试成绩列表 * @param testId 考试记录id + * @param name 姓名 * @return 考试成绩列表 */ - List testScoreList(Long testId); + List testScoreList(Long testId, String name); /** * 批量填写分数 diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarCheckRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarCheckRecordServiceImpl.java index 1b55389..ad33674 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarCheckRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarCheckRecordServiceImpl.java @@ -191,9 +191,9 @@ public class CarCheckRecordServiceImpl extends ServiceImpl params = BaseUtil.obj2Map(carCheckRecordDetailVO); - String templateFile = "template/车检记录单" + SafeProductConstant.DOCX_SUFFIX; - String wordPath = savePath + "/车检记录单" + SafeProductConstant.DOCX_SUFFIX; - String pdfPath = savePath + "/车检记录单" + SafeProductConstant.PDF_SUFFIX; + 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); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarUsedRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarUsedRecordServiceImpl.java index 90f9977..0fbfb74 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarUsedRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/CarUsedRecordServiceImpl.java @@ -54,9 +54,9 @@ public class CarUsedRecordServiceImpl extends ServiceImpl testScoreList(Long testId) { - return baseMapper.testScoreList(testId); + public List testScoreList(Long testId, String name) { + return baseMapper.testScoreList(testId, name); } /** diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java index ab862ed..1cc74f1 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/utils/BaseUtil.java @@ -111,6 +111,7 @@ public class BaseUtil { xwpfDocument = WordExportUtil.exportWord07(templatePath, params); } catch (Exception e) { log.error("数据写入异常: {}", e.getMessage()); + e.printStackTrace(); } return xwpfDocument; } 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 9f2813e..1c13094 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 @@ -69,7 +69,7 @@ CREATE TABLE `hzims_train_record` ( `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 '培训内容', + `content` mediumtext COMMENT '培训内容', `actual_start_time` datetime DEFAULT NULL COMMENT '实际培训开始时间', `actual_end_time` datetime DEFAULT NULL COMMENT '实际培训结束时间', `command` varchar(250) DEFAULT NULL COMMENT '培训评价', @@ -153,7 +153,7 @@ CREATE TABLE `hzims_conference_record` ( `actual_start_time` datetime DEFAULT NULL COMMENT '会议实际开始时间', `actual_end_time` datetime DEFAULT NULL COMMENT '会议实际结束时间', `recorder` varchar(20) DEFAULT '' COMMENT '记录人', - `content` mediumtext DEFAULT '' DEFAULT '' COMMENT '会议内容', + `content` mediumtext 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 '创建人', @@ -168,7 +168,8 @@ CREATE TABLE `hzims_conference_record` ( CREATE TABLE `hzims_hygiene_plan` ( `id` bigint(20) NOT NULL COMMENT '主键id', - `code` varchar(50) NOT NULL COMMENT '编码', + `unit` varchar(50) NOT NULL COMMENT '单位', + `name` 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 '计划结束时间', @@ -210,7 +211,7 @@ CREATE TABLE `hzims_hygiene_record` ( `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 '综合评分', + `comprehensive_score` varchar(500) 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 '创建人', @@ -258,8 +259,8 @@ CREATE TABLE `hzims_car_maintenance` ( `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 '维保结束时间', + `start_time` date NOT NULL COMMENT '维保开始时间', + `end_time` date NOT NULL COMMENT '维保结束时间', `location` varchar(255) NOT NULL COMMENT '维保地点', `cost` bigint(20) NOT NULL COMMENT '维保费用', `maintainer` varchar(20) NOT NULL COMMENT '维保人', @@ -336,4 +337,9 @@ CREATE TABLE `hzims_car_check_item` ( `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 +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='车检项表' ROW_FORMAT=Dynamic; + +CREATE TABLE `hzims_equipment` ( + `id` bigint(20) NOT NULL COMMENT '主键id', + `name` +) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='特种设备表' ROW_FORMAT=Dynamic; \ No newline at end of file From 60abe7113d747ff3755bd0f46756b2c45388e765 Mon Sep 17 00:00:00 2001 From: liwen Date: Tue, 16 Jan 2024 11:37:28 +0800 Subject: [PATCH 18/20] =?UTF-8?q?fix:=20=E4=BC=9A=E8=AE=AE=E3=80=81?= =?UTF-8?q?=E5=8D=AB=E7=94=9F=E3=80=81=E8=BD=A6=E8=BE=86=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97bug=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/enums/CarMaintenanceTypeEnum.java | 30 +++++++++++++++++++++ .../safeproduct/vo/CarMaintenanceDetailVO.java | 3 +++ .../safeproduct/vo/ConferenceRecordDetailVO.java | 3 +++ .../safeproduct/mapper/CarMaintenanceMapper.xml | 2 +- .../service/impl/CarMaintenanceServiceImpl.java | 8 ++++++ .../service/impl/HygieneRecordServiceImpl.java | 6 ++--- .../main/resources/template/会议记录表.docx | Bin 11775 -> 11789 bytes .../main/resources/template/培训记录表.docx | Bin 11813 -> 11819 bytes .../main/resources/template/演练记录表.docx | Bin 12003 -> 11999 bytes 9 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/CarMaintenanceTypeEnum.java diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/CarMaintenanceTypeEnum.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/CarMaintenanceTypeEnum.java new file mode 100644 index 0000000..d19ccf3 --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/CarMaintenanceTypeEnum.java @@ -0,0 +1,30 @@ +package com.hnac.hzims.safeproduct.enums; + +/** + * 车辆维保类型枚举类 + * + * @author liwen + * @date 2024-01-16 + */ +public enum CarMaintenanceTypeEnum { + + MAINTAIN("MAINTAIN", "保养"), + REPAIR("REPAIR", "维修"); + + private final String value; + + private final String desc; + + CarMaintenanceTypeEnum(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/CarMaintenanceDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarMaintenanceDetailVO.java index 278e6b7..dbeec77 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarMaintenanceDetailVO.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarMaintenanceDetailVO.java @@ -58,4 +58,7 @@ public class CarMaintenanceDetailVO { @ApiModelProperty("车牌号") private String plateNumber; + + @ApiModelProperty("维保类型") + private String maintenanceType; } 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 index 87880ad..515a252 100644 --- 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 @@ -14,6 +14,9 @@ import java.util.Date; @ApiModel(value = "会议记录表VO类") public class ConferenceRecordDetailVO { + @ApiModelProperty("编码") + private String code; + @ApiModelProperty("会议实际开始时间") private Date actualStartTime; diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarMaintenanceMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarMaintenanceMapper.xml index b77ecf2..e9f9afc 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarMaintenanceMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/CarMaintenanceMapper.xml @@ -5,7 +5,7 @@ + SELECT *,CREATE_DEPT AS deptId,CREATE_USER AS userId,CREATE_TIME AS time FROM HZIMS_WORK_TASK + WHERE IS_DELETED = 0 + AND ID = #{id} + diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java index cc05cf4..5076782 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/repair/service/impl/WorkTaskServiceImpl.java @@ -139,6 +139,8 @@ public class WorkTaskServiceImpl extends BaseServiceImpl params = new HashMap<>(); try { params = PdfUtils.objectToMap(preview); + log.error("preview_to_map : {}",params); }catch (Exception e) { log.error("转换对象失败!"); } @@ -221,25 +224,28 @@ public class WorkTaskServiceImpl extends BaseServiceImpl result = sysClient.getDept(workTask.getCreateDept()); + R result = sysClient.getDept(preview.getDeptId()); if(result.isSuccess() && ObjectUtil.isNotEmpty(result.getData())){ - preview.setDeptName(result.getData().getDeptName()); + preview.setCompany(result.getData().getDeptName()); + } + // 工作派工单签发人 + R user = userClient.userInfoById(preview.getUserId()); + if(user.isSuccess() && ObjectUtil.isNotEmpty(user.getData())){ + preview.setCreateName(user.getData().getName()); } // 班组数量 - if(StringUtil.isNotBlank(workTask.getMember())){ - preview.setGroupCount(workTask.getMember().split(",").length); + if(StringUtil.isNotBlank(preview.getMember())){ + preview.setGroupCount(preview.getMember().split(",").length); } // 工作地点 、工作内容 - if(StringUtil.isNotBlank(workTask.getWorkTask())){ - List contents = JSONObject.parseObject(workTask.getWorkTask(), new TypeReference>() {}); + if(StringUtil.isNotBlank(preview.getWorkTask())){ + List contents = JSONObject.parseObject(preview.getWorkTask(), new TypeReference>() {}); if(CollectionUtil.isNotEmpty(contents)){ StringBuilder location = new StringBuilder(),content = new StringBuilder(); for(WorkTaskContentVO item : contents){ @@ -251,28 +257,23 @@ public class WorkTaskServiceImpl extends BaseServiceImpl user = userClient.userInfoById(workTask.getCreateUser()); - if(user.isSuccess() && ObjectUtil.isNotEmpty(user.getData())){ - preview.setCreateName(user.getData().getName()); - } // 工作派工单签发时间 - if(ObjectUtil.isNotEmpty(workTask.getCreateTime())){ + if(ObjectUtil.isNotEmpty(preview.getTime())){ Calendar createTime = Calendar.getInstance(); - createTime.setTime(workTask.getCreateTime()); + createTime.setTime(preview.getTime()); preview.setCreateYear(createTime.get(Calendar.YEAR)); preview.setCreateMon(createTime.get(Calendar.MONTH)); preview.setCreateDay(createTime.get(Calendar.DAY_OF_MONTH)); @@ -280,9 +281,9 @@ public class WorkTaskServiceImpl extends BaseServiceImplI-hX(1AK9opzzj(j* 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 delta 7911 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