出入库单按规则生成;

This commit is contained in:
王奎兴
2026-08-08 18:36:36 +08:00
parent 296176c85e
commit 5e65d63a4f
4 changed files with 170 additions and 21 deletions
@@ -248,9 +248,12 @@ public class StockOutOrderDomainService {
//仓库信息
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();
String prefix = warehouseFeignPO.getOutOrderNoPrefix();
if ("yang_pin_chu_ku".equals(stockOutOrderDO.getBusinessType())) {
prefix = warehouseFeignPO.getSampleOutOrderNoPrefix();
}
if (prefix == null || prefix.isEmpty()) {
prefix = "RK";
prefix = "CK";
}
Long organizationId = stockOutOrderDO.getOrganizationId();
Long warehouseIdForCount = stockOutOrderDO.getWarehouseId();
@@ -297,8 +300,38 @@ public class StockOutOrderDomainService {
@Transactional(rollbackFor = Exception.class)
public Boolean batchInsert(List<StockOutOrderDO> stockOutOrderDOList) {
for (StockOutOrderDO stockOutOrderDO : stockOutOrderDOList){
if (StringUtils.isBlank(stockOutOrderDO.getOutOrderNumber())){
stockOutOrderDO.setOutOrderNumber(OrderSequence.getOrderCode("CK"));
//设置单号
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);
} 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);
}
//设置物料信息
setMaterialDetailInfo(stockOutOrderDO);