Browse Source

add: 新增演练记录功能

zhongwei
liwen 12 months ago
parent
commit
911bdf17e0
  1. 23
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/RehearsalYearDTO.java
  2. 93
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/RehearsalRecordEntity.java
  3. 32
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/RehearsalStatusEnum.java
  4. 31
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalMonthVO.java
  5. 53
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalYearVO.java
  6. 93
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalRecordController.java
  7. 54
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java
  8. 65
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml
  9. 40
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java
  10. 178
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java
  11. 28
      hzims-service/safeproduct/src/main/resources/db/1.0.1.sql

23
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/RehearsalYearDTO.java

@ -0,0 +1,23 @@
package com.hnac.hzims.safeproduct.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liwen
* @date 2023-12-14
*/
@Data
@ApiModel(value = "演练年度统计DTO类")
public class RehearsalYearDTO {
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("日期")
private String dateTime;
@ApiModelProperty("完成数")
private Long finishedNum;
}

93
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/RehearsalRecordEntity.java

@ -0,0 +1,93 @@
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.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* @author liwen
* @date 2023-12-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hzims_rehearsal_record")
@ApiModel(value = "演练记录实体类")
public class RehearsalRecordEntity extends BaseEntity {
@Size(max = 50, message = "编码字段长度不能超过50")
@ApiModelProperty("编码")
private String code;
@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;
@Min(value = 0, message = "参演人数不能小于0")
@Max(value = 1000000000, message = "参演人数超出限制范围")
@ApiModelProperty("参演人数")
private Integer peopleNum;
@NotNull
@Size(max = 10, message = "总指挥字段长度不能超过10")
@ApiModelProperty("总指挥")
private String commander;
@ApiModelProperty("演练实际开始时间")
private Date actualStartTime;
@ApiModelProperty("演练实际结束时间")
private Date actualEndTime;
@Size(max = 250, message = "演练记录字段长度不能超过250")
@ApiModelProperty("演练记录")
private String record;
@Size(max = 250, message = "演练评价字段长度不能超过250")
@ApiModelProperty("演练评价")
private String comment;
@Size(max = 20, message = "演练方式字段长度不能超过20")
@ApiModelProperty("演练方式")
private String rehearsalMethod;
@NotNull
@Size(max = 20, message = "演练状态字段长度不能超过20")
@ApiModelProperty("演练状态")
private String rehearsalStatus;
@Size(max = 1000, message = "演练图片字段长度不能超过1000")
@ApiModelProperty("演练图片")
private String imgPath;
@Size(max = 1000, message = "演练附件字段长度不能超过1000")
@ApiModelProperty("演练附件")
private String filePath;
}

32
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/RehearsalStatusEnum.java

@ -0,0 +1,32 @@
package com.hnac.hzims.safeproduct.enums;
/**
* 演练状态枚举类
*
* @author liwen
* @date 2023-12-14
*/
public enum RehearsalStatusEnum {
WAITING("WAITING", "未开始"),
UNFINISHED("UNFINISHED", "未完成"),
FINISHED("FINISHED", "已完成");
private final String value;
private final String desc;
RehearsalStatusEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return value;
}
public String getDesc() {
return desc;
}
}

31
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalMonthVO.java

@ -0,0 +1,31 @@
package com.hnac.hzims.safeproduct.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author liwen
* @date 2023-12-14
*/
@Data
@ApiModel(value = "演练月度统计VO类")
public class RehearsalMonthVO {
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("计划任务总数")
private Long scheduledTaskNum;
@ApiModelProperty("已完成任务/次")
private Long finishedTaskNum;
@ApiModelProperty("未完成任务/次")
private Long unfinishedTaskNum;
@ApiModelProperty("任务完成率")
private BigDecimal taskCompletionRate;
}

53
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalYearVO.java

@ -0,0 +1,53 @@
package com.hnac.hzims.safeproduct.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liwen
* @date 2023-12-14
*/
@Data
@ApiModel(value = "演练年度统计VO类")
public class RehearsalYearVO {
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("1月完成数")
private Long januaryNum;
@ApiModelProperty("2月完成数")
private Long februaryNum;
@ApiModelProperty("3月完成数")
private Long marchNum;
@ApiModelProperty("4月完成数")
private Long aprilNum;
@ApiModelProperty("5月完成数")
private Long mayNum;
@ApiModelProperty("6月完成数")
private Long juneNum;
@ApiModelProperty("7月完成数")
private Long julyNum;
@ApiModelProperty("8月完成数")
private Long augustNum;
@ApiModelProperty("9月完成数")
private Long septemberNum;
@ApiModelProperty("10月完成数")
private Long octoberNum;
@ApiModelProperty("11月完成数")
private Long novemberNum;
@ApiModelProperty("12月完成数")
private Long decemberNum;
}

93
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalRecordController.java

