生成单号规则处理;+

This commit is contained in:
王奎兴
2026-08-12 14:01:56 +08:00
parent 898cc32452
commit 3866bfee05
11 changed files with 204 additions and 278 deletions
@@ -147,44 +147,44 @@ public class ReservationStockInOrderDomainService {
*/
@Transactional(rollbackFor = Exception.class)
public Boolean insert(ReservationStockInOrderDO stockInOrderDO) {
// if (stockInOrderDO.getInOrderNumber() == null) {
if (stockInOrderDO.getInOrderNumber() == null) {
//设置入库单号
Long warehouseId = stockInOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getInOrderNoPrefix();
if (prefix == null || prefix.isEmpty()) {
prefix = "RK";
}
Long organizationId = stockInOrderDO.getOrganizationId();
Long warehouseIdForCount = stockInOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = reserveStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(datePrefix + seq);
stockInOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = reserveStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(prefix + seq);
stockInOrderDO.setBusinessOrderNo(prefix + seq);
}
// Long warehouseId = stockInOrderDO.getWarehouseId();
// AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
// if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
// throw new ServiceException("获取仓库信息失败");
// }
// //仓库信息
// WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
// String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
// String prefix = warehouseFeignPO.getInOrderNoPrefix();
// if (prefix == null || prefix.isEmpty()) {
// prefix = "RK";
// }
// Long organizationId = stockInOrderDO.getOrganizationId();
// Long warehouseIdForCount = stockInOrderDO.getWarehouseId();
// if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
// //日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
// String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
// String datePrefix = prefix + dateStr;
// List<String> orderNumbers = reserveStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockInOrderDO.setInOrderNumber(datePrefix + seq);
// stockInOrderDO.setBusinessOrderNo(datePrefix + seq);
// } else {
// //历史累加: 前缀 + 历史最大序号+1
// List<String> orderNumbers = reserveStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockInOrderDO.setInOrderNumber(prefix + seq);
// stockInOrderDO.setBusinessOrderNo(prefix + seq);
// }
// stockInOrderDO.setInOrderNumber(generateReserveOrderNumber());
// stockInOrderDO.setBusinessOrderNo(stockInOrderDO.getInOrderNumber());
// }
stockInOrderDO.setInOrderNumber(generateReserveOrderNumber());
stockInOrderDO.setBusinessOrderNo(stockInOrderDO.getInOrderNumber());
}
// //设置默认值
// setDefaultValues(stockInOrderDO);
// //设置物料信息
@@ -213,37 +213,9 @@ public class ReservationStockInOrderDomainService {
public Boolean batchInsert(List<ReservationStockInOrderDO> stockInOrderDOList) {
for (ReservationStockInOrderDO stockInOrderDO : stockInOrderDOList){
//设置入库单号
Long warehouseId = stockInOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getInOrderNoPrefix();
if (prefix == null || prefix.isEmpty()) {
prefix = "RK";
}
Long organizationId = stockInOrderDO.getOrganizationId();
Long warehouseIdForCount = stockInOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = reserveStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(datePrefix + seq);
stockInOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = reserveStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(prefix + seq);
stockInOrderDO.setBusinessOrderNo(prefix + seq);
if (stockInOrderDO.getInOrderNumber() == null) {
stockInOrderDO.setInOrderNumber(generateReserveOrderNumber());
stockInOrderDO.setBusinessOrderNo(stockInOrderDO.getInOrderNumber());
}
// //设置物料信息
@@ -157,42 +157,45 @@ public class ReservationStockOutOrderDomainService {
*/
@Transactional(rollbackFor = Exception.class)
public Boolean insert(ReservationStockOutOrderDO stockOutOrderDO) {
if (stockOutOrderDO.getOutOrderNumber() == null) {
stockOutOrderDO.setOutOrderNumber(generateReserveOrderNumber());
stockOutOrderDO.setBusinessOrderNo(stockOutOrderDO.getOutOrderNumber());
}
//设置单号
Long warehouseId = stockOutOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getOutOrderNoPrefix();
if ("yang_pin_chu_ku".equals(stockOutOrderDO.getBusinessType())) {
prefix = warehouseFeignPO.getSampleOutOrderNoPrefix();
}
if (prefix == null || prefix.isEmpty()) {
prefix = "CK";
}
Long organizationId = stockOutOrderDO.getOrganizationId();
Long warehouseIdForCount = stockOutOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = reserveStockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(datePrefix + seq);
stockOutOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = reserveStockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(prefix + seq);
stockOutOrderDO.setBusinessOrderNo(prefix + seq);
}
// Long warehouseId = stockOutOrderDO.getWarehouseId();
// AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
// if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
// throw new ServiceException("获取仓库信息失败");
// }
// //仓库信息
// WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
// String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
// String prefix = warehouseFeignPO.getOutOrderNoPrefix();
// if ("yang_pin_chu_ku".equals(stockOutOrderDO.getBusinessType())) {
// prefix = warehouseFeignPO.getSampleOutOrderNoPrefix();
// }
// if (prefix == null || prefix.isEmpty()) {
// prefix = "CK";
// }
// Long organizationId = stockOutOrderDO.getOrganizationId();
// Long warehouseIdForCount = stockOutOrderDO.getWarehouseId();
// if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
// //日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
// String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
// String datePrefix = prefix + dateStr;
// List<String> orderNumbers = reserveStockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockOutOrderDO.setOutOrderNumber(datePrefix + seq);
// stockOutOrderDO.setBusinessOrderNo(datePrefix + seq);
// } else {
// //历史累加: 前缀 + 历史最大序号+1
// List<String> orderNumbers = reserveStockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockOutOrderDO.setOutOrderNumber(prefix + seq);
// stockOutOrderDO.setBusinessOrderNo(prefix + seq);
// }
// 与 update / batchInsert 一致:前端传计划数量为 quantity,非 outboundQuantity
setMaterialDetailInfo(stockOutOrderDO);
@@ -235,40 +238,9 @@ public class ReservationStockOutOrderDomainService {
for (ReservationStockOutOrderDO stockOutOrderDO : stockOutOrderDOList){
//设置单号
Long warehouseId = stockOutOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getOutOrderNoPrefix();
if ("yang_pin_chu_ku".equals(stockOutOrderDO.getBusinessType())) {
prefix = warehouseFeignPO.getSampleOutOrderNoPrefix();
}
if (prefix == null || prefix.isEmpty()) {
prefix = "CK";
}
Long organizationId = stockOutOrderDO.getOrganizationId();
Long warehouseIdForCount = stockOutOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = reserveStockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(datePrefix + seq);
stockOutOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = reserveStockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(prefix + seq);
stockOutOrderDO.setBusinessOrderNo(prefix + seq);
if (stockOutOrderDO.getOutOrderNumber() == null) {
stockOutOrderDO.setOutOrderNumber(generateReserveOrderNumber());
stockOutOrderDO.setBusinessOrderNo(stockOutOrderDO.getOutOrderNumber());
}
//设置物料信息
@@ -103,39 +103,40 @@ public class ReserveStockInOrderDomainService {
*/
@Transactional(rollbackFor = Exception.class)
public Boolean insert(ReserveStockInOrderDO stockInOrderDO) {
// if (stockInOrderDO.getInOrderNumber() == null) {
Long warehouseId = stockInOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getInOrderNoPrefix();
if (prefix == null || prefix.isEmpty()) {
prefix = "RK";
}
Long organizationId = stockInOrderDO.getOrganizationId();
Long warehouseIdForCount = stockInOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(datePrefix + seq);
stockInOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(prefix + seq);
stockInOrderDO.setBusinessOrderNo(prefix + seq);
}
if (stockInOrderDO.getInOrderNumber() == null) {
stockInOrderDO.setInOrderNumber(generateReserveOrderNumber());
// Long warehouseId = stockInOrderDO.getWarehouseId();
// AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
// if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
// throw new ServiceException("获取仓库信息失败");
// }
// //仓库信息
// WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
// String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
// String prefix = warehouseFeignPO.getInOrderNoPrefix();
// if (prefix == null || prefix.isEmpty()) {
// prefix = "RK";
// }
// Long organizationId = stockInOrderDO.getOrganizationId();
// Long warehouseIdForCount = stockInOrderDO.getWarehouseId();
// if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
// //日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
// String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
// String datePrefix = prefix + dateStr;
// List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockInOrderDO.setInOrderNumber(datePrefix + seq);
// stockInOrderDO.setBusinessOrderNo(datePrefix + seq);
// } else {
// //历史累加: 前缀 + 历史最大序号+1
// List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockInOrderDO.setInOrderNumber(prefix + seq);
// stockInOrderDO.setBusinessOrderNo(prefix + seq);
// }
}
// //设置默认值
// setDefaultValues(stockInOrderDO);
// //设置物料信息
@@ -166,37 +167,41 @@ public class ReserveStockInOrderDomainService {
*/
public Boolean batchInsert(List<ReserveStockInOrderDO> stockInOrderDOList) {
for (ReserveStockInOrderDO stockInOrderDO : stockInOrderDOList){
Long warehouseId = stockInOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getInOrderNoPrefix();
if (prefix == null || prefix.isEmpty()) {
prefix = "RK";
}
Long organizationId = stockInOrderDO.getOrganizationId();
Long warehouseIdForCount = stockInOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(datePrefix + seq);
stockInOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockInOrderDO.setInOrderNumber(prefix + seq);
stockInOrderDO.setBusinessOrderNo(prefix + seq);
String inOrderNumber = stockInOrderDO.getInOrderNumber();
if (stockInOrderDO.getInOrderNumber() == null){
stockInOrderDO.setInOrderNumber(generateReserveOrderNumber());
}
// Long warehouseId = stockInOrderDO.getWarehouseId();
// AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
// if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
// throw new ServiceException("获取仓库信息失败");
// }
// //仓库信息
// WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
// String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
// String prefix = warehouseFeignPO.getInOrderNoPrefix();
// if (prefix == null || prefix.isEmpty()) {
// prefix = "RK";
// }
// Long organizationId = stockInOrderDO.getOrganizationId();
// Long warehouseIdForCount = stockInOrderDO.getWarehouseId();
// if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
// //日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
// String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
// String datePrefix = prefix + dateStr;
// List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockInOrderDO.setInOrderNumber(datePrefix + seq);
// stockInOrderDO.setBusinessOrderNo(datePrefix + seq);
// } else {
// //历史累加: 前缀 + 历史最大序号+1
// List<String> orderNumbers = reservationStockInOrderMapper.getMaxStockInOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockInOrderDO.setInOrderNumber(prefix + seq);
// stockInOrderDO.setBusinessOrderNo(prefix + seq);
// }
// //设置物料信息
// setMaterialDetailInfo(stockInOrderDO);
// //统计总物料种数
@@ -124,41 +124,44 @@ public class ReserveStockOutOrderDomainService {
*/
@Transactional(rollbackFor = Exception.class)
public Boolean insert(ReserveStockOutOrderDO stockOutOrderDO) {
if (stockOutOrderDO.getOutOrderNumber() == null) {
stockOutOrderDO.setOutOrderNumber(generateReserveOrderNumber());
}
//设置单号
Long warehouseId = stockOutOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getOutOrderNoPrefix();
if ("yang_pin_chu_ku".equals(stockOutOrderDO.getBusinessType())) {
prefix = warehouseFeignPO.getSampleOutOrderNoPrefix();
}
if (prefix == null || prefix.isEmpty()) {
prefix = "CK";
}
Long organizationId = stockOutOrderDO.getOrganizationId();
Long warehouseIdForCount = stockOutOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = stockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(datePrefix + seq);
stockOutOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = stockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(prefix + seq);
stockOutOrderDO.setBusinessOrderNo(prefix + seq);
}
// Long warehouseId = stockOutOrderDO.getWarehouseId();
// AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
// if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
// throw new ServiceException("获取仓库信息失败");
// }
// //仓库信息
// WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
// String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
// String prefix = warehouseFeignPO.getOutOrderNoPrefix();
// if ("yang_pin_chu_ku".equals(stockOutOrderDO.getBusinessType())) {
// prefix = warehouseFeignPO.getSampleOutOrderNoPrefix();
// }
// if (prefix == null || prefix.isEmpty()) {
// prefix = "CK";
// }
// Long organizationId = stockOutOrderDO.getOrganizationId();
// Long warehouseIdForCount = stockOutOrderDO.getWarehouseId();
// if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
// //日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
// String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
// String datePrefix = prefix + dateStr;
// List<String> orderNumbers = stockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockOutOrderDO.setOutOrderNumber(datePrefix + seq);
// stockOutOrderDO.setBusinessOrderNo(datePrefix + seq);
// } else {
// //历史累加: 前缀 + 历史最大序号+1
// List<String> orderNumbers = stockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
// int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
// String seq = String.format("%03d", maxSeq + 1);
// stockOutOrderDO.setOutOrderNumber(prefix + seq);
// stockOutOrderDO.setBusinessOrderNo(prefix + seq);
// }
// 与 update / batchInsert 一致:前端传计划数量为 quantity,非 outboundQuantity
@@ -188,40 +191,8 @@ public class ReserveStockOutOrderDomainService {
@Transactional(rollbackFor = Exception.class)
public Boolean batchInsert(List<ReserveStockOutOrderDO> stockOutOrderDOList) {
for (ReserveStockOutOrderDO stockOutOrderDO : stockOutOrderDOList){
//设置单号
Long warehouseId = stockOutOrderDO.getWarehouseId();
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(warehouseId);
if (!"200".equals(String.valueOf(ajaxResult.get("code")))) {
throw new ServiceException("获取仓库信息失败");
}
//仓库信息
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
String orderNoGenerateRule = warehouseFeignPO.getOrderNoGenerateRule();
String prefix = warehouseFeignPO.getOutOrderNoPrefix();
if ("yang_pin_chu_ku".equals(stockOutOrderDO.getBusinessType())) {
prefix = warehouseFeignPO.getSampleOutOrderNoPrefix();
}
if (prefix == null || prefix.isEmpty()) {
prefix = "CK";
}
Long organizationId = stockOutOrderDO.getOrganizationId();
Long warehouseIdForCount = stockOutOrderDO.getWarehouseId();
if (orderNoGenerateRule != null && "0".equals(orderNoGenerateRule)) {
//日期累加: 前缀 + 当前日期yymmdd + 当天最大序号+1
String dateStr = new SimpleDateFormat("yyMMdd").format(new Date());
String datePrefix = prefix + dateStr;
List<String> orderNumbers = stockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(datePrefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, datePrefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(datePrefix + seq);
stockOutOrderDO.setBusinessOrderNo(datePrefix + seq);
} else {
//历史累加: 前缀 + 历史最大序号+1
List<String> orderNumbers = stockOutOrderMapper.getMaxStockOutOrderByPrefixAndOrgAndWarehouse(prefix, organizationId, warehouseIdForCount);
int maxSeq = extractMaxSequenceNumber(orderNumbers, prefix.length());
String seq = String.format("%03d", maxSeq + 1);
stockOutOrderDO.setOutOrderNumber(prefix + seq);
stockOutOrderDO.setBusinessOrderNo(prefix + seq);
if (stockOutOrderDO.getOutOrderNumber() == null) {
stockOutOrderDO.setOutOrderNumber(generateReserveOrderNumber());
}
//设置物料信息
setMaterialDetailInfo(stockOutOrderDO);