|
|
@@ -11,10 +11,8 @@ import cn.com.taiji.core.repo.jpa.invw.InvwObuDetailsRepo; |
|
|
|
import cn.com.taiji.core.repo.jpa.invw.InvwWarehouseRepo; |
|
|
|
import cn.com.taiji.core.repo.request.invw.InvwWarehousePageRequest; |
|
|
|
import cn.com.taiji.invw.dto.warehouse.*; |
|
|
|
import cn.com.taiji.invw.manager.AbstractCommManager; |
|
|
|
import cn.com.taiji.invw.manager.AbstractInvwManager; |
|
|
|
import cn.com.taiji.invw.model.warehouse.InvwWarehouseIdNameModel; |
|
|
|
import lombok.val; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
@@ -47,6 +45,7 @@ public class InvwWarehouseManagerImpl extends AbstractInvwManager implements Inv |
|
|
|
throw new ManagerException("上级仓库不存在"); |
|
|
|
} |
|
|
|
int level = parentWarehouse.getWarehouseLevel() + 1; |
|
|
|
// 生成仓库编号 |
|
|
|
String code = generateCode(parentWarehouse, level); |
|
|
|
|
|
|
|
InvwWarehouse warehouse = new InvwWarehouse(); |
|
|
@@ -62,11 +61,13 @@ public class InvwWarehouseManagerImpl extends AbstractInvwManager implements Inv |
|
|
|
if (StringTools.hasText(req.getWarehouseChannelId())) { |
|
|
|
warehouse.setChannelId(req.getWarehouseChannelId()); |
|
|
|
} |
|
|
|
System.out.println("warehouse:"+warehouse); |
|
|
|
warehouseRepo.save(warehouse); |
|
|
|
persistOperateLog(OperateType.WAREHOUSE_ADD, warehouse.getId(), req.getOrderSource(), findOpenIdByToken(req.getAccessToken()), "仓库新增"); |
|
|
|
// persistOperateLog(OperateType.WAREHOUSE_ADD, warehouse.getId(), req.getOrderSource(), findOpenIdByToken(req.getAccessToken()), "仓库新增"); |
|
|
|
} |
|
|
|
|
|
|
|
public String generateCode(InvwWarehouse parentWarehouse, int level) throws ManagerException { |
|
|
|
//一级 5201010 304001 900000 |
|
|
|
//二级 5201010 304001 900100 |
|
|
|
//二级 5201010 304002 900100 |
|
|
|
//三级 5201010 304001 900101 |
|
|
@@ -75,23 +76,30 @@ public class InvwWarehouseManagerImpl extends AbstractInvwManager implements Inv |
|
|
|
//三级 5201010 304002 900102 |
|
|
|
//前缀 5201010 |
|
|
|
String maxCode; |
|
|
|
if(!StringTools.hasText(parentWarehouse.getParentId())){ |
|
|
|
maxCode = warehouseRepo.findMaxCodeByParentId(parentWarehouse.getId()); |
|
|
|
}else { |
|
|
|
maxCode = warehouseRepo.findMaxCodeByParentId(parentWarehouse.getCode()); |
|
|
|
} |
|
|
|
if(maxCode == null){ |
|
|
|
maxCode = parentWarehouse.getCode(); |
|
|
|
|
|
|
|
// 以父仓查询旗下的最大仓库编号 |
|
|
|
maxCode = warehouseRepo.findMaxCodeByParentId(parentWarehouse.getId()); |
|
|
|
|
|
|
|
// 如果不存在,就赋值为父仓的编号,后缀为900100 |
|
|
|
String suffix = null; |
|
|
|
if (maxCode == null) { |
|
|
|
maxCode = parentWarehouse.getCode(); |
|
|
|
suffix = "900100"; |
|
|
|
} |
|
|
|
// 判断编号是否为19位 |
|
|
|
if (maxCode.length() != 19) { |
|
|
|
throw new ManagerException("父仓库编号格式不正确或不存在"); |
|
|
|
} |
|
|
|
// 截取为三段,1-7位前缀,8-13位中间,14-19位后缀 |
|
|
|
String prefix = maxCode.substring(0, 7); |
|
|
|
String middle = maxCode.substring(7, 13); |
|
|
|
String suffix = maxCode.substring(13, 19); |
|
|
|
if (!StringTools.hasText(suffix)) { |
|
|
|
suffix = maxCode.substring(13, 19); |
|
|
|
} |
|
|
|
|
|
|
|
String newCode; |
|
|
|
if (level == 2) { |
|
|
|
// 二级仓库 中间加1 |
|
|
|
int middlePart = Integer.parseInt(middle) + 1; |
|
|
|
newCode = prefix + middlePart + suffix; |
|
|
|
InvwWarehouse existingWarehouse = warehouseRepo.findByCode(newCode); |
|
|
@@ -102,6 +110,7 @@ public class InvwWarehouseManagerImpl extends AbstractInvwManager implements Inv |
|
|
|
} |
|
|
|
return newCode; |
|
|
|
} else if (level == 3) { |
|
|
|
// 三级仓库 后缀加1 |
|
|
|
int suffixPart = Integer.parseInt(suffix) + 1; |
|
|
|
newCode = prefix + middle + suffixPart; |
|
|
|
InvwWarehouse existingWarehouse = warehouseRepo.findByCode(newCode); |
|
|
@@ -300,7 +309,7 @@ public class InvwWarehouseManagerImpl extends AbstractInvwManager implements Inv |
|
|
|
@Override |
|
|
|
public InvwWarehouseDetailResponseDTO detail(InvwWarehouseDetailRequestDTO req) throws ManagerException { |
|
|
|
InvwWarehouse warehouse = warehouseRepo.findById(req.getId()).orElse(null); |
|
|
|
if(warehouse==null) throw new ManagerException("仓库不存在"); |
|
|
|
if (warehouse == null) throw new ManagerException("仓库不存在"); |
|
|
|
InvwWarehouseDetailResponseDTO response = new InvwWarehouseDetailResponseDTO(); |
|
|
|
InvwWarehouseIdNameModel model = new InvwWarehouseIdNameModel(); |
|
|
|
BeanUtils.copyProperties(warehouse, model); |