bug修改
This commit is contained in:
@ -88,7 +88,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl<BusBiddingLimitL
|
||||
private LambdaQueryWrapper<BusBiddingLimitList> buildQueryWrapper(BusBiddingLimitListBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BusBiddingLimitList> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(BusBiddingLimitList::getId);
|
||||
lqw.orderByAsc(BusBiddingLimitList::getSid);
|
||||
lqw.eq(bo.getProjectId() != null, BusBiddingLimitList::getProjectId, bo.getProjectId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getVersions()), BusBiddingLimitList::getVersions, bo.getVersions());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSheet()), BusBiddingLimitList::getSheet, bo.getSheet());
|
||||
@ -172,9 +172,43 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl<BusBiddingLimitL
|
||||
//递归组装树形结构
|
||||
List<BusBiddingLimitListVo> treeList = buildTree("0", parentMap);
|
||||
|
||||
for (BusBiddingLimitListVo item : treeList) {
|
||||
calculateTreePrice(item);
|
||||
}
|
||||
return treeList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 递归计算树形结构中每个节点的 price 字段:
|
||||
* - 叶子节点:price = quantity * unitPrice
|
||||
* - 非叶子节点:price = 所有子节点 price 的总和
|
||||
*/
|
||||
public void calculateTreePrice(BusBiddingLimitListVo node) {
|
||||
if (node == null) return;
|
||||
|
||||
// 先处理所有子节点
|
||||
for (BusBiddingLimitListVo child : node.getChildren()) {
|
||||
calculateTreePrice(child);
|
||||
}
|
||||
|
||||
// 如果是叶子节点,计算 price = quantity * unitPrice
|
||||
if (node.getChildren().isEmpty()) {
|
||||
if (node.getQuantity() != null && node.getUnitPrice() != null) {
|
||||
node.setPrice(node.getQuantity().multiply(node.getUnitPrice()));
|
||||
} else {
|
||||
node.setPrice(BigDecimal.ZERO); // 默认值
|
||||
}
|
||||
} else {
|
||||
// 非叶子节点:累加子节点的 price
|
||||
BigDecimal totalPrice = node.getChildren().stream()
|
||||
.map(BusBiddingLimitListVo::getPrice)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
node.setPrice(totalPrice);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean importExcelFile(Long projectId, MultipartFile file) {
|
||||
|
@ -151,9 +151,8 @@ public class BusBiddingLimitVersionsServiceImpl extends ServiceImpl<BusBiddingLi
|
||||
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
|
||||
log.info("物资设备清单审核任务执行了{}", processEvent.toString());
|
||||
String id = processEvent.getBusinessId();
|
||||
String split = id.split("_")[0];
|
||||
LambdaQueryWrapper<BusBiddingLimitVersions> eq = new LambdaQueryWrapper<BusBiddingLimitVersions>()
|
||||
.eq(BusBiddingLimitVersions::getVersions, split);
|
||||
.eq(BusBiddingLimitVersions::getId, id);
|
||||
BusBiddingLimitVersions busBiddingLimitVersions = new BusBiddingLimitVersions();
|
||||
busBiddingLimitVersions.setStatus(processEvent.getStatus());
|
||||
boolean update = this.update(busBiddingLimitVersions, eq);
|
||||
|
@ -42,9 +42,6 @@ public class BusListOfWinningBidsServiceImpl extends ServiceImpl<BusListOfWinnin
|
||||
@Autowired
|
||||
private ISysOssService ossService;
|
||||
|
||||
// @Autowired
|
||||
// private ICtrIncomeContractService ctrIncomeContractService;
|
||||
|
||||
/**
|
||||
* 查询中标项目一览
|
||||
*
|
||||
@ -99,17 +96,6 @@ public class BusListOfWinningBidsServiceImpl extends ServiceImpl<BusListOfWinnin
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(BusListOfWinningBidsBo bo) {
|
||||
// if ("0".equals(bo.getWhetherBid()) && bo.getBidFileId() != null ) {
|
||||
// SysOssVo ossVo = ossService.getById(bo.getBidFileId());
|
||||
// bo.setBidFileName(ossVo.getOriginalName());
|
||||
// bo.setBidFile(ossVo.getUrl());
|
||||
//// CtrIncomeContract ctrIncomeContract = new CtrIncomeContract();
|
||||
//// ctrIncomeContract.setContractName(bo.getProjectName());
|
||||
//// ctrIncomeContract.setContractOwner(bo.getTenderer());
|
||||
//// ctrIncomeContract.setProjectId(bo.getProjectId());
|
||||
//// ctrIncomeContractService.save(ctrIncomeContract);
|
||||
// }
|
||||
|
||||
if (bo.getId() == null) {
|
||||
BusListOfWinningBids add = MapstructUtils.convert(bo, BusListOfWinningBids.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
|
||||
import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -52,6 +54,16 @@ public class BusFormalitiesAreConsolidatedController extends BaseController {
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询手续办理清单模板列表
|
||||
*/
|
||||
@SaCheckPermission("formalities:formalitiesAreConsolidated:getTree")
|
||||
@GetMapping("/getTree")
|
||||
public R<List<BusListOfFormalitiesVo>> getTree(BusFormalitiesAreConsolidatedBo bo) {
|
||||
List<BusListOfFormalitiesVo> vo = busFormalitiesAreConsolidatedService.getFormalitieTree(bo);
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
@SaCheckPermission("formalities:formalitiesAreConsolidated:list")
|
||||
@GetMapping("/getWhetherItExists")
|
||||
public R<Boolean> getWhetherItExists(BusFormalitiesAreConsolidatedBo bo) {
|
||||
|
@ -3,7 +3,6 @@ package org.dromara.formalities.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.*;
|
||||
@ -15,7 +14,6 @@ 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.formalities.domain.vo.BusListOfFormalitiesVo;
|
||||
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
|
||||
import org.dromara.formalities.service.IBusListOfFormalitiesService;
|
||||
@ -48,7 +46,7 @@ public class BusListOfFormalitiesController extends BaseController {
|
||||
@SaCheckPermission("formalities:listOfFormalities:list")
|
||||
@GetMapping("/list")
|
||||
public R<List<BusListOfFormalitiesVo>> list(BusListOfFormalitiesBo bo) {
|
||||
List<BusListOfFormalitiesVo> vo = busListOfFormalitiesService.getTree(bo);
|
||||
List<BusListOfFormalitiesVo> vo = busListOfFormalitiesService.getTreeList(bo);
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
|
@ -95,5 +95,10 @@ public class BusFormalitiesAreConsolidated extends BaseEntity {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 手续办理清单模板创建时间
|
||||
*/
|
||||
private Date createPTime;
|
||||
|
||||
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -92,6 +93,11 @@ public class BusFormalitiesAreConsolidatedBo extends BaseEntity {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 手续办理清单模板创建时间
|
||||
*/
|
||||
private Date createPTime;
|
||||
|
||||
/**
|
||||
* 选择的模板id
|
||||
*/
|
||||
|
@ -109,6 +109,11 @@ public class BusFormalitiesAreConsolidatedVo implements Serializable {
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 手续办理清单模板创建时间
|
||||
*/
|
||||
private Date createPTime;
|
||||
|
||||
|
||||
private List<BusFormalitiesAreConsolidatedVo> children = new ArrayList<>();
|
||||
|
||||
|
@ -46,4 +46,6 @@ public class BusListOfFormalitiesVo implements Serializable {
|
||||
|
||||
private List<BusListOfFormalitiesVo> children = new ArrayList<>();
|
||||
|
||||
private Integer status;
|
||||
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ 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.springframework.web.multipart.MultipartFile;
|
||||
import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@ -80,4 +80,11 @@ public interface IBusFormalitiesAreConsolidatedService extends IService<BusForma
|
||||
Boolean getWhetherItExists(BusFormalitiesAreConsolidatedBo bo);
|
||||
|
||||
List<BusFormalitiesAreConsolidatedVo> getTree(BusFormalitiesAreConsolidatedBo bo);
|
||||
|
||||
/**
|
||||
* 获取模板列表数据并赋状态
|
||||
* @param bo
|
||||
* @return
|
||||
*/
|
||||
List<BusListOfFormalitiesVo> getFormalitieTree(BusFormalitiesAreConsolidatedBo bo);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.dromara.formalities.service;
|
||||
|
||||
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
|
||||
import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo;
|
||||
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
|
||||
import org.dromara.formalities.domain.BusListOfFormalities;
|
||||
@ -7,7 +8,7 @@ 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;
|
||||
|
||||
/**
|
||||
@ -70,8 +71,17 @@ public interface IBusListOfFormalitiesService extends IService<BusListOfFormalit
|
||||
|
||||
/**
|
||||
* 获取树形结构数据
|
||||
*
|
||||
* @param bo
|
||||
* @param busFormalitiesAreConsolidateds
|
||||
* @return
|
||||
*/
|
||||
List<BusListOfFormalitiesVo> getTree(BusListOfFormalitiesBo bo, List<BusFormalitiesAreConsolidated> busFormalitiesAreConsolidateds);
|
||||
|
||||
/**
|
||||
* 列表获取树形结构数据
|
||||
* @param bo
|
||||
* @return
|
||||
*/
|
||||
List<BusListOfFormalitiesVo> getTree(BusListOfFormalitiesBo bo);
|
||||
List<BusListOfFormalitiesVo> getTreeList(BusListOfFormalitiesBo bo);
|
||||
}
|
||||
|
@ -15,7 +15,9 @@ import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
|
||||
import org.dromara.formalities.domain.BusListOfFormalities;
|
||||
import org.dromara.formalities.domain.bo.AddBusFormalitiesAreConsolidatedBo;
|
||||
import org.dromara.formalities.domain.bo.BusFormalitiesAreConsolidatedBo;
|
||||
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
|
||||
import org.dromara.formalities.domain.vo.BusFormalitiesAreConsolidatedVo;
|
||||
import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo;
|
||||
import org.dromara.formalities.enums.FormalitiesStatusEnum;
|
||||
import org.dromara.formalities.mapper.BusFormalitiesAreConsolidatedMapper;
|
||||
import org.dromara.formalities.service.IBusFormalitiesAnnexService;
|
||||
@ -25,9 +27,6 @@ import org.dromara.formalities.utils.TreeUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@ -93,11 +92,23 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
return TreeUtil.buildTree1(voList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BusListOfFormalitiesVo> getFormalitieTree(BusFormalitiesAreConsolidatedBo bo) {
|
||||
//获取已存在的模板id
|
||||
List<BusFormalitiesAreConsolidated> busFormalitiesAreConsolidateds = baseMapper.selectList(new LambdaQueryWrapper<BusFormalitiesAreConsolidated>()
|
||||
.select(BusFormalitiesAreConsolidated::getFormalitiesId)
|
||||
.eq(BusFormalitiesAreConsolidated::getProjectId, bo.getProjectId()));
|
||||
//获取模板列表并过滤
|
||||
List<BusListOfFormalitiesVo> tree = busListOfFormalitiesService.getTree(new BusListOfFormalitiesBo(),busFormalitiesAreConsolidateds);
|
||||
return tree;
|
||||
}
|
||||
|
||||
|
||||
private LambdaQueryWrapper<BusFormalitiesAreConsolidated> buildQueryWrapper(BusFormalitiesAreConsolidatedBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BusFormalitiesAreConsolidated> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(BusFormalitiesAreConsolidated::getCreateTime);
|
||||
lqw.orderByAsc(BusFormalitiesAreConsolidated::getCreatePTime);
|
||||
lqw.orderByAsc(BusFormalitiesAreConsolidated::getCreateTime);
|
||||
lqw.eq(bo.getProjectId() != null, BusFormalitiesAreConsolidated::getProjectId, bo.getProjectId());
|
||||
lqw.eq(bo.getFormalitiesPid() != null, BusFormalitiesAreConsolidated::getFormalitiesPid, bo.getFormalitiesPid());
|
||||
lqw.eq(bo.getFormalitiesId() != null, BusFormalitiesAreConsolidated::getFormalitiesId, bo.getFormalitiesId());
|
||||
@ -120,13 +131,16 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
List<AddBusFormalitiesAreConsolidatedBo> addBusFormalitiesAreConsolidatedBos = bo.getAddBusFormalitiesAreConsolidatedBos();
|
||||
List<BusFormalitiesAreConsolidated> list = new ArrayList<>();
|
||||
Set<Long> ids = new HashSet<>();
|
||||
//遍历所选择的模板id对象
|
||||
addBusFormalitiesAreConsolidatedBos.forEach(addBusFormalitiesAreConsolidatedBo -> {
|
||||
BusFormalitiesAreConsolidated busFormalitiesAreConsolidated = new BusFormalitiesAreConsolidated();
|
||||
busFormalitiesAreConsolidated.setFormalitiesId(addBusFormalitiesAreConsolidatedBo.getFormalitiesId());
|
||||
BusListOfFormalities ofFormalities = busListOfFormalitiesService.getById(addBusFormalitiesAreConsolidatedBo.getFormalitiesId());
|
||||
if (ofFormalities != null) {
|
||||
busFormalitiesAreConsolidated.setFormalitiesName(ofFormalities.getName());
|
||||
busFormalitiesAreConsolidated.setCreatePTime(ofFormalities.getCreateTime());
|
||||
}
|
||||
//父模板id不为空时获取父模板名称并将id放入集合
|
||||
if (addBusFormalitiesAreConsolidatedBo.getFormalitiesPid() != null) {
|
||||
busFormalitiesAreConsolidated.setFormalitiesPid(addBusFormalitiesAreConsolidatedBo.getFormalitiesPid());
|
||||
ids.add(addBusFormalitiesAreConsolidatedBo.getFormalitiesPid());
|
||||
@ -139,6 +153,7 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
busFormalitiesAreConsolidated.setProcessingStatus(FormalitiesStatusEnum.TOSTART.getText());
|
||||
list.add(busFormalitiesAreConsolidated);
|
||||
});
|
||||
//生成父模板id的合规性手续合账数据
|
||||
for (Long id : ids) {
|
||||
BusListOfFormalities formalities = busListOfFormalitiesService.getById(id);
|
||||
if (formalities != null) {
|
||||
@ -147,16 +162,11 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
busFormalitiesAreConsolidated.setFormalitiesName(formalities.getName());
|
||||
busFormalitiesAreConsolidated.setProjectId(bo.getProjectId());
|
||||
busFormalitiesAreConsolidated.setStatus(1);
|
||||
busFormalitiesAreConsolidated.setCreatePTime(formalities.getCreateTime());
|
||||
list.add(busFormalitiesAreConsolidated);
|
||||
}
|
||||
|
||||
}
|
||||
// BusFormalitiesAreConsolidated add = MapstructUtils.convert(bo, BusFormalitiesAreConsolidated.class);
|
||||
// validEntityBeforeSave(add);
|
||||
// boolean flag = baseMapper.insert(add) > 0;
|
||||
// if (flag) {
|
||||
// bo.setId(add.getId());
|
||||
// }
|
||||
return baseMapper.insertBatch(list);
|
||||
}
|
||||
|
||||
@ -171,7 +181,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
|
||||
bo.setProcessingStatus(FormalitiesStatusEnum.PROCESSING.getText());
|
||||
BusFormalitiesAreConsolidated update = MapstructUtils.convert(bo, BusFormalitiesAreConsolidated.class);
|
||||
// validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
@ -180,9 +189,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
*/
|
||||
private void validEntityBeforeSave(BusFormalitiesAreConsolidated entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
// if (entity.getStatus() == 1){
|
||||
// throw new ServiceException("已完成不允许修改!!!");
|
||||
// }
|
||||
if (!FormalitiesStatusEnum.TOSTART.getText().equals(entity.getProcessingStatus())
|
||||
&& !FormalitiesStatusEnum.PROCESSING.getText().equals(entity.getProcessingStatus())
|
||||
&& !FormalitiesStatusEnum.DELETE.getText().equals(entity.getProcessingStatus())) {
|
||||
@ -214,12 +220,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
if (busFormalitiesAreConsolidated == null) {
|
||||
throw new ServiceException("数据不存在");
|
||||
}
|
||||
// if (busFormalitiesAreConsolidated.getProcessingStatus() == null) {
|
||||
// throw new ServiceException("办理状态为空不能提交");
|
||||
// }
|
||||
// if (FormalitiesStatusEnum.DELETE.getText().equals(busFormalitiesAreConsolidated.getProcessingStatus())){
|
||||
// throw new ServiceException("办理状态为已完成才能提交");
|
||||
// }
|
||||
|
||||
busFormalitiesAreConsolidated.setProcessingStatus(bo.getProcessingStatus());
|
||||
if (FormalitiesStatusEnum.DELETE.getText().equals(busFormalitiesAreConsolidated.getProcessingStatus())) {
|
||||
@ -241,8 +241,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
|
||||
busFormalitiesAreConsolidated.setActualCompletionTime(null);
|
||||
}
|
||||
validEntityBeforeSave(busFormalitiesAreConsolidated);
|
||||
// busFormalitiesAreConsolidated.setStatus(1);
|
||||
// BusFormalitiesAreConsolidated update = MapstructUtils.convert(bo, BusFormalitiesAreConsolidated.class);
|
||||
return baseMapper.updateById(busFormalitiesAreConsolidated) > 0;
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,7 @@ 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.BusFormalitiesAreConsolidated;
|
||||
import org.dromara.formalities.utils.TreeUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
|
||||
@ -20,7 +21,9 @@ import org.dromara.formalities.service.IBusListOfFormalitiesService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 手续办理清单模板Service业务层处理
|
||||
@ -61,11 +64,33 @@ public class BusListOfFormalitiesServiceImpl extends ServiceImpl<BusListOfFormal
|
||||
|
||||
/**
|
||||
* 获取树形结构数据
|
||||
*
|
||||
* @param bo
|
||||
* @param busFormalitiesAreConsolidateds
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<BusListOfFormalitiesVo> getTree(BusListOfFormalitiesBo bo) {
|
||||
public List<BusListOfFormalitiesVo> getTree(BusListOfFormalitiesBo bo, List<BusFormalitiesAreConsolidated> busFormalitiesAreConsolidateds) {
|
||||
List<BusListOfFormalitiesVo> voList = queryList(bo);
|
||||
// 预处理数据
|
||||
Set<Long> consolidatedIds = busFormalitiesAreConsolidateds.stream()
|
||||
.map(BusFormalitiesAreConsolidated::getFormalitiesId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 单层循环判断
|
||||
for (BusListOfFormalitiesVo vo : voList) {
|
||||
if (consolidatedIds.contains(vo.getId())) {
|
||||
vo.setStatus(1);
|
||||
} else {
|
||||
vo.setStatus(0);
|
||||
}
|
||||
}
|
||||
return TreeUtil.buildTree(voList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BusListOfFormalitiesVo> getTreeList(BusListOfFormalitiesBo bo) {
|
||||
List<BusListOfFormalitiesVo> voList = queryList(bo);
|
||||
return TreeUtil.buildTree(voList);
|
||||
}
|
||||
@ -125,6 +150,9 @@ public class BusListOfFormalitiesServiceImpl extends ServiceImpl<BusListOfFormal
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusListOfFormalities entity){
|
||||
if (entity.getName() == null || entity.getName().isEmpty()) {
|
||||
throw new ServiceException("名称不能为空!!");
|
||||
}
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
Long count = baseMapper.selectCount(new LambdaQueryWrapper<BusListOfFormalities>().eq(BusListOfFormalities::getName, entity.getName()));
|
||||
if(count > 0){
|
||||
|
@ -68,9 +68,9 @@ public class BusTenderPlanLimitListController extends BaseController {
|
||||
* 获取所有版本详细信息
|
||||
*/
|
||||
@SaCheckPermission("tender:tenderPlanLimitList:getVersionDetail")
|
||||
@GetMapping("/getVersionDetail")
|
||||
public R<BusBLimitListVersionsVo> getVersionDetail(BusBillofquantitiesLimitListBo bo) {
|
||||
return R.ok(busBillofquantitiesLimitListService.getVersionDetail(bo.getVersions()));
|
||||
@GetMapping("/getVersionDetail/{id}")
|
||||
public R<BusBLimitListVersionsVo> getVersionDetail(@NotNull(message = "id不能为空") @PathVariable Long id) {
|
||||
return R.ok(busBillofquantitiesLimitListService.getVersionDetail(id));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.dromara.tender.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.tender.domain.bo.TenderAllVersionNumbersReq;
|
||||
import org.dromara.tender.domain.vo.BusBLimitListVersionsVo;
|
||||
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
|
||||
@ -104,5 +105,5 @@ public interface IBusBillofquantitiesLimitListService extends IService<BusBillof
|
||||
* @param versions
|
||||
* @return
|
||||
*/
|
||||
BusBLimitListVersionsVo getVersionDetail(String versions);
|
||||
BusBLimitListVersionsVo getVersionDetail(Long versions);
|
||||
}
|
||||
|
@ -159,9 +159,8 @@ public class BusBLimitListVersionsServiceImpl extends ServiceImpl<BusBLimitListV
|
||||
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
|
||||
log.info("物资设备清单审核任务执行了{}", processEvent.toString());
|
||||
String id = processEvent.getBusinessId();
|
||||
String bus = id.split("_")[0];
|
||||
LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>()
|
||||
.eq(BusBLimitListVersions::getVersions, bus);
|
||||
.eq(BusBLimitListVersions::getId, id);
|
||||
BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions();
|
||||
busBLimitListVersions.setStatus(processEvent.getStatus());
|
||||
baseMapper.update(busBLimitListVersions, eq);
|
||||
@ -205,9 +204,8 @@ public class BusBLimitListVersionsServiceImpl extends ServiceImpl<BusBLimitListV
|
||||
public void processPlansHandlErequipmentList1(ProcessEvent processEvent) {
|
||||
log.info("物资设备清单审核任务执行了{}", processEvent.toString());
|
||||
String id = processEvent.getBusinessId();
|
||||
String bus = id.split("_")[0];
|
||||
LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>()
|
||||
.eq(BusBLimitListVersions::getVersions, bus);
|
||||
.eq(BusBLimitListVersions::getId, id);
|
||||
BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions();
|
||||
busBLimitListVersions.setStatus(processEvent.getStatus());
|
||||
baseMapper.update(busBLimitListVersions, eq);
|
||||
@ -251,9 +249,8 @@ public class BusBLimitListVersionsServiceImpl extends ServiceImpl<BusBLimitListV
|
||||
public void processPlansHandlErequipmentList2(ProcessEvent processEvent) {
|
||||
log.info("物资设备清单审核任务执行了{}", processEvent.toString());
|
||||
String id = processEvent.getBusinessId();
|
||||
String bus = id.split("_")[0];
|
||||
LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>()
|
||||
.eq(BusBLimitListVersions::getVersions, bus);
|
||||
.eq(BusBLimitListVersions::getId, id);
|
||||
BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions();
|
||||
busBLimitListVersions.setStatus(processEvent.getStatus());
|
||||
baseMapper.update(busBLimitListVersions, eq);
|
||||
|
@ -153,6 +153,7 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
|
||||
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) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package org.dromara.tender.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
@ -173,7 +174,9 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
.collect(Collectors.groupingBy(BusBillofquantitiesLimitListVo::getPid));
|
||||
//递归组装树形结构
|
||||
List<BusBillofquantitiesLimitListVo> treeList = buildTree("0", parentMap);
|
||||
|
||||
for (BusBillofquantitiesLimitListVo item : treeList) {
|
||||
calculateTreePrice(item);
|
||||
}
|
||||
return treeList;
|
||||
}
|
||||
|
||||
@ -245,8 +248,8 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusBLimitListVersionsVo getVersionDetail(String versions) {
|
||||
return busBLimitListVersionsService.queryByVersion(versions);
|
||||
public BusBLimitListVersionsVo getVersionDetail(Long id) {
|
||||
return busBLimitListVersionsService.queryById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -272,4 +275,34 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
|
||||
|
||||
return children;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归计算树形结构中每个节点的 price 字段:
|
||||
* - 叶子节点:price = quantity * unitPrice
|
||||
* - 非叶子节点:price = 所有子节点 price 的总和
|
||||
*/
|
||||
public void calculateTreePrice(BusBillofquantitiesLimitListVo node) {
|
||||
if (node == null) return;
|
||||
|
||||
// 先处理所有子节点
|
||||
for (BusBillofquantitiesLimitListVo child : node.getChildren()) {
|
||||
calculateTreePrice(child);
|
||||
}
|
||||
|
||||
// 如果是叶子节点,计算 price = quantity * unitPrice
|
||||
if (node.getChildren().isEmpty()) {
|
||||
if (node.getQuantity() != null && node.getUnitPrice() != null) {
|
||||
node.setPrice(node.getQuantity().multiply(node.getUnitPrice()));
|
||||
} else {
|
||||
node.setPrice(BigDecimal.ZERO); // 默认值
|
||||
}
|
||||
} else {
|
||||
// 非叶子节点:累加子节点的 price
|
||||
BigDecimal totalPrice = node.getChildren().stream()
|
||||
.map(BusBillofquantitiesLimitListVo::getPrice)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
node.setPrice(totalPrice);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user