From 1093b185322515aebcccee208018346e7f9edbb3 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 14 十月 2025 16:51:25 +0800 Subject: [PATCH] 资产盘点任务接口 --- ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainPageVO.java | 89 +++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/AssetInventoryTaskService.java | 13 + ruoyi-system/src/main/resources/mapper/system/AssetMainMapper.xml | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTaskItem.java | 8 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetInventoryTaskController.java | 23 ++ ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetRepairRecordAddDTO.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/emums/AssetInventoryTaskStatusEnum.java | 24 +++ ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryTaskItemUpdateDTO.java | 32 ++++ ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryUserUpdateDTO.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainInventoryVO.java | 24 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetInventoryTaskServiceImpl.java | 140 ++++++++++++++++ ruoyi-system/src/main/resources/mapper/system/AssetInventoryTaskMapper.xml | 46 +++- ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTask.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/query/InventoryTaskQuery.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java | 2 17 files changed, 384 insertions(+), 39 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetInventoryTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetInventoryTaskController.java index e79f2e8..8739ae6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetInventoryTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetInventoryTaskController.java @@ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.dto.asset.AssetInventoryTaskDTO; import com.ruoyi.system.dto.asset.AssetInventoryTaskItemDTO; +import com.ruoyi.system.dto.asset.AssetInventoryTaskItemUpdateDTO; import com.ruoyi.system.dto.asset.AssetInventoryUserUpdateDTO; import com.ruoyi.system.query.AssertInventoryQuery; import com.ruoyi.system.query.InventoryTaskQuery; @@ -114,7 +115,7 @@ @ApiOperation("开始盘点") @GetMapping("/start/{id}") - public R<?> start( @ApiParam(name = "id", value = "盘点任务ID", required = true) + public R<?> start(@ApiParam(name = "id", value = "盘点任务ID", required = true) @PathVariable Integer id){ assetInventoryTaskService.start(id); return R.ok(); @@ -132,9 +133,27 @@ @ApiOperation("盘点结果处理") @PostMapping("/result") - public R<?> handleResult(@RequestBody List<AssetInventoryTaskItemDTO> dtoList) { + public R<?> handleResult(@Valid @RequestBody List<AssetInventoryTaskItemDTO> dtoList) { assetInventoryTaskService.handleResult(dtoList); return R.ok(); } + + @ApiOperation("取消盘点") + @PostMapping("/cancel/{id}") + public R<?> cancel (@ApiParam(name = "id", value = "盘点任务ID", required = true) + @PathVariable Integer id){ + if (assetInventoryTaskService.cancel(id)) { + return R.ok(); + } else { + return R.fail("取消失败"); + } + } + + @ApiOperation("保存盘点") + @PostMapping("/save") + public R<?> saveInventory(@Valid @RequestBody List<AssetInventoryTaskItemUpdateDTO> dtoList) { + assetInventoryTaskService.saveInventory(dtoList); + return R.ok(); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java index 0d9bfda..84275e7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetRepairRecordController.java @@ -5,7 +5,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.constants.AssetDeptConstant; -import com.ruoyi.system.dto.AssetRepairRecordAddDTO; +import com.ruoyi.system.dto.asset.AssetRepairRecordAddDTO; import com.ruoyi.system.dto.asset.AssetRepairCompleteDTO; import com.ruoyi.system.query.AssetRepairRecordPageQuery; import com.ruoyi.system.service.AssetRepairRecordService; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryTaskItemUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryTaskItemUpdateDTO.java new file mode 100644 index 0000000..3eaf942 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryTaskItemUpdateDTO.java @@ -0,0 +1,32 @@ +package com.ruoyi.system.dto.asset; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author mitao + * @date 2025/10/13 + */ +@Data +@ApiModel("保存盘点数据传输对象") +public class AssetInventoryTaskItemUpdateDTO { + + @ApiModelProperty("盘点任务关联表ID") + @NotNull(message = "盘点任务关联表ID不能为空") + private Integer assetInventoryTaskItemId; + + @ApiModelProperty(value = "盘点结果 0-未盘点,1-正常,2-异常") + private Integer resultStatus; + + @ApiModelProperty(value = "实存部门名称") + private String realDeptName; + + @ApiModelProperty(value = "实存使用人") + private String realUserName; + + @ApiModelProperty(value = "异常说明") + private String exceptionExplain; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryUserUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryUserUpdateDTO.java index 9709b6f..399cf38 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryUserUpdateDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetInventoryUserUpdateDTO.java @@ -4,8 +4,10 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.List; /** * 修改盘点人DTO @@ -24,8 +26,8 @@ private Integer taskId; @ApiModelProperty("资产ID") - @NotNull(message = "资产ID不能为空") - private Integer assetId; + @NotEmpty(message = "资产ID列表不能为空") + private List<Integer> assetIds; @ApiModelProperty("用户ID") @NotNull(message = "用户ID不能为空") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AssetRepairRecordAddDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetRepairRecordAddDTO.java similarity index 98% rename from ruoyi-system/src/main/java/com/ruoyi/system/dto/AssetRepairRecordAddDTO.java rename to ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetRepairRecordAddDTO.java index f3fd8a7..8f6c3d3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AssetRepairRecordAddDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/asset/AssetRepairRecordAddDTO.java @@ -1,4 +1,4 @@ -package com.ruoyi.system.dto; +package com.ruoyi.system.dto.asset; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/emums/AssetInventoryTaskStatusEnum.java b/ruoyi-system/src/main/java/com/ruoyi/system/emums/AssetInventoryTaskStatusEnum.java new file mode 100644 index 0000000..da4fbee --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/emums/AssetInventoryTaskStatusEnum.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.emums; + +import lombok.Getter; +import lombok.AllArgsConstructor; +@Getter +@AllArgsConstructor +public enum AssetInventoryTaskStatusEnum { + NOT_STARTED(0, "未开始"), + IN_PROGRESS(1, "进行中"), + COMPLETED(2, "已完成"), + CANCELED(3, "已取消"); + + private final Integer code; + private final String desc; + + public static AssetInventoryTaskStatusEnum getEnumByCode(Integer code) { + for (AssetInventoryTaskStatusEnum e : AssetInventoryTaskStatusEnum.values()) { + if (e.code.equals(code)) { + return e; + } + } + return null; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTask.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTask.java index 5ce2a1d..f71d1bc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTask.java @@ -49,8 +49,8 @@ @ApiModelProperty(value = "盘点日期") @TableField("execute_date") private LocalDate executeDate; - - @ApiModelProperty(value = "盘点状态 0-未开始,1-进行中,2-已完成") +//0:未开始;1:进行中;2:已完成;3:已取消; + @ApiModelProperty(value = "盘点状态 0-未开始,1-进行中,2-已完成, 3-已取消") @TableField("status") private Integer status; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTaskItem.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTaskItem.java index 62c122f..bda959e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTaskItem.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetInventoryTaskItem.java @@ -50,9 +50,13 @@ @TableField("real_dept_id") private Integer realDeptId; + @ApiModelProperty(value = "实存部门名称") + @TableField("real_dept_name") + private String realDeptName; + @ApiModelProperty(value = "实存使用人") - @TableField("real_user_id") - private Integer realUserId; + @TableField("real_user_name") + private String realUserName; @ApiModelProperty(value = "异常说明") @TableField("exception_explain") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/InventoryTaskQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/InventoryTaskQuery.java index a77face..3e25899 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/InventoryTaskQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/InventoryTaskQuery.java @@ -14,7 +14,7 @@ */ @Data @EqualsAndHashCode(callSuper = true) -@ApiModel("资产盘点分页列表query") +@ApiModel("资产盘点任务分页列表query") public class InventoryTaskQuery extends BasePage { private static final long serialVersionUID = 5972537443752522968L; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetInventoryTaskService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetInventoryTaskService.java index 8ba4500..e9ca8e3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetInventoryTaskService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetInventoryTaskService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.dto.asset.AssetInventoryTaskDTO; import com.ruoyi.system.dto.asset.AssetInventoryTaskItemDTO; +import com.ruoyi.system.dto.asset.AssetInventoryTaskItemUpdateDTO; import com.ruoyi.system.dto.asset.AssetInventoryUserUpdateDTO; import com.ruoyi.system.model.AssetInventoryTask; import com.ruoyi.system.query.AssertInventoryQuery; @@ -86,4 +87,16 @@ * @param dtoList */ void handleResult(List<AssetInventoryTaskItemDTO> dtoList); + + /** + * 取消盘点 + * @param id + */ + boolean cancel(Integer id); + + /** + * 保存盘点 + * @param dtoList + */ + void saveInventory(List<AssetInventoryTaskItemUpdateDTO> dtoList); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java index 0b24b6f..e10b057 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetRepairRecordService.java @@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; -import com.ruoyi.system.dto.AssetRepairRecordAddDTO; +import com.ruoyi.system.dto.asset.AssetRepairRecordAddDTO; import com.ruoyi.system.dto.asset.AssetRepairCompleteDTO; import com.ruoyi.system.model.AssetRepairRecord; import com.ruoyi.system.query.AssetRepairRecordPageQuery; 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 d048667..ba48eb4 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,6 +1,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,7 +13,9 @@ import com.ruoyi.system.constants.AssetDeptConstant; import com.ruoyi.system.dto.asset.AssetInventoryTaskDTO; import com.ruoyi.system.dto.asset.AssetInventoryTaskItemDTO; +import com.ruoyi.system.dto.asset.AssetInventoryTaskItemUpdateDTO; import com.ruoyi.system.dto.asset.AssetInventoryUserUpdateDTO; +import com.ruoyi.system.emums.AssetInventoryTaskStatusEnum; import com.ruoyi.system.mapper.AssetInventoryTaskMapper; import com.ruoyi.system.model.AssetInventoryRecord; import com.ruoyi.system.model.AssetInventoryTask; @@ -208,6 +211,7 @@ // 1. 查询所有有效的盘点任务,支持筛选条件 LambdaQueryWrapper<AssetInventoryTask> taskWrapper = new LambdaQueryWrapper<>(); taskWrapper.eq(AssetInventoryTask::getDisabled, false) + .ne(AssetInventoryTask::getStatus, AssetInventoryTaskStatusEnum.CANCELED.getCode()) .orderByDesc(AssetInventoryTask::getCreateTime); // 按部门筛选 if (hasNoPermission) { @@ -399,24 +403,24 @@ // 3. 查询并更新对应的资产盘点项 LambdaQueryWrapper<AssetInventoryTaskItem> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AssetInventoryTaskItem::getInventoryTaskId, dto.getTaskId()) - .eq(AssetInventoryTaskItem::getAssetMainId, dto.getAssetId()); + .in(AssetInventoryTaskItem::getAssetMainId, dto.getAssetIds()); - AssetInventoryTaskItem taskItem = assetInventoryTaskItemService.getOne(wrapper); - if (taskItem == null) { + List<AssetInventoryTaskItem> taskItems = assetInventoryTaskItemService.list(wrapper); + if (CollUtil.isEmpty(taskItems)) { throw new ServiceException("未找到对应的盘点资产项"); } // 4. 更新盘点人 String currentUserName = SecurityUtils.getLoginUser().getUser().getNickName(); - taskItem.setUserId(dto.getUserId()); - boolean updated = assetInventoryTaskItemService.updateById(taskItem); + taskItems.forEach(item->item.setUserId(dto.getUserId())); + boolean updated = assetInventoryTaskItemService.updateBatchById(taskItems); if (!updated) { throw new ServiceException("修改盘点人失败"); } log.info("成功修改盘点人,任务ID:{},资产ID:{},新盘点人ID:{},操作人:{}", - dto.getTaskId(), dto.getAssetId(), dto.getUserId(), currentUserName); + dto.getTaskId(), dto.getAssetIds(), dto.getUserId(), currentUserName); } /** @@ -456,6 +460,7 @@ } @Override + @Transactional(rollbackFor = Exception.class) public void handleResult(List<AssetInventoryTaskItemDTO> dtoList) { Map<Integer, Integer> taskItemMap = dtoList.stream() .collect(Collectors.toMap(AssetInventoryTaskItemDTO::getAssetInventoryTaskItemId, AssetInventoryTaskItemDTO::getDeal)); @@ -471,5 +476,128 @@ } } assetInventoryTaskItemService.updateBatchById(assetInventoryTaskItems); + + // 更新任务状态为已完成(盘点结果处理完成) + if (CollUtil.isNotEmpty(dtoList) && CollUtil.isNotEmpty(assetInventoryTaskItems)) { + // 获取任务ID(从第一个盘点项获取) + Integer taskId = assetInventoryTaskItems.get(0).getInventoryTaskId(); + updateTaskStatusToCompleted(taskId); + } + } + + /** + * 直接更新任务状态为已完成 + * + * @param taskId 盘点任务ID + */ + private void updateTaskStatusToCompleted(Integer taskId) { + // 参数验证 + if (taskId == null) { + log.warn("任务ID为空,无法更新任务状态"); + return; + } + + // 检查任务是否存在 + AssetInventoryTask task = this.getById(taskId); + if (task == null) { + log.warn("任务不存在,任务ID:{}", taskId); + return; + } + + // 检查任务是否已经是已完成状态 + if (task.getStatus() != null && task.getStatus().equals(AssetInventoryTaskStatusEnum.COMPLETED.getCode())) { + log.debug("任务已经是已完成状态,任务ID:{}", taskId); + return; + } + + // 更新任务状态为已完成 + task.setStatus(AssetInventoryTaskStatusEnum.COMPLETED.getCode()); + task.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + this.updateById(task); + log.info("盘点任务状态更新为已完成,任务ID:{},任务名称:{},操作人:{}", + taskId, task.getTaskName(), task.getUpdateBy()); + } + + @Override + public boolean cancel(Integer id) { + AssetInventoryTask assetInventoryTask = this.getById(id); + if (Objects.nonNull(assetInventoryTask) && !assetInventoryTask.getStatus() .equals(AssetInventoryTaskStatusEnum.COMPLETED.getCode())) { + assetInventoryTask.setStatus(AssetInventoryTaskStatusEnum.CANCELED.getCode()); //已取消 + assetInventoryTask.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + return this.updateById(assetInventoryTask); + } + return false; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveInventory(List<AssetInventoryTaskItemUpdateDTO> dtoList) { + Map<Integer, AssetInventoryTaskItemUpdateDTO> dtoMap = dtoList.stream() + .collect(Collectors.toMap(AssetInventoryTaskItemUpdateDTO::getAssetInventoryTaskItemId, dto -> dto)); + List<AssetInventoryTaskItem> assetInventoryTaskItems = assetInventoryTaskItemService.listByIds(dtoMap.keySet()); + + for (AssetInventoryTaskItem assetInventoryTaskItem : assetInventoryTaskItems) { + AssetInventoryTaskItemUpdateDTO dto = dtoMap.get(assetInventoryTaskItem.getId()); + assetInventoryTaskItem.setResultStatus(dto.getResultStatus()); + assetInventoryTaskItem.setRealDeptName(dto.getRealDeptName()); + assetInventoryTaskItem.setRealUserName(dto.getRealUserName()); + assetInventoryTaskItem.setExceptionExplain(dto.getExceptionExplain()); + } + assetInventoryTaskItemService.updateBatchById(assetInventoryTaskItems); + + // 检查并更新任务状态(保存盘点数据完成) + if (CollUtil.isNotEmpty(dtoList) && CollUtil.isNotEmpty(assetInventoryTaskItems)) { + // 获取任务ID(从第一个盘点项获取) + Integer taskId = assetInventoryTaskItems.get(0).getInventoryTaskId(); + checkAndUpdateTaskCompletionStatus(taskId); + } + } + + /** + * 检查并更新任务完成状态 + * 如果任务的所有盘点项都为正常状态,则将任务状态更新为已完成 + * + * @param taskId 盘点任务ID + */ + private void checkAndUpdateTaskCompletionStatus(Integer taskId) { + // 参数验证 + if (taskId == null) { + log.warn("任务ID为空,无法检查任务完成状态"); + return; + } + + // 1. 检查任务是否存在 + AssetInventoryTask task = this.getById(taskId); + if (task == null) { + log.warn("任务不存在,任务ID:{}", taskId); + return; + } + + // 2. 查询任务的所有盘点项 + LambdaQueryWrapper<AssetInventoryTaskItem> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AssetInventoryTaskItem::getInventoryTaskId, taskId); + List<AssetInventoryTaskItem> allTaskItems = assetInventoryTaskItemService.list(wrapper); + + // 3. 检查是否所有项都已完成且为正常状态(resultStatus = 1) + boolean allNormal = !allTaskItems.isEmpty() && + allTaskItems.stream() + .allMatch(item -> item.getResultStatus() != null && item.getResultStatus() == 1); + + // 4. 如果都正常,更新任务状态为已完成 + if (allNormal) { + // 检查任务是否已经是已完成状态 + if (task.getStatus() != null && !task.getStatus().equals(AssetInventoryTaskStatusEnum.COMPLETED.getCode())) { + task.setStatus(AssetInventoryTaskStatusEnum.COMPLETED.getCode()); + task.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + this.updateById(task); + log.info("盘点任务已完成,任务ID:{},任务名称:{},操作人:{}", + taskId, task.getTaskName(), task.getUpdateBy()); + } else { + log.debug("任务已经是已完成状态,任务ID:{}", taskId); + } + } else { + log.debug("任务未完全完成,跳过状态更新,任务ID:{},盘点项总数:{}", + taskId, allTaskItems.size()); + } } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java index 9959fbf..8ad7121 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetRepairRecordServiceImpl.java @@ -8,7 +8,7 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.constants.ApprovalApplicationCodePrefix; -import com.ruoyi.system.dto.AssetRepairRecordAddDTO; +import com.ruoyi.system.dto.asset.AssetRepairRecordAddDTO; import com.ruoyi.system.dto.asset.AssetRepairCompleteDTO; import com.ruoyi.system.mapper.AssetRepairRecordMapper; import com.ruoyi.system.model.AssetRepairRecord; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainInventoryVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainInventoryVO.java index a5e79a9..4aea4e3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainInventoryVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainInventoryVO.java @@ -20,9 +20,11 @@ @ApiModelProperty(value = "资产ID") private Integer id; + @ApiModelProperty(value = "盘点任务关联表ID") + private Integer assetInventoryTaskItemId; + @ApiModelProperty(value = "资产编码") private String assetCode; - @ApiModelProperty(value = "资产名称") private String assetName; @@ -85,8 +87,23 @@ @ApiModelProperty(value = "使用部门") private String useDeptName; - @ApiModelProperty(value = "盘点人") + @ApiModelProperty(value = "使用部门/位置ID") + private Integer useDeptId; + + @ApiModelProperty(value = "仓库ID,关联warehouse表") + private Integer warehouseId; + + @ApiModelProperty(value = "仓库名称(冗余字段)") + private String warehouseName; + + @ApiModelProperty(value = "所在位置") + private String address; + + @ApiModelProperty(value = "使用人") private String userName; + + @ApiModelProperty(value = "盘点人") + private String checkUserName; @ApiModelProperty(value = "盘点状态 盘点结果 0-未盘点,1-正常,2-异常 未找到资产") private Integer inventoryStatus; @@ -96,5 +113,8 @@ @ApiModelProperty(value = "实存使用人") private String realUserName; + + @ApiModelProperty(value = "异常说明") + private String exceptionExplain; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainPageVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainPageVO.java index 03360cc..6ab5d90 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainPageVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/AssetMainPageVO.java @@ -6,6 +6,7 @@ import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDate; /** @@ -40,5 +41,93 @@ @ApiModelProperty(value = "使用部门/位置") private String useDeptOrLocation; + + @ApiModelProperty(value = "审批申请记录ID") + private Integer approvalApplicationId; + + @ApiModelProperty(value = "资产原编码") + private String assetOriginalCode; + + @ApiModelProperty(value = "规格型号") + private String specificationModel; + + @ApiModelProperty(value = "类别") + private String category; + + @ApiModelProperty(value = "资产类别ID,关联asset_type表") + private Integer assetTypeId; + + @ApiModelProperty(value = "类别名称(冗余字段)") + private String assetCategory; + + @ApiModelProperty(value = "资产主类型:0-通用资产,1-房产资产,2-车辆资产") + private Integer assetMainType; + + @ApiModelProperty(value = "计量单位") + private String measurementUnit; + + @ApiModelProperty(value = "数量") + private Integer quantity; + + @ApiModelProperty(value = "单价") + private BigDecimal unitPrice; + + @ApiModelProperty(value = "总价值(数量*单价)") + private BigDecimal totalValue; + + @ApiModelProperty(value = "使用年限(年)") + private Integer usefulLife; + + @ApiModelProperty(value = "权属单位/部门ID") + private Integer ownershipDeptId; + + @ApiModelProperty(value = "使用人") + private String userName; + + @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址") + private Integer addressType; + + @ApiModelProperty(value = "使用部门/位置ID") + private Integer useDeptId; + + @ApiModelProperty(value = "仓库ID,关联warehouse表") + private Integer warehouseId; + + @ApiModelProperty(value = "仓库名称(冗余字段)") + private String warehouseName; + + @ApiModelProperty(value = "所在位置") + private String address; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "入账状态") + private String accountingStatus; + + @ApiModelProperty(value = "入账时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate accountingDate; + + @ApiModelProperty(value = "会计凭证号") + private String accountingVoucherNo; + + @ApiModelProperty(value = "会计科目") + private String accountingSubject; + + @ApiModelProperty(value = "入账金额") + private BigDecimal accountingAmount; + + @ApiModelProperty(value = "附件URL列表(多个附件使用英文逗号拼接)") + private String attachmentUrls; + + @ApiModelProperty(value = "是否被处置") + private Integer disposed; + + @ApiModelProperty(value = "是否借用未归还") + private Integer borrowed; + + @ApiModelProperty(value = "是否被领用") + private Integer inUse; } diff --git a/ruoyi-system/src/main/resources/mapper/system/AssetInventoryTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/system/AssetInventoryTaskMapper.xml index 61d57b7..0c7a40f 100644 --- a/ruoyi-system/src/main/resources/mapper/system/AssetInventoryTaskMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/AssetInventoryTaskMapper.xml @@ -36,37 +36,45 @@ am.measurement_unit, am.quantity, am.unit_price, - ( am.quantity * am.unit_price ) AS total_value, + am.total_value, am.accounting_voucher_no, am.accounting_subject, am.accounting_status, am.accounting_amount, am.accounting_date, am.asset_status, - od.dept_name AS ownership_dept_name, + td.dept_name AS ownership_dept_name, am.ownership_dept_id, am.asset_type_id, am.address_type, + am.address, am.use_dept_id, am.warehouse_id, - od2.dept_name AS use_dept_name, - su.nick_name AS user_name, + am.user_name, + aw.warehouse_name, + td2.dept_name AS use_dept_name, + su.nick_name AS check_user_name, aiti.result_status AS inventory_status, aiti.real_dept_name, - aiti.real_user_name + aiti.real_user_name, + aiti.id AS asset_inventory_task_item_id, + aiti.exception_explain FROM asset_inventory_task_item aiti INNER JOIN asset_main am ON aiti.asset_main_id = am.id LEFT JOIN - asset_type at2 ON am.asset_type_id = at.id + asset_type at2 ON am.asset_type_id = at2.id LEFT JOIN asset_type at1 ON at1.id = (CASE WHEN at2.level = 2 THEN at2.parent_id ELSE at2.id END) LEFT JOIN - sys_dept od ON am.ownership_dept_id = od.dept_id + t_dept td ON am.ownership_dept_id = td.id LEFT JOIN sys_user su ON aiti.user_id = su.user_id - LEFT JOIN sys_dept od2 ON am.address_type = 0 AND am.use_dept_id = od2.id + LEFT JOIN + t_dept td2 ON am.address_type = 0 AND am.use_dept_id = td2.id + LEFT JOIN + asset_warehouse aw ON am.address_type = 1 AND am.warehouse_id = aw.id WHERE aiti.inventory_task_id = #{taskId} ORDER BY @@ -99,24 +107,29 @@ am.measurement_unit, am.quantity, am.unit_price, - ( am.quantity * am.unit_price ) AS total_value, + am.total_value, am.accounting_voucher_no, am.accounting_subject, am.accounting_status, am.accounting_amount, am.accounting_date, am.asset_status, - od.dept_name AS ownership_dept_name, + td.dept_name AS ownership_dept_name, am.ownership_dept_id, am.asset_type_id, am.address_type, + am.address, am.use_dept_id, am.warehouse_id, - od2.dept_name AS use_dept_name, - su.nick_name AS user_name, + am.user_name, + aw.warehouse_name, + td2.dept_name AS use_dept_name, + su.nick_name AS check_user_name, aiti.result_status AS inventory_status, aiti.real_dept_name, - aiti.real_user_name + aiti.real_user_name, + aiti.id AS asset_inventory_task_item_id, + aiti.exception_explain FROM asset_inventory_task_item aiti INNER JOIN @@ -124,10 +137,13 @@ LEFT JOIN asset_type at ON am.asset_type_id = at.id LEFT JOIN - sys_dept od ON am.ownership_dept_id = od.dept_id + t_dept td ON am.ownership_dept_id = td.id LEFT JOIN sys_user su ON aiti.user_id = su.user_id - LEFT JOIN sys_dept od2 ON am.address_type = 0 AND am.use_dept_id = od2.id + LEFT JOIN + t_dept td2 ON am.address_type = 0 AND am.use_dept_id = td2.id + LEFT JOIN + asset_warehouse aw ON am.address_type = 1 AND am.warehouse_id = aw.id <where> aiti.inventory_task_id = #{query.id} <if test="query.keyword != null and query.keyword != ''"> diff --git a/ruoyi-system/src/main/resources/mapper/system/AssetMainMapper.xml b/ruoyi-system/src/main/resources/mapper/system/AssetMainMapper.xml index 5ecaeba..5b99324 100644 --- a/ruoyi-system/src/main/resources/mapper/system/AssetMainMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/AssetMainMapper.xml @@ -100,9 +100,7 @@ </select> <select id="getAssetPageList" resultType="com.ruoyi.system.vo.asset.AssetMainPageVO"> SELECT - am.id AS id, - am.asset_code AS assetCode, - am.asset_name AS assetName, + am.*, at.type_name AS assetTypeName, od.dept_name AS ownershipDeptName, am.asset_status AS assetStatus, -- Gitblit v1.7.1