diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaCostController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaCostController.java new file mode 100644 index 0000000..92dd0be --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaCostController.java @@ -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 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 list = iSysOaCostService.queryList(bo); + ExcelUtil.exportExcel(list, "项目成本分析", SysOaCostVo.class, response); + } + + /** + * 获取项目成本分析详细信息 + * + * @param costId 主键 + */ + @SaCheckPermission("oa:oaCost:query") + @GetMapping("/old/{costId}") + public R 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 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 edit(@Validated(EditGroup.class) @RequestBody SysOaCostBo bo) { + return toAjax(iSysOaCostService.updateByBo(bo)); + } + + + + /** + * 查询所有项目成本 + */ + @SaCheckPermission("oa:oaCost:list") + @GetMapping("/list") + public TableDataInfo AllList(@RequestParam(required = false) String projectName, @RequestParam(required = false)String createTime) { + return iSysOaCostService.AllList(projectName, createTime); + } + /** + * 查询详情 + */ + @SaCheckPermission("oa:oaCost:list") + @GetMapping("/{projectId}") + public TableDataInfo 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iSysOaCostService.deleteWithValidByIds(Arrays.asList(ids), true)); + } + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaCost.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaCost.java new file mode 100644 index 0000000..7f04202 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaCost.java @@ -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; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaCostBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaCostBo.java new file mode 100644 index 0000000..c223862 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaCostBo.java @@ -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; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostAll.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostAll.java new file mode 100644 index 0000000..7bd9bfe --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostAll.java @@ -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; + + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostAllVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostAllVo.java new file mode 100644 index 0000000..7a7df66 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostAllVo.java @@ -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; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostList.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostList.java new file mode 100644 index 0000000..610d0b2 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostList.java @@ -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; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostRow.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostRow.java new file mode 100644 index 0000000..eacbfdc --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostRow.java @@ -0,0 +1,13 @@ +package com.ruoyi.oa.domain.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class SysOaCostRow { + List userCostList; + List materialList; + List claimList; + List otherList; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostVo.java new file mode 100644 index 0000000..fca8480 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaCostVo.java @@ -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; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaCostMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaCostMapper.java new file mode 100644 index 0000000..722fe7d --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaCostMapper.java @@ -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 { + + + /** + * 查询所有项目成本 + */ + List AllList(@Param(value = "projectName") String projectName, @Param(value = "createTime") String createTime); + + + List getListByProjectId(Long projectId); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaCostService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaCostService.java new file mode 100644 index 0000000..077a4d8 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaCostService.java @@ -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 queryPageList(SysOaCostBo bo, PageQuery pageQuery); + + /** + * 查询项目成本分析列表 + */ + List queryList(SysOaCostBo bo); + + /** + * 新增项目成本分析 + */ + Boolean insertByBo(SysOaCostBo bo); + + /** + * 修改项目成本分析 + */ + Boolean updateByBo(SysOaCostBo bo); + + /** + * 校验并批量删除项目成本分析信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询所有项目成本 + */ + TableDataInfo AllList(String projectName, String createTime); + + /** + * 查询详情 + */ + TableDataInfo getDetail(Long projectId); + + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaCostServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaCostServiceImpl.java new file mode 100644 index 0000000..72285d8 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaCostServiceImpl.java @@ -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 queryPageList(SysOaCostBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询项目成本分析列表 + */ + @Override + public List queryList(SysOaCostBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysOaCostBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 查询所有项目成本 + */ + + @Override + public TableDataInfo AllList(String projectName, String createTime) { + + List alls = baseMapper.AllList(projectName,createTime); + List 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 getDetail(Long projectId) { + log.info("查询projectId = {}", projectId); +// LambdaQueryWrapper lqw = Wrappers.lambdaQuery(SysOaCost.class); +// lqw.eq(SysOaCost::getProjectId,projectId); +// List costs = baseMapper.selectList(lqw); + List 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 rows = new java.util.ArrayList<>(Collections.singletonList(sysOaCostRow)); + return TableDataInfo.build(rows); + + } +} diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaCostMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaCostMapper.xml new file mode 100644 index 0000000..1c41e41 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaCostMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + +