73 changed files with 2515 additions and 568 deletions
			
			
		@ -0,0 +1,44 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.basic.entity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.annotation.SqlCondition; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.annotation.TableName; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.QueryField; | 
				
			||||||
 | 
					import org.springblade.core.tenant.mp.TenantEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  实体类 | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@TableName("hzims_certificatet_notice") | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true) | 
				
			||||||
 | 
					@ApiModel(value = "证书通知配置表", description = "证书通知配置表") | 
				
			||||||
 | 
					public class CertificatetNoticeEntity extends TenantEntity { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 通知类型 | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@ApiModelProperty(value = "通知类型") | 
				
			||||||
 | 
						@QueryField(condition = SqlCondition.EQUAL) | 
				
			||||||
 | 
						private String sendType; | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 距离过期前几天通知 | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@ApiModelProperty(value = "距离过期前几天通知") | 
				
			||||||
 | 
						@QueryField(condition = SqlCondition.EQUAL) | 
				
			||||||
 | 
						private Integer safeTime; | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 通知用户 | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@ApiModelProperty(value = "通知用户") | 
				
			||||||
 | 
						@QueryField(condition = SqlCondition.LIKE) | 
				
			||||||
 | 
						private String noticeUsers; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,59 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.dto; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | 
				
			||||||
 | 
					import com.alibaba.excel.annotation.ExcelProperty; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@ExcelIgnoreUnannotated | 
				
			||||||
 | 
					@ApiModel(value = "会议数据导出DTO类") | 
				
			||||||
 | 
					public class ConferenceExportDTO { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("单位") | 
				
			||||||
 | 
					    @ExcelProperty(value = "单位", index = 0) | 
				
			||||||
 | 
					    private String unit; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议计划开始时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议计划开始时间", index = 1) | 
				
			||||||
 | 
					    private Date scheduledStartTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议计划结束时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议计划结束时间", index = 2) | 
				
			||||||
 | 
					    private Date scheduledEndTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议主题") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议主题", index = 3) | 
				
			||||||
 | 
					    private String theme; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议地点") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议地点", index = 4) | 
				
			||||||
 | 
					    private String location; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议方式") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议方式", index = 5) | 
				
			||||||
 | 
					    private String conferenceMethod; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("主持人") | 
				
			||||||
 | 
					    @ExcelProperty(value = "主持人", index = 6) | 
				
			||||||
 | 
					    private String host; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议实际开始时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议实际开始时间", index = 7) | 
				
			||||||
 | 
					    private Date actualStartTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议实际结束时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议实际结束时间", index = 8) | 
				
			||||||
 | 
					    private Date actualEndTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议状态") | 
				
			||||||
 | 
					    @ExcelProperty(value = "会议状态", index = 9) | 
				
			||||||
 | 
					    private String conferenceStatus; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,55 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.dto; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | 
				
			||||||
 | 
					import com.alibaba.excel.annotation.ExcelProperty; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@ExcelIgnoreUnannotated | 
				
			||||||
 | 
					@ApiModel(value = "演练数据导出DTO类") | 
				
			||||||
 | 
					public class RehearsalExportDTO { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("单位") | 
				
			||||||
 | 
					    @ExcelProperty(value = "单位", index = 0) | 
				
			||||||
 | 
					    private String unit; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("演练科目") | 
				
			||||||
 | 
					    @ExcelProperty(value = "演练科目", index = 1) | 
				
			||||||
 | 
					    private String subject; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("演练计划开始时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "演练计划开始时间", index = 2) | 
				
			||||||
 | 
					    private Date scheduledStartTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("演练计划结束时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "演练计划结束时间", index = 3) | 
				
			||||||
 | 
					    private Date scheduledEndTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("演练地点") | 
				
			||||||
 | 
					    @ExcelProperty(value = "演练地点", index = 4) | 
				
			||||||
 | 
					    private String location; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("参演人数") | 
				
			||||||
 | 
					    @ExcelProperty(value = "参演人数", index = 5) | 
				
			||||||
 | 
					    private Integer peopleNum; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("演练实际开始时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "演练实际开始时间", index = 6) | 
				
			||||||
 | 
					    private Date actualStartTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("演练实际结束时间") | 
				
			||||||
 | 
					    @ExcelProperty(value = "演练实际结束时间", index = 7) | 
				
			||||||
 | 
					    private Date actualEndTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("演练状态") | 
				
			||||||
 | 
					    @ExcelProperty(value = "演练状态", index = 8) | 
				
			||||||
 | 
					    private String rehearsalStatus; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,60 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.entity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.annotation.TableName; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode; | 
				
			||||||
 | 
					import org.springblade.core.mp.base.BaseEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull; | 
				
			||||||
 | 
					import javax.validation.constraints.Size; | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true) | 
				
			||||||
 | 
					@TableName("hzims_conference_plan") | 
				
			||||||
 | 
					@ApiModel(value = "会议计划实体类") | 
				
			||||||
 | 
					public class ConferencePlanEntity extends BaseEntity { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 50, message = "单位字段长度不能超过50") | 
				
			||||||
 | 
					    @ApiModelProperty("单位") | 
				
			||||||
 | 
					    private String unit; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 50, message = "会议主题字段长度不能超过50") | 
				
			||||||
 | 
					    @ApiModelProperty("会议主题") | 
				
			||||||
 | 
					    private String theme; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @ApiModelProperty("会议计划开始时间") | 
				
			||||||
 | 
					    private Date scheduledStartTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @ApiModelProperty("会议计划结束时间") | 
				
			||||||
 | 
					    private Date scheduledEndTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 255, message = "演练地点字段长度不能超过255") | 
				
			||||||
 | 
					    @ApiModelProperty("会议地点") | 
				
			||||||
 | 
					    private String location; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 10, message = "总指挥字段长度不能超过10") | 
				
			||||||
 | 
					    @ApiModelProperty("主持人") | 
				
			||||||
 | 
					    private String host; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 20, message = "会议方式字段长度不能超过20") | 
				
			||||||
 | 
					    @ApiModelProperty("会议方式") | 
				
			||||||
 | 
					    private String conferenceMethod; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 20, message = "会议状态字段长度不能超过20") | 
				
			||||||
 | 
					    @ApiModelProperty("会议状态") | 
				
			||||||
 | 
					    private String conferenceStatus; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,55 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.entity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.annotation.TableName; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode; | 
				
			||||||
 | 
					import org.springblade.core.mp.base.BaseEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.Size; | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true) | 
				
			||||||
 | 
					@TableName("hzims_conference_record") | 
				
			||||||
 | 
					@ApiModel(value = "会议记录实体类") | 
				
			||||||
 | 
					public class ConferenceRecordEntity extends BaseEntity { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议计划id") | 
				
			||||||
 | 
					    private Long conferencePlanId; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 50, message = "编码字段长度不能超过50") | 
				
			||||||
 | 
					    @ApiModelProperty("编码") | 
				
			||||||
 | 
					    private String code; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 5000, message = "参会人员字段长度超出限制范围") | 
				
			||||||
 | 
					    @ApiModelProperty("参会人员") | 
				
			||||||
 | 
					    private String peopleName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议实际开始时间") | 
				
			||||||
 | 
					    private Date actualStartTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty("会议实际结束时间") | 
				
			||||||
 | 
					    private Date actualEndTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 20, message = "记录人字段长度不能超过20") | 
				
			||||||
 | 
					    @ApiModelProperty("记录人") | 
				
			||||||
 | 
					    private String recorder; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 250, message = "会议内容字段长度不能超过250") | 
				
			||||||
 | 
					    @ApiModelProperty("会议内容") | 
				
			||||||
 | 
					    private String content; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 1000, message = "会议图片字段长度不能超过1000") | 
				
			||||||
 | 
					    @ApiModelProperty("会议图片") | 
				
			||||||
 | 
					    private String imgPath; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 1000, message = "会议附件字段长度不能超过1000") | 
				
			||||||
 | 
					    @ApiModelProperty("会议附件") | 
				
			||||||
 | 
					    private String filePath; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,60 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.entity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.annotation.TableName; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					import lombok.EqualsAndHashCode; | 
				
			||||||
 | 
					import org.springblade.core.mp.base.BaseEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull; | 
				
			||||||
 | 
					import javax.validation.constraints.Size; | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@EqualsAndHashCode(callSuper = true) | 
				
			||||||
 | 
					@TableName("hzims_rehearsal_plan") | 
				
			||||||
 | 
					@ApiModel(value = "演练计划实体类") | 
				
			||||||
 | 
					public class RehearsalPlanEntity extends BaseEntity { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 50, message = "单位字段长度不能超过50") | 
				
			||||||
 | 
					    @ApiModelProperty("单位") | 
				
			||||||
 | 
					    private String unit; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 50, message = "演练科目字段长度不能超过50") | 
				
			||||||
 | 
					    @ApiModelProperty("演练科目") | 
				
			||||||
 | 
					    private String subject; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @ApiModelProperty("演练计划开始时间") | 
				
			||||||
 | 
					    private Date scheduledStartTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @ApiModelProperty("演练计划结束时间") | 
				
			||||||
 | 
					    private Date scheduledEndTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 255, message = "演练地点字段长度不能超过255") | 
				
			||||||
 | 
					    @ApiModelProperty("演练地点") | 
				
			||||||
 | 
					    private String location; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 10, message = "总指挥字段长度不能超过10") | 
				
			||||||
 | 
					    @ApiModelProperty("总指挥") | 
				
			||||||
 | 
					    private String commander; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Size(max = 20, message = "演练方式字段长度不能超过20") | 
				
			||||||
 | 
					    @ApiModelProperty("演练方式") | 
				
			||||||
 | 
					    private String rehearsalMethod; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NotNull | 
				
			||||||
 | 
					    @Size(max = 20, message = "演练状态字段长度不能超过20") | 
				
			||||||
 | 
					    @ApiModelProperty("演练状态") | 
				
			||||||
 | 
					    private String rehearsalStatus; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.enums; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议方式枚举类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public enum ConferenceMethodEnum { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ONLINE("ONLINE", "线上"), | 
				
			||||||
 | 
					    OFFLINE("OFFLINE", "线下"), | 
				
			||||||
 | 
					    MIXED("MIXED", "线上+线下"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String value; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String desc; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ConferenceMethodEnum(String value, String desc) { | 
				
			||||||
 | 
					        this.value = value; | 
				
			||||||
 | 
					        this.desc = desc; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getValue() { | 
				
			||||||
 | 
					        return value; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getDesc() { | 
				
			||||||
 | 
					        return desc; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.enums; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议状态枚举类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public enum ConferenceStatusEnum { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    WAITING("WAITING", "未开始"), | 
				
			||||||
 | 
					    UNFINISHED("UNFINISHED", "未完成"), | 
				
			||||||
 | 
					    FINISHED("FINISHED", "已完成"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String value; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String desc; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ConferenceStatusEnum(String value, String desc) { | 
				
			||||||
 | 
					        this.value = value; | 
				
			||||||
 | 
					        this.desc = desc; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getValue() { | 
				
			||||||
 | 
					        return value; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getDesc() { | 
				
			||||||
 | 
					        return desc; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.enums; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 培训计划状态枚举类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public enum TrainStatusEnum { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    WAITING("WAITING", "未开始"), | 
				
			||||||
 | 
					    UNFINISHED("UNFINISHED", "未完成"), | 
				
			||||||
 | 
					    FINISHED("FINISHED", "已完成"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String value; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String desc; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TrainStatusEnum(String value, String desc) { | 
				
			||||||
 | 
					        this.value = value; | 
				
			||||||
 | 
					        this.desc = desc; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getValue() { | 
				
			||||||
 | 
					        return value; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getDesc() { | 
				
			||||||
 | 
					        return desc; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,63 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.basic.controller; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
				
			||||||
 | 
					import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.service.IImsCertificatetNoticeService; | 
				
			||||||
 | 
					import io.swagger.annotations.Api; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiOperation; | 
				
			||||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||||
 | 
					import org.springblade.core.boot.ctrl.BladeController; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.ObjectUtil; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.*; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 控制器 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@RestController | 
				
			||||||
 | 
					@AllArgsConstructor | 
				
			||||||
 | 
					@RequestMapping("/certificatetNotice") | 
				
			||||||
 | 
					@Api(value = "档案通知配置页面", tags = "档案通知配置页面") | 
				
			||||||
 | 
					public class CertificatetNoticeController extends BladeController { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final IImsCertificatetNoticeService iImsCertificatetNoticeService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 新增或修改 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @PostMapping("/submit") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 1) | 
				
			||||||
 | 
					    @ApiOperation(value = "增加", notes = "传入imsDutyClass") | 
				
			||||||
 | 
					    public R submit(@RequestBody CertificatetNoticeEntity certificatetNoticeEntity) { | 
				
			||||||
 | 
					        Boolean submit = iImsCertificatetNoticeService.saveOrUpdate(certificatetNoticeEntity); | 
				
			||||||
 | 
					        if (submit) { | 
				
			||||||
 | 
					            return R.success("保存成功"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return R.fail("保存失败"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 新增或修改 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @PostMapping("/getCertificatetNotice") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 1) | 
				
			||||||
 | 
					    @ApiOperation(value = "增加", notes = "传入imsDutyClass") | 
				
			||||||
 | 
					    public R getCertificatetNotice() { | 
				
			||||||
 | 
					        CertificatetNoticeEntity res = iImsCertificatetNoticeService.getOne(Wrappers.<CertificatetNoticeEntity>lambdaQuery() | 
				
			||||||
 | 
					                .eq(CertificatetNoticeEntity::getIsDeleted, 0) | 
				
			||||||
 | 
					                .last("limit 1;")); | 
				
			||||||
 | 
					        if (ObjectUtil.isNotEmpty(res)) { | 
				
			||||||
 | 
					            return R.data(res); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return R.data(""); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,15 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.basic.mapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Mapper; | 
				
			||||||
 | 
					import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  Mapper 接口 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Mapper | 
				
			||||||
 | 
					public interface CertificatetNoticeMapper extends UserDataScopeBaseMapper<CertificatetNoticeEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,6 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.basic.mapper.CertificatetNoticeMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.basic.service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.IService; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  服务类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface IImsCertificatetNoticeService extends IService<CertificatetNoticeEntity> { | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,20 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.basic.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.mapper.CertificatetNoticeMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.service.IImsCertificatetNoticeService; | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					import org.springblade.core.mp.base.BaseServiceImpl; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 证书实现类 | 
				
			||||||
 | 
					 * @author ty | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					@RequiredArgsConstructor | 
				
			||||||
 | 
					public class CertificatetNoticeServiceImpl extends BaseServiceImpl<CertificatetNoticeMapper, CertificatetNoticeEntity> implements IImsCertificatetNoticeService { | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,15 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.mapper.basic; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetEntity; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Mapper; | 
				
			||||||
 | 
					import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  Mapper 接口 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Mapper | 
				
			||||||
 | 
					public interface CertificatetMapper extends UserDataScopeBaseMapper<CertificatetEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,6 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.scheduled.mapper.basic.CertificatetMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,15 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.mapper.basic; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Mapper; | 
				
			||||||
 | 
					import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  Mapper 接口 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Mapper | 
				
			||||||
 | 
					public interface CertificatetNoticeMapper extends UserDataScopeBaseMapper<CertificatetNoticeEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,6 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.scheduled.mapper.basic.CertificatetNoticeMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,29 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.mapper.basic; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.PersonManagemetEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.vo.PersonManagemetVo; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Mapper; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Param; | 
				
			||||||
 | 
					import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  Mapper 接口 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Mapper | 
				
			||||||
 | 
					public interface PersonManagemetMapper extends UserDataScopeBaseMapper<PersonManagemetEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    List<PersonManagemetVo> getPersonManagemetEntity( | 
				
			||||||
 | 
					            @Param(value = "type")String type, @Param(value = "deadStartTime") Date deadStartTime, @Param(value = "deadTime")Date deadTime, | 
				
			||||||
 | 
					            @Param(value = "name")String name, @Param(value = "unitName")String unitName, @Param(value = "sex")String sex, @Param(value = "job")String job, | 
				
			||||||
 | 
					            @Param(value = "academicTitle")String academicTitle, @Param(value = "status")Integer status, @Param(value = "current")Integer current, @Param(value = "size")Integer size) ; | 
				
			||||||
 | 
					    Integer getCountByPersonManagemetEntity( | 
				
			||||||
 | 
					            @Param(value = "type")String type, @Param(value = "deadStartTime") Date deadStartTime, @Param(value = "deadTime")Date deadTime, | 
				
			||||||
 | 
					            @Param(value = "name")String name, @Param(value = "unitName")String unitName, @Param(value = "sex")String sex, @Param(value = "job")String job, | 
				
			||||||
 | 
					            @Param(value = "academicTitle")String academicTitle, @Param(value = "status")Integer status, @Param(value = "current")Integer current, @Param(value = "size")Integer size) ; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,97 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.scheduled.mapper.basic.PersonManagemetMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--嵌套结果的 resultMap--> | 
				
			||||||
 | 
					    <resultMap id="PersonManagemetMap" type="com.hnac.hzims.basic.vo.PersonManagemetVo"> | 
				
			||||||
 | 
					        <id property="id" column="id" jdbcType="VARCHAR" /> | 
				
			||||||
 | 
					        <result property="name" column="name" jdbcType="VARCHAR" /> | 
				
			||||||
 | 
					        <result property="unitName" column="unitName" jdbcType="VARCHAR" /> | 
				
			||||||
 | 
					        <result property="sex" column="sex" jdbcType="VARCHAR" /> | 
				
			||||||
 | 
					        <result property="job" column="job" jdbcType="VARCHAR" /> | 
				
			||||||
 | 
					        <result property="academicTitle" column="academic_title" jdbcType="VARCHAR"/> | 
				
			||||||
 | 
					        <result property="phone" column="phone" jdbcType="VARCHAR"/> | 
				
			||||||
 | 
					        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> | 
				
			||||||
 | 
					        <collection property="certificatetEntityList" ofType="com.hnac.hzims.basic.entity.CertificatetEntity"> | 
				
			||||||
 | 
					            <id property="id" column="certificatetId" /> | 
				
			||||||
 | 
					            <result property="personId" column="person_id" /> | 
				
			||||||
 | 
					            <result property="type" column="type" /> | 
				
			||||||
 | 
					            <result property="deadTime" column="dead_time" /> | 
				
			||||||
 | 
					            <result property="pic" column="pic" /> | 
				
			||||||
 | 
					            <result property="status" column="status" /> | 
				
			||||||
 | 
					            <result property="isDead" column="isDead" /> | 
				
			||||||
 | 
					        </collection> | 
				
			||||||
 | 
					    </resultMap> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--嵌套查询--> | 
				
			||||||
 | 
					    <select id="getPersonManagemetEntity" resultMap="PersonManagemetMap"> | 
				
			||||||
 | 
					        select a.id ,a.name,a.unit_name ,a.sex,a.job ,a.academic_title,a.phone ,a.CREATE_TIME, | 
				
			||||||
 | 
					                b.id as certificatetId,b.person_id,b.type,b.dead_time,b.pic,b.CREATE_TIME,b.status,b.create_dept, | 
				
			||||||
 | 
					        case when b.dead_time < NOW() then "过期" else "未过期" end as isDead | 
				
			||||||
 | 
					        from hzims_person_managemet as a | 
				
			||||||
 | 
					        left join hzims_certificatet as b | 
				
			||||||
 | 
					        on a.id=b.person_id | 
				
			||||||
 | 
					        where a.is_deleted = 0 and b.is_deleted = 0 | 
				
			||||||
 | 
					        <if test="type != null and type != ''"> | 
				
			||||||
 | 
					            and b.type = #{type} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="deadStartTime != null and type != ''"> | 
				
			||||||
 | 
					            and b.dead_time  >= #{deadStartTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="deadTime != null and type != ''"> | 
				
			||||||
 | 
					            and b.dead_time <=  #{deadTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="name != null and name != ''"> | 
				
			||||||
 | 
					            and a.name like CONCAT('%',#{name},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="unitName != null and unitName != ''"> | 
				
			||||||
 | 
					            and a.unit_name like CONCAT('%',#{unitName},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="sex != null and sex != ''"> | 
				
			||||||
 | 
					            and a.sex = #{sex} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="job != null and job != ''"> | 
				
			||||||
 | 
					            and a.job like CONCAT('%',#{job},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="academicTitle != null and academicTitle != ''"> | 
				
			||||||
 | 
					            and a.academic_title like CONCAT('%',#{academic_title},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        LIMIT #{current}, #{size} | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					    <!--嵌套查询--> | 
				
			||||||
 | 
					    <select id="getCountByPersonManagemetEntity" resultType="Integer"> | 
				
			||||||
 | 
					        select count(*) | 
				
			||||||
 | 
					        from hzims_person_managemet as a | 
				
			||||||
 | 
					        left join hzims_certificatet as b | 
				
			||||||
 | 
					        on a.id=b.person_id | 
				
			||||||
 | 
					        where a.is_deleted = 0 and b.is_deleted = 0 | 
				
			||||||
 | 
					        <if test="type != null and type != ''"> | 
				
			||||||
 | 
					            and b.type = #{type} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="deadStartTime != null and type != ''"> | 
				
			||||||
 | 
					            and b.dead_time  >= #{deadStartTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="deadTime != null and type != ''"> | 
				
			||||||
 | 
					            and b.dead_time <=  #{deadTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="name != null and name != ''"> | 
				
			||||||
 | 
					            and a.name like CONCAT('%',#{name},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="unitName != null and unitName != ''"> | 
				
			||||||
 | 
					            and a.unit_name like CONCAT('%',#{unitName},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="sex != null and sex != ''"> | 
				
			||||||
 | 
					            and a.sex = #{sex} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="job != null and job != ''"> | 
				
			||||||
 | 
					            and a.job like CONCAT('%',#{job},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="academicTitle != null and academicTitle != ''"> | 
				
			||||||
 | 
					            and a.academic_title like CONCAT('%',#{academic_title},'%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="status != null and status != ''"> | 
				
			||||||
 | 
					            and b.status =#{status} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,141 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.scheduled; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.fastjson.JSONObject; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.PersonManagemetEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.message.MessageConstants; | 
				
			||||||
 | 
					import com.hnac.hzims.message.dto.BusinessMessageDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.message.entity.config.SmsConfigEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.message.fegin.IMessageClient; | 
				
			||||||
 | 
					import com.hnac.hzims.message.fegin.IMessageConfigClient; | 
				
			||||||
 | 
					import com.hnac.hzims.scheduled.mapper.basic.PersonManagemetMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.scheduled.service.basic.IImsCertificatetNoticeService; | 
				
			||||||
 | 
					import com.hnac.hzims.scheduled.service.basic.IImsCertificatetService; | 
				
			||||||
 | 
					import com.xxl.job.core.biz.model.ReturnT; | 
				
			||||||
 | 
					import com.xxl.job.core.handler.annotation.XxlJob; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.CollectionUtil; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.DateUtil; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.Func; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.ObjectUtil; | 
				
			||||||
 | 
					import org.springblade.system.feign.ISysClient; | 
				
			||||||
 | 
					import org.springblade.system.user.cache.UserCache; | 
				
			||||||
 | 
					import org.springblade.system.user.entity.User; | 
				
			||||||
 | 
					import org.springblade.system.user.feign.IUserClient; | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired; | 
				
			||||||
 | 
					import org.springframework.stereotype.Component; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.text.ParseException; | 
				
			||||||
 | 
					import java.text.SimpleDateFormat; | 
				
			||||||
 | 
					import java.util.*; | 
				
			||||||
 | 
					import java.util.stream.Collectors; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static com.hnac.hzims.operational.main.constant.MainConstants.*; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 排班到期定时任务通知 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author ty | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					@Component | 
				
			||||||
 | 
					public class basicScheduledTask { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private IImsCertificatetService iImsCertificatetService; | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private IImsCertificatetNoticeService iImsCertificatetNoticeService; | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private ISysClient sysClient; | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private IUserClient userClient; | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private IMessageClient messageClient; | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private PersonManagemetMapper personManagemetMapper; | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    private IMessageConfigClient messageConfigClient; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * realId刷新 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @XxlJob(CERTIFICATET_DEAD_LINE_NOTICE) | 
				
			||||||
 | 
					//    @Scheduled(cron = "0 */1 * * * ? ")
 | 
				
			||||||
 | 
					    public ReturnT<String> certificatetDeadLineNotice(String param) throws ParseException { | 
				
			||||||
 | 
					        Date endTime = new Date(); | 
				
			||||||
 | 
					        if (Func.isBlank(param)) { | 
				
			||||||
 | 
					            endTime = new SimpleDateFormat("yyyy-MM-dd").parse(param); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        CertificatetNoticeEntity noticeEntity = iImsCertificatetNoticeService.getOne(Wrappers.<CertificatetNoticeEntity>lambdaQuery() | 
				
			||||||
 | 
					                .eq(CertificatetNoticeEntity::getIsDeleted, 0) | 
				
			||||||
 | 
					                .last("limit 1;")); | 
				
			||||||
 | 
					        //用户档案过期截止时间
 | 
				
			||||||
 | 
					        Date date = DateUtil.plusDays(endTime, noticeEntity.getSafeTime()); | 
				
			||||||
 | 
					        List<CertificatetEntity> list = iImsCertificatetService.list(Wrappers.<CertificatetEntity>lambdaQuery() | 
				
			||||||
 | 
					                .le(CertificatetEntity::getDeadTime, date)); | 
				
			||||||
 | 
					        String noticeUsers = noticeEntity.getNoticeUsers(); | 
				
			||||||
 | 
					        List<String> userList = Arrays.asList(noticeUsers.split(",")); | 
				
			||||||
 | 
					        if (CollectionUtil.isNotEmpty(userList) && CollectionUtil.isNotEmpty(list)) { | 
				
			||||||
 | 
					            List<String> personIds = list.stream().map(CertificatetEntity::getPersonId).collect(Collectors.toList()); | 
				
			||||||
 | 
					            List<PersonManagemetEntity> personManagemetEntities = personManagemetMapper.selectList(Wrappers.<PersonManagemetEntity>query().lambda().in(PersonManagemetEntity::getId, personIds)); | 
				
			||||||
 | 
					            String personNotice=""; | 
				
			||||||
 | 
					            if (CollectionUtil.isNotEmpty(personManagemetEntities)) { | 
				
			||||||
 | 
					                personNotice = personManagemetEntities.stream().map(PersonManagemetEntity::getName).collect(Collectors.joining(",")); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            if ("1".equals(noticeEntity.getSendType())) { | 
				
			||||||
 | 
					                sendSmsByUserList(userList, date,personNotice); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            sendMessage(list.get(0), noticeEntity.getSafeTime(), noticeEntity.getNoticeUsers(),personNotice); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return new ReturnT<>("SUCCESS"); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void sendSmsByUserList(List<String> userList, Date date,String personNotice) { | 
				
			||||||
 | 
					        //区分用户
 | 
				
			||||||
 | 
					        for (String s : userList) { | 
				
			||||||
 | 
					            User user = UserCache.getUser(Long.valueOf(s)); | 
				
			||||||
 | 
					            String phone = ""; | 
				
			||||||
 | 
					            if (ObjectUtil.isNotEmpty(user)) { | 
				
			||||||
 | 
					                phone = user.getPhone(); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            //短信推送
 | 
				
			||||||
 | 
					            String code = "certificatetNotice"; | 
				
			||||||
 | 
					            SmsConfigEntity smsConfigEntity = messageConfigClient.getSmsConfigByBusinessKey(code); | 
				
			||||||
 | 
					            Map<String, String> contentParams = new HashMap<>(2); | 
				
			||||||
 | 
					            contentParams.put("one", personNotice); | 
				
			||||||
 | 
					            String deadLine = DateUtil.format(date, "yyyy-MM-dd"); | 
				
			||||||
 | 
					            contentParams.put("two", deadLine); | 
				
			||||||
 | 
					            smsConfigEntity.setTemplateParam(JSONObject.toJSONString(contentParams)); | 
				
			||||||
 | 
					            smsConfigEntity.setPhones(phone); | 
				
			||||||
 | 
					            messageConfigClient.pushSmsMessageByConfig(smsConfigEntity); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void sendMessage(CertificatetEntity certificatetEntity, Integer date, String users,String personNotice) { | 
				
			||||||
 | 
					//        //注意:通知人是创建人所在机构
 | 
				
			||||||
 | 
					        BusinessMessageDTO message = new BusinessMessageDTO(); | 
				
			||||||
 | 
					        message.setBusinessClassify("system"); | 
				
			||||||
 | 
					        message.setBusinessKey(MessageConstants.BusinessClassifyEnum.CERTIFICATETNOTICE.getKey()); | 
				
			||||||
 | 
					        message.setSubject(MessageConstants.BusinessClassifyEnum.CERTIFICATETNOTICE.getDescription()); | 
				
			||||||
 | 
					        message.setTaskId(System.currentTimeMillis()); | 
				
			||||||
 | 
					        message.setTenantId("200000"); | 
				
			||||||
 | 
					        String countent = | 
				
			||||||
 | 
					                 personNotice + "的证书即将到期,请提交新的证书资料"; | 
				
			||||||
 | 
					        message.setContent(countent); | 
				
			||||||
 | 
					        message.setDeptId(certificatetEntity.getCreateDept()); | 
				
			||||||
 | 
					        R<String> deptName = sysClient.getDeptName(certificatetEntity.getCreateDept()); | 
				
			||||||
 | 
					        if (deptName.isSuccess()) { | 
				
			||||||
 | 
					            message.setDeptName(deptName.getData()); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        message.setUserIds(users); | 
				
			||||||
 | 
					        User admin = userClient.userByAccount("200000", "admin").getData(); | 
				
			||||||
 | 
					        message.setCreateUser(admin.getId()); | 
				
			||||||
 | 
					        messageClient.sendAppAndWsMsgByUsers(message); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.service.basic; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.IService; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  服务类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface IImsCertificatetNoticeService extends IService<CertificatetNoticeEntity> { | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.service.basic; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.IService; | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 *  服务类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Chill | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface IImsCertificatetService extends IService<CertificatetEntity> { | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,21 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.service.basic.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetNoticeEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.scheduled.mapper.basic.CertificatetNoticeMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.scheduled.service.basic.IImsCertificatetNoticeService; | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springblade.core.mp.base.BaseServiceImpl; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 证书实现类 | 
				
			||||||
 | 
					 * @author ty | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					@RequiredArgsConstructor | 
				
			||||||
 | 
					public class CertificatetNoticeServiceImpl extends BaseServiceImpl<CertificatetNoticeMapper, CertificatetNoticeEntity> implements IImsCertificatetNoticeService { | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,21 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.scheduled.service.basic.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.basic.entity.CertificatetEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.scheduled.mapper.basic.CertificatetMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.scheduled.service.basic.IImsCertificatetService; | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					import org.springblade.core.mp.base.BaseServiceImpl; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 证书实现类 | 
				
			||||||
 | 
					 * @author ty | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					@RequiredArgsConstructor | 
				
			||||||
 | 
					public class CertificatetServiceImpl extends BaseServiceImpl<CertificatetMapper, CertificatetEntity> implements IImsCertificatetService { | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,56 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.controller; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.constants.SafeProductConstant; | 
				
			||||||
 | 
					import io.swagger.annotations.Api; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiOperation; | 
				
			||||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||||
 | 
					import org.apache.commons.lang3.StringUtils; | 
				
			||||||
 | 
					import org.springblade.core.boot.ctrl.BladeController; | 
				
			||||||
 | 
					import org.springblade.core.secure.BladeUser; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springblade.system.feign.ISysClient; | 
				
			||||||
 | 
					import org.springblade.system.user.entity.User; | 
				
			||||||
 | 
					import org.springblade.system.user.feign.IUserClient; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.GetMapping; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestMapping; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestParam; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RestController; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 公用业务接口类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-28 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@RestController | 
				
			||||||
 | 
					@AllArgsConstructor | 
				
			||||||
 | 
					@RequestMapping("/base") | 
				
			||||||
 | 
					@Api(value = "公用业务", tags = "公用业务接口") | 
				
			||||||
 | 
					public class BaseController extends BladeController { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final ISysClient sysClient; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final IUserClient userClient; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/getDeptName") | 
				
			||||||
 | 
					    @ApiOperation(value = "获取所属机构名") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 1) | 
				
			||||||
 | 
					    public R<String> getDeptName() { | 
				
			||||||
 | 
					        BladeUser bladeUser = getUser(); | 
				
			||||||
 | 
					        String deptId = bladeUser.getDeptId(); | 
				
			||||||
 | 
					        if (StringUtils.isNotBlank(deptId)) { | 
				
			||||||
 | 
					            return sysClient.getDeptName(Long.valueOf(deptId)); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return R.data(null, "所属机构为空"); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/getUserList") | 
				
			||||||
 | 
					    @ApiOperation(value = "获取用户列表") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 2) | 
				
			||||||
 | 
					    public R<List<User>> getUserList(@RequestParam String name) { | 
				
			||||||
 | 
					        return userClient.userListByCodeAndNameAndAccount(SafeProductConstant.TENANT_ID, null, name, null); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,133 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.controller; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage; | 
				
			||||||
 | 
					import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; | 
				
			||||||
 | 
					import com.hnac.hzims.common.utils.Condition; | 
				
			||||||
 | 
					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 io.swagger.annotations.Api; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiImplicitParam; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiImplicitParams; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiOperation; | 
				
			||||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||||
 | 
					import org.springblade.core.boot.ctrl.BladeController; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.*; | 
				
			||||||
 | 
					import springfox.documentation.annotations.ApiIgnore; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletResponse; | 
				
			||||||
 | 
					import javax.validation.Valid; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议管理接口类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@RestController | 
				
			||||||
 | 
					@AllArgsConstructor | 
				
			||||||
 | 
					@RequestMapping("/conference") | 
				
			||||||
 | 
					@Api(value = "会议管理", tags = "会议管理接口") | 
				
			||||||
 | 
					public class ConferenceController extends BladeController { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final IConferencePlanService conferencePlanService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final IConferenceRecordService conferenceRecordService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/savePlan") | 
				
			||||||
 | 
					    @ApiOperation(value = "新增会议计划") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 1) | 
				
			||||||
 | 
					    public R savePlan(@Valid @RequestBody ConferencePlanEntity conferencePlan) { | 
				
			||||||
 | 
					        return R.status(conferencePlanService.save(conferencePlan)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/updatePlan") | 
				
			||||||
 | 
					    @ApiOperation(value = "修改会议计划") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 2) | 
				
			||||||
 | 
					    public R updatePlan(@Valid @RequestBody ConferencePlanEntity conferencePlan) { | 
				
			||||||
 | 
					        return R.status(conferencePlanService.updateById(conferencePlan)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/removePlan") | 
				
			||||||
 | 
					    @ApiOperation(value = "删除会议计划") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 3) | 
				
			||||||
 | 
					    public R removePlan(@RequestParam Long id) { | 
				
			||||||
 | 
					        return R.status(conferencePlanService.removePlan(id)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/planDetail") | 
				
			||||||
 | 
					    @ApiOperation(value = "会议计划详情") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 4) | 
				
			||||||
 | 
					    public R<ConferencePlanEntity> planDetail(@RequestParam Long id) { | 
				
			||||||
 | 
					        return R.data(conferencePlanService.getById(id)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/planPage") | 
				
			||||||
 | 
					    @ApiImplicitParams({ | 
				
			||||||
 | 
					            @ApiImplicitParam(name = "unit", value = "单位", dataType = "query", paramType = "string"), | 
				
			||||||
 | 
					            @ApiImplicitParam(name = "scheduledStartTime", value = "计划开始时间", dataType = "query", paramType = "string"), | 
				
			||||||
 | 
					            @ApiImplicitParam(name = "scheduledEndTime", value = "计划结束时间", dataType = "query", paramType = "string") | 
				
			||||||
 | 
					    }) | 
				
			||||||
 | 
					    @ApiOperation(value = "会议计划分页") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 5) | 
				
			||||||
 | 
					    public R<IPage<ConferencePlanEntity>> planPage(@ApiIgnore @RequestParam Map<String, Object> param, Query query) { | 
				
			||||||
 | 
					        IPage<ConferencePlanEntity> page = conferencePlanService.planPage(param, query); | 
				
			||||||
 | 
					        return R.data(page); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/saveRecord") | 
				
			||||||
 | 
					    @ApiOperation(value = "新增会议记录") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 6) | 
				
			||||||
 | 
					    public R saveRecord(@Valid @RequestBody ConferenceRecordEntity conferenceRecord) { | 
				
			||||||
 | 
					        return R.status(conferenceRecordService.saveRecord(conferenceRecord)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/updateRecord") | 
				
			||||||
 | 
					    @ApiOperation(value = "修改会议记录") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 7) | 
				
			||||||
 | 
					    public R updateRecord(@Valid @RequestBody ConferenceRecordEntity conferenceRecord) { | 
				
			||||||
 | 
					        return R.status(conferenceRecordService.updateById(conferenceRecord)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/removeRecord") | 
				
			||||||
 | 
					    @ApiOperation(value = "删除会议记录") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 8) | 
				
			||||||
 | 
					    public R removeRecord(@RequestParam Long id) { | 
				
			||||||
 | 
					        return R.status(conferenceRecordService.removeById(id)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/recordDetail") | 
				
			||||||
 | 
					    @ApiOperation(value = "会议记录详情") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 9) | 
				
			||||||
 | 
					    public R<ConferenceRecordEntity> recordDetail(@RequestParam Long id) { | 
				
			||||||
 | 
					        return R.data(conferenceRecordService.getById(id)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/recordPage") | 
				
			||||||
 | 
					    @ApiImplicitParams({ | 
				
			||||||
 | 
					            @ApiImplicitParam(name = "conferencePlanId", value = "会议计划id", dataType = "query", paramType = "string") | 
				
			||||||
 | 
					    }) | 
				
			||||||
 | 
					    @ApiOperation(value = "会议记录分页") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 10) | 
				
			||||||
 | 
					    public R<IPage<ConferenceRecordEntity>> recordPage(@ApiIgnore @RequestParam Map<String, Object> param, Query query) { | 
				
			||||||
 | 
					        IPage<ConferenceRecordEntity> page = conferenceRecordService.page(Condition.getPage(query), | 
				
			||||||
 | 
					                Condition.getQueryWrapper(param, ConferenceRecordEntity.class)); | 
				
			||||||
 | 
					        return R.data(page); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @GetMapping("/exportConferenceData") | 
				
			||||||
 | 
					    @ApiImplicitParams({ | 
				
			||||||
 | 
					            @ApiImplicitParam(name = "unit", value = "单位", dataType = "query", paramType = "string"), | 
				
			||||||
 | 
					            @ApiImplicitParam(name = "scheduledStartTime", value = "计划开始时间", dataType = "query", paramType = "string"), | 
				
			||||||
 | 
					            @ApiImplicitParam(name = "scheduledEndTime", value = "计划结束时间", dataType = "query", paramType = "string") | 
				
			||||||
 | 
					    }) | 
				
			||||||
 | 
					    @ApiOperation(value = "会议数据导出") | 
				
			||||||
 | 
					    @ApiOperationSupport(order = 11) | 
				
			||||||
 | 
					    public void exportConferenceData(@ApiIgnore @RequestParam Map<String, Object> param, HttpServletResponse response) { | 
				
			||||||
 | 
					        conferencePlanService.exportConferenceData(param, response); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,43 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.jobs; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.TrainPlanEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.enums.TrainStatusEnum; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.service.ITrainPlanService; | 
				
			||||||
 | 
					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 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Component | 
				
			||||||
 | 
					public class TrainJob { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    ITrainPlanService trainPlanService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @XxlJob("autoChangeTrainPlanStatus") | 
				
			||||||
 | 
					    public ReturnT<String> autoChangeTrainPlanStatus(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<TrainPlanEntity> list = trainPlanService.getWaitingTrainPlanInTimeRange(yesterday, today); | 
				
			||||||
 | 
					        list.forEach(x -> { | 
				
			||||||
 | 
					            x.setTrainStatus(TrainStatusEnum.UNFINISHED.getValue()); | 
				
			||||||
 | 
					        }); | 
				
			||||||
 | 
					        // 将状态置为未完成
 | 
				
			||||||
 | 
					        boolean flag = trainPlanService.updateBatchById(list); | 
				
			||||||
 | 
					        return flag ? ReturnT.SUCCESS : ReturnT.FAIL; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,27 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.mapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.dto.ConferenceExportDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.ConferencePlanEntity; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Mapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议计划Mapper类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Mapper | 
				
			||||||
 | 
					public interface ConferencePlanMapper extends BaseMapper<ConferencePlanEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 根据单位和计划时间查询会议记录 | 
				
			||||||
 | 
					     * @param unit 单位 | 
				
			||||||
 | 
					     * @param startTime 计划开始时间 | 
				
			||||||
 | 
					     * @param endTime 计划结束时间 | 
				
			||||||
 | 
					     * @return 会议记录列表 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    List<ConferenceExportDTO> getConferenceByUnitAndDate(String unit, String startTime, String endTime); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.safeproduct.mapper.ConferencePlanMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <select id="getConferenceByUnitAndDate" resultType="com.hnac.hzims.safeproduct.dto.ConferenceExportDTO"> | 
				
			||||||
 | 
					        SELECT | 
				
			||||||
 | 
					            t1.unit, t1.scheduled_start_time, t1.scheduled_end_time, t1.theme, t1.location, t1.conference_method, | 
				
			||||||
 | 
					            t1.host, t2.actual_start_time, t2.actual_end_time, t1.conference_status | 
				
			||||||
 | 
					        FROM | 
				
			||||||
 | 
					            hzims_conference_plan t1 | 
				
			||||||
 | 
					            LEFT JOIN hzims_conference_record t2 ON t1.id = t2.conference_plan_id | 
				
			||||||
 | 
					        WHERE | 
				
			||||||
 | 
					            t1.is_deleted = 0 | 
				
			||||||
 | 
					        <if test="unit != 'null' and unit != ''"> | 
				
			||||||
 | 
					            AND t1.unit like concat('%', #{unit}, '%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="startTime != 'null' and startTime != ''"> | 
				
			||||||
 | 
					            AND t1.scheduled_start_time >= #{startTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="endTime != 'null' and endTime != ''"> | 
				
			||||||
 | 
					            AND t1.scheduled_end_time < #{endTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,16 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.mapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.ConferenceRecordEntity; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Mapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议记录Mapper类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Mapper | 
				
			||||||
 | 
					public interface ConferenceRecordMapper extends BaseMapper<ConferenceRecordEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,4 @@ | 
				
			|||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.safeproduct.mapper.ConferenceRecordMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,64 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.mapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.mapper.BaseMapper; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.dto.AnalysisYearDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.dto.RehearsalExportDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Mapper; | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Param; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 演练计划Mapper类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Mapper | 
				
			||||||
 | 
					public interface RehearsalPlanMapper extends BaseMapper<RehearsalPlanEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询当月各单位的演练总数 | 
				
			||||||
 | 
					     * @param page 分页类 | 
				
			||||||
 | 
					     * @param month 月份 | 
				
			||||||
 | 
					     * @return 当月的演练总数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    IPage<RehearsalMonthVO> selectByMonth(IPage<RehearsalMonthVO> page, String month); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询当月各单位已完成的演练数据 | 
				
			||||||
 | 
					     * @param page 分页类 | 
				
			||||||
 | 
					     * @param month 月份 | 
				
			||||||
 | 
					     * @return 当月的已完成数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    IPage<RehearsalMonthVO> selectFinishedDataByMonth(IPage<RehearsalMonthVO> page, String month); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询当年的所有单位 | 
				
			||||||
 | 
					     * @param page 分页类 | 
				
			||||||
 | 
					     * @param year 年份 | 
				
			||||||
 | 
					     * @return 年度单位数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    IPage<RehearsalYearVO> selectUnitByYear(IPage<RehearsalYearVO> page, @Param("year") String year); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询各单位全年已完成的演练数据 | 
				
			||||||
 | 
					     * @param unitList 单元列表 | 
				
			||||||
 | 
					     * @param year 年份 | 
				
			||||||
 | 
					     * @return 单位各月的数据列表 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    List<AnalysisYearDTO> selectFinishedDataByUnit(@Param("unitList") List<String> unitList, @Param("year") String year); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 根据单位和计划时间查询演练数据 | 
				
			||||||
 | 
					     * @param unit 单位 | 
				
			||||||
 | 
					     * @param startTime 计划开始时间 | 
				
			||||||
 | 
					     * @param endTime 计划结束时间 | 
				
			||||||
 | 
					     * @return 演练数据列表 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    List<RehearsalExportDTO> getRehearsalByUnitAndDate(String unit, String startTime, String endTime); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,84 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||||
 | 
					<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			||||||
 | 
					<mapper namespace="com.hnac.hzims.safeproduct.mapper.RehearsalPlanMapper"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <select id="selectByMonth" resultType="com.hnac.hzims.safeproduct.vo.RehearsalMonthVO"> | 
				
			||||||
 | 
					        SELECT | 
				
			||||||
 | 
					            unit, count(1) as scheduled_task_num | 
				
			||||||
 | 
					        FROM | 
				
			||||||
 | 
					            hzims_rehearsal_plan | 
				
			||||||
 | 
					        WHERE | 
				
			||||||
 | 
					            is_deleted = 0 | 
				
			||||||
 | 
					            AND scheduled_end_time like concat('%', #{month}, '%') | 
				
			||||||
 | 
					        GROUP BY | 
				
			||||||
 | 
					            unit | 
				
			||||||
 | 
					        ORDER BY | 
				
			||||||
 | 
					            unit | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <select id="selectFinishedDataByMonth" resultType="com.hnac.hzims.safeproduct.vo.RehearsalMonthVO"> | 
				
			||||||
 | 
					        SELECT | 
				
			||||||
 | 
					            unit, count(1) as finished_task_num | 
				
			||||||
 | 
					        FROM | 
				
			||||||
 | 
					            hzims_rehearsal_plan | 
				
			||||||
 | 
					        WHERE | 
				
			||||||
 | 
					            is_deleted = 0 | 
				
			||||||
 | 
					            AND scheduled_end_time like concat('%', #{month}, '%') | 
				
			||||||
 | 
					            AND rehearsal_status = 'FINISHED' | 
				
			||||||
 | 
					        GROUP BY | 
				
			||||||
 | 
					            unit | 
				
			||||||
 | 
					        ORDER BY | 
				
			||||||
 | 
					            unit | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <select id="selectUnitByYear" resultType="com.hnac.hzims.safeproduct.vo.RehearsalYearVO"> | 
				
			||||||
 | 
					        SELECT | 
				
			||||||
 | 
					            distinct unit | 
				
			||||||
 | 
					        FROM | 
				
			||||||
 | 
					            hzims_rehearsal_plan | 
				
			||||||
 | 
					        WHERE | 
				
			||||||
 | 
					            is_deleted = 0 | 
				
			||||||
 | 
					            AND scheduled_end_time like concat('%', #{year}, '%') | 
				
			||||||
 | 
					        ORDER BY | 
				
			||||||
 | 
					            unit | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <select id="selectFinishedDataByUnit" resultType="com.hnac.hzims.safeproduct.dto.AnalysisYearDTO"> | 
				
			||||||
 | 
					        SELECT | 
				
			||||||
 | 
					            unit, DATE_FORMAT(scheduled_end_time, '%m') as dateTime, count(1) as finished_num | 
				
			||||||
 | 
					        FROM | 
				
			||||||
 | 
					            hzims_rehearsal_plan | 
				
			||||||
 | 
					        WHERE | 
				
			||||||
 | 
					            is_deleted = 0 | 
				
			||||||
 | 
					            AND scheduled_end_time like concat('%', #{year}, '%') | 
				
			||||||
 | 
					            AND rehearsal_status = 'FINISHED' | 
				
			||||||
 | 
					            AND unit in | 
				
			||||||
 | 
					        <foreach collection="unitList" item="unit" open="(" close=")" separator=","> | 
				
			||||||
 | 
					            #{unit} | 
				
			||||||
 | 
					        </foreach> | 
				
			||||||
 | 
					        GROUP BY | 
				
			||||||
 | 
					            unit, DATE_FORMAT(scheduled_end_time, '%m') | 
				
			||||||
 | 
					        ORDER BY | 
				
			||||||
 | 
					            unit | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <select id="getRehearsalByUnitAndDate" resultType="com.hnac.hzims.safeproduct.dto.RehearsalExportDTO"> | 
				
			||||||
 | 
					        SELECT | 
				
			||||||
 | 
					            t1.unit, t1.subject, t1.scheduled_start_time, t1.scheduled_end_time, t1.location, | 
				
			||||||
 | 
					            t2.people_num, t2.actual_start_time, t2.actual_end_time, t1.rehearsal_status | 
				
			||||||
 | 
					        FROM | 
				
			||||||
 | 
					            hzims_rehearsal_plan t1 | 
				
			||||||
 | 
					            LEFT JOIN hzims_rehearsal_record t2 ON t1.id = t2.rehearsal_plan_id | 
				
			||||||
 | 
					        WHERE | 
				
			||||||
 | 
					            t1.is_deleted = 0 | 
				
			||||||
 | 
					        <if test="unit != 'null' and unit != ''"> | 
				
			||||||
 | 
					            AND t1.unit like concat('%', #{unit}, '%') | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="startTime != 'null' and startTime != ''"> | 
				
			||||||
 | 
					            AND t1.scheduled_start_time >= #{startTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					        <if test="endTime != 'null' and endTime != ''"> | 
				
			||||||
 | 
					            AND t1.scheduled_end_time < #{endTime} | 
				
			||||||
 | 
					        </if> | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,40 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.IService; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.ConferencePlanEntity; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletResponse; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议计划服务类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface IConferencePlanService extends IService<ConferencePlanEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 删除会议计划 | 
				
			||||||
 | 
					     * @param id 会议计划id | 
				
			||||||
 | 
					     * @return true-成功,false-失败 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    boolean removePlan(Long id); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 会议计划分页 | 
				
			||||||
 | 
					     * @param param 入参 | 
				
			||||||
 | 
					     * @param query 分页类 | 
				
			||||||
 | 
					     * @return 会议计划数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    IPage<ConferencePlanEntity> planPage(Map<String, Object> param, Query query); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 会议数据导出 | 
				
			||||||
 | 
					     * @param param 入参 | 
				
			||||||
 | 
					     * @param response 响应类 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    void exportConferenceData(Map<String, Object> param, HttpServletResponse response); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,27 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.IService; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.ConferenceRecordEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议记录服务类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface IConferenceRecordService extends IService<ConferenceRecordEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 删除关联会议记录 | 
				
			||||||
 | 
					     * @param conferencePlanId 会议计划id | 
				
			||||||
 | 
					     * @return true-成功,false-失败 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    boolean removeReferenceRecord(Long conferencePlanId); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 新增会议记录 | 
				
			||||||
 | 
					     * @param conferenceRecord 会议记录实体类 | 
				
			||||||
 | 
					     * @return true-成功,false-失败 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    boolean saveRecord(ConferenceRecordEntity conferenceRecord); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,67 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.IService; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletResponse; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 演练计划服务类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface IRehearsalPlanService extends IService<RehearsalPlanEntity> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 删除演练计划 | 
				
			||||||
 | 
					     * @param id 演练计划id | 
				
			||||||
 | 
					     * @return true-成功,false-失败 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    boolean removeRehearsalPlan(Long id); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练月度数据 | 
				
			||||||
 | 
					     * @param month 月份 | 
				
			||||||
 | 
					     * @param query 分页类 | 
				
			||||||
 | 
					     * @return 月度统计分页 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    IPage<RehearsalMonthVO> dataByMonth(String month, Query query); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练年度数据 | 
				
			||||||
 | 
					     * @param year 年份 | 
				
			||||||
 | 
					     * @param query 分页类 | 
				
			||||||
 | 
					     * @return 年度统计分页 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    IPage<RehearsalYearVO> dataByYear(String year, Query query); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练计划数据导出 | 
				
			||||||
 | 
					     * @param param 入参 | 
				
			||||||
 | 
					     * @param response 响应类 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    void exportRehearsalPlanData(Map<String, Object> param, HttpServletResponse response); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询时间范围内未开始的演练数据 | 
				
			||||||
 | 
					     * @param startTime 开始时间 | 
				
			||||||
 | 
					     * @param endTime 结束时间 | 
				
			||||||
 | 
					     * @return 演练数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    List<RehearsalPlanEntity> getWaitingRehearsalInTimeRange(String startTime, String endTime); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练计划分页 | 
				
			||||||
 | 
					     * @param param 入参 | 
				
			||||||
 | 
					     * @param query 分页类 | 
				
			||||||
 | 
					     * @return 演练计划数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    IPage<RehearsalPlanEntity> rehearsalPlanPage(Map<String, Object> param, Query query); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,158 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.excel.EasyExcel; | 
				
			||||||
 | 
					import com.alibaba.excel.ExcelWriter; | 
				
			||||||
 | 
					import com.alibaba.excel.converters.longconverter.LongStringConverter; | 
				
			||||||
 | 
					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.service.impl.ServiceImpl; | 
				
			||||||
 | 
					import com.hnac.hzims.common.utils.Condition; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.dto.ConferenceExportDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.ConferencePlanEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.enums.ConferenceMethodEnum; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.enums.ConferenceStatusEnum; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.mapper.ConferencePlanMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.service.IConferencePlanService; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.service.IConferenceRecordService; | 
				
			||||||
 | 
					import org.springblade.core.log.exception.ServiceException; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					import org.springframework.transaction.annotation.Transactional; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.servlet.ServletOutputStream; | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletResponse; | 
				
			||||||
 | 
					import java.io.IOException; | 
				
			||||||
 | 
					import java.net.URLEncoder; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议计划服务实现类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					public class ConferencePlanServiceImpl extends ServiceImpl<ConferencePlanMapper, ConferencePlanEntity> implements IConferencePlanService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    IConferenceRecordService conferenceRecordService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 删除会议计划 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Transactional(rollbackFor = Exception.class) | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public boolean removePlan(Long id) { | 
				
			||||||
 | 
					        boolean remove = this.removeById(id); | 
				
			||||||
 | 
					        // 若成功删除会议计划,删除关联的会议记录
 | 
				
			||||||
 | 
					        if (remove) { | 
				
			||||||
 | 
					            return conferenceRecordService.removeReferenceRecord(id); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 会议计划分页 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public IPage<ConferencePlanEntity> planPage(Map<String, Object> param, Query query) { | 
				
			||||||
 | 
					        QueryWrapper<ConferencePlanEntity> queryWrapper = new QueryWrapper<>(); | 
				
			||||||
 | 
					        String unit = String.valueOf(param.get("unit")); | 
				
			||||||
 | 
					        String startTime = String.valueOf(param.get("startTime")); | 
				
			||||||
 | 
					        String endTime = String.valueOf((param.get("endTime"))); | 
				
			||||||
 | 
					        if (!unit.equals("null") && !unit.equals("")) { | 
				
			||||||
 | 
					            queryWrapper.lambda().like(ConferencePlanEntity::getUnit, unit); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if (!startTime.equals("null") && !startTime.equals("")) { | 
				
			||||||
 | 
					            queryWrapper.lambda().ge(ConferencePlanEntity::getScheduledStartTime, startTime); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if (!endTime.equals("null") && !endTime.equals("")) { | 
				
			||||||
 | 
					            queryWrapper.lambda().le(ConferencePlanEntity::getScheduledEndTime, endTime); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return this.page(Condition.getPage(query), queryWrapper); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 会议数据导出 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public void exportConferenceData(Map<String, Object> param, HttpServletResponse response) { | 
				
			||||||
 | 
					        ServletOutputStream outputStream = null; | 
				
			||||||
 | 
					        try { | 
				
			||||||
 | 
					            outputStream = response.getOutputStream(); | 
				
			||||||
 | 
					            String unit = String.valueOf(param.get("unit")); | 
				
			||||||
 | 
					            String startTime = String.valueOf(param.get("scheduledStartTime")); | 
				
			||||||
 | 
					            String endTime = String.valueOf(param.get("scheduledEndTime")); | 
				
			||||||
 | 
					            List<ConferenceExportDTO> conferenceList = getConferenceByUnitAndDate(unit, startTime, endTime); | 
				
			||||||
 | 
					            // 处理会议数据信息
 | 
				
			||||||
 | 
					            conferenceList.forEach(conference -> { | 
				
			||||||
 | 
					                // 会议方式
 | 
				
			||||||
 | 
					                String method; | 
				
			||||||
 | 
					                if (conference.getConferenceMethod().equals(ConferenceMethodEnum.ONLINE.getValue())) { | 
				
			||||||
 | 
					                    method = ConferenceMethodEnum.ONLINE.getDesc(); | 
				
			||||||
 | 
					                } else if (conference.getConferenceMethod().equals(ConferenceMethodEnum.OFFLINE.getValue())) { | 
				
			||||||
 | 
					                    method = ConferenceMethodEnum.OFFLINE.getDesc(); | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    method = ConferenceMethodEnum.MIXED.getDesc(); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					                conference.setConferenceMethod(method); | 
				
			||||||
 | 
					                // 会议状态
 | 
				
			||||||
 | 
					                String status; | 
				
			||||||
 | 
					                if (conference.getConferenceStatus().equals(ConferenceStatusEnum.WAITING.getValue())) { | 
				
			||||||
 | 
					                    status = ConferenceStatusEnum.WAITING.getDesc(); | 
				
			||||||
 | 
					                } else if (conference.getConferenceStatus().equals(ConferenceStatusEnum.UNFINISHED.getValue())) { | 
				
			||||||
 | 
					                    status = ConferenceStatusEnum.UNFINISHED.getDesc(); | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    status = ConferenceStatusEnum.FINISHED.getDesc(); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					                conference.setConferenceStatus(status); | 
				
			||||||
 | 
					            }); | 
				
			||||||
 | 
					            // 设置响应头
 | 
				
			||||||
 | 
					            // 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(ConferenceExportDTO.class) | 
				
			||||||
 | 
					                    .build(); | 
				
			||||||
 | 
					            excelWriter.write(conferenceList, 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()); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 根据单位和计划时间查询会议记录 | 
				
			||||||
 | 
					     * @param unit 单位 | 
				
			||||||
 | 
					     * @param startTime 计划开始时间 | 
				
			||||||
 | 
					     * @param endTime 计划结束时间 | 
				
			||||||
 | 
					     * @return 会议记录列表 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public List<ConferenceExportDTO> getConferenceByUnitAndDate(String unit, String startTime, String endTime) { | 
				
			||||||
 | 
					        return baseMapper.getConferenceByUnitAndDate(unit, startTime, endTime); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,113 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.core.date.DatePattern; | 
				
			||||||
 | 
					import com.alibaba.excel.util.CollectionUtils; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
				
			||||||
 | 
					import com.hnac.hzims.common.logs.utils.StringUtils; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.constants.SafeProductConstant; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.ConferencePlanEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.ConferenceRecordEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.enums.RehearsalStatusEnum; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.mapper.ConferencePlanMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.mapper.ConferenceRecordMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.service.IConferenceRecordService; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.annotation.Resource; | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.stream.Collectors; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 会议记录服务实现类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					public class ConferenceRecordServiceImpl extends ServiceImpl<ConferenceRecordMapper, ConferenceRecordEntity> implements IConferenceRecordService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Resource | 
				
			||||||
 | 
					    ConferencePlanMapper conferencePlanMapper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 删除关联会议记录 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public boolean removeReferenceRecord(Long conferencePlanId) { | 
				
			||||||
 | 
					        // 查询关联会议记录
 | 
				
			||||||
 | 
					        QueryWrapper<ConferenceRecordEntity> queryWrapper = new QueryWrapper<>(); | 
				
			||||||
 | 
					        queryWrapper.lambda().eq(ConferenceRecordEntity::getConferencePlanId, conferencePlanId); | 
				
			||||||
 | 
					        List<ConferenceRecordEntity> rehearsalRecordList = this.list(queryWrapper); | 
				
			||||||
 | 
					        // 若无关联会议记录,直接返回true
 | 
				
			||||||
 | 
					        if (CollectionUtils.isEmpty(rehearsalRecordList)) { | 
				
			||||||
 | 
					            return true; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        // 删除关联会议记录
 | 
				
			||||||
 | 
					        List<Long> ids = rehearsalRecordList.stream().map(ConferenceRecordEntity::getId).collect(Collectors.toList()); | 
				
			||||||
 | 
					        return this.removeByIds(ids); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 新增会议记录 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public boolean saveRecord(ConferenceRecordEntity conferenceRecord) { | 
				
			||||||
 | 
					        // 获取当月时间(yyyymm)
 | 
				
			||||||
 | 
					        String currentMonth = DatePattern.SIMPLE_MONTH_FORMAT.format(new Date()); | 
				
			||||||
 | 
					        // 查询是否存在同月编号
 | 
				
			||||||
 | 
					        String lastCode = getLastCode(currentMonth); | 
				
			||||||
 | 
					        // 若不存在,新增编号
 | 
				
			||||||
 | 
					        String code; | 
				
			||||||
 | 
					        if (StringUtils.isNull(lastCode)) { | 
				
			||||||
 | 
					            code = "HYJL" + currentMonth + "001"; | 
				
			||||||
 | 
					        } else { // 若存在,编号递增
 | 
				
			||||||
 | 
					            String oldNum = lastCode.substring(lastCode.length() - 3); | 
				
			||||||
 | 
					            int value = Integer.parseInt(oldNum) + 1; | 
				
			||||||
 | 
					            // 根据数位拼接编号
 | 
				
			||||||
 | 
					            if (value < 10) { | 
				
			||||||
 | 
					                code = "HYJL" + currentMonth + "00" + value; | 
				
			||||||
 | 
					            } else if (value < 100) { | 
				
			||||||
 | 
					                code = "HYJL" + currentMonth + "0" + value; | 
				
			||||||
 | 
					            } else { | 
				
			||||||
 | 
					                code = "HYJL" + currentMonth + value; | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        conferenceRecord.setCode(code); | 
				
			||||||
 | 
					        boolean save = this.save(conferenceRecord); | 
				
			||||||
 | 
					        // 若会议记录新增成功,修改会议计划状态为已完成
 | 
				
			||||||
 | 
					        if (save) { | 
				
			||||||
 | 
					            ConferencePlanEntity conferencePlanEntity = conferencePlanMapper.selectById(conferenceRecord.getConferencePlanId()); | 
				
			||||||
 | 
					            conferencePlanEntity.setConferenceStatus(RehearsalStatusEnum.FINISHED.getValue()); | 
				
			||||||
 | 
					            return conferencePlanMapper.updateById(conferencePlanEntity) == SafeProductConstant.SUCCESS; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询是否存在同月编号 | 
				
			||||||
 | 
					     * @param currentMonth 当月 | 
				
			||||||
 | 
					     * @return 存在则返回上一编号,否则返回null | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    private String getLastCode(String currentMonth) { | 
				
			||||||
 | 
					        String month = currentMonth.substring(currentMonth.length() - 2); | 
				
			||||||
 | 
					        List<ConferenceRecordEntity> list = getConferenceByMonth(month); | 
				
			||||||
 | 
					        if (CollectionUtils.isEmpty(list)) { | 
				
			||||||
 | 
					            return null; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return list.get(0).getCode(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询当月会议记录 | 
				
			||||||
 | 
					     * @param month 当月 | 
				
			||||||
 | 
					     * @return 当月会议数据表 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public List<ConferenceRecordEntity> getConferenceByMonth(String month) { | 
				
			||||||
 | 
					        QueryWrapper<ConferenceRecordEntity> queryWrapper = new QueryWrapper<>(); | 
				
			||||||
 | 
					        queryWrapper.lambda().like(ConferenceRecordEntity::getCreateTime, month) | 
				
			||||||
 | 
					                .orderByDesc(ConferenceRecordEntity::getCode); | 
				
			||||||
 | 
					        return this.list(queryWrapper); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,259 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.safeproduct.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.alibaba.excel.EasyExcel; | 
				
			||||||
 | 
					import com.alibaba.excel.ExcelWriter; | 
				
			||||||
 | 
					import com.alibaba.excel.converters.longconverter.LongStringConverter; | 
				
			||||||
 | 
					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; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
				
			||||||
 | 
					import com.hnac.hzims.common.utils.Condition; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.dto.AnalysisYearDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.dto.RehearsalExportDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.enums.RehearsalStatusEnum; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.mapper.RehearsalPlanMapper; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.service.IRehearsalPlanService; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.service.IRehearsalRecordService; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; | 
				
			||||||
 | 
					import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; | 
				
			||||||
 | 
					import org.springblade.core.log.exception.ServiceException; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					import org.springframework.transaction.annotation.Transactional; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.servlet.ServletOutputStream; | 
				
			||||||
 | 
					import javax.servlet.http.HttpServletResponse; | 
				
			||||||
 | 
					import java.io.IOException; | 
				
			||||||
 | 
					import java.math.BigDecimal; | 
				
			||||||
 | 
					import java.math.RoundingMode; | 
				
			||||||
 | 
					import java.net.URLEncoder; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					import java.util.Optional; | 
				
			||||||
 | 
					import java.util.stream.Collectors; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 演练计划服务实现类 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author liwen | 
				
			||||||
 | 
					 * @date 2023-12-27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					public class RehearsalPlanServiceImpl extends ServiceImpl<RehearsalPlanMapper, RehearsalPlanEntity> | 
				
			||||||
 | 
					        implements IRehearsalPlanService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired | 
				
			||||||
 | 
					    IRehearsalRecordService rehearsalRecordService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 删除演练计划 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Transactional(rollbackFor = Exception.class) | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public boolean removeRehearsalPlan(Long id) { | 
				
			||||||
 | 
					        boolean remove = this.removeById(id); | 
				
			||||||
 | 
					        // 若演练计划删除成功,删除关联演练记录
 | 
				
			||||||
 | 
					        if (remove) { | 
				
			||||||
 | 
					            return rehearsalRecordService.removeRelativeRehearsalRecord(id); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练月度数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public IPage<RehearsalMonthVO> dataByMonth(String month, Query query) { | 
				
			||||||
 | 
					        // 查询当月各单位的演练总数
 | 
				
			||||||
 | 
					        IPage<RehearsalMonthVO> page = new Page<>(query.getCurrent(), query.getSize()); | 
				
			||||||
 | 
					        IPage<RehearsalMonthVO> unitPage = baseMapper.selectByMonth(page, month); | 
				
			||||||
 | 
					        List<RehearsalMonthVO> unitList = unitPage.getRecords(); | 
				
			||||||
 | 
					        // 查询当月各单位已完成的演练数据
 | 
				
			||||||
 | 
					        IPage<RehearsalMonthVO> page1 = new Page<>(query.getCurrent(), query.getSize()); | 
				
			||||||
 | 
					        IPage<RehearsalMonthVO> finishedPage = baseMapper.selectFinishedDataByMonth(page1, month); | 
				
			||||||
 | 
					        List<RehearsalMonthVO> finishedList = finishedPage.getRecords(); | 
				
			||||||
 | 
					        // 处理统计数据
 | 
				
			||||||
 | 
					        for (RehearsalMonthVO unit : unitList) { | 
				
			||||||
 | 
					            Long taskNum = unit.getScheduledTaskNum(); | 
				
			||||||
 | 
					            Optional<RehearsalMonthVO> finishedRehearsal = finishedList.stream().filter(x -> x.getUnit().equals(unit.getUnit())).findFirst(); | 
				
			||||||
 | 
					            Long finishedTaskNum = finishedRehearsal.isPresent() ? finishedRehearsal.get().getFinishedTaskNum() : 0L; | 
				
			||||||
 | 
					            unit.setFinishedTaskNum(finishedTaskNum); | 
				
			||||||
 | 
					            unit.setUnfinishedTaskNum(taskNum - finishedTaskNum); | 
				
			||||||
 | 
					            BigDecimal taskDecimal = new BigDecimal(taskNum); | 
				
			||||||
 | 
					            BigDecimal finishedDecimal = new BigDecimal(finishedTaskNum); | 
				
			||||||
 | 
					            unit.setTaskCompletionRate(finishedDecimal.divide(taskDecimal, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")) | 
				
			||||||
 | 
					                    .setScale(2, RoundingMode.HALF_UP)); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        unitPage.setRecords(unitList); | 
				
			||||||
 | 
					        return unitPage; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练年度数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public IPage<RehearsalYearVO> dataByYear(String year, Query query) { | 
				
			||||||
 | 
					        IPage<RehearsalYearVO> page = new Page<>(query.getCurrent(), query.getSize()); | 
				
			||||||
 | 
					        // 查询当年的所有单位
 | 
				
			||||||
 | 
					        IPage<RehearsalYearVO> unitPage = baseMapper.selectUnitByYear(page, year); | 
				
			||||||
 | 
					        List<RehearsalYearVO> records = unitPage.getRecords(); | 
				
			||||||
 | 
					        // 若无数据,返回空页面
 | 
				
			||||||
 | 
					        if (org.springframework.util.CollectionUtils.isEmpty(records)) { | 
				
			||||||
 | 
					            return unitPage; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        List<String> unitList = records.stream().map(RehearsalYearVO::getUnit).collect(Collectors.toList()); | 
				
			||||||
 | 
					        // 查询各单位全年已完成的演练数据
 | 
				
			||||||
 | 
					        List<AnalysisYearDTO> unitMonthDataList = baseMapper.selectFinishedDataByUnit(unitList, year); | 
				
			||||||
 | 
					        // 将各单位每个月的演练数据写入统计列表
 | 
				
			||||||
 | 
					        unitMonthDataList.forEach(data -> { | 
				
			||||||
 | 
					            RehearsalYearVO rehearsalYearVO = records.stream().filter(x -> x.getUnit().equals(data.getUnit())) | 
				
			||||||
 | 
					                    .collect(Collectors.toList()).get(0); | 
				
			||||||
 | 
					            // 根据月份匹配写入对应字段
 | 
				
			||||||
 | 
					            switch (data.getDateTime()) { | 
				
			||||||
 | 
					                case "01": | 
				
			||||||
 | 
					                    rehearsalYearVO.setJanuaryNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "02": | 
				
			||||||
 | 
					                    rehearsalYearVO.setFebruaryNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "03": | 
				
			||||||
 | 
					                    rehearsalYearVO.setMarchNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "04": | 
				
			||||||
 | 
					                    rehearsalYearVO.setAprilNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "05": | 
				
			||||||
 | 
					                    rehearsalYearVO.setMayNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "06": | 
				
			||||||
 | 
					                    rehearsalYearVO.setJuneNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "07": | 
				
			||||||
 | 
					                    rehearsalYearVO.setJulyNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "08": | 
				
			||||||
 | 
					                    rehearsalYearVO.setAugustNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "09": | 
				
			||||||
 | 
					                    rehearsalYearVO.setSeptemberNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "10": | 
				
			||||||
 | 
					                    rehearsalYearVO.setOctoberNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "11": | 
				
			||||||
 | 
					                    rehearsalYearVO.setNovemberNum(data.getFinishedNum()); | 
				
			||||||
 | 
					                    break; | 
				
			||||||
 | 
					                case "12": | 
				
			||||||
 | 
					                    rehearsalYearVO.setDecemberNum(data.getFinishedNum()); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        }); | 
				
			||||||
 | 
					        unitPage.setRecords(records); | 
				
			||||||
 | 
					        return unitPage; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练计划数据导出 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public void exportRehearsalPlanData(Map<String, Object> param, HttpServletResponse response) { | 
				
			||||||
 | 
					        ServletOutputStream outputStream = null; | 
				
			||||||
 | 
					        try { | 
				
			||||||
 | 
					            outputStream = response.getOutputStream(); | 
				
			||||||
 | 
					            String unit = String.valueOf(param.get("unit")); | 
				
			||||||
 | 
					            String startTime = String.valueOf(param.get("scheduledStartTime")); | 
				
			||||||
 | 
					            String endTime = String.valueOf(param.get("scheduledEndTime")); | 
				
			||||||
 | 
					            List<RehearsalExportDTO> rehearsalList = getRehearsalByUnitAndDate(unit, startTime, endTime); | 
				
			||||||
 | 
					            // 处理演练状态信息
 | 
				
			||||||
 | 
					            rehearsalList.forEach(record -> { | 
				
			||||||
 | 
					               String status; | 
				
			||||||
 | 
					               if (record.getRehearsalStatus().equals(RehearsalStatusEnum.WAITING.getValue())) { | 
				
			||||||
 | 
					                   status = RehearsalStatusEnum.WAITING.getDesc(); | 
				
			||||||
 | 
					               } else if (record.getRehearsalStatus().equals(RehearsalStatusEnum.UNFINISHED.getValue())) { | 
				
			||||||
 | 
					                   status = RehearsalStatusEnum.UNFINISHED.getDesc(); | 
				
			||||||
 | 
					               } else { | 
				
			||||||
 | 
					                   status = RehearsalStatusEnum.FINISHED.getDesc(); | 
				
			||||||
 | 
					               } | 
				
			||||||
 | 
					               record.setRehearsalStatus(status); | 
				
			||||||
 | 
					            }); | 
				
			||||||
 | 
					            // 设置响应头
 | 
				
			||||||
 | 
					            // 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(RehearsalExportDTO.class) | 
				
			||||||
 | 
					                    .build(); | 
				
			||||||
 | 
					            excelWriter.write(rehearsalList, 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()); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 根据单位和计划时间查询演练记录 | 
				
			||||||
 | 
					     * @param unit 单位 | 
				
			||||||
 | 
					     * @param startTime 计划开始时间 | 
				
			||||||
 | 
					     * @param endTime 计划结束时间 | 
				
			||||||
 | 
					     * @return 演练记录列表 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    public List<RehearsalExportDTO> getRehearsalByUnitAndDate(String unit, String startTime, String endTime) { | 
				
			||||||
 | 
					        return baseMapper.getRehearsalByUnitAndDate(unit, startTime, endTime); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 查询时间范围内未开始的演练数据 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public List<RehearsalPlanEntity> getWaitingRehearsalInTimeRange(String startTime, String endTime) { | 
				
			||||||
 | 
					        QueryWrapper<RehearsalPlanEntity> queryWrapper = new QueryWrapper<>(); | 
				
			||||||
 | 
					        queryWrapper.lambda().eq(RehearsalPlanEntity::getRehearsalStatus, RehearsalStatusEnum.WAITING.getValue()) | 
				
			||||||
 | 
					                .ge(RehearsalPlanEntity::getScheduledEndTime, startTime) | 
				
			||||||
 | 
					                .lt(RehearsalPlanEntity::getScheduledEndTime, endTime); | 
				
			||||||
 | 
					        return this.list(queryWrapper); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * 演练计划分页 | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public IPage<RehearsalPlanEntity> rehearsalPlanPage(Map<String, Object> param, Query query) { | 
				
			||||||
 | 
					        QueryWrapper<RehearsalPlanEntity> queryWrapper = new QueryWrapper<>(); | 
				
			||||||
 | 
					        String unit = String.valueOf(param.get("unit")); | 
				
			||||||
 | 
					        String startTime = String.valueOf(param.get("scheduledStartTime")); | 
				
			||||||
 | 
					        String endTime = String.valueOf((param.get("scheduledEndTime"))); | 
				
			||||||
 | 
					        if (!unit.equals("null") && !unit.equals("")) { | 
				
			||||||
 | 
					            queryWrapper.lambda().like(RehearsalPlanEntity::getUnit, unit); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if (!startTime.equals("null") && !startTime.equals("")) { | 
				
			||||||
 | 
					            queryWrapper.lambda().ge(RehearsalPlanEntity::getScheduledStartTime, startTime); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if (!endTime.equals("null") && !endTime.equals("")) { | 
				
			||||||
 | 
					            queryWrapper.lambda().le(RehearsalPlanEntity::getScheduledEndTime, endTime); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return this.page(Condition.getPage(query), queryWrapper); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue