feat(system):仓库管理-库位管理新增复制功能
需求:库位管理列表增加复制功能,快速复用已有库位配置新建库位。
实现(仿照bms复制账单copyBill的回显式复制):
一、新增接口 POST /storageLocationApi/copyStorageLocation(StorageLocationApi):
id判空+try-catch兜底,异常返回"复制库单失败:xxx"
二、StorageLocationApplicationService新增copyStorageLocation:
取原库位PO后清空唯一性字段(storageLocationId不清空会误走修改分支覆盖原库位、
storageLocationCode同组织同仓库唯一须用户重填、locationBarCode物理唯一)、
清空审计字段(提交时Assembler按登录人重写)、状态重置初始值
(status=1空/openingUp=1启用/nullify=1未作废);其余业务字段保留回显
三、前端拿PO回显到新增页,用户改编码后走现有edit接口(id为空即新增)提交,
天然复用编码唯一性校验、仓库/库区/库位组回填、库位组计数+1,Domain层零改动
This commit is contained in:
+34
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.mhd.basic.domain.storageLocation.repository.po.StorageLocationPO;
|
||||
import com.mhd.basic.domain.storageLocation.repository.todo.StorageLocationDO;
|
||||
import com.mhd.basic.domain.storageLocation.service.StorageLocationDomainService;
|
||||
import com.mhd.basic.interfaces.dto.storageLocation.StorageLocationDTO;
|
||||
import com.mhd.basic.domain.storageSection.repository.todo.StorageSectionDO;
|
||||
import com.mhd.basic.infrastructure.feign.vo.SysDictDataVo;
|
||||
import com.mhd.common.core.domain.po.UserPo;
|
||||
@@ -207,6 +208,39 @@ public class StorageLocationApplicationService {
|
||||
return storageLocationDomainService.getInfo(storageLocationId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制库位-获取原库位数据供前端回显
|
||||
* 前端拿到数据后跳转到新增库位页面,用户修改编码后通过edit接口提交新增
|
||||
*/
|
||||
public StorageLocationPO copyStorageLocation(StorageLocationDTO storageLocationDTO) {
|
||||
if (storageLocationDTO.getStorageLocationId() == null) {
|
||||
throw new ServiceException("原库位id不能为空");
|
||||
}
|
||||
// 获取原库位信息
|
||||
StorageLocationPO originalStorageLocation = storageLocationDomainService.getInfo(storageLocationDTO.getStorageLocationId());
|
||||
if (null == originalStorageLocation) {
|
||||
throw new ServiceException("原库位信息未找到");
|
||||
}
|
||||
// 清空唯一性字段:库位id不清空会导致提交后走修改分支覆盖原库位;
|
||||
// 库位编码同组织同仓库唯一,须由用户重新填写;条码为物理唯一标识,一并清空
|
||||
originalStorageLocation.setStorageLocationId(null);
|
||||
originalStorageLocation.setStorageLocationCode(null);
|
||||
originalStorageLocation.setLocationBarCode(null);
|
||||
// 状态重置为初始值:新库位无库存(空)、启用、未作废
|
||||
originalStorageLocation.setStatus(1);
|
||||
originalStorageLocation.setOpeningUp(1);
|
||||
originalStorageLocation.setNullify(1);
|
||||
// 清空审计字段,提交新增时由Assembler按当前登录人重新生成
|
||||
originalStorageLocation.setCreateBy(null);
|
||||
originalStorageLocation.setCreateByName(null);
|
||||
originalStorageLocation.setCreateTime(null);
|
||||
originalStorageLocation.setUpdateBy(null);
|
||||
originalStorageLocation.setUpdateByName(null);
|
||||
originalStorageLocation.setUpdateTime(null);
|
||||
// 其余业务字段(仓库/库区/库位组、分类/种类/混放策略、限制、长宽高、坐标、备注)保留回显
|
||||
return originalStorageLocation;
|
||||
}
|
||||
|
||||
public int getStorageLocationCount(StorageLocationDO storageLocationDO)
|
||||
{
|
||||
return storageLocationDomainService.getStorageLocationCount(storageLocationDO);
|
||||
|
||||
+19
@@ -19,6 +19,7 @@ import com.mhd.basic.domain.storageLocation.repository.todo.StorageLocationDO;
|
||||
import com.mhd.basic.domain.storageLocation.repository.po.StorageLocationPO;
|
||||
import com.mhd.basic.application.service.storageLocation.StorageLocationApplicationService;
|
||||
import com.mhd.basic.interfaces.assember.storageLocation.StorageLocationAssembler;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import javax.annotation.Resource;
|
||||
import com.mhd.common.core.web.controller.BaseController;
|
||||
import com.mhd.common.core.web.domain.AjaxResult;
|
||||
@@ -127,6 +128,24 @@ public class StorageLocationApi extends BaseController{
|
||||
{
|
||||
return AjaxResult.success(storageLocationApplicationService.getInfo(storageLocationId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制库位-获取原库位数据用于回显
|
||||
*/
|
||||
@ApiOperation("复制库位-获取原库位数据用于回显")
|
||||
@PostMapping("/copyStorageLocation")
|
||||
public AjaxResult copyStorageLocation(@RequestBody StorageLocationDTO storageLocationDTO)
|
||||
{
|
||||
if(storageLocationDTO.getStorageLocationId() == null){
|
||||
throw new ServiceException("原库位id不能为空");
|
||||
}
|
||||
try {
|
||||
StorageLocationPO result = storageLocationApplicationService.copyStorageLocation(storageLocationDTO);
|
||||
return AjaxResult.success(result);
|
||||
}catch (Exception e){
|
||||
return AjaxResult.error("复制库位失败:"+e.getMessage());
|
||||
}
|
||||
}
|
||||
@ApiOperation("获取库位总数")
|
||||
@PostMapping(value = "/getStorageLocationCount")
|
||||
public AjaxResult getStorageLocationCount(@RequestBody StorageLocationDTO storageLocationDTO)
|
||||
|
||||
Reference in New Issue
Block a user