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

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获取输入流 // 从MultipartFile获取输入流
try (InputStream stream = file.getInputStream(); try (InputStream stream = file.getInputStream();
org.apache.poi.ss.usermodel.Workbook workbook = isXlsx ? Workbook workbook = WorkbookFactory.create(stream)) {
new XSSFWorkbook(stream) : new HSSFWorkbook(stream)) {
for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) { for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(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.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.tender.domain.bo.TenderSupplierInputReq; import org.dromara.tender.domain.bo.TenderSupplierInputReq;
import org.dromara.tender.domain.vo.TenderSupplierInputVo; 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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -69,7 +71,8 @@ public class BusPurchaseDocController extends BaseController {
private final IBusBillofquantitiesService busBillofquantitiesService; private final IBusBillofquantitiesService busBillofquantitiesService;
private final IBusMrpBaseService busMrpBaseService; private final IBusMrpBaseService busMrpBaseService;
private final ITenderSupplierInputService tenderSupplierInputService; private final IXzdSupplierInfoService xzdSupplierInfoService;
// private final ITenderSupplierInputService tenderSupplierInputService;
private final IBusLtnService busLtnService; private final IBusLtnService busLtnService;
/** /**
@ -96,8 +99,8 @@ public class BusPurchaseDocController extends BaseController {
*/ */
@SaCheckPermission(value = {"cailiaoshebei:purchaseDoc:add","cailiaoshebei:purchaseDoc:edit"},mode = SaMode.OR) @SaCheckPermission(value = {"cailiaoshebei:purchaseDoc:add","cailiaoshebei:purchaseDoc:edit"},mode = SaMode.OR)
@GetMapping("/getListByName") @GetMapping("/getListByName")
public R<List<TenderSupplierInputVo>> getListByName(TenderSupplierInputReq req) { public R<List<XzdSupplierInfoVo>> getListByName(TenderSupplierInputReq req) {
return R.ok(tenderSupplierInputService.getListByName(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.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -30,7 +31,10 @@ import org.dromara.design.service.IBusBillofquantitiesService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService; import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.tender.domain.bo.TenderSupplierInputBo; import org.dromara.tender.domain.bo.TenderSupplierInputBo;
import org.dromara.tender.domain.vo.TenderSupplierInputVo; 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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -63,7 +67,9 @@ public class BusPurchaseDocAppController extends BaseController {
private final IBusBillofquantitiesService busBillofquantitiesService; 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") @GetMapping("/supList")
public TableDataInfo<TenderSupplierInputVo> list(TenderSupplierInputBo bo, PageQuery pageQuery) { public TableDataInfo<XzdSupplierInfoVo> list(XzdSupplierInfoBo bo, PageQuery pageQuery) {
return tenderSupplierInputService.queryPageList(bo, 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.domain.vo.BusTenderPlanningLimitListVo;
import org.dromara.tender.service.IBusBiddingPlanService; import org.dromara.tender.service.IBusBiddingPlanService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService; 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.context.annotation.Lazy;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; 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.domain.SysUser;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.dromara.tender.domain.TenderSupplierInput; 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.beans.BeanUtils;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -56,8 +58,10 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
@Resource @Resource
private IBusProjectService projectService; private IBusProjectService projectService;
// @Resource
// private ITenderSupplierInputService supplierInputService;
@Resource @Resource
private ITenderSupplierInputService supplierInputService; private IXzdSupplierInfoService supplierInfoService;
@Resource @Resource
@Lazy @Lazy
@ -195,7 +199,7 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
if (StringUtils.isNotBlank(custodianPhone) && !PhoneUtil.isPhone(custodianPhone)) { if (StringUtils.isNotBlank(custodianPhone) && !PhoneUtil.isPhone(custodianPhone)) {
throw new ServiceException("管理人手机号格式不正确", HttpStatus.BAD_REQUEST); 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); throw new ServiceException("供应商不存在", HttpStatus.NOT_FOUND);
} }
} }
@ -253,9 +257,9 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
// 关联供应商名称 // 关联供应商名称
Long supplierId = contractor.getSupplierId(); Long supplierId = contractor.getSupplierId();
if (supplierId != null) { if (supplierId != null) {
TenderSupplierInput supplierInput = supplierInputService.getById(supplierId); XzdSupplierInfo supplierInfo = supplierInfoService.getById(supplierId);
if (supplierInput != null) { if (supplierInfo != null) {
contractorVo.setSupplierName(supplierInput.getSupplierName()); contractorVo.setSupplierName(supplierInfo.getUnitName());
} }
} }
return contractorVo; 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.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.bidding.domain.BusBiddingLimitList; 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.mapper.BusBillofquantitiesVersionsMapper;
import org.dromara.design.service.IBusBillofquantitiesService; import org.dromara.design.service.IBusBillofquantitiesService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService; 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.domain.vo.SysOssUploadVo;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysOssService;
import org.dromara.tender.domain.BusBLimitListVersions; import org.dromara.tender.domain.BusBLimitListVersions;
import org.dromara.tender.domain.BusBillofquantitiesLimitList; import org.dromara.tender.domain.BusBillofquantitiesLimitList;
import org.dromara.tender.domain.vo.BusBLimitListVersionsVo;
import org.dromara.tender.service.IBusBLimitListVersionsService; import org.dromara.tender.service.IBusBLimitListVersionsService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService; 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.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -73,9 +86,19 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
private final IBusBiddingLimitListService busBiddingLimitListService; private final IBusBiddingLimitListService busBiddingLimitListService;
private final IBusBLimitListVersionsService busBLimitListVersionsService; private final IBusBLimitListVersionsService busBLimitListVersionsService;
private final IBusBiddingLimitVersionsService busBiddingLimitVersions; private final IBusBiddingLimitVersionsService busBiddingLimitVersions;
private final IXzdCbysZjhcbService xzdCbysZjhcbService;
@Lazy
@Resource
private IBusProjectService busProjectService;
@Lazy
@Resource
private IXzdProjectService xzdProjectService;
@Autowired @Autowired
private ISysOssService ossService; private ISysOssService ossService;
@Lazy
@Resource
private IBusProjectDeptService projectDeptService;
/** /**
* 查询工程量清单版本 * 查询工程量清单版本
@ -633,6 +656,32 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
if (!b) { if (!b) {
log.info("新增失败"); 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.common.excel.convert.ExcelDictConvert;
import org.dromara.materials.domain.MatMaterials; import org.dromara.materials.domain.MatMaterials;
import org.dromara.tender.domain.vo.TenderSupplierInputVo; import org.dromara.tender.domain.vo.TenderSupplierInputVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
@ -56,7 +57,8 @@ public class MatMaterialsVo implements Serializable {
* 公司信息 * 公司信息
*/ */
@ExcelProperty(value = "公司信息") @ExcelProperty(value = "公司信息")
private TenderSupplierInputVo companyVo; // private TenderSupplierInputVo companyVo;
private XzdSupplierInfoVo companyVo;
/** /**
* 项目id * 项目id

View File

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

View File

@ -139,7 +139,7 @@ public class BusProjectCreateReq implements Serializable {
/** /**
* 所属部门列表 * 所属部门列表
*/ */
private List<Long> deptIds; private Long deptIds;
/** /**
* xzd项目id * 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); throw new ServiceException("新增用户与项目关联失败,数据库异常", HttpStatus.ERROR);
} }
// 保存项目与部门的关联 // 保存项目与部门的关联
List<Long> deptIds = req.getDeptIds(); Long count = projectDeptService.getBaseMapper().selectCount(new LambdaQueryWrapper<BusProjectDept>().eq(BusProjectDept::getProjectId, projectId));
if (CollUtil.isNotEmpty(deptIds)) { if (count > 0) {
List<BusProjectDept> projectDeptList = deptIds.stream().map(deptId -> { throw new ServiceException("项目已存在部门关联,请勿重复添加", HttpStatus.BAD_REQUEST);
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);
} }
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) self.insertProjectSyncThing(projectId)
@ -570,41 +568,19 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
throw new ServiceException("打卡范围增加失败", HttpStatus.ERROR); 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) boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class)
.eq(BusProjectDept::getProjectId, project.getId())); .eq(BusProjectDept::getProjectId, project.getId()));
if (!remove) { if (!remove) {
throw new ServiceException("删除项目部门失败", HttpStatus.ERROR); throw new ServiceException("删除项目部门失败", HttpStatus.ERROR);
} }
} else if (CollUtil.isNotEmpty(deptIds)) { if (req.getDeptIds() !=null) {
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 -> {
BusProjectDept projectDept = new BusProjectDept(); BusProjectDept projectDept = new BusProjectDept();
projectDept.setDeptId(deptId); projectDept.setDeptId(req.getDeptIds());
projectDept.setProjectId(project.getId()); projectDept.setProjectId(project.getId());
return projectDept; boolean save1 = projectDeptService.save(projectDept);
}).toList(); if (!save1) {
boolean save = projectDeptService.saveBatch(busProjectDepts); throw new ServiceException("新增项目与部门关联失败,数据库异常", HttpStatus.ERROR);
if (!save) {
throw new ServiceException("部门增加失败", HttpStatus.ERROR);
} }
} }
return true; return true;

View File

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

View File

@ -3,6 +3,7 @@ package org.dromara.tender.controller;
import java.util.List; import java.util.List;
import cn.dev33.satoken.annotation.SaMode; import cn.dev33.satoken.annotation.SaMode;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
@ -14,7 +15,10 @@ import org.dromara.tender.domain.bo.*;
import org.dromara.tender.domain.vo.*; import org.dromara.tender.domain.vo.*;
import org.dromara.tender.service.IBusBiddingPlanAnnexService; import org.dromara.tender.service.IBusBiddingPlanAnnexService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService; 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.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -48,16 +52,18 @@ public class BusBiddingPlanController extends BaseController {
private final IBusBillofquantitiesLimitListService busBillofquantitiesLimitListService; private final IBusBillofquantitiesLimitListService busBillofquantitiesLimitListService;
@Lazy @Lazy
private final IBusBiddingPlanAnnexService busBiddingPlanAnnexService; private final IBusBiddingPlanAnnexService busBiddingPlanAnnexService;
// private final ITenderSupplierInputService tenderSupplierInputService;
@Lazy @Lazy
private final ITenderSupplierInputService tenderSupplierInputService; @Resource
private IXzdSupplierInfoService supplierInfoService;
/** /**
* 查询供应商入库列表 * 查询供应商入库列表
*/ */
@SaCheckPermission(value = {"tender:biddingPlan:list","tender:biddingPlan:add","tender:biddingPlan:edit"},mode = SaMode.OR) @SaCheckPermission(value = {"tender:biddingPlan:list","tender:biddingPlan:add","tender:biddingPlan:edit"},mode = SaMode.OR)
@GetMapping("/getSupplierInputList") @GetMapping("/getSupplierInputList")
public R<List<TenderSupplierInputVo>> list(TenderSupplierInputBo bo) { public R<List<XzdSupplierInfoVo>> list(XzdSupplierInfoBo bo) {
return R.ok(tenderSupplierInputService.getList(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<BusBillofquantitiesLimitListWuZiVo> queryVoList(BusBillofquantitiesLimitListBo bo);
List<BusBillofquantitiesLimitListVo> pList(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.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; 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.mapper.BusTenderPlanningLimitListMapper;
import org.dromara.tender.service.IBusBiddingPlanAnnexService; import org.dromara.tender.service.IBusBiddingPlanAnnexService;
import org.dromara.tender.service.IBusBillofquantitiesLimitListService; 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.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.tender.domain.bo.BusBiddingPlanBo; import org.dromara.tender.domain.bo.BusBiddingPlanBo;
import org.dromara.tender.mapper.BusBiddingPlanMapper; import org.dromara.tender.mapper.BusBiddingPlanMapper;
@ -64,8 +68,11 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
private ISysOssService ossService; private ISysOssService ossService;
@Autowired // @Autowired
private ITenderSupplierInputService tenderSupplierInputService; // private ITenderSupplierInputService tenderSupplierInputService;
@Lazy
@Resource
private IXzdSupplierInfoService supplierInfoService;
/** /**
* 查询招标计划 * 查询招标计划
@ -284,9 +291,10 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
List<BusBiddingPlanAnnexVo> planAnnexVoList = busBiddingPlanAnnexService.queryList(planAnnex); List<BusBiddingPlanAnnexVo> planAnnexVoList = busBiddingPlanAnnexService.queryList(planAnnex);
BusBiddingPlan biddingPlan = baseMapper.selectById(bo.getId()); 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.setWinningBidderId(bo.getWinningBidderId());
biddingPlan.setWinningBidder(tenderSupplierInput.getSupplierName()); biddingPlan.setWinningBidder(supplierInfo.getUnitName());
if (biddingPlan.getPlannedBiddingTime() == null){ if (biddingPlan.getPlannedBiddingTime() == null){
throw new ServiceException("计划招标时间不能为空!!"); throw new ServiceException("计划招标时间不能为空!!");
} }

View File

@ -368,6 +368,34 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
return listVoList; 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; package org.dromara.websocket.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.tender.service.ITenderSupplierInputService;
import org.dromara.websocket.domain.ChatHistory; import org.dromara.websocket.domain.ChatHistory;
import org.dromara.websocket.mapper.ChatHistoryMapper; import org.dromara.websocket.mapper.ChatHistoryMapper;
import org.dromara.websocket.service.IChatHistoryService; 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.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; 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.XzdProjectBo;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo; import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo; import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo;
@ -46,6 +48,15 @@ public class XzdSupplierInfoController extends BaseController {
private final IXzdSupplierOpenBankService xzdSupplierOpenBankService; private final IXzdSupplierOpenBankService xzdSupplierOpenBankService;
private final IXzdYhxxService xzdYhxxService; 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 java.util.List;
import cn.dev33.satoken.annotation.SaMode;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; 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.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -35,6 +40,26 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
public class XzdCbysZjhcbController extends BaseController { public class XzdCbysZjhcbController extends BaseController {
private final IXzdCbysZjhcbService xzdCbysZjhcbService; 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; private Long deptId;
/**
*限价一览版本id
*/
private String vesionId;
/** /**
* 单据编码(带*,必填) * 单据编码(带*,必填)
*/ */
@ -54,6 +59,10 @@ public class XzdCbysZjhcb extends BaseEntity {
* 工程项目(带*,必填) * 工程项目(带*,必填)
*/ */
private Long projectId; private Long projectId;
/**
* 系统项目id
*/
private Long sysProjectId;
/** /**
* 预算分类(带*,必填) * 预算分类(带*,必填)

View File

@ -1,5 +1,6 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo; 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.xzd.costProjectApproval.costBudget.domain.*;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
@ -30,6 +31,12 @@ public class XzdCbysZjhcbBo extends BaseEntity {
private Long id; private Long id;
/**
*限价一览版本id
*/
private String vesionId;
/** /**
* 部门id * 部门id
*/ */
@ -56,6 +63,10 @@ public class XzdCbysZjhcbBo extends BaseEntity {
*/ */
@NotNull(message = "工程项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "工程项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId; private Long projectId;
/**
* 系统项目id
*/
private Long sysProjectId;
/** /**
* 预算分类(带*,必填) * 预算分类(带*,必填)
@ -166,12 +177,17 @@ public class XzdCbysZjhcbBo extends BaseEntity {
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjl; 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.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant; 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 org.dromara.xzd.costProjectApproval.costBudget.domain.*;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
@ -40,6 +42,11 @@ public class XzdCbysZjhcbVo implements Serializable {
private Long id; private Long id;
/**
*限价一览版本id
*/
private String vesionId;
/** /**
* 部门id * 部门id
*/ */
@ -64,6 +71,10 @@ public class XzdCbysZjhcbVo implements Serializable {
*/ */
@ExcelProperty(value = "单据日期") @ExcelProperty(value = "单据日期")
private LocalDate docDate; 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; 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.vo.XzdCbysZjhcbVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo; import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb; 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); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
String queryNameById(Long id); 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.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessEvent;
@ -21,6 +22,12 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator; import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.impl.SysOssServiceImpl; 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.domain.*;
import org.dromara.xzd.costProjectApproval.costBudget.service.*; import org.dromara.xzd.costProjectApproval.costBudget.service.*;
import org.dromara.xzd.domain.vo.XzdProjectManagerApprovalVo; 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.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo; import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo; import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo; import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbMapper; import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 立项及成本-成本预算-总体计划成本Service业务层处理 * 立项及成本-成本预算-总体计划成本Service业务层处理
@ -57,6 +68,10 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
private IXzdCbysZjhcbFubiaoService fubiaoService; private IXzdCbysZjhcbFubiaoService fubiaoService;
@Autowired @Autowired
private SysOssServiceImpl sysOssService; private SysOssServiceImpl sysOssService;
@Lazy
@Resource
private IBusBillofquantitiesLimitListService limitListService;
/** /**
* 查询立项及成本-成本预算-总体计划成本 * 查询立项及成本-成本预算-总体计划成本
@ -145,21 +160,21 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
if (flag) { if (flag) {
bo.setId(add.getId()); bo.setId(add.getId());
} }
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) { // if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
throw new ServiceException("税收成本不能为空"); // throw new ServiceException("税收成本不能为空");
} // }
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) { if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
throw new ServiceException("变更记录不能为空"); throw new ServiceException("变更记录不能为空");
} }
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) { // if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
throw new ServiceException("成本明细不能为空"); // throw new ServiceException("成本明细不能为空");
} // }
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(add.getId());}); // bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(add.getId());});
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb()); // xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(add.getId());}); bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(add.getId());});
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl()); xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(add.getId());}); // bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(add.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao()); // fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
return flag; return flag;
} }
@ -174,24 +189,57 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
public Boolean updateByBo(XzdCbysZjhcbBo bo) { public Boolean updateByBo(XzdCbysZjhcbBo bo) {
XzdCbysZjhcb update = MapstructUtils.convert(bo, XzdCbysZjhcb.class); XzdCbysZjhcb update = MapstructUtils.convert(bo, XzdCbysZjhcb.class);
validEntityBeforeSave(update); validEntityBeforeSave(update);
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) { // if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
throw new ServiceException("税收成本不能为空"); // throw new ServiceException("税收成本不能为空");
} // }
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) { if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
throw new ServiceException("变更记录不能为空"); throw new ServiceException("变更记录不能为空");
} }
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) { // if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
throw new ServiceException("成本明细不能为空"); // throw new ServiceException("成本明细不能为空");
} // }
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, bo.getId())); xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, bo.getId()));
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, bo.getId())); // xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, bo.getId()));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, bo.getId())); // fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, bo.getId()));
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(bo.getId());}); // bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(bo.getId());});
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb()); // xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(bo.getId());}); bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(bo.getId());});
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl()); xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(bo.getId());}); // bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(bo.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao()); // 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; return baseMapper.updateById(update) > 0;
} }
@ -241,7 +289,29 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
return vo != null ? vo.getDocTitle():""; 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) { private void getHttk(XzdCbysZjhcbVo vo) {
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjls = xzdCbysZtjhcbBgjlService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, vo.getId())); List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjls = xzdCbysZtjhcbBgjlService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, vo.getId()));
vo.setXzdCbysZtjhcbBgjl(xzdCbysZtjhcbBgjls); vo.setXzdCbysZtjhcbBgjl(xzdCbysZtjhcbBgjls);
List<XzdCbysSscb> xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, vo.getId())); // List<XzdCbysSscb> xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, vo.getId()));
vo.setXzdCbysSscb(xzdCbysSscbs); // vo.setXzdCbysSscb(xzdCbysSscbs);
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, vo.getId())); // List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, vo.getId()));
vo.setXzdCbysWgcbtbFubiao(xzdCbysWgcbtbFubiaos); // 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; package org.dromara.xzd.service;
import org.dromara.common.core.domain.R; 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.XzdCustomertypeVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo; import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo; import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
@ -74,4 +74,14 @@ public interface IXzdSupplierInfoService extends IService<XzdSupplierInfo>{
R<List<XzdCustomertypeVo>> typeList(); R<List<XzdCustomertypeVo>> typeList();
String queryNameById(Long id); 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.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.system.service.impl.SysUserServiceImpl; 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.*;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo; import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.vo.XzdCustomertypeVo; import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
@ -38,10 +47,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/** /**
* 供应商信息Service业务层处理 * 供应商信息Service业务层处理
@ -90,11 +96,21 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
@Autowired @Autowired
@Lazy
private SysUserServiceImpl sysUserService; private SysUserServiceImpl sysUserService;
@Autowired @Autowired
private SysOssServiceImpl sysOssService; private SysOssServiceImpl sysOssService;
@Autowired @Autowired
private SysDeptServiceImpl iSysDeptService; private SysDeptServiceImpl iSysDeptService;
@Autowired
@Lazy
private IBusBillofquantitiesLimitListService billofquantitiesLimitListService;
@Autowired
@Lazy
private IBusTenderPlanningLimitListService busTenderPlanningLimitListService;
@Autowired
@Lazy
private IBusBiddingPlanService busBiddingPlanService;
private final IXzdCustomerSupplierService iXzdCustomerSupplierService; private final IXzdCustomerSupplierService iXzdCustomerSupplierService;
private final IXzdCustomerSupplierYybService iXzdCustomerSupplierYybService; 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.getScale()), XzdSupplierInfo::getScale, bo.getScale());
lqw.eq(StringUtils.isNotBlank(bo.getWebsite()), XzdSupplierInfo::getWebsite, bo.getWebsite()); 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.getEmail()), XzdSupplierInfo::getEmail, bo.getEmail());
lqw.eq(StringUtils.isNotBlank(bo.getShzt()), XzdSupplierInfo::getShzt, bo.getShzt());
return lqw; return lqw;
} }
@ -861,6 +878,65 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
return xzdSupplierInfo != null ? xzdSupplierInfo.getUnitName():null; 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){ private void getChildren(List<XzdCustomertypeVo> list){
LambdaQueryWrapper<XzdCustomertype> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XzdCustomertype> queryWrapper = new LambdaQueryWrapper<>();