diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java index 1877804d..13b1e3a3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java @@ -7,10 +7,12 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.apache.poi.ss.usermodel.IndexedColors; import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.*; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -20,6 +22,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.design.domain.bo.*; import org.dromara.design.domain.vo.*; import org.dromara.design.exportUtil.bill.*; +import org.dromara.design.service.IBusBillofquantitiesService; import org.dromara.design.service.IBusBillofquantitiesVersionsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -42,6 +45,7 @@ import java.util.*; public class BusBillofquantitiesVersionsController extends BaseController { private final IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService; + private final IBusBillofquantitiesService busBillofquantitiesService; /** * 导入excel @@ -224,38 +228,38 @@ public class BusBillofquantitiesVersionsController extends BaseController { // return R.ok(busBillofquantitiesVersionsService.queryById(id)); // } // -// /** -// * 新增工程量清单版本 -// */ -// @SaCheckPermission("design:billofquantitiesVersions:add") -// @Log(title = "工程量清单版本", businessType = BusinessType.INSERT) -// @RepeatSubmit() -// @PostMapping() -// public R add(@Validated(AddGroup.class) @RequestBody BusBillofquantitiesVersionsBo bo) { -// return toAjax(busBillofquantitiesVersionsService.insertByBo(bo)); -// } -// -// /** -// * 修改工程量清单版本 -// */ -// @SaCheckPermission("design:billofquantitiesVersions:edit") -// @Log(title = "工程量清单版本", businessType = BusinessType.UPDATE) -// @RepeatSubmit() -// @PutMapping() -// public R edit(@Validated(EditGroup.class) @RequestBody BusBillofquantitiesVersionsBo bo) { -// return toAjax(busBillofquantitiesVersionsService.updateByBo(bo)); -// } -// -// /** -// * 删除工程量清单版本 -// * -// * @param ids 主键串 -// */ -// @SaCheckPermission("design:billofquantitiesVersions:remove") -// @Log(title = "工程量清单版本", businessType = BusinessType.DELETE) -// @DeleteMapping("/{ids}") -// public R remove(@NotEmpty(message = "主键不能为空") -// @PathVariable Long[] ids) { -// return toAjax(busBillofquantitiesVersionsService.deleteWithValidByIds(List.of(ids), true)); -// } + /** + * 新增工程量清单版本 + */ + @SaCheckPermission("design:billofquantitiesVersions:add") + @Log(title = "工程量清单版本", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BusBillofquantitiesBo bo) { + return toAjax(busBillofquantitiesService.insertByBo(bo)); + } + + /** + * 修改工程量清单版本 + */ + @SaCheckPermission("design:billofquantitiesVersions:edit") + @Log(title = "工程量清单版本", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BusBillofquantitiesBo bo) { + return toAjax(busBillofquantitiesService.updateByBo(bo)); + } + + /** + * 删除工程量清单版本 + * + * @param ids 主键串 + */ + @SaCheckPermission("design:billofquantitiesVersions:remove") + @Log(title = "工程量清单版本", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(busBillofquantitiesService.deleteWithValidByIds(List.of(ids), true)); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java index e3d52082..68a91124 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java @@ -113,8 +113,8 @@ public class DesSchemeController extends BaseController { @Log(title = "设计方案", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/upload") - public R addFile(MultipartFile file, Long projectId) { - return R.ok(desSchemeService.addFile(file, projectId)); + public R addFile(MultipartFile file, Long projectId,String type) { + return R.ok(desSchemeService.addFile(file, projectId, type)); } /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java index e71abbe1..bc40bb69 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java @@ -51,6 +51,10 @@ public class DesScheme extends BaseEntity { * 审核状态 */ private String status; + /** + * 设计方案类型(1、可研,2、施工,3、初设) + */ + private String schemeType; /** * 排序字段 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java index a10da649..43305188 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java @@ -79,5 +79,10 @@ public class BusBillofquantitiesBo extends BaseEntity { */ private String remark; + /** + * 项目ID + */ + private Long projectId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java index cb6a008e..5601fcca 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java @@ -52,5 +52,10 @@ public class DesSchemeBo extends BaseEntity { */ private String status; + /** + * 设计方案类型(1、可研,2、施工,3、初设) + */ + private String schemeType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java index 32064f76..0dd5cdb4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java @@ -64,5 +64,10 @@ public class DesSchemeVo implements Serializable { @ExcelProperty(value = "审核状态") private String status; + /** + * 设计方案类型(1、可研,2、施工,3、初设) + */ + private String schemeType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java index c0d332b5..ddfd2298 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java @@ -1,8 +1,6 @@ package org.dromara.design.service; import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotNull; -import org.dromara.common.core.domain.R; import org.dromara.design.domain.dto.ExportDto; import org.dromara.design.domain.vo.DesSchemeVo; import org.dromara.design.domain.bo.DesSchemeBo; @@ -11,7 +9,6 @@ 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.bind.annotation.PathVariable; import org.springframework.web.multipart.MultipartFile; import java.util.Collection; @@ -78,7 +75,7 @@ public interface IDesSchemeService extends IService{ /** * 添加文件 */ - Long addFile(MultipartFile file, Long projectId); + Long addFile(MultipartFile file, Long projectId, String type); /** * 修改文件 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java index c1f43f17..81d48698 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java @@ -1,6 +1,11 @@ package org.dromara.design.service.impl; +import cn.hutool.core.convert.NumberChineseFormatter; +import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,12 +14,17 @@ 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.common.utils.BatchNumberGenerator; +import org.dromara.design.domain.BusBillofquantitiesVersions; +import org.dromara.design.service.IBusBillofquantitiesVersionsService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.dromara.design.domain.bo.BusBillofquantitiesBo; import org.dromara.design.domain.vo.BusBillofquantitiesVo; import org.dromara.design.domain.BusBillofquantities; import org.dromara.design.mapper.BusBillofquantitiesMapper; import org.dromara.design.service.IBusBillofquantitiesService; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -31,6 +41,9 @@ import java.util.Collection; public class BusBillofquantitiesServiceImpl extends ServiceImpl implements IBusBillofquantitiesService { private final BusBillofquantitiesMapper baseMapper; + @Lazy + @Resource + private IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService; /** * 查询工程量清单 @@ -94,6 +107,31 @@ public class BusBillofquantitiesServiceImpl extends ServiceImpl().eq(BusBillofquantities::getPid, bo.getPid())) +1; + if ("0".equals(bo.getPid())){ + //当父节点为0时,生成中文编号作为顶层 + String s = NumberChineseFormatter.numberCharToChinese((char) count.longValue(), false); + add.setNum(s); + }else { + //当父节点不为0时,生成数字编号作为子节点编号 + BusBillofquantities busBillofquantities = baseMapper.selectOne(new LambdaQueryWrapper().eq(BusBillofquantities::getSid, bo.getPid())); + if (busBillofquantities == null){ + throw new ServiceException("父节点不存在"); + } + if ("0".equals(busBillofquantities.getPid())){ + add.setNum(count.toString()); + }else { + if (busBillofquantities.getNum() != null){ + //当父节点有编号时,生成数字编号作为子节点编号 无编号时,不生成编号 + String s = busBillofquantities.getNum() + "." + count; + add.setNum(s); + } + } + } boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); @@ -117,8 +155,24 @@ public class BusBillofquantitiesServiceImpl extends ServiceImpl() + .eq(BusBillofquantitiesVersions::getVersions, entity.getVersions())); + if (versions == null) { + throw new ServiceException("版本不存在"); + } + if (!BusinessStatusEnum.DRAFT.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.BACK.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.CANCEL.getStatus().equals(versions.getStatus())){ + if (entity.getId() != null){ + throw new ServiceException("版本处于审核中,不能修改"); + }else { + throw new ServiceException("版本处于审核中,不能新增"); + } + } } /** @@ -132,6 +186,25 @@ public class BusBillofquantitiesServiceImpl extends ServiceImpl ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 + for (Long id : ids) { + BusBillofquantities busBillofquantities = baseMapper.selectById(id); + if (busBillofquantities == null) { + throw new ServiceException("数据不存在"); + } + BusBillofquantitiesVersions versions = busBillofquantitiesVersionsService + .getBaseMapper() + .selectOne(new LambdaQueryWrapper() + .eq(BusBillofquantitiesVersions::getVersions, busBillofquantities.getVersions())); + if (versions == null) { + throw new ServiceException("版本不存在"); + } + if (!BusinessStatusEnum.DRAFT.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.BACK.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.CANCEL.getStatus().equals(versions.getStatus())){ + throw new ServiceException("版本处于审核中,不能删除"); + } + } + } return baseMapper.deleteByIds(ids) > 0; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java index c0cb1edf..984429a3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java @@ -18,12 +18,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.common.oss.core.OssClient; -import org.dromara.common.oss.factory.OssFactory; -import org.dromara.design.domain.DesCollectFile; -import org.dromara.design.domain.DesPrelimScheme; import org.dromara.design.domain.dto.ExportDto; -import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; import org.springframework.context.event.EventListener; @@ -46,7 +41,6 @@ import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.time.Duration; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Collection; @@ -173,7 +167,7 @@ public class DesSchemeServiceImpl extends ServiceImpl