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; + } }