feat(printer): 添加照片属性键功能支持

- 引入SourceRepository依赖以获取设备ID
- 在打印服务中新增对照片来源属性的处理逻辑
- 根据用户照片列表生成唯一的设备ID集合
- 将生成的属性键列表关联到普通照片项中
- 优化打印数量统计逻辑,确保数据准确性
- 增强打印任务构建时的数据完整性校验
This commit is contained in:
2025-12-18 11:18:45 +08:00
parent cd4422eb23
commit 94b37d47ec

View File

@@ -66,6 +66,7 @@ import com.ycwl.basic.repository.DeviceRepository;
import com.ycwl.basic.repository.FaceRepository;
import com.ycwl.basic.repository.OrderRepository;
import com.ycwl.basic.repository.ScenicRepository;
import com.ycwl.basic.repository.SourceRepository;
import com.ycwl.basic.service.mobile.WxPayService;
import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.service.printer.PrinterService;
@@ -160,6 +161,8 @@ public class PrinterServiceImpl implements PrinterService {
private final ExecutorService preferPrintExecutor = Executors.newFixedThreadPool(
Runtime.getRuntime().availableProcessors() * 2
);
@Autowired
private SourceRepository sourceRepository;
@Override
public List<PrinterResp> listByScenicId(Long scenicId) {
@@ -405,6 +408,21 @@ public class PrinterServiceImpl implements PrinterService {
&& item.getSourceId() != null && item.getSourceId() > 0)
.mapToInt(MemberPrintResp::getQuantity)
.sum();
List<String> normalAttrs = userPhotoList.stream()
.filter(item -> Objects.nonNull(item.getQuantity())
&& item.getSourceId() != null && item.getSourceId() > 0)
.map(MemberPrintResp::getSourceId)
.map(id -> {
SourceEntity source = sourceRepository.getSource(id);
if (source == null) {
return null;
}
return source.getDeviceId();
})
.filter(Objects::nonNull)
.distinct()
.map(String::valueOf)
.toList();
long mobileCount = userPhotoList.stream()
.filter(item -> Objects.nonNull(item.getQuantity())
@@ -443,6 +461,7 @@ public class PrinterServiceImpl implements PrinterService {
normalPhotoItem.setQuantity(Long.valueOf(normalCount).intValue());
normalPhotoItem.setPurchaseCount(1);
normalPhotoItem.setScenicId(scenicId.toString());
normalPhotoItem.setAttributeKeys(normalAttrs);
productItems.add(normalPhotoItem);
log.debug("普通照片打印数量: {}", normalCount);
}