11-5-报销模块
This commit is contained in:
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.bx.bxsq.bxlx.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.bo.XzdBxBxsqBxlxBo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.vo.XzdBxBxsqBxlxVo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.service.IXzdBxBxsqBxlxService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 报销申请-报销类型
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-05
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xzd/bxlx/bxlx")
|
||||
public class XzdBxBxsqBxlxController extends BaseController {
|
||||
|
||||
private final IXzdBxBxsqBxlxService xzdBxBxsqBxlxService;
|
||||
|
||||
/**
|
||||
* 查询报销申请-报销类型列表
|
||||
*/
|
||||
@SaCheckPermission("bxlx:bxlx:list")
|
||||
@GetMapping("/list")
|
||||
public R<List<XzdBxBxsqBxlxVo>> list(XzdBxBxsqBxlxBo bo) {
|
||||
List<XzdBxBxsqBxlxVo> list = xzdBxBxsqBxlxService.queryList(bo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出报销申请-报销类型列表
|
||||
*/
|
||||
@SaCheckPermission("bxlx:bxlx:export")
|
||||
@Log(title = "报销申请-报销类型", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdBxBxsqBxlxBo bo, HttpServletResponse response) {
|
||||
List<XzdBxBxsqBxlxVo> list = xzdBxBxsqBxlxService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "报销申请-报销类型", XzdBxBxsqBxlxVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取报销申请-报销类型详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("bxlx:bxlx:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdBxBxsqBxlxVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdBxBxsqBxlxService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增报销申请-报销类型
|
||||
*/
|
||||
@SaCheckPermission("bxlx:bxlx:add")
|
||||
@Log(title = "报销申请-报销类型", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdBxBxsqBxlxBo bo) {
|
||||
return toAjax(xzdBxBxsqBxlxService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报销申请-报销类型
|
||||
*/
|
||||
@SaCheckPermission("bxlx:bxlx:edit")
|
||||
@Log(title = "报销申请-报销类型", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdBxBxsqBxlxBo bo) {
|
||||
return toAjax(xzdBxBxsqBxlxService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除报销申请-报销类型
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("bxlx:bxlx:remove")
|
||||
@Log(title = "报销申请-报销类型", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdBxBxsqBxlxService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
package org.dromara.xzd.bx.bxsq.bxlx.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 报销申请-报销类型对象 xzd_bx_bxsq_bxlx
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_bx_bxsq_bxlx")
|
||||
public class XzdBxBxsqBxlx extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 父id
|
||||
*/
|
||||
private Long pid;
|
||||
|
||||
/**
|
||||
* 类型编码
|
||||
*/
|
||||
private String lxbm;
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
private String lxmc;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
package org.dromara.xzd.bx.bxsq.bxlx.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.XzdBxBxsqBxlx;
|
||||
|
||||
/**
|
||||
* 报销申请-报销类型业务对象 xzd_bx_bxsq_bxlx
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-05
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdBxBxsqBxlx.class, reverseConvertGenerate = false)
|
||||
public class XzdBxBxsqBxlxBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 父id
|
||||
*/
|
||||
private Long pid;
|
||||
|
||||
/**
|
||||
* 类型编码
|
||||
*/
|
||||
private String lxbm;
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
private String lxmc;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
package org.dromara.xzd.bx.bxsq.bxlx.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.XzdBxBxsqBxlx;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* 报销申请-报销类型视图对象 xzd_bx_bxsq_bxlx
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdBxBxsqBxlx.class)
|
||||
public class XzdBxBxsqBxlxVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@ExcelProperty(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 父id
|
||||
*/
|
||||
@ExcelProperty(value = "父id")
|
||||
private Long pid;
|
||||
|
||||
/**
|
||||
* 类型编码
|
||||
*/
|
||||
@ExcelProperty(value = "类型编码")
|
||||
private String lxbm;
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
@ExcelProperty(value = "类型名称")
|
||||
private String lxmc;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.bx.bxsq.bxlx.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.XzdBxBxsqBxlx;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.vo.XzdBxBxsqBxlxVo;
|
||||
|
||||
/**
|
||||
* 报销申请-报销类型Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
public interface XzdBxBxsqBxlxMapper extends BaseMapperPlus<XzdBxBxsqBxlx, XzdBxBxsqBxlxVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.bx.bxsq.bxlx.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.XzdBxBxsqBxlx;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.bo.XzdBxBxsqBxlxBo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.vo.XzdBxBxsqBxlxVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 报销申请-报销类型Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
public interface IXzdBxBxsqBxlxService extends IService<XzdBxBxsqBxlx>{
|
||||
|
||||
/**
|
||||
* 查询报销申请-报销类型
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 报销申请-报销类型
|
||||
*/
|
||||
XzdBxBxsqBxlxVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询报销申请-报销类型列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 报销申请-报销类型分页列表
|
||||
*/
|
||||
TableDataInfo<XzdBxBxsqBxlxVo> queryPageList(XzdBxBxsqBxlxBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的报销申请-报销类型列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 报销申请-报销类型列表
|
||||
*/
|
||||
List<XzdBxBxsqBxlxVo> queryList(XzdBxBxsqBxlxBo bo);
|
||||
|
||||
/**
|
||||
* 新增报销申请-报销类型
|
||||
*
|
||||
* @param bo 报销申请-报销类型
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdBxBxsqBxlxBo bo);
|
||||
|
||||
/**
|
||||
* 修改报销申请-报销类型
|
||||
*
|
||||
* @param bo 报销申请-报销类型
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdBxBxsqBxlxBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除报销申请-报销类型信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,133 @@
|
||||
package org.dromara.xzd.bx.bxsq.bxlx.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.XzdBxBxsqBxlx;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.bo.XzdBxBxsqBxlxBo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.vo.XzdBxBxsqBxlxVo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.mapper.XzdBxBxsqBxlxMapper;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.service.IXzdBxBxsqBxlxService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 报销申请-报销类型Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdBxBxsqBxlxServiceImpl extends ServiceImpl<XzdBxBxsqBxlxMapper, XzdBxBxsqBxlx> implements IXzdBxBxsqBxlxService {
|
||||
|
||||
private final XzdBxBxsqBxlxMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询报销申请-报销类型
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 报销申请-报销类型
|
||||
*/
|
||||
@Override
|
||||
public XzdBxBxsqBxlxVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询报销申请-报销类型列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 报销申请-报销类型分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdBxBxsqBxlxVo> queryPageList(XzdBxBxsqBxlxBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdBxBxsqBxlx> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdBxBxsqBxlxVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的报销申请-报销类型列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 报销申请-报销类型列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdBxBxsqBxlxVo> queryList(XzdBxBxsqBxlxBo bo) {
|
||||
LambdaQueryWrapper<XzdBxBxsqBxlx> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdBxBxsqBxlx> buildQueryWrapper(XzdBxBxsqBxlxBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdBxBxsqBxlx> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdBxBxsqBxlx::getId);
|
||||
lqw.eq(bo.getPid() != null, XzdBxBxsqBxlx::getPid, bo.getPid());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getLxbm()), XzdBxBxsqBxlx::getLxbm, bo.getLxbm());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getLxmc()), XzdBxBxsqBxlx::getLxmc, bo.getLxmc());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增报销申请-报销类型
|
||||
*
|
||||
* @param bo 报销申请-报销类型
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdBxBxsqBxlxBo bo) {
|
||||
XzdBxBxsqBxlx add = MapstructUtils.convert(bo, XzdBxBxsqBxlx.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报销申请-报销类型
|
||||
*
|
||||
* @param bo 报销申请-报销类型
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdBxBxsqBxlxBo bo) {
|
||||
XzdBxBxsqBxlx update = MapstructUtils.convert(bo, XzdBxBxsqBxlx.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdBxBxsqBxlx entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除报销申请-报销类型信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package org.dromara.xzd.bx.bxsq.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.xzd.bx.bxsq.domain.bo.XzdBxBxsqBo;
|
||||
import org.dromara.xzd.bx.bxsq.domain.vo.XzdBxBxsqVo;
|
||||
import org.dromara.xzd.bx.bxsq.service.IXzdBxBxsqService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 报销-报销申请
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xzd/bxsq/bxsq")
|
||||
public class XzdBxBxsqController extends BaseController {
|
||||
|
||||
private final IXzdBxBxsqService xzdBxBxsqService;
|
||||
|
||||
/**
|
||||
* 查询报销-报销申请列表
|
||||
*/
|
||||
@SaCheckPermission("bxsq:bxsq:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdBxBxsqVo> list(XzdBxBxsqBo bo, PageQuery pageQuery) {
|
||||
return xzdBxBxsqService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出报销-报销申请列表
|
||||
*/
|
||||
@SaCheckPermission("bxsq:bxsq:export")
|
||||
@Log(title = "报销-报销申请", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdBxBxsqBo bo, HttpServletResponse response) {
|
||||
List<XzdBxBxsqVo> list = xzdBxBxsqService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "报销-报销申请", XzdBxBxsqVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取报销-报销申请详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("bxsq:bxsq:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdBxBxsqVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdBxBxsqService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增报销-报销申请
|
||||
*/
|
||||
@SaCheckPermission("bxsq:bxsq:add")
|
||||
@Log(title = "报销-报销申请", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdBxBxsqBo bo) {
|
||||
return toAjax(xzdBxBxsqService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报销-报销申请
|
||||
*/
|
||||
@SaCheckPermission("bxsq:bxsq:edit")
|
||||
@Log(title = "报销-报销申请", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdBxBxsqBo bo) {
|
||||
return toAjax(xzdBxBxsqService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除报销-报销申请
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("bxsq:bxsq:remove")
|
||||
@Log(title = "报销-报销申请", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdBxBxsqService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,155 @@
|
||||
package org.dromara.xzd.bx.bxsq.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 报销-报销申请对象 xzd_bx_bxsq
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_bx_bxsq")
|
||||
public class XzdBxBxsq extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
private String shzt;
|
||||
|
||||
/**
|
||||
* 单据编码
|
||||
*/
|
||||
private String djbm;
|
||||
|
||||
/**
|
||||
* 申请日期
|
||||
*/
|
||||
private LocalDate sqrq;
|
||||
|
||||
/**
|
||||
* 报销人
|
||||
*/
|
||||
private Long bxr;
|
||||
|
||||
/**
|
||||
* 公司
|
||||
*/
|
||||
private Long gs;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
private Long bm;
|
||||
|
||||
/**
|
||||
* 项目
|
||||
*/
|
||||
private Long xm;
|
||||
|
||||
/**
|
||||
* 记账组织
|
||||
*/
|
||||
private String jzzz;
|
||||
|
||||
/**
|
||||
* 报销类型
|
||||
*/
|
||||
private Long bxlx;
|
||||
|
||||
/**
|
||||
* 事由
|
||||
*/
|
||||
private String sy;
|
||||
|
||||
/**
|
||||
* 预算类型(字典)
|
||||
*/
|
||||
private String yslx;
|
||||
|
||||
/**
|
||||
* 本次报销金额(元)
|
||||
*/
|
||||
private BigDecimal bcbxje;
|
||||
|
||||
/**
|
||||
* 借款总余额
|
||||
*/
|
||||
private BigDecimal jkzye;
|
||||
|
||||
/**
|
||||
* 冲销金额(元)
|
||||
*/
|
||||
private BigDecimal cxje;
|
||||
|
||||
/**
|
||||
* 实领金额(元)
|
||||
*/
|
||||
private BigDecimal slje;
|
||||
|
||||
/**
|
||||
* 还款金额(元)
|
||||
*/
|
||||
private BigDecimal hkje;
|
||||
|
||||
/**
|
||||
* 审批金额(元)
|
||||
*/
|
||||
private BigDecimal spje;
|
||||
|
||||
/**
|
||||
* 增值税税额(元)
|
||||
*/
|
||||
private BigDecimal zzsse;
|
||||
|
||||
/**
|
||||
* 农产品税额(元)
|
||||
*/
|
||||
private BigDecimal ncpse;
|
||||
|
||||
/**
|
||||
* 旅客运输税额(元)
|
||||
*/
|
||||
private BigDecimal lkysse;
|
||||
|
||||
/**
|
||||
* 公司付款金额(元)
|
||||
*/
|
||||
private BigDecimal gsfkje;
|
||||
|
||||
/**
|
||||
* 未付金额(元)
|
||||
*/
|
||||
private BigDecimal wfje;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String xmlx;
|
||||
|
||||
/**
|
||||
* 项目大类
|
||||
*/
|
||||
private String xmdl;
|
||||
|
||||
private String fileId;
|
||||
|
||||
}
|
||||
@ -0,0 +1,157 @@
|
||||
package org.dromara.xzd.bx.bxsq.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xzd.bx.bxsq.domain.XzdBxBxsq;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.XzdBxBxsqFymx;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 报销-报销申请业务对象 xzd_bx_bxsq
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdBxBxsq.class, reverseConvertGenerate = false)
|
||||
public class XzdBxBxsqBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
private String shzt;
|
||||
|
||||
/**
|
||||
* 单据编码
|
||||
*/
|
||||
private String djbm;
|
||||
|
||||
/**
|
||||
* 申请日期
|
||||
*/
|
||||
private LocalDate sqrq;
|
||||
|
||||
/**
|
||||
* 报销人
|
||||
*/
|
||||
private Long bxr;
|
||||
|
||||
/**
|
||||
* 公司
|
||||
*/
|
||||
private Long gs;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
private Long bm;
|
||||
|
||||
/**
|
||||
* 项目
|
||||
*/
|
||||
private Long xm;
|
||||
|
||||
/**
|
||||
* 记账组织
|
||||
*/
|
||||
private String jzzz;
|
||||
|
||||
/**
|
||||
* 报销类型
|
||||
*/
|
||||
private Long bxlx;
|
||||
|
||||
/**
|
||||
* 事由
|
||||
*/
|
||||
private String sy;
|
||||
|
||||
/**
|
||||
* 预算类型(字典)
|
||||
*/
|
||||
private String yslx;
|
||||
|
||||
/**
|
||||
* 本次报销金额(元)
|
||||
*/
|
||||
private BigDecimal bcbxje;
|
||||
|
||||
/**
|
||||
* 借款总余额
|
||||
*/
|
||||
private BigDecimal jkzye;
|
||||
|
||||
/**
|
||||
* 冲销金额(元)
|
||||
*/
|
||||
private BigDecimal cxje;
|
||||
|
||||
/**
|
||||
* 实领金额(元)
|
||||
*/
|
||||
private BigDecimal slje;
|
||||
|
||||
/**
|
||||
* 还款金额(元)
|
||||
*/
|
||||
private BigDecimal hkje;
|
||||
|
||||
/**
|
||||
* 审批金额(元)
|
||||
*/
|
||||
private BigDecimal spje;
|
||||
|
||||
/**
|
||||
* 增值税税额(元)
|
||||
*/
|
||||
private BigDecimal zzsse;
|
||||
|
||||
/**
|
||||
* 农产品税额(元)
|
||||
*/
|
||||
private BigDecimal ncpse;
|
||||
|
||||
/**
|
||||
* 旅客运输税额(元)
|
||||
*/
|
||||
private BigDecimal lkysse;
|
||||
|
||||
/**
|
||||
* 公司付款金额(元)
|
||||
*/
|
||||
private BigDecimal gsfkje;
|
||||
|
||||
/**
|
||||
* 未付金额(元)
|
||||
*/
|
||||
private BigDecimal wfje;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String xmlx;
|
||||
|
||||
/**
|
||||
* 项目大类
|
||||
*/
|
||||
private String xmdl;
|
||||
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 费用明细
|
||||
*/
|
||||
private List<XzdBxBxsqFymx> fymx;
|
||||
|
||||
}
|
||||
@ -0,0 +1,213 @@
|
||||
package org.dromara.xzd.bx.bxsq.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.xzd.bx.bxsq.domain.XzdBxBxsq;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.vo.XzdBxBxsqFymxVo;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 报销-报销申请视图对象 xzd_bx_bxsq
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdBxBxsq.class)
|
||||
public class XzdBxBxsqVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@ExcelProperty(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@ExcelProperty(value = "审核状态")
|
||||
private String shzt;
|
||||
|
||||
/**
|
||||
* 单据编码
|
||||
*/
|
||||
@ExcelProperty(value = "单据编码")
|
||||
private String djbm;
|
||||
|
||||
/**
|
||||
* 申请日期
|
||||
*/
|
||||
@ExcelProperty(value = "申请日期")
|
||||
private LocalDate sqrq;
|
||||
|
||||
/**
|
||||
* 报销人
|
||||
*/
|
||||
@ExcelProperty(value = "报销人")
|
||||
private Long bxr;
|
||||
|
||||
/**
|
||||
* 报销人名称
|
||||
*/
|
||||
private String bxrmc;
|
||||
|
||||
/**
|
||||
* 公司
|
||||
*/
|
||||
@ExcelProperty(value = "公司")
|
||||
private Long gs;
|
||||
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
private String gsmc;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
@ExcelProperty(value = "部门")
|
||||
private Long bm;
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String bmmc;
|
||||
|
||||
/**
|
||||
* 项目
|
||||
*/
|
||||
@ExcelProperty(value = "项目")
|
||||
private Long xm;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String xmmc;
|
||||
|
||||
/**
|
||||
* 记账组织
|
||||
*/
|
||||
@ExcelProperty(value = "记账组织")
|
||||
private String jzzz;
|
||||
|
||||
/**
|
||||
* 报销类型
|
||||
*/
|
||||
@ExcelProperty(value = "报销类型")
|
||||
private Long bxlx;
|
||||
|
||||
/**
|
||||
* 报销类型名称
|
||||
*/
|
||||
private String bxlxmc;
|
||||
|
||||
/**
|
||||
* 事由
|
||||
*/
|
||||
@ExcelProperty(value = "事由")
|
||||
private String sy;
|
||||
|
||||
/**
|
||||
* 预算类型(字典)
|
||||
*/
|
||||
@ExcelProperty(value = "预算类型(字典)")
|
||||
private String yslx;
|
||||
|
||||
/**
|
||||
* 本次报销金额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "本次报销金额(元)")
|
||||
private BigDecimal bcbxje;
|
||||
|
||||
/**
|
||||
* 借款总余额
|
||||
*/
|
||||
@ExcelProperty(value = "借款总余额")
|
||||
private BigDecimal jkzye;
|
||||
|
||||
/**
|
||||
* 冲销金额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "冲销金额(元)")
|
||||
private BigDecimal cxje;
|
||||
|
||||
/**
|
||||
* 实领金额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "实领金额(元)")
|
||||
private BigDecimal slje;
|
||||
|
||||
/**
|
||||
* 还款金额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "还款金额(元)")
|
||||
private BigDecimal hkje;
|
||||
|
||||
/**
|
||||
* 审批金额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "审批金额(元)")
|
||||
private BigDecimal spje;
|
||||
|
||||
/**
|
||||
* 增值税税额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "增值税税额(元)")
|
||||
private BigDecimal zzsse;
|
||||
|
||||
/**
|
||||
* 农产品税额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "农产品税额(元)")
|
||||
private BigDecimal ncpse;
|
||||
|
||||
/**
|
||||
* 旅客运输税额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "旅客运输税额(元)")
|
||||
private BigDecimal lkysse;
|
||||
|
||||
/**
|
||||
* 公司付款金额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "公司付款金额(元)")
|
||||
private BigDecimal gsfkje;
|
||||
|
||||
/**
|
||||
* 未付金额(元)
|
||||
*/
|
||||
@ExcelProperty(value = "未付金额(元)")
|
||||
private BigDecimal wfje;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
@ExcelProperty(value = "项目类型")
|
||||
private String xmlx;
|
||||
|
||||
/**
|
||||
* 项目大类
|
||||
*/
|
||||
@ExcelProperty(value = "项目大类")
|
||||
private String xmdl;
|
||||
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 费用明细
|
||||
*/
|
||||
private List<XzdBxBxsqFymxVo> fymx;
|
||||
|
||||
}
|
||||
@ -0,0 +1,99 @@
|
||||
package org.dromara.xzd.bx.bxsq.fymx.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 报销申请-费用明细对象 xzd_bx_bxsq_fymx
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_bx_bxsq_fymx")
|
||||
public class XzdBxBxsqFymx extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报销关联id
|
||||
*/
|
||||
private Long bxId;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 费用类型(1农产品2旅客运输)
|
||||
*/
|
||||
private String fylx;
|
||||
|
||||
/**
|
||||
* 报销金额
|
||||
*/
|
||||
private BigDecimal bxje;
|
||||
|
||||
/**
|
||||
* 增值税税额
|
||||
*/
|
||||
private BigDecimal zzsse;
|
||||
|
||||
/**
|
||||
* 用途
|
||||
*/
|
||||
private String yt;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long xm;
|
||||
|
||||
/**
|
||||
* 发生日期
|
||||
*/
|
||||
private LocalDate fsrq;
|
||||
|
||||
/**
|
||||
* 单据张数
|
||||
*/
|
||||
private Long djzs;
|
||||
|
||||
/**
|
||||
* 费用承担组织
|
||||
*/
|
||||
private String fycdzz;
|
||||
|
||||
/**
|
||||
* 费用承担部门
|
||||
*/
|
||||
private Long fycdbm;
|
||||
|
||||
/**
|
||||
* wbs
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* cbs
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,102 @@
|
||||
package org.dromara.xzd.bx.bxsq.fymx.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.XzdBxBxsqFymx;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 报销申请-费用明细业务对象 xzd_bx_bxsq_fymx
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdBxBxsqFymx.class, reverseConvertGenerate = false)
|
||||
public class XzdBxBxsqFymxBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报销关联id
|
||||
*/
|
||||
private Long bxId;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 费用类型(1农产品2旅客运输)
|
||||
*/
|
||||
@NotBlank(message = "费用类型(1农产品2旅客运输)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String fylx;
|
||||
|
||||
/**
|
||||
* 报销金额
|
||||
*/
|
||||
@NotNull(message = "报销金额不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private BigDecimal bxje;
|
||||
|
||||
/**
|
||||
* 增值税税额
|
||||
*/
|
||||
private BigDecimal zzsse;
|
||||
|
||||
/**
|
||||
* 用途
|
||||
*/
|
||||
private String yt;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long xm;
|
||||
|
||||
/**
|
||||
* 发生日期
|
||||
*/
|
||||
@NotNull(message = "发生日期不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDate fsrq;
|
||||
|
||||
/**
|
||||
* 单据张数
|
||||
*/
|
||||
private Long djzs;
|
||||
|
||||
/**
|
||||
* 费用承担组织
|
||||
*/
|
||||
private String fycdzz;
|
||||
|
||||
/**
|
||||
* 费用承担部门
|
||||
*/
|
||||
private Long fycdbm;
|
||||
|
||||
/**
|
||||
* wbs
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* cbs
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,126 @@
|
||||
package org.dromara.xzd.bx.bxsq.fymx.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.XzdBxBxsqFymx;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
|
||||
/**
|
||||
* 报销申请-费用明细视图对象 xzd_bx_bxsq_fymx
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdBxBxsqFymx.class)
|
||||
public class XzdBxBxsqFymxVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@ExcelProperty(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报销关联id
|
||||
*/
|
||||
@ExcelProperty(value = "报销关联id")
|
||||
private Long bxId;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
@ExcelProperty(value = "部门")
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 费用类型
|
||||
*/
|
||||
@ExcelProperty(value = "费用类型")
|
||||
private String fylx;
|
||||
|
||||
/**
|
||||
* 报销金额
|
||||
*/
|
||||
@ExcelProperty(value = "报销金额")
|
||||
private BigDecimal bxje;
|
||||
|
||||
/**
|
||||
* 增值税税额
|
||||
*/
|
||||
@ExcelProperty(value = "增值税税额")
|
||||
private BigDecimal zzsse;
|
||||
|
||||
/**
|
||||
* 用途
|
||||
*/
|
||||
@ExcelProperty(value = "用途")
|
||||
private String yt;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@ExcelProperty(value = "项目id")
|
||||
private Long xm;
|
||||
|
||||
private String xmmc;
|
||||
|
||||
/**
|
||||
* 发生日期
|
||||
*/
|
||||
@ExcelProperty(value = "发生日期")
|
||||
private LocalDate fsrq;
|
||||
|
||||
/**
|
||||
* 单据张数
|
||||
*/
|
||||
@ExcelProperty(value = "单据张数")
|
||||
private Long djzs;
|
||||
|
||||
/**
|
||||
* 费用承担组织
|
||||
*/
|
||||
@ExcelProperty(value = "费用承担组织")
|
||||
private String fycdzz;
|
||||
|
||||
/**
|
||||
* 费用承担部门
|
||||
*/
|
||||
@ExcelProperty(value = "费用承担部门")
|
||||
private Long fycdbm;
|
||||
|
||||
/**
|
||||
* 费用承担部门名称
|
||||
*/
|
||||
private String fycdbmmc;
|
||||
|
||||
/**
|
||||
* wbs
|
||||
*/
|
||||
@ExcelProperty(value = "wbs")
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* cbs
|
||||
*/
|
||||
@ExcelProperty(value = "cbs")
|
||||
private String cbs;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.bx.bxsq.fymx.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.XzdBxBxsqFymx;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.vo.XzdBxBxsqFymxVo;
|
||||
|
||||
/**
|
||||
* 报销申请-费用明细Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
public interface XzdBxBxsqFymxMapper extends BaseMapperPlus<XzdBxBxsqFymx, XzdBxBxsqFymxVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.bx.bxsq.fymx.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.XzdBxBxsqFymx;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.bo.XzdBxBxsqFymxBo;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.vo.XzdBxBxsqFymxVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 报销申请-费用明细Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
public interface IXzdBxBxsqFymxService extends IService<XzdBxBxsqFymx>{
|
||||
|
||||
/**
|
||||
* 查询报销申请-费用明细
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 报销申请-费用明细
|
||||
*/
|
||||
XzdBxBxsqFymxVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询报销申请-费用明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 报销申请-费用明细分页列表
|
||||
*/
|
||||
TableDataInfo<XzdBxBxsqFymxVo> queryPageList(XzdBxBxsqFymxBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的报销申请-费用明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 报销申请-费用明细列表
|
||||
*/
|
||||
List<XzdBxBxsqFymxVo> queryList(XzdBxBxsqFymxBo bo);
|
||||
|
||||
/**
|
||||
* 新增报销申请-费用明细
|
||||
*
|
||||
* @param bo 报销申请-费用明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdBxBxsqFymxBo bo);
|
||||
|
||||
/**
|
||||
* 修改报销申请-费用明细
|
||||
*
|
||||
* @param bo 报销申请-费用明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdBxBxsqFymxBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除报销申请-费用明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,143 @@
|
||||
package org.dromara.xzd.bx.bxsq.fymx.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.XzdBxBxsqFymx;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.bo.XzdBxBxsqFymxBo;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.vo.XzdBxBxsqFymxVo;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.mapper.XzdBxBxsqFymxMapper;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.service.IXzdBxBxsqFymxService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 报销申请-费用明细Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdBxBxsqFymxServiceImpl extends ServiceImpl<XzdBxBxsqFymxMapper, XzdBxBxsqFymx> implements IXzdBxBxsqFymxService {
|
||||
|
||||
private final XzdBxBxsqFymxMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询报销申请-费用明细
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 报销申请-费用明细
|
||||
*/
|
||||
@Override
|
||||
public XzdBxBxsqFymxVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询报销申请-费用明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 报销申请-费用明细分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdBxBxsqFymxVo> queryPageList(XzdBxBxsqFymxBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdBxBxsqFymx> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdBxBxsqFymxVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的报销申请-费用明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 报销申请-费用明细列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdBxBxsqFymxVo> queryList(XzdBxBxsqFymxBo bo) {
|
||||
LambdaQueryWrapper<XzdBxBxsqFymx> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdBxBxsqFymx> buildQueryWrapper(XzdBxBxsqFymxBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdBxBxsqFymx> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdBxBxsqFymx::getId);
|
||||
lqw.eq(bo.getBxId() != null, XzdBxBxsqFymx::getBxId, bo.getBxId());
|
||||
lqw.eq(bo.getDeptId() != null, XzdBxBxsqFymx::getDeptId, bo.getDeptId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFylx()), XzdBxBxsqFymx::getFylx, bo.getFylx());
|
||||
lqw.eq(bo.getBxje() != null, XzdBxBxsqFymx::getBxje, bo.getBxje());
|
||||
lqw.eq(bo.getZzsse() != null, XzdBxBxsqFymx::getZzsse, bo.getZzsse());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getYt()), XzdBxBxsqFymx::getYt, bo.getYt());
|
||||
lqw.eq(bo.getXm() != null, XzdBxBxsqFymx::getXm, bo.getXm());
|
||||
lqw.eq(bo.getFsrq() != null, XzdBxBxsqFymx::getFsrq, bo.getFsrq());
|
||||
lqw.eq(bo.getDjzs() != null, XzdBxBxsqFymx::getDjzs, bo.getDjzs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFycdzz()), XzdBxBxsqFymx::getFycdzz, bo.getFycdzz());
|
||||
lqw.eq(bo.getFycdbm() != null, XzdBxBxsqFymx::getFycdbm, bo.getFycdbm());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdBxBxsqFymx::getWbs, bo.getWbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), XzdBxBxsqFymx::getCbs, bo.getCbs());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增报销申请-费用明细
|
||||
*
|
||||
* @param bo 报销申请-费用明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdBxBxsqFymxBo bo) {
|
||||
XzdBxBxsqFymx add = MapstructUtils.convert(bo, XzdBxBxsqFymx.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报销申请-费用明细
|
||||
*
|
||||
* @param bo 报销申请-费用明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdBxBxsqFymxBo bo) {
|
||||
XzdBxBxsqFymx update = MapstructUtils.convert(bo, XzdBxBxsqFymx.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdBxBxsqFymx entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除报销申请-费用明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.bx.bxsq.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xzd.bx.bxsq.domain.XzdBxBxsq;
|
||||
import org.dromara.xzd.bx.bxsq.domain.vo.XzdBxBxsqVo;
|
||||
|
||||
/**
|
||||
* 报销-报销申请Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
public interface XzdBxBxsqMapper extends BaseMapperPlus<XzdBxBxsq, XzdBxBxsqVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.bx.bxsq.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xzd.bx.bxsq.domain.XzdBxBxsq;
|
||||
import org.dromara.xzd.bx.bxsq.domain.bo.XzdBxBxsqBo;
|
||||
import org.dromara.xzd.bx.bxsq.domain.vo.XzdBxBxsqVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 报销-报销申请Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
public interface IXzdBxBxsqService extends IService<XzdBxBxsq>{
|
||||
|
||||
/**
|
||||
* 查询报销-报销申请
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 报销-报销申请
|
||||
*/
|
||||
XzdBxBxsqVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询报销-报销申请列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 报销-报销申请分页列表
|
||||
*/
|
||||
TableDataInfo<XzdBxBxsqVo> queryPageList(XzdBxBxsqBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的报销-报销申请列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 报销-报销申请列表
|
||||
*/
|
||||
List<XzdBxBxsqVo> queryList(XzdBxBxsqBo bo);
|
||||
|
||||
/**
|
||||
* 新增报销-报销申请
|
||||
*
|
||||
* @param bo 报销-报销申请
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdBxBxsqBo bo);
|
||||
|
||||
/**
|
||||
* 修改报销-报销申请
|
||||
*
|
||||
* @param bo 报销-报销申请
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdBxBxsqBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除报销-报销申请信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,373 @@
|
||||
package org.dromara.xzd.bx.bxsq.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
|
||||
import org.dromara.common.core.domain.event.ProcessEvent;
|
||||
import org.dromara.common.core.domain.event.ProcessTaskEvent;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.utils.BatchNumberGenerator;
|
||||
import org.dromara.system.domain.vo.SysDeptVo;
|
||||
import org.dromara.system.domain.vo.SysUserVo;
|
||||
import org.dromara.system.service.impl.SysDeptServiceImpl;
|
||||
import org.dromara.system.service.impl.SysUserServiceImpl;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.domain.vo.XzdBxBxsqBxlxVo;
|
||||
import org.dromara.xzd.bx.bxsq.bxlx.service.impl.XzdBxBxsqBxlxServiceImpl;
|
||||
import org.dromara.xzd.bx.bxsq.domain.XzdBxBxsq;
|
||||
import org.dromara.xzd.bx.bxsq.domain.bo.XzdBxBxsqBo;
|
||||
import org.dromara.xzd.bx.bxsq.domain.vo.XzdBxBxsqVo;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.XzdBxBxsqFymx;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.domain.vo.XzdBxBxsqFymxVo;
|
||||
import org.dromara.xzd.bx.bxsq.fymx.service.impl.XzdBxBxsqFymxServiceImpl;
|
||||
import org.dromara.xzd.bx.bxsq.mapper.XzdBxBxsqMapper;
|
||||
import org.dromara.xzd.bx.bxsq.service.IXzdBxBxsqService;
|
||||
import org.dromara.xzd.domain.XzdProject;
|
||||
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 报销-报销申请Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-11-04
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
@Slf4j
|
||||
public class XzdBxBxsqServiceImpl extends ServiceImpl<XzdBxBxsqMapper, XzdBxBxsq> implements IXzdBxBxsqService {
|
||||
|
||||
private final XzdBxBxsqMapper baseMapper;
|
||||
@Autowired
|
||||
private XzdBxBxsqFymxServiceImpl xzdBxBxsqFymxService;
|
||||
@Autowired
|
||||
private SysDeptServiceImpl sysDeptService;
|
||||
@Autowired
|
||||
private XzdProjectServiceImpl xzdProjectService;
|
||||
@Autowired
|
||||
private XzdBxBxsqBxlxServiceImpl xzdBxBxsqBxlxService;
|
||||
@Autowired
|
||||
private SysUserServiceImpl sysUserService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询报销-报销申请
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 报销-报销申请
|
||||
*/
|
||||
@Override
|
||||
public XzdBxBxsqVo queryById(Long id){
|
||||
XzdBxBxsqVo xzdBxBxsqVo = baseMapper.selectVoById(id);
|
||||
List<XzdBxBxsqVo> xzdBxBxsqVo1 = List.of(xzdBxBxsqVo);
|
||||
setValue(xzdBxBxsqVo1);
|
||||
return xzdBxBxsqVo1.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询报销-报销申请列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 报销-报销申请分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdBxBxsqVo> queryPageList(XzdBxBxsqBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdBxBxsq> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdBxBxsqVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
setValue(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的报销-报销申请列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 报销-报销申请列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdBxBxsqVo> queryList(XzdBxBxsqBo bo) {
|
||||
LambdaQueryWrapper<XzdBxBxsq> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdBxBxsq> buildQueryWrapper(XzdBxBxsqBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdBxBxsq> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdBxBxsq::getId);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getShzt()), XzdBxBxsq::getShzt, bo.getShzt());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDjbm()), XzdBxBxsq::getDjbm, bo.getDjbm());
|
||||
lqw.eq(bo.getSqrq() != null, XzdBxBxsq::getSqrq, bo.getSqrq());
|
||||
lqw.eq(bo.getBxr() != null, XzdBxBxsq::getBxr, bo.getBxr());
|
||||
lqw.eq(bo.getGs() != null, XzdBxBxsq::getGs, bo.getGs());
|
||||
lqw.eq(bo.getBm() != null, XzdBxBxsq::getBm, bo.getBm());
|
||||
lqw.eq(bo.getXm() != null, XzdBxBxsq::getXm, bo.getXm());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getJzzz()), XzdBxBxsq::getJzzz, bo.getJzzz());
|
||||
lqw.eq(bo.getBxlx() != null, XzdBxBxsq::getBxlx, bo.getBxlx());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSy()), XzdBxBxsq::getSy, bo.getSy());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getYslx()), XzdBxBxsq::getYslx, bo.getYslx());
|
||||
lqw.eq(bo.getBcbxje() != null, XzdBxBxsq::getBcbxje, bo.getBcbxje());
|
||||
lqw.eq(bo.getJkzye() != null, XzdBxBxsq::getJkzye, bo.getJkzye());
|
||||
lqw.eq(bo.getCxje() != null, XzdBxBxsq::getCxje, bo.getCxje());
|
||||
lqw.eq(bo.getSlje() != null, XzdBxBxsq::getSlje, bo.getSlje());
|
||||
lqw.eq(bo.getHkje() != null, XzdBxBxsq::getHkje, bo.getHkje());
|
||||
lqw.eq(bo.getSpje() != null, XzdBxBxsq::getSpje, bo.getSpje());
|
||||
lqw.eq(bo.getZzsse() != null, XzdBxBxsq::getZzsse, bo.getZzsse());
|
||||
lqw.eq(bo.getNcpse() != null, XzdBxBxsq::getNcpse, bo.getNcpse());
|
||||
lqw.eq(bo.getLkysse() != null, XzdBxBxsq::getLkysse, bo.getLkysse());
|
||||
lqw.eq(bo.getGsfkje() != null, XzdBxBxsq::getGsfkje, bo.getGsfkje());
|
||||
lqw.eq(bo.getWfje() != null, XzdBxBxsq::getWfje, bo.getWfje());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getXmlx()), XzdBxBxsq::getXmlx, bo.getXmlx());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getXmdl()), XzdBxBxsq::getXmdl, bo.getXmdl());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增报销-报销申请
|
||||
*
|
||||
* @param bo 报销-报销申请
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Transactional
|
||||
@Override
|
||||
public Boolean insertByBo(XzdBxBxsqBo bo) {
|
||||
XzdBxBxsq add = MapstructUtils.convert(bo, XzdBxBxsq.class);
|
||||
validEntityBeforeSave(add);
|
||||
String banBen = BatchNumberGenerator.generateBatchNumber("BXSQ-");
|
||||
|
||||
add.setBxr(LoginHelper.getUserId());
|
||||
add.setDjbm(banBen);
|
||||
add.setBm(LoginHelper.getDeptId());
|
||||
//公司
|
||||
SysDeptVo sysDeptVo = sysDeptService.selectDeptById(LoginHelper.getDeptId());
|
||||
if (sysDeptVo != null && !sysDeptVo.getParentId().equals(100L)){
|
||||
SysDeptVo sysDeptVo1 = getCompanyByDeptId(sysDeptVo);
|
||||
if (sysDeptVo1 != null) {
|
||||
add.setGs(sysDeptVo1.getDeptId());
|
||||
}
|
||||
}else if ((sysDeptVo != null && sysDeptVo.getParentId().equals(100L)) || (sysDeptVo != null && sysDeptVo.getDeptId() == 100L)){
|
||||
add.setGs(sysDeptVo.getDeptId());
|
||||
}
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
|
||||
if (bo.getFymx() != null && !bo.getFymx().isEmpty()){
|
||||
for (XzdBxBxsqFymx fymx : bo.getFymx()) {
|
||||
fymx.setBxId(add.getId());
|
||||
}
|
||||
xzdBxBxsqFymxService.saveBatch(bo.getFymx());
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报销-报销申请
|
||||
*
|
||||
* @param bo 报销-报销申请
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Transactional
|
||||
@Override
|
||||
public Boolean updateByBo(XzdBxBxsqBo bo) {
|
||||
XzdBxBxsq update = MapstructUtils.convert(bo, XzdBxBxsq.class);
|
||||
validEntityBeforeSave(update);
|
||||
|
||||
XzdBxBxsqVo old = queryById(bo.getId());
|
||||
//合同文本-预收款项
|
||||
if (bo.getFymx() != null && !bo.getFymx().isEmpty()){
|
||||
if (old.getFymx() != null && !old.getFymx().isEmpty()){
|
||||
xzdBxBxsqFymxService.removeByIds(old.getFymx());
|
||||
}
|
||||
for (XzdBxBxsqFymx businessChange : bo.getFymx()) {
|
||||
businessChange.setBxId(update.getId());
|
||||
}
|
||||
xzdBxBxsqFymxService.saveBatch(bo.getFymx());
|
||||
}else {
|
||||
if (old.getFymx() != null && !old.getFymx().isEmpty()){
|
||||
xzdBxBxsqFymxService.removeByIds(old.getFymx());
|
||||
}
|
||||
}
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdBxBxsq entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除报销-报销申请信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<XzdBxBxsqFymx> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.in(XzdBxBxsqFymx::getBxId, ids);
|
||||
xzdBxBxsqFymxService.remove(lqw);
|
||||
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
public void setValue(List<XzdBxBxsqVo> vos){
|
||||
for (XzdBxBxsqVo vo : vos) {
|
||||
//费用明细
|
||||
LambdaQueryWrapper<XzdBxBxsqFymx> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.eq(XzdBxBxsqFymx::getBxId, vo.getId());
|
||||
List<XzdBxBxsqFymx> list = xzdBxBxsqFymxService.list(lqw);
|
||||
//费用明细处理
|
||||
List<XzdBxBxsqFymxVo> voList = new ArrayList<>();
|
||||
if (list != null && !list.isEmpty()){
|
||||
for (XzdBxBxsqFymx fymx : list) {
|
||||
XzdBxBxsqFymxVo fymxVo = new XzdBxBxsqFymxVo();
|
||||
BeanUtils.copyProperties(fymx, fymxVo);
|
||||
//部门
|
||||
if (fymx.getDeptId() != null) {
|
||||
SysDeptVo sysDeptVo = sysDeptService.selectDeptById(fymx.getDeptId());
|
||||
if (sysDeptVo != null) {
|
||||
fymxVo.setDeptName(sysDeptVo.getDeptName());
|
||||
}
|
||||
}
|
||||
//项目
|
||||
if (fymx.getXm() != null) {
|
||||
XzdProject xzdProjectVo = xzdProjectService.getById(fymx.getXm());
|
||||
if (xzdProjectVo != null) {
|
||||
fymxVo.setXmmc(xzdProjectVo.getProjectName());
|
||||
}
|
||||
}
|
||||
//费用承担部门
|
||||
if (fymx.getFycdbm() != null){
|
||||
SysDeptVo sysDeptVo = sysDeptService.selectDeptById(fymx.getFycdbm());
|
||||
if (sysDeptVo != null) {
|
||||
fymxVo.setFycdbmmc(sysDeptVo.getDeptName());
|
||||
}
|
||||
}
|
||||
voList.add(fymxVo);
|
||||
}
|
||||
vo.setFymx(voList);
|
||||
}
|
||||
//报销人名称
|
||||
if (vo.getBxr() != null){
|
||||
SysUserVo sysUserVo = sysUserService.selectUserById(vo.getBxr());
|
||||
if (sysUserVo != null){
|
||||
vo.setBxrmc(sysUserVo.getNickName());
|
||||
}
|
||||
}
|
||||
//报销人公司
|
||||
if (vo.getGs() != null) {
|
||||
SysDeptVo sysDeptVo = sysDeptService.selectDeptById(vo.getGs());
|
||||
if (sysDeptVo != null) {
|
||||
vo.setGsmc(sysDeptVo.getDeptName());
|
||||
}
|
||||
}
|
||||
//部门
|
||||
if (vo.getBm() != null) {
|
||||
SysDeptVo bm = sysDeptService.selectDeptById(vo.getBm());
|
||||
if (bm != null) {
|
||||
vo.setBmmc(bm.getDeptName());
|
||||
}
|
||||
}
|
||||
//项目
|
||||
if (vo.getXm() != null) {
|
||||
XzdProject byId = xzdProjectService.getById(vo.getXm());
|
||||
if (byId != null) {
|
||||
vo.setXmmc(byId.getProjectName());
|
||||
}
|
||||
}
|
||||
//报销类型
|
||||
if (vo.getBxlx() != null) {
|
||||
XzdBxBxsqBxlxVo bxsqBxlxVo = xzdBxBxsqBxlxService.queryById(vo.getBxlx());
|
||||
if (bxsqBxlxVo != null) {
|
||||
vo.setBxlxmc(bxsqBxlxVo.getLxmc());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//通过部门查询出公司
|
||||
private SysDeptVo getCompanyByDeptId(SysDeptVo deptVo){
|
||||
if (!deptVo.getParentId().equals(100L)){
|
||||
SysDeptVo sysDeptVo = sysDeptService.selectDeptById(deptVo.getParentId());
|
||||
if (sysDeptVo == null){
|
||||
return null;
|
||||
}
|
||||
getCompanyByDeptId(sysDeptVo);
|
||||
}
|
||||
return deptVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
|
||||
* 正常使用只需#processEvent.flowCode=='leave1'
|
||||
* 示例为了方便则使用startsWith匹配了全部示例key
|
||||
*
|
||||
* @param processEvent 参数
|
||||
*/
|
||||
@EventListener(condition = "#processEvent.flowCode.endsWith('XzdBxBxsq')")
|
||||
@Transactional
|
||||
public void processPlansHandler(ProcessEvent processEvent) {
|
||||
log.info("报销申请审核任务执行了{}", processEvent.toString());
|
||||
String id = processEvent.getBusinessId();
|
||||
XzdBxBxsq byId = this.getById(Long.valueOf(id));
|
||||
byId.setShzt(processEvent.getStatus());
|
||||
boolean b = this.updateById(byId);
|
||||
if (!b) {
|
||||
log.error("报销申请审核任务更新状态失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行任务创建监听
|
||||
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
|
||||
* 在方法中判断流程节点key
|
||||
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
|
||||
* //执行业务逻辑
|
||||
* }
|
||||
*
|
||||
* @param processTaskEvent 参数
|
||||
*/
|
||||
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('XzdBxBxsq')")
|
||||
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
|
||||
log.info("报销申请审核任务创建了{}", processTaskEvent.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听删除流程事件
|
||||
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
|
||||
* 示例为了方便则使用startsWith匹配了全部示例key
|
||||
*
|
||||
* @param processDeleteEvent 参数
|
||||
*/
|
||||
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('XzdBxBxsq')")
|
||||
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
|
||||
log.info("报销申请计划删除流程事件{}", processDeleteEvent.toString());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user