招标管理模块
This commit is contained in:
@ -0,0 +1,105 @@
|
||||
package org.dromara.tender.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanAnnexVo;
|
||||
import org.dromara.tender.domain.bo.BusBiddingPlanAnnexBo;
|
||||
import org.dromara.tender.service.IBusBiddingPlanAnnexService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 招标计划-招标文件
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/tender/biddingPlanAnnex")
|
||||
public class BusBiddingPlanAnnexController extends BaseController {
|
||||
|
||||
private final IBusBiddingPlanAnnexService busBiddingPlanAnnexService;
|
||||
|
||||
/**
|
||||
* 查询招标计划-招标文件列表
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlanAnnex:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<BusBiddingPlanAnnexVo> list(BusBiddingPlanAnnexBo bo, PageQuery pageQuery) {
|
||||
return busBiddingPlanAnnexService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出招标计划-招标文件列表
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlanAnnex:export")
|
||||
@Log(title = "招标计划-招标文件", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(BusBiddingPlanAnnexBo bo, HttpServletResponse response) {
|
||||
List<BusBiddingPlanAnnexVo> list = busBiddingPlanAnnexService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "招标计划-招标文件", BusBiddingPlanAnnexVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取招标计划-招标文件详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlanAnnex:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BusBiddingPlanAnnexVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(busBiddingPlanAnnexService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增招标计划-招标文件
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlanAnnex:add")
|
||||
@Log(title = "招标计划-招标文件", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusBiddingPlanAnnexBo bo) {
|
||||
return toAjax(busBiddingPlanAnnexService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改招标计划-招标文件
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlanAnnex:edit")
|
||||
@Log(title = "招标计划-招标文件", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusBiddingPlanAnnexBo bo) {
|
||||
return toAjax(busBiddingPlanAnnexService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除招标计划-招标文件
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlanAnnex:remove")
|
||||
@Log(title = "招标计划-招标文件", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(busBiddingPlanAnnexService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -0,0 +1,154 @@
|
||||
package org.dromara.tender.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.formalities.domain.bo.BusFormalitiesAnnexBo;
|
||||
import org.dromara.formalities.domain.bo.BusFormalitiesAreConsolidatedBo;
|
||||
import org.dromara.tender.domain.bo.BusSegmentedIndicatorPlanningBo;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanVo;
|
||||
import org.dromara.tender.domain.bo.BusBiddingPlanBo;
|
||||
import org.dromara.tender.service.IBusBiddingPlanService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* 招标计划
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/tender/biddingPlan")
|
||||
public class BusBiddingPlanController extends BaseController {
|
||||
|
||||
private final IBusBiddingPlanService busBiddingPlanService;
|
||||
|
||||
/**
|
||||
* 查询招标计划列表
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlan:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<BusBiddingPlanVo> list(BusBiddingPlanBo bo, PageQuery pageQuery) {
|
||||
if (bo.getDictName() == null) {
|
||||
throw new ServiceException("分包类型不能为空");
|
||||
}
|
||||
return busBiddingPlanService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 回显数据详情
|
||||
* @param bo
|
||||
* @return
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlan:getMore")
|
||||
@GetMapping("/getMore")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> getMore(BusBiddingPlanBo bo) {
|
||||
if (bo.getId() == null) {
|
||||
throw new ServiceException("id不能为空");
|
||||
}
|
||||
return R.ok(busBiddingPlanService.getMore(bo));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导出招标计划列表
|
||||
*/
|
||||
// @SaCheckPermission("tender:biddingPlan:export")
|
||||
// @Log(title = "招标计划", businessType = BusinessType.EXPORT)
|
||||
// @PostMapping("/export")
|
||||
// public void export(BusBiddingPlanBo bo, HttpServletResponse response) {
|
||||
// List<BusBiddingPlanVo> list = busBiddingPlanService.queryList(bo);
|
||||
// ExcelUtil.exportExcel(list, "招标计划", BusBiddingPlanVo.class, response);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取招标计划详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
// @SaCheckPermission("tender:biddingPlan:query")
|
||||
// @GetMapping("/{id}")
|
||||
// public R<BusBiddingPlanVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
// @PathVariable Long id) {
|
||||
// return R.ok(busBiddingPlanService.queryById(id));
|
||||
// }
|
||||
|
||||
/**
|
||||
* 新增招标计划
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlan:add")
|
||||
@Log(title = "招标计划", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusBiddingPlanBo bo) {
|
||||
return toAjax(busBiddingPlanService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传招标文件
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlan:uploadBiddingDocuments")
|
||||
@Log(title = "招标计划", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/uploadBiddingDocuments")
|
||||
public R<Void> uploadBiddingDocuments(BusBiddingPlanBo bo,
|
||||
@RequestPart("file") List<MultipartFile> files) {
|
||||
return toAjax(busBiddingPlanService.uploadBiddingDocuments(bo,files));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改招标计划
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlan:edit")
|
||||
@Log(title = "招标计划", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(BusBiddingPlanBo bo,
|
||||
@RequestPart("file") MultipartFile bidFile) {
|
||||
return toAjax(busBiddingPlanService.updateByBo(bo,bidFile));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改合规性手续合账
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlan:editStatus")
|
||||
@Log(title = "招标计划", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/editStatus")
|
||||
public R<Void> editStatus(@Validated(EditGroup.class) @RequestBody BusBiddingPlanBo bo) {
|
||||
return toAjax(busBiddingPlanService.editStatus(bo));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除招标计划
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("tender:biddingPlan:remove")
|
||||
@Log(title = "招标计划", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(busBiddingPlanService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -10,6 +10,7 @@ import org.dromara.design.domain.bo.ImportExcelFileReq;
|
||||
import org.dromara.design.domain.bo.ObtainAllVersionNumbersReq;
|
||||
import org.dromara.design.domain.bo.SheetListReq;
|
||||
import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo;
|
||||
import org.dromara.tender.enums.LimitListTypeEnum;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -47,6 +48,7 @@ public class BusBillofquantitiesLimitListController extends BaseController {
|
||||
@SaCheckPermission("tender:billofquantitiesLimitList:list")
|
||||
@GetMapping("/list")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> list(BusBillofquantitiesLimitListBo bo, PageQuery pageQuery) {
|
||||
bo.setType(LimitListTypeEnum.COMPANY.getCode());
|
||||
return R.ok(busBillofquantitiesLimitListService.getTree(bo));
|
||||
}
|
||||
/**
|
||||
@ -55,6 +57,7 @@ public class BusBillofquantitiesLimitListController extends BaseController {
|
||||
@SaCheckPermission("tender:billofquantitiesLimitList:getTree")
|
||||
@GetMapping("/getTree")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> getTree(BusBillofquantitiesLimitListBo bo) {
|
||||
bo.setType(LimitListTypeEnum.COMPANY.getCode());
|
||||
return R.ok(busBillofquantitiesLimitListService.getTree(bo));
|
||||
}
|
||||
|
||||
@ -64,6 +67,7 @@ public class BusBillofquantitiesLimitListController extends BaseController {
|
||||
@SaCheckPermission("design:billofquantitiesLimitList:obtainAllVersionNumbers")
|
||||
@GetMapping("/obtainAllVersionNumbers")
|
||||
public R<List<String>> obtainAllVersionNumbers(BusBillofquantitiesLimitListBo bo) {
|
||||
bo.setType(LimitListTypeEnum.COMPANY.getCode());
|
||||
return R.ok(busBillofquantitiesLimitListService.obtainAllVersionNumbers(bo));
|
||||
}
|
||||
|
||||
@ -73,6 +77,7 @@ public class BusBillofquantitiesLimitListController extends BaseController {
|
||||
@SaCheckPermission("design:billofquantitiesLimitList:sheetList")
|
||||
@GetMapping("/sheetList")
|
||||
public R<List<String>> sheetList(BusBillofquantitiesLimitListBo bo) {
|
||||
bo.setType(LimitListTypeEnum.COMPANY.getCode());
|
||||
return R.ok(busBillofquantitiesLimitListService.sheetList(bo));
|
||||
}
|
||||
|
||||
@ -83,6 +88,7 @@ public class BusBillofquantitiesLimitListController extends BaseController {
|
||||
@Log(title = "限价一览", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(BusBillofquantitiesLimitListBo bo, HttpServletResponse response) {
|
||||
bo.setType(LimitListTypeEnum.COMPANY.getCode());
|
||||
List<BusBillofquantitiesLimitListVo> list = busBillofquantitiesLimitListService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "限价一览", BusBillofquantitiesLimitListVo.class, response);
|
||||
}
|
||||
@ -113,13 +119,13 @@ public class BusBillofquantitiesLimitListController extends BaseController {
|
||||
/**
|
||||
* 新增限价一览
|
||||
*/
|
||||
@SaCheckPermission("tender:billofquantitiesLimitList:add")
|
||||
@Log(title = "限价一览", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusBillofquantitiesLimitListBo bo) {
|
||||
return toAjax(busBillofquantitiesLimitListService.insertByBo(bo));
|
||||
}
|
||||
// @SaCheckPermission("tender:billofquantitiesLimitList:add")
|
||||
// @Log(title = "限价一览", businessType = BusinessType.INSERT)
|
||||
// @RepeatSubmit()
|
||||
// @PostMapping()
|
||||
// public R<Void> add(@Validated(AddGroup.class) @RequestBody BusBillofquantitiesLimitListBo bo) {
|
||||
// return toAjax(busBillofquantitiesLimitListService.insertByBo(bo));
|
||||
// }
|
||||
|
||||
/**
|
||||
* 修改限价一览
|
||||
@ -129,6 +135,7 @@ public class BusBillofquantitiesLimitListController extends BaseController {
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusBillofquantitiesLimitListBo bo) {
|
||||
// bo.setType(LimitListTypeEnum.COMPANY.getCode());
|
||||
return toAjax(busBillofquantitiesLimitListService.updateByBo(bo));
|
||||
}
|
||||
|
||||
|
@ -59,12 +59,14 @@ public class BusSegmentedIndicatorPlanningController extends BaseController {
|
||||
return busSegmentedIndicatorPlanningService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 回显数据详情
|
||||
* @param bo
|
||||
* @return
|
||||
*/
|
||||
@SaCheckPermission("tender:segmentedIndicatorPlanning:getMore")
|
||||
@GetMapping("/getMore")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> getMore(BusSegmentedIndicatorPlanningBo bo) {
|
||||
// if (bo.getProjectId() == null) {
|
||||
// throw new ServiceException("项目id不能为空");
|
||||
// }
|
||||
if (bo.getId() == null) {
|
||||
throw new ServiceException("id不能为空");
|
||||
}
|
||||
|
@ -0,0 +1,144 @@
|
||||
package org.dromara.tender.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
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.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 招采限价一览
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-19
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/tender/tenderPlanLimitList")
|
||||
public class BusTenderPlanLimitListController extends BaseController {
|
||||
|
||||
private final IBusBillofquantitiesLimitListService busBillofquantitiesLimitListService;
|
||||
|
||||
/**
|
||||
* 查询限价一览列表
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:list")
|
||||
@GetMapping("/list")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> list(BusBillofquantitiesLimitListBo bo, PageQuery pageQuery) {
|
||||
return R.ok(busBillofquantitiesLimitListService.getTree(bo));
|
||||
}
|
||||
/**
|
||||
* 查询限价一览列表
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:getTree")
|
||||
@GetMapping("/getTree")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> getTree(BusBillofquantitiesLimitListBo bo) {
|
||||
return R.ok(busBillofquantitiesLimitListService.getTree(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有版本号
|
||||
*/
|
||||
@SaCheckPermission("design:tenderPlanLimitList:obtainAllVersionNumbers")
|
||||
@GetMapping("/obtainAllVersionNumbers")
|
||||
public R<List<String>> obtainAllVersionNumbers(BusBillofquantitiesLimitListBo bo) {
|
||||
return R.ok(busBillofquantitiesLimitListService.obtainAllVersionNumbers(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定版本的sheet
|
||||
*/
|
||||
@SaCheckPermission("design:tenderPlanLimitList:sheetList")
|
||||
@GetMapping("/sheetList")
|
||||
public R<List<String>> sheetList(BusBillofquantitiesLimitListBo bo) {
|
||||
return R.ok(busBillofquantitiesLimitListService.sheetList(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出限价一览列表
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:export")
|
||||
@Log(title = "限价一览", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(BusBillofquantitiesLimitListBo bo, HttpServletResponse response) {
|
||||
List<BusBillofquantitiesLimitListVo> list = busBillofquantitiesLimitListService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "限价一览", BusBillofquantitiesLimitListVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入excel
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:importExcelFile")
|
||||
@Log(title = "导入excel", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/importExcelFile")
|
||||
public R<Void> importExcelFile(Long projectId, @RequestParam("file") MultipartFile file) throws Exception {
|
||||
return toAjax(busBillofquantitiesLimitListService.importExcelFile(projectId, file));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取限价一览详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BusBillofquantitiesLimitListVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(busBillofquantitiesLimitListService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增限价一览
|
||||
*/
|
||||
// @SaCheckPermission("tender:billofquantitiesLimitList:add")
|
||||
// @Log(title = "限价一览", businessType = BusinessType.INSERT)
|
||||
// @RepeatSubmit()
|
||||
// @PostMapping()
|
||||
// public R<Void> add(@Validated(AddGroup.class) @RequestBody BusBillofquantitiesLimitListBo bo) {
|
||||
// return toAjax(busBillofquantitiesLimitListService.insertByBo(bo));
|
||||
// }
|
||||
|
||||
/**
|
||||
* 修改限价一览
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:edit")
|
||||
@Log(title = "限价一览", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusBillofquantitiesLimitListBo bo) {
|
||||
// bo.setType(LimitListTypeEnum.COMPANY.getCode());
|
||||
return toAjax(busBillofquantitiesLimitListService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除限价一览
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:remove")
|
||||
@Log(title = "限价一览", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(busBillofquantitiesLimitListService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
package org.dromara.tender.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.tender.domain.vo.BusTenderPlanningLimitListVo;
|
||||
import org.dromara.tender.domain.bo.BusTenderPlanningLimitListBo;
|
||||
import org.dromara.tender.service.IBusTenderPlanningLimitListService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 招标计划-限价一览
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/tender/tenderPlanningLimitList")
|
||||
public class BusTenderPlanningLimitListController extends BaseController {
|
||||
|
||||
private final IBusTenderPlanningLimitListService busTenderPlanningLimitListService;
|
||||
|
||||
/**
|
||||
* 查询招标计划-限价一览列表
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanningLimitList:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<BusTenderPlanningLimitListVo> list(BusTenderPlanningLimitListBo bo, PageQuery pageQuery) {
|
||||
return busTenderPlanningLimitListService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出招标计划-限价一览列表
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanningLimitList:export")
|
||||
@Log(title = "招标计划-限价一览", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(BusTenderPlanningLimitListBo bo, HttpServletResponse response) {
|
||||
List<BusTenderPlanningLimitListVo> list = busTenderPlanningLimitListService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "招标计划-限价一览", BusTenderPlanningLimitListVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取招标计划-限价一览详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanningLimitList:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BusTenderPlanningLimitListVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(busTenderPlanningLimitListService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增招标计划-限价一览
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanningLimitList:add")
|
||||
@Log(title = "招标计划-限价一览", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusTenderPlanningLimitListBo bo) {
|
||||
return toAjax(busTenderPlanningLimitListService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改招标计划-限价一览
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanningLimitList:edit")
|
||||
@Log(title = "招标计划-限价一览", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusTenderPlanningLimitListBo bo) {
|
||||
return toAjax(busTenderPlanningLimitListService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除招标计划-限价一览
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanningLimitList:remove")
|
||||
@Log(title = "招标计划-限价一览", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(busTenderPlanningLimitListService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
package org.dromara.tender.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 招标计划对象 bus_bidding_plan
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("bus_bidding_plan")
|
||||
public class BusBiddingPlan extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目Id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 分包类型名称
|
||||
*/
|
||||
private String dictName;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 计划招标时间
|
||||
*/
|
||||
private LocalDate plannedBiddingTime;
|
||||
|
||||
/**
|
||||
* 招标方式(公招,邀标)
|
||||
*/
|
||||
private String plannedBiddingMethod;
|
||||
|
||||
/**
|
||||
* 总价
|
||||
*/
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 合同额
|
||||
*/
|
||||
private BigDecimal contractPrice;
|
||||
|
||||
/**
|
||||
* 分包内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 中标通知书
|
||||
*/
|
||||
private String bidFile;
|
||||
|
||||
/**
|
||||
* 中标通知书名称
|
||||
*/
|
||||
private String bidFileName;
|
||||
|
||||
/**
|
||||
* 投标文件
|
||||
*/
|
||||
private String contractFile;
|
||||
|
||||
/**
|
||||
* 投标文件名称
|
||||
*/
|
||||
private String contractFileName;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 中标单位
|
||||
*/
|
||||
private String winningBidder;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package org.dromara.tender.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 招标计划-招标文件对象 bus_bidding_plan_annex
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("bus_bidding_plan_annex")
|
||||
public class BusBiddingPlanAnnex extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 招标计划Id
|
||||
*/
|
||||
private Long biddingPlanId;
|
||||
|
||||
/**
|
||||
* 附件地址
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 附件名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
|
||||
}
|
@ -58,6 +58,11 @@ public class BusBillofquantitiesLimitList extends BaseEntity {
|
||||
*/
|
||||
private String num;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
|
@ -0,0 +1,47 @@
|
||||
package org.dromara.tender.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 招标计划-限价一览对象 bus_tender_planning_limit_list
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("bus_tender_planning_limit_list")
|
||||
public class BusTenderPlanningLimitList extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分标策划Id
|
||||
*/
|
||||
private Long biddingPlanId;
|
||||
|
||||
/**
|
||||
* 限价一览id
|
||||
*/
|
||||
private Long limitListId;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package org.dromara.tender.domain.bo;
|
||||
|
||||
import org.dromara.tender.domain.BusBiddingPlanAnnex;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
/**
|
||||
* 招标计划-招标文件业务对象 bus_bidding_plan_annex
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = BusBiddingPlanAnnex.class, reverseConvertGenerate = false)
|
||||
public class BusBiddingPlanAnnexBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 招标计划Id
|
||||
*/
|
||||
private Long biddingPlanId;
|
||||
|
||||
/**
|
||||
* 附件地址
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 附件名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
package org.dromara.tender.domain.bo;
|
||||
|
||||
import org.dromara.tender.domain.BusBiddingPlan;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 招标计划业务对象 bus_bidding_plan
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = BusBiddingPlan.class, reverseConvertGenerate = false)
|
||||
public class BusBiddingPlanBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目Id
|
||||
*/
|
||||
@NotNull(message = "项目Id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 分包类型名称
|
||||
*/
|
||||
private String dictName;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 计划招标时间
|
||||
*/
|
||||
private LocalDate plannedBiddingTime;
|
||||
|
||||
/**
|
||||
* 招标方式(公招,邀标)
|
||||
*/
|
||||
private String plannedBiddingMethod;
|
||||
|
||||
/**
|
||||
* 总价
|
||||
*/
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 合同额
|
||||
*/
|
||||
private BigDecimal contractPrice;
|
||||
|
||||
/**
|
||||
* 分包内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 中标单位
|
||||
*/
|
||||
private String winningBidder;
|
||||
|
||||
/**
|
||||
* 中标通知书
|
||||
*/
|
||||
private String bidFile;
|
||||
|
||||
/**
|
||||
* 中标通知书名称
|
||||
*/
|
||||
private String bidFileName;
|
||||
|
||||
/**
|
||||
* 投标文件
|
||||
*/
|
||||
private String contractFile;
|
||||
|
||||
/**
|
||||
* 投标文件名称
|
||||
*/
|
||||
private String contractFileName;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 限价一览表ids
|
||||
*/
|
||||
private List<BusTenderPlanningLimitListBo> limitListBos;
|
||||
|
||||
}
|
@ -60,6 +60,11 @@ public class BusBillofquantitiesLimitListBo extends BaseEntity {
|
||||
*/
|
||||
private String num;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
|
@ -0,0 +1,47 @@
|
||||
package org.dromara.tender.domain.bo;
|
||||
|
||||
import org.dromara.tender.domain.BusTenderPlanningLimitList;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 招标计划-限价一览业务对象 bus_tender_planning_limit_list
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = BusTenderPlanningLimitList.class, reverseConvertGenerate = false)
|
||||
public class BusTenderPlanningLimitListBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分标策划Id
|
||||
*/
|
||||
private Long biddingPlanId;
|
||||
|
||||
/**
|
||||
* 限价一览id
|
||||
*/
|
||||
private Long limitListId;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package org.dromara.tender.domain.vo;
|
||||
|
||||
import org.dromara.tender.domain.BusBiddingPlanAnnex;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 招标计划-招标文件视图对象 bus_bidding_plan_annex
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = BusBiddingPlanAnnex.class)
|
||||
public class BusBiddingPlanAnnexVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 招标计划Id
|
||||
*/
|
||||
@ExcelProperty(value = "招标计划Id")
|
||||
private Long biddingPlanId;
|
||||
|
||||
/**
|
||||
* 附件地址
|
||||
*/
|
||||
@ExcelProperty(value = "附件地址")
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 附件名称
|
||||
*/
|
||||
@ExcelProperty(value = "附件名称")
|
||||
private String name;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
package org.dromara.tender.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.tender.domain.BusBiddingPlan;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 招标计划视图对象 bus_bidding_plan
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = BusBiddingPlan.class)
|
||||
public class BusBiddingPlanVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目Id
|
||||
*/
|
||||
@ExcelProperty(value = "项目Id")
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 分包类型名称
|
||||
*/
|
||||
@ExcelProperty(value = "分包类型名称")
|
||||
private String dictName;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@ExcelProperty(value = "名称")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 计划招标时间
|
||||
*/
|
||||
@ExcelProperty(value = "计划招标时间")
|
||||
private LocalDate plannedBiddingTime;
|
||||
|
||||
/**
|
||||
* 招标方式(公招,邀标)
|
||||
*/
|
||||
@ExcelProperty(value = "招标方式(公招,邀标)")
|
||||
private String plannedBiddingMethod;
|
||||
|
||||
/**
|
||||
* 总价
|
||||
*/
|
||||
@ExcelProperty(value = "总价")
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 合同额
|
||||
*/
|
||||
@ExcelProperty(value = "合同额")
|
||||
private BigDecimal contractPrice;
|
||||
|
||||
/**
|
||||
* 分包内容
|
||||
*/
|
||||
@ExcelProperty(value = "分包内容")
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 中标通知书
|
||||
*/
|
||||
@ExcelProperty(value = "中标通知书")
|
||||
private String bidFile;
|
||||
|
||||
/**
|
||||
* 中标通知书名称
|
||||
*/
|
||||
@ExcelProperty(value = "中标通知书名称")
|
||||
private String bidFileName;
|
||||
|
||||
/**
|
||||
* 合同文件
|
||||
*/
|
||||
@ExcelProperty(value = "合同文件")
|
||||
private String contractFile;
|
||||
|
||||
/**
|
||||
* 合同文件名称
|
||||
*/
|
||||
@ExcelProperty(value = "合同文件名称")
|
||||
private String contractFileName;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 中标单位
|
||||
*/
|
||||
private String winningBidder;
|
||||
|
||||
|
||||
}
|
@ -79,6 +79,11 @@ public class BusBillofquantitiesLimitListVo implements Serializable {
|
||||
@ExcelProperty(value = "名称")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
|
@ -0,0 +1,57 @@
|
||||
package org.dromara.tender.domain.vo;
|
||||
|
||||
import org.dromara.tender.domain.BusTenderPlanningLimitList;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 招标计划-限价一览视图对象 bus_tender_planning_limit_list
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = BusTenderPlanningLimitList.class)
|
||||
public class BusTenderPlanningLimitListVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分标策划Id
|
||||
*/
|
||||
@ExcelProperty(value = "分标策划Id")
|
||||
private Long biddingPlanId;
|
||||
|
||||
/**
|
||||
* 限价一览id
|
||||
*/
|
||||
@ExcelProperty(value = "限价一览id")
|
||||
private Long limitListId;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@ExcelProperty(value = "数量")
|
||||
private BigDecimal num;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package org.dromara.tender.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/7/18 9:41
|
||||
*/
|
||||
@Getter
|
||||
public enum LimitListTypeEnum {
|
||||
|
||||
COMPANY("1", "限价"),
|
||||
SUB_COMPANY("2", "招采"),
|
||||
SPECIAL("3", "物资");
|
||||
|
||||
private final String code;
|
||||
|
||||
private final String message;
|
||||
|
||||
LimitListTypeEnum(String code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.dromara.tender.mapper;
|
||||
|
||||
import org.dromara.tender.domain.BusBiddingPlanAnnex;
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanAnnexVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 招标计划-招标文件Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface BusBiddingPlanAnnexMapper extends BaseMapperPlus<BusBiddingPlanAnnex, BusBiddingPlanAnnexVo> {
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.dromara.tender.mapper;
|
||||
|
||||
import org.dromara.tender.domain.BusBiddingPlan;
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 招标计划Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface BusBiddingPlanMapper extends BaseMapperPlus<BusBiddingPlan, BusBiddingPlanVo> {
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package org.dromara.tender.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.tender.domain.BusTenderPlanningLimitList;
|
||||
import org.dromara.tender.domain.vo.BusTenderPlanningLimitListVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 招标计划-限价一览Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface BusTenderPlanningLimitListMapper extends BaseMapperPlus<BusTenderPlanningLimitList, BusTenderPlanningLimitListVo> {
|
||||
|
||||
BigDecimal getLimitCoount(@Param("limitListId") Long limitListId);
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
package org.dromara.tender.service;
|
||||
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanAnnexVo;
|
||||
import org.dromara.tender.domain.bo.BusBiddingPlanAnnexBo;
|
||||
import org.dromara.tender.domain.BusBiddingPlanAnnex;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 招标计划-招标文件Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface IBusBiddingPlanAnnexService extends IService<BusBiddingPlanAnnex>{
|
||||
|
||||
/**
|
||||
* 查询招标计划-招标文件
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 招标计划-招标文件
|
||||
*/
|
||||
BusBiddingPlanAnnexVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询招标计划-招标文件列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 招标计划-招标文件分页列表
|
||||
*/
|
||||
TableDataInfo<BusBiddingPlanAnnexVo> queryPageList(BusBiddingPlanAnnexBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的招标计划-招标文件列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 招标计划-招标文件列表
|
||||
*/
|
||||
List<BusBiddingPlanAnnexVo> queryList(BusBiddingPlanAnnexBo bo);
|
||||
|
||||
/**
|
||||
* 新增招标计划-招标文件
|
||||
*
|
||||
* @param bo 招标计划-招标文件
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(BusBiddingPlanAnnexBo bo);
|
||||
|
||||
/**
|
||||
* 修改招标计划-招标文件
|
||||
*
|
||||
* @param bo 招标计划-招标文件
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(BusBiddingPlanAnnexBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除招标计划-招标文件信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
package org.dromara.tender.service;
|
||||
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanVo;
|
||||
import org.dromara.tender.domain.bo.BusBiddingPlanBo;
|
||||
import org.dromara.tender.domain.BusBiddingPlan;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 招标计划Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface IBusBiddingPlanService extends IService<BusBiddingPlan>{
|
||||
|
||||
/**
|
||||
* 查询招标计划
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 招标计划
|
||||
*/
|
||||
BusBiddingPlanVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询招标计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 招标计划分页列表
|
||||
*/
|
||||
TableDataInfo<BusBiddingPlanVo> queryPageList(BusBiddingPlanBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的招标计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 招标计划列表
|
||||
*/
|
||||
List<BusBiddingPlanVo> queryList(BusBiddingPlanBo bo);
|
||||
|
||||
/**
|
||||
* 新增招标计划
|
||||
*
|
||||
* @param bo 招标计划
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(BusBiddingPlanBo bo);
|
||||
|
||||
/**
|
||||
* 修改招标计划
|
||||
*
|
||||
* @param bo 招标计划
|
||||
* @param bidFile
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(BusBiddingPlanBo bo, MultipartFile bidFile);
|
||||
|
||||
/**
|
||||
* 校验并批量删除招标计划信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
List<BusBillofquantitiesLimitListVo> getMore(BusBiddingPlanBo bo);
|
||||
|
||||
/**
|
||||
* 上传招标文件
|
||||
* @param bo
|
||||
* @param files
|
||||
* @return
|
||||
*/
|
||||
Boolean uploadBiddingDocuments(BusBiddingPlanBo bo, List<MultipartFile> files);
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
* @param bo
|
||||
* @return
|
||||
*/
|
||||
Boolean editStatus(BusBiddingPlanBo bo);
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
package org.dromara.tender.service;
|
||||
|
||||
import org.dromara.tender.domain.vo.BusTenderPlanningLimitListVo;
|
||||
import org.dromara.tender.domain.bo.BusTenderPlanningLimitListBo;
|
||||
import org.dromara.tender.domain.BusTenderPlanningLimitList;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 招标计划-限价一览Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface IBusTenderPlanningLimitListService extends IService<BusTenderPlanningLimitList>{
|
||||
|
||||
/**
|
||||
* 查询招标计划-限价一览
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 招标计划-限价一览
|
||||
*/
|
||||
BusTenderPlanningLimitListVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询招标计划-限价一览列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 招标计划-限价一览分页列表
|
||||
*/
|
||||
TableDataInfo<BusTenderPlanningLimitListVo> queryPageList(BusTenderPlanningLimitListBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的招标计划-限价一览列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 招标计划-限价一览列表
|
||||
*/
|
||||
List<BusTenderPlanningLimitListVo> queryList(BusTenderPlanningLimitListBo bo);
|
||||
|
||||
/**
|
||||
* 新增招标计划-限价一览
|
||||
*
|
||||
* @param bo 招标计划-限价一览
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(BusTenderPlanningLimitListBo bo);
|
||||
|
||||
/**
|
||||
* 修改招标计划-限价一览
|
||||
*
|
||||
* @param bo 招标计划-限价一览
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(BusTenderPlanningLimitListBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除招标计划-限价一览信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
package org.dromara.tender.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.tender.domain.bo.BusBiddingPlanAnnexBo;
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanAnnexVo;
|
||||
import org.dromara.tender.domain.BusBiddingPlanAnnex;
|
||||
import org.dromara.tender.mapper.BusBiddingPlanAnnexMapper;
|
||||
import org.dromara.tender.service.IBusBiddingPlanAnnexService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 招标计划-招标文件Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class BusBiddingPlanAnnexServiceImpl extends ServiceImpl<BusBiddingPlanAnnexMapper, BusBiddingPlanAnnex> implements IBusBiddingPlanAnnexService {
|
||||
|
||||
private final BusBiddingPlanAnnexMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询招标计划-招标文件
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 招标计划-招标文件
|
||||
*/
|
||||
@Override
|
||||
public BusBiddingPlanAnnexVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询招标计划-招标文件列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 招标计划-招标文件分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<BusBiddingPlanAnnexVo> queryPageList(BusBiddingPlanAnnexBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BusBiddingPlanAnnex> lqw = buildQueryWrapper(bo);
|
||||
Page<BusBiddingPlanAnnexVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的招标计划-招标文件列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 招标计划-招标文件列表
|
||||
*/
|
||||
@Override
|
||||
public List<BusBiddingPlanAnnexVo> queryList(BusBiddingPlanAnnexBo bo) {
|
||||
LambdaQueryWrapper<BusBiddingPlanAnnex> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BusBiddingPlanAnnex> buildQueryWrapper(BusBiddingPlanAnnexBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BusBiddingPlanAnnex> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(BusBiddingPlanAnnex::getId);
|
||||
lqw.eq(bo.getBiddingPlanId() != null, BusBiddingPlanAnnex::getBiddingPlanId, bo.getBiddingPlanId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUrl()), BusBiddingPlanAnnex::getUrl, bo.getUrl());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), BusBiddingPlanAnnex::getName, bo.getName());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增招标计划-招标文件
|
||||
*
|
||||
* @param bo 招标计划-招标文件
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(BusBiddingPlanAnnexBo bo) {
|
||||
BusBiddingPlanAnnex add = MapstructUtils.convert(bo, BusBiddingPlanAnnex.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改招标计划-招标文件
|
||||
*
|
||||
* @param bo 招标计划-招标文件
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(BusBiddingPlanAnnexBo bo) {
|
||||
BusBiddingPlanAnnex update = MapstructUtils.convert(bo, BusBiddingPlanAnnex.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusBiddingPlanAnnex entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除招标计划-招标文件信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,313 @@
|
||||
package org.dromara.tender.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.formalities.domain.BusFormalitiesAnnex;
|
||||
import org.dromara.system.domain.vo.SysOssUploadVo;
|
||||
import org.dromara.system.service.ISysOssService;
|
||||
import org.dromara.tender.domain.BusBiddingPlanAnnex;
|
||||
import org.dromara.tender.domain.BusTenderPlanningLimitList;
|
||||
import org.dromara.tender.domain.bo.BusBiddingPlanAnnexBo;
|
||||
import org.dromara.tender.domain.bo.BusTenderPlanningLimitListBo;
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanAnnexVo;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
import org.dromara.tender.mapper.BusTenderPlanningLimitListMapper;
|
||||
import org.dromara.tender.service.IBusBiddingPlanAnnexService;
|
||||
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.tender.domain.bo.BusBiddingPlanBo;
|
||||
import org.dromara.tender.domain.vo.BusBiddingPlanVo;
|
||||
import org.dromara.tender.domain.BusBiddingPlan;
|
||||
import org.dromara.tender.mapper.BusBiddingPlanMapper;
|
||||
import org.dromara.tender.service.IBusBiddingPlanService;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.dromara.common.constant.MinioPathConstant.FormalitiesAnnex;
|
||||
|
||||
/**
|
||||
* 招标计划Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper, BusBiddingPlan> implements IBusBiddingPlanService {
|
||||
|
||||
private final BusBiddingPlanMapper baseMapper;
|
||||
|
||||
@Autowired
|
||||
private BusTenderPlanningLimitListMapper busTenderPlanningLimitListMapper;
|
||||
|
||||
@Autowired
|
||||
private IBusBillofquantitiesLimitListService busBillofquantitiesLimitListService;
|
||||
|
||||
@Autowired
|
||||
private IBusBiddingPlanAnnexService busBiddingPlanAnnexService;
|
||||
|
||||
@Autowired
|
||||
private ISysOssService ossService;
|
||||
|
||||
/**
|
||||
* 查询招标计划
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 招标计划
|
||||
*/
|
||||
@Override
|
||||
public BusBiddingPlanVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询招标计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 招标计划分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<BusBiddingPlanVo> queryPageList(BusBiddingPlanBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BusBiddingPlan> lqw = buildQueryWrapper(bo);
|
||||
Page<BusBiddingPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的招标计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 招标计划列表
|
||||
*/
|
||||
@Override
|
||||
public List<BusBiddingPlanVo> queryList(BusBiddingPlanBo bo) {
|
||||
LambdaQueryWrapper<BusBiddingPlan> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BusBiddingPlan> buildQueryWrapper(BusBiddingPlanBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BusBiddingPlan> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(BusBiddingPlan::getId);
|
||||
lqw.eq(bo.getProjectId() != null, BusBiddingPlan::getProjectId, bo.getProjectId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getDictName()), BusBiddingPlan::getDictName, bo.getDictName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), BusBiddingPlan::getName, bo.getName());
|
||||
lqw.eq(bo.getPlannedBiddingTime() != null, BusBiddingPlan::getPlannedBiddingTime, bo.getPlannedBiddingTime());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPlannedBiddingMethod()), BusBiddingPlan::getPlannedBiddingMethod, bo.getPlannedBiddingMethod());
|
||||
lqw.eq(bo.getPrice() != null, BusBiddingPlan::getPrice, bo.getPrice());
|
||||
lqw.eq(bo.getContractPrice() != null, BusBiddingPlan::getContractPrice, bo.getContractPrice());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getContent()), BusBiddingPlan::getContent, bo.getContent());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增招标计划
|
||||
*
|
||||
* @param bo 招标计划
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(BusBiddingPlanBo bo) {
|
||||
BusBiddingPlan add = MapstructUtils.convert(bo, BusBiddingPlan.class);
|
||||
validEntityBeforeSave(add);
|
||||
BigDecimal price = BigDecimal.valueOf(0);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
if (bo.getLimitListBos() != null && !bo.getLimitListBos().isEmpty()) {
|
||||
//生成分标策划-限价一览对象集合
|
||||
List<BusTenderPlanningLimitList> planningLimitListList = new ArrayList<>();
|
||||
for (BusTenderPlanningLimitListBo limitListBo : bo.getLimitListBos()) {
|
||||
BusTenderPlanningLimitList busTenderPlanningLimitList = new BusTenderPlanningLimitList();
|
||||
busTenderPlanningLimitList.setLimitListId(limitListBo.getLimitListId());
|
||||
busTenderPlanningLimitList.setBiddingPlanId(bo.getId());
|
||||
BigDecimal count = busTenderPlanningLimitListMapper.getLimitCoount(limitListBo.getLimitListId());
|
||||
BusBillofquantitiesLimitListVo busBillofquantitiesLimitListVo = busBillofquantitiesLimitListService.queryById(limitListBo.getLimitListId());
|
||||
if (busBillofquantitiesLimitListVo == null) {
|
||||
throw new ServiceException("限价一览数据不存在");
|
||||
}
|
||||
if (busBillofquantitiesLimitListVo.getQuantity().compareTo(limitListBo.getNum().add(count !=null ? count: BigDecimal.valueOf(0))) < 0) {
|
||||
throw new ServiceException(busBillofquantitiesLimitListVo.getName()+"数量超过了总数量");
|
||||
}
|
||||
price.add(busBillofquantitiesLimitListVo.getUnitPrice().multiply(limitListBo.getNum()));
|
||||
busTenderPlanningLimitList.setNum(limitListBo.getNum());
|
||||
planningLimitListList.add(busTenderPlanningLimitList);
|
||||
}
|
||||
add.setPlannedBiddingMethod(price.compareTo(BigDecimal.valueOf(10000000)) > 0 ? "公招":"邀标");
|
||||
add.setPrice(price);
|
||||
//批量新增
|
||||
busTenderPlanningLimitListMapper.insertBatch(planningLimitListList);
|
||||
baseMapper.updateById(add);
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改招标计划
|
||||
*
|
||||
* @param bo 招标计划
|
||||
* @param bidFile
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(BusBiddingPlanBo bo, MultipartFile bidFile) {
|
||||
if (bo.getStatus() == 1){
|
||||
throw new ServiceException("数据已锁定,不允许继续上传附件");
|
||||
}
|
||||
BusBiddingPlan update = MapstructUtils.convert(bo, BusBiddingPlan.class);
|
||||
BusBiddingPlanAnnexBo planAnnex = new BusBiddingPlanAnnexBo();
|
||||
planAnnex.setBiddingPlanId(bo.getId());
|
||||
List<BusBiddingPlanAnnexVo> planAnnexVoList = busBiddingPlanAnnexService.queryList(planAnnex);
|
||||
if (planAnnexVoList != null && !planAnnexVoList.isEmpty() ) {
|
||||
|
||||
if (!bidFile.isEmpty()){
|
||||
SysOssUploadVo wordEntity = ossService.uploadWithNoSave(bidFile, ossService.minioFileName(FormalitiesAnnex,bidFile));
|
||||
update.setBidFile(wordEntity.getUrl());
|
||||
update.setBidFileName(wordEntity.getFileName());
|
||||
}
|
||||
// if (!contractFile.isEmpty()){
|
||||
// SysOssUploadVo wordEntity = ossService.uploadWithNoSave(contractFile, ossService.minioFileName(FormalitiesAnnex,contractFile));
|
||||
// update.setContractFile(wordEntity.getUrl());
|
||||
// update.setContractFileName(wordEntity.getFileName());
|
||||
//
|
||||
// }
|
||||
if (bo.getContractPrice() != null && bo.getBidFile().isEmpty()){
|
||||
throw new ServiceException("中标文件未上传");
|
||||
}
|
||||
if (bo.getWinningBidder() != null && bo.getBidFile().isEmpty()){
|
||||
throw new ServiceException("中标单位不能为空");
|
||||
}
|
||||
}
|
||||
// validEntityBeforeSave(update);
|
||||
//todo 校验
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusBiddingPlan entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除招标计划信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
//删除子表数据
|
||||
for (Long id : ids) {
|
||||
busTenderPlanningLimitListMapper.delete(new LambdaQueryWrapper<BusTenderPlanningLimitList>()
|
||||
.eq(BusTenderPlanningLimitList::getBiddingPlanId, id));
|
||||
}
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BusBillofquantitiesLimitListVo> getMore(BusBiddingPlanBo bo) {
|
||||
List<BusTenderPlanningLimitList> planningLimitListList = busTenderPlanningLimitListMapper.selectList(new LambdaQueryWrapper<BusTenderPlanningLimitList>()
|
||||
.eq(BusTenderPlanningLimitList::getBiddingPlanId, bo.getId()));
|
||||
List<Long> ids = new ArrayList<>();
|
||||
for (BusTenderPlanningLimitList planningLimitList : planningLimitListList) {
|
||||
ids.add(planningLimitList.getLimitListId());
|
||||
}
|
||||
List<BusBillofquantitiesLimitListVo> billofquantitiesLimitListList = busBillofquantitiesLimitListService.getListByIds(ids);
|
||||
List<BusBillofquantitiesLimitListVo> list = billofquantitiesLimitListList.stream().distinct().collect(Collectors.toList());
|
||||
for (BusBillofquantitiesLimitListVo limitList : list) {
|
||||
for (BusTenderPlanningLimitList limitList1 : planningLimitListList) {
|
||||
if (limitList.getId().equals(limitList1.getLimitListId())){
|
||||
limitList.setQuantity(limitList1.getNum());
|
||||
if (limitList.getUnitPrice() != null && limitList.getQuantity() != null) {
|
||||
limitList.setPrice(limitList.getUnitPrice().multiply(limitList.getQuantity()).setScale(2, RoundingMode.HALF_UP));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//构建父子映射
|
||||
Map<String, List<BusBillofquantitiesLimitListVo>> parentMap = list.stream()
|
||||
.collect(Collectors.groupingBy(BusBillofquantitiesLimitListVo::getPid));
|
||||
//递归组装树形结构
|
||||
|
||||
return buildTree("0", parentMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean uploadBiddingDocuments(BusBiddingPlanBo bo, List<MultipartFile> files) {
|
||||
if (bo.getStatus() == 1){
|
||||
throw new ServiceException("数据已锁定,不允许继续上传附件");
|
||||
}
|
||||
List<BusBiddingPlanAnnex> annexArrayList = new ArrayList<>();
|
||||
// 先判断数组是否为空或长度为0
|
||||
if (files != null && !files.isEmpty()) {
|
||||
// 遍历文件数组
|
||||
for (MultipartFile file : files) {
|
||||
// 处理单个文件前,先判断是否为空文件(isEmpty())
|
||||
if (file.isEmpty()) {
|
||||
System.out.println("跳过空文件");
|
||||
continue;
|
||||
}
|
||||
SysOssUploadVo wordEntity = ossService.uploadWithNoSave(file, ossService.minioFileName(FormalitiesAnnex,file));
|
||||
BusBiddingPlanAnnex formalitiesAnnex = new BusBiddingPlanAnnex();
|
||||
formalitiesAnnex.setUrl(wordEntity.getUrl());
|
||||
formalitiesAnnex.setName(wordEntity.getFileName());
|
||||
formalitiesAnnex.setBiddingPlanId(bo.getId());
|
||||
annexArrayList.add(formalitiesAnnex);
|
||||
}
|
||||
}
|
||||
return busBiddingPlanAnnexService.saveBatch(annexArrayList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean editStatus(BusBiddingPlanBo bo) {
|
||||
BusBiddingPlan update = MapstructUtils.convert(bo, BusBiddingPlan.class);
|
||||
return baseMapper.updateById(update) >0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归构建树形结构
|
||||
* @param parentId 父节点ID(顶级节点为0)
|
||||
* @param parentMap 父子映射表(key=pid,value=子节点列表)
|
||||
* @return 组装好的子树列表
|
||||
*/
|
||||
private List<BusBillofquantitiesLimitListVo> buildTree(String parentId, Map<String, List<BusBillofquantitiesLimitListVo>> parentMap) {
|
||||
// 获取当前父节点的所有直接子节点
|
||||
List<BusBillofquantitiesLimitListVo> children = parentMap.getOrDefault(parentId, Collections.emptyList());
|
||||
if (children.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 为每个子节点递归设置其下一级子节点
|
||||
for (BusBillofquantitiesLimitListVo child : children) {
|
||||
// 递归查询当前子节点的子节点,设置为它的子树
|
||||
List<BusBillofquantitiesLimitListVo> subChildren = buildTree(child.getSid(), parentMap);
|
||||
// 注意:需要在Vo中添加子节点列表字段,用于存储子树
|
||||
child.setChildren(subChildren);
|
||||
}
|
||||
|
||||
return children;
|
||||
}
|
||||
}
|
@ -87,6 +87,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPid()), BusBillofquantitiesLimitList::getPid, bo.getPid());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getNum()), BusBillofquantitiesLimitList::getNum, bo.getNum());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), BusBillofquantitiesLimitList::getName, bo.getName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getType()), BusBillofquantitiesLimitList::getType, bo.getType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSpecification()), BusBillofquantitiesLimitList::getSpecification, bo.getSpecification());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), BusBillofquantitiesLimitList::getUnit, bo.getUnit());
|
||||
lqw.eq(bo.getQuantity() != null, BusBillofquantitiesLimitList::getQuantity, bo.getQuantity());
|
||||
@ -171,6 +172,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
List<BusBillofquantitiesLimitList> busBillofquantitiesLimitLists = baseMapper.selectList(new LambdaQueryWrapper<BusBillofquantitiesLimitList>()
|
||||
.select(BusBillofquantitiesLimitList::getVersions)
|
||||
.eq(bo.getProjectId() != null, BusBillofquantitiesLimitList::getProjectId, bo.getProjectId())
|
||||
.eq(StringUtils.isNotBlank(bo.getType()), BusBillofquantitiesLimitList::getType, bo.getType())
|
||||
.orderByDesc(BusBillofquantitiesLimitList::getCreateTime)
|
||||
.groupBy(BusBillofquantitiesLimitList::getVersions));
|
||||
return busBillofquantitiesLimitLists.stream()
|
||||
@ -184,6 +186,7 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
List<BusBillofquantitiesLimitList> busBillofquantitiesLimitLists = baseMapper.selectList(new LambdaQueryWrapper<BusBillofquantitiesLimitList>()
|
||||
.select(BusBillofquantitiesLimitList::getSheet)
|
||||
.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())
|
||||
.orderByAsc(BusBillofquantitiesLimitList::getSheet)
|
||||
.groupBy(BusBillofquantitiesLimitList::getSheet));
|
||||
|
@ -0,0 +1,133 @@
|
||||
package org.dromara.tender.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.tender.domain.bo.BusTenderPlanningLimitListBo;
|
||||
import org.dromara.tender.domain.vo.BusTenderPlanningLimitListVo;
|
||||
import org.dromara.tender.domain.BusTenderPlanningLimitList;
|
||||
import org.dromara.tender.mapper.BusTenderPlanningLimitListMapper;
|
||||
import org.dromara.tender.service.IBusTenderPlanningLimitListService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 招标计划-限价一览Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class BusTenderPlanningLimitListServiceImpl extends ServiceImpl<BusTenderPlanningLimitListMapper, BusTenderPlanningLimitList> implements IBusTenderPlanningLimitListService {
|
||||
|
||||
private final BusTenderPlanningLimitListMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询招标计划-限价一览
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 招标计划-限价一览
|
||||
*/
|
||||
@Override
|
||||
public BusTenderPlanningLimitListVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询招标计划-限价一览列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 招标计划-限价一览分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<BusTenderPlanningLimitListVo> queryPageList(BusTenderPlanningLimitListBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BusTenderPlanningLimitList> lqw = buildQueryWrapper(bo);
|
||||
Page<BusTenderPlanningLimitListVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的招标计划-限价一览列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 招标计划-限价一览列表
|
||||
*/
|
||||
@Override
|
||||
public List<BusTenderPlanningLimitListVo> queryList(BusTenderPlanningLimitListBo bo) {
|
||||
LambdaQueryWrapper<BusTenderPlanningLimitList> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BusTenderPlanningLimitList> buildQueryWrapper(BusTenderPlanningLimitListBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BusTenderPlanningLimitList> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(BusTenderPlanningLimitList::getId);
|
||||
lqw.eq(bo.getBiddingPlanId() != null, BusTenderPlanningLimitList::getBiddingPlanId, bo.getBiddingPlanId());
|
||||
lqw.eq(bo.getLimitListId() != null, BusTenderPlanningLimitList::getLimitListId, bo.getLimitListId());
|
||||
lqw.eq(bo.getNum() != null, BusTenderPlanningLimitList::getNum, bo.getNum());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增招标计划-限价一览
|
||||
*
|
||||
* @param bo 招标计划-限价一览
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(BusTenderPlanningLimitListBo bo) {
|
||||
BusTenderPlanningLimitList add = MapstructUtils.convert(bo, BusTenderPlanningLimitList.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改招标计划-限价一览
|
||||
*
|
||||
* @param bo 招标计划-限价一览
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(BusTenderPlanningLimitListBo bo) {
|
||||
BusTenderPlanningLimitList update = MapstructUtils.convert(bo, BusTenderPlanningLimitList.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusTenderPlanningLimitList entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除招标计划-限价一览信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.tender.mapper.BusBiddingPlanAnnexMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.tender.mapper.BusBiddingPlanMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.tender.mapper.BusTenderPlanningLimitListMapper">
|
||||
|
||||
<select id="getLimitCoount" resultType="java.math.BigDecimal">
|
||||
SELECT CAST(
|
||||
SUM( num ) AS DECIMAL ( 20, 2 )) as num
|
||||
from bus_tender_planning_limit_list
|
||||
where limit_list_id = #{limitListId}
|
||||
</select>
|
||||
</mapper>
|
Reference in New Issue
Block a user