From 884dd94c6b0bfbc48c12f280a65204aa65885d84 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 13 十月 2025 15:24:13 +0800
Subject: [PATCH] 房屋巡检记录
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetInventoryTaskServiceImpl.java | 123 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 123 insertions(+), 0 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetInventoryTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetInventoryTaskServiceImpl.java
index d5b7d35..a74e2a6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetInventoryTaskServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetInventoryTaskServiceImpl.java
@@ -1,10 +1,34 @@
package com.ruoyi.system.service.impl;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.TDept;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.dto.asset.AddInventoryTaskDTO;
import com.ruoyi.system.mapper.AssetInventoryTaskMapper;
+import com.ruoyi.system.mapper.TDeptMapper;
import com.ruoyi.system.model.AssetInventoryTask;
+import com.ruoyi.system.model.AssetInventoryTaskItem;
+import com.ruoyi.system.query.AssertInventoryQuery;
+import com.ruoyi.system.service.AssetInventoryTaskItemService;
import com.ruoyi.system.service.AssetInventoryTaskService;
+import com.ruoyi.system.vo.asset.AssetInventoryTaskVO;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
/**
* <p>
@@ -15,6 +39,105 @@
* @since 2025-09-15
*/
@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class AssetInventoryTaskServiceImpl extends ServiceImpl<AssetInventoryTaskMapper, AssetInventoryTask> implements AssetInventoryTaskService {
+ private final TDeptMapper tDeptMapper;
+
+ private final AssetInventoryTaskItemService assetInventoryTaskItemService;
+
+ @Override
+ public IPage<AssetInventoryTaskVO> getInventoryTaskPage(AssertInventoryQuery query) {
+ // 1. 构建Lambda查询条件
+ LambdaQueryWrapper<AssetInventoryTask> wrapper = new LambdaQueryWrapper<>();
+ wrapper.like(StringUtils.isNotBlank(query.getTaskName()),
+ AssetInventoryTask::getTaskName, query.getTaskName())
+ .eq(AssetInventoryTask::getDisabled, false)
+ .orderByDesc(AssetInventoryTask::getCreateTime);
+
+ // 2. 构建分页对象
+ Page<AssetInventoryTask> page = new Page<>(query.getPageNum(), query.getPageSize());
+
+ // 3. 执行分页查询
+ IPage<AssetInventoryTask> taskPage = this.page(page, wrapper);
+
+ // 4. 收集部门ID并去重
+ List<Integer> deptIds = taskPage.getRecords().stream()
+ .map(AssetInventoryTask::getDeptId)
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList());
+
+ // 5. 批量查询部门信息
+ List<TDept> depts = deptIds.isEmpty() ?
+ Collections.emptyList() :
+ tDeptMapper.selectBatchIds(deptIds);
+
+ // 6. 构建部门ID->名称的映射Map
+ Map<Integer, String> deptNameMap = depts.stream()
+ .collect(Collectors.toMap(TDept::getId, TDept::getDeptName));
+
+ // 7. 使用BeanUtil.copyToList转换VO并填充部门名称
+ List<AssetInventoryTaskVO> voList = BeanUtil.copyToList(taskPage.getRecords(), AssetInventoryTaskVO.class);
+ voList.forEach(vo -> {
+ if (vo.getDeptId() != null) {
+ vo.setDeptName(deptNameMap.get(vo.getDeptId()));
+ }
+ });
+
+ // 8. 构建返回的分页结果
+ IPage<AssetInventoryTaskVO> resultPage = new Page<>(taskPage.getCurrent(), taskPage.getSize(), taskPage.getTotal());
+ resultPage.setRecords(voList);
+
+ return resultPage;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean createInventoryTask(AddInventoryTaskDTO dto) {
+ // 1. DTO转Entity
+ AssetInventoryTask task = new AssetInventoryTask();
+ BeanUtil.copyProperties(dto, task);
+
+ // 2. 设置默认值
+ SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+ task.setUserId(Math.toIntExact(currentUser.getUserId()));
+ task.setStatus(0); // 未开始状态
+ task.setCreateTime(LocalDateTime.now());
+ task.setCreateBy(currentUser.getUserName());
+ task.setDisabled(false);
+
+ // 3. 保存主任务
+ boolean saved = this.save(task);
+ if (!saved) {
+ throw new RuntimeException("保存盘点任务失败");
+ }
+
+ // 4. 批量创建资产明细
+ List<AssetInventoryTaskItem> items = buildTaskItems(task.getId(), dto.getAssetMainIds());
+ return assetInventoryTaskItemService.saveBatch(items);
+ }
+
+ /**
+ * 构建盘点任务资产明细列表
+ *
+ * @param taskId 盘点任务ID
+ * @param assetMainIds 资产ID列表
+ * @return 资产明细列表
+ */
+ private List<AssetInventoryTaskItem> buildTaskItems(Integer taskId, List<Integer> assetMainIds) {
+ SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+ Integer currentUserId = Math.toIntExact(currentUser.getUserId());
+
+ return assetMainIds.stream()
+ .map(assetId -> {
+ AssetInventoryTaskItem item = new AssetInventoryTaskItem();
+ item.setInventoryTaskId(taskId);
+ item.setAssetMainId(assetId);
+ item.setUserId(currentUserId);
+ item.setResultStatus(0); // 未盘点状态
+ return item;
+ })
+ .collect(Collectors.toList());
+ }
}
--
Gitblit v1.7.1