将供应商由建管转到新中大供应商,总体计划成本接口修改

This commit is contained in:
2025-12-11 20:28:31 +08:00
parent 4588f3f4c0
commit e7376086f9
26 changed files with 465 additions and 123 deletions

View File

@ -73,8 +73,7 @@ public class ExcelReader {
// 从MultipartFile获取输入流
try (InputStream stream = file.getInputStream();
org.apache.poi.ss.usermodel.Workbook workbook = isXlsx ?
new XSSFWorkbook(stream) : new HSSFWorkbook(stream)) {
Workbook workbook = WorkbookFactory.create(stream)) {
for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(sheetIndex);

View File

@ -35,7 +35,9 @@ import org.dromara.design.service.IBusBillofquantitiesService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.tender.domain.bo.TenderSupplierInputReq;
import org.dromara.tender.domain.vo.TenderSupplierInputVo;
import org.dromara.tender.service.ITenderSupplierInputService;
//import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.service.IXzdSupplierInfoService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -69,7 +71,8 @@ public class BusPurchaseDocController extends BaseController {
private final IBusBillofquantitiesService busBillofquantitiesService;
private final IBusMrpBaseService busMrpBaseService;
private final ITenderSupplierInputService tenderSupplierInputService;
private final IXzdSupplierInfoService xzdSupplierInfoService;
// private final ITenderSupplierInputService tenderSupplierInputService;
private final IBusLtnService busLtnService;
/**
@ -96,8 +99,8 @@ public class BusPurchaseDocController extends BaseController {
*/
@SaCheckPermission(value = {"cailiaoshebei:purchaseDoc:add","cailiaoshebei:purchaseDoc:edit"},mode = SaMode.OR)
@GetMapping("/getListByName")
public R<List<TenderSupplierInputVo>> getListByName(TenderSupplierInputReq req) {
return R.ok(tenderSupplierInputService.getListByName(req));
public R<List<XzdSupplierInfoVo>> getListByName(TenderSupplierInputReq req) {
return R.ok(xzdSupplierInfoService.getListByName(req));
}
/**

View File

@ -3,6 +3,7 @@ package org.dromara.cailiaoshebei.controller.app;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@ -30,7 +31,10 @@ import org.dromara.design.service.IBusBillofquantitiesService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.tender.domain.bo.TenderSupplierInputBo;
import org.dromara.tender.domain.vo.TenderSupplierInputVo;
import org.dromara.tender.service.ITenderSupplierInputService;
//import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.service.IXzdSupplierInfoService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -63,7 +67,9 @@ public class BusPurchaseDocAppController extends BaseController {
private final IBusBillofquantitiesService busBillofquantitiesService;
private final ITenderSupplierInputService tenderSupplierInputService;
// private final ITenderSupplierInputService tenderSupplierInputService;
@Resource
private IXzdSupplierInfoService supplierInfoService;
/**
@ -78,8 +84,8 @@ public class BusPurchaseDocAppController extends BaseController {
* 查询供应商入库列表
*/
@GetMapping("/supList")
public TableDataInfo<TenderSupplierInputVo> list(TenderSupplierInputBo bo, PageQuery pageQuery) {
return tenderSupplierInputService.queryPageList(bo, pageQuery);
public TableDataInfo<XzdSupplierInfoVo> list(XzdSupplierInfoBo bo, PageQuery pageQuery) {
return supplierInfoService.queryPageList(bo, pageQuery);
}
/**

View File

@ -33,7 +33,7 @@ import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
import org.dromara.tender.domain.vo.BusTenderPlanningLimitListVo;
import org.dromara.tender.service.IBusBiddingPlanService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
import org.dromara.tender.service.ITenderSupplierInputService;
//import org.dromara.tender.service.ITenderSupplierInputService;
import org.springframework.context.annotation.Lazy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;

View File

@ -31,7 +31,9 @@ import org.dromara.project.service.IBusProjectService;
import org.dromara.system.domain.SysUser;
import org.dromara.system.service.ISysUserService;
import org.dromara.tender.domain.TenderSupplierInput;
import org.dromara.tender.service.ITenderSupplierInputService;
//import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.xzd.domain.XzdSupplierInfo;
import org.dromara.xzd.service.IXzdSupplierInfoService;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -56,8 +58,10 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
@Resource
private IBusProjectService projectService;
// @Resource
// private ITenderSupplierInputService supplierInputService;
@Resource
private ITenderSupplierInputService supplierInputService;
private IXzdSupplierInfoService supplierInfoService;
@Resource
@Lazy
@ -195,7 +199,7 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
if (StringUtils.isNotBlank(custodianPhone) && !PhoneUtil.isPhone(custodianPhone)) {
throw new ServiceException("管理人手机号格式不正确", HttpStatus.BAD_REQUEST);
}
if (ObjectUtils.isNotEmpty(supplierId) && supplierInputService.getById(supplierId) == null) {
if (ObjectUtils.isNotEmpty(supplierId) && supplierInfoService.getById(supplierId) == null) {
throw new ServiceException("供应商不存在", HttpStatus.NOT_FOUND);
}
}
@ -253,9 +257,9 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
// 关联供应商名称
Long supplierId = contractor.getSupplierId();
if (supplierId != null) {
TenderSupplierInput supplierInput = supplierInputService.getById(supplierId);
if (supplierInput != null) {
contractorVo.setSupplierName(supplierInput.getSupplierName());
XzdSupplierInfo supplierInfo = supplierInfoService.getById(supplierId);
if (supplierInfo != null) {
contractorVo.setSupplierName(supplierInfo.getUnitName());
}
}
return contractorVo;

View File

@ -7,6 +7,7 @@ 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 jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.bidding.domain.BusBiddingLimitList;
@ -36,19 +37,31 @@ import org.dromara.design.exportUtil.bill.BillOfQuantitiesExport;
import org.dromara.design.mapper.BusBillofquantitiesVersionsMapper;
import org.dromara.design.service.IBusBillofquantitiesService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.project.domain.BusProjectDept;
import org.dromara.project.domain.vo.project.BusProjectVo;
import org.dromara.project.service.IBusProjectDeptService;
import org.dromara.project.service.IBusProjectService;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysOssService;
import org.dromara.tender.domain.BusBLimitListVersions;
import org.dromara.tender.domain.BusBillofquantitiesLimitList;
import org.dromara.tender.domain.vo.BusBLimitListVersionsVo;
import org.dromara.tender.service.IBusBLimitListVersionsService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService;
import org.dromara.xzd.domain.XzdProject;
import org.dromara.xzd.service.IXzdProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@ -73,9 +86,19 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
private final IBusBiddingLimitListService busBiddingLimitListService;
private final IBusBLimitListVersionsService busBLimitListVersionsService;
private final IBusBiddingLimitVersionsService busBiddingLimitVersions;
private final IXzdCbysZjhcbService xzdCbysZjhcbService;
@Lazy
@Resource
private IBusProjectService busProjectService;
@Lazy
@Resource
private IXzdProjectService xzdProjectService;
@Autowired
private ISysOssService ossService;
@Lazy
@Resource
private IBusProjectDeptService projectDeptService;
/**
* 查询工程量清单版本
@ -633,6 +656,32 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
if (!b) {
log.info("新增失败");
}
XzdCbysZjhcb zjhcb = new XzdCbysZjhcb();
BusProjectDept projectDept = projectDeptService.getBaseMapper().selectOne(new LambdaQueryWrapper<BusProjectDept>().eq(BusProjectDept::getProjectId, versions.getProjectId()));
if (projectDept != null){
zjhcb.setDeptId(projectDept.getDeptId());
}
zjhcb.setVesionId(busBLimitListVersions.getVersions());
zjhcb.setSysProjectId(versions.getProjectId());
String banBen = BatchNumberGenerator.generateBatchNumber("LXCBZTJHCB-");
zjhcb.setDocCode(banBen);
XzdProject xzdProject = xzdProjectService.getBaseMapper().selectOne(new LambdaQueryWrapper<XzdProject>().eq(XzdProject::getSysProjectId, versions.getProjectId()));
if (xzdProject != null){
zjhcb.setProjectId(xzdProject.getId());
zjhcb.setProjectLeader(xzdProject.getManagerResponsible());
zjhcb.setExecProjectManager(xzdProject.getManagerExecution());
zjhcb.setDocTitle(xzdProject.getProjectName());
}else {
zjhcb.setDocTitle(banBen);
}
zjhcb.setDocDate(LocalDate.now());
zjhcb.setBudgetCategory("1");
zjhcb.setContractAmount(BigDecimal.ZERO);
boolean save1 = xzdCbysZjhcbService.save(zjhcb);
if (!save1) {
log.info("新增失败");
}
}
}

View File

@ -8,6 +8,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.materials.domain.MatMaterials;
import org.dromara.tender.domain.vo.TenderSupplierInputVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import java.io.Serial;
import java.io.Serializable;
@ -56,7 +57,8 @@ public class MatMaterialsVo implements Serializable {
* 公司信息
*/
@ExcelProperty(value = "公司信息")
private TenderSupplierInputVo companyVo;
// private TenderSupplierInputVo companyVo;
private XzdSupplierInfoVo companyVo;
/**
* 项目id

View File

@ -33,7 +33,8 @@ import org.dromara.materials.mapper.MatMaterialsMapper;
import org.dromara.materials.service.*;
import org.dromara.project.domain.BusProject;
import org.dromara.project.service.IBusProjectService;
import org.dromara.tender.service.ITenderSupplierInputService;
//import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.xzd.service.IXzdSupplierInfoService;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
@ -54,8 +55,10 @@ import java.util.stream.Collectors;
public class MatMaterialsServiceImpl extends ServiceImpl<MatMaterialsMapper, MatMaterials>
implements IMatMaterialsService {
// @Resource
// private ITenderSupplierInputService tenderSupplierInputService;
@Resource
private ITenderSupplierInputService tenderSupplierInputService;
private IXzdSupplierInfoService supplierInfoService;
@Resource
private IBusProjectService projectService;
@ -233,7 +236,7 @@ public class MatMaterialsServiceImpl extends ServiceImpl<MatMaterialsMapper, Mat
if (companyId == null) {
throw new ServiceException("请填写公司ID", HttpStatus.BAD_REQUEST);
}
if (tenderSupplierInputService.getById(companyId) == null) {
if (supplierInfoService.getById(companyId) == null) {
throw new ServiceException("对应公司不存在", HttpStatus.BAD_REQUEST);
}
if (projectId == null) {
@ -285,7 +288,7 @@ public class MatMaterialsServiceImpl extends ServiceImpl<MatMaterialsMapper, Mat
// 关联查询项目信息
Long companyId = materials.getCompanyId();
if (companyId != null) {
materialsVo.setCompanyVo(tenderSupplierInputService.queryById(companyId));
materialsVo.setCompanyVo(supplierInfoService.queryById(companyId));
}
// 关联对象存储文件信息
String fileOssId = materials.getFileOssId();

View File

@ -139,7 +139,7 @@ public class BusProjectCreateReq implements Serializable {
/**
* 所属部门列表
*/
private List<Long> deptIds;
private Long deptIds;
/**
* xzd项目id

View File

@ -155,7 +155,7 @@ public class BusProjectUpdateReq implements Serializable {
/**
* 所属部门列表
*/
private List<Long> deptIds;
private Long deptIds;
/**
* 省份

View File

@ -421,18 +421,16 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
throw new ServiceException("新增用户与项目关联失败,数据库异常", HttpStatus.ERROR);
}
// 保存项目与部门的关联
List<Long> deptIds = req.getDeptIds();
if (CollUtil.isNotEmpty(deptIds)) {
List<BusProjectDept> projectDeptList = deptIds.stream().map(deptId -> {
BusProjectDept projectDept = new BusProjectDept();
projectDept.setDeptId(deptId);
projectDept.setProjectId(projectId);
return projectDept;
}).toList();
boolean saveBatch = projectDeptService.saveBatch(projectDeptList);
if (!saveBatch) {
throw new ServiceException("保存项目与部门的关联失败", HttpStatus.ERROR);
Long count = projectDeptService.getBaseMapper().selectCount(new LambdaQueryWrapper<BusProjectDept>().eq(BusProjectDept::getProjectId, projectId));
if (count > 0) {
throw new ServiceException("项目已存在部门关联,请勿重复添加", HttpStatus.BAD_REQUEST);
}
BusProjectDept projectDept = new BusProjectDept();
projectDept.setDeptId(req.getDeptIds());
projectDept.setProjectId(projectId);
boolean save1 = projectDeptService.save(projectDept);
if (!save1) {
throw new ServiceException("新增项目与部门关联失败,数据库异常", HttpStatus.ERROR);
}
// 异步执行数据同步
self.insertProjectSyncThing(projectId)
@ -570,41 +568,19 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
throw new ServiceException("打卡范围增加失败", HttpStatus.ERROR);
}
}
List<Long> deptIds = req.getDeptIds();
// 根据项目查询部门
List<Long> oldDeptIds = projectDeptService.lambdaQuery()
.eq(BusProjectDept::getProjectId, project.getId())
.list()
.stream().map(BusProjectDept::getDeptId)
.toList();
if (CollUtil.isEmpty(deptIds) && CollUtil.isEmpty(oldDeptIds)) {
return true;
} else if (CollUtil.isEmpty(deptIds) && CollUtil.isNotEmpty(oldDeptIds)) {
//删除所有旧部门
boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class)
.eq(BusProjectDept::getProjectId, project.getId()));
if (!remove) {
throw new ServiceException("删除项目部门失败", HttpStatus.ERROR);
}
} else if (CollUtil.isNotEmpty(deptIds)) {
if (CollUtil.isNotEmpty(oldDeptIds)) {
//删除所有旧部门
boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class)
.eq(BusProjectDept::getProjectId, project.getId()));
if (!remove) {
throw new ServiceException("删除项目部门失败", HttpStatus.ERROR);
}
}
//新增部门
List<BusProjectDept> busProjectDepts = deptIds.stream().map(deptId -> {
if (req.getDeptIds() !=null) {
BusProjectDept projectDept = new BusProjectDept();
projectDept.setDeptId(deptId);
projectDept.setDeptId(req.getDeptIds());
projectDept.setProjectId(project.getId());
return projectDept;
}).toList();
boolean save = projectDeptService.saveBatch(busProjectDepts);
if (!save) {
throw new ServiceException("部门增加失败", HttpStatus.ERROR);
boolean save1 = projectDeptService.save(projectDept);
if (!save1) {
throw new ServiceException("新增项目与部门关联失败,数据库异常", HttpStatus.ERROR);
}
}
return true;

View File

@ -90,7 +90,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
private final ISubConstructionUserService constructionUserService;
private final ISubContractorService contractorService;
@Lazy
@Resource
private ISubContractorService contractorService;
@Lazy
@Resource

View File

@ -3,6 +3,7 @@ package org.dromara.tender.controller;
import java.util.List;
import cn.dev33.satoken.annotation.SaMode;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
@ -14,7 +15,10 @@ import org.dromara.tender.domain.bo.*;
import org.dromara.tender.domain.vo.*;
import org.dromara.tender.service.IBusBiddingPlanAnnexService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
import org.dromara.tender.service.ITenderSupplierInputService;
//import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.service.IXzdSupplierInfoService;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
@ -48,16 +52,18 @@ public class BusBiddingPlanController extends BaseController {
private final IBusBillofquantitiesLimitListService busBillofquantitiesLimitListService;
@Lazy
private final IBusBiddingPlanAnnexService busBiddingPlanAnnexService;
// private final ITenderSupplierInputService tenderSupplierInputService;
@Lazy
private final ITenderSupplierInputService tenderSupplierInputService;
@Resource
private IXzdSupplierInfoService supplierInfoService;
/**
* 查询供应商入库列表
*/
@SaCheckPermission(value = {"tender:biddingPlan:list","tender:biddingPlan:add","tender:biddingPlan:edit"},mode = SaMode.OR)
@GetMapping("/getSupplierInputList")
public R<List<TenderSupplierInputVo>> list(TenderSupplierInputBo bo) {
return R.ok(tenderSupplierInputService.getList(bo));
public R<List<XzdSupplierInfoVo>> list(XzdSupplierInfoBo bo) {
return R.ok(supplierInfoService.getList(bo));
}
/**

View File

@ -114,4 +114,13 @@ public interface IBusBillofquantitiesLimitListService extends IService<BusBillof
List<BusBillofquantitiesLimitListWuZiVo> queryVoList(BusBillofquantitiesLimitListBo bo);
List<BusBillofquantitiesLimitListVo> pList(BusBillofquantitiesLimitListBo bo);
/**
* 立项及成本-成本预算-总体计划成本获取限价一览列表
* @param bo
* @return
*/
List<BusBillofquantitiesLimitListVo> getZjhcbTree(BusBillofquantitiesLimitListBo bo);
List<BusBillofquantitiesLimitListVo> getVoByVersion(Long sysProjectId, String vesion);
}

View File

@ -3,6 +3,7 @@ package org.dromara.tender.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
@ -22,8 +23,11 @@ import org.dromara.tender.domain.vo.*;
import org.dromara.tender.mapper.BusTenderPlanningLimitListMapper;
import org.dromara.tender.service.IBusBiddingPlanAnnexService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
import org.dromara.tender.service.ITenderSupplierInputService;
//import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.xzd.domain.XzdSupplierInfo;
import org.dromara.xzd.service.IXzdSupplierInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.dromara.tender.domain.bo.BusBiddingPlanBo;
import org.dromara.tender.mapper.BusBiddingPlanMapper;
@ -64,8 +68,11 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
private ISysOssService ossService;
@Autowired
private ITenderSupplierInputService tenderSupplierInputService;
// @Autowired
// private ITenderSupplierInputService tenderSupplierInputService;
@Lazy
@Resource
private IXzdSupplierInfoService supplierInfoService;
/**
* 查询招标计划
@ -284,9 +291,10 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
List<BusBiddingPlanAnnexVo> planAnnexVoList = busBiddingPlanAnnexService.queryList(planAnnex);
BusBiddingPlan biddingPlan = baseMapper.selectById(bo.getId());
//冗余中标单位名称
TenderSupplierInput tenderSupplierInput = tenderSupplierInputService.getById(bo.getWinningBidderId());
// TenderSupplierInput tenderSupplierInput = tenderSupplierInputService.getById(bo.getWinningBidderId());
XzdSupplierInfo supplierInfo = supplierInfoService.getById(bo.getWinningBidderId());
biddingPlan.setWinningBidderId(bo.getWinningBidderId());
biddingPlan.setWinningBidder(tenderSupplierInput.getSupplierName());
biddingPlan.setWinningBidder(supplierInfo.getUnitName());
if (biddingPlan.getPlannedBiddingTime() == null){
throw new ServiceException("计划招标时间不能为空!!");
}

View File

@ -368,6 +368,34 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
return listVoList;
}
@Override
public List<BusBillofquantitiesLimitListVo> getZjhcbTree(BusBillofquantitiesLimitListBo bo) {
//获取所有数据
List<BusBillofquantitiesLimitListVo> listVoList = baseMapper.selectVoList(new LambdaQueryWrapper<BusBillofquantitiesLimitList>()
.eq(bo.getProjectId() != null,BusBillofquantitiesLimitList::getProjectId, bo.getProjectId())
.eq(StringUtils.isNotBlank(bo.getType()),BusBillofquantitiesLimitList::getType, bo.getType())
.eq(StringUtils.isNotBlank(bo.getVersions()),BusBillofquantitiesLimitList::getVersions, bo.getVersions())
.eq(StringUtils.isNotBlank(bo.getSheet()),BusBillofquantitiesLimitList::getSheet, bo.getSheet()));
//构建父子映射
Map<String, List<BusBillofquantitiesLimitListVo>> parentMap = listVoList.stream()
.collect(Collectors.groupingBy(BusBillofquantitiesLimitListVo::getPid));
//递归组装树形结构
List<BusBillofquantitiesLimitListVo> treeList = buildTree("0", parentMap);
for (BusBillofquantitiesLimitListVo item : treeList) {
calculateTreePrice(item);
}
return treeList;
}
@Override
public List<BusBillofquantitiesLimitListVo> getVoByVersion(Long sysProjectId, String vesion) {
return baseMapper.selectVoList(new LambdaQueryWrapper<BusBillofquantitiesLimitList>()
.eq(BusBillofquantitiesLimitList::getProjectId, sysProjectId)
.eq(BusBillofquantitiesLimitList::getVersions, vesion)
.isNotNull(BusBillofquantitiesLimitList::getUnitPrice));
}
/**
* 递归构建树形结构
*

View File

@ -1,7 +1,6 @@
package org.dromara.websocket.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.websocket.domain.ChatHistory;
import org.dromara.websocket.mapper.ChatHistoryMapper;
import org.dromara.websocket.service.IChatHistoryService;

View File

@ -15,6 +15,8 @@ import org.dromara.common.log.enums.BusinessType;
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.tender.domain.bo.TenderSupplierInputBo;
import org.dromara.tender.domain.vo.TenderSupplierInputVo;
import org.dromara.xzd.domain.bo.XzdProjectBo;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo;
@ -46,6 +48,15 @@ public class XzdSupplierInfoController extends BaseController {
private final IXzdSupplierOpenBankService xzdSupplierOpenBankService;
private final IXzdYhxxService xzdYhxxService;
/**
* 查询供应商入库列表
*/
@SaCheckPermission("supplierInput:supplierInput:getList")
@GetMapping("/getList")
public R<List<XzdSupplierInfoVo>> list(XzdSupplierInfoBo bo) {
return R.ok(xzdSupplierInfoService.getList(bo));
}
/**
* 查询供应商信息列表
*/

View File

@ -2,10 +2,15 @@ package org.dromara.xzd.costProjectApproval.costBudget.controller;
import java.util.List;
import cn.dev33.satoken.annotation.SaMode;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
import org.dromara.tender.enums.LimitListTypeEnum;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -35,6 +40,26 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
public class XzdCbysZjhcbController extends BaseController {
private final IXzdCbysZjhcbService xzdCbysZjhcbService;
private final IBusBillofquantitiesLimitListService busBillofquantitiesLimitListService;
/**
* 获取指定版本的sheet
*/
@SaCheckPermission(value = {"costBudget:cbysZjhcb:list","costBudget:cbysZjhcb:add","costBudget:cbysZjhcb:edit"},mode = SaMode.OR)
@GetMapping("/sheetList")
public R<List<String>> sheetList(XzdCbysZjhcbBo bo) {
return R.ok(xzdCbysZjhcbService.sheetList(bo));
}
/**
* 查询限价一览列表
*/
@SaCheckPermission(value = {"costBudget:cbysZjhcb:list","costBudget:cbysZjhcb:add","costBudget:cbysZjhcb:edit"},mode = SaMode.OR)
@GetMapping("/getTree")
public R<List<BusBillofquantitiesLimitListVo>> getTree(BusBillofquantitiesLimitListBo bo) {
bo.setType(LimitListTypeEnum.COMPANY.getCode());
return R.ok(xzdCbysZjhcbService.getTree(bo));
}
/**
* 查询立项及成本-成本预算-总体计划成本列表

View File

@ -35,6 +35,11 @@ public class XzdCbysZjhcb extends BaseEntity {
*/
private Long deptId;
/**
*限价一览版本id
*/
private String vesionId;
/**
* 单据编码(带*,必填)
*/
@ -54,6 +59,10 @@ public class XzdCbysZjhcb extends BaseEntity {
* 工程项目(带*,必填)
*/
private Long projectId;
/**
* 系统项目id
*/
private Long sysProjectId;
/**
* 预算分类(带*,必填)

View File

@ -1,5 +1,6 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -30,6 +31,12 @@ public class XzdCbysZjhcbBo extends BaseEntity {
private Long id;
/**
*限价一览版本id
*/
private String vesionId;
/**
* 部门id
*/
@ -56,6 +63,10 @@ public class XzdCbysZjhcbBo extends BaseEntity {
*/
@NotNull(message = "工程项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 系统项目id
*/
private Long sysProjectId;
/**
* 预算分类(带*,必填)
@ -166,12 +177,17 @@ public class XzdCbysZjhcbBo extends BaseEntity {
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjl;
/**
* 成本明细
* 限价一览
*/
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
List<BusBillofquantitiesLimitListBo> bos;
/**
* 税收成本
*/
List<XzdCbysSscb> xzdCbysSscb;
// /**
// * 成本明细
// */
// List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
//
// /**
// * 税收成本
// */
// List<XzdCbysSscb> xzdCbysSscb;
}

View File

@ -4,6 +4,8 @@ import java.math.BigDecimal;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -40,6 +42,11 @@ public class XzdCbysZjhcbVo implements Serializable {
private Long id;
/**
*限价一览版本id
*/
private String vesionId;
/**
* 部门id
*/
@ -64,6 +71,10 @@ public class XzdCbysZjhcbVo implements Serializable {
*/
@ExcelProperty(value = "单据日期")
private LocalDate docDate;
/**
* 系统项目id
*/
private Long sysProjectId;
/**
* 工程项目(带*,必填)
@ -213,10 +224,14 @@ public class XzdCbysZjhcbVo implements Serializable {
/**
* 成本明细
*/
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
// List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
//
// /**
// * 税收成本
// */
// List<XzdCbysSscb> xzdCbysSscb;
/**
* 税收成本
* 限价一览
*/
List<XzdCbysSscb> xzdCbysSscb;
List<BusBillofquantitiesLimitListVo> bos;
}

View File

@ -1,5 +1,7 @@
package org.dromara.xzd.costProjectApproval.costBudget.service;
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb;
@ -69,4 +71,16 @@ public interface IXzdCbysZjhcbService extends IService<XzdCbysZjhcb>{
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
String queryNameById(Long id);
/**
* 查询指定版本的sheet通过项目id
*/
List<String> sheetList(XzdCbysZjhcbBo bo);
/**
* 查询限价一览列表
* @param bo
* @return
*/
List<BusBillofquantitiesLimitListVo> getTree(BusBillofquantitiesLimitListBo bo);
}

View File

@ -3,6 +3,7 @@ package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
@ -21,6 +22,12 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.tender.domain.BusBillofquantitiesLimitList;
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
import org.dromara.tender.enums.LimitListTypeEnum;
import org.dromara.tender.service.IBusBLimitListVersionsService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
import org.dromara.xzd.costProjectApproval.costBudget.service.*;
import org.dromara.xzd.domain.vo.XzdProjectManagerApprovalVo;
@ -28,13 +35,17 @@ import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbMapper;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
/**
* 立项及成本-成本预算-总体计划成本Service业务层处理
@ -57,6 +68,10 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
private IXzdCbysZjhcbFubiaoService fubiaoService;
@Autowired
private SysOssServiceImpl sysOssService;
@Lazy
@Resource
private IBusBillofquantitiesLimitListService limitListService;
/**
* 查询立项及成本-成本预算-总体计划成本
@ -145,21 +160,21 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
if (flag) {
bo.setId(add.getId());
}
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
throw new ServiceException("税收成本不能为空");
}
// if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
// throw new ServiceException("税收成本不能为空");
// }
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
throw new ServiceException("变更记录不能为空");
}
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
throw new ServiceException("成本明细不能为空");
}
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(add.getId());});
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
// if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
// throw new ServiceException("成本明细不能为空");
// }
// bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(add.getId());});
// xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(add.getId());});
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(add.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
// bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(add.getId());});
// fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
return flag;
}
@ -174,24 +189,57 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
public Boolean updateByBo(XzdCbysZjhcbBo bo) {
XzdCbysZjhcb update = MapstructUtils.convert(bo, XzdCbysZjhcb.class);
validEntityBeforeSave(update);
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
throw new ServiceException("税收成本不能为空");
}
// if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
// throw new ServiceException("税收成本不能为空");
// }
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
throw new ServiceException("变更记录不能为空");
}
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
throw new ServiceException("成本明细不能为空");
}
// if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
// throw new ServiceException("成本明细不能为空");
// }
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, bo.getId()));
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, bo.getId()));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, bo.getId()));
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(bo.getId());});
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
// xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, bo.getId()));
// fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, bo.getId()));
// bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(bo.getId());});
// xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(bo.getId());});
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(bo.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
// bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(bo.getId());});
// fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
if (bo.getBos() != null){
BigDecimal totalTaxInclAmount = BigDecimal.ZERO; //含税金额
BigDecimal totalTaxAmount = BigDecimal.ZERO; //税额
BigDecimal totalTaxExclAmount = BigDecimal.ZERO; //不含税金额
for (BusBillofquantitiesLimitListBo item : bo.getBos()) {//计算含税金额
BigDecimal amount = item.getQuantity().multiply(item.getUnitPrice()).setScale(4, RoundingMode.HALF_UP);
//税率
BigDecimal rate = BigDecimal.ZERO;
if (item.getTaxRate() != null){
rate=item.getTaxRate().divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP);
}
//税额
BigDecimal taxAmount = amount.multiply(rate).setScale(4, RoundingMode.HALF_UP);
//不含税金额
BigDecimal taxExclAmount = amount.subtract(taxAmount).setScale(4, RoundingMode.HALF_UP);
totalTaxInclAmount = totalTaxInclAmount.add(amount);
totalTaxAmount = totalTaxAmount.add(taxAmount);
totalTaxExclAmount = totalTaxExclAmount.add(taxExclAmount);
}
if (totalTaxInclAmount.compareTo(update.getTotalTaxInclAmount()) != 0){
throw new ServiceException("含税金额不一致");
}
if (totalTaxAmount.compareTo(update.getTotalTaxAmount()) != 0){
throw new ServiceException("税额不一致");
}
if (totalTaxExclAmount.compareTo(update.getTotalTaxExclAmount()) != 0){
throw new ServiceException("不含税金额不一致");
}
update.setTotalTaxInclAmount(totalTaxInclAmount);
update.setTotalTaxAmount(totalTaxAmount);
update.setTotalTaxExclAmount(totalTaxExclAmount);
Boolean b = limitListService.updateByBo(bo.getBos());
}
return baseMapper.updateById(update) > 0;
}
@ -241,7 +289,29 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
return vo != null ? vo.getDocTitle():"";
}
@Override
public List<String> sheetList(XzdCbysZjhcbBo bo) {
XzdCbysZjhcbVo xzdCbysZjhcbVo = baseMapper.selectVoOne(new LambdaQueryWrapper<XzdCbysZjhcb>().eq(XzdCbysZjhcb::getSysProjectId, bo.getSysProjectId()));
if (xzdCbysZjhcbVo != null){
List<BusBillofquantitiesLimitList> busBillofquantitiesLimitLists = limitListService.getBaseMapper().selectList(new LambdaQueryWrapper<BusBillofquantitiesLimitList>()
.select(BusBillofquantitiesLimitList::getSheet)
.eq(xzdCbysZjhcbVo.getSysProjectId() != null, BusBillofquantitiesLimitList::getProjectId, xzdCbysZjhcbVo.getSysProjectId())
.eq(BusBillofquantitiesLimitList::getType, LimitListTypeEnum.COMPANY.getCode())
.eq(StringUtils.isNotBlank(xzdCbysZjhcbVo.getVesionId()), BusBillofquantitiesLimitList::getVersions, xzdCbysZjhcbVo.getVesionId())
.orderByAsc(BusBillofquantitiesLimitList::getSheet)
.groupBy(BusBillofquantitiesLimitList::getSheet));
return busBillofquantitiesLimitLists.stream()
.filter(Objects::nonNull)
.map(BusBillofquantitiesLimitList::getSheet)
.collect(Collectors.toList());
}
return List.of();
}
@Override
public List<BusBillofquantitiesLimitListVo> getTree(BusBillofquantitiesLimitListBo bo) {
return limitListService.getZjhcbTree(bo);
}
/**
@ -251,10 +321,12 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
private void getHttk(XzdCbysZjhcbVo vo) {
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjls = xzdCbysZtjhcbBgjlService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, vo.getId()));
vo.setXzdCbysZtjhcbBgjl(xzdCbysZtjhcbBgjls);
List<XzdCbysSscb> xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, vo.getId()));
vo.setXzdCbysSscb(xzdCbysSscbs);
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, vo.getId()));
vo.setXzdCbysWgcbtbFubiao(xzdCbysWgcbtbFubiaos);
// List<XzdCbysSscb> xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, vo.getId()));
// vo.setXzdCbysSscb(xzdCbysSscbs);
// List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, vo.getId()));
// vo.setXzdCbysWgcbtbFubiao(xzdCbysWgcbtbFubiaos);
List<BusBillofquantitiesLimitListVo> vos = limitListService.getVoByVersion(vo.getSysProjectId(), vo.getVesionId());
vo.setBos(vos);
}

View File

@ -1,7 +1,7 @@
package org.dromara.xzd.service;
import org.dromara.common.core.domain.R;
import org.dromara.xzd.domain.vo.XzdCustomertypeInfoVo;
import org.dromara.tender.domain.bo.TenderSupplierInputReq;
import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
@ -74,4 +74,14 @@ public interface IXzdSupplierInfoService extends IService<XzdSupplierInfo>{
R<List<XzdCustomertypeVo>> typeList();
String queryNameById(Long id);
/**
* 根据名称查询供应商信息
*
* @param req
* @return
*/
List<XzdSupplierInfoVo> getListByName(TenderSupplierInputReq req);
List<XzdSupplierInfoVo> getList(XzdSupplierInfoBo bo);
}

View File

@ -22,6 +22,15 @@ import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.system.service.impl.SysUserServiceImpl;
import org.dromara.tender.domain.BusBiddingPlan;
import org.dromara.tender.domain.BusBillofquantitiesLimitList;
import org.dromara.tender.domain.BusTenderPlanningLimitList;
import org.dromara.tender.domain.TenderSupplierInput;
import org.dromara.tender.domain.bo.TenderSupplierInputReq;
import org.dromara.tender.domain.vo.TenderSupplierInputVo;
import org.dromara.tender.service.IBusBiddingPlanService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
import org.dromara.tender.service.IBusTenderPlanningLimitListService;
import org.dromara.xzd.domain.*;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
@ -38,10 +47,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 供应商信息Service业务层处理
@ -90,11 +96,21 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
@Autowired
@Lazy
private SysUserServiceImpl sysUserService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private SysDeptServiceImpl iSysDeptService;
@Autowired
@Lazy
private IBusBillofquantitiesLimitListService billofquantitiesLimitListService;
@Autowired
@Lazy
private IBusTenderPlanningLimitListService busTenderPlanningLimitListService;
@Autowired
@Lazy
private IBusBiddingPlanService busBiddingPlanService;
private final IXzdCustomerSupplierService iXzdCustomerSupplierService;
private final IXzdCustomerSupplierYybService iXzdCustomerSupplierYybService;
@ -216,6 +232,7 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
lqw.eq(StringUtils.isNotBlank(bo.getScale()), XzdSupplierInfo::getScale, bo.getScale());
lqw.eq(StringUtils.isNotBlank(bo.getWebsite()), XzdSupplierInfo::getWebsite, bo.getWebsite());
lqw.eq(StringUtils.isNotBlank(bo.getEmail()), XzdSupplierInfo::getEmail, bo.getEmail());
lqw.eq(StringUtils.isNotBlank(bo.getShzt()), XzdSupplierInfo::getShzt, bo.getShzt());
return lqw;
}
@ -861,6 +878,65 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
return xzdSupplierInfo != null ? xzdSupplierInfo.getUnitName():null;
}
@Override
public List<XzdSupplierInfoVo> getListByName(TenderSupplierInputReq req) {
if (req.getName() == null || req.getName().isEmpty()) {
return null;
}
//查询限价一览表中物资限价一览中物资名包含req.getName()的物资
List<BusBillofquantitiesLimitList> busBillofquantitiesLimitLists = billofquantitiesLimitListService.getBaseMapper()
.selectList(new LambdaQueryWrapper<BusBillofquantitiesLimitList>()
.eq(BusBillofquantitiesLimitList::getProjectId, req.getProjectId())
.eq(BusBillofquantitiesLimitList::getType, 3)
.like(BusBillofquantitiesLimitList::getName, req.getName()));
if (busBillofquantitiesLimitLists.isEmpty()) {
return null;
}
Set<Long> b = new HashSet<>();
busBillofquantitiesLimitLists.forEach(billofquantitiesLimitList -> {b.add(billofquantitiesLimitList.getId());});
if (b.isEmpty()){
return null;
}
//通过物资限价一览id获取到对应的招标计划id
List<BusTenderPlanningLimitList> busTenderPlanningLimitLists = busTenderPlanningLimitListService.getBaseMapper().selectList(new LambdaQueryWrapper<BusTenderPlanningLimitList>().isNotNull(BusTenderPlanningLimitList::getNum).in(BusTenderPlanningLimitList::getLimitListId, b));
if (busTenderPlanningLimitLists.isEmpty()) {
return null;
}
//通过招标计划id找到对应招标计划并获取到对应供应商id
Set<Long> planIds = new HashSet<>();
busTenderPlanningLimitLists.forEach(tenderPlanningLimitList -> {planIds.add(tenderPlanningLimitList.getBiddingPlanId());});
if (planIds.isEmpty()) {
return null;
}
List<BusBiddingPlan> busBiddingPlans = busBiddingPlanService.getBaseMapper().selectList(new LambdaQueryWrapper<BusBiddingPlan>().in(BusBiddingPlan::getId, planIds));
if (busBiddingPlans.isEmpty()) {
return null;
}
//通过供应商id获取供应商列表
Set<Long> tenderSupplierIds = new HashSet<>();
busBiddingPlans.forEach(biddingPlan -> {tenderSupplierIds.add(biddingPlan.getWinningBidderId());});
if (tenderSupplierIds.isEmpty()) {
return null;
}
return baseMapper.selectVoByIds(tenderSupplierIds);
}
@Override
public List<XzdSupplierInfoVo> getList(XzdSupplierInfoBo bo) {
bo.setShzt("finish");
LambdaQueryWrapper<XzdSupplierInfo> lqw = buildQueryWrapper(bo);
List<XzdSupplierInfoVo> tenderSupplierInputVos = baseMapper.selectVoList(lqw);
List<XzdSupplierInfoVo> list = new ArrayList<>();
tenderSupplierInputVos.forEach(tenderSupplierInputVo -> {
XzdSupplierInfoVo vo = new XzdSupplierInfoVo();
vo.setUnitName(tenderSupplierInputVo.getUnitName());
vo.setId(tenderSupplierInputVo.getId());
list.add(vo);
});
return list;
}
private void getChildren(List<XzdCustomertypeVo> list){
LambdaQueryWrapper<XzdCustomertype> queryWrapper = new LambdaQueryWrapper<>();