diff --git a/src/main/java/a8k/controler/api_v1/app/A8kProjectCardControler.java b/src/main/java/a8k/controler/api_v1/app/A8kProjectCardControler.java new file mode 100644 index 0000000..1f6710f --- /dev/null +++ b/src/main/java/a8k/controler/api_v1/app/A8kProjectCardControler.java @@ -0,0 +1,64 @@ +package a8k.controler.api_v1.app; + +import a8k.service.app.appdata.ProjIdCardInfoMgrService; +import a8k.service.app.appstate.GStateService; +import a8k.service.dao.type.A8kProjInfoCardBreif; +import a8k.type.appret.ApiV1Ret; +import a8k.type.db.CommonPage; +import a8k.type.exception.AppException; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Tag(name = "反应记录", description = "") +@Slf4j +@Controller +@RequestMapping(value = "/api/v1/app/a8kProjectCardControler/") +@ResponseBody +public class A8kProjectCardControler { + + @Resource + GStateService gstate; + + @Resource + ProjIdCardInfoMgrService projIdCardInfoMgrService; + + @Operation(summary = "读取已挂载的A8k项目信息卡") + @PostMapping("/readMountedCardInfo") + public ApiV1Ret readMountedCardInfo() throws AppException { + return ApiV1Ret.success(projIdCardInfoMgrService.readMountedIDCardInfo()); + } + + @Operation(summary = "保存已挂载的A8k项目信息卡") + @PostMapping("/saveMountedCardInfo") + public ApiV1Ret saveMountedCardInfo() { + projIdCardInfoMgrService.saveMountedProjInfoCard(); + return ApiV1Ret.success(); + } + + @Operation(summary = "删除A8k项目信息卡") + @PostMapping("/delete") + public ApiV1Ret delete(Integer id) { + projIdCardInfoMgrService.delete(id); + return ApiV1Ret.success(); + } + + @Operation(summary = "删除所有A8k项目信息卡") + @PostMapping("/deleteAll") + public ApiV1Ret deleteAll() { + projIdCardInfoMgrService.deleteAll(); + return ApiV1Ret.success(); + } + + @Operation(summary = "获取A8k项目信息卡") + @PostMapping("/get") + public ApiV1Ret> get(Integer pageNum, Integer pageSize) { + return ApiV1Ret.success(projIdCardInfoMgrService.get(pageNum, pageSize)); + } + +} diff --git a/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java b/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java index 49d036e..bf06f7e 100644 --- a/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java +++ b/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java @@ -2,13 +2,13 @@ package a8k.service.app.appdata; import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; -import a8k.extapi_controler.utils.ExtApiFn; import a8k.extapi_controler.utils.ExtApiTab; import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.service.app.appstate.GStateService; import a8k.service.dao.A8kProjIdCardDao; -import a8k.service.dao.type.A8kIdCardBreifInfo; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCardBreif; +import a8k.service.dao.type.A8kProjInfoCard; +import a8k.type.db.CommonPage; import a8k.type.exception.AppException; import jakarta.annotation.Resource; import org.slf4j.Logger; @@ -20,17 +20,6 @@ import java.util.List; @Component @ExtApiTab(cfg = ExtApiTabConfig.ProjIdCardInfoMgrService) public class ProjIdCardInfoMgrService { - static Logger logger = org.slf4j.LoggerFactory.getLogger(ProjIdCardInfoMgrService.class); - - static class ORDER { - static final int readIDCardInfo = 1; - static final int saveIDCardInfo = 2; - static final int getProjectInfoList = 3; - static final int getProjectBreifInfoList = 4; - static final int removeIDCardInfo = 5; - static final int idCardStatus = 6; - } - @Resource GStateService gstate; @@ -41,42 +30,36 @@ public class ProjIdCardInfoMgrService { // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ID卡管理 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - @ExtApiFn(name = "读取当前挂载的ID卡信息", order = ORDER.readIDCardInfo) - public A8kIdCardInfo readMountedIDCardInfo() throws AppException { + public A8kProjInfoCardBreif readMountedIDCardInfo() throws AppException { if (gstate.getMountedIdCardInfo() == null) { throw new AppException(A8kEcode.APPE_A8K_ID_CARD_NOT_MOUNTED); } - return gstate.getMountedIdCardInfo(); + return gstate.getMountedIdCardInfo().toBreif(); } - @ExtApiFn(name = "保存挂载ID卡信息", order = ORDER.saveIDCardInfo) - public void saveIDCardInfo() { + public void saveMountedProjInfoCard() { a8KProjIdCardDao.addIdCard(gstate.getMountedIdCardInfo()); } - @ExtApiFn(name = "获取ID卡信息列表", order = ORDER.getProjectInfoList) - public List getProjectInfoList() { - return a8KProjIdCardDao.getAll(); + public Boolean getMountedProjInfoCardState() { + return gstate.getMountedIdCardInfo() != null; } - @ExtApiFn(name = "获取ID卡信息列表(简要)", order = ORDER.getProjectBreifInfoList) - public List getProjectBreifInfoList() { - List ret = new ArrayList<>(); - for (A8kIdCardInfo idCardInfo : a8KProjIdCardDao.getAll()) { - ret.add(idCardInfo.toBreif()); - } - return ret; + public void delete(int id) { + a8KProjIdCardDao.delete(id); } - @ExtApiFn(name = "删除ID卡信息", order = ORDER.removeIDCardInfo) - public void removeIDCardInfo(String lotId) { - a8KProjIdCardDao.removeByLotId(lotId); + public void deleteAll() { + a8KProjIdCardDao.deleteAll(); } - @ExtApiFn(name = "ID卡状态", order = ORDER.idCardStatus) - public Boolean idCardStatus() { - return gstate.getMountedIdCardInfo() != null; + public CommonPage get(Integer pageNum, Integer pageSize) { + var commonpage = a8KProjIdCardDao.getPageDesc(pageNum, pageSize); + List breifList = new ArrayList<>(); + for (A8kProjInfoCard idCardInfo : commonpage.getList()) { + breifList.add(idCardInfo.toBreif()); + } + return new CommonPage<>(commonpage.getPageNum(), commonpage.getPageSize(), commonpage.getTotalPage(), commonpage.getTotal(), breifList); } - } diff --git a/src/main/java/a8k/service/app/appstate/GStateService.java b/src/main/java/a8k/service/app/appstate/GStateService.java index 706b42c..6cc3236 100644 --- a/src/main/java/a8k/service/app/appstate/GStateService.java +++ b/src/main/java/a8k/service/app/appstate/GStateService.java @@ -1,7 +1,7 @@ package a8k.service.app.appstate; import a8k.constant.AppConstant; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import a8k.type.consumables.ConsumableState; import a8k.service.app.appstate.type.*; import a8k.service.app.appstate.type.state.A8kWorkState; @@ -44,7 +44,7 @@ public class GStateService { SensorState sensorState = new SensorState(); - A8kIdCardInfo mountedIdCardInfo; + A8kProjInfoCard mountedIdCardInfo; //主流程控制状态 public DeviceWorkState deviceWorkState = new DeviceWorkState(); diff --git a/src/main/java/a8k/service/bases/appevent/AppIDCardMountEvent.java b/src/main/java/a8k/service/bases/appevent/AppIDCardMountEvent.java index aaf6433..3cb886d 100644 --- a/src/main/java/a8k/service/bases/appevent/AppIDCardMountEvent.java +++ b/src/main/java/a8k/service/bases/appevent/AppIDCardMountEvent.java @@ -1,13 +1,13 @@ package a8k.service.bases.appevent; -import a8k.service.dao.type.A8kIdCardBreifInfo; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCardBreif; +import a8k.service.dao.type.A8kProjInfoCard; public class AppIDCardMountEvent extends AppEvent { - public A8kIdCardBreifInfo projectInfo; + public A8kProjInfoCardBreif projectInfo; - public AppIDCardMountEvent(A8kIdCardInfo projectInfo) { + public AppIDCardMountEvent(A8kProjInfoCard projectInfo) { super(AppIDCardMountEvent.class.getSimpleName()); this.projectInfo = projectInfo.toBreif(); } diff --git a/src/main/java/a8k/service/dao/A8kProjIdCardDao.java b/src/main/java/a8k/service/dao/A8kProjIdCardDao.java index 439da26..a5e9db8 100644 --- a/src/main/java/a8k/service/dao/A8kProjIdCardDao.java +++ b/src/main/java/a8k/service/dao/A8kProjIdCardDao.java @@ -1,8 +1,7 @@ package a8k.service.dao; -import a8k.SpringBootBeanUtil; import a8k.service.app.appdata.UtilsProjectColorAllocer; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import a8k.utils.ZSqlite; import jakarta.annotation.PostConstruct; @@ -16,7 +15,7 @@ import org.springframework.stereotype.Component; */ @Component @Slf4j -public class A8kProjIdCardDao extends ZSqlite { +public class A8kProjIdCardDao extends ZSqlite { @Resource UtilsProjectColorAllocer colorAllocer; @@ -26,7 +25,7 @@ public class A8kProjIdCardDao extends ZSqlite { @PostConstruct void init() { - init(jdbcTemplate, "zapp_a8k_idcard_info", A8kIdCardInfo.class); + init(jdbcTemplate, "zapp_a8k_idcard_info", A8kProjInfoCard.class); } @@ -34,9 +33,9 @@ public class A8kProjIdCardDao extends ZSqlite { * 添加ID卡信息 * @param idcardinfo idcardinfo */ - public void addIdCard(A8kIdCardInfo idcardinfo) { + public void addIdCard(A8kProjInfoCard idcardinfo) { //查找是否有相同的lotName,如果则更新 - A8kIdCardInfo old = getByLotId(idcardinfo.lotId); + A8kProjInfoCard old = getByLotId(idcardinfo.lotId); if (old != null) { if (old.updateChipVersion >= idcardinfo.updateChipVersion) { log.warn("updateChipVersion is not newer, ignore"); @@ -55,11 +54,11 @@ public class A8kProjIdCardDao extends ZSqlite { update("delete from " + tableName + " where lotId = ?;", lotId); } - public A8kIdCardInfo getByLotId(String lotId) { + public A8kProjInfoCard getByLotId(String lotId) { return queryOne("select * from " + tableName + " where lotId = ?;", lotId); } - public A8kIdCardInfo getByProjIndex(int projIndex) { + public A8kProjInfoCard getByProjIndex(int projIndex) { return queryOne("select * from " + tableName + " where projIndex = ?;", projIndex); } diff --git a/src/main/java/a8k/service/dao/type/A8kIdCardInfo.java b/src/main/java/a8k/service/dao/type/A8kProjInfoCard.java similarity index 92% rename from src/main/java/a8k/service/dao/type/A8kIdCardInfo.java rename to src/main/java/a8k/service/dao/type/A8kProjInfoCard.java index ddf7d8b..f0c7388 100644 --- a/src/main/java/a8k/service/dao/type/A8kIdCardInfo.java +++ b/src/main/java/a8k/service/dao/type/A8kProjInfoCard.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Date; -public class A8kIdCardInfo { +public class A8kProjInfoCard { public int id; public String color;// @@ -58,15 +58,15 @@ public class A8kIdCardInfo { } - public A8kIdCardBreifInfo toBreif() { - A8kIdCardBreifInfo breif = new A8kIdCardBreifInfo(); + public A8kProjInfoCardBreif toBreif() { + A8kProjInfoCardBreif breif = new A8kProjInfoCardBreif(); breif.id = id; breif.color = color; breif.projName = projName; breif.lotId = lotId; - breif.expiryDate = expiryDate; - breif.projIndex = projId; - breif.palteCode = palteCode; + breif.expiryDate = expiryDate; + breif.projId = projId; + breif.palteCode = palteCode; breif.updateChipVersion = updateChipVersion; return breif; } diff --git a/src/main/java/a8k/service/dao/type/A8kIdCardBreifInfo.java b/src/main/java/a8k/service/dao/type/A8kProjInfoCardBreif.java similarity index 81% rename from src/main/java/a8k/service/dao/type/A8kIdCardBreifInfo.java rename to src/main/java/a8k/service/dao/type/A8kProjInfoCardBreif.java index 92587bc..3e34472 100644 --- a/src/main/java/a8k/service/dao/type/A8kIdCardBreifInfo.java +++ b/src/main/java/a8k/service/dao/type/A8kProjInfoCardBreif.java @@ -2,7 +2,7 @@ package a8k.service.dao.type; import java.util.Date; -public class A8kIdCardBreifInfo { +public class A8kProjInfoCardBreif { public int id; public String color;// @@ -11,7 +11,7 @@ public class A8kIdCardBreifInfo { public String lotId; // 批次名称 0x0010,12 public Date expiryDate; // 有效日期 0x001C - public Integer projIndex; // 项目名称代码 0x001F + public Integer projId; // 项目名称代码 0x001F public Integer palteCode; // 板条条码代码 0x0020 public Integer updateChipVersion; // 更新芯片版本号 0x0021 } diff --git a/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java b/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java index 12caa3a..1bb5761 100644 --- a/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java +++ b/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java @@ -13,7 +13,7 @@ import a8k.service.app.appstate.GStateService; import a8k.service.bases.AppEventBusService; import a8k.service.bases.appevent.*; import a8k.service.dao.ReactionRecordDao; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import a8k.service.dao.type.ReactionResultRecord; import a8k.service.dao.type.a8kidcard.zenum.A8kResultUnit; import a8k.service.test.fakeproj.*; @@ -62,7 +62,7 @@ public class VirtualDeviceSimulationTest { @ExtApiFn(name = "模拟插入一张虚拟ID卡", group = "虚拟操作", order = 200) public void insertVirtualIdCard() { - A8kIdCardInfo idCardInfo = new FAKE_PROJ_01().buildA8kIDCardInfo(); + A8kProjInfoCard idCardInfo = new FAKE_PROJ_01().buildA8kIDCardInfo(); virtualDevice.setMountIdCard(idCardInfo); eventBus.pushEvent(new A8kHardwareReport(A8kPacketBuilder.build_event_a8000_idcard_online())); } diff --git a/src/main/java/a8k/service/test/fakeproj/FakeProjInfo.java b/src/main/java/a8k/service/test/fakeproj/FakeProjInfo.java index 3a0b855..f2f52f6 100644 --- a/src/main/java/a8k/service/test/fakeproj/FakeProjInfo.java +++ b/src/main/java/a8k/service/test/fakeproj/FakeProjInfo.java @@ -1,6 +1,6 @@ package a8k.service.test.fakeproj; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import a8k.service.dao.type.ProjOptConfig; import a8k.service.dao.type.A8kProjectInfo; import a8k.service.dao.type.a8kidcard.zenum.A8kOptType; @@ -40,9 +40,9 @@ public class FakeProjInfo { FakeProjInfo() {} - public A8kIdCardInfo buildA8kIDCardInfo() { + public A8kProjInfoCard buildA8kIDCardInfo() { - A8kIdCardInfo idCardInfo = new A8kIdCardInfo(); + A8kProjInfoCard idCardInfo = new A8kProjInfoCard(); idCardInfo.projName = projName; idCardInfo.lotId = lotId; if (!expired) { diff --git a/src/main/java/a8k/service/test/fakeproj/FakeProjInfoFactory.java b/src/main/java/a8k/service/test/fakeproj/FakeProjInfoFactory.java index 8826e30..360bf69 100644 --- a/src/main/java/a8k/service/test/fakeproj/FakeProjInfoFactory.java +++ b/src/main/java/a8k/service/test/fakeproj/FakeProjInfoFactory.java @@ -1,7 +1,7 @@ package a8k.service.test.fakeproj; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import a8k.service.dao.type.ProjOptConfig; import a8k.service.dao.type.A8kProjectInfo; import org.springframework.stereotype.Component; @@ -23,7 +23,7 @@ public class FakeProjInfoFactory { } } - static public A8kIdCardInfo buildIDCardInfo(Class type) { + static public A8kProjInfoCard buildIDCardInfo(Class type) { return newInstance(type).buildA8kIDCardInfo(); } diff --git a/src/main/java/a8k/service/test/state/VirtualDevice.java b/src/main/java/a8k/service/test/state/VirtualDevice.java index d858e6c..ece6c1e 100644 --- a/src/main/java/a8k/service/test/state/VirtualDevice.java +++ b/src/main/java/a8k/service/test/state/VirtualDevice.java @@ -1,7 +1,7 @@ package a8k.service.test.state; import a8k.OS; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import a8k.type.ConsumableOneChRawResult; import a8k.type.ConsumableScanRawResult; import a8k.type.TubeHolderScanResult; @@ -19,7 +19,7 @@ public class VirtualDevice { // 挂载的ID卡 // - A8kIdCardInfo mountIdCard; + A8kProjInfoCard mountIdCard; public Boolean isMountIdCard() { return mountIdCard != null; diff --git a/src/main/java/a8k/utils/A8kIdCardDataParser.java b/src/main/java/a8k/utils/A8kIdCardDataParser.java index 298a492..e0923e0 100644 --- a/src/main/java/a8k/utils/A8kIdCardDataParser.java +++ b/src/main/java/a8k/utils/A8kIdCardDataParser.java @@ -4,7 +4,7 @@ import a8k.opttype.A8kOptX; import a8k.service.dao.type.a8kidcard.zenum.A8kFnType; import a8k.service.dao.type.a8kidcard.zenum.A8kResultUnit; import a8k.service.dao.type.a8kidcard.A8kIdCardFn; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import org.slf4j.Logger; import java.util.Date; @@ -19,8 +19,8 @@ public class A8kIdCardDataParser { } - public A8kIdCardInfo parse() { - A8kIdCardInfo idCardInfo = new A8kIdCardInfo(); + public A8kProjInfoCard parse() { + A8kProjInfoCard idCardInfo = new A8kProjInfoCard(); idCardInfo.projName = parseAsString("idcard.projectName ", 0x0001, 15); idCardInfo.lotId = parseAsString("idcard.lotName ", 0x0010, 12); idCardInfo.expiryDate = parseAsDate("idcard.expiryDate ", 0x001C); diff --git a/src/main/java/a8k/utils/A8kProjCfg.java b/src/main/java/a8k/utils/A8kProjCfg.java index a24222b..2fda78b 100644 --- a/src/main/java/a8k/utils/A8kProjCfg.java +++ b/src/main/java/a8k/utils/A8kProjCfg.java @@ -1,14 +1,14 @@ package a8k.utils; -import a8k.service.dao.type.A8kIdCardInfo; +import a8k.service.dao.type.A8kProjInfoCard; import a8k.service.dao.type.ProjOptConfig; import a8k.service.dao.type.A8kProjectInfo; import java.util.List; public class A8kProjCfg { - public A8kProjectInfo projectInfo; - public A8kIdCardInfo idCardInfo; + public A8kProjectInfo projectInfo; + public A8kProjInfoCard idCardInfo; public List projOptConfigList;