| | |
| | | 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; |
| | |
| | | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | |
| | | private final AssetMainService assetMainService; |
| | | private final AssetTypeService assetTypeService; |
| | | private final AssetInventoryRecordService assetInventoryRecordService; |
| | | |
| | | @Override |
| | | public List<AssetTypeTreeVO> getAssetTypeTree() { |
| | |
| | | .stream() |
| | | .map(AssetMain::getAssetTypeId) |
| | | .collect(Collectors.toList()); |
| | | query.setAssetTypeIds(assetTypeIds); |
| | | query.setAssetMainIds(assetTypeIds); |
| | | if (assetTypeIds.isEmpty()){ |
| | | return new PageInfo<>(); |
| | | } |
| | |
| | | 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)); |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |