diff --git a/src/main/java/org/springblade/modules/workOrder/controller/InformationAttachController.java b/src/main/java/org/springblade/modules/workOrder/controller/InformationAttachController.java index fc9321f..167200d 100644 --- a/src/main/java/org/springblade/modules/workOrder/controller/InformationAttachController.java +++ b/src/main/java/org/springblade/modules/workOrder/controller/InformationAttachController.java @@ -1,10 +1,13 @@ package org.springblade.modules.workOrder.controller; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import lombok.AllArgsConstructor; + import javax.validation.Valid; import org.springblade.core.secure.BladeUser; @@ -24,6 +27,7 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.tool.constant.BladeConstant; import springfox.documentation.annotations.ApiIgnore; + import java.util.Map; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -48,10 +52,11 @@ public class InformationAttachController extends BladeController { @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入informationAttach") - public R detail(InformationAttach informationAttach) { - InformationAttach detail = informationAttachService.getOne(Condition.getQueryWrapper(informationAttach)); - return R.data(detail); + public R> detail(InformationAttach informationAttach) { + List list = informationAttachService.list(Wrappers.lambdaQuery(InformationAttach.class).eq(InformationAttach::getParentId, informationAttach.getId())); + return R.data(list); } + /** * 资料附件表 分页 */ @@ -80,8 +85,8 @@ public class InformationAttachController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入informationAttach") - public R save(@Valid @RequestBody InformationAttach informationAttach) { - return R.status(informationAttachService.save(informationAttach)); + public R save(@Valid @RequestBody List informationAttach) { + return informationAttachService.add(informationAttach); } /** @@ -91,7 +96,7 @@ public class InformationAttachController extends BladeController { @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入informationAttach") public R update(@Valid @RequestBody InformationAttach informationAttach) { - return R.status(informationAttachService.updateById(informationAttach)); + return informationAttachService.edit(informationAttach); } /** diff --git a/src/main/java/org/springblade/modules/workOrder/controller/InformationController.java b/src/main/java/org/springblade/modules/workOrder/controller/InformationController.java index 1456f18..42d9a39 100644 --- a/src/main/java/org/springblade/modules/workOrder/controller/InformationController.java +++ b/src/main/java/org/springblade/modules/workOrder/controller/InformationController.java @@ -61,7 +61,7 @@ public class InformationController extends BladeController { Information detail = informationService.getById(information.getId()); InformationVO informationVO = BeanUtil.copy(detail, InformationVO.class); assert informationVO != null; - informationVO.setAttaches(informationAttachService.list(Wrappers.lambdaQuery(InformationAttach.class).eq(informationVO.getId() != null, InformationAttach::getInformationId, informationVO.getId()))); +// informationVO.setAttaches(informationAttachService.list(Wrappers.lambdaQuery(InformationAttach.class).eq(informationVO.getId() != null, InformationAttach::getInformationId, informationVO.getId()))); return R.data(informationVO); } diff --git a/src/main/java/org/springblade/modules/workOrder/entity/InformationAttach.java b/src/main/java/org/springblade/modules/workOrder/entity/InformationAttach.java index 0e7aa37..0c59105 100644 --- a/src/main/java/org/springblade/modules/workOrder/entity/InformationAttach.java +++ b/src/main/java/org/springblade/modules/workOrder/entity/InformationAttach.java @@ -19,9 +19,9 @@ import org.springblade.core.mp.base.BaseEntity; public class InformationAttach extends BaseEntity { /** - * 工单id + * 上级id(0图纸 1技术文件) */ - private Long informationId; + private Long parentId; /** * 附件地址 @@ -34,17 +34,7 @@ public class InformationAttach extends BaseEntity { private String name; /** - * 附件原名 + * 类型(1文件夹 2文件) */ - private String originalName; - - /** - * 附件拓展名 - */ - private String extension; - - /** - * 附件大小 - */ - private Long attachSize; + private Integer type; } diff --git a/src/main/java/org/springblade/modules/workOrder/service/IInformationAttachService.java b/src/main/java/org/springblade/modules/workOrder/service/IInformationAttachService.java index 842436f..755d934 100644 --- a/src/main/java/org/springblade/modules/workOrder/service/IInformationAttachService.java +++ b/src/main/java/org/springblade/modules/workOrder/service/IInformationAttachService.java @@ -2,11 +2,14 @@ package org.springblade.modules.workOrder.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.springblade.core.tool.api.R; import org.springblade.modules.workOrder.entity.InformationAttach; import org.springblade.modules.workOrder.vo.InformationAttachVO; import org.springblade.modules.workOrder.excel.InformationAttachExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; + +import java.rmi.ServerException; import java.util.List; /** @@ -34,4 +37,7 @@ public interface IInformationAttachService extends BaseService exportInformationAttach(Wrapper queryWrapper); + R add(List informationAttach); + + R edit(InformationAttach informationAttach); } diff --git a/src/main/java/org/springblade/modules/workOrder/service/impl/InformationAttachServiceImpl.java b/src/main/java/org/springblade/modules/workOrder/service/impl/InformationAttachServiceImpl.java index 62588ee..ed11cb1 100644 --- a/src/main/java/org/springblade/modules/workOrder/service/impl/InformationAttachServiceImpl.java +++ b/src/main/java/org/springblade/modules/workOrder/service/impl/InformationAttachServiceImpl.java @@ -1,16 +1,25 @@ package org.springblade.modules.workOrder.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.tool.api.R; import org.springblade.modules.workOrder.entity.InformationAttach; import org.springblade.modules.workOrder.vo.InformationAttachVO; import org.springblade.modules.workOrder.excel.InformationAttachExcel; import org.springblade.modules.workOrder.mapper.InformationAttachMapper; import org.springblade.modules.workOrder.service.IInformationAttachService; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; + +import java.rmi.ServerException; import java.util.List; +import java.util.stream.Collectors; /** * 资料附件表 服务实现类 @@ -18,6 +27,7 @@ import java.util.List; * @author BladeX * @since 2024-10-14 */ +@Slf4j @Service public class InformationAttachServiceImpl extends BaseServiceImpl implements IInformationAttachService { @@ -36,4 +46,75 @@ public class InformationAttachServiceImpl extends BaseServiceImpl informationAttach) { + if (CollectionUtils.isEmpty(informationAttach)) { + log.error("信息附件对象为空"); + return R.fail(400, "信息附件对象为空"); + } + + // 创建查询条件,检查是否存在相同父ID和名称的附件 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(InformationAttach.class) + .eq(InformationAttach::getParentId, informationAttach.get(0).getParentId()) + .in(InformationAttach::getName, informationAttach.stream().map(InformationAttach::getName).collect(Collectors.toList())); + + try { + // 执行查询,获取符合条件的记录数 + long count = this.count(wrapper); + + // 如果大于0,则说明已经存在 + if (count > 0) { + return R.fail(200, "文件名称重复!"); + } + + // 执行保存操作,并返回操作结果 + boolean saveResult = this.saveBatch(informationAttach); + log.info("保存信息附件结果: {}", saveResult); + return R.status(saveResult); + } catch (DataIntegrityViolationException e) { + log.error("保存信息附件时发生数据完整性错误", e); + return R.fail(500, "保存信息附件时发生数据完整性错误"); + } catch (Exception e) { + log.error("保存信息附件时发生错误", e); + return R.fail(500, "保存信息附件时发生错误"); + } + } + + + @Override + public R edit(InformationAttach informationAttach) { + try { + // 输入验证 + if (informationAttach == null || informationAttach.getId() == null || informationAttach.getParentId() == null || informationAttach.getName() == null) { + return R.fail(400, "输入参数不合法"); + } + + // 创建一个Lambda查询包装器,用于构建查询条件 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(InformationAttach.class) + // 排除当前记录的ID + .ne(InformationAttach::getId, informationAttach.getId()) + // 查询条件:父ID相等 + .eq(InformationAttach::getParentId, informationAttach.getParentId()) + // 查询条件:名称相等 + .eq(InformationAttach::getName, informationAttach.getName()); + + // 使用上述条件查询记录数 + long count = this.count(wrapper); + // 如果大于0,则说明已经存在 + if (count > 0) { + // 返回失败响应,提示文件名称重复 + return R.fail(200, "[" + informationAttach.getName() + "]该文件名称重复!"); + } + + // 更新数据库中的当前记录 + return R.status(this.updateById(informationAttach)); + } catch (Exception e) { + // 记录异常日志 + log.error("编辑信息附件时发生异常", e); + // 返回失败响应 + return R.fail(500, "系统内部错误"); + } + } + } diff --git a/src/main/java/org/springblade/modules/workOrder/service/impl/InformationServiceImpl.java b/src/main/java/org/springblade/modules/workOrder/service/impl/InformationServiceImpl.java index bd47eb2..1d1b243 100644 --- a/src/main/java/org/springblade/modules/workOrder/service/impl/InformationServiceImpl.java +++ b/src/main/java/org/springblade/modules/workOrder/service/impl/InformationServiceImpl.java @@ -50,7 +50,7 @@ public class InformationServiceImpl extends BaseServiceImpl attaches = information.getAttaches(); if (CollectionUtil.isNotEmpty(attaches)) { - attaches.forEach(attache -> attache.setInformationId(information.getId())); +// attaches.forEach(attache -> attache.setInformationId(information.getId())); informationAttachService.saveBatch(attaches); } return save; @@ -59,10 +59,10 @@ public class InformationServiceImpl extends BaseServiceImpl attaches = information.getAttaches(); if (CollectionUtil.isNotEmpty(attaches)) { - attaches.forEach(attache -> attache.setInformationId(information.getId())); +// attaches.forEach(attache -> attache.setInformationId(information.getId())); return informationAttachService.saveBatch(attaches); } return update;