feat(material): 添加物料快捷添加功能
- 在MaterialInfomationController中新增/creat-quickly接口 - 实现createMaterialInfomationQuickly方法支持快捷创建 - 添加同一小类下相同编码和名称物料的重复校验逻辑 - 当存在重复物料时返回提示信息避免重复创建 - 创建成功时返回操作结果描述和物料ID信息
This commit is contained in:
@@ -38,12 +38,20 @@ public class MaterialInfomationController {
|
||||
@Resource
|
||||
private MaterialInfomationService materialInfomationService;
|
||||
|
||||
/* @PostMapping("/create")
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建物料信息")
|
||||
@PreAuthorize("@ss.hasPermission('base:material-infomation:create')")
|
||||
public CommonResult<MaterialInfomationRespVO> createMaterialInfomation(@Valid @RequestBody MaterialInfomationSaveReqVO createReqVO) {
|
||||
return success(materialInfomationService.createMaterialInfomation(createReqVO));
|
||||
}*/
|
||||
}
|
||||
|
||||
@Operation(summary = "快捷添加实物物料")
|
||||
@PostMapping("/creat-quickly")
|
||||
@PreAuthorize("@ss.hasPermission('base:material-infomation:create')")
|
||||
public CommonResult<String> createMaterialInfomationQuickly(@Valid @RequestBody MaterialInfomationSaveReqVO createReqVO) {
|
||||
String result = materialInfomationService.createMaterialInfomationQuickly(createReqVO);
|
||||
return success(result);
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新物料信息")
|
||||
|
||||
@@ -27,6 +27,14 @@ public interface MaterialInfomationService {
|
||||
*/
|
||||
MaterialInfomationRespVO createMaterialInfomation(@Valid MaterialInfomationSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 快捷创建物料信息:仅在同一小类下不存在相同编码和名称的物料时才创建
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 操作结果描述
|
||||
*/
|
||||
String createMaterialInfomationQuickly(@Valid MaterialInfomationSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新物料信息
|
||||
*
|
||||
|
||||
@@ -76,6 +76,22 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService
|
||||
return CollUtil.getFirst(buildRespList(Collections.singletonList(materialInfomation)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createMaterialInfomationQuickly(MaterialInfomationSaveReqVO createReqVO) {
|
||||
validateMaterialClassForBinding(createReqVO.getClassesId());
|
||||
// 校验同一小类下是否已存在相同编码和名称的物料,若存在则不再创建
|
||||
boolean exists = existsMaterialInClass(createReqVO.getCode(), createReqVO.getName(), createReqVO.getClassesId());
|
||||
if (exists) {
|
||||
return "该小类下已存在相同编码和名称的物料,不再重复添加";
|
||||
}
|
||||
MaterialInfomationRespVO respVO = createMaterialInfomation(createReqVO);
|
||||
if (respVO == null || respVO.getId() == null) {
|
||||
return "物料创建失败";
|
||||
}
|
||||
return "物料创建成功,ID=" + respVO.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateMaterialInfomation(MaterialInfomationSaveReqVO updateReqVO) {
|
||||
@@ -108,6 +124,32 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService
|
||||
materialHasClassesMapper.insert(relation);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断在指定小类下,是否已存在相同编码和名称的物料
|
||||
*/
|
||||
private boolean existsMaterialInClass(String code, String name, Long classesId) {
|
||||
// 先根据编码和名称查出物料ID列表
|
||||
List<MaterialInfomationDO> infoList = materialInfomationMapper.selectList(
|
||||
new LambdaQueryWrapperX<MaterialInfomationDO>()
|
||||
.eq(MaterialInfomationDO::getCode, code)
|
||||
.eq(MaterialInfomationDO::getName, name));
|
||||
if (CollUtil.isEmpty(infoList)) {
|
||||
return false;
|
||||
}
|
||||
List<Long> infoIds = infoList.stream()
|
||||
.map(MaterialInfomationDO::getId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(infoIds)) {
|
||||
return false;
|
||||
}
|
||||
Long count = materialHasClassesMapper.selectCount(
|
||||
new LambdaQueryWrapperX<MaterialHasClassesDO>()
|
||||
.in(MaterialHasClassesDO::getInfomationId, infoIds)
|
||||
.eq(MaterialHasClassesDO::getClassesId, classesId));
|
||||
return count != null && count > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteMaterialInfomation(Long id) {
|
||||
validateMaterialInfomationExists(id);
|
||||
|
||||
Reference in New Issue
Block a user