feat:修复样品信息打印条码格式问题
parent
0eb71bb20f
commit
2680f3e5e2
@ -0,0 +1,21 @@
|
||||
-- BIT 样品仓打印模板类型补充 v3
|
||||
-- 说明:
|
||||
-- 1. 2026-06-22-bit-sample-wms.sql 已作为种子执行后,不再修改原文件。
|
||||
-- 2. 保留现有 print_template_type: 6 = 产线。
|
||||
-- 3. 本文件仅补充 BIT 样品标签、BIT 库位标签两个打印模板类型。
|
||||
|
||||
INSERT INTO system_dict_data
|
||||
(sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted)
|
||||
SELECT 7, 'BIT样品标签', '7', 'print_template_type', 0, 'primary', '', 'qrcodeUrl,name,code', '1', NOW(), '1', NOW(), b'0'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM system_dict_data
|
||||
WHERE dict_type = 'print_template_type' AND value = '7'
|
||||
);
|
||||
|
||||
INSERT INTO system_dict_data
|
||||
(sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted)
|
||||
SELECT 8, 'BIT库位标签', '8', 'print_template_type', 0, 'success', '', 'qrcodeUrl,name,code', '1', NOW(), '1', NOW(), b'0'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM system_dict_data
|
||||
WHERE dict_type = 'print_template_type' AND value = '8'
|
||||
);
|
||||
@ -0,0 +1,85 @@
|
||||
package cn.iocoder.yudao.module.common.service.qrcordrecord;
|
||||
|
||||
import cn.iocoder.yudao.module.common.dal.dataobject.qrcoderecord.QrcodeRecordDO;
|
||||
import cn.iocoder.yudao.module.common.dal.mysql.qrcoderecord.QrcodeRecordMapper;
|
||||
import cn.iocoder.yudao.module.common.enums.CodeTypeEnum;
|
||||
import cn.iocoder.yudao.module.common.enums.QrcodeBizTypeEnum;
|
||||
import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class QrcodeRecordServiceImplTest {
|
||||
|
||||
private QrcodeRecordServiceImpl qrcodeRecordService;
|
||||
|
||||
@Mock
|
||||
private FileApi fileApi;
|
||||
@Mock
|
||||
private QrcodeRecordMapper qrcodeRecordMapper;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
qrcodeRecordService = new QrcodeRecordServiceImpl(Collections.emptyList());
|
||||
ReflectionTestUtils.setField(qrcodeRecordService, "fileApi", fileApi);
|
||||
ReflectionTestUtils.setField(qrcodeRecordService, "qrcodeRecordMapper", qrcodeRecordMapper);
|
||||
ReflectionTestUtils.setField(qrcodeRecordService, "width", 120);
|
||||
ReflectionTestUtils.setField(qrcodeRecordService, "height", 120);
|
||||
ReflectionTestUtils.setField(qrcodeRecordService, "defaultBucket", "common-qrcode");
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateOrRefresh_whenQr_storesQrCodeType() throws Exception {
|
||||
Map<String, String> file = new HashMap<>();
|
||||
file.put("fileUrl", "https://file/qr.png");
|
||||
when(fileApi.createFile(any(), any(), any())).thenReturn(file);
|
||||
|
||||
qrcodeRecordService.generateOrRefresh(QrcodeBizTypeEnum.PRODUCT, 10L, "SP001", "DETAIL");
|
||||
|
||||
ArgumentCaptor<QrcodeRecordDO> recordCaptor = ArgumentCaptor.forClass(QrcodeRecordDO.class);
|
||||
verify(qrcodeRecordMapper).insert(recordCaptor.capture());
|
||||
assertEquals("QR", recordCaptor.getValue().getCodeType());
|
||||
}
|
||||
|
||||
@Test
|
||||
void selectQrcodeUrlByIdAndCodeAndType_filtersByCodeType() {
|
||||
QrcodeRecordDO qrRecord = new QrcodeRecordDO();
|
||||
qrRecord.setQrcodeFileUrl("https://file/qr.png");
|
||||
when(qrcodeRecordMapper.selectOne(any())).thenReturn(qrRecord);
|
||||
|
||||
String url = qrcodeRecordService.selectQrcodeUrlByIdAndCodeAndType(
|
||||
QrcodeBizTypeEnum.PRODUCT.getCode(), 10L, "SP001", CodeTypeEnum.QR);
|
||||
|
||||
assertEquals("https://file/qr.png", url);
|
||||
verify(qrcodeRecordMapper).selectOne(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void regenerateByCodeType_filtersExistingRecordByRequestedCodeType() throws Exception {
|
||||
Map<String, String> file = new HashMap<>();
|
||||
file.put("fileUrl", "https://file/qr.png");
|
||||
when(fileApi.createFile(any(), any(), any())).thenReturn(file);
|
||||
|
||||
qrcodeRecordService.regenerateByCodeType(QrcodeBizTypeEnum.PRODUCT, 10L, "SP001", "DETAIL", "QR");
|
||||
|
||||
verify(qrcodeRecordMapper).selectOne(any());
|
||||
|
||||
ArgumentCaptor<QrcodeRecordDO> recordCaptor = ArgumentCaptor.forClass(QrcodeRecordDO.class);
|
||||
verify(qrcodeRecordMapper).insert(recordCaptor.capture());
|
||||
assertEquals("QR", recordCaptor.getValue().getCodeType());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue