项目成本分析模块后端代码完成
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
package com.ruoyi.oa.controller;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostAllVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostRow;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.validate.AddGroup;
|
||||
import com.ruoyi.common.core.validate.EditGroup;
|
||||
import com.ruoyi.common.core.validate.QueryGroup;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostVo;
|
||||
import com.ruoyi.oa.domain.bo.SysOaCostBo;
|
||||
import com.ruoyi.oa.service.ISysOaCostService;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 项目成本分析
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/oa/cost")
|
||||
public class SysOaCostController extends BaseController {
|
||||
|
||||
private final ISysOaCostService iSysOaCostService;
|
||||
|
||||
/**
|
||||
* 查询项目成本分析列表
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:list")
|
||||
@GetMapping("/list1")
|
||||
public TableDataInfo<SysOaCostVo> list1(SysOaCostBo bo, PageQuery pageQuery) {
|
||||
return iSysOaCostService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出项目成本分析列表
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:export")
|
||||
@Log(title = "项目成本分析", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(SysOaCostBo bo, HttpServletResponse response) {
|
||||
List<SysOaCostVo> list = iSysOaCostService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "项目成本分析", SysOaCostVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目成本分析详细信息
|
||||
*
|
||||
* @param costId 主键
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:query")
|
||||
@GetMapping("/old/{costId}")
|
||||
public R<SysOaCostVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long costId) {
|
||||
return R.ok(iSysOaCostService.queryById(costId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目成本分析
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:add")
|
||||
@Log(title = "项目成本分析", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add1(@Validated(AddGroup.class) @RequestBody SysOaCostBo bo) {
|
||||
return toAjax(iSysOaCostService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目成本分析
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:edit")
|
||||
@Log(title = "项目成本分析", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysOaCostBo bo) {
|
||||
return toAjax(iSysOaCostService.updateByBo(bo));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询所有项目成本
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<SysOaCostAllVo> AllList(@RequestParam(required = false) String projectName, @RequestParam(required = false)String createTime) {
|
||||
return iSysOaCostService.AllList(projectName, createTime);
|
||||
}
|
||||
/**
|
||||
* 查询详情
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:list")
|
||||
@GetMapping("/{projectId}")
|
||||
public TableDataInfo<SysOaCostRow> getDetail(@NotNull(message = "项目id不能为空")
|
||||
@PathVariable Long projectId) {
|
||||
return iSysOaCostService.getDetail(projectId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增成本
|
||||
*/
|
||||
@SaCheckPermission("oa:oaCost:add")
|
||||
@Log(title = "项目成本分析", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/add")
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody SysOaCostBo bo) {
|
||||
return toAjax(iSysOaCostService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目成本分析
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("oa:cost:remove")
|
||||
@Log(title = "项目成本分析", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(iSysOaCostService.deleteWithValidByIds(Arrays.asList(ids), true));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
68
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaCost.java
Normal file
68
ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaCost.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package com.ruoyi.oa.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* 项目成本分析对象 sys_oa_cost
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("sys_oa_cost")
|
||||
public class SysOaCost extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "cost_id")
|
||||
private Long costId;
|
||||
/**
|
||||
* 绑定项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
/**
|
||||
* 花费
|
||||
*/
|
||||
private Double cost;
|
||||
/**
|
||||
* 花费类型,字典查询
|
||||
*/
|
||||
private Integer costType;
|
||||
/**
|
||||
* 花费备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 删除标志
|
||||
*/
|
||||
@TableLogic
|
||||
private Long delFlag;
|
||||
/**
|
||||
* 若为物料花费需要绑定物料id
|
||||
*/
|
||||
private Long materialId;
|
||||
/**
|
||||
* 若为人工花费则绑定用户id
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 绑定财政收支id
|
||||
*/
|
||||
private Long financeId;
|
||||
/**
|
||||
* 若为差旅报销绑定差旅id
|
||||
*/
|
||||
private Long claimId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.ruoyi.oa.domain.bo;
|
||||
|
||||
import com.ruoyi.common.core.validate.AddGroup;
|
||||
import com.ruoyi.common.core.validate.EditGroup;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* 项目成本分析业务对象 sys_oa_cost
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SysOaCostBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long costId;
|
||||
|
||||
/**
|
||||
* 绑定项目id
|
||||
*/
|
||||
@NotNull(message = "绑定项目id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 花费
|
||||
*/
|
||||
@NotNull(message = "花费不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Double cost;
|
||||
|
||||
/**
|
||||
* 花费类型,字典查询
|
||||
*/
|
||||
@NotNull(message = "花费类型,字典查询不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer costType;
|
||||
|
||||
/**
|
||||
* 花费备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 若为物料花费需要绑定物料id
|
||||
*/
|
||||
private Long materialId;
|
||||
|
||||
/**
|
||||
* 若为人工花费则绑定用户id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 绑定财政收支id
|
||||
*/
|
||||
private Long financeId;
|
||||
|
||||
/**
|
||||
* 若为差旅报销绑定差旅id
|
||||
*/
|
||||
private Long claimId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.ruoyi.oa.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 查询所有项目成本 返回对象
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class SysOaCostAll {
|
||||
|
||||
private Long projectId;
|
||||
|
||||
private String projectName;
|
||||
|
||||
private Double cost;
|
||||
|
||||
private Integer costType;
|
||||
|
||||
private String remark;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
|
||||
private Date createTime;
|
||||
|
||||
private Long materialId;
|
||||
|
||||
private Long userId;
|
||||
|
||||
private Long financeId;
|
||||
|
||||
private Long claimId;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.ruoyi.oa.domain.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 查询所有项目成本 返回对象
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class SysOaCostAllVo {
|
||||
|
||||
private Long projectId;
|
||||
|
||||
private String projectName;
|
||||
|
||||
private Double cost;
|
||||
|
||||
private Integer costType;
|
||||
|
||||
private String remark;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
|
||||
private Date createTime;
|
||||
|
||||
private Long materialId;
|
||||
|
||||
private Object materialVo;
|
||||
|
||||
private Long userId;
|
||||
|
||||
private Object userVo;
|
||||
|
||||
private Long claimId;
|
||||
|
||||
private Object claimVo;
|
||||
|
||||
private Long financeId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.ruoyi.oa.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SysOaCostList {
|
||||
private Long costId;
|
||||
private Double cost;
|
||||
private Long userId;
|
||||
private Object userVo;
|
||||
private Long materialId;
|
||||
private Object materialVo;
|
||||
private Long claimId;
|
||||
private Object claimVo;
|
||||
private Integer costType;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.ruoyi.oa.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SysOaCostRow {
|
||||
List<SysOaCostList> userCostList;
|
||||
List<SysOaCostList> materialList;
|
||||
List<SysOaCostList> claimList;
|
||||
List<SysOaCostList> otherList;
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.ruoyi.oa.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.ruoyi.common.annotation.ExcelDictFormat;
|
||||
import com.ruoyi.common.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 项目成本分析视图对象 sys_oa_cost
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class SysOaCostVo {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@ExcelProperty(value = "主键id")
|
||||
private Long costId;
|
||||
|
||||
/**
|
||||
* 绑定项目id
|
||||
*/
|
||||
@ExcelProperty(value = "绑定项目id")
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 花费
|
||||
*/
|
||||
@ExcelProperty(value = "花费")
|
||||
private Double cost;
|
||||
|
||||
/**
|
||||
* 花费类型,字典查询
|
||||
*/
|
||||
@ExcelProperty(value = "花费类型,字典查询", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "project_cost_type")
|
||||
private Integer costType;
|
||||
|
||||
/**
|
||||
* 花费备注
|
||||
*/
|
||||
@ExcelProperty(value = "花费备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 若为物料花费需要绑定物料id
|
||||
*/
|
||||
@ExcelProperty(value = "若为物料花费需要绑定物料id")
|
||||
private Long materialId;
|
||||
|
||||
/**
|
||||
* 若为人工花费则绑定用户id
|
||||
*/
|
||||
@ExcelProperty(value = "若为人工花费则绑定用户id")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 绑定财政收支id
|
||||
*/
|
||||
@ExcelProperty(value = "绑定财政收支id")
|
||||
private Long financeId;
|
||||
|
||||
/**
|
||||
* 若为差旅报销绑定差旅id
|
||||
*/
|
||||
@ExcelProperty(value = "若为差旅报销绑定差旅id")
|
||||
private Long claimId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ruoyi.oa.mapper;
|
||||
|
||||
import com.ruoyi.oa.domain.SysOaCost;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostAll;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostAllVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostVo;
|
||||
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目成本分析Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
public interface SysOaCostMapper extends BaseMapperPlus<SysOaCostMapper, SysOaCost, SysOaCostVo> {
|
||||
|
||||
|
||||
/**
|
||||
* 查询所有项目成本
|
||||
*/
|
||||
List<SysOaCostAll> AllList(@Param(value = "projectName") String projectName, @Param(value = "createTime") String createTime);
|
||||
|
||||
|
||||
List<SysOaCost> getListByProjectId(Long projectId);
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.ruoyi.oa.service;
|
||||
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostAllVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostRow;
|
||||
import com.ruoyi.oa.domain.vo.SysOaCostVo;
|
||||
import com.ruoyi.oa.domain.bo.SysOaCostBo;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目成本分析Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
public interface ISysOaCostService {
|
||||
|
||||
/**
|
||||
* 查询项目成本分析
|
||||
*/
|
||||
SysOaCostVo queryById(Long costId);
|
||||
|
||||
/**
|
||||
* 查询项目成本分析列表
|
||||
*/
|
||||
TableDataInfo<SysOaCostVo> queryPageList(SysOaCostBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询项目成本分析列表
|
||||
*/
|
||||
List<SysOaCostVo> queryList(SysOaCostBo bo);
|
||||
|
||||
/**
|
||||
* 新增项目成本分析
|
||||
*/
|
||||
Boolean insertByBo(SysOaCostBo bo);
|
||||
|
||||
/**
|
||||
* 修改项目成本分析
|
||||
*/
|
||||
Boolean updateByBo(SysOaCostBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除项目成本分析信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 查询所有项目成本
|
||||
*/
|
||||
TableDataInfo<SysOaCostAllVo> AllList(String projectName, String createTime);
|
||||
|
||||
/**
|
||||
* 查询详情
|
||||
*/
|
||||
TableDataInfo<SysOaCostRow> getDetail(Long projectId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,212 @@
|
||||
package com.ruoyi.oa.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.oa.domain.SysOaProject;
|
||||
import com.ruoyi.oa.domain.vo.*;
|
||||
import com.ruoyi.oa.mapper.*;
|
||||
import com.ruoyi.system.mapper.SysUserMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.SysOaCostBo;
|
||||
import com.ruoyi.oa.domain.SysOaCost;
|
||||
import com.ruoyi.oa.service.ISysOaCostService;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 项目成本分析Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SysOaCostServiceImpl implements ISysOaCostService {
|
||||
|
||||
private final SysOaCostMapper baseMapper;
|
||||
|
||||
private final SysUserMapper userMapper;
|
||||
|
||||
private final SysOaClaimMapper claimMapper;
|
||||
|
||||
private final SysOaWarehouseMapper warehouseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 查询项目成本分析
|
||||
*/
|
||||
@Override
|
||||
public SysOaCostVo queryById(Long costId){
|
||||
return baseMapper.selectVoById(costId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目成本分析列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<SysOaCostVo> queryPageList(SysOaCostBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<SysOaCost> lqw = buildQueryWrapper(bo);
|
||||
Page<SysOaCostVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目成本分析列表
|
||||
*/
|
||||
@Override
|
||||
public List<SysOaCostVo> queryList(SysOaCostBo bo) {
|
||||
LambdaQueryWrapper<SysOaCost> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<SysOaCost> buildQueryWrapper(SysOaCostBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<SysOaCost> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getProjectId() != null, SysOaCost::getProjectId, bo.getProjectId());
|
||||
lqw.eq(bo.getCost() != null, SysOaCost::getCost, bo.getCost());
|
||||
lqw.eq(bo.getCostType() != null, SysOaCost::getCostType, bo.getCostType());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getRemark()), SysOaCost::getRemark, bo.getRemark());
|
||||
lqw.eq(bo.getMaterialId() != null, SysOaCost::getMaterialId, bo.getMaterialId());
|
||||
lqw.eq(bo.getUserId() != null, SysOaCost::getUserId, bo.getUserId());
|
||||
lqw.eq(bo.getFinanceId() != null, SysOaCost::getFinanceId, bo.getFinanceId());
|
||||
lqw.eq(bo.getClaimId() != null, SysOaCost::getClaimId, bo.getClaimId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目成本分析
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(SysOaCostBo bo) {
|
||||
SysOaCost add = BeanUtil.toBean(bo, SysOaCost.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setCostId(add.getCostId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目成本分析
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(SysOaCostBo bo) {
|
||||
SysOaCost update = BeanUtil.toBean(bo, SysOaCost.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(SysOaCost entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 批量删除项目成本分析
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有项目成本
|
||||
*/
|
||||
|
||||
@Override
|
||||
public TableDataInfo<SysOaCostAllVo> AllList(String projectName, String createTime) {
|
||||
|
||||
List<SysOaCostAll> alls = baseMapper.AllList(projectName,createTime);
|
||||
List<SysOaCostAllVo> allVos = new java.util.ArrayList<>(Collections.emptyList());
|
||||
if (alls.isEmpty()) return TableDataInfo.build(allVos);
|
||||
for (SysOaCostAll all : alls) {
|
||||
SysOaCostAllVo allVo = BeanUtil.toBean(all, SysOaCostAllVo.class);
|
||||
|
||||
// 车间用工
|
||||
if (allVo.getCostType() == 1) {
|
||||
allVo.setUserVo(userMapper.selectUserById(allVo.getUserId()));
|
||||
} else if (allVo.getCostType() == 2) { // 差旅花费
|
||||
allVo.setClaimVo(claimMapper.selectSysOaClaimVoById(allVo.getClaimId()));
|
||||
|
||||
} else if (allVo.getCostType() == 3) { // 库房物料
|
||||
allVo.setMaterialVo(warehouseMapper.selectVoById(allVo.getMaterialId()));
|
||||
|
||||
} else if (allVo.getCostType() == 4) { // 其他
|
||||
|
||||
|
||||
} else if (allVo.getCostType() == 5) { // 接待
|
||||
|
||||
}
|
||||
allVos.add(allVo);
|
||||
}
|
||||
return TableDataInfo.build(allVos);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询详情
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<SysOaCostRow> getDetail(Long projectId) {
|
||||
log.info("查询projectId = {}", projectId);
|
||||
// LambdaQueryWrapper<SysOaCost> lqw = Wrappers.lambdaQuery(SysOaCost.class);
|
||||
// lqw.eq(SysOaCost::getProjectId,projectId);
|
||||
// List<SysOaCost> costs = baseMapper.selectList(lqw);
|
||||
List<SysOaCost> costs = baseMapper.getListByProjectId(projectId);
|
||||
log.info("查询costs = {}", costs);
|
||||
|
||||
if (costs.isEmpty()) {
|
||||
return TableDataInfo.build();
|
||||
}
|
||||
SysOaCostRow sysOaCostRow = new SysOaCostRow();
|
||||
sysOaCostRow.setUserCostList(new ArrayList<>());
|
||||
sysOaCostRow.setMaterialList(new ArrayList<>());
|
||||
sysOaCostRow.setClaimList(new ArrayList<>());
|
||||
sysOaCostRow.setOtherList(new ArrayList<>());
|
||||
for(SysOaCost cost : costs) {
|
||||
SysOaCostList sysOaCostList = BeanUtil.toBean(cost,SysOaCostList.class);
|
||||
log.info("查询cost = {}", cost);
|
||||
log.info("sysOaCostList = {}", sysOaCostList);
|
||||
|
||||
if(cost.getCostType() == 1) {
|
||||
log.info("查询useVo = {}", userMapper.selectUserById(cost.getUserId()));
|
||||
sysOaCostList.setUserVo(userMapper.selectUserById(cost.getUserId()));
|
||||
sysOaCostRow.getUserCostList().add(sysOaCostList);
|
||||
} else if(cost.getCostType() == 2) {
|
||||
log.info("查询claimMapperVo = {}", claimMapper.selectSysOaClaimVoById(cost.getClaimId()));
|
||||
sysOaCostList.setClaimVo(claimMapper.selectSysOaClaimVoById(cost.getClaimId()));
|
||||
sysOaCostRow.getClaimList().add(sysOaCostList);
|
||||
} else if(cost.getCostType() == 3) {
|
||||
log.info("查询warehouseMapperVo = {}",warehouseMapper.selectVoById(cost.getMaterialId()));
|
||||
sysOaCostList.setMaterialVo(warehouseMapper.selectVoById(cost.getMaterialId()));
|
||||
sysOaCostRow.getMaterialList().add(sysOaCostList);
|
||||
} else{
|
||||
sysOaCostRow.getOtherList().add(sysOaCostList);
|
||||
}
|
||||
|
||||
}
|
||||
log.info("sysOaCostRow = {}", sysOaCostRow);
|
||||
List<SysOaCostRow> rows = new java.util.ArrayList<>(Collections.singletonList(sysOaCostRow));
|
||||
return TableDataInfo.build(rows);
|
||||
|
||||
}
|
||||
}
|
||||
44
ruoyi-oa/src/main/resources/mapper/oa/SysOaCostMapper.xml
Normal file
44
ruoyi-oa/src/main/resources/mapper/oa/SysOaCostMapper.xml
Normal file
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.oa.mapper.SysOaCostMapper">
|
||||
|
||||
<resultMap type="com.ruoyi.oa.domain.SysOaCost" id="SysOaCostResult">
|
||||
<result property="costId" column="cost_id"/>
|
||||
<result property="projectId" column="project_id"/>
|
||||
<result property="cost" column="cost"/>
|
||||
<result property="costType" column="cost_type"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="materialId" column="material_id"/>
|
||||
<result property="userId" column="user_id"/>
|
||||
<result property="financeId" column="finance_id"/>
|
||||
<result property="claimId" column="claim_id"/>
|
||||
</resultMap>
|
||||
<select id="AllList" resultType="com.ruoyi.oa.domain.vo.SysOaCostAll">
|
||||
select op.project_id,op.project_name, cost, cost_type, oc.remark, oc.create_time, material_id, user_id, finance_id, claim_id
|
||||
from sys_oa_cost oc
|
||||
left join sys_oa_project op on oc.project_id = op.project_id
|
||||
<where>
|
||||
<if test="projectName != null and projectName != ''">
|
||||
and op.project_name like concat('%',#{projectName},'%')
|
||||
</if>
|
||||
<if test="createTime != null and createTime != '' ">
|
||||
and oc.create_time like STR_TO_DATE(#{createTime}, '%Y-%m')
|
||||
</if>
|
||||
and del_flag is null
|
||||
</where>
|
||||
order by oc.update_time desc
|
||||
|
||||
</select>
|
||||
<select id="getListByProjectId" resultType="com.ruoyi.oa.domain.SysOaCost">
|
||||
select * from sys_oa_cost where project_id = #{projectId} and del_flag is null
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user