bug修改

This commit is contained in:
2025-08-25 19:55:25 +08:00
parent 8e07ecc69b
commit 126fdeb6ba
18 changed files with 182 additions and 60 deletions

View File

@ -88,7 +88,7 @@ public class BusBiddingLimitListServiceImpl extends ServiceImpl<BusBiddingLimitL
private LambdaQueryWrapper<BusBiddingLimitList> buildQueryWrapper(BusBiddingLimitListBo bo) { private LambdaQueryWrapper<BusBiddingLimitList> buildQueryWrapper(BusBiddingLimitListBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusBiddingLimitList> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<BusBiddingLimitList> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusBiddingLimitList::getId); lqw.orderByAsc(BusBiddingLimitList::getSid);
lqw.eq(bo.getProjectId() != null, BusBiddingLimitList::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, BusBiddingLimitList::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getVersions()), BusBiddingLimitList::getVersions, bo.getVersions()); lqw.eq(StringUtils.isNotBlank(bo.getVersions()), BusBiddingLimitList::getVersions, bo.getVersions());
lqw.eq(StringUtils.isNotBlank(bo.getSheet()), BusBiddingLimitList::getSheet, bo.getSheet()); 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); List<BusBiddingLimitListVo> treeList = buildTree("0", parentMap);
for (BusBiddingLimitListVo item : treeList) {
calculateTreePrice(item);
}
return treeList; 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 @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean importExcelFile(Long projectId, MultipartFile file) { public Boolean importExcelFile(Long projectId, MultipartFile file) {

View File

@ -151,9 +151,8 @@ public class BusBiddingLimitVersionsServiceImpl extends ServiceImpl<BusBiddingLi
public void processPlansHandlErequipmentList(ProcessEvent processEvent) { public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("物资设备清单审核任务执行了{}", processEvent.toString()); log.info("物资设备清单审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId(); String id = processEvent.getBusinessId();
String split = id.split("_")[0];
LambdaQueryWrapper<BusBiddingLimitVersions> eq = new LambdaQueryWrapper<BusBiddingLimitVersions>() LambdaQueryWrapper<BusBiddingLimitVersions> eq = new LambdaQueryWrapper<BusBiddingLimitVersions>()
.eq(BusBiddingLimitVersions::getVersions, split); .eq(BusBiddingLimitVersions::getId, id);
BusBiddingLimitVersions busBiddingLimitVersions = new BusBiddingLimitVersions(); BusBiddingLimitVersions busBiddingLimitVersions = new BusBiddingLimitVersions();
busBiddingLimitVersions.setStatus(processEvent.getStatus()); busBiddingLimitVersions.setStatus(processEvent.getStatus());
boolean update = this.update(busBiddingLimitVersions, eq); boolean update = this.update(busBiddingLimitVersions, eq);

View File

@ -42,9 +42,6 @@ public class BusListOfWinningBidsServiceImpl extends ServiceImpl<BusListOfWinnin
@Autowired @Autowired
private ISysOssService ossService; private ISysOssService ossService;
// @Autowired
// private ICtrIncomeContractService ctrIncomeContractService;
/** /**
* 查询中标项目一览 * 查询中标项目一览
* *
@ -99,17 +96,6 @@ public class BusListOfWinningBidsServiceImpl extends ServiceImpl<BusListOfWinnin
*/ */
@Override @Override
public Boolean insertByBo(BusListOfWinningBidsBo bo) { 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) { if (bo.getId() == null) {
BusListOfWinningBids add = MapstructUtils.convert(bo, BusListOfWinningBids.class); BusListOfWinningBids add = MapstructUtils.convert(bo, BusListOfWinningBids.class);
validEntityBeforeSave(add); validEntityBeforeSave(add);

View File

@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -52,6 +54,16 @@ public class BusFormalitiesAreConsolidatedController extends BaseController {
return R.ok(list); 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") @SaCheckPermission("formalities:formalitiesAreConsolidated:list")
@GetMapping("/getWhetherItExists") @GetMapping("/getWhetherItExists")
public R<Boolean> getWhetherItExists(BusFormalitiesAreConsolidatedBo bo) { public R<Boolean> getWhetherItExists(BusFormalitiesAreConsolidatedBo bo) {

View File

@ -3,7 +3,6 @@ package org.dromara.formalities.controller;
import java.util.List; import java.util.List;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*; 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.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType; 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.vo.BusListOfFormalitiesVo;
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo; import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
import org.dromara.formalities.service.IBusListOfFormalitiesService; import org.dromara.formalities.service.IBusListOfFormalitiesService;
@ -48,7 +46,7 @@ public class BusListOfFormalitiesController extends BaseController {
@SaCheckPermission("formalities:listOfFormalities:list") @SaCheckPermission("formalities:listOfFormalities:list")
@GetMapping("/list") @GetMapping("/list")
public R<List<BusListOfFormalitiesVo>> list(BusListOfFormalitiesBo bo) { public R<List<BusListOfFormalitiesVo>> list(BusListOfFormalitiesBo bo) {
List<BusListOfFormalitiesVo> vo = busListOfFormalitiesService.getTree(bo); List<BusListOfFormalitiesVo> vo = busListOfFormalitiesService.getTreeList(bo);
return R.ok(vo); return R.ok(vo);
} }

View File

@ -95,5 +95,10 @@ public class BusFormalitiesAreConsolidated extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 手续办理清单模板创建时间
*/
private Date createPTime;
} }

View File

@ -10,6 +10,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated; import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -92,6 +93,11 @@ public class BusFormalitiesAreConsolidatedBo extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 手续办理清单模板创建时间
*/
private Date createPTime;
/** /**
* 选择的模板id * 选择的模板id
*/ */

View File

@ -109,6 +109,11 @@ public class BusFormalitiesAreConsolidatedVo implements Serializable {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
* 手续办理清单模板创建时间
*/
private Date createPTime;
private List<BusFormalitiesAreConsolidatedVo> children = new ArrayList<>(); private List<BusFormalitiesAreConsolidatedVo> children = new ArrayList<>();

View File

@ -46,4 +46,6 @@ public class BusListOfFormalitiesVo implements Serializable {
private List<BusListOfFormalitiesVo> children = new ArrayList<>(); private List<BusListOfFormalitiesVo> children = new ArrayList<>();
private Integer status;
} }

View File

@ -7,7 +7,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService; 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.Collection;
import java.util.List; import java.util.List;
@ -80,4 +80,11 @@ public interface IBusFormalitiesAreConsolidatedService extends IService<BusForma
Boolean getWhetherItExists(BusFormalitiesAreConsolidatedBo bo); Boolean getWhetherItExists(BusFormalitiesAreConsolidatedBo bo);
List<BusFormalitiesAreConsolidatedVo> getTree(BusFormalitiesAreConsolidatedBo bo); List<BusFormalitiesAreConsolidatedVo> getTree(BusFormalitiesAreConsolidatedBo bo);
/**
* 获取模板列表数据并赋状态
* @param bo
* @return
*/
List<BusListOfFormalitiesVo> getFormalitieTree(BusFormalitiesAreConsolidatedBo bo);
} }

View File

@ -1,5 +1,6 @@
package org.dromara.formalities.service; package org.dromara.formalities.service;
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo; import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo;
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo; import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
import org.dromara.formalities.domain.BusListOfFormalities; 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 org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List; 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 * @param bo
* @return * @return
*/ */
List<BusListOfFormalitiesVo> getTree(BusListOfFormalitiesBo bo); List<BusListOfFormalitiesVo> getTreeList(BusListOfFormalitiesBo bo);
} }

View File

@ -15,7 +15,9 @@ import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
import org.dromara.formalities.domain.BusListOfFormalities; import org.dromara.formalities.domain.BusListOfFormalities;
import org.dromara.formalities.domain.bo.AddBusFormalitiesAreConsolidatedBo; import org.dromara.formalities.domain.bo.AddBusFormalitiesAreConsolidatedBo;
import org.dromara.formalities.domain.bo.BusFormalitiesAreConsolidatedBo; 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.BusFormalitiesAreConsolidatedVo;
import org.dromara.formalities.domain.vo.BusListOfFormalitiesVo;
import org.dromara.formalities.enums.FormalitiesStatusEnum; import org.dromara.formalities.enums.FormalitiesStatusEnum;
import org.dromara.formalities.mapper.BusFormalitiesAreConsolidatedMapper; import org.dromara.formalities.mapper.BusFormalitiesAreConsolidatedMapper;
import org.dromara.formalities.service.IBusFormalitiesAnnexService; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*; import java.util.*;
/** /**
@ -93,11 +92,23 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
return TreeUtil.buildTree1(voList); 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) { private LambdaQueryWrapper<BusFormalitiesAreConsolidated> buildQueryWrapper(BusFormalitiesAreConsolidatedBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusFormalitiesAreConsolidated> lqw = Wrappers.lambdaQuery(); 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.getProjectId() != null, BusFormalitiesAreConsolidated::getProjectId, bo.getProjectId());
lqw.eq(bo.getFormalitiesPid() != null, BusFormalitiesAreConsolidated::getFormalitiesPid, bo.getFormalitiesPid()); lqw.eq(bo.getFormalitiesPid() != null, BusFormalitiesAreConsolidated::getFormalitiesPid, bo.getFormalitiesPid());
lqw.eq(bo.getFormalitiesId() != null, BusFormalitiesAreConsolidated::getFormalitiesId, bo.getFormalitiesId()); 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<AddBusFormalitiesAreConsolidatedBo> addBusFormalitiesAreConsolidatedBos = bo.getAddBusFormalitiesAreConsolidatedBos();
List<BusFormalitiesAreConsolidated> list = new ArrayList<>(); List<BusFormalitiesAreConsolidated> list = new ArrayList<>();
Set<Long> ids = new HashSet<>(); Set<Long> ids = new HashSet<>();
//遍历所选择的模板id对象
addBusFormalitiesAreConsolidatedBos.forEach(addBusFormalitiesAreConsolidatedBo -> { addBusFormalitiesAreConsolidatedBos.forEach(addBusFormalitiesAreConsolidatedBo -> {
BusFormalitiesAreConsolidated busFormalitiesAreConsolidated = new BusFormalitiesAreConsolidated(); BusFormalitiesAreConsolidated busFormalitiesAreConsolidated = new BusFormalitiesAreConsolidated();
busFormalitiesAreConsolidated.setFormalitiesId(addBusFormalitiesAreConsolidatedBo.getFormalitiesId()); busFormalitiesAreConsolidated.setFormalitiesId(addBusFormalitiesAreConsolidatedBo.getFormalitiesId());
BusListOfFormalities ofFormalities = busListOfFormalitiesService.getById(addBusFormalitiesAreConsolidatedBo.getFormalitiesId()); BusListOfFormalities ofFormalities = busListOfFormalitiesService.getById(addBusFormalitiesAreConsolidatedBo.getFormalitiesId());
if (ofFormalities != null) { if (ofFormalities != null) {
busFormalitiesAreConsolidated.setFormalitiesName(ofFormalities.getName()); busFormalitiesAreConsolidated.setFormalitiesName(ofFormalities.getName());
busFormalitiesAreConsolidated.setCreatePTime(ofFormalities.getCreateTime());
} }
//父模板id不为空时获取父模板名称并将id放入集合
if (addBusFormalitiesAreConsolidatedBo.getFormalitiesPid() != null) { if (addBusFormalitiesAreConsolidatedBo.getFormalitiesPid() != null) {
busFormalitiesAreConsolidated.setFormalitiesPid(addBusFormalitiesAreConsolidatedBo.getFormalitiesPid()); busFormalitiesAreConsolidated.setFormalitiesPid(addBusFormalitiesAreConsolidatedBo.getFormalitiesPid());
ids.add(addBusFormalitiesAreConsolidatedBo.getFormalitiesPid()); ids.add(addBusFormalitiesAreConsolidatedBo.getFormalitiesPid());
@ -139,6 +153,7 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
busFormalitiesAreConsolidated.setProcessingStatus(FormalitiesStatusEnum.TOSTART.getText()); busFormalitiesAreConsolidated.setProcessingStatus(FormalitiesStatusEnum.TOSTART.getText());
list.add(busFormalitiesAreConsolidated); list.add(busFormalitiesAreConsolidated);
}); });
//生成父模板id的合规性手续合账数据
for (Long id : ids) { for (Long id : ids) {
BusListOfFormalities formalities = busListOfFormalitiesService.getById(id); BusListOfFormalities formalities = busListOfFormalitiesService.getById(id);
if (formalities != null) { if (formalities != null) {
@ -147,16 +162,11 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
busFormalitiesAreConsolidated.setFormalitiesName(formalities.getName()); busFormalitiesAreConsolidated.setFormalitiesName(formalities.getName());
busFormalitiesAreConsolidated.setProjectId(bo.getProjectId()); busFormalitiesAreConsolidated.setProjectId(bo.getProjectId());
busFormalitiesAreConsolidated.setStatus(1); busFormalitiesAreConsolidated.setStatus(1);
busFormalitiesAreConsolidated.setCreatePTime(formalities.getCreateTime());
list.add(busFormalitiesAreConsolidated); 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); return baseMapper.insertBatch(list);
} }
@ -171,7 +181,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
bo.setProcessingStatus(FormalitiesStatusEnum.PROCESSING.getText()); bo.setProcessingStatus(FormalitiesStatusEnum.PROCESSING.getText());
BusFormalitiesAreConsolidated update = MapstructUtils.convert(bo, BusFormalitiesAreConsolidated.class); BusFormalitiesAreConsolidated update = MapstructUtils.convert(bo, BusFormalitiesAreConsolidated.class);
// validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
@ -180,9 +189,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
*/ */
private void validEntityBeforeSave(BusFormalitiesAreConsolidated entity) { private void validEntityBeforeSave(BusFormalitiesAreConsolidated entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
// if (entity.getStatus() == 1){
// throw new ServiceException("已完成不允许修改!!!");
// }
if (!FormalitiesStatusEnum.TOSTART.getText().equals(entity.getProcessingStatus()) if (!FormalitiesStatusEnum.TOSTART.getText().equals(entity.getProcessingStatus())
&& !FormalitiesStatusEnum.PROCESSING.getText().equals(entity.getProcessingStatus()) && !FormalitiesStatusEnum.PROCESSING.getText().equals(entity.getProcessingStatus())
&& !FormalitiesStatusEnum.DELETE.getText().equals(entity.getProcessingStatus())) { && !FormalitiesStatusEnum.DELETE.getText().equals(entity.getProcessingStatus())) {
@ -214,12 +220,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
if (busFormalitiesAreConsolidated == null) { if (busFormalitiesAreConsolidated == null) {
throw new ServiceException("数据不存在"); throw new ServiceException("数据不存在");
} }
// if (busFormalitiesAreConsolidated.getProcessingStatus() == null) {
// throw new ServiceException("办理状态为空不能提交");
// }
// if (FormalitiesStatusEnum.DELETE.getText().equals(busFormalitiesAreConsolidated.getProcessingStatus())){
// throw new ServiceException("办理状态为已完成才能提交");
// }
busFormalitiesAreConsolidated.setProcessingStatus(bo.getProcessingStatus()); busFormalitiesAreConsolidated.setProcessingStatus(bo.getProcessingStatus());
if (FormalitiesStatusEnum.DELETE.getText().equals(busFormalitiesAreConsolidated.getProcessingStatus())) { if (FormalitiesStatusEnum.DELETE.getText().equals(busFormalitiesAreConsolidated.getProcessingStatus())) {
@ -241,8 +241,6 @@ public class BusFormalitiesAreConsolidatedServiceImpl extends ServiceImpl<BusFor
busFormalitiesAreConsolidated.setActualCompletionTime(null); busFormalitiesAreConsolidated.setActualCompletionTime(null);
} }
validEntityBeforeSave(busFormalitiesAreConsolidated); validEntityBeforeSave(busFormalitiesAreConsolidated);
// busFormalitiesAreConsolidated.setStatus(1);
// BusFormalitiesAreConsolidated update = MapstructUtils.convert(bo, BusFormalitiesAreConsolidated.class);
return baseMapper.updateById(busFormalitiesAreConsolidated) > 0; return baseMapper.updateById(busFormalitiesAreConsolidated) > 0;
} }

View File

@ -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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.formalities.domain.BusFormalitiesAreConsolidated;
import org.dromara.formalities.utils.TreeUtil; import org.dromara.formalities.utils.TreeUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo; import org.dromara.formalities.domain.bo.BusListOfFormalitiesBo;
@ -20,7 +21,9 @@ import org.dromara.formalities.service.IBusListOfFormalitiesService;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* 手续办理清单模板Service业务层处理 * 手续办理清单模板Service业务层处理
@ -61,11 +64,33 @@ public class BusListOfFormalitiesServiceImpl extends ServiceImpl<BusListOfFormal
/** /**
* 获取树形结构数据 * 获取树形结构数据
*
* @param bo * @param bo
* @param busFormalitiesAreConsolidateds
* @return * @return
*/ */
@Override @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); List<BusListOfFormalitiesVo> voList = queryList(bo);
return TreeUtil.buildTree(voList); return TreeUtil.buildTree(voList);
} }
@ -125,6 +150,9 @@ public class BusListOfFormalitiesServiceImpl extends ServiceImpl<BusListOfFormal
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(BusListOfFormalities entity){ private void validEntityBeforeSave(BusListOfFormalities entity){
if (entity.getName() == null || entity.getName().isEmpty()) {
throw new ServiceException("名称不能为空!!");
}
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
Long count = baseMapper.selectCount(new LambdaQueryWrapper<BusListOfFormalities>().eq(BusListOfFormalities::getName, entity.getName())); Long count = baseMapper.selectCount(new LambdaQueryWrapper<BusListOfFormalities>().eq(BusListOfFormalities::getName, entity.getName()));
if(count > 0){ if(count > 0){

View File

@ -68,9 +68,9 @@ public class BusTenderPlanLimitListController extends BaseController {
* 获取所有版本详细信息 * 获取所有版本详细信息
*/ */
@SaCheckPermission("tender:tenderPlanLimitList:getVersionDetail") @SaCheckPermission("tender:tenderPlanLimitList:getVersionDetail")
@GetMapping("/getVersionDetail") @GetMapping("/getVersionDetail/{id}")
public R<BusBLimitListVersionsVo> getVersionDetail(BusBillofquantitiesLimitListBo bo) { public R<BusBLimitListVersionsVo> getVersionDetail(@NotNull(message = "id不能为空") @PathVariable Long id) {
return R.ok(busBillofquantitiesLimitListService.getVersionDetail(bo.getVersions())); return R.ok(busBillofquantitiesLimitListService.getVersionDetail(id));
} }
/** /**

View File

@ -1,5 +1,6 @@
package org.dromara.tender.service; package org.dromara.tender.service;
import jakarta.validation.constraints.NotNull;
import org.dromara.tender.domain.bo.TenderAllVersionNumbersReq; import org.dromara.tender.domain.bo.TenderAllVersionNumbersReq;
import org.dromara.tender.domain.vo.BusBLimitListVersionsVo; import org.dromara.tender.domain.vo.BusBLimitListVersionsVo;
import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo; import org.dromara.tender.domain.vo.BusBillofquantitiesLimitListVo;
@ -104,5 +105,5 @@ public interface IBusBillofquantitiesLimitListService extends IService<BusBillof
* @param versions * @param versions
* @return * @return
*/ */
BusBLimitListVersionsVo getVersionDetail(String versions); BusBLimitListVersionsVo getVersionDetail(Long versions);
} }

View File

@ -159,9 +159,8 @@ public class BusBLimitListVersionsServiceImpl extends ServiceImpl<BusBLimitListV
public void processPlansHandlErequipmentList(ProcessEvent processEvent) { public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("物资设备清单审核任务执行了{}", processEvent.toString()); log.info("物资设备清单审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId(); String id = processEvent.getBusinessId();
String bus = id.split("_")[0];
LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>() LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>()
.eq(BusBLimitListVersions::getVersions, bus); .eq(BusBLimitListVersions::getId, id);
BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions(); BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions();
busBLimitListVersions.setStatus(processEvent.getStatus()); busBLimitListVersions.setStatus(processEvent.getStatus());
baseMapper.update(busBLimitListVersions, eq); baseMapper.update(busBLimitListVersions, eq);
@ -205,9 +204,8 @@ public class BusBLimitListVersionsServiceImpl extends ServiceImpl<BusBLimitListV
public void processPlansHandlErequipmentList1(ProcessEvent processEvent) { public void processPlansHandlErequipmentList1(ProcessEvent processEvent) {
log.info("物资设备清单审核任务执行了{}", processEvent.toString()); log.info("物资设备清单审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId(); String id = processEvent.getBusinessId();
String bus = id.split("_")[0];
LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>() LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>()
.eq(BusBLimitListVersions::getVersions, bus); .eq(BusBLimitListVersions::getId, id);
BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions(); BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions();
busBLimitListVersions.setStatus(processEvent.getStatus()); busBLimitListVersions.setStatus(processEvent.getStatus());
baseMapper.update(busBLimitListVersions, eq); baseMapper.update(busBLimitListVersions, eq);
@ -251,9 +249,8 @@ public class BusBLimitListVersionsServiceImpl extends ServiceImpl<BusBLimitListV
public void processPlansHandlErequipmentList2(ProcessEvent processEvent) { public void processPlansHandlErequipmentList2(ProcessEvent processEvent) {
log.info("物资设备清单审核任务执行了{}", processEvent.toString()); log.info("物资设备清单审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId(); String id = processEvent.getBusinessId();
String bus = id.split("_")[0];
LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>() LambdaQueryWrapper<BusBLimitListVersions> eq = new LambdaQueryWrapper<BusBLimitListVersions>()
.eq(BusBLimitListVersions::getVersions, bus); .eq(BusBLimitListVersions::getId, id);
BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions(); BusBLimitListVersions busBLimitListVersions = new BusBLimitListVersions();
busBLimitListVersions.setStatus(processEvent.getStatus()); busBLimitListVersions.setStatus(processEvent.getStatus());
baseMapper.update(busBLimitListVersions, eq); baseMapper.update(busBLimitListVersions, eq);

View File

@ -153,6 +153,7 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl<BusBiddingPlanMapper,
BusTenderPlanningLimitList busTenderPlanningLimitList = new BusTenderPlanningLimitList(); BusTenderPlanningLimitList busTenderPlanningLimitList = new BusTenderPlanningLimitList();
busTenderPlanningLimitList.setLimitListId(limitListBo.getLimitListId()); busTenderPlanningLimitList.setLimitListId(limitListBo.getLimitListId());
busTenderPlanningLimitList.setBiddingPlanId(bo.getId()); busTenderPlanningLimitList.setBiddingPlanId(bo.getId());
//获取招标计划-限价一览的数量
BigDecimal count = busTenderPlanningLimitListMapper.getLimitCoount(limitListBo.getLimitListId()); BigDecimal count = busTenderPlanningLimitListMapper.getLimitCoount(limitListBo.getLimitListId());
BusBillofquantitiesLimitListVo busBillofquantitiesLimitListVo = busBillofquantitiesLimitListService.queryById(limitListBo.getLimitListId()); BusBillofquantitiesLimitListVo busBillofquantitiesLimitListVo = busBillofquantitiesLimitListService.queryById(limitListBo.getLimitListId());
if (busBillofquantitiesLimitListVo == null) { if (busBillofquantitiesLimitListVo == null) {

View File

@ -1,6 +1,7 @@
package org.dromara.tender.service.impl; package org.dromara.tender.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -173,7 +174,9 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
.collect(Collectors.groupingBy(BusBillofquantitiesLimitListVo::getPid)); .collect(Collectors.groupingBy(BusBillofquantitiesLimitListVo::getPid));
//递归组装树形结构 //递归组装树形结构
List<BusBillofquantitiesLimitListVo> treeList = buildTree("0", parentMap); List<BusBillofquantitiesLimitListVo> treeList = buildTree("0", parentMap);
for (BusBillofquantitiesLimitListVo item : treeList) {
calculateTreePrice(item);
}
return treeList; return treeList;
} }
@ -245,8 +248,8 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
} }
@Override @Override
public BusBLimitListVersionsVo getVersionDetail(String versions) { public BusBLimitListVersionsVo getVersionDetail(Long id) {
return busBLimitListVersionsService.queryByVersion(versions); return busBLimitListVersionsService.queryById(id);
} }
/** /**
@ -272,4 +275,34 @@ public class BusBillofquantitiesLimitListServiceImpl extends ServiceImpl<BusBill
return children; 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);
}
}
} }