feat: add self-operated analytics and enforce Lastleg module boundaries
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
package com.baiyue.lastleg.delivery.fleet;
|
||||
|
||||
import com.baiyue.lastleg.delivery.mapper.DeliverySourceEvidenceMapper;
|
||||
import com.baiyue.lastleg.delivery.model.SourceDeliveryCompletionPolicy;
|
||||
import com.baiyue.lastleg.fleet.business.FleetPoolDeliveryEvidence;
|
||||
import org.springframework.stereotype.Component;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
/** Same-transaction delivery proof; no persistence model escapes into fleet. */
|
||||
@Component
|
||||
public class FleetPoolDeliveryAdapter implements FleetPoolDeliveryEvidence {
|
||||
private final DeliverySourceEvidenceMapper evidence;
|
||||
public FleetPoolDeliveryAdapter(DeliverySourceEvidenceMapper evidence){this.evidence=evidence;}
|
||||
@Override public boolean fullySigned(String customerId,String incomingNo,long orderId,int expectedPackages) {
|
||||
var dispatchIds=evidence.dispatchIds(customerId,orderId);
|
||||
if(dispatchIds==null||dispatchIds.isEmpty()||new HashSet<>(dispatchIds).size()!=dispatchIds.size())return false;
|
||||
var deliveries=new ArrayList<SourceDeliveryCompletionPolicy.Delivery>();
|
||||
var picks=new ArrayList<SourceDeliveryCompletionPolicy.Pick>();
|
||||
var returns=new ArrayList<SourceDeliveryCompletionPolicy.Returned>();
|
||||
for(Long dispatchId:dispatchIds){
|
||||
if(dispatchId==null||dispatchId<=0)return false;
|
||||
var d=evidence.deliveries(customerId,dispatchId);var p=evidence.picks(customerId,dispatchId);
|
||||
var r=evidence.returns(customerId,dispatchId);
|
||||
if(d==null||d.isEmpty()||p==null||p.isEmpty()||r==null)return false;
|
||||
deliveries.addAll(d);picks.addAll(p);returns.addAll(r);
|
||||
}
|
||||
return SourceDeliveryCompletionPolicy.evaluate(new SourceDeliveryCompletionPolicy.Source(incomingNo,orderId,expectedPackages),
|
||||
deliveries,picks,returns,true).fullySigned();
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -1,4 +1,5 @@
|
||||
package com.baiyue.lastleg.delivery.service;
|
||||
import com.baiyue.lastleg.fleet.business.FleetPoolOrderModels.SignedDelivery;
|
||||
|
||||
import com.baiyue.lastleg.delivery.dto.DeliveryDocumentDtos;
|
||||
import com.baiyue.lastleg.delivery.dto.DeliveryDocumentDtos.*;
|
||||
@@ -115,7 +116,9 @@ public class DeliveryDocumentService {
|
||||
orders.updateById(order);
|
||||
if (autoCompleted) {
|
||||
var completion = completeRelatedOrders(order, operatorId, now);
|
||||
fleetPool.signed(order, completion.sourcePackages(), operatorId, now);
|
||||
fleetPool.signed(new SignedDelivery(
|
||||
order.getCustomerId(),order.getDispatchNo(),order.getDeliveryNo(),"DELIVERED".equals(order.getStatus()),order.getSignedAt()),
|
||||
completion.sourcePackages(),operatorId,now);
|
||||
deliveryCompletedOutbox.publish(order, completion.orders(), completion.proofs(), now.atZone(executionZone).toInstant());
|
||||
customerVisits.ensureForCompletedDelivery(order, now);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user