[add] 获取项目物资设备清单总数据

This commit is contained in:
lcj
2025-08-19 22:29:46 +08:00
parent 85f9d9b88e
commit ce09d8ba9c
4 changed files with 163 additions and 68 deletions

View File

@ -1,28 +1,30 @@
package org.dromara.design.controller;
import java.io.IOException;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.RequiredArgsConstructor;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.design.domain.BusBillofquantities;
import org.dromara.design.domain.bo.*;
import org.dromara.design.domain.vo.DetailsMaterialAndEquipmentApprovalRes;
import org.dromara.design.domain.vo.ObtainTheListRes;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.design.domain.bo.ImportExcelFileReq;
import org.dromara.design.domain.bo.ObtainAllVersionNumbersReq;
import org.dromara.design.domain.bo.ObtainTheListReq;
import org.dromara.design.domain.bo.SheetListReq;
import org.dromara.design.domain.vo.BusBillofquantitiesMaterialTotalVo;
import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo;
import org.dromara.design.domain.vo.DetailsMaterialAndEquipmentApprovalRes;
import org.dromara.design.domain.vo.ObtainTheListRes;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 工程量清单版本
*
@ -57,6 +59,16 @@ public class BusBillofquantitiesVersionsController extends BaseController {
return busBillofquantitiesVersionsService.obtainAllVersionNumbers(bo, pageQuery);
}
/**
* 获取物资设备清单总数据
*/
@SaCheckPermission("design:billofquantitiesVersions:materialTotal")
@GetMapping("/materialTotal/{projectId}")
public R<List<BusBillofquantitiesMaterialTotalVo>> queryMaterialTotalListByProject(@NotNull(message = "项目主键不能为空")
@PathVariable Long projectId) {
return R.ok(busBillofquantitiesVersionsService.queryMaterialTotalListByProject(projectId));
}
/**
* 获取指定版本的sheet
*/
@ -85,9 +97,6 @@ public class BusBillofquantitiesVersionsController extends BaseController {
}
// /**
// * 导入物资设备清单
// */

View File

@ -0,0 +1,37 @@
package org.dromara.design.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author lilemy
* @date 2025-08-19 21:26
*/
@Data
public class BusBillofquantitiesMaterialTotalVo implements Serializable {
@Serial
private static final long serialVersionUID = -617143782154146988L;
/**
* 名称
*/
private String name;
/**
* 规格
*/
private String specification;
/**
* 单位
*/
private String unit;
/**
* 数量
*/
private BigDecimal quantity;
}

View File

@ -1,15 +1,14 @@
package org.dromara.design.service;
import org.dromara.design.domain.BusBillofquantities;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.design.domain.BusBillofquantitiesVersions;
import org.dromara.design.domain.bo.*;
import org.dromara.design.domain.vo.BusBillofquantitiesMaterialTotalVo;
import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo;
import org.dromara.design.domain.vo.DetailsMaterialAndEquipmentApprovalRes;
import org.dromara.design.domain.vo.ObtainTheListRes;
import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo;
import org.dromara.design.domain.BusBillofquantitiesVersions;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import java.util.Collection;
@ -94,4 +93,11 @@ public interface IBusBillofquantitiesVersionsService extends IService<BusBillofq
* 物资设备清单审批详情
*/
DetailsMaterialAndEquipmentApprovalRes detailsMaterialAndEquipmentApproval(String versions);
/**
* 根据项目 id 获取物资设备清单总数据
*
* @param projectId 项目id
*/
List<BusBillofquantitiesMaterialTotalVo> queryMaterialTotalListByProject(Long projectId);
}

View File

@ -1,10 +1,17 @@
package org.dromara.design.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.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan;
import org.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit;
import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanAuditService;
import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanService;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
@ -13,30 +20,26 @@ import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.excel.coryUtils.ExcelReader;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.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 lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.common.utils.excel.ExcelDynamicReader;
import org.dromara.design.domain.*;
import org.dromara.design.domain.BusBillofquantities;
import org.dromara.design.domain.BusBillofquantitiesVersions;
import org.dromara.design.domain.bo.*;
import org.dromara.design.domain.dto.MaterialsAndEquipmentExcelDto;
import org.dromara.design.domain.vo.BusBillofquantitiesMaterialTotalVo;
import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo;
import org.dromara.design.domain.vo.DetailsMaterialAndEquipmentApprovalRes;
import org.dromara.design.domain.vo.ObtainTheListRes;
import org.dromara.design.mapper.BusBillofquantitiesVersionsMapper;
import org.dromara.design.service.IBusBillofquantitiesService;
import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanAuditService;
import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo;
import org.dromara.design.mapper.BusBillofquantitiesVersionsMapper;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@ -273,8 +276,49 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
return detailsMaterialAndEquipmentApprovalRes;
}
/**
* 根据项目 id 获取物资设备清单总数据
*
* @param projectId 项目id
*/
@Override
public List<BusBillofquantitiesMaterialTotalVo> queryMaterialTotalListByProject(Long projectId) {
List<BusBillofquantitiesVersions> billofquantitiesVersionsList = this.lambdaQuery()
.eq(BusBillofquantitiesVersions::getProjectId, projectId)
.eq(BusBillofquantitiesVersions::getWorkOrderType, "3")
.eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus())
.list();
if (CollUtil.isEmpty(billofquantitiesVersionsList)) {
return List.of();
}
Set<String> versions = billofquantitiesVersionsList.stream()
.map(BusBillofquantitiesVersions::getVersions).collect(Collectors.toSet());
List<BusBillofquantities> billofquantitiesList = busBillofquantitiesService.lambdaQuery()
.eq(BusBillofquantities::getProjectId, projectId)
.in(BusBillofquantities::getVersions, versions)
.list();
if (CollUtil.isEmpty(billofquantitiesList)) {
return List.of();
}
List<BusBillofquantitiesMaterialTotalVo> list = new ArrayList<>();
Map<String, List<BusBillofquantities>> map = billofquantitiesList.stream().collect(Collectors.groupingBy(BusBillofquantities::getName));
for (Map.Entry<String, List<BusBillofquantities>> entry : map.entrySet()) {
BusBillofquantitiesMaterialTotalVo vo = new BusBillofquantitiesMaterialTotalVo();
String key = entry.getKey();
List<BusBillofquantities> value = entry.getValue();
vo.setName(key);
vo.setSpecification(value.getFirst().getSpecification());
vo.setUnit(value.getFirst().getUnit());
BigDecimal sum = value.stream().map(BusBillofquantities::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
vo.setQuantity(sum);
list.add(vo);
}
return list;
}
/**
* 递归构建树形结构
*
* @param parentId 父节点ID顶级节点为0
* @param parentMap 父子映射表key=pidvalue=子节点列表)
* @return 组装好的子树列表
@ -397,7 +441,6 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
}
@Override
public TableDataInfo<BusBillofquantitiesVersionsVo> obtainAllVersionNumbers(ObtainAllVersionNumbersReq bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusBillofquantitiesVersions> lqw = Wrappers.lambdaQuery();
@ -439,7 +482,7 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('pickEquipmentList ')")
@EventListener(condition = "#processEvent.flowCode.endsWith('pickEquipmentList')")
public void processPlansHandler(ProcessEvent processEvent) {
log.info("招采清单审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
@ -536,7 +579,7 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('equipmentList ')")
@EventListener(condition = "#processTaskEvent.flowCode.endsWith('equipmentList')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("物资设备清单审核任务创建了{}", processTaskEvent.toString());
}