feat: 公务出差申请

This commit is contained in:
李京通 2025-05-28 16:47:07 +08:00
parent 839e2a4143
commit 51304c6d83
5 changed files with 263 additions and 0 deletions

View File

@ -0,0 +1,119 @@
package com.ruoyi.business.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.database.domain.PublicBusinessTrip;
import com.ruoyi.database.service.PublicBusinessTripService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
* @Description PublicBusinessTripController
* @Author lijingtong
* @Date 2025-05-28
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/business/publicBusinessTrip")
@Api(tags = "公务出差申请")
public class PublicBusinessTripController extends BaseController {
private final PublicBusinessTripService publicBusinessTripService;
@GetMapping("/getList")
@ApiOperation("查询公务出差申请")
public TableDataInfo getList(PublicBusinessTrip publicBusinessTrip) {
startPage();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
QueryWrapper<PublicBusinessTrip> queryWrapper = new QueryWrapper<>(publicBusinessTrip);
queryWrapper.orderByDesc("create_time");
String fTime = publicBusinessTrip.getFTime();
String eTime = publicBusinessTrip.getETime();
// 把时间转成LocalDateTime格式
LocalDateTime fromTime = LocalDateTime.parse(fTime, formatter);
LocalDateTime endTime = LocalDateTime.parse(eTime, formatter);
queryWrapper.orderByDesc("create_time");
if (fTime != null && fTime != null) {
queryWrapper.between("create_time", fromTime, endTime);
}
List<PublicBusinessTrip> list = publicBusinessTripService.list();
long size = list.size();
return getDataTableEnhance(list, size);
}
@ApiOperation("新增或修改公务出差申请 传id为修改 不传id为新增")
@PostMapping("/addOrUpdate")
public AjaxResult add(@RequestBody PublicBusinessTrip publicBusinessTrip) {
if (publicBusinessTrip.getId() == null) {
publicBusinessTrip.setCreateBy(getUsername());
publicBusinessTrip.setCreateTime(LocalDateTime.now());
publicBusinessTrip.setUpdateBy(getUsername());
publicBusinessTrip.setUpdateTime(LocalDateTime.now());
boolean result = publicBusinessTripService.save(publicBusinessTrip);
if (result) {
return AjaxResult.success("新增成功");
}
return AjaxResult.error("新增失败");
} else {
publicBusinessTrip.setUpdateBy(getUsername());
boolean result = publicBusinessTripService.updateById(publicBusinessTrip);
if (!result) {
return AjaxResult.error("修改公务出差申请失败");
}
return AjaxResult.success(result);
}
}
@ApiOperation("删除公务出差申请")
@DeleteMapping("/delete/{id}")
public AjaxResult delete(@PathVariable Long id) {
boolean result = publicBusinessTripService.removeById(id);
if (result) {
return AjaxResult.success("删除成功");
}
return AjaxResult.error("删除失败");
}
@ApiOperation("查询公务出差申请详情")
@GetMapping("/detail/{id}")
public AjaxResult detail(@PathVariable Long id) {
PublicBusinessTrip publicBusinessTrip = publicBusinessTripService.getById(id);
if (publicBusinessTrip == null) {
return AjaxResult.error("查询失败");
}
return AjaxResult.success(publicBusinessTrip);
}
@ApiOperation("审批公务出差申请")
@PostMapping("/approval")
public AjaxResult approval(@RequestBody PublicBusinessTrip publicBusinessTrip) {
Integer state = publicBusinessTrip.getState();
publicBusinessTrip.setState(state);
boolean result = publicBusinessTripService.updateById(publicBusinessTrip);
if (!result) {
return AjaxResult.error("审批公务出差申请失败");
}
return AjaxResult.success("审批公务出差申请成功");
}
@ApiOperation("批量删除公务出差申请")
@DeleteMapping("/batchDelete")
public AjaxResult batchDelete(@RequestBody List<Long> ids) {
boolean result = publicBusinessTripService.removeByIds(ids);
if (!result) {
return AjaxResult.error("批量删除公务出差申请失败");
}
return AjaxResult.success("批量删除公务出差申请成功");
}
}

View File

@ -0,0 +1,101 @@
package com.ruoyi.database.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class PublicBusinessTrip {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("申请单位")
private Long deptId;
@ApiModelProperty("申请单位名称")
private String deptName; // 修正类型为String
@ApiModelProperty("申请人姓名")
private String applicantName;
@ApiModelProperty("警号")
private String policeNumber;
@ApiModelProperty("联系方式")
private String contactWay;
@ApiModelProperty("申请日期")
@JsonFormat(pattern = "yyyy年MM月dd日")
private LocalDateTime applicationDate;
@ApiModelProperty("出差开始时间")
@JsonFormat(pattern = "yyyy年MM月dd日 HH:mm")
private LocalDateTime startDateTime;
@ApiModelProperty("出差结束时间")
@JsonFormat(pattern = "yyyy年MM月dd日 HH:mm")
private LocalDateTime endDateTime;
@ApiModelProperty("目的地")
private String destination;
@ApiModelProperty("事由")
private String taskReason;
@ApiModelProperty("路线规划")
private String routePlan;
@ApiModelProperty("携带物品")
private String carriedItems;
@ApiModelProperty("涉密文件密级")
private String classifiedFiles;
@ApiModelProperty("份数")
private Integer number;
@ApiModelProperty("文件编号")
private String fileCode;
@ApiModelProperty("随行人员")
private String accompanyingPersonnel;
@ApiModelProperty("交通费用")
private Double transportationCost;
@ApiModelProperty("住宿费用")
private Double accommodationCost;
@ApiModelProperty("伙食补助")
private Double mealSubsidy;
@ApiModelProperty("审批状态 0-未审批 1-部门审批通过 2-部门审批不通过 3-警务保障部门审批通过 4-警务保障部门审批不通过 5-局领导审批通过 6-局领导审批不通过")
private Integer state;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("创建人")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("修改时间")
private LocalDateTime updateTime;
@ApiModelProperty("修改人")
private String updateBy;
@TableField(exist = false)
private String fTime; // 临时字段开始时间字符串
@TableField(exist = false)
private String eTime; // 临时字段结束时间字符串
}

View File

@ -0,0 +1,15 @@
package com.ruoyi.database.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.database.domain.PublicBusinessTrip;
import org.apache.ibatis.annotations.Mapper;
/**
* @Description PublicBusinessTripMapper
* @Author lijingtong
* @Date 2025-05-28
*/
@Mapper
public interface PublicBusinessTripMapper extends BaseMapper<PublicBusinessTrip> {
}

View File

@ -0,0 +1,12 @@
package com.ruoyi.database.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.database.domain.PublicBusinessTrip;
/**
* @Description PublicBusinessTripService
* @Author lijingtong
* @Date 2025-05-28
*/
public interface PublicBusinessTripService extends IService<PublicBusinessTrip> {
}

View File

@ -0,0 +1,16 @@
package com.ruoyi.database.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.database.domain.PublicBusinessTrip;
import com.ruoyi.database.mapper.PublicBusinessTripMapper;
import com.ruoyi.database.service.PublicBusinessTripService;
import org.springframework.stereotype.Service;
/**
* @Description PublicBusinessTripServiceImpl
* @Author lijingtong
* @Date 2025-05-28
*/
@Service
public class PublicBusinessTripServiceImpl extends ServiceImpl<PublicBusinessTripMapper, PublicBusinessTrip> implements PublicBusinessTripService {
}