@ -0,0 +1,93 @@
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.RehearsalRecordEntity;
import com.hnac.hzims.safeproduct.service.IRehearsalRecordService;
import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO;
import com.hnac.hzims.safeproduct.vo.RehearsalYearVO;
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.validation.Valid;
import java.util.Map;
/**
* 演练记录接口类
*
* @author liwen
* @date 2023-12-13
*/
@RestController
@AllArgsConstructor
@RequestMapping("/rehearsal")
@Api(value = "演练记录", tags = "演练记录接口")
public class RehearsalRecordController extends BladeController {
private final IRehearsalRecordService rehearsalRecordService;
@PostMapping("/save")
@ApiOperation(value = "新增")
@ApiOperationSupport(order = 1)
public R save(@Valid @RequestBody RehearsalRecordEntity rehearsalRecord) {
return R.status(rehearsalRecordService.saveRehearsal(rehearsalRecord));
}
@PostMapping("/update")
@ApiOperation(value = "修改")
@ApiOperationSupport(order = 2)
public R update(@Valid @RequestBody RehearsalRecordEntity rehearsalRecord) {
return R.status(rehearsalRecordService.updateById(rehearsalRecord));
}
@PostMapping("/remove")
@ApiOperation(value = "删除")
@ApiOperationSupport(order = 3)
public R remove(@RequestParam Long id) {
return R.status(rehearsalRecordService.removeById(id));
}
@GetMapping("/detail")
@ApiOperation(value = "详情")
@ApiOperationSupport(order = 4)
public R<RehearsalRecordEntity> detail(@RequestParam Long id) {
return R.data(rehearsalRecordService.getById(id));
}
@GetMapping("/page")
@ApiImplicitParams({
@ApiImplicitParam()
})
@ApiOperation(value = "分页")
@ApiOperationSupport(order = 5)
public R<IPage<RehearsalRecordEntity>> page(@ApiIgnore @RequestParam Map<String, Object> param, Query query) {
IPage<RehearsalRecordEntity> page = rehearsalRecordService.page(Condition.getPage(query),
Condition.getQueryWrapper(param, RehearsalRecordEntity.class));
return R.data(page);
}
@GetMapping("/dataByMonth")
@ApiOperation(value = "月度统计表")
@ApiOperationSupport(order = 6)
public R<IPage<RehearsalMonthVO>> dataByMonth(@RequestParam String month, Query query) {
IPage<RehearsalMonthVO> page = rehearsalRecordService.dataByMonth(month, query);
return R.data(page);
}
@GetMapping("/dataByYear")
@ApiOperation(value = "年度统计表")
@ApiOperationSupport(order = 7)
public R<IPage<RehearsalYearVO>> dataByYear(@RequestParam String year, Query query) {
IPage<RehearsalYearVO> page = rehearsalRecordService.dataByYear(year, query);
return R.data(page);
}
}

54
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java

@ -0,0 +1,54 @@
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.RehearsalYearDTO;
import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity;
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-13
*/
@Mapper
public interface RehearsalRecordMapper extends BaseMapper<RehearsalRecordEntity> {
/**
* 查询当月各单位的演练总数
* @param page 分页类
* @param month 月份
* @return 当月的演练总数据
*/
IPage<RehearsalMonthVO> selectByMonth(IPage<RehearsalMonthVO> page, @Param("month") String month);
/**
* 查询当月各单位已完成的演练数据
* @param page 分页类
* @param month 月份
* @return 当月的已完成数据
*/
IPage<RehearsalMonthVO> selectFinishedDataByMonth(IPage<RehearsalMonthVO> page, @Param("month") String month);
/**
* 查询当年的所有单位
* @param page 分页类
* @param year 年份
* @return 年度单位数据
*/
IPage<RehearsalYearVO> selectUnitByYear(IPage<RehearsalYearVO> page, @Param("year") String year);
/**
* 查询各单位全年已完成的演练数据
* @param unitList 单元列表
* @param year 年份
* @return 单位各月的数据列表
*/
List<RehearsalYearDTO> selectFinishedDataByUnit(@Param("unitList") List<String> unitList, @Param("year") String year);
}

65
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml

