feat(oa): 新增项目工艺卡和发货单统计功能

- 在 IOaProcessCardService 接口中新增 queryProjectList 方法
- 在 OaProcessCardController 中添加 /projectList 接口用于查询项目列表
- 实现 OaProcessCardServiceImpl 中的 queryProjectList 方法逻辑
- 统计每个项目的工艺卡和发货单数量并返回
- 新增 SysOaProjectVo 字段 processCardCount 和 deliveryOrderCount
- 注入 SysOaProjectMapper 和 OaDeliveryOrderMapper 依赖
- 使用 BeanUtil 转换 SysOaProject 到 SysOaProjectVo 对象
- 添加相关 import 引用及必要的 Java 工具类导入
This commit is contained in:
2025-12-13 15:20:17 +08:00
parent cbd307160e
commit f0e9f9626f
4 changed files with 53 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
@@ -106,4 +107,10 @@ public class OaProcessCardController extends BaseController {
public R<Void> insertProcessCard(@Validated(AddGroup.class) @RequestBody OaProcessCardBo bo) {
return toAjax(iOaProcessCardService.insertProcessCard(bo));
}
//查询所有项目并且带上工艺卡和发货单数量
@GetMapping("/projectList")
public R<List<SysOaProjectVo>> projectList() {
return R.ok(iOaProcessCardService.queryProjectList());
}
}

View File

@@ -280,4 +280,8 @@ public class SysOaProjectVo {
//生产结项状态
private Integer productStatus;
private Long processCardCount;
private Long deliveryOrderCount;
}

View File

@@ -5,6 +5,7 @@ import com.ruoyi.oa.domain.vo.OaProcessCardVo;
import com.ruoyi.oa.domain.bo.OaProcessCardBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import java.util.Collection;
import java.util.List;
@@ -48,4 +49,6 @@ public interface IOaProcessCardService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
Boolean insertProcessCard(OaProcessCardBo bo);
List<SysOaProjectVo> queryProjectList();
}

View File

@@ -9,8 +9,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.OaProcessCardDetail;
import com.ruoyi.oa.domain.SysOaProject;
import com.ruoyi.oa.domain.bo.OaProcessCardDetailBo;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import com.ruoyi.oa.mapper.OaProcessCardDetailMapper;
import com.ruoyi.oa.mapper.SysOaProjectMapper;
import com.ruoyi.oa.service.IOaProcessCardDetailService;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
@@ -19,9 +22,12 @@ import com.ruoyi.oa.domain.bo.OaProcessCardBo;
import com.ruoyi.oa.domain.vo.OaProcessCardVo;
import com.ruoyi.oa.domain.OaProcessCard;
import com.ruoyi.oa.mapper.OaProcessCardMapper;
import com.ruoyi.oa.mapper.OaDeliveryOrderMapper;
import com.ruoyi.oa.domain.OaDeliveryOrder;
import com.ruoyi.oa.service.IOaProcessCardService;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -41,6 +47,10 @@ public class OaProcessCardServiceImpl implements IOaProcessCardService {
private final OaProcessCardDetailMapper oaProcessCardDetailMapper;
private final SysOaProjectMapper sysOaProjectMapper;
private final OaDeliveryOrderMapper oaDeliveryOrderMapper;
/**
* 查询工艺卡主
*/
@@ -176,4 +186,33 @@ public class OaProcessCardServiceImpl implements IOaProcessCardService {
}
return flag;
}
@Override
public List<SysOaProjectVo> queryProjectList() {
// 拿到项目名字projectName projectNum projectCode
List<SysOaProject> sysOaProjects = sysOaProjectMapper.selectList();
// 现在已经有了projectId然后需要看到工艺还是发货哪个地方绑定了这个projectId
List<SysOaProjectVo> sysOaProjectVos = sysOaProjects.stream()
.map(sysOaProject -> {
SysOaProjectVo vo = BeanUtil.toBean(sysOaProject, SysOaProjectVo.class);
Long projectId = sysOaProject.getProjectId();
// 统计工艺卡数量(未删除)
Long processCardCount = baseMapper.selectCount(
Wrappers.<OaProcessCard>lambdaQuery()
.eq(OaProcessCard::getProjectId, projectId)
.eq(OaProcessCard::getDelFlag, 0)
);
vo.setProcessCardCount(processCardCount);
// 统计送货单数量(未删除)
Long deliveryOrderCount = oaDeliveryOrderMapper.selectCount(
Wrappers.<OaDeliveryOrder>lambdaQuery()
.eq(OaDeliveryOrder::getProjectId, projectId)
.eq(OaDeliveryOrder::getDelFlag, 0)
);
vo.setDeliveryOrderCount(deliveryOrderCount);
return vo;
})
.collect(Collectors.toList());
return sysOaProjectVos;
}
}