feat(schProdScheduleItem): 添加排产单主加明细合并功能
- 新增 SchProdScheduleItemMergeBo 合并请求对象 - 在 ISchProdScheduleItemService 中添加 mergeByBo 方法定义 - 在 SchProdScheduleItemController 中添加 merge 接口 - 在 SchProdScheduleItemServiceImpl 中实现合并逻辑 - 支持先删除被合并记录再插入合并后新记录的功能 - 使用事务确保合并操作的数据一致性
This commit is contained in:
@@ -19,6 +19,7 @@ import com.klp.common.enums.BusinessType;
|
|||||||
import com.klp.common.utils.poi.ExcelUtil;
|
import com.klp.common.utils.poi.ExcelUtil;
|
||||||
import com.klp.flow.domain.vo.SchProdScheduleItemVo;
|
import com.klp.flow.domain.vo.SchProdScheduleItemVo;
|
||||||
import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
||||||
|
import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo;
|
||||||
import com.klp.flow.service.ISchProdScheduleItemService;
|
import com.klp.flow.service.ISchProdScheduleItemService;
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
import com.klp.common.core.page.TableDataInfo;
|
||||||
|
|
||||||
@@ -106,4 +107,14 @@ public class SchProdScheduleItemController extends BaseController {
|
|||||||
@PathVariable Long[] scheduleIds) {
|
@PathVariable Long[] scheduleIds) {
|
||||||
return toAjax(iSchProdScheduleItemService.deleteWithValidByIds(Arrays.asList(scheduleIds), true));
|
return toAjax(iSchProdScheduleItemService.deleteWithValidByIds(Arrays.asList(scheduleIds), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合并排产单主加明细可合并:先删除被合并的记录,再插入合并后的新记录
|
||||||
|
*/
|
||||||
|
@Log(title = "排产单主加明细可合并", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping("/merge")
|
||||||
|
public R<Void> merge(@Validated @RequestBody SchProdScheduleItemMergeBo mergeBo) {
|
||||||
|
return toAjax(iSchProdScheduleItemService.mergeByBo(mergeBo));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<Long> ids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合并后的新记录
|
||||||
|
*/
|
||||||
|
@Valid
|
||||||
|
private SchProdScheduleItemBo mergedBo;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package com.klp.flow.service;
|
|||||||
import com.klp.flow.domain.SchProdScheduleItem;
|
import com.klp.flow.domain.SchProdScheduleItem;
|
||||||
import com.klp.flow.domain.vo.SchProdScheduleItemVo;
|
import com.klp.flow.domain.vo.SchProdScheduleItemVo;
|
||||||
import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
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.page.TableDataInfo;
|
||||||
import com.klp.common.core.domain.PageQuery;
|
import com.klp.common.core.domain.PageQuery;
|
||||||
|
|
||||||
@@ -51,4 +52,9 @@ public interface ISchProdScheduleItemService {
|
|||||||
* 校验并批量删除排产单主加明细可合并信息
|
* 校验并批量删除排产单主加明细可合并信息
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合并多条排产单主加明细可合并记录:先删除被合并的记录,再插入合并后的新记录
|
||||||
|
*/
|
||||||
|
Boolean mergeByBo(SchProdScheduleItemMergeBo mergeBo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,12 @@ import com.klp.common.utils.StringUtils;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
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.vo.SchProdScheduleItemVo;
|
||||||
import com.klp.flow.domain.SchProdScheduleItem;
|
import com.klp.flow.domain.SchProdScheduleItem;
|
||||||
import com.klp.flow.mapper.SchProdScheduleItemMapper;
|
import com.klp.flow.mapper.SchProdScheduleItemMapper;
|
||||||
import com.klp.flow.service.ISchProdScheduleItemService;
|
import com.klp.flow.service.ISchProdScheduleItemService;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -158,4 +160,23 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user