阶段成本分解接口修改
This commit is contained in:
@ -47,9 +47,12 @@ import org.dromara.system.service.ISysOssService;
|
||||
import org.dromara.tender.domain.BusBLimitListVersions;
|
||||
import org.dromara.tender.domain.BusBillofquantitiesLimitList;
|
||||
import org.dromara.tender.domain.vo.BusBLimitListVersionsVo;
|
||||
import org.dromara.tender.enums.LimitListTypeEnum;
|
||||
import org.dromara.tender.service.IBusBLimitListVersionsService;
|
||||
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService;
|
||||
import org.dromara.xzd.domain.XzdProject;
|
||||
import org.dromara.xzd.service.IXzdProjectService;
|
||||
@ -87,6 +90,7 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
|
||||
private final IBusBLimitListVersionsService busBLimitListVersionsService;
|
||||
private final IBusBiddingLimitVersionsService busBiddingLimitVersions;
|
||||
private final IXzdCbysZjhcbService xzdCbysZjhcbService;
|
||||
private final IXzdCbysJdcbfjService xzdCbysJdcbfjService;
|
||||
@Lazy
|
||||
@Resource
|
||||
private IBusProjectService busProjectService;
|
||||
@ -770,6 +774,34 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
|
||||
if (!b) {
|
||||
log.info("新增失败");
|
||||
}
|
||||
XzdCbysJdcbfj zjhcb = new XzdCbysJdcbfj();
|
||||
BusProjectDept projectDept = projectDeptService.getBaseMapper().selectOne(new LambdaQueryWrapper<BusProjectDept>().eq(BusProjectDept::getProjectId, versions.getProjectId()));
|
||||
if (projectDept != null){
|
||||
zjhcb.setDeptId(projectDept.getDeptId());
|
||||
}
|
||||
zjhcb.setVesions(busBLimitListVersions.getVersions());
|
||||
zjhcb.setSysProjectId(versions.getProjectId());
|
||||
String banBen = BatchNumberGenerator.generateBatchNumber("LXCBJDCBFJZC-");
|
||||
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());
|
||||
Long count = xzdCbysJdcbfjService.getBaseMapper().selectCount(new LambdaQueryWrapper<XzdCbysJdcbfj>()
|
||||
.eq(XzdCbysJdcbfj::getSysProjectId, versions.getProjectId())
|
||||
.eq(XzdCbysJdcbfj::getVesions, busBLimitListVersions.getVersions())
|
||||
.eq(XzdCbysJdcbfj::getType, LimitListTypeEnum.SUB_COMPANY.getCode()));
|
||||
zjhcb.setDocTitle(count == 0 ? xzdProject.getProjectName() :xzdProject.getProjectName()+count);
|
||||
}else {
|
||||
zjhcb.setDocTitle(banBen);
|
||||
}
|
||||
zjhcb.setDocDate(LocalDate.now());
|
||||
zjhcb.setBudgetCategory("1");
|
||||
zjhcb.setType(LimitListTypeEnum.SUB_COMPANY.getCode());
|
||||
boolean save1 = xzdCbysJdcbfjService.save(zjhcb);
|
||||
if (!save1) {
|
||||
log.info("新增失败");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -845,6 +877,34 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
|
||||
if (!b) {
|
||||
log.info("新增失败");
|
||||
}
|
||||
XzdCbysJdcbfj zjhcb = new XzdCbysJdcbfj();
|
||||
BusProjectDept projectDept = projectDeptService.getBaseMapper().selectOne(new LambdaQueryWrapper<BusProjectDept>().eq(BusProjectDept::getProjectId, versions.getProjectId()));
|
||||
if (projectDept != null){
|
||||
zjhcb.setDeptId(projectDept.getDeptId());
|
||||
}
|
||||
zjhcb.setVesions(busBLimitListVersions.getVersions());
|
||||
zjhcb.setSysProjectId(versions.getProjectId());
|
||||
String banBen = BatchNumberGenerator.generateBatchNumber("LXCBJDCBFJWZ-");
|
||||
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());
|
||||
Long count = xzdCbysJdcbfjService.getBaseMapper().selectCount(new LambdaQueryWrapper<XzdCbysJdcbfj>()
|
||||
.eq(XzdCbysJdcbfj::getSysProjectId, versions.getProjectId())
|
||||
.eq(XzdCbysJdcbfj::getVesions, busBLimitListVersions.getVersions())
|
||||
.eq(XzdCbysJdcbfj::getType, LimitListTypeEnum.SPECIAL.getCode()));
|
||||
zjhcb.setDocTitle(count == 0 ? xzdProject.getProjectName() :xzdProject.getProjectName()+count);
|
||||
}else {
|
||||
zjhcb.setDocTitle(banBen);
|
||||
}
|
||||
zjhcb.setDocDate(LocalDate.now());
|
||||
zjhcb.setBudgetCategory("1");
|
||||
zjhcb.setType(LimitListTypeEnum.SPECIAL.getCode());
|
||||
boolean save1 = xzdCbysJdcbfjService.save(zjhcb);
|
||||
if (!save1) {
|
||||
log.info("新增失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -571,9 +571,9 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
||||
//删除所有旧部门
|
||||
boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class)
|
||||
.eq(BusProjectDept::getProjectId, project.getId()));
|
||||
if (!remove) {
|
||||
throw new ServiceException("删除项目部门失败", HttpStatus.ERROR);
|
||||
}
|
||||
// if (!remove) {
|
||||
// throw new ServiceException("删除项目部门失败", HttpStatus.ERROR);
|
||||
// }
|
||||
if (req.getDeptIds() !=null) {
|
||||
BusProjectDept projectDept = new BusProjectDept();
|
||||
projectDept.setDeptId(req.getDeptIds());
|
||||
|
||||
@ -123,4 +123,6 @@ public interface IBusBillofquantitiesLimitListService extends IService<BusBillof
|
||||
List<BusBillofquantitiesLimitListVo> getZjhcbTree(BusBillofquantitiesLimitListBo bo);
|
||||
|
||||
List<BusBillofquantitiesLimitListVo> getVoByVersion(Long sysProjectId, String vesion);
|
||||
|
||||
List<BusBillofquantitiesLimitListVo> getJdcbfjTree(BusBillofquantitiesLimitListBo bo);
|
||||
}
|
||||
|
||||
@ -396,6 +396,26 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
.isNotNull(BusBillofquantitiesLimitList::getUnitPrice));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BusBillofquantitiesLimitListVo> getJdcbfjTree(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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归构建树形结构
|
||||
*
|
||||
|
||||
@ -16,6 +16,9 @@ import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
import org.dromara.tender.enums.LimitListTypeEnum;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
@ -49,6 +52,26 @@ public class XzdCbysJdcbfjController extends BaseController {
|
||||
@Lazy
|
||||
private final IXzdCbysZjhcbService xzdCbysZjhcbService;
|
||||
|
||||
/**
|
||||
* 获取指定版本的sheet
|
||||
*/
|
||||
@SaCheckPermission(value = {"costBudget:cbysJdcbfj:list","costBudget:cbysJdcbfj:add","costBudget:cbysJdcbfj:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/sheetList")
|
||||
public R<List<String>> sheetList(XzdCbysJdcbfjBo bo) {
|
||||
bo.setType(LimitListTypeEnum.SUB_COMPANY.getCode());
|
||||
return R.ok(xzdCbysJdcbfjService.sheetList(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询限价一览列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"costBudget:cbysJdcbfj:list","costBudget:cbysJdcbfj:add","costBudget:cbysJdcbfj:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/getTree")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> getTree(BusBillofquantitiesLimitListBo bo) {
|
||||
bo.setType(LimitListTypeEnum.SUB_COMPANY.getCode());
|
||||
return R.ok(xzdCbysJdcbfjService.getTree(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-总体计划成本列表
|
||||
*/
|
||||
@ -77,6 +100,7 @@ public class XzdCbysJdcbfjController extends BaseController {
|
||||
@SaCheckPermission("costBudget:cbysJdcbfj:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysJdcbfjVo> list(XzdCbysJdcbfjBo bo, PageQuery pageQuery) {
|
||||
bo.setType(LimitListTypeEnum.SPECIAL.getCode());
|
||||
return xzdCbysJdcbfjService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,176 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import jakarta.annotation.Resource;
|
||||
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.AddGroup;
|
||||
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.mybatis.core.page.TableDataInfo;
|
||||
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.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService;
|
||||
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
|
||||
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
|
||||
import org.dromara.xzd.service.IXzdBusinessSealService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xzd/costBudget/cbysJdcbfjwz")
|
||||
public class XzdCbysJdcbfjWzController extends BaseController {
|
||||
|
||||
private final IXzdCbysJdcbfjService xzdCbysJdcbfjService;
|
||||
private final IXzdBusinessSealService xzdBusinessSealService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IXzdCbysZjhcbService xzdCbysZjhcbService;
|
||||
|
||||
/**
|
||||
* 获取指定版本的sheet
|
||||
*/
|
||||
@SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:list","costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/sheetList")
|
||||
public R<List<String>> sheetList(XzdCbysJdcbfjBo bo) {
|
||||
bo.setType(LimitListTypeEnum.SPECIAL.getCode());
|
||||
return R.ok(xzdCbysJdcbfjService.sheetList(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询限价一览列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:list","costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit"},mode = SaMode.OR)
|
||||
@GetMapping("/getTree")
|
||||
public R<List<BusBillofquantitiesLimitListVo>> getTree(BusBillofquantitiesLimitListBo bo) {
|
||||
bo.setType(LimitListTypeEnum.SPECIAL.getCode());
|
||||
return R.ok(xzdCbysJdcbfjService.getTree(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-总体计划成本列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit","costBudget:cbysJdcbfjwz:list"}, mode = SaMode.OR)
|
||||
@GetMapping("/getList")
|
||||
public TableDataInfo<XzdCbysZjhcbVo> list(XzdCbysZjhcbBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysZjhcbService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-总体计划成本详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit","costBudget:cbysJdcbfjwz:list"},mode = SaMode.OR)
|
||||
@GetMapping("/get/{id}")
|
||||
public R<XzdCbysZjhcbVo> getCbysZjhcbInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysZjhcbService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjwz:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysJdcbfjVo> list(XzdCbysJdcbfjBo bo, PageQuery pageQuery) {
|
||||
bo.setType(LimitListTypeEnum.SPECIAL.getCode());
|
||||
return xzdCbysJdcbfjService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出立项及成本-成本预算-阶段成本分解列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjwz:export")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysJdcbfjBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysJdcbfjVo> list = xzdCbysJdcbfjService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "立项及成本-成本预算-阶段成本分解", XzdCbysJdcbfjVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-阶段成本分解详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
// @SaCheckPermission("costBudget:cbysJdcbfjwz:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysJdcbfjVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysJdcbfjService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-阶段成本分解
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjwz:add")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysJdcbfjBo bo) {
|
||||
return toAjax(xzdCbysJdcbfjService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-阶段成本分解
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjwz:edit")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysJdcbfjBo bo) {
|
||||
return toAjax(xzdCbysJdcbfjService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjwz:remove")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysJdcbfjService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询印章帮助列表
|
||||
*/
|
||||
@SaCheckPermission(value = {"costBudget:cbysJdcbfjwz:add","costBudget:cbysJdcbfjwz:edit","costBudget:cbysJdcbfjwz:list"}, mode = SaMode.OR)
|
||||
@GetMapping("/businessSealList")
|
||||
public TableDataInfo<XzdBusinessSealVo> list(XzdBusinessSealBo bo, PageQuery pageQuery) {
|
||||
return xzdBusinessSealService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
}
|
||||
@ -34,6 +34,14 @@ public class XzdCbysJdcbfj extends BaseEntity {
|
||||
* 部门id
|
||||
*/
|
||||
private Long deptId;
|
||||
/**
|
||||
*限价一览版本id
|
||||
*/
|
||||
private String vesions;
|
||||
/**
|
||||
* 系统项目id
|
||||
*/
|
||||
private Long sysProjectId;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
@ -117,4 +125,10 @@ public class XzdCbysJdcbfj extends BaseEntity {
|
||||
private String auditStatus;
|
||||
|
||||
|
||||
/**
|
||||
* 2.招采 3.物资
|
||||
*/
|
||||
private String type;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
@ -37,6 +38,19 @@ public class XzdCbysJdcbfjBo extends BaseEntity {
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
*限价一览版本id
|
||||
*/
|
||||
private String vesions;
|
||||
/**
|
||||
* 系统项目id
|
||||
*/
|
||||
private Long sysProjectId;
|
||||
|
||||
/**
|
||||
* 2.招采 3.物资
|
||||
*/
|
||||
private String type;
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
@ -124,7 +138,13 @@ public class XzdCbysJdcbfjBo extends BaseEntity {
|
||||
/**
|
||||
* 副表数据
|
||||
*/
|
||||
List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
|
||||
// List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
|
||||
|
||||
/**
|
||||
* 限价一览
|
||||
*/
|
||||
List<BusBillofquantitiesLimitListBo> bos;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -4,6 +4,8 @@ import java.math.BigDecimal;
|
||||
|
||||
import org.dromara.common.translation.annotation.Translation;
|
||||
import org.dromara.common.translation.constant.TransConstant;
|
||||
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
@ -46,6 +48,15 @@ public class XzdCbysJdcbfjVo implements Serializable {
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
*限价一览版本id
|
||||
*/
|
||||
private String vesions;
|
||||
/**
|
||||
* 系统项目id
|
||||
*/
|
||||
private Long sysProjectId;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
@ -152,10 +163,21 @@ public class XzdCbysJdcbfjVo implements Serializable {
|
||||
*/
|
||||
private String auditStatus;
|
||||
|
||||
// /**
|
||||
// * 副表数据
|
||||
// */
|
||||
// List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
|
||||
|
||||
|
||||
/**
|
||||
* 副表数据
|
||||
* 限价一览
|
||||
*/
|
||||
List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
|
||||
List<BusBillofquantitiesLimitListVo> bos;
|
||||
|
||||
/**
|
||||
* 2.招采 3.物资
|
||||
*/
|
||||
private String type;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
@ -67,4 +69,20 @@ public interface IXzdCbysJdcbfjService extends IService<XzdCbysJdcbfj>{
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 查询sheet列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return sheet列表
|
||||
*/
|
||||
List<String> sheetList(XzdCbysJdcbfjBo bo);
|
||||
|
||||
/**
|
||||
* 获取树结构
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 树结构
|
||||
*/
|
||||
List<BusBillofquantitiesLimitListVo> getTree(BusBillofquantitiesLimitListBo bo);
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
|
||||
import org.dromara.common.core.domain.event.ProcessEvent;
|
||||
@ -17,12 +18,18 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.utils.BatchNumberGenerator;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.dromara.system.service.impl.SysOssServiceImpl;
|
||||
import org.dromara.tender.domain.BusBillofquantitiesLimitList;
|
||||
import org.dromara.tender.domain.bo.BusBillofquantitiesLimitListBo;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
import org.dromara.tender.enums.LimitListTypeEnum;
|
||||
import org.dromara.tender.service.IBusBillofquantitiesLimitListService;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService;
|
||||
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
@ -30,6 +37,7 @@ import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjMapper
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解Service业务层处理
|
||||
@ -55,6 +63,10 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, X
|
||||
@Autowired
|
||||
private IXzdCbysZjhcbService xzdCbysZjhcbService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IBusBillofquantitiesLimitListService limitListService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
@ -115,6 +127,7 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, X
|
||||
lqw.eq(bo.getExchangeRate() != null, XzdCbysJdcbfj::getExchangeRate, bo.getExchangeRate());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysJdcbfj::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysJdcbfj::getFileId, bo.getFileId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getType()), XzdCbysJdcbfj::getType, bo.getType());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@ -134,14 +147,14 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, X
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
|
||||
bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
|
||||
String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
|
||||
item.setBudgetItemCode(code);
|
||||
item.setMainTableId(add.getId());
|
||||
});
|
||||
xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
|
||||
}
|
||||
// if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
|
||||
// bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
|
||||
// String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
|
||||
// item.setBudgetItemCode(code);
|
||||
// item.setMainTableId(add.getId());
|
||||
// });
|
||||
// xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
|
||||
// }
|
||||
return flag;
|
||||
}
|
||||
|
||||
@ -155,15 +168,16 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, X
|
||||
public Boolean updateByBo(XzdCbysJdcbfjBo bo) {
|
||||
XzdCbysJdcbfj update = MapstructUtils.convert(bo, XzdCbysJdcbfj.class);
|
||||
validEntityBeforeSave(update);
|
||||
xzdCbysJdcbfjFubiaoService.remove(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, bo.getId()));
|
||||
if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
|
||||
bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
|
||||
String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
|
||||
item.setBudgetItemCode(code);
|
||||
item.setMainTableId(bo.getId());
|
||||
});
|
||||
xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
|
||||
}
|
||||
// xzdCbysJdcbfjFubiaoService.remove(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, bo.getId()));
|
||||
// if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
|
||||
// bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
|
||||
// String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
|
||||
// item.setBudgetItemCode(code);
|
||||
// item.setMainTableId(bo.getId());
|
||||
// });
|
||||
// xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
|
||||
// }
|
||||
Boolean b = limitListService.updateByBo(bo.getBos());
|
||||
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
@ -205,14 +219,40 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, X
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> sheetList(XzdCbysJdcbfjBo bo) {
|
||||
XzdCbysJdcbfjVo xzdCbysZjhcbVo = baseMapper.selectVoOne(new LambdaQueryWrapper<XzdCbysJdcbfj>().eq(XzdCbysJdcbfj::getSysProjectId, bo.getSysProjectId()).eq(XzdCbysJdcbfj::getType,bo.getType()));
|
||||
if (xzdCbysZjhcbVo != null){
|
||||
List<BusBillofquantitiesLimitList> busBillofquantitiesLimitLists = limitListService.getBaseMapper().selectList(new LambdaQueryWrapper<BusBillofquantitiesLimitList>()
|
||||
.select(BusBillofquantitiesLimitList::getSheet)
|
||||
.eq(xzdCbysZjhcbVo.getSysProjectId() != null, BusBillofquantitiesLimitList::getProjectId, xzdCbysZjhcbVo.getSysProjectId())
|
||||
.eq(StringUtils.isNotBlank(bo.getType()),BusBillofquantitiesLimitList::getType, bo.getType())
|
||||
.eq(StringUtils.isNotBlank(xzdCbysZjhcbVo.getVesions()), BusBillofquantitiesLimitList::getVersions, xzdCbysZjhcbVo.getVesions())
|
||||
.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.getJdcbfjTree(bo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取扣款与奖励项
|
||||
* @param vo
|
||||
*/
|
||||
private void getHttk(XzdCbysJdcbfjVo vo) {
|
||||
List<XzdCbysJdcbfjFubiao> xzdCbysZtjhcbBgjls = xzdCbysJdcbfjFubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, vo.getId()));
|
||||
vo.setXzdCbysJdcbfjFubiao(xzdCbysZtjhcbBgjls);
|
||||
// List<XzdCbysJdcbfjFubiao> xzdCbysZtjhcbBgjls = xzdCbysJdcbfjFubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, vo.getId()));
|
||||
// vo.setXzdCbysJdcbfjFubiao(xzdCbysZtjhcbBgjls);
|
||||
List<BusBillofquantitiesLimitListVo> vos = limitListService.getVoByVersion(vo.getSysProjectId(), vo.getVesions());
|
||||
vo.setBos(vos);
|
||||
}
|
||||
|
||||
|
||||
@ -261,5 +301,48 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, X
|
||||
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
|
||||
log.info("立项及成本-成本预算-阶段成本分解计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
|
||||
}
|
||||
/**
|
||||
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
|
||||
* 正常使用只需#processEvent.flowCode=='leave1'
|
||||
* 示例为了方便则使用startsWith匹配了全部示例key
|
||||
*
|
||||
* @param processEvent 参数
|
||||
*/
|
||||
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdCbysJdcbfjwz')")
|
||||
public void processPlansHandlErequipmentListWZ(ProcessEvent processEvent) {
|
||||
log.info("立项及成本-成本预算-阶段成本分解审核任务执行了{}", processEvent.toString());
|
||||
String id = processEvent.getBusinessId();
|
||||
XzdCbysJdcbfj xzdCbysJdcbfj = baseMapper.selectById(Long.valueOf(id));
|
||||
if (xzdCbysJdcbfj == null){return;}
|
||||
xzdCbysJdcbfj.setAuditStatus(processEvent.getStatus());
|
||||
baseMapper.updateById(xzdCbysJdcbfj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行任务创建监听
|
||||
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
|
||||
* 在方法中判断流程节点key
|
||||
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
|
||||
* //执行业务逻辑
|
||||
* }
|
||||
*
|
||||
* @param processTaskEvent 参数
|
||||
*/
|
||||
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdCbysJdcbfjwz')")
|
||||
public void processTaskPlansHandlerEquipmentListWZ(ProcessTaskEvent processTaskEvent) {
|
||||
log.info("立项及成本-成本预算-阶段成本分解审核任务创建了{}", processTaskEvent.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听删除流程事件
|
||||
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
|
||||
* 示例为了方便则使用startsWith匹配了全部示例key
|
||||
*
|
||||
* @param processDeleteEvent 参数
|
||||
*/
|
||||
@org.springframework.context.event.EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdCbysJdcbfjwz')")
|
||||
public void processDeletePlansHandlerEquipmentListWZ(ProcessDeleteEvent processDeleteEvent) {
|
||||
log.info("立项及成本-成本预算-阶段成本分解计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user