diff --git a/pom.xml b/pom.xml
index 6b34257..ea78572 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
com.imyeyu.timiserverapi
TimiServerAPI
- 1.0.52
+ 1.0.53
jar
TimiServerAPI
imyeyu.com API
diff --git a/src/main/java/com/imyeyu/api/modules/common/service/implement/AttachmentServiceImplement.java b/src/main/java/com/imyeyu/api/modules/common/service/implement/AttachmentServiceImplement.java
index a515e6f..9586f87 100644
--- a/src/main/java/com/imyeyu/api/modules/common/service/implement/AttachmentServiceImplement.java
+++ b/src/main/java/com/imyeyu/api/modules/common/service/implement/AttachmentServiceImplement.java
@@ -184,6 +184,7 @@ public class AttachmentServiceImplement extends AbstractEntityService outForFulfillment(String storeId, String bizId, List items, String requestNo, String operatorUserId);
+ /// 履约出库并复制履约附件到出库流水
+ List outForFulfillment(String storeId, String bizId, List items, String requestNo,
+ String operatorUserId, List attachmentList);
+
/// 履约库存冲正入库
List revokeForFulfillment(String storeId, String bizId, List items, String requestNo, String operatorUserId);
diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoOrderFulfillmentServiceImplement.java b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoOrderFulfillmentServiceImplement.java
index 60ac386..b4c032f 100644
--- a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoOrderFulfillmentServiceImplement.java
+++ b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoOrderFulfillmentServiceImplement.java
@@ -261,8 +261,10 @@ public class GaoOrderFulfillmentServiceImplement extends AbstractEntityService attachmentList = attachmentService.listByBizId(
+ Attachment.BizType.GAO_ORDER_FULFILLMENT, fulfillment.getId());
productStockService.outForFulfillment(order.getStoreId(), fulfillment.getId(), stockItems,
- stockRequestNo(fulfillment, "OUT"), verifierUserId);
+ stockRequestNo(fulfillment, "OUT"), verifierUserId, attachmentList);
}
TimiException.requiredTrue(1 == mapper.updateStatus(fulfillment.getId(), GaoOrderFulfillment.Status.VERIFIED,
verifierUserId, Time.now(), request.getReason()), "履约状态已变化");
diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoProductStockServiceImplement.java b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoProductStockServiceImplement.java
index 5cca2e0..5a077bb 100644
--- a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoProductStockServiceImplement.java
+++ b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoProductStockServiceImplement.java
@@ -232,6 +232,14 @@ public class GaoProductStockServiceImplement implements GaoProductStockService {
return executeInternal(storeId, bizId, items, requestNo, operatorUserId, GaoProductStockRecord.OperationType.ORDER_OUT, null);
}
+ @Override
+ @Transactional(TimiServerDBConfig.ROLLBACKER)
+ public List outForFulfillment(String storeId, String bizId, List items, String requestNo,
+ String operatorUserId, List attachmentList) {
+ return executeInternal(storeId, bizId, items, requestNo, operatorUserId,
+ GaoProductStockRecord.OperationType.ORDER_OUT, null, null, attachmentList);
+ }
+
@Override
@Transactional(TimiServerDBConfig.ROLLBACKER)
public List revokeForFulfillment(String storeId, String bizId, List items, String requestNo, String operatorUserId) {
@@ -445,7 +453,11 @@ public class GaoProductStockServiceImplement implements GaoProductStockService {
record.setOperatorUserId(operatorUserId);
record.setOccurredAt(TimiJava.defaultIfNull(occurredAt, Time.now()));
record.setRemark(remark);
- recordService.createOperationRecord(record, attachmentList);
+ recordService.createOperationRecord(record,
+ operationType == GaoProductStockRecord.OperationType.ORDER_OUT ? null : attachmentList);
+ if (operationType == GaoProductStockRecord.OperationType.ORDER_OUT) {
+ copyAttachments(record.getId(), attachmentList);
+ }
stock.setOnHandQuantity(onHandAfter);
stock.setReservedQuantity(reservedAfter);
stock.setUpdatedBy(operatorUserId);
@@ -455,6 +467,23 @@ public class GaoProductStockServiceImplement implements GaoProductStockService {
return result;
}
+ /// 复制履约附件到出库流水
+ ///
+ /// @param recordId 出库流水 ID
+ /// @param sourceAttachmentList 履约附件
+ private void copyAttachments(String recordId, List sourceAttachmentList) {
+ for (Attachment source : TimiJava.safeIterable(sourceAttachmentList)) {
+ if (source == null) {
+ continue;
+ }
+ TimiException.required(source.getId(), "履约附件 ID 不能为空");
+ Attachment copy = attachmentService.clone(source.getId());
+ copy.setBizType(Attachment.BizType.GAO_STOCK_RECORD);
+ copy.setBizId(recordId);
+ attachmentService.update(copy);
+ }
+ }
+
private GaoProductStock lockOrCreateStock(String storeId, String skuId) {
GaoProductStock stock = stockMapper.selectForUpdate(storeId, skuId);
if (stock != null) {