feat(material): 添加物料快捷添加功能
- 在MaterialInfomationController中新增/creat-quickly接口 - 实现createMaterialInfomationQuickly方法支持快捷创建 - 添加同一小类下相同编码和名称物料的重复校验逻辑 - 当存在重复物料时返回提示信息避免重复创建 - 创建成功时返回操作结果描述和物料ID信息
This commit is contained in:
@@ -38,12 +38,20 @@ public class MaterialInfomationController {
|
|||||||
@Resource
|
@Resource
|
||||||
private MaterialInfomationService materialInfomationService;
|
private MaterialInfomationService materialInfomationService;
|
||||||
|
|
||||||
/* @PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "创建物料信息")
|
@Operation(summary = "创建物料信息")
|
||||||
@PreAuthorize("@ss.hasPermission('base:material-infomation:create')")
|
@PreAuthorize("@ss.hasPermission('base:material-infomation:create')")
|
||||||
public CommonResult<MaterialInfomationRespVO> createMaterialInfomation(@Valid @RequestBody MaterialInfomationSaveReqVO createReqVO) {
|
public CommonResult<MaterialInfomationRespVO> createMaterialInfomation(@Valid @RequestBody MaterialInfomationSaveReqVO createReqVO) {
|
||||||
return success(materialInfomationService.createMaterialInfomation(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")
|
@PutMapping("/update")
|
||||||
@Operation(summary = "更新物料信息")
|
@Operation(summary = "更新物料信息")
|
||||||
|
|||||||
@@ -27,6 +27,14 @@ public interface MaterialInfomationService {
|
|||||||
*/
|
*/
|
||||||
MaterialInfomationRespVO createMaterialInfomation(@Valid MaterialInfomationSaveReqVO createReqVO);
|
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)));
|
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
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateMaterialInfomation(MaterialInfomationSaveReqVO updateReqVO) {
|
public void updateMaterialInfomation(MaterialInfomationSaveReqVO updateReqVO) {
|
||||||
@@ -108,6 +124,32 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService
|
|||||||
materialHasClassesMapper.insert(relation);
|
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
|
@Override
|
||||||
public void deleteMaterialInfomation(Long id) {
|
public void deleteMaterialInfomation(Long id) {
|
||||||
validateMaterialInfomationExists(id);
|
validateMaterialInfomationExists(id);
|
||||||
|
|||||||
Reference in New Issue
Block a user