@ -0,0 +1,65 @@
<?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.RehearsalRecordMapper">
<select id="selectByMonth" resultType="com.hnac.hzims.safeproduct.vo.RehearsalMonthVO">
SELECT
unit, count(1) as scheduled_task_num
FROM
hzims_rehearsal_record
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_record
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_record
WHERE
is_deleted = 0
AND actual_end_time like concat('%', #{year}, '%')
ORDER BY
unit
</select>
<select id="selectFinishedDataByUnit" resultType="com.hnac.hzims.safeproduct.dto.RehearsalYearDTO">
SELECT
unit, DATE_FORMAT(actual_end_time, '%m') as dateTime, count(1) as finished_num
FROM
hzims_rehearsal_record
WHERE
is_deleted = 0
AND actual_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(actual_end_time, '%m')
ORDER BY
unit
</select>
</mapper>

40
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java

@ -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.RehearsalRecordEntity;
import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO;
import com.hnac.hzims.safeproduct.vo.RehearsalYearVO;
import org.springblade.core.mp.support.Query;
/**
* 演练记录服务类
*
* @author liwen
* @date 2023-12-13
*/
public interface IRehearsalRecordService extends IService<RehearsalRecordEntity> {
/**
* 演练月度数据
* @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 rehearsalRecord 演练记录实体类
* @return 新增是否成功
*/
boolean saveRehearsal(RehearsalRecordEntity rehearsalRecord);
}

178
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java

@ -0,0 +1,178 @@
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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.safeproduct.dto.RehearsalYearDTO;
import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity;
import com.hnac.hzims.safeproduct.mapper.RehearsalRecordMapper;
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.mp.support.Query;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* 演练记录服务实现类
*
* @author liwen
* @date 2023-12-13
*/
@Service
public class RehearsalRecordServiceImpl extends ServiceImpl<RehearsalRecordMapper, RehearsalRecordEntity> implements IRehearsalRecordService {
/**
* 演练月度数据
*/
@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> finishedPage = baseMapper.selectFinishedDataByMonth(page, 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, 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();
List<String> unitList = records.stream().map(RehearsalYearVO::getUnit).collect(Collectors.toList());
// 查询各单位全年已完成的演练数据
List<RehearsalYearDTO> 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 boolean saveRehearsal(RehearsalRecordEntity rehearsalRecord) {
// 获取当月时间(yyyymm)
String currentMonth = DatePattern.SIMPLE_MONTH_FORMAT.format(new Date());
// 查询是否存在同月编号
String lastCode = getLastCode(currentMonth);
// 若不存在,新增编号
if (StringUtils.isNull(lastCode)) {
String code = "YLJL" + currentMonth + "001";
rehearsalRecord.setCode(code);
return this.save(rehearsalRecord);
}
// 若存在,编号递增
String oldNum = lastCode.substring(lastCode.length() - 3);
int value = Integer.parseInt(oldNum) + 1;
String code;
// 根据数位拼接编号
if (value < 10) {
code = "YLJL" + currentMonth + "00" + value;
} else if (value < 100) {
code = "YLJL" + currentMonth + "0" + value;
} else {
code = "YLJL" + currentMonth + value;
}
rehearsalRecord.setCode(code);
return this.save(rehearsalRecord);
}
/**
* 查询是否存在同月编号
* @param currentMonth 当月
* @return 存在则返回上一编号否则返回null
*/
private String getLastCode(String currentMonth) {
String month = currentMonth.substring(currentMonth.length() - 2);
List<RehearsalRecordEntity> list = getRehearsalByMonth(month);
if (CollectionUtils.isEmpty(list)) {
return null;
}
return list.get(0).getCode();
}
/**
* 查询当月演练记录
* @param month 当月
* @return 当月演练数据表
*/
public List<RehearsalRecordEntity> getRehearsalByMonth(String month) {
QueryWrapper<RehearsalRecordEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().like(RehearsalRecordEntity::getCreateTime, month)
.orderByDesc(RehearsalRecordEntity::getCode);
return this.list(queryWrapper);
}
}

28
hzims-service/safeproduct/src/main/resources/db/1.0.1.sql

@ -10,3 +10,31 @@ create table document_management
is_deleted tinyint default 0 comment '逻辑删除'
) comment '文档管理';
CREATE TABLE `hzims`.`hzims_rehearsal_record` (
`id` bigint(20) NOT NULL COMMENT '主键id',
`code` varchar(50) NOT NULL COMMENT '编号',
`unit` varchar(50) NOT NULL COMMENT '单位',
`subject` varchar(50) NOT NULL COMMENT '演练科目',
`scheduled_start_time` datetime NOT NULL COMMENT '演练计划开始时间',
`scheduled_end_time` datetime NOT NULL COMMENT '演练计划结束时间',
`location` varchar(255) NOT NULL COMMENT '演练地点',
`people_num` int(10) NOT NULL DEFAULT '0' COMMENT '参演人数',
`commander` varchar(10) NOT NULL COMMENT '总指挥',
`actual_start_time` datetime DEFAULT NULL COMMENT '演练实际开始时间',
`actual_end_time` datetime DEFAULT NULL COMMENT '演练实际结束时间',
`record` varchar(250) DEFAULT '' COMMENT '演练记录',
`comment` varchar(250) DEFAULT '' DEFAULT '' COMMENT '演练评价',
`rehearsal_method` varchar(20) DEFAULT '' COMMENT '演练方式',
`rehearsal_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '演练状态',
`img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '演练图片',
`file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '演练附件',
`create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人',
`create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_user` bigint(20) DEFAULT '-1' COMMENT '更新人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
`status` int(2) NOT NULL DEFAULT '1' COMMENT '状态',
`is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='演练记录表' ROW_FORMAT=Dynamic;
Loading…
Cancel
Save