From 6999d4114eb6d64d0775e2f9ff00572b0e60ee31 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 26 九月 2025 17:31:15 +0800 Subject: [PATCH] 代码提交 --- ruoyi-system/src/main/java/com/ruoyi/system/query/AssetInventoryListQuery.java | 13 + ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListDetailQuery.java | 13 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java | 109 ++++++++++++++- ruoyi-system/src/main/java/com/ruoyi/system/service/AssetTypeService.java | 7 + ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetStatisticsDetailVO.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListQuery.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetTypeMapper.java | 8 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java | 3 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetStatisticsController.java | 113 ++++++++++++++-- ruoyi-system/src/main/resources/mapper/system/AssetTypeMapper.xml | 105 ++++++++++++--- 10 files changed, 330 insertions(+), 52 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetStatisticsController.java index 169a961..0795b13 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetStatisticsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetStatisticsController.java @@ -4,12 +4,11 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.framework.web.service.TokenService; -import com.ruoyi.system.dto.asset.AssetTypeDTO; +import com.ruoyi.system.model.AssetInventoryRecord; import com.ruoyi.system.model.AssetMain; import com.ruoyi.system.query.AssetInventoryListQuery; import com.ruoyi.system.query.AssetStatisticsListDetailQuery; import com.ruoyi.system.query.AssetStatisticsListQuery; -import com.ruoyi.system.query.NotificationListQuery; import com.ruoyi.system.service.AssetInventoryRecordService; import com.ruoyi.system.service.AssetMainService; import com.ruoyi.system.service.AssetTypeService; @@ -18,17 +17,14 @@ import com.ruoyi.system.vo.AssetStatisticsDetailVO; import com.ruoyi.system.vo.AssetStatisticsVO; import com.ruoyi.system.vo.asset.AssetTypeTreeVO; -import com.ruoyi.system.vo.system.NotificationVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; import java.time.LocalDateTime; import java.time.YearMonth; import java.util.ArrayList; @@ -95,9 +91,12 @@ List<Integer> deptIds = deptService.getAllSubDeptIds(deptId); if (dept.getDeptName().contains("资产管理")){ // 可以查询所有数据 + query.setDeptIds(new ArrayList<>()); }else{ if (deptIds.isEmpty()){ - + return R.ok(new PageInfo<>()); + }else{ + query.setDeptIds(deptIds); } } return R.ok(assetTypeService.pageList(query)); @@ -105,14 +104,38 @@ @ApiOperation("资产明细") @PostMapping("/pageListDetail") public R<PageInfo<AssetStatisticsDetailVO>> pageListDetail(@RequestBody AssetStatisticsListDetailQuery query) { - query.setDeptId(Integer.valueOf(tokenService.getLoginUser().getDeptId())); + String deptId = tokenService.getLoginUser().getDeptId(); + TDept dept = deptService.getById(tokenService.getLoginUser().getDeptId()); + List<Integer> deptIds = deptService.getAllSubDeptIds(deptId); + if (dept.getDeptName().contains("资产管理")){ + // 可以查询所有数据 + query.setDeptIds(new ArrayList<>()); + }else{ + if (deptIds.isEmpty()){ + return R.ok(new PageInfo<>()); + }else{ + query.setDeptIds(deptIds); + } + } PageInfo<AssetStatisticsDetailVO> res = assetTypeService.pageListDetail(query); return R.ok(res); } @ApiOperation("资产出入库分页列表") @PostMapping("/pageListInventory") public R<PageInfo<AssetInventoryVO>> pageListInventory(@RequestBody AssetInventoryListQuery query) { - query.setDeptId(Integer.valueOf(tokenService.getLoginUser().getDeptId())); + String deptId = tokenService.getLoginUser().getDeptId(); + TDept dept = deptService.getById(tokenService.getLoginUser().getDeptId()); + List<Integer> deptIds = deptService.getAllSubDeptIds(deptId); + if (dept.getDeptName().contains("资产管理")){ + // 可以查询所有数据 + query.setDeptIds(new ArrayList<>()); + }else{ + if (deptIds.isEmpty()){ + return R.ok(new PageInfo<>()); + }else{ + query.setDeptIds(deptIds); + } + } String[] dateList = query.getDate().split(","); String month = dateList[1]; int monthValue = Integer.parseInt(month); @@ -122,26 +145,88 @@ YearMonth.of(year, monthValue).lengthOfMonth(), 23, 59, 59); query.setDateStart(firstDay); query.setDateEnd(lastDay); + List<Integer> assetMainIds = assetInventoryRecordService.lambdaQuery().between(AssetInventoryRecord::getCreateTime, query.getDateStart(), query.getDateEnd()) + .list().stream().map(AssetInventoryRecord::getAssetMainId).collect(Collectors.toList()); + if (assetMainIds.isEmpty()){ + return R.ok(new PageInfo<>()); + } if (StringUtils.hasLength(query.getNameOrCode())){ // 查询出资产名称或者资产编号符合条件的code - List<Integer> assetTypeIds = assetMainService.lambdaQuery().like(AssetMain::getAssetName, query.getNameOrCode()) - .or() - .like(AssetMain::getAssetCode, query.getNameOrCode()) + List<Integer> assetTypeIds = assetMainService.lambdaQuery() + .in(AssetMain::getOwnershipDeptId, deptIds) + .and(wrapper -> wrapper.like(AssetMain::getAssetName, query.getNameOrCode()) + .or() + .like(AssetMain::getAssetCode, query.getNameOrCode())) .list() .stream() .map(AssetMain::getAssetTypeId) .collect(Collectors.toList()); - query.setAssetTypeIds(assetTypeIds); + query.setAssetMainIds(assetTypeIds); if (assetTypeIds.isEmpty()){ return R.ok(new PageInfo<>()); } + // 和assetMainIds取交集 + List<Integer> res = assetMainIds.stream().filter(assetTypeIds::contains).collect(Collectors.toList()); + if (res.isEmpty()){ + return R.ok(new PageInfo<>()); + } + query.setAssetMainIds(res); } - return R.ok(); + return R.ok(assetTypeService.pageListInventory(query)); } @ApiOperation("资产出入库明细分页列表") @PostMapping("/pageListInventoryDetail") public R<PageInfo<AssetStatisticsDetailVO>> pageListInventoryDetail(@RequestBody AssetStatisticsListDetailQuery query) { - PageInfo<AssetStatisticsDetailVO> res = assetTypeService.pageListDetail(query); + String deptId = tokenService.getLoginUser().getDeptId(); + TDept dept = deptService.getById(tokenService.getLoginUser().getDeptId()); + List<Integer> deptIds = deptService.getAllSubDeptIds(deptId); + if (dept.getDeptName().contains("资产管理")){ + // 可以查询所有数据 + query.setDeptIds(new ArrayList<>()); + }else{ + if (deptIds.isEmpty()){ + return R.ok(new PageInfo<>()); + }else{ + query.setDeptIds(deptIds); + } + } + String[] dateList = query.getDate().split(","); + String month = dateList[1]; + int monthValue = Integer.parseInt(month); + int year = LocalDateTime.now().getYear(); + LocalDateTime firstDay = LocalDateTime.of(year, monthValue, 1, 0, 0, 0); + LocalDateTime lastDay = LocalDateTime.of(year, monthValue, + YearMonth.of(year, monthValue).lengthOfMonth(), 23, 59, 59); + query.setDateStart(firstDay); + query.setDateEnd(lastDay); + List<Integer> assetMainIds = assetInventoryRecordService.lambdaQuery().between(AssetInventoryRecord::getCreateTime, query.getDateStart(), query.getDateEnd()) + .list().stream().map(AssetInventoryRecord::getAssetMainId).collect(Collectors.toList()); + if (assetMainIds.isEmpty()){ + return R.ok(new PageInfo<>()); + } + if (StringUtils.hasLength(query.getNameOrCode())){ + // 查询出资产名称或者资产编号符合条件的code + List<Integer> assetTypeIds = assetMainService.lambdaQuery() + .in(AssetMain::getOwnershipDeptId, deptIds) + .and(wrapper -> wrapper.like(AssetMain::getAssetName, query.getNameOrCode()) + .or() + .like(AssetMain::getAssetCode, query.getNameOrCode())) + .list() + .stream() + .map(AssetMain::getAssetTypeId) + .collect(Collectors.toList()); + query.setAssetMainIds(assetTypeIds); + if (assetTypeIds.isEmpty()){ + return R.ok(new PageInfo<>()); + } + // 和assetMainIds取交集 + List<Integer> res = assetMainIds.stream().filter(assetTypeIds::contains).collect(Collectors.toList()); + if (res.isEmpty()){ + return R.ok(new PageInfo<>()); + } + query.setAssetMainIds(res); + } + PageInfo<AssetStatisticsDetailVO> res = assetTypeService.pageListInventoryDetail(query); return R.ok(res); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetTypeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetTypeMapper.java index 9542db1..a655310 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetTypeMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AssetTypeMapper.java @@ -3,8 +3,10 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.AssetType; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.query.AssetInventoryListQuery; import com.ruoyi.system.query.AssetStatisticsListDetailQuery; import com.ruoyi.system.query.AssetStatisticsListQuery; +import com.ruoyi.system.vo.AssetInventoryVO; import com.ruoyi.system.vo.AssetStatisticsDetailVO; import com.ruoyi.system.vo.AssetStatisticsVO; import org.apache.ibatis.annotations.Param; @@ -27,4 +29,10 @@ List<AssetStatisticsDetailVO> pageListDetail(@Param("query")AssetStatisticsListDetailQuery query, @Param("pageInfo")PageInfo<AssetStatisticsDetailVO> pageInfo); + List<AssetInventoryVO> pageListInventory(@Param("query")AssetInventoryListQuery query,@Param("pageInfo") PageInfo<AssetInventoryVO> pageInfo); + + List<AssetStatisticsDetailVO> pageListInventoryDetail(@Param("query")AssetStatisticsListDetailQuery query,@Param("pageInfo") PageInfo<AssetStatisticsDetailVO> pageInfo); + + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetInventoryListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetInventoryListQuery.java index 8f2f1d9..65102ba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetInventoryListQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetInventoryListQuery.java @@ -11,16 +11,19 @@ @Data @ApiModel(value = "资产出入库分页列表query") public class AssetInventoryListQuery extends BasePage { - @ApiModelProperty(value = "部门id 前端忽略") - private Integer deptId; - @ApiModelProperty(value = "年月 yy-MM") - private String date; + @ApiModelProperty(value = "部门ids 前端忽略") + private List<Integer> deptIds; + @ApiModelProperty(value = "资产名称或编号") private String nameOrCode; @ApiModelProperty(value = "资产分类id") private Integer assetTypeId; - @ApiModelProperty(value = "资产分类ids 前端忽略") + @ApiModelProperty(value = "资产分类ids ") private List<Integer> assetTypeIds; + @ApiModelProperty(value = "资产ids 前端忽略") + private List<Integer> assetMainIds; + @ApiModelProperty(value = "年月 yy-MM") + private String date; @ApiModelProperty(value = "开始时间前端忽略") private LocalDateTime dateStart; @ApiModelProperty(value = "结束时间前端忽略") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListDetailQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListDetailQuery.java index 8742ebc..a07cccb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListDetailQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListDetailQuery.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDateTime; import java.util.List; @Data @@ -17,8 +18,16 @@ private Integer assetTypeIdSecond; @ApiModelProperty(value = "资产状态") private String assetStatus; + @ApiModelProperty(value = "资产类别") + private String category; @ApiModelProperty(value = "资产ids 前端忽略") private List<Integer> assetMainIds; - @ApiModelProperty(value = "部门id 前端忽略") - private Integer deptId; + @ApiModelProperty(value = "部门ids 前端忽略") + private List<Integer> deptIds; + @ApiModelProperty(value = "年月 yy-MM") + private String date; + @ApiModelProperty(value = "开始时间前端忽略") + private LocalDateTime dateStart; + @ApiModelProperty(value = "结束时间前端忽略") + private LocalDateTime dateEnd; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListQuery.java index 4b0231c..c34b406 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/AssetStatisticsListQuery.java @@ -17,6 +17,8 @@ private Integer assetTypeId; @ApiModelProperty(value = "资产分类ids 前端忽略") private List<Integer> assetTypeIds; + @ApiModelProperty(value = "资产ids 前端忽略") + private List<Integer> assetMainIds; @ApiModelProperty(value = "部门id 前端忽略") - private Integer deptId; + private List<Integer> deptIds; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetTypeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetTypeService.java index 140b613..2401d9e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetTypeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetTypeService.java @@ -4,8 +4,10 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.dto.asset.AssetTypeDTO; import com.ruoyi.system.model.AssetType; +import com.ruoyi.system.query.AssetInventoryListQuery; import com.ruoyi.system.query.AssetStatisticsListDetailQuery; import com.ruoyi.system.query.AssetStatisticsListQuery; +import com.ruoyi.system.vo.AssetInventoryVO; import com.ruoyi.system.vo.AssetStatisticsDetailVO; import com.ruoyi.system.vo.AssetStatisticsVO; import com.ruoyi.system.vo.asset.AssetTypeTreeVO; @@ -62,4 +64,9 @@ PageInfo<AssetStatisticsVO> pageList(AssetStatisticsListQuery query); PageInfo<AssetStatisticsDetailVO> pageListDetail(AssetStatisticsListDetailQuery query); + + PageInfo<AssetInventoryVO> pageListInventory(AssetInventoryListQuery query); + + PageInfo<AssetStatisticsDetailVO> pageListInventoryDetail(AssetStatisticsListDetailQuery query); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java index a9fb969..20e3869 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java @@ -11,17 +11,22 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.dto.asset.AssetTypeDTO; import com.ruoyi.system.mapper.AssetTypeMapper; +import com.ruoyi.system.model.AssetInventoryRecord; import com.ruoyi.system.model.AssetMain; import com.ruoyi.system.model.AssetType; +import com.ruoyi.system.query.AssetInventoryListQuery; import com.ruoyi.system.query.AssetStatisticsListDetailQuery; import com.ruoyi.system.query.AssetStatisticsListQuery; +import com.ruoyi.system.service.AssetInventoryRecordService; import com.ruoyi.system.service.AssetMainService; import com.ruoyi.system.service.AssetTypeService; +import com.ruoyi.system.vo.AssetInventoryVO; import com.ruoyi.system.vo.AssetStatisticsDetailVO; import com.ruoyi.system.vo.AssetStatisticsVO; import com.ruoyi.system.vo.asset.AssetTypeTreeVO; import com.ruoyi.system.vo.system.NotificationVO; import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -30,11 +35,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -51,6 +52,7 @@ private final AssetMainService assetMainService; private final AssetTypeService assetTypeService; + private final AssetInventoryRecordService assetInventoryRecordService; @Override public List<AssetTypeTreeVO> getAssetTypeTree() { @@ -310,7 +312,7 @@ .stream() .map(AssetMain::getAssetTypeId) .collect(Collectors.toList()); - query.setAssetTypeIds(assetTypeIds); + query.setAssetMainIds(assetTypeIds); if (assetTypeIds.isEmpty()){ return new PageInfo<>(); } @@ -323,7 +325,7 @@ return new PageInfo<>(); } Map<Integer, List<AssetMain>> assetMainMap = assetMainService.lambdaQuery() - .eq(AssetMain::getOwnershipDeptId, query.getDeptId()) + .in(!query.getDeptIds().isEmpty(),AssetMain::getOwnershipDeptId, query.getDeptIds()) .in(AssetMain::getAssetTypeId, assetTypeIds).list() .stream() .collect(Collectors.groupingBy(AssetMain::getAssetTypeId)); @@ -396,4 +398,97 @@ return pageInfo; } + @Override + public PageInfo<AssetInventoryVO> pageListInventory(AssetInventoryListQuery query) { + AssetType assetType = this.baseMapper.selectById(query.getAssetTypeId()); + if (assetType.getParentId()==0){ + List<Integer> assetTypeChild = this.baseMapper.selectList(new LambdaQueryWrapper<AssetType>() + .eq(AssetType::getParentId, assetType.getId())).stream().map(AssetType::getId) + .collect(Collectors.toList()); + List<Integer> list = new ArrayList<>(assetTypeChild); + list.add(assetType.getId()); + query.setAssetTypeIds( list); + }else{ + query.setAssetTypeIds(Collections.singletonList(assetType.getId())); + } + PageInfo<AssetInventoryVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<AssetInventoryVO> list = this.baseMapper.pageListInventory(query,pageInfo); + Map<Integer, List<AssetMain>> assetMainMap = assetMainService.lambdaQuery().in(AssetMain::getId, query.getAssetMainIds()).list() + .stream().collect(Collectors.groupingBy(AssetMain::getAssetTypeId)); + List<AssetInventoryRecord> assetInventoryRecords = assetInventoryRecordService.lambdaQuery().in(AssetInventoryRecord::getAssetMainId, query.getAssetMainIds()).list(); + for (AssetInventoryVO assetInventoryVO : list) { + int inCount = 0; + int outCount = 0; + int inStockCount = 0; + + BigDecimal inStockMoney = new BigDecimal("0"); + BigDecimal inMoney = new BigDecimal("0"); + BigDecimal outMoney = new BigDecimal("0"); + List<AssetMain> assetMains = assetMainMap.get(assetInventoryVO.getAssetTypeIdSecond()); + for (AssetInventoryRecord assetInventoryRecord : assetInventoryRecords) { + if (assetInventoryRecord.getType()==0){ + AssetMain assetMain = assetMains.stream().filter(e -> e.getId().equals(assetInventoryRecord.getAssetMainId())) + .findFirst().orElse(null); + if (assetMain!=null){ + inCount+=assetMain.getQuantity(); + inMoney = inMoney.add(new BigDecimal(assetMain.getQuantity()) + .multiply(assetMain.getUnitPrice()).setScale(2, RoundingMode.HALF_DOWN)); + } + }else{ + AssetMain assetMain = assetMains.stream().filter(e -> e.getId().equals(assetInventoryRecord.getAssetMainId())) + .findFirst().orElse(null); + if (assetMain!=null){ + outCount+=assetMain.getQuantity(); + outMoney = outMoney.add(new BigDecimal(assetMain.getQuantity()) + .multiply(assetMain.getUnitPrice()).setScale(2, RoundingMode.HALF_DOWN)); + } + } + } + assetInventoryVO.setInCount(inCount); + assetInventoryVO.setOutCount(outCount); + assetInventoryVO.setInMoney(inMoney); + assetInventoryVO.setOutMoney(outMoney); + List<AssetMain> inStorage = assetMains.stream().filter(e -> e.getDisposed() == 0 && e.getInUse() == 0 && e.getBorrowed() == 0).collect(Collectors.toList()); + for (AssetMain assetMain : inStorage) { + inStockCount+=assetMain.getQuantity(); + inStockMoney = inStockMoney.add(new BigDecimal(assetMain.getQuantity()) + .multiply(assetMain.getUnitPrice()).setScale(2, RoundingMode.HALF_DOWN)); + } + assetInventoryVO.setInStockCount(inStockCount); + assetInventoryVO.setInStockMoney(inStockMoney); + } + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public PageInfo<AssetStatisticsDetailVO> pageListInventoryDetail(AssetStatisticsListDetailQuery query) { + PageInfo<AssetStatisticsDetailVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<AssetStatisticsDetailVO> list = this.baseMapper.pageListInventoryDetail(query,pageInfo); + List<AssetType> assetTypes = assetTypeService.list(); + for (AssetStatisticsDetailVO assetStatisticsDetailVO : list) { + Integer type = assetStatisticsDetailVO.getType(); + if (type==0){ + String typeName = "入库"; + + AssetType assetType = assetTypes.stream().filter(e -> e.getId().equals(assetStatisticsDetailVO.getAssetTypeId())) + .findFirst().orElse(null); + if (assetType!=null){ + typeName =typeName+"("+assetType.getTypeName()+")"; + } + assetStatisticsDetailVO.setTypeName(typeName); + }else{ + String typeName = "出库"; + AssetType assetType = assetTypes.stream().filter(e -> e.getId().equals(assetStatisticsDetailVO.getAssetTypeId())) + .findFirst().orElse(null); + if (assetType!=null){ + typeName =typeName+"("+assetType.getTypeName()+")"; + } + assetStatisticsDetailVO.setTypeName(typeName); + } + } + pageInfo.setRecords(list); + return pageInfo; + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java index ccaf76f..62a6894 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDeptServiceImpl.java @@ -37,7 +37,6 @@ @Override public List<Integer> getAllSubDeptIds(String deptId) { List<Integer> allSubIds = new ArrayList<>(); - allSubIds.add(Integer.valueOf(deptId)); getSubDeptIdsRecursive(Integer.valueOf(deptId), allSubIds); return allSubIds.stream().distinct().collect(Collectors.toList()); } @@ -50,6 +49,8 @@ // 递归查询下级的下级 getSubDeptIdsRecursive(subId, allSubIds); } + allSubIds.add(Integer.valueOf(parentId)); + } /** * 构建部门树结构 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetStatisticsDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetStatisticsDetailVO.java index 54166a8..a330026 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetStatisticsDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/AssetStatisticsDetailVO.java @@ -11,13 +11,18 @@ @Data @ApiModel(value = "资产汇总分页返回VO") public class AssetStatisticsDetailVO implements Serializable { - + @ApiModelProperty(value = "出入库类型") + private String typeName; + @ApiModelProperty(value = "出入库类型 0-入库,1-出库") + private Integer type; @ApiModelProperty(value = "资产名称") private String assetName; @ApiModelProperty(value = "规格型号") private String specificationModel; @ApiModelProperty(value = "资产类型") private String assetTypeName; + @ApiModelProperty(value = "资产类型id") + private Integer assetTypeId; @ApiModelProperty(value = "资产类别") private String category; @ApiModelProperty(value = "计量单位") diff --git a/ruoyi-system/src/main/resources/mapper/system/AssetTypeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/AssetTypeMapper.xml index b875c8c..15e7004 100644 --- a/ruoyi-system/src/main/resources/mapper/system/AssetTypeMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/AssetTypeMapper.xml @@ -4,38 +4,45 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.model.AssetType"> - <id column="id" property="id" /> - <result column="type_name" property="typeName" /> - <result column="type_code" property="typeCode" /> - <result column="parent_id" property="parentId" /> - <result column="level" property="level" /> - <result column="create_time" property="createTime" /> - <result column="create_by" property="createBy" /> - <result column="update_time" property="updateTime" /> - <result column="update_by" property="updateBy" /> - <result column="disabled" property="disabled" /> + <id column="id" property="id"/> + <result column="type_name" property="typeName"/> + <result column="type_code" property="typeCode"/> + <result column="parent_id" property="parentId"/> + <result column="level" property="level"/> + <result column="create_time" property="createTime"/> + <result column="create_by" property="createBy"/> + <result column="update_time" property="updateTime"/> + <result column="update_by" property="updateBy"/> + <result column="disabled" property="disabled"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, type_name, type_code, parent_id, level, create_time, create_by, update_time, update_by, disabled + id + , type_name, type_code, parent_id, level, create_time, create_by, update_time, update_by, disabled </sql> <select id="pageList" resultType="com.ruoyi.system.vo.AssetStatisticsVO"> select t1.id as assetTypeIdSecond,t1.type_name as assetTypeNameSecond, - t2.id as assetTypeIdFirst,t2.type_name as assetTypeNameFirst + t2.id as assetTypeIdFirst,t2.type_name as assetTypeNameFirst FROM asset_type t1 left join asset_type t2 on t1.parent_id = t2.id where 1=1 and t1.parent_id != 0 - <if test="query.assetTypeIds != null and query.assetTypeIds.size()>0"> + <if test="query.assetMainIds != null and query.assetMainIds.size()>0"> AND t1.id IN + <foreach collection="query.assetMainIds" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + <if test="query.assetTypeIds != null and query.assetTypeIds.size()>0"> + AND t1.asset_type_id IN <foreach collection="query.assetTypeIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> - AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} - AND t2.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + AND t2.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </select> <select id="pageListNoLimit" resultType="com.ruoyi.system.vo.AssetStatisticsVO"> @@ -56,33 +63,89 @@ AND t2.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </select> <select id="pageListDetail" resultType="com.ruoyi.system.vo.AssetStatisticsDetailVO"> - select t1.* ,t2.type_name as assetTypeName,t4.dept_name as ownershipDeptName, + select t1.* ,t2.type_name as assetTypeName,t4.dept_name as ownershipDeptName, case when t1.use_dept_id is not null and t1.use_dept_id != '' then t3.dept_name when t1.address is not null and t1.address != '' then t1.address when t1.warehouse_name is not null and t1.warehouse_name != '' then t1.warehouse_name else null - end as useName from asset_main + end as useName from asset_main t1 left join asset_type t2 on t2.id = t1.asset_type_id left join t_dept t3 on t3.id = t1.use_dept_id left join t_dept t4 on t4.id = t1.ownership_dept_id where 1=1 - <if test="query.assetTypeIdSecond != null"> - AND t1.asset_type_id = #{query.assetTypeIdSecond} + <if test="query.category != null"> + AND t1.category = #{query.category} </if> <if test="query.deptId != null"> AND t1.asset_type_id = #{query.assetTypeIdSecond} </if> - AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} <if test="query.assetMainIds != null and query.assetMainIds.size()>0"> AND t1.id IN <foreach collection="query.assetMainIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> + <if test="query.deptIds != null and query.deptIds.size()>0"> + AND t1.ownership_dept_id IN + <foreach collection="query.deptIds" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> - order by t1.create_time desc + order by t1.create_time desc + + </select> + <select id="pageListInventory" resultType="com.ruoyi.system.vo.AssetInventoryVO"> + select t1.name as assetTypeNameSecond,t1.id as assetTypeIdSecond, + t2.name as assetTypeNameFirst,t2.id as assetTypeIdFirst + from asset_type t1 + left join asset_type t2 on t1.parent_id = t2.id + where t1.parent_id != 0 + <if test="query.assetTypeIds != null and query.assetTypeIds.size()>0"> + AND t1.id IN + <foreach collection="query.assetTypeIds" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + and t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + and t2.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + </select> + <select id="pageListInventoryDetail" resultType="com.ruoyi.system.vo.AssetStatisticsDetailVO"> + select t1.*,t2.*,case + when t1.use_dept_id is not null and t1.use_dept_id != '' then t3.dept_name + when t1.address is not null and t1.address != '' then t1.address + when t1.warehouse_name is not null and t1.warehouse_name != '' then t1.warehouse_name + else null + end as useName, + + from asset_inventory_record t1 + left join asset_main t2 on t1.asset_main_id = t2.id + left join t_dept t3 on t3.id = t1.use_dept_id + left join t_dept t4 on t4.id = t1.ownership_dept_id + where 1=1 + <if test="query.category != null and query.category!=''"> + AND t2.category = #{query.category} + </if> + + <if test="query.assetStatus != null and query.assetStatus!=''"> + and t2.asset_status like concat('%',#{query.assetStatus},'%') + </if> + <if test="query.deptIds != null and query.deptIds.size()>0"> + AND t2.ownership_dept_id IN + <foreach collection="query.deptIds" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + <if test="query.assetMainIds != null and query.assetMainIds.size()>0"> + AND t2.id IN + <foreach collection="query.assetMainIds" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + order by t1.create_time desc </select> -- Gitblit v1.7.1