From aefee3debbf91862e72fcfc3467d58c44d053e8a Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 26 Jun 2026 17:49:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(schProdScheduleItem):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=8E=92=E4=BA=A7=E5=8D=95=E4=B8=BB=E5=8A=A0=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 SchProdScheduleItemMergeBo 合并请求对象 - 在 ISchProdScheduleItemService 中添加 mergeByBo 方法定义 - 在 SchProdScheduleItemController 中添加 merge 接口 - 在 SchProdScheduleItemServiceImpl 中实现合并逻辑 - 支持先删除被合并记录再插入合并后新记录的功能 - 使用事务确保合并操作的数据一致性 --- .../SchProdScheduleItemController.java | 11 +++++++ .../domain/bo/SchProdScheduleItemMergeBo.java | 29 +++++++++++++++++++ .../service/ISchProdScheduleItemService.java | 6 ++++ .../impl/SchProdScheduleItemServiceImpl.java | 21 ++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 klp-flow/src/main/java/com/klp/flow/domain/bo/SchProdScheduleItemMergeBo.java diff --git a/klp-flow/src/main/java/com/klp/flow/controller/SchProdScheduleItemController.java b/klp-flow/src/main/java/com/klp/flow/controller/SchProdScheduleItemController.java index 9ddc6a593..4ea667bf7 100644 --- a/klp-flow/src/main/java/com/klp/flow/controller/SchProdScheduleItemController.java +++ b/klp-flow/src/main/java/com/klp/flow/controller/SchProdScheduleItemController.java @@ -19,6 +19,7 @@ import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.flow.domain.vo.SchProdScheduleItemVo; import com.klp.flow.domain.bo.SchProdScheduleItemBo; +import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo; import com.klp.flow.service.ISchProdScheduleItemService; import com.klp.common.core.page.TableDataInfo; @@ -106,4 +107,14 @@ public class SchProdScheduleItemController extends BaseController { @PathVariable Long[] scheduleIds) { return toAjax(iSchProdScheduleItemService.deleteWithValidByIds(Arrays.asList(scheduleIds), true)); } + + /** + * 合并排产单主加明细可合并:先删除被合并的记录,再插入合并后的新记录 + */ + @Log(title = "排产单主加明细可合并", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/merge") + public R merge(@Validated @RequestBody SchProdScheduleItemMergeBo mergeBo) { + return toAjax(iSchProdScheduleItemService.mergeByBo(mergeBo)); + } } diff --git a/klp-flow/src/main/java/com/klp/flow/domain/bo/SchProdScheduleItemMergeBo.java b/klp-flow/src/main/java/com/klp/flow/domain/bo/SchProdScheduleItemMergeBo.java new file mode 100644 index 000000000..13979c275 --- /dev/null +++ b/klp-flow/src/main/java/com/klp/flow/domain/bo/SchProdScheduleItemMergeBo.java @@ -0,0 +1,29 @@ +package com.klp.flow.domain.bo; + +import lombok.Data; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 排产单主加明细可合并 - 合并请求对象 + * + * @author klp + * @date 2026-06-26 + */ +@Data +public class SchProdScheduleItemMergeBo { + + /** + * 需要被合并删除的记录ID列表 + */ + @NotEmpty(message = "被合并记录ID不能为空") + private List ids; + + /** + * 合并后的新记录 + */ + @Valid + private SchProdScheduleItemBo mergedBo; + +} diff --git a/klp-flow/src/main/java/com/klp/flow/service/ISchProdScheduleItemService.java b/klp-flow/src/main/java/com/klp/flow/service/ISchProdScheduleItemService.java index 8c43ff478..cef5243bf 100644 --- a/klp-flow/src/main/java/com/klp/flow/service/ISchProdScheduleItemService.java +++ b/klp-flow/src/main/java/com/klp/flow/service/ISchProdScheduleItemService.java @@ -3,6 +3,7 @@ package com.klp.flow.service; import com.klp.flow.domain.SchProdScheduleItem; import com.klp.flow.domain.vo.SchProdScheduleItemVo; import com.klp.flow.domain.bo.SchProdScheduleItemBo; +import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; @@ -51,4 +52,9 @@ public interface ISchProdScheduleItemService { * 校验并批量删除排产单主加明细可合并信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 合并多条排产单主加明细可合并记录:先删除被合并的记录,再插入合并后的新记录 + */ + Boolean mergeByBo(SchProdScheduleItemMergeBo mergeBo); } diff --git a/klp-flow/src/main/java/com/klp/flow/service/impl/SchProdScheduleItemServiceImpl.java b/klp-flow/src/main/java/com/klp/flow/service/impl/SchProdScheduleItemServiceImpl.java index 457835729..1359cf513 100644 --- a/klp-flow/src/main/java/com/klp/flow/service/impl/SchProdScheduleItemServiceImpl.java +++ b/klp-flow/src/main/java/com/klp/flow/service/impl/SchProdScheduleItemServiceImpl.java @@ -10,10 +10,12 @@ import com.klp.common.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.flow.domain.bo.SchProdScheduleItemBo; +import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo; import com.klp.flow.domain.vo.SchProdScheduleItemVo; import com.klp.flow.domain.SchProdScheduleItem; import com.klp.flow.mapper.SchProdScheduleItemMapper; import com.klp.flow.service.ISchProdScheduleItemService; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -158,4 +160,23 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi } return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 合并多条排产单主加明细可合并记录:先删除被合并的记录,再插入合并后的新记录 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean mergeByBo(SchProdScheduleItemMergeBo mergeBo) { + // 先删除被合并的记录 + baseMapper.deleteBatchIds(mergeBo.getIds()); + // 再插入合并后的新记录 + SchProdScheduleItemBo mergedBo = mergeBo.getMergedBo(); + SchProdScheduleItem add = BeanUtil.toBean(mergedBo, SchProdScheduleItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + mergedBo.setScheduleId(add.getScheduleId()); + } + return flag; + } }