Compare commits

..

2 Commits

Author SHA1 Message Date
hanrenchun a7bef13051 Merge remote-tracking branch 'origin/master' 2025-06-06 14:56:24 +08:00
hanrenchun f5f29892de 出差申请 2025-06-06 14:56:15 +08:00
6 changed files with 192 additions and 14 deletions

View File

@ -2,16 +2,17 @@ package com.ruoyi.business.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AddTreeSelect;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.database.domain.BaseAddressInfo;
import com.ruoyi.database.domain.BusinessTripApproval; import com.ruoyi.database.domain.BusinessTripApproval;
import com.ruoyi.database.domain.PoliceLeaveApproval; import com.ruoyi.database.service.BaseAddressInfoService;
import com.ruoyi.database.service.BusinessTripApprovalService; import com.ruoyi.database.service.BusinessTripApprovalService;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -21,9 +22,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @Description BusinessTripApprovalController * @Description BusinessTripApprovalController
@ -40,7 +40,7 @@ public class BusinessTripApprovalController extends BaseController {
private final BusinessTripApprovalService businessTripApprovalService; private final BusinessTripApprovalService businessTripApprovalService;
private final ISysUserService sysUserService; private final ISysUserService sysUserService;
private final ISysDeptService sysDeptService; private final ISysDeptService sysDeptService;
private final ISysDictDataService dictDataService; private final BaseAddressInfoService baseAddressInfoService;
@RequestMapping("/list") @RequestMapping("/list")
@ -51,29 +51,29 @@ public class BusinessTripApprovalController extends BaseController {
queryWrapper.orderByDesc("create_time"); queryWrapper.orderByDesc("create_time");
List<BusinessTripApproval> list = businessTripApprovalService.list(queryWrapper); List<BusinessTripApproval> list = businessTripApprovalService.list(queryWrapper);
long size = businessTripApprovalService.count(queryWrapper); long size = businessTripApprovalService.count(queryWrapper);
return getDataTableEnhance(list,size); return getDataTableEnhance(list, size);
} }
@PostMapping("add") @PostMapping("add")
@ApiOperation("新增出差申请") @ApiOperation("新增出差申请")
public AjaxResult add(BusinessTripApproval dto){ public AjaxResult add(BusinessTripApproval dto) {
SysUser user = getLoginUser().getUser(); SysUser user = getLoginUser().getUser();
if (dto.getHasOffcialCar() != null && dto.getHasOffcialCar() == 1){ if (dto.getHasOffcialCar() != null && dto.getHasOffcialCar() == 1) {
if (dto.getCarModel() == null){ if (dto.getCarModel() == null) {
throw new RuntimeException("请选择使用车型"); throw new RuntimeException("请选择使用车型");
} }
if (dto.getUseCarType() == null){ if (dto.getUseCarType() == null) {
throw new RuntimeException("请选择用车方式"); throw new RuntimeException("请选择用车方式");
} }
if (dto.getSeats() == null){ if (dto.getSeats() == null) {
throw new RuntimeException("请输入座位数"); throw new RuntimeException("请输入座位数");
} }
} }
if (dto.getStartDate() == null || dto.getEndDate() == null){ if (dto.getStartDate() == null || dto.getEndDate() == null) {
throw new RuntimeException("请选择出差时间范围"); throw new RuntimeException("请选择出差时间范围");
} }
if (dto.getDestinationId() == null){ if (dto.getDestinationId() == null) {
throw new RuntimeException("请选择出差目的地"); throw new RuntimeException("请选择出差目的地");
} }
dto.setUserName(user.getNickName()); dto.setUserName(user.getNickName());
@ -139,9 +139,34 @@ public class BusinessTripApprovalController extends BaseController {
} }
@GetMapping("/addressList")
@ApiOperation("查询地址信息列表")
public AjaxResult addressList() {
List<BaseAddressInfo> allAddresses = baseAddressInfoService.list();
Map<Long, List<BaseAddressInfo>> addressMap = allAddresses.stream()
.collect(Collectors.groupingBy(BaseAddressInfo::getTopId));
List<AddTreeSelect> tree = buildTree(addressMap, 0L);
return AjaxResult.success(tree);
}
private List<AddTreeSelect> buildTree(
Map<Long, List<BaseAddressInfo>> addressMap,
Long parentId
) {
List<BaseAddressInfo> children = addressMap.get(parentId);
if (children == null) return Collections.emptyList();
return children.stream()
.map(info -> {
AddTreeSelect node = new AddTreeSelect();
node.setId(info.getId());
node.setLabel(info.getAddName());
node.setValue(info.getId().toString());
node.setChildren(buildTree(addressMap, info.getId()));
return node;
})
.collect(Collectors.toList());
}
} }

View File

@ -0,0 +1,40 @@
package com.ruoyi.database.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntityMini;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "base_address_info")
@ApiModel(value = "BaseAddressInfo", description = "地址信息表")
public class BaseAddressInfo extends BaseEntityMini {
@ApiModelProperty("主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("地址编码")
private String addCode;
@ApiModelProperty("地址名称")
private String addName;
@ApiModelProperty("上级id")
private Long topId;
}

View File

@ -0,0 +1,9 @@
package com.ruoyi.database.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.database.domain.BaseAddressInfo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BaseAddressInfoMapper extends BaseMapper<BaseAddressInfo> {
}

View File

@ -0,0 +1,7 @@
package com.ruoyi.database.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.database.domain.BaseAddressInfo;
public interface BaseAddressInfoService extends IService<BaseAddressInfo> {
}

View File

@ -0,0 +1,11 @@
package com.ruoyi.database.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.database.domain.BaseAddressInfo;
import com.ruoyi.database.mapper.BaseAddressInfoMapper;
import com.ruoyi.database.service.BaseAddressInfoService;
import org.springframework.stereotype.Service;
@Service
public class BaseAddressInfoServiceImpl extends ServiceImpl<BaseAddressInfoMapper, BaseAddressInfo> implements BaseAddressInfoService {
}

View File

@ -0,0 +1,86 @@
package com.ruoyi.common.core.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysMenu;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
/**
* Treeselect树结构实体类
*
* @author ruoyi
*/
public class AddTreeSelect implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 节点ID
*/
private Long id;
/**
* 节点名称
*/
private String label;
private String value;
/**
* 子节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<AddTreeSelect> children;
public AddTreeSelect() {
}
public AddTreeSelect(SysDept dept) {
this.id = dept.getDeptId();
this.label = dept.getDeptName();
this.children = dept.getChildren().stream().map(AddTreeSelect::new).collect(Collectors.toList());
}
public AddTreeSelect(SysMenu menu) {
this.id = menu.getMenuId();
this.label = menu.getMenuName();
this.children = menu.getChildren().stream().map(AddTreeSelect::new).collect(Collectors.toList());
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<AddTreeSelect> getChildren() {
return children;
}
public void setChildren(List<AddTreeSelect> children) {
this.children = children;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}