diff --git a/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanController.java b/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanController.java new file mode 100644 index 0000000..d780403 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanController.java @@ -0,0 +1,146 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.entity.so.PersonnelPlanPage; +import com.gunshi.project.xyt.model.PersonnelPlan; +import com.gunshi.project.xyt.service.FileAssociationsService; +import com.gunshi.project.xyt.service.PersonnelPlanService; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "培训计划表") +@RestController +@RequestMapping(value="/personnelPlan") +public class PersonnelPlanController extends AbstractCommonFileController{ + + + @Autowired + private PersonnelPlanService service; + + @Autowired + private FileAssociationsService fileService; + + @Override + public String getGroupId() { + return "personnelPlan"; + } + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody PersonnelPlan dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .eq(PersonnelPlan::getType, dto.getType()) + .eq(PersonnelPlan::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前培训主题培训班名称重复"); + } + + if (dto.getStm().compareTo(dto.getEtm()) >= 0){ + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody PersonnelPlan dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .ne(PersonnelPlan::getId, dto.getId()) + .eq(PersonnelPlan::getType, dto.getType()) + .eq(PersonnelPlan::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前培训主题培训班名称重复"); + } + + if (dto.getStm().compareTo(dto.getEtm()) >= 0){ + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(result ? dto : null); + } + + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean data = service.removeById(id); + if (data){ + fileService.deleteFile(getGroupId(),id.toString()); + } + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery() + .eq(PersonnelPlan::getStatus, 1) + .list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated PersonnelPlanPage page) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + + Date stm = page.getStm(); + if (Objects.nonNull(stm)){ + query.ge(PersonnelPlan::getStm, stm); + } + + Date etm = page.getEtm(); + if (Objects.nonNull(etm)){ + query.le(PersonnelPlan::getEtm, etm); + } + + String name = page.getName(); + if (StringUtils.isNotBlank(name)){ + query.like(PersonnelPlan::getName, name); + } + + String applicant = page.getApplicant(); + if (StringUtils.isNotBlank(applicant)){ + query.like(PersonnelPlan::getApplicant, applicant); + } + + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords().forEach(item -> + item.setFiles(fileService.getFiles(getGroupId(),item.getId().toString())) + ); + return R.ok(data); + } + +} diff --git a/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanLogController.java b/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanLogController.java new file mode 100644 index 0000000..8486680 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/PersonnelPlanLogController.java @@ -0,0 +1,233 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Maps; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.entity.so.PersonnelPlanLogPage; +import com.gunshi.project.xyt.entity.vo.PersonnelPlanLogStatisticsVo; +import com.gunshi.project.xyt.model.PersonnelPlan; +import com.gunshi.project.xyt.model.PersonnelPlanLog; +import com.gunshi.project.xyt.service.PersonnelPlanLogService; +import com.gunshi.project.xyt.service.PersonnelPlanService; +import com.gunshi.project.xyt.util.DateUtil; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.time.LocalDate; +import java.util.*; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "培训计划表") +@RestController +@RequestMapping(value = "/personnelPlanLog") +public class PersonnelPlanLogController { + + + @Autowired + private PersonnelPlanLogService service; + + + @Autowired + private PersonnelPlanService planService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody PersonnelPlanLog dto) { + + if (dto.getStm().compareTo(dto.getEtm()) >= 0) { + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + + LambdaQueryChainWrapper query = service.lambdaQuery() + .eq(PersonnelPlanLog::getPlanDate, dto. getPlanDate()) + .eq(PersonnelPlanLog::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前培训日期标题名称重复"); + } + + if (planService.lambdaQuery().eq(PersonnelPlan::getId, dto.getPlanId()).count() == 0) { + throw new IllegalArgumentException("培训计划不存在"); + } + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody PersonnelPlanLog dto) { + if (dto.getStm().compareTo(dto.getEtm()) >= 0) { + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + + LambdaQueryChainWrapper query = service.lambdaQuery() + .ne(PersonnelPlanLog::getId, dto.getId()) + .eq(PersonnelPlanLog::getPlanDate, dto. getPlanDate()) + .eq(PersonnelPlanLog::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前培训日期标题名称重复"); + } + if (planService.lambdaQuery().eq(PersonnelPlan::getId, dto.getPlanId()).count() == 0) { + throw new IllegalArgumentException("培训计划不存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery() + .list()); + } + + @Operation(summary = "统计") + @GetMapping("/statistics/{year}") + public R statistics(@PathVariable("year") Integer year) { + if (year < 1970 || year > LocalDate.now().getYear()) { + throw new IllegalArgumentException("年份不合法"); + } + Date stm = DateUtil.convertStringToDate(year + "-01-01 00:00:00"); + Date etm = DateUtil.convertStringToDate(year + "-12-31 23:59:59"); + List planLogs = service.lambdaQuery() + .between(PersonnelPlanLog::getPlanDate, stm, etm) + .list(); + List plans = planService.lambdaQuery() + .between(PersonnelPlan::getStm, stm, etm) + .list(); + PersonnelPlanLogStatisticsVo vo = new PersonnelPlanLogStatisticsVo(); + + // 实际 + Map map1 = Maps.newHashMap(); + + // 计划 + Map map2 = Maps.newHashMap(); + + Calendar calendar = Calendar.getInstance(); + + if (CollectionUtils.isNotEmpty(planLogs)) { + vo.setNumberOfPeriods1(planLogs.size()); + vo.setPersonNum1(planLogs.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()); + for (int i = 1; i <= 12; i++) { + PersonnelPlanLogStatisticsVo.EchartsData echartsData1 = map1.get(i); + PersonnelPlanLogStatisticsVo.EchartsData echartsData2 = map2.get(i); + + if (Objects.isNull(echartsData1)) { + echartsData1 = new PersonnelPlanLogStatisticsVo.EchartsData(); + } + int finalI = i; + List list = planLogs.stream() + .filter(item -> + { + calendar.setTime(item.getPlanDate()); + return calendar.get(Calendar.MONTH) == finalI; + }) + .toList(); + + echartsData1.setMonth(finalI) + .setNum1(list.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()); + map1.put(i, echartsData1); + + echartsData2 + .setMonth(finalI) + .setNum1(list.size()); + map2.put(i, echartsData2); + } + } + + if (CollectionUtils.isNotEmpty(plans)) { + vo.setNumberOfPeriods2(plans.stream().mapToInt(PersonnelPlan::getNum).sum()); + vo.setPersonNum2(plans.stream().mapToInt(PersonnelPlan::getNumPeople).sum()); + for (int i = 1; i <= 12; i++) { + PersonnelPlanLogStatisticsVo.EchartsData echartsData1 = map1.get(i); + if (Objects.isNull(echartsData1)) { + echartsData1 = new PersonnelPlanLogStatisticsVo.EchartsData(); + } + PersonnelPlanLogStatisticsVo.EchartsData echartsData2 = map2.get(i); + if (Objects.isNull(echartsData2)) { + echartsData2 = new PersonnelPlanLogStatisticsVo.EchartsData(); + } + int finalI = i; + List list = plans.stream() + .filter(item -> + { + calendar.setTime(item.getStm()); + return calendar.get(Calendar.MONTH) == finalI; + }).toList(); + + echartsData1.setMonth(finalI) + .setNum2(list.stream().mapToInt(PersonnelPlan::getNumPeople).sum()); + map1.put(i, echartsData1); + + echartsData2 + .setMonth(finalI) + .setNum2(list.size()); + map2.put(i, echartsData2); + } + } + + vo.setList1(map1.values().stream().toList()); + vo.setList2(map2.values().stream().toList()); + + return R.ok(vo); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated PersonnelPlanLogPage page) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + + Date stm = page.getStm(); + if (Objects.nonNull(stm)) { + query.ge(PersonnelPlanLog::getPlanDate, stm); + } + + Date etm = page.getEtm(); + if (Objects.nonNull(etm)) { + query.le(PersonnelPlanLog::getPlanDate, etm); + } + + Integer type = page.getType(); + if (Objects.nonNull(type)) { + query.eq(PersonnelPlanLog::getType, type); + } + + String trainees = page.getTrainees(); + if (StringUtils.isNotBlank(trainees)) { + query.like(PersonnelPlanLog::getName, trainees); + } + + String unit = page.getUnit(); + if (StringUtils.isNotBlank(unit)) { + query.like(PersonnelPlanLog::getApplicant, unit); + } + + return R.ok(service.page(page.getPageSo().toPage(), query)); + } + +} diff --git a/src/main/java/com/gunshi/project/xyt/controller/ResPersonController.java b/src/main/java/com/gunshi/project/xyt/controller/ResPersonController.java new file mode 100644 index 0000000..0fe12a6 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/ResPersonController.java @@ -0,0 +1,106 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.entity.so.ResPersonPage; +import com.gunshi.project.xyt.model.ResPerson; +import com.gunshi.project.xyt.service.ResPersonService; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "责任人表") +@RestController +@RequestMapping(value="/resPerson") +public class ResPersonController { + + + @Autowired + private ResPersonService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResPerson dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .eq(ResPerson::getType, dto.getType()) + .eq(ResPerson::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前责任类型名字重复"); + } + + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResPerson dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .ne(ResPerson::getId, dto.getId()) + .eq(ResPerson::getType, dto.getType()) + .eq(ResPerson::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前责任类型名字重复"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ResPersonPage page) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + Integer type = page.getType(); + if (Objects.nonNull(type)){ + query.eq(ResPerson::getType, type); + } + + String name = page.getName(); + if (StringUtils.isNotBlank(name)){ + query.like(ResPerson::getName, name); + } + + String contactInfo = page.getContactInfo(); + if (StringUtils.isNotBlank(contactInfo)){ + query.like(ResPerson::getContactInfo, contactInfo); + } + + return R.ok(service.page(page.getPageSo().toPage(),query)); + } + +} diff --git a/src/main/java/com/gunshi/project/xyt/controller/SysDepartController.java b/src/main/java/com/gunshi/project/xyt/controller/SysDepartController.java new file mode 100644 index 0000000..e590b74 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/SysDepartController.java @@ -0,0 +1,98 @@ +//package com.gunshi.project.xyt.controller; +// +//import com.baomidou.mybatisplus.core.toolkit.IdWorker; +//import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +//import com.gunshi.core.result.R; +//import com.gunshi.project.xyt.entity.vo.SysDepartTree; +//import com.gunshi.project.xyt.model.SysDepart; +//import com.gunshi.project.xyt.service.SysDepartService; +//import com.gunshi.project.xyt.validate.markers.Insert; +//import com.gunshi.project.xyt.validate.markers.Update; +//import io.swagger.v3.oas.annotations.Operation; +//import io.swagger.v3.oas.annotations.media.Schema; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import org.apache.commons.collections4.CollectionUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +// +//import java.io.Serializable; +//import java.util.List; +//import java.util.Objects; +// +///** +// * Description: +// * Created by XuSan on 2024/9/23. +// * +// * @author XuSan +// * @version 1.0 +// */ +//@Tag(name = "组织机构表") +//@RestController +//@RequestMapping(value="/SysDepart") +//public class SysDepartController { +// +// @Autowired +// private SysDepartService service; +// +// @Operation(summary = "新增") +// @PostMapping("/insert") +// public R insert(@Validated(Insert.class) @RequestBody SysDepart dto) { +// +// LambdaQueryChainWrapper query = service.lambdaQuery() +// .eq(SysDepart::getName, dto.getName()); +// if (Objects.nonNull(dto.getPid())){ +// query.eq(SysDepart::getPid, dto.getPid()); +// } +// if (query.count() > 0){ +// throw new IllegalArgumentException("部门名称重复"); +// } +// +// +// dto.setId(IdWorker.getId()); +// boolean result = service.save(dto); +// return R.ok(result ? dto : null); +// } +// +// @Operation(summary = "修改") +// @PostMapping("/update") +// public R update(@Validated(Update.class) @RequestBody SysDepart dto) { +// +// LambdaQueryChainWrapper query = service.lambdaQuery() +// .ne(SysDepart::getId, dto.getId()) +// .eq(SysDepart::getName, dto.getName()); +// if (Objects.nonNull(dto.getPid())){ +// query.eq(SysDepart::getPid, dto.getPid()); +// } +// if (query.count() > 0){ +// throw new IllegalArgumentException("部门名称重复"); +// } +// +// boolean result = service.updateById(dto); +// return R.ok(result ? dto : null); +// } +// +// @Operation(summary = "删除") +// @GetMapping("/del/{id}") +// public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { +// return R.ok(service.removeById(id)); +// } +// +// @Operation(summary = "列表") +// @PostMapping("/list") +// public R> list() { +// return R.ok(service.lambdaQuery().list()); +// } +// +// @Operation(summary = "树") +// @PostMapping("/tree") +// public R> tree() { +// List list = service.list(); +// if (CollectionUtils.isEmpty(list)){ +// return R.ok(list); +// } +// +// return R.ok(SysDepartTree.buildTree(list)); +// } +// +//} diff --git a/src/main/java/com/gunshi/project/xyt/entity/so/PersonnelPlanLogPage.java b/src/main/java/com/gunshi/project/xyt/entity/so/PersonnelPlanLogPage.java new file mode 100644 index 0000000..a0244f6 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/so/PersonnelPlanLogPage.java @@ -0,0 +1,55 @@ +package com.gunshi.project.xyt.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.xyt.entity.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class PersonnelPlanLogPage extends GenericPageParams { + + + /** + * 名字 + */ + @Schema(description="培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + private Integer type; + + /** + * 参训人员 + */ + @Schema(description="参训人员") + private String trainees; + + /** + * 主办单位 + */ + @Schema(description="主办单位") + private String unit; + + /** + * 开始培训时间 + */ + @Schema(description="培训日期开始时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Schema(description="培训日期结束时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etm; +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/so/PersonnelPlanPage.java b/src/main/java/com/gunshi/project/xyt/entity/so/PersonnelPlanPage.java new file mode 100644 index 0000000..3478b9e --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/so/PersonnelPlanPage.java @@ -0,0 +1,48 @@ +package com.gunshi.project.xyt.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.xyt.entity.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class PersonnelPlanPage extends GenericPageParams { + + /** + * 联系方式 + */ + @Schema(description="填报人") + private String applicant; + + /** + * 名字 + */ + @Schema(description="培训班名称") + private String name; + + /** + * 开始培训时间 + */ + @Schema(description="开始培训时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Schema(description="结束培训时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etm; +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/so/ResPersonPage.java b/src/main/java/com/gunshi/project/xyt/entity/so/ResPersonPage.java new file mode 100644 index 0000000..413790c --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/so/ResPersonPage.java @@ -0,0 +1,38 @@ +package com.gunshi.project.xyt.entity.so; + +import com.gunshi.project.xyt.entity.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/17. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ResPersonPage extends GenericPageParams { + + + /** + * 联系方式 + */ + @Schema(description="联系方式") + private String contactInfo; + + /** + * 名字 + */ + @Schema(description="名字") + private String name; + + /** + * 类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术 + */ + @Schema(description="类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术") + private Integer type; + +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/vo/PersonnelPlanLogStatisticsVo.java b/src/main/java/com/gunshi/project/xyt/entity/vo/PersonnelPlanLogStatisticsVo.java new file mode 100644 index 0000000..a5e61a0 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/PersonnelPlanLogStatisticsVo.java @@ -0,0 +1,58 @@ +package com.gunshi.project.xyt.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "人员计划日志统计") +@Data +public class PersonnelPlanLogStatisticsVo { + + @Schema(description="实际期数") + private Integer numberOfPeriods1; + + @Schema(description="计划期数") + private Integer numberOfPeriods2; + + @Schema(description="实际人次") + private Integer personNum1; + + @Schema(description="计划人次") + private Integer personNum2; + + + @Schema(description="期数图表数据") + private List list1; + + + @Schema(description="人次图表数据") + private List list2; + + + @Accessors(chain = true) // chain = true 实现链式调用 + @Data + public static class EchartsData{ + @Schema(description="月份") + private Integer month; + + @Schema(description="实际数据") + private Integer num1 = 0; + + @Schema(description="计划数据") + private Integer num2 = 0; + + @Schema(description="完成率") + private BigDecimal rate; + } +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/vo/SysDepartTree.java b/src/main/java/com/gunshi/project/xyt/entity/vo/SysDepartTree.java new file mode 100644 index 0000000..4c2bf92 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/SysDepartTree.java @@ -0,0 +1,55 @@ +//package com.gunshi.project.xyt.entity.vo; +// +//import com.gunshi.project.xyt.model.SysDepart; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import lombok.Data; +//import org.apache.commons.collections4.CollectionUtils; +// +//import java.util.List; +//import java.util.Objects; +// +///** +// * Description: +// * Created by XuSan on 2024/9/23. +// * +// * @author XuSan +// * @version 1.0 +// */ +//@Tag(name="组织机构表") +//@Data +//public class SysDepartTree { +// +// public static List buildTree(List list) { +// List dataList = list.stream() +// .filter(o -> Objects.nonNull(o.getPid())) +// .toList(); +// if (CollectionUtils.isEmpty(dataList)){ +// return null; +// } +// List pList = dataList.stream() +// .filter(o -> 0 == o.getPid()) +// .toList(); +// +// List cList = dataList.stream() +// .filter(o -> 0 != o.getPid()) +// .toList(); +// +// if (CollectionUtils.isNotEmpty(pList) && CollectionUtils.isNotEmpty(cList)){ +// pList.forEach(p -> findChild(p,cList)); +// return pList; +// } +// return null; +// } +// +// private static void findChild(SysDepart p, List cList) { +// List children = cList.stream() +// .filter(o -> p.getId().equals(o.getPid())) +// .toList(); +// if (CollectionUtils.isNotEmpty(children)){ +// p.setChildren(children); +// cList.forEach(c -> findChild(c,cList)); +// }else{ +// p.setChildren(null); +// } +// } +//} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/PersonnelPlanLogMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/PersonnelPlanLogMapper.java new file mode 100644 index 0000000..4727598 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/PersonnelPlanLogMapper.java @@ -0,0 +1,14 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.PersonnelPlanLog; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +public interface PersonnelPlanLogMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/PersonnelPlanMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/PersonnelPlanMapper.java new file mode 100644 index 0000000..d13b4a0 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/PersonnelPlanMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.PersonnelPlan; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Mapper +public interface PersonnelPlanMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/ResPersonMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/ResPersonMapper.java new file mode 100644 index 0000000..65e4f55 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/ResPersonMapper.java @@ -0,0 +1,14 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.ResPerson; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +public interface ResPersonMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/xyt/model/PersonnelPlan.java b/src/main/java/com/gunshi/project/xyt/model/PersonnelPlan.java new file mode 100644 index 0000000..6f03ea7 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/PersonnelPlan.java @@ -0,0 +1,195 @@ +package com.gunshi.project.xyt.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Schema(description="培训计划表") +@Data +@TableName("public.personnel_plan") +public class PersonnelPlan implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 培训班名称 + */ + @TableField(value="name") + @Schema(description="培训班名称") + @Size(max = 30,message = "培训班名称最大长度要小于 30") + @NotBlank(message = "培训班名称不能为空",groups = {Insert.class, Update.class}) + private String name; + + /** + * 培训主题分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他 + */ + @TableField(value="type") + @Schema(description="培训主题分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + @NotBlank(message = "培训主题不能为空",groups = {Insert.class, Update.class}) + @Pattern(regexp = "^[0-4]$", message = "培训主题分类应为:0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + private Integer type; + + /** + * 主办单位 + */ + @TableField(value="unit") + @Schema(description="主办单位") + @Size(max = 100,message = "主办单位最大长度要小于 100") + @NotBlank(message = "主办单位不能为空",groups = {Insert.class, Update.class}) + private String unit; + + /** + * 开始培训时间 + */ + @Schema(description="开始培训时间 格式:yyyy-MM-dd") + @NotBlank(message = "开始培训时间不能为空") + @TableField(value="stm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Schema(description="结束培训时间 格式:yyyy-MM-dd") + @NotBlank(message = "结束培训时间不能为空") + @TableField(value="etm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etm; + + /** + * 培训天数(天) + */ + @Schema(description="培训天数(天)") + @TableField(value="day") + private Integer day; + + /** + * 培训期数(期) + */ + @Schema(description="培训期数(期)") + @TableField(value="num") + private Integer num; + + /** + * 培训地点 + */ + @Schema(description="培训地点") + @TableField(value="addr") + @Size(max = 200,message = "主办单位最大长度要小于 200") + @NotBlank(message = "培训地点不能为空",groups = {Insert.class, Update.class}) + private String addr; + + /** + * 培训内容 + */ + @Schema(description="培训内容") + @TableField(value="content") + @Size(max = 500,message = "培训内容最大长度要小于 500") + @NotBlank(message = "培训内容不能为空",groups = {Insert.class, Update.class}) + private String content; + + /** + * 培训范围 + */ + @Schema(description="培训范围") + @TableField(value="scope") + @Size(max = 500,message = "培训范围最大长度要小于 500") + @NotBlank(message = "培训范围不能为空",groups = {Insert.class, Update.class}) + private String scope; + + /** + * 参训人员 + */ + @Schema(description="参训人员") + @TableField(value="trainees") + @Size(max = 200,message = "参训人员最大长度要小于 200") + private String trainees; + + /** + * 参训人数(人) + */ + @Schema(description="参训人数(人)") + @TableField(value="num_people") + @Size(max = 200,message = "参训人员最大长度要小于 200") + @NotBlank(message = "参训人数不能为空",groups = {Insert.class, Update.class}) + private Integer numPeople; + + /** + * 联系人 + */ + @Schema(description="联系人") + @TableField(value="contacts") + @Size(max = 50,message = "联系人最大长度要小于 50") + private String contacts; + + /** + * 联系电话 + */ + @Schema(description="联系电话") + @TableField(value="contact_number") + @Size(max = 30,message = "联系电话最大长度要小于 30") + private String contactNumber; + + /** + * 填报人 + */ + @Schema(description="填报人") + @TableField(value="applicant") + @Size(max = 50,message = "填报人最大长度要小于 50") + private String applicant; + + /** + * 状态 + */ + @Schema(description="状态 0:无效 1:有效") + @TableField(value="status") + @Size(max = 2,message = "状态最大长度要小于 2") + @NotNull(message = "状态不能为空",groups = {Insert.class, Update.class}) + @Pattern(regexp = "^[0-1]$", message = "状态应为:0:无效 1:有效") + private Integer status; + + /** + * 登记日期 + */ + @Schema(description="登记日期") + @TableField(value="reg_date") + private Date regDate; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} diff --git a/src/main/java/com/gunshi/project/xyt/model/PersonnelPlanLog.java b/src/main/java/com/gunshi/project/xyt/model/PersonnelPlanLog.java new file mode 100644 index 0000000..d673351 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/PersonnelPlanLog.java @@ -0,0 +1,169 @@ +package com.gunshi.project.xyt.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Schema(description="培训记录表") +@Data +@TableName("public.personnel_plan_log") +public class PersonnelPlanLog implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 培训计划主键 + */ + @TableField(value="plan_id") + @Schema(description="培训计划主键") + @JsonSerialize(using = ToStringSerializer.class) + @NotBlank(message = "培训计划不能为空",groups = {Insert.class, Update.class}) + private Long planId; + + /** + * 培训日期 + */ + @TableField(value="plan_date") + @Schema(description="培训日期 格式:yyyy-MM-dd") + @NotBlank(message = "培训日期不能为空",groups = {Insert.class, Update.class}) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date planDate; + + /** + * 标题名称 + */ + @TableField(value="name") + @Schema(description="标题名称") + @Size(max = 30,message = "标题名称最大长度要小于 30") + @NotBlank(message = "标题名称不能为空",groups = {Insert.class, Update.class}) + private String name; + + /** + * 培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他 + */ + @TableField(value="type") + @Schema(description="培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + @Pattern(regexp = "^[0-4]$", message = "培训主题分类应为:0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + private Integer type; + + + /** + * 开始培训时间 + */ + @Schema(description="培训时段开始时间 格式:HH:mm:ss") + @TableField(value="stm") + @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Schema(description="培训时段结束时间 格式:HH:mm:ss") + @TableField(value="etm") + @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") + private Date etm; + + /** + * 培训时长(小时) + */ + @Schema(description="培训时长(小时)") + @TableField(value="hour") + private Integer hour; + + /** + * 培训地点 + */ + @Schema(description="培训地点") + @TableField(value="addr") + @Size(max = 200,message = "主办单位最大长度要小于 200") + @NotBlank(message = "培训地点不能为空",groups = {Insert.class, Update.class}) + private String addr; + + /** + * 主办单位 + */ + @TableField(value="unit") + @Schema(description="主办单位") + @Size(max = 100,message = "主办单位最大长度要小于 100") + @NotBlank(message = "主办单位不能为空",groups = {Insert.class, Update.class}) + private String unit; + + + /** + * 培训内容 + */ + @Schema(description="培训内容") + @TableField(value="content") + @Size(max = 500,message = "培训内容最大长度要小于 500") + @NotBlank(message = "培训内容不能为空",groups = {Insert.class, Update.class}) + private String content; + + /** + * 参训人员 + */ + @Schema(description="参训人员") + @TableField(value="trainees") + @Size(max = 200,message = "参训人员最大长度要小于 200") + private String trainees; + + /** + * 参训人数(人) + */ + @Schema(description="参训人数(人)") + @TableField(value="num_people") + @Size(max = 200,message = "参训人员最大长度要小于 200") + @NotBlank(message = "参训人数不能为空",groups = {Insert.class, Update.class}) + private Integer numPeople; + + /** + * 填报人 + */ + @Schema(description="填报人") + @TableField(value="applicant") + @Size(max = 50,message = "填报人最大长度要小于 50") + private String applicant; + + /** + * 登记日期 + */ + @Schema(description="登记日期") + @TableField(value="reg_date") + private Date regDate; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} diff --git a/src/main/java/com/gunshi/project/xyt/model/ResPerson.java b/src/main/java/com/gunshi/project/xyt/model/ResPerson.java new file mode 100644 index 0000000..0b1c3bc --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/ResPerson.java @@ -0,0 +1,88 @@ +package com.gunshi.project.xyt.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Schema(description="责任人表") +@Data +@TableName("public.res_person") +public class ResPerson implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 名字 + */ + @TableField(value="name") + @Schema(description="名字") + @Size(max = 30,message = "名字最大长度要小于 30") + @NotBlank(message = "姓名不能为空") + private String name; + + /** + * 类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术 + */ + @TableField(value="type") + @Schema(description="类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术") + @NotNull(message = "责任类型不能为空") + private Integer type; + + /** + * 单位 + */ + @TableField(value="unit") + @Schema(description="单位") + @Size(max = 50,message = "单位最大长度要小于 50") + private String unit; + + /** + * 职务 + */ + @TableField(value="duty") + @Schema(description="职务") + @Size(max = 50,message = "职务最大长度要小于 50") + private String duty; + + /** + * 联系方式 + */ + @TableField(value="contact_info") + @Schema(description="联系方式") + @Size(max = 100,message = "联系方式最大长度要小于 100") + private String contactInfo; + + /** + * 职责范围 + */ + @TableField(value="duty_bound") + @Schema(description="职责范围") + @Size(max = 200,message = "职责范围最大长度要小于 200") + private String dutyBound; +} diff --git a/src/main/java/com/gunshi/project/xyt/model/SzCase.java b/src/main/java/com/gunshi/project/xyt/model/SzCase.java new file mode 100644 index 0000000..2a8441f --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/SzCase.java @@ -0,0 +1,258 @@ +package com.gunshi.project.xyt.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Schema(description="案件登记表") +@Data +@TableName("public.sz_case") +public class SzCase implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 填报人Id + */ + @TableField(value="create_by") + @Schema(description="填报人Id") + @NotNull(message = "填报人Id不能为空",groups = {Insert.class, Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long createBy; + + /** + * 填报人名字 + */ + @TableField(value="create_name") + @Schema(description="填报人名字") + @Size(max = 30,message = "填报人名字最大长度要小于 30") + @NotBlank(message = "填报人名字不能为空",groups = {Insert.class, Update.class}) + private String createName; + + @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) + @NotNull(message = "填报时间不能为空") + @TableField(value="create_time") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + /** + * 案件编号 + */ + @TableField(value="case_id") + @Schema(description="案件编号") + @Size(max = 50,message = "案件编号最大长度要小于 50") + private String caseId; + + /** + * 案件名称 + */ + @TableField(value="case_name") + @Schema(description="案件名称") + @Size(max = 50,message = "案件名称最大长度要小于 50") + @NotBlank(message = "案件名称不能为空",groups = {Insert.class, Update.class}) + private String caseName; + + /** + * 案件类型 + */ + @TableField(value="case_type") + @Schema(description="案件类型 0:违建,1:毁林垦荒,2:筑坝拦汊,3:填占库容,4:违法取水,5:其他") + @Size(max = 1,message = "案件类型最大长度为 1") + @NotNull(message = "案件类型不能为空",groups = {Insert.class, Update.class}) + private Integer caseType; + + /** + * 发现时间 + */ + @TableField(value="case_date") + @Schema(description="发现时间") + @NotNull(message = "发现时间不能为空",groups = {Insert.class, Update.class}) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date caseDate; + + /** + * 发现地点 + */ + @TableField(value="case_address") + @Schema(description="发现地点") + @NotBlank(message = "发现地点不能为空",groups = {Insert.class, Update.class}) + @Size(max = 100,message = "案件类型最大长度要小于 100") + private String caseAddress; + + /** + * 案件来源 + */ + @TableField(value="case_source") + @Schema(description="案件来源 0:巡查上报,1:自主发现,2:公共举报,3:电话举报,4:其他") + @NotNull(message = "案件来源不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "案件类型最大长度要小于 2") + private Integer caseSource; + + /** + * 违法时间 + */ + @TableField(value="Illegal_date") + @Schema(description="违法时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date IllegalDate; + + + /** + * 当事人类型 + */ + @TableField(value="party_type") + @Schema(description="当事人类型 0:自然人,1:法人或其他组织,2:待定") + @NotBlank(message = "当事人类型不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "当事人类型最大长度要小于 2") + private Integer partyType; + + /** + * 当事人姓名 + */ + @TableField(value="party_name") + @Schema(description="当事人姓名") + @Size(max = 10,message = "当事人姓名最大长度要小于 10") + private String partyName; + + /** + * 身份证号 + */ + @TableField(value="id_number") + @Schema(description="身份证号") + @Size(max = 30,message = "身份证号最大长度要小于 30") + private String idNumber; + + /** + * 当事人住址 + */ + @TableField(value="party_addr") + @Schema(description="当事人住址") + @Size(max = 50,message = "当事人住址最大长度要小于 50") + private String partyAddr; + + /** + * 简要案情 + */ + @TableField(value="intro") + @Schema(description="简要案情") + @Size(max = 500,message = "简要案情最大长度要小于 500") + private String intro; + + /** + * 处理程序 + */ + @TableField(value="processor") + @Schema(description="处理程序 0:简易程序,1:一般程序") + @Size(max = 1,message = "处理程序最大长度要小于 2") + private Integer processor; + + /** + * 处理依据 + */ + @TableField(value="treatment_basis") + @Schema(description="处理依据") + @Size(max = 50,message = "处理程序最大长度要小于 50") + private String treatmentBasis; + + /** + * 处理措施 + */ + @TableField(value="treatment_measure") + @Schema(description="处理措施") + @Size(max = 50,message = "处理措施最大长度要小于 50") + private String treatmentMeasure; + + /** + * 移送处理情况 + */ + @TableField(value="transfer") + @Schema(description="移送处理情况 0:不移送,1:移送单位") + @Size(max = 1,message = "移送处理情况最大长度要小于 2") + private Integer transfer; + + /** + * 案件执行情况 + */ + @TableField(value="caseImplementation") + @Schema(description="案件执行情况 0:当事人自动履行,1:行政强制执行") + @Size(max = 1,message = "案件执行情况最大长度要小于 2") + private Integer caseImplementation; + + /** + * 自动履行情况 + */ + @TableField(value="performance") + @Schema(description="自动履行情况") + @Size(max = 500,message = "自动履行情况最大长度要小于 500") + private String performance; + + /** + * 伤亡人数(人) + */ + @TableField(value="casualties") + @Schema(description="伤亡人数(人)") + private Integer casualties; + + /** + * 直接损失金额(万元) + */ + @TableField(value="direct_loss_amount") + @Schema(description="直接损失金额(万元)") + private BigDecimal directLossAmount; + + /** + * 结案情况 + */ + @TableField(value="close_status") + @Schema(description="结案情况 0:正常结案,1:其他方式结案,2:未结案") + private Integer closeStatus; + + /** + * 结案时间 + */ + @TableField(value="close_date") + @Schema(description="结案时间 " + DateFormatString.YYYY_MM_DD_HH_MM_SS) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date closeDate; + + /** + * 文件编号及名称 + */ + @TableField(value="doc_num_name") + @Schema(description="文件编号及名称 ") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Size(max = 100,message = "自动履行情况最大长度要小于 100") + private String docNumName; +} diff --git a/src/main/java/com/gunshi/project/xyt/service/PersonnelPlanLogService.java b/src/main/java/com/gunshi/project/xyt/service/PersonnelPlanLogService.java new file mode 100644 index 0000000..832c6e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/PersonnelPlanLogService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.xyt.mapper.PersonnelPlanLogMapper; +import com.gunshi.project.xyt.model.PersonnelPlanLog; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class PersonnelPlanLogService extends ServiceImpl +{ +} diff --git a/src/main/java/com/gunshi/project/xyt/service/PersonnelPlanService.java b/src/main/java/com/gunshi/project/xyt/service/PersonnelPlanService.java new file mode 100644 index 0000000..ccf2993 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/PersonnelPlanService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.xyt.mapper.PersonnelPlanMapper; +import com.gunshi.project.xyt.model.PersonnelPlan; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class PersonnelPlanService extends ServiceImpl +{ +} diff --git a/src/main/java/com/gunshi/project/xyt/service/ResPersonService.java b/src/main/java/com/gunshi/project/xyt/service/ResPersonService.java new file mode 100644 index 0000000..d7a7820 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/ResPersonService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.xyt.mapper.ResPersonMapper; +import com.gunshi.project.xyt.model.ResPerson; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResPersonService extends ServiceImpl +{ +} diff --git a/src/main/resources/mapper/PersonnelPlanLogMapper.xml b/src/main/resources/mapper/PersonnelPlanLogMapper.xml new file mode 100644 index 0000000..fe0fe96 --- /dev/null +++ b/src/main/resources/mapper/PersonnelPlanLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/PersonnelPlanMapper.xml b/src/main/resources/mapper/PersonnelPlanMapper.xml new file mode 100644 index 0000000..964a7c6 --- /dev/null +++ b/src/main/resources/mapper/PersonnelPlanMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/ResPersonMapper.xml b/src/main/resources/mapper/ResPersonMapper.xml new file mode 100644 index 0000000..b9c9e9a --- /dev/null +++ b/src/main/resources/mapper/ResPersonMapper.xml @@ -0,0 +1,5 @@ + + + + +