[add] 获取项目物资设备清单总数据
This commit is contained in:
@ -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 {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// /**
|
||||
// * 导入物资设备清单
|
||||
// */
|
||||
|
@ -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;
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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=pid,value=子节点列表)
|
||||
* @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());
|
||||
}
|
||||
|
Reference in New Issue
Block a user