From e241415d58038df1d0f75be3c920d61acedf1a64 Mon Sep 17 00:00:00 2001 From: NiuZiYuan Date: Thu, 17 Apr 2025 11:12:29 +0800 Subject: [PATCH] dev --- dbhelper.jar | Bin 5643441 -> 5643483 bytes .../server/ServerApplication.java | 4 +- .../common/api/annotations/IMField.java | 14 ++ .../common/api/annotations/OMField.java | 15 ++ .../common/api/input/BaseInputModel.java | 48 +++++ .../server/common/api/input/IM1101.java | 30 +++ .../server/common/api/input/IM1301.java | 16 ++ .../server/common/api/input/IM1302.java | 16 ++ .../server/common/api/input/IM1305.java | 16 ++ .../server/common/api/input/IM1306.java | 16 ++ .../server/common/api/input/IM1307.java | 16 ++ .../server/common/api/input/IM1309.java | 16 ++ .../server/common/api/input/IM1312.java | 55 ++++++ .../server/common/api/input/IM1318.java | 45 +++++ .../server/common/api/input/IM1319.java | 43 +++++ .../server/common/api/input/IM2001.java | 42 +++++ .../server/common/api/input/IM2101A.java | 120 ++++++++++++ .../server/common/api/input/IM2102A.java | 126 +++++++++++++ .../server/common/api/input/IM2103.java | 28 +++ .../server/common/api/input/IM2601.java | 20 ++ .../server/common/api/input/IM3201.java | 46 +++++ .../server/common/api/input/IM3202.java | 41 +++++ .../server/common/api/input/IM3501.java | 39 ++++ .../server/common/api/input/IM3502.java | 43 +++++ .../server/common/api/input/IM3503.java | 60 ++++++ .../server/common/api/input/IM3504.java | 52 ++++++ .../server/common/api/input/IM3505.java | 93 ++++++++++ .../server/common/api/input/IM3505T.java | 32 ++++ .../server/common/api/input/IM3506.java | 61 +++++++ .../server/common/api/input/IM3507.java | 21 +++ .../server/common/api/input/IM3508.java | 66 +++++++ .../server/common/api/input/IM3509.java | 65 +++++++ .../server/common/api/input/IM9101.java | 32 ++++ .../common/api/output/BaseOutputModel.java | 35 ++++ .../server/common/api/output/OM1101.java | 83 +++++++++ .../server/common/api/output/OM1301.java | 23 +++ .../server/common/api/output/OM1302.java | 23 +++ .../server/common/api/output/OM1305.java | 23 +++ .../server/common/api/output/OM1306.java | 23 +++ .../server/common/api/output/OM1307.java | 23 +++ .../server/common/api/output/OM1309.java | 23 +++ .../server/common/api/output/OM1312.java | 23 +++ .../server/common/api/output/OM1318.java | 23 +++ .../server/common/api/output/OM1319.java | 23 +++ .../server/common/api/output/OM2001.java | 24 +++ .../server/common/api/output/OM2101A.java | 167 +++++++++++++++++ .../server/common/api/output/OM2102A.java | 171 ++++++++++++++++++ .../server/common/api/output/OM2103.java | 93 ++++++++++ .../server/common/api/output/OM3201.java | 32 ++++ .../server/common/api/output/OM3202.java | 21 +++ .../server/common/api/output/OM9101.java | 22 +++ .../common/api/request/SocialRequest.java | 154 ++++++++++++++++ .../server/common/config/Config.java | 19 +- .../common/config/ControllerAspect.java | 10 +- .../server/common/config/CorsConfig.java | 2 +- .../server/common/config/SpringMvcConfig.java | 4 +- .../common/exception/MessageException.java | 2 +- .../common/exception/VerifyException.java | 2 +- .../common/inteceptor/MvcInterceptor.java | 20 +- .../server/common/util/DateUtil.java | 2 +- .../server/common/util/DictoryUtil.java | 2 +- .../server/common/util/FileUtil.java | 6 +- .../server/common/util/HeadersUtil.java | 2 +- .../server/common/util/HttpUtil.java | 16 +- .../server/common/util/InfoUtil.java | 2 +- .../server/common/util/ParmsUtil.java | 4 +- .../server/common/util/RsaUtil.java | 2 +- .../server/common/util/StringUtil.java | 2 +- .../server/common/vo/Page.java | 2 +- .../server/common/vo/Result.java | 2 +- .../server/controller/BaseController.java | 92 ++++++++++ .../controller/social/SocialController.java | 8 + .../server/entity/common}/CommonConfig.java | 11 +- .../server/entity/common}/CommonLog.java | 23 ++- .../server/entity/inventory/Inventory.java | 77 ++++++++ .../entity/inventory/InventoryApply.java | 50 +++++ .../entity/inventory/InventoryApplyLog.java | 40 ++++ .../entity/inventory/InventoryCheck.java | 47 +++++ .../entity/inventory/InventoryCheckLog.java | 40 ++++ .../entity/inventory/InventoryInit.java | 63 +++++++ .../server/entity/inventory/InventoryLog.java | 86 +++++++++ .../entity/inventory/InventoryPurchase.java | 62 +++++++ .../inventory/InventoryPurchaseLog.java | 56 ++++++ .../entity/inventory/InventorySupplier.java | 52 ++++++ .../clinic/server/entity/item/Item.java | 64 +++++++ .../server/entity/manager}/ManagerUser.java | 12 +- .../entity/social}/SocialDirectory.java | 4 +- .../entity/social/SocialDirectoryLimit.java | 43 +++++ .../entity/social/SocialDirectorySelf.java | 42 +++++ .../entity/social/SocialDirectoryUpinfo.java | 57 ++++++ .../entity/social/SocialDirectoryVersion.java | 47 +++++ .../mapper/common}/CommonConfigMapper.java | 10 +- .../mapper/common}/CommonLogMapper.java | 8 +- .../inventory/InventoryApplyLogMapper.java | 18 ++ .../inventory/InventoryApplyMapper.java | 18 ++ .../inventory/InventoryCheckLogMapper.java | 18 ++ .../inventory/InventoryCheckMapper.java | 18 ++ .../mapper/inventory/InventoryInitMapper.java | 18 ++ .../mapper/inventory/InventoryLogMapper.java | 18 ++ .../mapper/inventory/InventoryMapper.java | 18 ++ .../inventory/InventoryPurchaseLogMapper.java | 18 ++ .../inventory/InventoryPurchaseMapper.java | 18 ++ .../inventory/InventorySupplierMapper.java | 18 ++ .../clinic/server/mapper/item/ItemMapper.java | 18 ++ .../mapper/manager}/ManagerUserMapper.java | 8 +- .../social/SocialDirectoryLimitMapper.java | 18 ++ .../mapper/social}/SocialDirectoryMapper.java | 6 +- .../social/SocialDirectorySelfMapper.java | 18 ++ .../social/SocialDirectoryUpinfoMapper.java | 18 ++ .../social/SocialDirectoryVersionMapper.java | 18 ++ .../server/service/BaseService.java} | 121 +++++-------- .../service/common/CommonConfigService.java | 25 +++ .../server/common/constants/Constants.java | 18 -- .../server/common/util/Download1312.java | 151 ---------------- .../server/common/util/Download1318.java | 151 ---------------- .../server/common/util/Download1319.java | 151 ---------------- .../server/common/util/JoinQueryWrapper.java | 60 ------ .../pharmacy/server/common/util/PdfUtil.java | 50 ----- .../controller/BaseDefaultController.java | 6 - .../base/controller/BaseSocialController.java | 35 ---- .../controller/CommonConfigController.java | 73 -------- .../controller/ManagerUserController.java | 73 -------- .../base/service/ICommonConfigService.java | 16 -- .../base/service/ICommonLogService.java | 18 -- .../base/service/IManagerUserService.java | 16 -- .../service/impl/CommonConfigServiceImpl.java | 20 -- .../service/impl/CommonLogServiceImpl.java | 30 --- .../service/impl/ManagerUserServiceImpl.java | 20 -- .../server/modules/social/BaseService.java | 12 -- .../service/SocialDirectoryService.java | 10 - src/main/resources/application.yml | 2 +- src/main/resources/xml/CommonConfigMapper.xml | 5 + src/main/resources/xml/CommonLogMapper.xml | 5 + .../resources/xml/InventoryApplyLogMapper.xml | 5 + .../resources/xml/InventoryApplyMapper.xml | 5 + .../resources/xml/InventoryCheckLogMapper.xml | 5 + .../resources/xml/InventoryCheckMapper.xml | 5 + .../resources/xml/InventoryInitMapper.xml | 5 + src/main/resources/xml/InventoryLogMapper.xml | 5 + src/main/resources/xml/InventoryMapper.xml | 5 + .../xml/InventoryPurchaseLogMapper.xml | 5 + .../resources/xml/InventoryPurchaseMapper.xml | 5 + .../resources/xml/InventorySupplierMapper.xml | 5 + src/main/resources/xml/ItemMapper.xml | 5 + src/main/resources/xml/ManagerUserMapper.xml | 5 + .../xml/SocialDirectoryLimitMapper.xml | 5 + .../resources/xml/SocialDirectoryMapper.xml | 2 +- .../xml/SocialDirectorySelfMapper.xml | 5 + .../xml/SocialDirectoryUpinfoMapper.xml | 5 + .../xml/SocialDirectoryVersionMapper.xml | 5 + .../clinic/server/ServerApplicationTests.java | 21 +++ .../server/ServerApplicationTests.java | 13 -- 152 files changed, 3819 insertions(+), 1090 deletions(-) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/ServerApplication.java (78%) create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/annotations/IMField.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/annotations/OMField.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/BaseInputModel.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1101.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1301.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1302.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1305.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1306.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1307.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1309.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1312.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1318.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM1319.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2001.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2101A.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2102A.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2103.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM2601.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3201.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3202.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3501.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3502.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3503.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3504.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505T.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3506.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3507.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3508.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM3509.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/input/IM9101.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/BaseOutputModel.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1101.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1301.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1302.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1305.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1306.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1307.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1309.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1312.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1318.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM1319.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM2001.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM2101A.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM2102A.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM2103.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM3201.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM3202.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/output/OM9101.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/config/Config.java (54%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/config/ControllerAspect.java (76%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/config/CorsConfig.java (95%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/config/SpringMvcConfig.java (82%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/exception/MessageException.java (93%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/exception/VerifyException.java (93%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/inteceptor/MvcInterceptor.java (88%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/DateUtil.java (97%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/DictoryUtil.java (98%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/FileUtil.java (95%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/HeadersUtil.java (89%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/HttpUtil.java (97%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/InfoUtil.java (92%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/ParmsUtil.java (96%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/RsaUtil.java (95%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/util/StringUtil.java (80%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/vo/Page.java (90%) rename src/main/java/com/syjiaer/{pharmacy => clinic}/server/common/vo/Result.java (91%) create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/BaseController.java create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/social/SocialController.java rename src/main/java/com/syjiaer/{pharmacy/server/modules/base/entity => clinic/server/entity/common}/CommonConfig.java (80%) rename src/main/java/com/syjiaer/{pharmacy/server/modules/base/entity => clinic/server/entity/common}/CommonLog.java (68%) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApply.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApplyLog.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheck.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheckLog.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryInit.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryLog.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchase.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchaseLog.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/inventory/InventorySupplier.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/item/Item.java rename src/main/java/com/syjiaer/{pharmacy/server/modules/base/entity => clinic/server/entity/manager}/ManagerUser.java (87%) rename src/main/java/com/syjiaer/{pharmacy/server/modules/social/entity => clinic/server/entity/social}/SocialDirectory.java (94%) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryLimit.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectorySelf.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryUpinfo.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryVersion.java rename src/main/java/com/syjiaer/{pharmacy/server/modules/base/mapper => clinic/server/mapper/common}/CommonConfigMapper.java (52%) rename src/main/java/com/syjiaer/{pharmacy/server/modules/base/mapper => clinic/server/mapper/common}/CommonLogMapper.java (51%) create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyLogMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckLogMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryInitMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseLogMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventorySupplierMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/item/ItemMapper.java rename src/main/java/com/syjiaer/{pharmacy/server/modules/base/mapper => clinic/server/mapper/manager}/ManagerUserMapper.java (52%) create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryLimitMapper.java rename src/main/java/com/syjiaer/{pharmacy/server/modules/social/mapper => clinic/server/mapper/social}/SocialDirectoryMapper.java (58%) create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectorySelfMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryUpinfoMapper.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryVersionMapper.java rename src/main/java/com/syjiaer/{pharmacy/server/modules/base/controller/BaseController.java => clinic/server/service/BaseService.java} (51%) create mode 100644 src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/common/constants/Constants.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/common/util/Download1312.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/common/util/Download1318.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/common/util/Download1319.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/common/util/JoinQueryWrapper.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/common/util/PdfUtil.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseDefaultController.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseSocialController.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/CommonConfigController.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/ManagerUserController.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonConfigService.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonLogService.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/service/IManagerUserService.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonConfigServiceImpl.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonLogServiceImpl.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/ManagerUserServiceImpl.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/social/BaseService.java delete mode 100644 src/main/java/com/syjiaer/pharmacy/server/modules/social/service/SocialDirectoryService.java create mode 100644 src/main/resources/xml/CommonConfigMapper.xml create mode 100644 src/main/resources/xml/CommonLogMapper.xml create mode 100644 src/main/resources/xml/InventoryApplyLogMapper.xml create mode 100644 src/main/resources/xml/InventoryApplyMapper.xml create mode 100644 src/main/resources/xml/InventoryCheckLogMapper.xml create mode 100644 src/main/resources/xml/InventoryCheckMapper.xml create mode 100644 src/main/resources/xml/InventoryInitMapper.xml create mode 100644 src/main/resources/xml/InventoryLogMapper.xml create mode 100644 src/main/resources/xml/InventoryMapper.xml create mode 100644 src/main/resources/xml/InventoryPurchaseLogMapper.xml create mode 100644 src/main/resources/xml/InventoryPurchaseMapper.xml create mode 100644 src/main/resources/xml/InventorySupplierMapper.xml create mode 100644 src/main/resources/xml/ItemMapper.xml create mode 100644 src/main/resources/xml/ManagerUserMapper.xml create mode 100644 src/main/resources/xml/SocialDirectoryLimitMapper.xml create mode 100644 src/main/resources/xml/SocialDirectorySelfMapper.xml create mode 100644 src/main/resources/xml/SocialDirectoryUpinfoMapper.xml create mode 100644 src/main/resources/xml/SocialDirectoryVersionMapper.xml create mode 100644 src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java delete mode 100644 src/test/java/com/syjiaer/pharmacy/server/ServerApplicationTests.java diff --git a/dbhelper.jar b/dbhelper.jar index e4be32be3049ee929b0d90ec4bb31d16ede6caef..63c13167385e7648bdd14c9b08bf19f48a8335e5 100644 GIT binary patch delta 77919 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 delta 77901 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 D7*ny5 diff --git a/src/main/java/com/syjiaer/pharmacy/server/ServerApplication.java b/src/main/java/com/syjiaer/clinic/server/ServerApplication.java similarity index 78% rename from src/main/java/com/syjiaer/pharmacy/server/ServerApplication.java rename to src/main/java/com/syjiaer/clinic/server/ServerApplication.java index 263cb4e..eccb04a 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/ServerApplication.java +++ b/src/main/java/com/syjiaer/clinic/server/ServerApplication.java @@ -1,11 +1,11 @@ -package com.syjiaer.pharmacy.server; +package com.syjiaer.clinic.server; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -@MapperScan("com.syjiaer.pharmacy.server.modules.*.mapper") +@MapperScan("com.syjiaer.clinic.server.mapper.*") public class ServerApplication { public static void main(String[] args) { diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/annotations/IMField.java b/src/main/java/com/syjiaer/clinic/server/common/api/annotations/IMField.java new file mode 100644 index 0000000..98cf61b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/annotations/IMField.java @@ -0,0 +1,14 @@ +package com.syjiaer.clinic.server.common.api.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface IMField { + String name() default "字段不能为空"; + boolean required() default false; + String key() default ""; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/annotations/OMField.java b/src/main/java/com/syjiaer/clinic/server/common/api/annotations/OMField.java new file mode 100644 index 0000000..e823c7a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/annotations/OMField.java @@ -0,0 +1,15 @@ +package com.syjiaer.clinic.server.common.api.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface OMField { + String name() default "字段不能为空"; + String key() default ""; + + boolean required() default false; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/BaseInputModel.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/BaseInputModel.java new file mode 100644 index 0000000..e0eb442 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/BaseInputModel.java @@ -0,0 +1,48 @@ +package com.syjiaer.clinic.server.common.api.input; + + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import com.syjiaer.clinic.server.common.exception.MessageException; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +public abstract class BaseInputModel { + public Map buildToMap() { + Map map = new HashMap<>(); + + // 遍历所有字段(包含父类) + Class clazz = this.getClass(); + while (clazz != null) { + for (Field field : clazz.getDeclaredFields()) { + field.setAccessible(true); + try { + Object value = field.get(this); // 检查RequiredField注解 + String mapKey = null; + if (field.isAnnotationPresent(IMField.class)) { + + IMField annotation = field.getAnnotation(IMField.class); + mapKey = annotation.key(); + if (annotation.required()) { + if (value == null || value.toString().isEmpty()) { + throw new MessageException("[" + annotation.key() + ":"+annotation.name()+"]不能为空"); + } + } + + } + + if (value != null && mapKey != null && !value.toString().isEmpty()){ + map.put(mapKey, field.get(this)); + } + + + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + clazz = clazz.getSuperclass(); + } + return map; + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1101.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1101.java new file mode 100644 index 0000000..058f978 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1101.java @@ -0,0 +1,30 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1101 extends BaseInputModel { + @IMField(key="mdtrt_cert_type",name = "就诊凭证类型",required = true) + private String mdtrtCertType; + @IMField(key="mdtrt_cert_no",name = "就诊凭证编号",required = true) + private String mdtrtCertNo; + @IMField(key="card_sn",name = "卡识别码",required = false) + private String cardSn; + @IMField(key="begntime",name = "开始时间",required = false) + private String begntime; + @IMField(key="psn_cert_type",name = "人员证件类型",required = false) + private String psnCertType; + @IMField(key="certno",name = "证件号码",required = true) + private String certno; + @IMField(key="psn_name",name = "人员姓名",required = true) + private String psnName; + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1301.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1301.java new file mode 100644 index 0000000..68d801e --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1301.java @@ -0,0 +1,16 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1301 extends BaseInputModel{ + @IMField(key="ver",name = "版本号",required = true) + private String ver; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1302.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1302.java new file mode 100644 index 0000000..4c3164b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1302.java @@ -0,0 +1,16 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1302 extends BaseInputModel{ + @IMField(key="ver",name = "版本号",required = true) + private String ver; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1305.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1305.java new file mode 100644 index 0000000..b0d66ba --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1305.java @@ -0,0 +1,16 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1305 extends BaseInputModel{ + @IMField(key="ver",name = "版本号",required = true) + private String ver; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1306.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1306.java new file mode 100644 index 0000000..438537c --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1306.java @@ -0,0 +1,16 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1306 extends BaseInputModel{ + @IMField(key="ver",name = "版本号",required = true) + private String ver; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1307.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1307.java new file mode 100644 index 0000000..20ba85b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1307.java @@ -0,0 +1,16 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1307 extends BaseInputModel{ + @IMField(key="ver",name = "版本号",required = true) + private String ver; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1309.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1309.java new file mode 100644 index 0000000..bec6ffe --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1309.java @@ -0,0 +1,16 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1309 extends BaseInputModel{ + @IMField(key="ver",name = "版本号",required = true) + private String ver; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1312.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1312.java new file mode 100644 index 0000000..4eae99c --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1312.java @@ -0,0 +1,55 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1312 extends BaseInputModel{ + @IMField(key = "query_date", name = "查询时间点") + private LocalDate queryDate; + @IMField(key = "hilist_code", name = "医保目录编码") + private String hilistCode; + @IMField(key = "insu_admdvs", name = "参保机构医保区划") + private String insuAdmdvs; + @IMField(key = "begndate", name = "开始日期") + private LocalDate begndate; + @IMField(key = "hilist_name", name = "医保目录名称") + private String hilistName; + @IMField(key = "wubi", name = "五笔助记码") + private String wubi; + @IMField(key = "pinyin", name = "拼音助记码") + private String pinyin; + @IMField(key = "med_chrgitm_type", name = "医疗收费项目类别") + private String medChrgitmType; + @IMField(key = "chrgitm_lv", name = "收费项目等级") + private String chrgitmLv; + @IMField(key = "lmt_used_flag", name = "限制使用标志") + private String lmtUsedFlag; + @IMField(key = "list_type", name = "目录类别") + private String listType; + @IMField(key = "med_use_flag", name = "医疗使用标志") + private String medUseFlag; + @IMField(key = "matn_used_flag", name = "生育使用标志") + private String matnUsedFlag; + @IMField(key = "hilist_use_type", name = "医保目录使用类别") + private String hilistUseType; + @IMField(key = "lmt_cpnd_type", name = "限复方使用类型") + private String lmtCpndType; + @IMField(key = "vali_flag", name = "有效标志") + private String valiFlag; + @IMField(key = "updt_time", name = "更新时间", required = true) + private LocalDateTime updtTime; + @IMField(key = "page_num", name = "当前页数", required = true) + private int pageNum; + @IMField(key = "page_size", name = "本页数据量", required = true) + private int pageSize; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1318.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1318.java new file mode 100644 index 0000000..20b7023 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1318.java @@ -0,0 +1,45 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1318 extends BaseInputModel{ + @IMField (key = "query_date", name = "查询时间点") + private LocalDate queryDate; + @IMField(key = "hilist_code", name = "医保目录编码") + private String hilistCode; + @IMField(key = "hilist_lmtpric_type", name = "医保目录限价类型") + private String hilistLmtpricType; + @IMField(key = "overlmt_dspo_way", name = "医保目录超限处理方式") + private String overlmtDspoWay; + @IMField(key = "insu_admdvs", name = "参保机构医保区划") + private String insuAdmdvs; + @IMField(key = "begndate", name = "开始日期") + private LocalDate begndate; + @IMField(key = "enddate", name = "结束日期") + private LocalDate enddate; + @IMField(key = "vali_flag", name = "有效标志") + private String valiFlag; + @IMField(key = "rid", name = "唯一记录号") + private String rid; + @IMField(key = "tabname", name = "表名") + private String tabname; + @IMField(key = "poolarea_no", name = "统筹区") + private String poolareaNo; + @IMField(key = "updt_time", name = "更新时间", required = true) + private LocalDateTime updtTime; + @IMField(key = "page_num", name = "当前页数", required = true) + private int pageNum; + @IMField(key = "page_size", name = "本页数据量", required = true) + private int pageSize; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1319.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1319.java new file mode 100644 index 0000000..836c1f2 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM1319.java @@ -0,0 +1,43 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM1319 extends BaseInputModel{ + @IMField (key = "query_date", name = "查询时间点") + private LocalDate queryDate; + @IMField(key = "hilist_code", name = "医保目录编码") + private String hilistCode; + @IMField(key = "hilist_lmtpric_type", name = "医保目录限价类型") + private String hilistLmtpricType; + @IMField(key = "overlmt_dspo_way", name = "医保目录超限处理方式") + private String overlmtDspoWay; + @IMField(key = "insu_admdvs", name = "参保机构医保区划") + private String insuAdmdvs; + @IMField(key = "begndate", name = "开始日期") + private LocalDate begndate; + @IMField(key = "enddate", name = "结束日期") + private LocalDate enddate; + @IMField(key = "vali_flag", name = "有效标志") + private String valiFlag; + @IMField(key = "selfpay_prop_psn_type", name = "人员类别") + private String selfpayPropPsnType; + @IMField(key = "selfpay_prop_type", name = "比例类别") + private String selfpayPropType; + @IMField(key = "updt_time", name = "更新时间", required = true) + private LocalDateTime updtTime; + @IMField(key = "page_num", name = "当前页数", required = true) + private int pageNum; + @IMField(key = "page_size", name = "本页数据量", required = true) + private int pageSize; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2001.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2001.java new file mode 100644 index 0000000..238fbc0 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2001.java @@ -0,0 +1,42 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2001 extends BaseInputModel{ + @IMField(key="psn_no",name = "人员编号",required = true) + private String psnNo; + @IMField(key="insutype",name = "险种类型",required = true) + private String insutype; + @IMField(key="fixmedins_code",name = "定点医药机构编号",required = true) + private String fixmedinsCode; + @IMField(key="med_type",name = "医疗类别",required = true) + private String medType; + @IMField(key="begntime",name = "开始时间",required = true) + private LocalDateTime begntime; + @IMField(key="endtime",name = "结束时间") + private LocalDateTime endtime; + @IMField(key="dise_codg",name = "病种编码") + private String diseCodg; + @IMField(key="dise_name",name = "病种名称") + private String diseName; + @IMField(key="oprn_oprt_code",name = "手术操作代码") + private String oprnOprtCode; + @IMField(key="oprn_oprt_name",name = "手术操作名称") + private String oprnOprtName; + @IMField(key="matn_type",name = "生育类别") + private String matnType; + @IMField(key="birctrl_type",name = "计划生育手术类别") + private String birctrlType; + @IMField(key="exp_content",name = "字段扩展") + private String expContent; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2101A.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2101A.java new file mode 100644 index 0000000..9924f25 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2101A.java @@ -0,0 +1,120 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2101A extends BaseInputModel{ + @IMField(key = "druginfo", name = "购药信息", required = true) + private Druginfo druginfo; + @IMField(key = "drugdetail", name = "购药明细", required = true) + private List drugdetail; + + + @Getter + @Setter + @ToString + public static class Druginfo{ + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psn_no; + @IMField(key = "mdtrt_cert_type", name = "就诊凭证类型", required = true) + private String mdtrt_cert_type; + @IMField(key = "mdtrt_cert_no", name = "就诊凭证编号", required = true) + private String mdtrt_cert_no; + @IMField(key = "begntime", name = "开始时间", required = true) + private LocalDateTime begntime; + @IMField(key = "medfee_sumamt", name = "医疗费总额", required = true) + private BigDecimal medfee_sumamt; + @IMField(key = "insutype", name = "险种类型", required = true) + private String insutype; + @IMField(key = "dise_codg", name = "病种编码") + private String dise_codg; + @IMField(key = "dise_name", name = "病种名称") + private String dise_name; + @IMField(key = "acct_used_flag", name = "个人账户使用标志", required = true) + private String acct_used_flag; + @IMField(key = "med_type", name = "医疗类别", required = true) + private String med_type; + @IMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @IMField(key = "overlmt_selfpay", name = "超限价自费费用") + private BigDecimal overlmt_selfpay; + @IMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @IMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @IMField(key = "exp_content", name = "字段扩展") + private InfoExpContent exp_content; + } + @Getter + @Setter + @ToString + public static class InfoExpContent{ + @IMField(key = "deve_flag", name = "开发商标志") + private String deve_flag; + @IMField(key = "l_fixmedins_code", name = "开方定点医药机构编号") + private String l_fixmedins_code; + @IMField(key = "l_mdtrt_id", name = "开方就诊id") + private String l_mdtrt_id; + @IMField(key = "online_flag", name = "线上标志") + private String online_flag; + + } + @Getter + @Setter + @ToString + public static class Drugdetail { + @IMField(key = "feedetl_sn", name = "费用明细流水号", required = true) + private String feedetl_sn; + @IMField(key = "rxno", name = "处方号") + private String rxno; + @IMField(key = "rx_circ_flag", name = "外购处方标志", required = true) + private String rx_circ_flag; + @IMField(key = "fee_ocur_time", name = "费用发生时间", required = true) + private LocalDateTime fee_ocur_time; + @IMField(key = "med_list_codg", name = "医疗目录编码", required = true) + private String med_list_codg; + @IMField(key = "medins_list_codg", name = "医药机构目录编码", required = true) + private String medins_list_codg; + @IMField(key = "det_item_fee_sumamt", name = "明细项目费用总额", required = true) + private BigDecimal det_item_fee_sumamt; + @IMField(key = "cnt", name = "数量", required = true) + private BigDecimal cnt; + @IMField(key = "pric", name = "单价", required = true) + private BigDecimal pric; + @IMField(key = "sin_dos_dscr", name = "单次剂量描述") + private String sin_dos_dscr; + @IMField(key = "used_frqu_dscr", name = "使用频次描述") + private String used_frqu_dscr; + @IMField(key = "prd_days", name = "周期天数") + private BigDecimal prd_days; + @IMField(key = "medc_way_dscr", name = "用药途径描述") + private String medc_way_dscr; + @IMField(key = "bilg_dr_codg", name = "开单医生编码") + private String bilg_dr_codg; + @IMField(key = "bilg_dr_name", name = "开单医师姓名") + private String bilg_dr_name; + @IMField(key = "tcmdrug_used_way", name = "中药使用方式") + private String tcmdrug_used_way; + @IMField(key = "exp_content", name = "字段扩展") + private DetailExpContent exp_content; + } + @Getter + @Setter + @ToString + public static class DetailExpContent{ + @IMField(key = "pacunt", name = "包装单位") + private String pacunt; + + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2102A.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2102A.java new file mode 100644 index 0000000..8a06537 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2102A.java @@ -0,0 +1,126 @@ +package com.syjiaer.clinic.server.common.api.input; +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2102A extends BaseInputModel{ + @IMField(key = "druginfo", name = "购药信息", required = true) + public Druginfo druginfo; + @IMField(key = "drugdetail", name = "购药明细", required = true) + public List drugdetail; + + @Getter + @Setter + public static class Druginfo { + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psn_no; + @IMField(key = "mdtrt_cert_type", name = "就诊凭证类型", required = true) + private String mdtrt_cert_type; + @IMField(key = "mdtrt_cert_no", name = "就诊凭证编号", required = true) + private String mdtrt_cert_no; + @IMField(key = "begntime", name = "开始时间", required = true) + private LocalDateTime begntime; + @IMField(key = "medfee_sumamt", name = "医疗费总额", required = true) + private BigDecimal medfee_sumamt; + @IMField(key = "invono", name = "发票号") + private String invono; + @IMField(key = "insutype", name = "险种类型", required = true) + private String insutype; + @IMField(key = "dise_codg", name = "病种编码") + private String dise_codg; + @IMField(key = "dise_name", name = "病种名称") + private String dise_name; + @IMField(key = "acct_used_flag", name = "个人账户使用标志", required = true) + private String acct_used_flag; + @IMField(key = "med_type", name = "医疗类别", required = true) + private String med_type; + @IMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @IMField(key = "overlmt_selfpay", name = "超限价自费费用") + private BigDecimal overlmt_selfpay; + @IMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @IMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @IMField(key = "exp_content", name = "字段扩展") + private InfoExpContent exp_content; + } + @Getter + @Setter + public static class InfoExpContent { + @IMField(key = "deve_flag", name = "开发商标志") + private String deve_flag; + @IMField(key = "l_fixmedins_code", name = "开方定点医药机构编号") + private String l_fixmedins_code; + @IMField(key = "l_mdtrt_id", name = "开方就诊id") + private String l_mdtrt_id; + @IMField(key = "online_flag", name = "线上标志") + private String online_flag; + } + @Getter + @Setter + public static class Drugdetail { + @IMField(key = "feedetl_sn", name = "费用明细流水号", required = true) + private String feedetl_sn; + @IMField(key = "rxno", name = "处方号") + private String rxno; + @IMField(key = "rx_circ_flag", name = "外购处方标志", required = true) + private String rx_circ_flag; + @IMField(key = "fee_ocur_time", name = "费用发生时间", required = true) + private LocalDateTime fee_ocur_time; + @IMField(key = "med_list_codg", name = "医疗目录编码", required = true) + private String med_list_codg; + @IMField(key = "medins_list_codg", name = "医药机构目录编码", required = true) + private String medins_list_codg; + @IMField(key = "det_item_fee_sumamt", name = "明细项目费用总额", required = true) + private BigDecimal det_item_fee_sumamt; + @IMField(key = "cnt", name = "数量", required = true) + private BigDecimal cnt; + @IMField(key = "pric", name = "单价", required = true) + private BigDecimal pric; + @IMField(key = "sin_dos_dscr", name = "单次剂量描述") + private String sin_dos_dscr; + @IMField(key = "used_frqu_dscr", name = "使用频次描述") + private String used_frqu_dscr; + @IMField(key = "prd_days", name = "周期天数") + private BigDecimal prd_days; + @IMField(key = "medc_way_dscr", name = "用药途径描述") + private String medc_way_dscr; + @IMField(key = "bilg_dr_codg", name = "开单医生编码") + private String bilg_dr_codg; + @IMField(key = "bilg_dr_name", name = "开单医师姓名") + private String bilg_dr_name; + @IMField(key = "tcmdrug_used_way", name = "中药使用方式") + private String tcmdrug_used_way; + @IMField(key = "exp_content", name = "字段扩展") + private DetailExpContent exp_content; + @IMField(key = "drug_trac_info", name = "追溯码节点信息") + private List drug_trac_info; + } + @Getter + @Setter + public static class DetailExpContent { + @IMField(key = "pacunt", name = "包装单位") + private String pacunt; + } + @Getter + @Setter + public static class DrugTracInfo { + @IMField(key = "feedetl_sn", name = "费用明细流水号", required = true) + private String feedetl_sn; + @IMField(key = "drug_trac_codg", name = "药品追溯码", required = true) + private String drug_trac_codg; + @IMField(key = "trdn_flag", name = "拆零标志", required = true) + private String trdn_flag; + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2103.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2103.java new file mode 100644 index 0000000..09bef8d --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2103.java @@ -0,0 +1,28 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2103 extends BaseInputModel { + @IMField(key = "data", name = "节点标识", required = true) + private Data data; + @Getter + @Setter + public static class Data { + @IMField(key = "setl_id", name = "结算ID", required = true) + private String setl_id; + @IMField(key = "mdtrt_id", name = "就诊ID", required = true) + private String mdtrt_id; + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psn_no; + @IMField(key = "exp_content", name = "字段扩展") + private String exp_content; + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2601.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2601.java new file mode 100644 index 0000000..da86fb7 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2601.java @@ -0,0 +1,20 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM2601 extends BaseInputModel { + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psnNo; + @IMField(key = "omsgid", name = "原发送方报文ID", required = true) + private String omsgid; + @IMField(key = "oinfno", name = "原交易编号", required = true) + private String oinfno; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3201.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3201.java new file mode 100644 index 0000000..ccda8e2 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3201.java @@ -0,0 +1,46 @@ +package com.syjiaer.clinic.server.common.api.input; +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3201 extends BaseInputModel{ + @IMField(key = "data", name = "输入节点", required = true) + public Data data; + + @Getter + @Setter + public static class Data { + @IMField(key = "insutype", name = "险种", required = true) + private String insutype; + @IMField(key = "clr_type", name = "清算类别", required = true) + private String clr_type; + @IMField(key = "setl_optins", name = "结算经办机构", required = true) + private String setl_optins; + @IMField(key = "stmt_begndate", name = "对账开始日期", required = true) + private String stmt_begndate; + @IMField(key = "stmt_enddate", name = "对账结束日期", required = true) + private String stmt_enddate; + @IMField(key = "medfee_sumamt", name = "医疗费总额", required = true) + private BigDecimal medfee_sumamt; + @IMField(key = "fund_pay_sumamt", name = "基金支付总额", required = true) + private BigDecimal fund_pay_sumamt; + @IMField(key = "acct_pay", name = "个人账户支付金额", required = true) + private BigDecimal acct_pay; + @IMField(key = "fixmedins_setl_cnt", name = "定点医药机构结算笔数", required = true) + private BigDecimal fixmedins_setl_cnt; + @IMField(key = "refd_setl_flag", name = "退费结算标志") + private String refd_setl_flag; + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3202.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3202.java new file mode 100644 index 0000000..1e15128 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3202.java @@ -0,0 +1,41 @@ +package com.syjiaer.clinic.server.common.api.input; +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3202 extends BaseInputModel{ + @IMField(key = "data", name = "输入节点", required = true) + public Data data; + + @Getter + @Setter + public static class Data { + @IMField(key = "setl_optins", name = "结算经办机构", required = true) + private String setl_optins; + @IMField(key = "file_qury_no", name = "文件查询号", required = true) + private String file_qury_no; + @IMField(key = "stmt_begndate", name = "对账开始日期", required = true) + private String stmt_begndate; + @IMField(key = "stmt_enddate", name = "对账结束日期", required = true) + private String stmt_enddate; + @IMField(key = "medfee_sumamt", name = "医疗费总额", required = true) + private BigDecimal medfee_sumamt; + @IMField(key = "fund_pay_sumamt", name = "基金支付总额", required = true) + private BigDecimal fund_pay_sumamt; + @IMField(key = "cash_payamt", name = "现金支付总额", required = true) + private BigDecimal cash_payamt; + @IMField(key = "fixmedins_setl_cnt", name = "定点医药机构结算笔数", required = true) + private BigDecimal fixmedins_setl_cnt; + @IMField(key = "refd_setl_flag", name = "退费结算标志") + private String refd_setl_flag; + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3501.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3501.java new file mode 100644 index 0000000..3946a26 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3501.java @@ -0,0 +1,39 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3501 extends BaseInputModel{ + @IMField(key="med_list_codg",name = "医疗目录编码",required = true) + private String medListCodg; + @IMField(key="fixmedins_hilist_id",name = "定点医药机构目录编号",required = true) + private String fixmedinsHilistId; + @IMField(key="fixmedins_hilist_name",name = "定点医药机构目录名称",required = true) + private String fixmedinsHilistName; + @IMField(key="rx_flag",name = "处方药标志",required = true) + private String rxFlag; + @IMField(key="invdate",name = "盘存日期",required = true) + private LocalDate invdate; + @IMField(key="inv_cnt",name = "库存数量",required = true) + private BigDecimal invCnt; + @IMField(key="manu_lotnum",name = "生产批号",required = false) + private String manuLotnum; + @IMField(key="fixmedins_bchno",name = "定点医药机构批次流水号",required = true) + private String fixmedinsBchno; + @IMField(key="manu_date",name = "生产日期",required = true) + private LocalDate manuDate; + @IMField(key="expy_end",name = "有效期止",required = true) + private LocalDate expyEnd; + @IMField(key="memo",name = "备注",required = false) + private String memo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3502.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3502.java new file mode 100644 index 0000000..788c183 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3502.java @@ -0,0 +1,43 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3502 extends BaseInputModel{ +//初始化入库 + + @IMField(key="med_list_codg",name = "医疗目录编码",required = true) + private String medListCodg; + @IMField(key="inv_chg_type",name = "库存变更类型",required = true) + private String invChgType; + @IMField(key="fixmedins_hilist_id",name = "定点医药机构目录编号",required = true) + private String fixmedinsHilistId; + @IMField(key="fixmedins_hilist_name",name = "定点医药机构目录名称",required = true) + private String fixmedinsHilistName; + @IMField(key="fixmedins_bchno",name = "定点医药机构批次流水号",required = true) + private String fixmedinsBchno; + @IMField(key="pric",name = "单价",required = true) + private BigDecimal pric; + @IMField(key="cnt",name = "数量",required = true) + private BigDecimal cnt; + @IMField(key="rx_flag",name = "处方药标志",required = true) + private String rxFlag; + @IMField(key="inv_chg_time",name = "库存变更时间",required = true) + private LocalDateTime invChgTime; + @IMField(key="inv_chg_opter_name",name = "库存变更经办人姓名",required = false) + private String invChgOpterName; + @IMField(key="memo",name = "备注",required = false) + private String memo; + @IMField(key="trdn_flag",name = "拆零标志",required = true) + private String trdnFlag; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3503.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3503.java new file mode 100644 index 0000000..8d68218 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3503.java @@ -0,0 +1,60 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3503 extends BaseInputModel{ + @IMField(key="med_list_codg",name = "医疗目录编码",required = true) + private String medListCodg; + @IMField(key="fixmedins_hilist_id",name = "定点医药机构目录编号",required = true) + private String fixmedinsHilistId; + @IMField(key="fixmedins_hilist_name",name = "定点医药机构目录名称",required = true) + private String fixmedinsHilistName; + @IMField(key="dynt_no",name = "随货单号",required = false) + private String dyntNo; + @IMField(key="fixmedins_bchno",name = "定点医药机构批次流水号",required = true) + private String fixmedinsBchno; + @IMField(key="spler_name",name = "供应商名称",required = true) + private String splerName; + @IMField(key="spler_pmtno",name = "供应商许可证号",required = false) + private String splerPmtno; + @IMField(key="manu_lotnum",name = "生产批号",required = true) + private String manuLotnum; + @IMField(key="prodentp_name",name = "生产厂家名称",required = true) + private String prodentpName; + @IMField(key="aprvno",name = "批准文号",required = true) + private String aprvno; + @IMField(key="manu_date",name = "生产日期",required = true) + private LocalDate manuDate; + @IMField(key="expy_end",name = "有效期止",required = true) + private LocalDate expyEnd; + @IMField(key="finl_trns_pric",name = "最终成交单价",required = false) + private BigDecimal finlTrnsPric; + @IMField(key="purc_retn_cnt",name = "采购/退货数量",required = true) + private BigDecimal purcRetnCnt; + @IMField(key="purc_invo_codg",name = "采购发票编码",required = true) + private String purcInvoCodg; + @IMField(key="purc_invo_no",name = "采购发票号",required = false) + private String purcInvoNo; + @IMField(key="rx_flag",name = "处方药标志",required = true) + private String rxFlag; + @IMField(key="purc_retn_stoin_time",name = "采购/退货入库时间",required = true) + private LocalDateTime purcRetnStoinTime; + @IMField(key="purc_retn_opter_name",name = "采购/退货经办人姓名",required = true) + private String purcRetnOpterName; + @IMField(key="prod_geay_flag",name = "商品赠送标志",required = false) + private String prodGeayFlag; + @IMField(key="memo",name = "备注",required = false) + private String memo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3504.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3504.java new file mode 100644 index 0000000..4e652d1 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3504.java @@ -0,0 +1,52 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3504 extends BaseInputModel{ + @IMField(key = "med_list_codg", name = "医疗目录编码", required = true) + private String medListCodg; + @IMField(key = "fixmedins_hilist_id", name = "定点医药机构目录编号", required = true) + private String fixmedinsHilistId; + @IMField(key = "fixmedins_hilist_name", name = "定点医药机构目录名称", required = true) + private String fixmedinsHilistName; + @IMField(key = "fixmedins_bchno", name = "定点医药机构批次流水号", required = true) + private String fixmedinsBchno; + @IMField(key = "spler_name", name = "供应商名称", required = true) + private String splerName; + @IMField(key = "spler_pmtno", name = "供应商许可证号", required = false) + private String splerPmtno; + @IMField(key = "manu_date", name = "生产日期", required = true) + private LocalDate manuDate; + @IMField(key = "expy_end", name = "有效期止", required = true) + private LocalDate expyEnd; + @IMField(key = "finl_trns_pric", name = "最终成交单价", required = false) + private BigDecimal finlTrnsPric; + @IMField(key = "purc_retn_cnt", name = "采购/退货数量", required = true) + private BigDecimal purcRetnCnt; + @IMField(key = "purc_invo_codg", name = "采购发票编码", required = false) + private String purcInvoCodg; + @IMField(key = "purc_invo_no", name = "采购发票号", required = true) + private String purcInvoNo; + @IMField(key = "rx_flag", name = "处方药标志", required = true) + private String rxFlag; + @IMField(key = "purc_retn_stoin_time", name = "采购/退货入库时间", required = true) + private LocalDateTime purcRetnStoinTime; + @IMField(key = "purc_retn_opter_name", name = "采购/退货经办人姓名", required = true) + private String purcRetnOpterName; + @IMField(key = "memo", name = "备注", required = false) + private String memo; + @IMField(key = "medins_prod_purc_no", name = "商品采购流水号", required = false) + private String medinsProdPurcNo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505.java new file mode 100644 index 0000000..f4b3da1 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505.java @@ -0,0 +1,93 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3505 extends BaseInputModel{ + @IMField(key="med_list_codg",name = "医疗目录编码",required = true) + private String medListCodg; + @IMField(key="fixmedins_hilist_id",name = "定点医药机构目录编号",required = true) + private String fixmedinsHilistId; + @IMField(key="fixmedins_hilist_name",name = "定点医药机构目录名称",required = true) + private String fixmedinsHilistName; + @IMField(key="fixmedins_bchno",name = "定点医药机构批次流水号",required = true) + private String fixmedinsBchno; + @IMField(key="prsc_dr_cert_type",name = "开方医师证件类型") + private String prscDrCertType; + @IMField(key="prsc_dr_certno",name = "开方医师证件号码") + private String prscDrCertno; + @IMField(key="prsc_dr_name",name = "开方医师姓名",required = true) + private String prscDrName; + @IMField(key="phar_cert_type",name = "药师证件类型") + private String pharCertType; + @IMField(key="phar_certno",name = "药师证件号码") + private String pharCertno; + @IMField(key="phar_name",name = "药师姓名",required = true) + private String pharName; + @IMField(key="phar_prac_cert_no",name = "药师执业资格证号",required = true) + private String pharPracCertNo; + @IMField(key="hi_feesetl_type",name = "医保费用结算类型") + private String hiFeesetlType; + @IMField(key="setl_id",name = "结算ID") + private String setlId; + @IMField(key="mdtrt_sn",name = "就医流水号",required = true) + private String mdtrtSn; + @IMField(key="psn_no",name = "人员编号") + private String psnNo; + @IMField(key="psn_cert_type",name = "人员证件类型") + private String psnCertType; + @IMField(key="certno",name = "证件号码") + private String certno; + @IMField(key="psn_name",name = "人员姓名") + private String psnName; + @IMField(key="manu_lotnum",name = "生产批号",required = true) + private String manuLotnum; + @IMField(key="manu_date",name = "生产日期",required = true) + private LocalDate manuDate; + @IMField(key="expy_end",name = "有效期止") + private LocalDate expyEnd; + @IMField(key="rx_flag",name = "处方药标志",required = true) + private String rxFlag; + @IMField(key="trdn_flag",name = "拆零标志",required = true) + private String trdnFlag; + @IMField(key="finl_trns_pric",name = "最终成交单价") + private BigDecimal finlTrnsPric; + @IMField(key="rxno",name = "处方号") + private String rxno; + @IMField(key="rx_circ_flag",name = "外购处方标志") + private String rxCircFlag; + @IMField(key="rtal_docno",name = "零售单据号",required = true) + private String rtalDocno; + @IMField(key="stoout_no",name = "销售出库单据号") + private String stooutNo; + @IMField(key="bchno",name = "批次号") + private String bchno; + @IMField(key="drug_trac_codg",name = "药品追溯码") + private String drugTracCodg; + @IMField(key="drug_prod_barc",name = "药品条形码") + private String drugProdBarc; + @IMField(key="shelf_posi",name = "货架位") + private String shelfPosi; + @IMField(key="sel_retn_cnt",name = "销售/退货数量",required = true) + private BigDecimal selRetnCnt; + @IMField(key="sel_retn_time",name = "销售/退货时间",required = true) + private LocalDate selRetnTime; + @IMField(key="sel_retn_opter_name",name = "销售/退货经办人姓名",required = true) + private String selRetnOpterName; + @IMField(key="memo",name = "备注") + private String memo; + @IMField(key="mdtrt_setl_type",name = "就诊结算类型",required = false) + private String mdtrtSetlType; + @IMField(key="drugtracinfo",name = "溯源码节点信息") + private String drugtracinfo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505T.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505T.java new file mode 100644 index 0000000..ffb08ff --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3505T.java @@ -0,0 +1,32 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.LinkedList; +import java.util.List; + + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3505T extends BaseInputModel{ + @IMField(key = "drug_trac_codg", name = "药品追溯码", required = false) + private String drugTracCodg; + + public IM3505T(String codgs) { + this.drugTracCodg = codgs; + } + + public static List build(String ...drugTracCodgs) { + List im3505Ts = new LinkedList<>(); + for (String codgs : drugTracCodgs){ + im3505Ts.add(new IM3505T(codgs)); + } + return im3505Ts; + } +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3506.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3506.java new file mode 100644 index 0000000..16c799f --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3506.java @@ -0,0 +1,61 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3506 extends BaseInputModel{ + @IMField(key="med_list_codg",name = "医疗目录编码",required = true) + private String medListCodg; + @IMField(key="fixmedins_hilist_id",name = "定点医药机构目录编号",required = true) + private String fixmedinsHilistId; + @IMField(key="fixmedins_hilist_name",name = "定点医药机构目录名称",required = true) + private String fixmedinsHilistName; + @IMField(key="fixmedins_bchno",name = "定点医药机构批次流水号",required = true) + private String fixmedinsBchno; + @IMField(key="setl_id",name = "结算ID") + private String setlId; + @IMField(key="psn_no",name = "人员编号") + private String psnNo; + @IMField(key="psn_cert_type",name = "人员证件类型",required = true) + private String psnCertType; + @IMField(key="certno",name = "证件号码") + private String certNo; + @IMField(key="psn_name",name = "人员姓名") + private String psnName; + @IMField(key="manu_lotnum",name = "生产批号",required = true) + private String manuLotnum; + @IMField(key="manu_date",name = "生产日期",required = true) + private LocalDate manuDate; + @IMField(key="expy_end",name = "有效期止") + private LocalDate expyEnd; + @IMField(key="rx_flag",name = "处方药标志",required = true) + private String rxFlag; + @IMField(key="trdn_flag",name = "拆零标志",required = true) + private String trdnFlag; + @IMField(key="finl_trns_pric",name = "最终成交单价") + private BigDecimal finlTrnsPric; + @IMField(key="sel_retn_cnt",name = "销售/退货数量",required = true) + private BigDecimal selRetnCnt; + @IMField(key="sel_retn_time",name = "销售/退货时间",required = true) + private LocalDate selRetnTime; + @IMField(key="sel_retn_opter_name",name = "销售/退货经办人姓名",required = true) + private String selRetnOpterName; + @IMField(key="memo",name = "备注") + private String memo; + @IMField(key="medins_prod_sel_no",name = "商品销售流水号") + private String medinsProdSelNo; + @IMField(key="mdtrt_sn",name = "就医流水号",required = true) + private String mdtrtSn; + @IMField(key="drugtracinfo",name = "溯源码节点信息") + private String drugtracinfo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3507.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3507.java new file mode 100644 index 0000000..0009a57 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3507.java @@ -0,0 +1,21 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3507 extends BaseInputModel{ + + + @IMField(key = "fixmedins_bchno", name = "定点医药机构批次流水号", required = true) + private String fixmedinsBchno; + @IMField(key = "inv_data_type", name = "进销存数据类型", required = true) + private String invDataType; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3508.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3508.java new file mode 100644 index 0000000..7f0ed4b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3508.java @@ -0,0 +1,66 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3508 extends BaseInputModel{ + @IMField(key="fixmedins_code",name = "定点医药机构编号",required = true) + private String fixmedinsCode; + @IMField(key="medins_list_codg",name = "医药机构目录编码",required = true) + private String medinsListCodg; + @IMField(key="fixmedins_bchno",name = "定点医药机构批次流水号") + private String fixmedinsBchno; + @IMField(key="begndate",name = "开始日期",required = true) + private LocalDate begndate; + @IMField(key="enddate",name = "结束日期",required = true) + private LocalDate enddate; + @IMField(key="medins_prod_inv_no",name = "定点医药机构商品库存流水号") + private String medinsProdInvNo; + @IMField(key="med_list_codg",name = "医疗目录编码") + private String medListCodg; + @IMField(key="medins_list_name",name = "医药机构目录名称") + private String medinsListName; + @IMField(key="rx_flag",name = "处方药标志",required = true) + private String rxFlag; + @IMField(key="list_sp_item_flag",name = "目录特项标志") + private String listSpItemFlag; + @IMField(key="trdn_flag",name = "拆零标志") + private String trdnFlag; + @IMField(key="invdate",name = "库存日期") + private LocalDate invdate; + @IMField(key="manu_lotnum",name = "生产批号") + private String manuLotnum; + @IMField(key="manu_date",name = "生产日期") + private LocalDate manuDate; + @IMField(key="expy_end",name = "有效期止") + private LocalDate expyEnd; + @IMField(key="memo",name = "备注") + private String memo; + @IMField(key="vali_flag",name = "有效标志") + private String valiFlag; + @IMField(key="rid",name = "数据唯一记录号") + private String rid; + @IMField(key="crter_id",name = "创建人ID") + private String crterId; + @IMField(key="crter_name",name = "创建人姓名") + private String crterName; + @IMField(key="crte_optins_no",name = "创建机构编号") + private String crteOptinsNo; + @IMField(key="opter_id",name = "经办人ID") + private String opterId; + @IMField(key="opter_name",name = "经办人姓名") + private String opterName; + @IMField(key="optins_no",name = "经办机构编号") + private String optinsNo; + @IMField(key="poolarea_no",name = "统筹区编号") + private String poolareaNo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3509.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3509.java new file mode 100644 index 0000000..ed6fb3c --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3509.java @@ -0,0 +1,65 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +import java.util.Date; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM3509 extends BaseInputModel{ + @IMField(key="fixmedins_code",name = "定点医药机构编号",required = true) + private String fixmedinsCode; + @IMField(key="medins_list_codg",name = "医药机构目录编码",required = true) + private String medinsListCodg; + @IMField(key="fixmedins_bchno",name = "定点医药机构批次流水号") + private String fixmedinsBchno; + @IMField(key="begndate",name = "开始日期",required = true) + private Date begndate; + @IMField(key="enddate",name = "结束日期",required = true) + private Date enddate; + @IMField(key="medins_prod_inv_chg_no",name = "定点医药机构商品库存变更流水号") + private String medinsProdInvChgNo; + @IMField(key="med_list_codg",name = "医疗目录编码") + private String medListCodg; + @IMField(key="inv_chg_type",name = "库存变更类型") + private String invChgType; + @IMField(key="medins_list_name",name = "医药机构目录名称") + private String medinsListName; + @IMField(key="rx_flag",name = "处方药标志") + private String rxFlag; + @IMField(key="list_sp_item_flag",name = "目录特项标志") + private String listSpItemFlag; + @IMField(key="trdn_flag",name = "拆零标志") + private String trdnFlag; + @IMField(key="inv_chg_time",name = "库存变更时间") + private LocalDate invChgTime; + @IMField(key="inv_chg_opter_name",name = "库存变更经办人姓名") + private String invChgOpterName; + @IMField(key="memo",name = "备注") + private String memo; + @IMField(key="vali_flag",name = "有效标志") + private String valiFlag; + @IMField(key="rid",name = "数据唯一记录号") + private String rid; + @IMField(key="crter_id",name = "创建人ID") + private String crterId; + @IMField(key="crter_name",name = "创建人姓名") + private String crterName; + @IMField(key="crte_optins_no",name = "创建机构编号") + private String crteOptinsNo; + @IMField(key="opter_id",name = "经办人ID") + private String opterId; + @IMField(key="opter_name",name = "经办人姓名") + private String opterName; + @IMField(key="optins_no",name = "经办机构编号") + private String optinsNo; + @IMField(key="poolarea_no",name = "统筹区编号") + private String poolareaNo; +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM9101.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM9101.java new file mode 100644 index 0000000..0d253a5 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM9101.java @@ -0,0 +1,32 @@ +package com.syjiaer.clinic.server.common.api.input; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class IM9101 extends BaseInputModel{ + @IMField(key = "fsUploadIn", name = "请求节点", required = true) + private FsUploadIn fsUploadIn; + @Getter + @Setter + public static class FsUploadIn{ + @IMField(key = "in", name = "文件数据", required = true) + private byte[] in; + @IMField(key = "filename", name = "文件名", required = true) + private String filename; + @IMField(key = "fixmedins_code", name = "医药机构编号", required = true) + private String fixmedins_code; + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/BaseOutputModel.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/BaseOutputModel.java new file mode 100644 index 0000000..79d7564 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/BaseOutputModel.java @@ -0,0 +1,35 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.alibaba.fastjson2.JSONObject; +import com.syjiaer.clinic.server.common.api.annotations.OMField; + +import java.lang.reflect.Field; + +public abstract class BaseOutputModel { + + public void makeFromJson(JSONObject jsonObject) { + processFields(this, jsonObject); + } + + private void processFields(Object obj, JSONObject jsonObject) { + Class clazz = obj.getClass(); + while (clazz != null) { + for (Field field : clazz.getDeclaredFields()) { + field.setAccessible(true); + try { + // 处理普通字段 + if (field.isAnnotationPresent(OMField.class)) { + OMField annotation = field.getAnnotation(OMField.class); + String mapKey = annotation.key(); + if (jsonObject.get(mapKey) != null) { + field.set(obj, jsonObject.get(mapKey)); + } + } + } catch (Exception e) { + throw new RuntimeException("Failed to process field: " + field.getName(), e); + } + } + clazz = clazz.getSuperclass(); + } + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1101.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1101.java new file mode 100644 index 0000000..6719b71 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1101.java @@ -0,0 +1,83 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1101 extends BaseOutputModel{ + //social_user表id + private Integer id; + @OMField(key="baseinfo",name = "基本信息") + private Baseinfo baseinfo; + @OMField(key="insuinfo",name = "参保信息") + private List insuinfo; + @OMField(key="idetinfo",name = "身份信息") + private List iDetinfo; + @Getter + @Setter + public class Baseinfo{ + @OMField(key="psn_no",name = "人员编号") + private String psn_no; + @OMField(key="psn_cert_type",name = "人员证件类型") + private String psn_cert_type; + @OMField(key="certno",name = "证件号码") + private String certno; + @OMField(key="psn_name",name = "人员姓名") + private String psn_name; + @OMField(key="gend",name = "性别") + private String gend; + @OMField(key="naty",name = "民族") + private String naty; + @OMField(key="brdy",name = "出生日期") + private LocalDate brdy; + @OMField(key="age",name = "年龄") + private BigDecimal age; + } + @Getter + @Setter + public class Insuinfo{ + @OMField(key = "balc", name = "余额") + private BigDecimal balc; + @OMField(key = "insutype", name = "险种类型") + private String insutype; + @OMField(key = "psn_type", name = "人员类别") + private String psn_type; + @OMField(key = "psn_insu_stas", name = "人员参保状态") + private String psn_insu_stas; + @OMField(key = "psn_insu_date", name = "个人参保日期") + private LocalDate psn_insu_date; + @OMField(key = "paus_insu_date", name = "暂停参保日期") + private LocalDate paus_insu_date; + @OMField(key = "cvlserv_flag", name = "公务员标志") + private String cvlserv_flag; + @OMField(key = "insuplc_admdvs", name = "参保地医保区划") + private String insuplc_admdvs; + @OMField(key = "emp_name", name = "单位名称") + private String emp_name; + } + @Getter + @Setter + public static class Idetinfo{ + @OMField(key = "psn_idet_type", name = "人员身份类别") + private String psn_idet_type; + @OMField(key = "psn_type_lv", name = "人员类别等级") + private String psn_type_lv; + @OMField(key = "memo", name = "备注") + private String memo; + @OMField(key = "begntime", name = "开始时间") + private LocalDateTime begntime; + @OMField(key = "endtime", name = "结束时间") + private LocalDateTime endtime; + } +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1301.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1301.java new file mode 100644 index 0000000..1097302 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1301.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1301 extends BaseOutputModel{ + @OMField(key="file_qury_no",name = "文件查询号") + private String fileQuryNo; + @OMField(key="filename",name = "文件查询号") + private String filename; + @OMField(key="dld_end_time",name = "下载截止日期") + private LocalDate dldEndTime; + @OMField(key="data_cnt",name = "数据量") + private int dataCnt; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1302.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1302.java new file mode 100644 index 0000000..36996a3 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1302.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1302 extends BaseOutputModel{ + @OMField(key="file_qury_no",name = "文件查询号") + private String fileQuryNo; + @OMField(key="filename",name = "文件查询号") + private String filename; + @OMField(key="dld_end_time",name = "下载截止日期") + private LocalDate dldEndTime; + @OMField(key="data_cnt",name = "数据量") + private int dataCnt; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1305.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1305.java new file mode 100644 index 0000000..797b198 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1305.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1305 extends BaseOutputModel{ + @OMField(key="file_qury_no",name = "文件查询号") + private String fileQuryNo; + @OMField(key="filename",name = "文件查询号") + private String filename; + @OMField(key="dld_end_time",name = "下载截止日期") + private LocalDate dldEndTime; + @OMField(key="data_cnt",name = "数据量") + private int dataCnt; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1306.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1306.java new file mode 100644 index 0000000..f9d6c9f --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1306.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1306 extends BaseOutputModel{ + @OMField(key="file_qury_no",name = "文件查询号") + private String fileQuryNo; + @OMField(key="filename",name = "文件查询号") + private String filename; + @OMField(key="dld_end_time",name = "下载截止日期") + private LocalDate dldEndTime; + @OMField(key="data_cnt",name = "数据量") + private int dataCnt; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1307.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1307.java new file mode 100644 index 0000000..da8295a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1307.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1307 extends BaseOutputModel{ + @OMField(key="file_qury_no",name = "文件查询号") + private String fileQuryNo; + @OMField(key="filename",name = "文件查询号") + private String filename; + @OMField(key="dld_end_time",name = "下载截止日期") + private LocalDate dldEndTime; + @OMField(key="data_cnt",name = "数据量") + private int dataCnt; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1309.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1309.java new file mode 100644 index 0000000..7ad3acb --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1309.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1309 extends BaseOutputModel{ + @OMField(key="file_qury_no",name = "文件查询号") + private String fileQuryNo; + @OMField(key="filename",name = "文件查询号") + private String filename; + @OMField(key="dld_end_time",name = "下载截止日期") + private LocalDate dldEndTime; + @OMField(key="data_cnt",name = "数据量") + private int dataCnt; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1312.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1312.java new file mode 100644 index 0000000..4d1c3e2 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1312.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.List; +import java.util.Map; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1312 extends BaseOutputModel{ + @OMField(key = "pages", name = "当前页") + private int pages; + @OMField(key = "recordCounts", name = "总页数") + private int recordCounts; + @OMField(key = "data", name = "数据") // 添加注解 + private List> data; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1318.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1318.java new file mode 100644 index 0000000..774c7ab --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1318.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.List; +import java.util.Map; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1318 extends BaseOutputModel{ + @OMField(key = "pages", name = "当前页") + private int pages; + @OMField(key = "recordCounts", name = "总页数") + private int recordCounts; + @OMField(key = "data", name = "数据") // 添加注解 + private List> data; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1319.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1319.java new file mode 100644 index 0000000..56727b9 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM1319.java @@ -0,0 +1,23 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.List; +import java.util.Map; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM1319 extends BaseOutputModel{ + @OMField(key = "pages", name = "当前页") + private int pages; + @OMField(key = "recordCounts", name = "总页数") + private int recordCounts; + @OMField(key = "data", name = "数据") // 添加注解 + private List> data; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2001.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2001.java new file mode 100644 index 0000000..7cd05b7 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2001.java @@ -0,0 +1,24 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.IMField; + +import java.time.LocalDate; + +public class OM2001 extends BaseOutputModel{ + @IMField(key = "psn_no", name = "人员编号", required = true) + private String psnNo; + @IMField(key = "trt_chk_type", name = "待遇检查类型", required = true) + private String trtChkType; + @IMField(key = "fund_pay_type", name = "基金支付类型", required = true) + private String fundPayType; + @IMField(key = "trt_enjymnt_flag", name = "基金款项待遇享受标志", required = true) + private String trtEnjymntFlag; + @IMField(key = "begndate", name = "开始日期", required = true) + private LocalDate begndate; + @IMField(key = "enddate", name = "结束日期") + private LocalDate enddate; + @IMField(key = "trt_chk_rslt", name = "待遇检查结果") + private String trtChkRslt; + @IMField(key = "exp_content", name = "字段扩展") + private String expContent; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2101A.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2101A.java new file mode 100644 index 0000000..4749f14 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2101A.java @@ -0,0 +1,167 @@ +package com.syjiaer.clinic.server.common.api.output; +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM2101A extends BaseOutputModel{ + @OMField(key="setlinfo",name = "结算信息") + private OM2101A.Setlinfo setlinfo; + @OMField(key="setldetail",name = "结算基金分项信息") + private List setldetail; + @OMField(key="detlcutinfo",name = "明细分割信息") + private List detlcutinfo; + + @Getter + @Setter + @ToString + public static class Setlinfo{ + @OMField(key = "mdtrt_id", name = "就诊ID") + private String mdtrt_id; + @OMField(key = "psn_no", name = "人员编号") + private String psn_no; + @OMField(key = "psn_name", name = "人员姓名") + private String psn_name; + @OMField(key = "psn_cert_type", name = "人员证件类型") + private String psn_cert_type; + @OMField(key = "certno", name = "证件号码") + private String certno; + @OMField(key = "gend", name = "性别") + private String gend; + @OMField(key = "naty", name = "民族") + private String naty; + @OMField(key = "brdy", name = "出生日期") + private LocalDate brdy; + @OMField(key = "age", name = "年龄") + private BigDecimal age; + @OMField(key = "insutype", name = "险种类型") + private String insutype; + @OMField(key = "psn_type", name = "人员类别") + private String psn_type; + @OMField(key = "cvlserv_flag", name = "公务员标志") + private String cvlserv_flag; + @OMField(key = "setl_time", name = "结算时间") + private LocalDateTime setl_time; + @OMField(key = "mdtrt_cert_type", name = "就诊凭证类型") + private String mdtrt_cert_type; + @OMField(key = "med_type", name = "医疗类别") + private String med_type; + @OMField(key = "medfee_sumamt", name = "医疗费总额") + private BigDecimal medfee_sumamt; + @OMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @OMField(key = "overlmt_selfpay", name = "超限价自费费用") + private BigDecimal overlmt_selfpay; + @OMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "act_pay_dedc", name = "实际支付起付线") + private BigDecimal act_pay_dedc; + @OMField(key = "hifp_pay", name = "基本医疗保险统筹基金支出") + private BigDecimal hifp_pay; + @OMField(key = "pool_prop_selfpay", name = "基本医疗保险统筹基金支付比例") + private BigDecimal pool_prop_selfpay; + @OMField(key = "cvlserv_pay", name = "公务员医疗补助资金支出") + private BigDecimal cvlserv_pay; + @OMField(key = "hifes_pay", name = "企业补充医疗保险基金支出") + private BigDecimal hifes_pay; + @OMField(key = "hifmi_pay", name = "居民大病保险资金支出") + private BigDecimal hifmi_pay; + @OMField(key = "hifob_pay", name = "职工大额医疗费用补助基金支出") + private BigDecimal hifob_pay; + @OMField(key = "maf_pay", name = "医疗救助基金支出") + private BigDecimal maf_pay; + @OMField(key = "oth_pay", name = "其他支出") + private BigDecimal oth_pay; + @OMField(key = "fund_pay_sumamt", name = "基金支付总额") + private BigDecimal fund_pay_sumamt; + @OMField(key = "psn_part_amt", name = "个人负担总金额") + private BigDecimal psn_part_amt; + @OMField(key = "acct_pay", name = "个人账户支出") + private BigDecimal acct_pay; + @OMField(key = "psn_cash_pay", name = "个人现金支出") + private BigDecimal psn_cash_pay; + @OMField(key = "balc", name = "余额") + private BigDecimal balc; + @OMField(key = "acct_mulaid_pay", name = "其中个人账户共济支付金额") + private BigDecimal acct_mulaid_pay; + @OMField(key = "medins_setl_id", name = "医药机构结算ID") + private String medins_setl_id; + @OMField(key = "clr_optins", name = "清算经办机构") + private String clr_optins; + @OMField(key = "clr_way", name = "清算方式") + private String clr_way; + @OMField(key = "clr_type", name = "清算类别") + private String clr_type; + @OMField(key = "exp_content", name = "字段扩展") + private String exp_content; + } + @Getter + @Setter + @ToString + public static class Setldetail{ + @OMField(key = "fund_pay_type", name = "基金支付类型") + private String fund_pay_type; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "crt_payb_lmt_amt", name = "本次可支付限额金额") + private BigDecimal crt_payb_lmt_amt; + @OMField(key = "fund_payamt", name = "基金支付金额") + private BigDecimal fund_payamt; + @OMField(key = "fund_pay_type_name", name = "基金支付类型名称") + private String fund_pay_type_name; + @OMField(key = "setl_proc_info", name = "结算过程信息") + private String setl_proc_info; + } + @Getter + @Setter + @ToString + public static class Detlcutinfo{ + @OMField(key = "feedetl_sn", name = "费用明细流水号") + private String feedetl_sn; + @OMField(key = "det_item_fee_sumamt", name = "明细项目费用总额") + private BigDecimal det_item_fee_sumamt; + @OMField(key = "cnt", name = "数量") + private BigDecimal cnt; + @OMField(key = "pric", name = "单价") + private BigDecimal pric; + @OMField(key = "pric_uplmt_amt", name = "定价上限金额") + private BigDecimal pric_uplmt_amt; + @OMField(key = "selfpay_prop", name = "自付比例") + private BigDecimal selfpay_prop; + @OMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @OMField(key = "overlmt_amt", name = "超限价金额") + private BigDecimal overlmt_amt; + @OMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "chrgitm_lv", name = "收费项目等级") + private String chrgitm_lv; + @OMField(key = "med_chrgitm_type", name = "医疗收费项目类别") + private String med_chrgitm_type; + @OMField(key = "bas_medn_flag", name = "基本药物标志") + private String bas_medn_flag; + @OMField(key = "hi_nego_drug_flag", name = "医保谈判药品标志") + private String hi_nego_drug_flag; + @OMField(key = "chld_medc_flag", name = "儿童用药标志") + private String chld_medc_flag; + @OMField(key = "list_sp_item_flag", name = "目录特项标志") + private String list_sp_item_flag; + @OMField(key = "drt_reim_flag", name = "直报标志") + private String drt_reim_flag; + @OMField(key = "memo", name = "备注") + private String memo; + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2102A.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2102A.java new file mode 100644 index 0000000..5161775 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2102A.java @@ -0,0 +1,171 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM2102A extends BaseOutputModel { + + @OMField(key="setlinfo",name = "结算信息") + private Setlinfo setlinfo; + @OMField(key="setldetail",name = "结算基金分项信息") + private List setldetail; + @OMField(key="detlcutinfo",name = "明细分割信息") + private List detlcutinfo; + @Getter + @Setter + public static class Setlinfo { + @OMField(key = "setl_id", name = "结算ID") + private String setl_id; + @OMField(key = "mdtrt_id", name = "就诊ID") + private String mdtrt_id; + @OMField(key = "psn_no", name = "人员编号") + private String psn_no; + @OMField(key = "psn_name", name = "人员姓名") + private String psn_name; + @OMField(key = "psn_cert_type", name = "人员证件类型") + private String psn_cert_type; + @OMField(key = "certno", name = "证件号码") + private String certno; + @OMField(key = "gend", name = "性别") + private String gend; + @OMField(key = "naty", name = "民族") + private String naty; + @OMField(key = "brdy", name = "出生日期") + private LocalDate brdy; + @OMField(key = "age", name = "年龄") + private BigDecimal age; + @OMField(key = "insutype", name = "险种类型") + private String insutype; + @OMField(key = "psn_type", name = "人员类别") + private String psn_type; + @OMField(key = "cvlserv_flag", name = "公务员标志") + private String cvlserv_flag; + @OMField(key = "setl_time", name = "结算时间") + private LocalDateTime setl_time; + @OMField(key = "mdtrt_cert_type", name = "就诊凭证类型") + private String mdtrt_cert_type; + @OMField(key = "med_type", name = "医疗类别") + private String med_type; + @OMField(key = "medfee_sumamt", name = "医疗费总额") + private BigDecimal medfee_sumamt; + @OMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @OMField(key = "overlmt_selfpay", name = "超限价自费费用") + private BigDecimal overlmt_selfpay; + @OMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "act_pay_dedc", name = "实际支付起付线") + private BigDecimal act_pay_dedc; + @OMField(key = "hifp_pay", name = "基本医疗保险统筹基金支出") + private BigDecimal hifp_pay; + @OMField(key = "pool_prop_selfpay", name = "基本医疗保险统筹基金支付比例") + private BigDecimal pool_prop_selfpay; + @OMField(key = "cvlserv_pay", name = "公务员医疗补助资金支出") + private BigDecimal cvlserv_pay; + @OMField(key = "hifes_pay", name = "企业补充医疗保险基金支出") + private BigDecimal hifes_pay; + @OMField(key = "hifmi_pay", name = "居民大病保险资金支出") + private BigDecimal hifmi_pay; + @OMField(key = "hifob_pay", name = "职工大额医疗费用补助基金支出") + private BigDecimal hifob_pay; + @OMField(key = "maf_pay", name = "医疗救助基金支出") + private BigDecimal maf_pay; + @OMField(key = "oth_pay", name = "其他支出") + private BigDecimal oth_pay; + @OMField(key = "fund_pay_sumamt", name = "基金支付总额") + private BigDecimal fund_pay_sumamt; + @OMField(key = "psn_part_amt", name = "个人负担总金额") + private BigDecimal psn_part_amt; + @OMField(key = "acct_pay", name = "个人账户支出") + private BigDecimal acct_pay; + @OMField(key = "psn_cash_pay", name = "个人现金支出") + private BigDecimal psn_cash_pay; + @OMField(key = "balc", name = "余额") + private BigDecimal balc; + @OMField(key = "acct_mulaid_pay", name = "其中个人账户共济支付金额") + private BigDecimal acct_mulaid_pay; + @OMField(key = "medins_setl_id", name = "医药机构结算ID") + private String medins_setl_id; + @OMField(key = "clr_optins", name = "清算经办机构") + private String clr_optins; + @OMField(key = "clr_way", name = "清算方式") + private String clr_way; + @OMField(key = "clr_type", name = "清算类别") + private String clr_type; + @OMField(key = "exp_content", name = "字段扩展") + private String exp_content; + } + + @Getter + @Setter + public static class Setldetail { + @OMField(key = "fund_pay_type", name = "基金支付类型") + private String fund_pay_type; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "crt_payb_lmt_amt", name = "本次可支付限额金额") + private BigDecimal crt_payb_lmt_amt; + @OMField(key = "fund_payamt", name = "基金支付金额") + private BigDecimal fund_payamt; + @OMField(key = "fund_pay_type_name", name = "基金支付类型名称") + private String fund_pay_type_name; + @OMField(key = "setl_proc_info", name = "结算过程信息") + private String setl_proc_info; + } + + @Getter + @Setter + public static class Detlcutinfo { + @OMField(key = "feedetl_sn", name = "费用明细流水号") + private String feedetl_sn; + @OMField(key = "det_item_fee_sumamt", name = "明细项目费用总额") + private BigDecimal det_item_fee_sumamt; + @OMField(key = "cnt", name = "数量") + private BigDecimal cnt; + @OMField(key = "pric", name = "单价") + private BigDecimal pric; + @OMField(key = "pric_uplmt_amt", name = "定价上限金额") + private BigDecimal pric_uplmt_amt; + @OMField(key = "selfpay_prop", name = "自付比例") + private BigDecimal selfpay_prop; + @OMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @OMField(key = "overlmt_amt", name = "超限价金额") + private BigDecimal overlmt_amt; + @OMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "chrgitm_lv", name = "收费项目等级") + private String chrgitm_lv; + @OMField(key = "med_chrgitm_type", name = "医疗收费项目类别") + private String med_chrgitm_type; + @OMField(key = "bas_medn_flag", name = "基本药物标志") + private String bas_medn_flag; + @OMField(key = "hi_nego_drug_flag", name = "医保谈判药品标志") + private String hi_nego_drug_flag; + @OMField(key = "chld_medc_flag", name = "儿童用药标志") + private String chld_medc_flag; + @OMField(key = "list_sp_item_flag", name = "目录特项标志") + private String list_sp_item_flag; + @OMField(key = "drt_reim_flag", name = "直报标志") + private String drt_reim_flag; + @OMField(key = "memo", name = "备注") + private String memo; + } + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2103.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2103.java new file mode 100644 index 0000000..8b0b64b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM2103.java @@ -0,0 +1,93 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM2103 extends BaseOutputModel{ + @OMField(key="setlinfo",name = "结算信息") + private Setlinfo setlinfo; + @OMField(key="setldetail",name = "结算基金分项信息") + private List setldetail; + + + public static class Setlinfo{ + @OMField(key = "mdtrt_id", name = "就诊ID") + private String mdtrt_id; + @OMField(key = "setl_id", name = "结算ID") + private String setl_id; + @OMField(key = "clr_optins", name = "清算经办机构") + private String clr_optins; + @OMField(key = "medfee_sumamt", name = "医疗费总额") + private BigDecimal medfee_sumamt; + @OMField(key = "setl_time", name = "结算时间") + private LocalDateTime setl_time; + @OMField(key = "fulamt_ownpay_amt", name = "全自费金额") + private BigDecimal fulamt_ownpay_amt; + @OMField(key = "overlmt_selfpay", name = "超限价自费费用") + private BigDecimal overlmt_selfpay; + @OMField(key = "preselfpay_amt", name = "先行自付金额") + private BigDecimal preselfpay_amt; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "act_pay_dedc", name = "实际支付起付线") + private BigDecimal act_pay_dedc; + @OMField(key = "hifp_pay", name = "基本医疗保险统筹基金支出") + private BigDecimal hifp_pay; + @OMField(key = "pool_prop_selfpay", name = "基本医疗保险统筹基金支付比例") + private BigDecimal pool_prop_selfpay; + @OMField(key = "cvlserv_pay", name = "公务员医疗补助资金支出") + private BigDecimal cvlserv_pay; + @OMField(key = "hifes_pay", name = "企业补充医疗保险基金支出") + private BigDecimal hifes_pay; + @OMField(key = "hifmi_pay", name = "居民大病保险资金支出") + private BigDecimal hifmi_pay; + @OMField(key = "hifob_pay", name = "职工大额医疗费用补助基金支出") + private BigDecimal hifob_pay; + @OMField(key = "maf_pay", name = "医疗救助基金支出") + private BigDecimal maf_pay; + @OMField(key = "oth_pay", name = "其他支出") + private BigDecimal oth_pay; + @OMField(key = "fund_pay_sumamt", name = "基金支付总额") + private BigDecimal fund_pay_sumamt; + @OMField(key = "psn_pay", name = "个人支付金额") + private BigDecimal psn_pay; + @OMField(key = "acct_pay", name = "个人账户支出") + private BigDecimal acct_pay; + @OMField(key = "cash_payamt", name = "现金支付金额") + private BigDecimal cash_payamt; + @OMField(key = "balc", name = "余额") + private BigDecimal balc; + @OMField(key = "acct_mulaid_pay", name = "其中个人账户共济支付金额") + private BigDecimal acct_mulaid_pay; + @OMField(key = "medins_setl_id", name = "医药机构结算ID") + private String medins_setl_id; + @OMField(key = "exp_content", name = "字段扩展") + private String exp_content; + } + public static class Setldetail{ + @OMField(key = "fund_pay_type", name = "基金支付类型") + private String fund_pay_type; + @OMField(key = "inscp_scp_amt", name = "符合政策范围金额") + private BigDecimal inscp_scp_amt; + @OMField(key = "crt_payb_lmt_amt", name = "本次可支付限额金额") + private BigDecimal crt_payb_lmt_amt; + @OMField(key = "fund_payamt", name = "基金支付金额") + private BigDecimal fund_payamt; + @OMField(key = "fund_pay_type_name", name = "基金支付类型名称") + private String fund_pay_type_name; + @OMField(key = "setl_proc_info", name = "结算过程信息") + private String setl_proc_info; + } +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM3201.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM3201.java new file mode 100644 index 0000000..b8d83a7 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM3201.java @@ -0,0 +1,32 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM3201 extends BaseOutputModel{ + @OMField(key = "stmtinfo", name = "对账结果") + private Stmtinfo stmtinfo; + @Getter + @Setter + public static class Stmtinfo{ + @OMField(key = "setl_optins", name = "结算经办机构") + private String setl_optins; + @OMField(key = "stmt_rslt", name = "对账结果") + private String stmt_rslt; + @OMField(key = "stmt_rslt_dscr", name = "对账结果说明") + private String stmt_rslt_dscr; + } + +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM3202.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM3202.java new file mode 100644 index 0000000..4ba0b52 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM3202.java @@ -0,0 +1,21 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM3202 extends BaseOutputModel{ + @OMField(key = "file_qury_no", name = "文件查询号") + private String file_qury_no; + @OMField(key = "filename", name = "文件名") + private String filename; + @OMField(key = "dld_endtime", name = "截止时间") + private String dld_endtime; + +} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/output/OM9101.java b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM9101.java new file mode 100644 index 0000000..350cea8 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/output/OM9101.java @@ -0,0 +1,22 @@ +package com.syjiaer.clinic.server.common.api.output; + +import com.syjiaer.clinic.server.common.api.annotations.OMField; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OM9101 extends BaseOutputModel{ + @OMField(key = "file_qury_no", name = "文件查询号") + private String file_qury_no; + @OMField(key = "filename", name = "文件名") + private String filename; + @OMField(key = "dld_endtime", name = "截止时间") + private String dld_endtime; +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java b/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java new file mode 100644 index 0000000..b8489fd --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java @@ -0,0 +1,154 @@ +package com.syjiaer.clinic.server.common.api.request; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.syjiaer.clinic.server.common.api.input.*; +import com.syjiaer.clinic.server.common.api.output.*; +import com.syjiaer.clinic.server.common.util.HttpUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +public class SocialRequest { + @Autowired + private HttpUtil httpUtil; + + public OM1101 call1101(IM1101 im1101) { + JSONObject data = httpUtil.call("1101", "data", im1101.buildToMap()); + OM1101 om1101 = new OM1101(); + om1101.setBaseinfo(JSONObject.parseObject(data.get("baseinfo").toString(), OM1101.Baseinfo.class)); + om1101.setInsuinfo(JSONArray.parseArray(data.get("insuinfo").toString(), OM1101.Insuinfo.class)); + om1101.setIDetinfo(JSONArray.parseArray(data.get("idetinfo").toString(), OM1101.Idetinfo.class)); + System.out.println("data:"+data); + return om1101; + } + public OM1301 call1301(IM1301 im1301) { + JSONObject jsonObject=httpUtil.call("1301", "data", im1301.buildToMap()); + System.out.println(jsonObject); + OM1301 om1301=new OM1301(); + om1301.makeFromJson(jsonObject); + return om1301; + } + public OM1302 call1302(IM1302 im1302) { + JSONObject jsonObject=httpUtil.call("1302", "data", im1302.buildToMap()); + System.out.println(jsonObject); + OM1302 om1302=new OM1302(); + om1302.makeFromJson(jsonObject); + return om1302; + } + public OM1305 call1305(IM1305 im1305) { + JSONObject jsonObject=httpUtil.call("1305", "data", im1305.buildToMap()); + System.out.println(jsonObject); + OM1305 om1305=new OM1305(); + om1305.makeFromJson(jsonObject); + return om1305; + } + public OM1306 call1306(IM1306 im1306) { + JSONObject jsonObject=httpUtil.call("1306", "data", im1306.buildToMap()); + System.out.println(jsonObject); + OM1306 om1306=new OM1306(); + om1306.makeFromJson(jsonObject); + return om1306; + } + public OM1307 call1307(IM1307 im1307) { + JSONObject jsonObject=httpUtil.call("1307", "data", im1307.buildToMap()); + System.out.println(jsonObject); + OM1307 om1307=new OM1307(); + om1307.makeFromJson(jsonObject); + return om1307; + } + + public OM1309 call1309(IM1309 im1309) { + JSONObject jsonObject=httpUtil.call("1309", "data", im1309.buildToMap()); + System.out.println(); + OM1309 om1309=new OM1309(); + om1309.makeFromJson(jsonObject); + return om1309; + } + public OM1312 call1312(IM1312 im1312) { + JSONObject jsonObject=httpUtil.callWithOutLog("1312", "data", im1312.buildToMap()); + OM1312 om1312=new OM1312(); + om1312.makeFromJson(jsonObject); + return om1312; + } + public OM1318 call1318(IM1318 im1318) { + JSONObject jsonObject=httpUtil.callWithOutLog("1318", "data", im1318.buildToMap()); + OM1318 om1318=new OM1318(); + om1318.makeFromJson(jsonObject); + return om1318; + } + public OM1319 call1319(IM1319 im1319) { + JSONObject jsonObject=httpUtil.callWithOutLog("1319", "data", im1319.buildToMap()); + OM1319 om1319=new OM1319(); + om1319.makeFromJson(jsonObject); + return om1319; + } + public void call2001(IM2001 im2001){ + JSONObject jsonObject=httpUtil.call("2001", "data", im2001.buildToMap()); + } + public OM2101A call2101A(IM2101A im2101A){ + Map map=im2101A.buildToMap(); + JSONObject data=httpUtil.call("2101A",map); + OM2101A om2101A=new OM2101A(); + om2101A.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2101A.Setlinfo.class)); + om2101A.setSetldetail(JSONArray.parseArray(data.get("setldetail").toString(), OM2101A.Setldetail.class)); + om2101A.setDetlcutinfo(JSONArray.parseArray(data.get("detlcutinfo").toString(), OM2101A.Detlcutinfo.class)); + return om2101A; + } + public OM2102A call2102A(IM2102A im2102A){ + Map map=im2102A.buildToMap(); + JSONObject data=httpUtil.call("2102A",map); + OM2102A om2102A=new OM2102A(); + om2102A.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2102A.Setlinfo.class)); + om2102A.setSetldetail(JSONArray.parseArray(data.get("setldetail").toString(), OM2102A.Setldetail.class)); + om2102A.setDetlcutinfo(JSONArray.parseArray(data.get("detlcutinfo").toString(), OM2102A.Detlcutinfo.class)); + return om2102A; + } + public OM2103 call2103(IM2103 im2103){ + Map map=im2103.buildToMap(); + JSONObject data=httpUtil.call("2103",map); + OM2103 om2103=new OM2103(); + om2103.setSetlinfo(JSONObject.parseObject(data.get("setlinfo").toString(), OM2103.Setlinfo.class)); + om2103.setSetldetail(JSONArray.parseArray(data.get("setldetail").toString(), OM2103.Setldetail.class)); + return om2103; + } + public void call2601(IM2601 im2601){ + JSONObject data = httpUtil.call("2601","data", im2601.buildToMap()); + } + public OM3201 call3201(IM3201 im3201){ + JSONObject data = httpUtil.call("3201", im3201.buildToMap()); + OM3201 om3201=new OM3201(); + om3201.setStmtinfo(JSONObject.parseObject(data.get("stmtinfo").toString(), OM3201.Stmtinfo.class)); + return om3201; + } + public void call3501(IM3501 im3501){ + httpUtil.call("3501", "invinfo", im3501.buildToMap()); + } + public void call3502(IM3502 im3502){ + im3502.setCnt(im3502.getCnt().abs()); + httpUtil.call("3502", "invinfo", im3502.buildToMap()); + } + public void call3503(IM3503 im3503){ + httpUtil.call("3503", "purcinfo", im3503.buildToMap()); + } + + public void call3504(IM3504 im3504){ + im3504.setPurcRetnCnt(im3504.getPurcRetnCnt().abs()); + httpUtil.call("3504", "purcinfo", im3504.buildToMap()); + } + public void call3505(IM3505 im3505){ + httpUtil.call("3505", "selinfo", im3505.buildToMap()); + } + + public OM9101 call9101(String filePath){ + JSONObject jsonObject = httpUtil.callUploadFile(filePath); + return JSONObject.parseObject(jsonObject.toString(), OM9101.class); + } + + public OM3202 call3202(IM3202 im3202) { + JSONObject jsonObject = httpUtil.call("3202", im3202.buildToMap()); + return JSONObject.parseObject(jsonObject.get("fileinfo").toString(), OM3202.class); + } +} diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/config/Config.java b/src/main/java/com/syjiaer/clinic/server/common/config/Config.java similarity index 54% rename from src/main/java/com/syjiaer/pharmacy/server/common/config/Config.java rename to src/main/java/com/syjiaer/clinic/server/common/config/Config.java index 8784c37..da7dfb7 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/config/Config.java +++ b/src/main/java/com/syjiaer/clinic/server/common/config/Config.java @@ -1,7 +1,7 @@ -package com.syjiaer.pharmacy.server.common.config; +package com.syjiaer.clinic.server.common.config; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonConfig; -import com.syjiaer.pharmacy.server.modules.base.service.ICommonConfigService; +import com.syjiaer.clinic.server.entity.common.CommonConfig; +import com.syjiaer.clinic.server.service.common.CommonConfigService; import jakarta.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -14,12 +14,12 @@ import java.util.Map; public class Config { private Map config_map; @Autowired - private ICommonConfigService iCommonConfigService; + private CommonConfigService commonConfigService; @PostConstruct private void init() { config_map = new HashMap<>(); - List list = iCommonConfigService.list(); + List list = commonConfigService.list(); for (CommonConfig commonConfig : list) { config_map.put(commonConfig.getK(), commonConfig.getVal()); } @@ -28,7 +28,16 @@ public class Config { public String get(String group, String key) { return config_map.get(group + "_" + key); } + public void set(String group, String key, String value){ + String k = group + "_" + key; + String val = value; + CommonConfig commonConfig = new CommonConfig(); + commonConfig.setK(k); + commonConfig.setVal(val); + commonConfigService.save(commonConfig); + init(); + } public Map list() { return config_map; } diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/config/ControllerAspect.java b/src/main/java/com/syjiaer/clinic/server/common/config/ControllerAspect.java similarity index 76% rename from src/main/java/com/syjiaer/pharmacy/server/common/config/ControllerAspect.java rename to src/main/java/com/syjiaer/clinic/server/common/config/ControllerAspect.java index a65fac6..843c9ae 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/config/ControllerAspect.java +++ b/src/main/java/com/syjiaer/clinic/server/common/config/ControllerAspect.java @@ -1,8 +1,8 @@ -package com.syjiaer.pharmacy.server.common.config; +package com.syjiaer.clinic.server.common.config; -import com.syjiaer.pharmacy.server.common.exception.MessageException; -import com.syjiaer.pharmacy.server.common.exception.VerifyException; -import com.syjiaer.pharmacy.server.common.vo.Result; +import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.exception.VerifyException; +import com.syjiaer.clinic.server.common.vo.Result; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; @Component // 将当前类交给spring管理 @Aspect // 声明这是一个AOP类 public class ControllerAspect { - @Pointcut("execution(public * *(..)) && within(com.syjiaer.pharmacy.server.modules.*.controller.*+) && within(com.syjiaer.pharmacy.server.modules.base.controller.BaseController+)") + @Pointcut("execution(public * *(..)) && within(com.syjiaer.pharmacy.server.modules.*.controller.*+) && within(com.syjiaer.clinic.server.modules.base.controller.BaseController+)") public void controllerPointcut() { } diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/config/CorsConfig.java b/src/main/java/com/syjiaer/clinic/server/common/config/CorsConfig.java similarity index 95% rename from src/main/java/com/syjiaer/pharmacy/server/common/config/CorsConfig.java rename to src/main/java/com/syjiaer/clinic/server/common/config/CorsConfig.java index 31c5d52..1e3f326 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/config/CorsConfig.java +++ b/src/main/java/com/syjiaer/clinic/server/common/config/CorsConfig.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.config; +package com.syjiaer.clinic.server.common.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/config/SpringMvcConfig.java b/src/main/java/com/syjiaer/clinic/server/common/config/SpringMvcConfig.java similarity index 82% rename from src/main/java/com/syjiaer/pharmacy/server/common/config/SpringMvcConfig.java rename to src/main/java/com/syjiaer/clinic/server/common/config/SpringMvcConfig.java index a004bed..c3e8c33 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/config/SpringMvcConfig.java +++ b/src/main/java/com/syjiaer/clinic/server/common/config/SpringMvcConfig.java @@ -1,6 +1,6 @@ -package com.syjiaer.pharmacy.server.common.config; +package com.syjiaer.clinic.server.common.config; -import com.syjiaer.pharmacy.server.common.inteceptor.MvcInterceptor; +import com.syjiaer.clinic.server.common.inteceptor.MvcInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/exception/MessageException.java b/src/main/java/com/syjiaer/clinic/server/common/exception/MessageException.java similarity index 93% rename from src/main/java/com/syjiaer/pharmacy/server/common/exception/MessageException.java rename to src/main/java/com/syjiaer/clinic/server/common/exception/MessageException.java index 1873677..06b07d5 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/exception/MessageException.java +++ b/src/main/java/com/syjiaer/clinic/server/common/exception/MessageException.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.exception; +package com.syjiaer.clinic.server.common.exception; public class MessageException extends RuntimeException { /** diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/exception/VerifyException.java b/src/main/java/com/syjiaer/clinic/server/common/exception/VerifyException.java similarity index 93% rename from src/main/java/com/syjiaer/pharmacy/server/common/exception/VerifyException.java rename to src/main/java/com/syjiaer/clinic/server/common/exception/VerifyException.java index 0135f59..e101692 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/exception/VerifyException.java +++ b/src/main/java/com/syjiaer/clinic/server/common/exception/VerifyException.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.exception; +package com.syjiaer.clinic.server.common.exception; public class VerifyException extends RuntimeException { /** diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/inteceptor/MvcInterceptor.java b/src/main/java/com/syjiaer/clinic/server/common/inteceptor/MvcInterceptor.java similarity index 88% rename from src/main/java/com/syjiaer/pharmacy/server/common/inteceptor/MvcInterceptor.java rename to src/main/java/com/syjiaer/clinic/server/common/inteceptor/MvcInterceptor.java index f36a5ff..5aca472 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/inteceptor/MvcInterceptor.java +++ b/src/main/java/com/syjiaer/clinic/server/common/inteceptor/MvcInterceptor.java @@ -1,12 +1,11 @@ -package com.syjiaer.pharmacy.server.common.inteceptor; +package com.syjiaer.clinic.server.common.inteceptor; import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.databind.ObjectMapper; -import com.syjiaer.pharmacy.server.common.util.HeadersUtil; -import com.syjiaer.pharmacy.server.common.util.InfoUtil; -import com.syjiaer.pharmacy.server.common.util.ParmsUtil; -import com.syjiaer.pharmacy.server.common.vo.Result; -import com.syjiaer.pharmacy.server.modules.base.entity.ManagerUser; +import com.syjiaer.clinic.server.common.util.HeadersUtil; +import com.syjiaer.clinic.server.common.util.InfoUtil; +import com.syjiaer.clinic.server.common.util.ParmsUtil; +import com.syjiaer.clinic.server.common.vo.Result; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; import io.jsonwebtoken.JwtException; @@ -75,10 +74,11 @@ public class MvcInterceptor implements HandlerInterceptor { return false; } Claims claims = claimsJws.getPayload(); - ManagerUser managerUser = new ManagerUser(); - managerUser.setId(Integer.parseInt(claims.getSubject())); - managerUser.setUsername(claims.get("username", String.class)); - managerUser.setName(claims.get("name", String.class)); + Map map=new HashMap<>(); + map.put("manager_id", Integer.parseInt(claims.getSubject())); + map.put("manager_userName", claims.get("username", String.class)); + map.put("manager_name", claims.get("name", String.class)); + infoUtil.setMap(map); return true; } diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/DateUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/DateUtil.java similarity index 97% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/DateUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/DateUtil.java index 46f7f1c..e293057 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/DateUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/DateUtil.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/DictoryUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/DictoryUtil.java similarity index 98% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/DictoryUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/DictoryUtil.java index 74e149c..c8d8728 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/DictoryUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/DictoryUtil.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/FileUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/FileUtil.java similarity index 95% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/FileUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/FileUtil.java index 9b29f11..1312981 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/FileUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/FileUtil.java @@ -1,6 +1,6 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; -import com.syjiaer.pharmacy.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.exception.MessageException; import org.springframework.stereotype.Component; import java.io.*; @@ -36,7 +36,7 @@ public class FileUtil { return list; } - public String readFileToString(String path) { + public String readToString(String path) { StringBuilder content = new StringBuilder(); try (BufferedReader br = new BufferedReader(new FileReader(path))) { String line; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/HeadersUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/HeadersUtil.java similarity index 89% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/HeadersUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/HeadersUtil.java index cc3703b..3ccc7b1 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/HeadersUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/HeadersUtil.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/HttpUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/HttpUtil.java similarity index 97% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/HttpUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/HttpUtil.java index 6b545a7..38e67e2 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/HttpUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/HttpUtil.java @@ -1,11 +1,11 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import com.syjiaer.pharmacy.server.common.config.Config; -import com.syjiaer.pharmacy.server.common.exception.MessageException; -import com.syjiaer.pharmacy.server.modules.social.api.input.IM9101; +import com.syjiaer.clinic.server.common.api.input.IM9101; +import com.syjiaer.clinic.server.common.config.Config; +import com.syjiaer.clinic.server.common.exception.MessageException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -17,11 +17,11 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.UUID; +import java.util.*; import java.util.logging.Logger; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; +import java.util.zip.ZipInputStream; @Slf4j @Component diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/InfoUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/InfoUtil.java similarity index 92% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/InfoUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/InfoUtil.java index ff208fa..571c5ad 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/InfoUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/InfoUtil.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/ParmsUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java similarity index 96% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/ParmsUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java index 0e07dac..5c32c98 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/ParmsUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java @@ -1,8 +1,8 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; -import com.syjiaer.pharmacy.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.exception.MessageException; import org.springframework.stereotype.Component; import java.util.ArrayList; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/RsaUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/RsaUtil.java similarity index 95% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/RsaUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/RsaUtil.java index 4b80412..14bc806 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/RsaUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/RsaUtil.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import javax.crypto.Cipher; import java.security.KeyFactory; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/StringUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/StringUtil.java similarity index 80% rename from src/main/java/com/syjiaer/pharmacy/server/common/util/StringUtil.java rename to src/main/java/com/syjiaer/clinic/server/common/util/StringUtil.java index 2afe3c6..d710070 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/StringUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/StringUtil.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.util; +package com.syjiaer.clinic.server.common.util; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/vo/Page.java b/src/main/java/com/syjiaer/clinic/server/common/vo/Page.java similarity index 90% rename from src/main/java/com/syjiaer/pharmacy/server/common/vo/Page.java rename to src/main/java/com/syjiaer/clinic/server/common/vo/Page.java index 280f26a..f32bc08 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/vo/Page.java +++ b/src/main/java/com/syjiaer/clinic/server/common/vo/Page.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.vo; +package com.syjiaer.clinic.server.common.vo; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/vo/Result.java b/src/main/java/com/syjiaer/clinic/server/common/vo/Result.java similarity index 91% rename from src/main/java/com/syjiaer/pharmacy/server/common/vo/Result.java rename to src/main/java/com/syjiaer/clinic/server/common/vo/Result.java index 74e1d81..2989d14 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/common/vo/Result.java +++ b/src/main/java/com/syjiaer/clinic/server/common/vo/Result.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.common.vo; +package com.syjiaer.clinic.server.common.vo; public class Result { private int code; diff --git a/src/main/java/com/syjiaer/clinic/server/controller/BaseController.java b/src/main/java/com/syjiaer/clinic/server/controller/BaseController.java new file mode 100644 index 0000000..2b70d24 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/BaseController.java @@ -0,0 +1,92 @@ +package com.syjiaer.clinic.server.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.syjiaer.clinic.server.common.exception.VerifyException; +import com.syjiaer.clinic.server.common.util.HeadersUtil; +import com.syjiaer.clinic.server.common.util.InfoUtil; +import com.syjiaer.clinic.server.common.util.ParmsUtil; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.entity.manager.ManagerUser; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jws; +import io.jsonwebtoken.JwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.security.Keys; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; + +public abstract class BaseController { + @Autowired + private InfoUtil infoUtil; + @Autowired + private ParmsUtil parmsUtil; + @Autowired + private HeadersUtil headersUtil; + + // 使用 ThreadLocal 来缓存请求参数 + + public Boolean isEmpty(String key, Map map) { + if (map.get(key) == null || map.get(key).toString().isEmpty()) { + return true; + } + return false; + } + + protected Result success() { + Result result = new Result<>(); + result.setCode(0); + return result; + } + + protected Result success(T data) { + Result result = new Result<>(); + result.setCode(0); + result.setData(data); + return result; + } + + protected Result error(String message) { + Result result = new Result<>(); + result.setCode(1001); + result.setMessage(message); + return result; + } + + + protected Result error(int code, String message) { + Result result = new Result<>(); + result.setCode(code); + result.setMessage(message); + return result; + } + + ; + + protected Map getParms() { + return parmsUtil.getMap(); + } + + + protected Map getHeaders() { + return headersUtil.getMap(); + } + + protected HttpServletRequest getRequest() { + return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); + } + + + + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/social/SocialController.java b/src/main/java/com/syjiaer/clinic/server/controller/social/SocialController.java new file mode 100644 index 0000000..ab93fcb --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/social/SocialController.java @@ -0,0 +1,8 @@ +package com.syjiaer.clinic.server.controller.social; + +import com.syjiaer.clinic.server.controller.BaseController; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class SocialController extends BaseController { +} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/CommonConfig.java b/src/main/java/com/syjiaer/clinic/server/entity/common/CommonConfig.java similarity index 80% rename from src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/CommonConfig.java rename to src/main/java/com/syjiaer/clinic/server/entity/common/CommonConfig.java index 63d740b..a2efad4 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/CommonConfig.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/common/CommonConfig.java @@ -1,29 +1,28 @@ -package com.syjiaer.pharmacy.server.modules.base.entity; +package com.syjiaer.clinic.server.entity.common; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; - -import java.io.Serializable; /** *

- * 配置信息表 + * 配置表 *

* * @author NiuZiYuan - * @since 2025-03-09 + * @since 2025-04-17 */ @Getter @Setter @ToString @Accessors(chain = true) @TableName("common_config") -@ApiModel(value = "CommonConfig对象", description = "配置信息表") +@ApiModel(value = "CommonConfig对象", description = "配置表") public class CommonConfig implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/CommonLog.java b/src/main/java/com/syjiaer/clinic/server/entity/common/CommonLog.java similarity index 68% rename from src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/CommonLog.java rename to src/main/java/com/syjiaer/clinic/server/entity/common/CommonLog.java index e61e9aa..ece390b 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/CommonLog.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/common/CommonLog.java @@ -1,41 +1,44 @@ -package com.syjiaer.pharmacy.server.modules.base.entity; +package com.syjiaer.clinic.server.entity.common; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.time.LocalDateTime; - /** *

- * + * 操作日志 *

* * @author NiuZiYuan - * @since 2025-04-14 + * @since 2025-04-17 */ @Getter @Setter @ToString @Accessors(chain = true) @TableName("common_log") -@ApiModel(value = "CommonLog对象", description = "") +@ApiModel(value = "CommonLog对象", description = "操作日志") public class CommonLog implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty("自增主键") @TableId(value = "id", type = IdType.AUTO) private Integer id; - private String message; - + @ApiModelProperty("管理员ID") private Integer managerId; + @ApiModelProperty("信息") + private String message; + + @ApiModelProperty("创建时间") private LocalDateTime createDatetime; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java new file mode 100644 index 0000000..3096ef2 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java @@ -0,0 +1,77 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 库存主表 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@ApiModel(value = "Inventory对象", description = "库存主表") +public class Inventory implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("库存整量") + private Integer wholeNumber; + + @ApiModelProperty("库存拆分量") + private Integer fragmentNumber; + + @ApiModelProperty("进货单价") + private BigDecimal purchaseUnitPrice; + + @ApiModelProperty("创建日期") + private LocalDateTime createDatetime; + + @ApiModelProperty("库存订单号") + private String inventoryPurchaseCode; + + @ApiModelProperty("商品ID") + private Integer goodId; + + @ApiModelProperty("包装单位") + private String packagingUnit; + + @ApiModelProperty("生产日期") + private LocalDate productionDate; + + @ApiModelProperty("有效期") + private LocalDate expiryDate; + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("生产批次编码") + private String productionBatchCode; + + @ApiModelProperty("分量价格") + private BigDecimal fragmentPrice; + + @ApiModelProperty("来源信息") + private Integer refererType; + + @ApiModelProperty("最小包装单位") + private String minPackagingUnit; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApply.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApply.java new file mode 100644 index 0000000..aea2279 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApply.java @@ -0,0 +1,50 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 库存领用表 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_apply") +@ApiModel(value = "InventoryApply对象", description = "库存领用表") +public class InventoryApply implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("领用id") + private String useCode; + + @ApiModelProperty("领用人id") + private Integer useUserId; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("创建时间") + private LocalDateTime createDatetime; + + @ApiModelProperty("1已完成 0未完成") + private Integer status; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApplyLog.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApplyLog.java new file mode 100644 index 0000000..09b420d --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryApplyLog.java @@ -0,0 +1,40 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 领用日志 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_apply_log") +@ApiModel(value = "InventoryApplyLog对象", description = "领用日志") +public class InventoryApplyLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("领用id") + private Integer applyId; + + @ApiModelProperty("数据集(json)") + private String data; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheck.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheck.java new file mode 100644 index 0000000..e5a7dc8 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheck.java @@ -0,0 +1,47 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 盘点主表 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_check") +@ApiModel(value = "InventoryCheck对象", description = "盘点主表") +public class InventoryCheck implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("创建时间") + private LocalDateTime createDatetime; + + @ApiModelProperty("盘点状态 0为等待盘点 1为已完成盘点") + private Integer state; + + @ApiModelProperty("盘点单号") + private String code; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheckLog.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheckLog.java new file mode 100644 index 0000000..ab6cc8e --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryCheckLog.java @@ -0,0 +1,40 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 盘点日志 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_check_log") +@ApiModel(value = "InventoryCheckLog对象", description = "盘点日志") +public class InventoryCheckLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("盘点表外键") + private Integer inventoryCheckId; + + @ApiModelProperty("数据集") + private String data; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryInit.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryInit.java new file mode 100644 index 0000000..70530f3 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryInit.java @@ -0,0 +1,63 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 库存初始化 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_init") +@ApiModel(value = "InventoryInit对象", description = "库存初始化") +public class InventoryInit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("库存初始化编码") + private String code; + + @ApiModelProperty("初始化商品整量数量") + private Integer wholeNumber; + + @ApiModelProperty("初始化日期") + private LocalDate createDate; + + @ApiModelProperty("0 未上传 1已上传 2异常") + private Integer uploadStatus; + + @ApiModelProperty("上传状态信息") + private String uploadMessage; + + @ApiModelProperty("最近上传时间") + private LocalDateTime uploadDatetime; + + @ApiModelProperty("商品ID") + private Integer goodsId; + + @ApiModelProperty("库存ID") + private Integer inventoryId; + + @ApiModelProperty("初始化商品分量数量") + private Integer fragmentNumber; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryLog.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryLog.java new file mode 100644 index 0000000..f98b22d --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryLog.java @@ -0,0 +1,86 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 库存日志表 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_log") +@ApiModel(value = "InventoryLog对象", description = "库存日志表") +public class InventoryLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("商品主键") + private Integer goodsId; + + @ApiModelProperty("库存订单主键") + private Integer inventoryId; + + @ApiModelProperty("医保类型 101-108") + private Integer socialType; + + @ApiModelProperty("修改整数部分") + private Integer changeWholeNumber; + + @ApiModelProperty("修改拆零部分") + private Integer changeFragmentNumber; + + @ApiModelProperty("前整数部分") + private Integer beforeWholeNumber; + + @ApiModelProperty("前拆零部分") + private Integer beforeFragmentNumber; + + @ApiModelProperty("后整数部分") + private Integer afterWholeNumber; + + @ApiModelProperty("后拆零部分") + private Integer afterFragmentNumber; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + @ApiModelProperty("0 未上传 1已上传 2异常") + private Integer uploadStatus; + + @ApiModelProperty("上传状态信息") + private String uploadMessage; + + @ApiModelProperty("最近上传时间") + private LocalDateTime uploadDatetime; + + @ApiModelProperty("业务类型") + private Integer type; + + @ApiModelProperty("操作人id") + private Integer operateId; + + @ApiModelProperty("操作人名称") + private String operateName; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchase.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchase.java new file mode 100644 index 0000000..790b6e0 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchase.java @@ -0,0 +1,62 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 采购单 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_purchase") +@ApiModel(value = "InventoryPurchase对象", description = "采购单") +public class InventoryPurchase implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("code") + @ApiModelProperty("自增主键") + private String code; + + @ApiModelProperty("管理员账号ID") + private Integer managerUserId; + + @ApiModelProperty("进货日期") + private LocalDateTime purchaseDate; + + @ApiModelProperty("创建日期") + private LocalDateTime createDatetime; + + @ApiModelProperty("供应商ID") + private Integer supplierId; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("货单号") + private String shippingCode; + + @ApiModelProperty("发票号") + private String invoiceCode; + + @ApiModelProperty("总类数") + private Integer kindCount; + + @ApiModelProperty("总价格") + private BigDecimal totalPrice; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchaseLog.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchaseLog.java new file mode 100644 index 0000000..908c5b4 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventoryPurchaseLog.java @@ -0,0 +1,56 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 采购日志 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_purchase_log") +@ApiModel(value = "InventoryPurchaseLog对象", description = "采购日志") +public class InventoryPurchaseLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(" id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("采购表code") + private String inventoryPurchaseCode; + + @ApiModelProperty("进货,退货数量") + private Integer number; + + @ApiModelProperty("0 未上传 1已上传 2异常") + private Integer uploadStatus; + + @ApiModelProperty("上传状态信息") + private String uploadMessage; + + @ApiModelProperty("最近上传时间") + private LocalDateTime uploadDatetime; + + @ApiModelProperty("库存表id") + private Integer inventoryId; + + @ApiModelProperty("医保类型 101-108") + private Integer socialType; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventorySupplier.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventorySupplier.java new file mode 100644 index 0000000..cbc7917 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/InventorySupplier.java @@ -0,0 +1,52 @@ +package com.syjiaer.clinic.server.entity.inventory; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 供应商表 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("inventory_supplier") +@ApiModel(value = "InventorySupplier对象", description = "供应商表") +public class InventorySupplier implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("许可证") + private String licenseCode; + + @ApiModelProperty("联系人姓名") + private String contactName; + + @ApiModelProperty("联系人电话") + private String contactTel; + + @ApiModelProperty("备注") + private String reamark; + + @ApiModelProperty("开关") + private Integer turn; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/item/Item.java b/src/main/java/com/syjiaer/clinic/server/entity/item/Item.java new file mode 100644 index 0000000..cd23f54 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/item/Item.java @@ -0,0 +1,64 @@ +package com.syjiaer.clinic.server.entity.item; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 诊疗项目 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@ApiModel(value = "Item对象", description = "诊疗项目") +public class Item implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("项目创建时间") + private LocalDateTime createDatetime; + + @ApiModelProperty("项目创建人") + private String createBy; + + @ApiModelProperty("项目修改时间") + private LocalDateTime updateDatetime; + + @ApiModelProperty("项目修改人") + private String updateBy; + + @ApiModelProperty("项目名称") + private String itemName; + + @ApiModelProperty("项目医保目录编码") + private String itemSocialCode; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("售价") + private BigDecimal unitPrice; + + @ApiModelProperty("进货价") + private BigDecimal purchaseUnitPrice; + + @ApiModelProperty("逻辑删除") + private Short delFlag; +} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/ManagerUser.java b/src/main/java/com/syjiaer/clinic/server/entity/manager/ManagerUser.java similarity index 87% rename from src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/ManagerUser.java rename to src/main/java/com/syjiaer/clinic/server/entity/manager/ManagerUser.java index cc9810d..3774f9b 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/entity/ManagerUser.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/manager/ManagerUser.java @@ -1,31 +1,29 @@ -package com.syjiaer.pharmacy.server.modules.base.entity; +package com.syjiaer.clinic.server.entity.manager; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; - -import java.io.Serializable; - /** *

- * + * 用户表 *

* * @author NiuZiYuan - * @since 2025-04-02 + * @since 2025-04-17 */ @Getter @Setter @ToString @Accessors(chain = true) @TableName("manager_user") -@ApiModel(value = "ManagerUser对象", description = "") +@ApiModel(value = "ManagerUser对象", description = "用户表") public class ManagerUser implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/social/entity/SocialDirectory.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectory.java similarity index 94% rename from src/main/java/com/syjiaer/pharmacy/server/modules/social/entity/SocialDirectory.java rename to src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectory.java index f0adc44..a2f0d0e 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/social/entity/SocialDirectory.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectory.java @@ -1,4 +1,4 @@ -package com.syjiaer.pharmacy.server.modules.social.entity; +package com.syjiaer.clinic.server.entity.social; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -15,7 +15,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-16 + * @since 2025-04-17 */ @Getter @Setter diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryLimit.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryLimit.java new file mode 100644 index 0000000..c5c40e4 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryLimit.java @@ -0,0 +1,43 @@ +package com.syjiaer.clinic.server.entity.social; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 医保限价 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("social_directory_limit") +@ApiModel(value = "SocialDirectoryLimit对象", description = "医保限价") +public class SocialDirectoryLimit implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("code") + @ApiModelProperty("医保目录编码") + private String code; + + @ApiModelProperty("医保自增主键") + private BigDecimal rid; + + @ApiModelProperty("医保目录限价类型") + private String hilistLmtpricType; + + @ApiModelProperty("医保目录定价上限金额") + private BigDecimal hilistPricUplmtAmt; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectorySelf.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectorySelf.java new file mode 100644 index 0000000..bdf6e2b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectorySelf.java @@ -0,0 +1,42 @@ +package com.syjiaer.clinic.server.entity.social; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 医保自付比例 1319 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("social_directory_self") +@ApiModel(value = "SocialDirectorySelf对象", description = "医保自付比例 1319") +public class SocialDirectorySelf implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("code") + @ApiModelProperty("自增主键") + private String code; + + @ApiModelProperty("医保中心主键") + private BigDecimal rid; + + @ApiModelProperty("自付比例") + private String selfpayPropType; + + private BigDecimal selfpayProp; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryUpinfo.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryUpinfo.java new file mode 100644 index 0000000..2e5fcfc --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryUpinfo.java @@ -0,0 +1,57 @@ +package com.syjiaer.clinic.server.entity.social; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 医保有效期 1312 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("social_directory_upinfo") +@ApiModel(value = "SocialDirectoryUpinfo对象", description = "医保有效期 1312") +public class SocialDirectoryUpinfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("医保目录编码") + private String code; + + @ApiModelProperty("开始日期") + private LocalDateTime begndate; + + @ApiModelProperty("结束日期") + private LocalDateTime enddate; + + @ApiModelProperty("医疗收费项目类别") + private String medChrgitmType; + + @ApiModelProperty("收费项目等级") + private String chrgitmLv; + + @ApiModelProperty("限制使用标志") + private String lmtUsedFlag; + + @ApiModelProperty("五笔助记码") + private String wubi; + + @ApiModelProperty("拼音助记码") + private String pinyin; + + @ApiModelProperty("唯一记录号") + private BigDecimal rid; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryVersion.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryVersion.java new file mode 100644 index 0000000..13602c8 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDirectoryVersion.java @@ -0,0 +1,47 @@ +package com.syjiaer.clinic.server.entity.social; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 医保目录版本列表 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("social_directory_version") +@ApiModel(value = "SocialDirectoryVersion对象", description = "医保目录版本列表") +public class SocialDirectoryVersion implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + private String id; + + @ApiModelProperty("类型") + private Integer type; + + @ApiModelProperty("当前版本名称") + private String currentVersionName; + + @ApiModelProperty("上一个版本名称") + private String preVersionName; + + @ApiModelProperty("数据量") + private Integer size; + + @ApiModelProperty("创建时间") + private LocalDateTime createDatetime; +} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/CommonConfigMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/common/CommonConfigMapper.java similarity index 52% rename from src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/CommonConfigMapper.java rename to src/main/java/com/syjiaer/clinic/server/mapper/common/CommonConfigMapper.java index e7599f7..ab3fe67 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/CommonConfigMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/common/CommonConfigMapper.java @@ -1,16 +1,18 @@ -package com.syjiaer.pharmacy.server.modules.base.mapper; +package com.syjiaer.clinic.server.mapper.common; +import com.syjiaer.clinic.server.entity.common.CommonConfig; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonConfig; + /** *

- * Mapper 接口 + * 配置表 Mapper 接口 *

* * @author NiuZiYuan - * @since 2025-02-24 + * @since 2025-04-17 */ public interface CommonConfigMapper extends BaseMapper { } + diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/CommonLogMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/common/CommonLogMapper.java similarity index 51% rename from src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/CommonLogMapper.java rename to src/main/java/com/syjiaer/clinic/server/mapper/common/CommonLogMapper.java index e59007c..abc4688 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/CommonLogMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/common/CommonLogMapper.java @@ -1,16 +1,16 @@ -package com.syjiaer.pharmacy.server.modules.base.mapper; +package com.syjiaer.clinic.server.mapper.common; +import com.syjiaer.clinic.server.entity.common.CommonLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonLog; /** *

- * Mapper 接口 + * 操作日志 Mapper 接口 *

* * @author NiuZiYuan - * @since 2025-04-14 + * @since 2025-04-17 */ public interface CommonLogMapper extends BaseMapper { diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyLogMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyLogMapper.java new file mode 100644 index 0000000..1002181 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyLogMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryApplyLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 领用日志 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryApplyLogMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyMapper.java new file mode 100644 index 0000000..b457004 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryApplyMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryApply; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 库存领用表 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryApplyMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckLogMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckLogMapper.java new file mode 100644 index 0000000..27eb2c5 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckLogMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryCheckLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 盘点日志 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryCheckLogMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckMapper.java new file mode 100644 index 0000000..a29078e --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryCheckMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryCheck; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 盘点主表 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryCheckMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryInitMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryInitMapper.java new file mode 100644 index 0000000..8232dea --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryInitMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryInit; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 库存初始化 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryInitMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java new file mode 100644 index 0000000..40bf7d2 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryLogMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 库存日志表 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryLogMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java new file mode 100644 index 0000000..7ce2d3a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.Inventory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 库存主表 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseLogMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseLogMapper.java new file mode 100644 index 0000000..72728e8 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseLogMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryPurchaseLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 采购日志 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryPurchaseLogMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseMapper.java new file mode 100644 index 0000000..957ba15 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryPurchaseMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventoryPurchase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 采购单 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventoryPurchaseMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventorySupplierMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventorySupplierMapper.java new file mode 100644 index 0000000..a41ef7b --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventorySupplierMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.inventory; + +import com.syjiaer.clinic.server.entity.inventory.InventorySupplier; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 供应商表 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface InventorySupplierMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/item/ItemMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/item/ItemMapper.java new file mode 100644 index 0000000..38c19f2 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/item/ItemMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.item; + +import com.syjiaer.clinic.server.entity.item.Item; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 诊疗项目 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface ItemMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/ManagerUserMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/manager/ManagerUserMapper.java similarity index 52% rename from src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/ManagerUserMapper.java rename to src/main/java/com/syjiaer/clinic/server/mapper/manager/ManagerUserMapper.java index 3cf0ec7..bbafcd1 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/mapper/ManagerUserMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/manager/ManagerUserMapper.java @@ -1,16 +1,16 @@ -package com.syjiaer.pharmacy.server.modules.base.mapper; +package com.syjiaer.clinic.server.mapper.manager; +import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.syjiaer.pharmacy.server.modules.base.entity.ManagerUser; /** *

- * Mapper 接口 + * 用户表 Mapper 接口 *

* * @author NiuZiYuan - * @since 2025-02-28 + * @since 2025-04-17 */ public interface ManagerUserMapper extends BaseMapper { diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryLimitMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryLimitMapper.java new file mode 100644 index 0000000..c07c35f --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryLimitMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.social; + +import com.syjiaer.clinic.server.entity.social.SocialDirectoryLimit; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 医保限价 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface SocialDirectoryLimitMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/social/mapper/SocialDirectoryMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryMapper.java similarity index 58% rename from src/main/java/com/syjiaer/pharmacy/server/modules/social/mapper/SocialDirectoryMapper.java rename to src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryMapper.java index a5a0117..95108a6 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/social/mapper/SocialDirectoryMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryMapper.java @@ -1,6 +1,6 @@ -package com.syjiaer.pharmacy.server.modules.social.mapper; +package com.syjiaer.clinic.server.mapper.social; -import com.syjiaer.pharmacy.server.modules.social.entity.SocialDirectory; +import com.syjiaer.clinic.server.entity.social.SocialDirectory; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; *

* * @author NiuZiYuan - * @since 2025-04-16 + * @since 2025-04-17 */ public interface SocialDirectoryMapper extends BaseMapper { diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectorySelfMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectorySelfMapper.java new file mode 100644 index 0000000..c0ad691 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectorySelfMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.social; + +import com.syjiaer.clinic.server.entity.social.SocialDirectorySelf; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 医保自付比例 1319 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface SocialDirectorySelfMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryUpinfoMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryUpinfoMapper.java new file mode 100644 index 0000000..18c6e3a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryUpinfoMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.social; + +import com.syjiaer.clinic.server.entity.social.SocialDirectoryUpinfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 医保有效期 1312 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface SocialDirectoryUpinfoMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryVersionMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryVersionMapper.java new file mode 100644 index 0000000..d271fbd --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialDirectoryVersionMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.social; + +import com.syjiaer.clinic.server.entity.social.SocialDirectoryVersion; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 医保目录版本列表 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-04-17 + */ +public interface SocialDirectoryVersionMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseController.java b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java similarity index 51% rename from src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseController.java rename to src/main/java/com/syjiaer/clinic/server/service/BaseService.java index afb1d9d..a588b6f 100644 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseController.java +++ b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java @@ -1,92 +1,54 @@ -package com.syjiaer.pharmacy.server.modules.base.controller; - +package com.syjiaer.clinic.server.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; -import com.syjiaer.pharmacy.server.common.exception.VerifyException; -import com.syjiaer.pharmacy.server.common.util.HeadersUtil; -import com.syjiaer.pharmacy.server.common.util.InfoUtil; -import com.syjiaer.pharmacy.server.common.util.ParmsUtil; -import com.syjiaer.pharmacy.server.common.vo.Page; -import com.syjiaer.pharmacy.server.common.vo.Result; -import com.syjiaer.pharmacy.server.modules.base.entity.ManagerUser; -import com.syjiaer.pharmacy.server.modules.base.service.ICommonLogService; +import com.syjiaer.clinic.server.common.exception.VerifyException; +import com.syjiaer.clinic.server.common.util.HeadersUtil; +import com.syjiaer.clinic.server.common.util.InfoUtil; +import com.syjiaer.clinic.server.common.util.ParmsUtil; +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.entity.common.CommonLog; +import com.syjiaer.clinic.server.entity.manager.ManagerUser; +import com.syjiaer.clinic.server.mapper.common.CommonLogMapper; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; import io.jsonwebtoken.JwtException; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; -import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.util.unit.DataUnit; -import java.time.format.DateTimeFormatter; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; -public abstract class BaseController { +public abstract class BaseService { + @Autowired + private InfoUtil infoUtil; + @Autowired + private ParmsUtil parmsUtil; + @Autowired + private HeadersUtil headersUtil; + @Autowired + private CommonLogMapper commonLogMapper; + @Value("${jwt.secret}") protected String jwtSecret; - @Autowired - protected ParmsUtil parmsUtil; - @Autowired - protected HeadersUtil headersUtil; - @Autowired - protected InfoUtil infoUtil; - @Autowired - private ICommonLogService commonLogService; - // 使用 ThreadLocal 来缓存请求参数 - - public Boolean isEmpty(String key, Map map) { - if (map.get(key) == null || map.get(key).toString().isEmpty()) { - return true; + /* + * 保存日志 + * @param message 日志信息 + */ + public void saveLog(String message){ + CommonLog commonLog = new CommonLog(); + int manager_id=0; + if(getInfos().get("manager_id")!=null){ + manager_id=Integer.parseInt(getInfos().get("manager_id").toString()); } - return false; - } - - protected Result success() { - Result result = new Result<>(); - result.setCode(0); - return result; - } - - protected Result success(T data) { - Result result = new Result<>(); - result.setCode(0); - result.setData(data); - return result; - } - - protected Result error(String message) { - Result result = new Result<>(); - result.setCode(1001); - result.setMessage(message); - return result; - } - - - protected Result error(int code, String message) { - Result result = new Result<>(); - result.setCode(code); - result.setMessage(message); - return result; - } - - ; - - protected Map getParms() { - return parmsUtil.getMap(); - } - - - protected Map getHeaders() { - return headersUtil.getMap(); - } - - protected HttpServletRequest getRequest() { - return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); + commonLog.setManagerId(manager_id); + commonLog.setMessage(message); + commonLog.setCreateDatetime(LocalDateTime.now()); + commonLogMapper.insert(commonLog); } protected ManagerUser getManagerUser() { @@ -118,8 +80,6 @@ public abstract class BaseController { return managerUser; } - protected DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - protected Page pageHelper(int pageNum, int pageSize, QueryWrapper queryWrapper, IService iservice){ Long totalCount = iservice.count(queryWrapper); queryWrapper.last("LIMIT " + (pageNum - 1) * pageSize + ", " + pageSize); @@ -130,8 +90,15 @@ public abstract class BaseController { page.setTotal_page((int) Math.ceil(totalCount / (double) pageSize)); return page; } - protected void saveLog(String message){ - ManagerUser managerUser = getManagerUser(); - commonLogService.saveLog(message,managerUser.getId()); + protected Map getParms() { + return parmsUtil.getMap(); + } + + + protected Map getHeaders() { + return headersUtil.getMap(); + } + protected Map getInfos() { + return infoUtil.getMap(); } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java b/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java new file mode 100644 index 0000000..9bb89d8 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java @@ -0,0 +1,25 @@ +package com.syjiaer.clinic.server.service.common; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.entity.common.CommonConfig; +import com.syjiaer.clinic.server.mapper.common.CommonConfigMapper; +import com.syjiaer.clinic.server.service.BaseService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CommonConfigService extends BaseService { + @Autowired + private CommonConfigMapper commonConfigMapper; + + public void save(CommonConfig commonConfig){ + commonConfigMapper.insertOrUpdate(commonConfig); + } + + public List list(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + return commonConfigMapper.selectList(queryWrapper); + } +} diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/constants/Constants.java b/src/main/java/com/syjiaer/pharmacy/server/common/constants/Constants.java deleted file mode 100644 index bd74934..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/common/constants/Constants.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.syjiaer.pharmacy.server.common.constants; - -public class Constants { - public static final String IPurchaseCodePrefix = "IP"; - public static final String IInitCodePrefix = "II"; - public static final String RetailFeedetlSn = "FFLS"; - public static final Integer DetailPageSize = 20; - - public static final String InitInventory = "初始化库存"; - public static final String PurchaseInventory = "采购入库"; - public static final String Sold = "售出"; - public static final String Apply = "领用"; - public static final String Social = "医保"; - - public static final Integer numberWarningLimit = 10; - public static final Integer expiryDateWarningLimit = 20; - public static final Integer OneDaySecond= 24*60*60; -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1312.java b/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1312.java deleted file mode 100644 index 53a59cd..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1312.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.syjiaer.pharmacy.server.common.util; - -import com.alibaba.fastjson.JSONObject; -import com.syjiaer.pharmacy.server.modules.social.api.input.IM1312; -import com.syjiaer.pharmacy.server.modules.social.api.output.OM1312; -import com.syjiaer.pharmacy.server.modules.social.api.request.SocialRequest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.time.Duration; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicInteger; - -@Component -public class Download1312 { - @Autowired - private SocialRequest socialRequest; - private Instant startTime; - private int totalPages = 3575; - private AtomicInteger processedPages = new AtomicInteger(0); // 使用 AtomicInteger - - public void download() throws InterruptedException { - startTime = Instant.now(); - - // 创建一个队列来存储页码 - ConcurrentLinkedQueue pageQueue = new ConcurrentLinkedQueue<>(); - for (int i = 1; i <= totalPages; i++) { - pageQueue.add(i); - } - - // 创建并启动4个线程 - Thread[] threads = new Thread[8]; - for (int i = 0; i < threads.length; i++) { - threads[i] = new Thread(new PageProcessor(pageQueue)); - threads[i].start(); - } - - // 等待所有线程完成 - for (Thread thread : threads) { - thread.join(); - } - - System.out.println("所有页面处理完成"); - } - - private void processPage(int page) { - File file = new File("D:/1312/" + page + ".json"); - if (file.exists()) { -// System.out.println("第" + page + "页文件已存在,跳过处理"); - return; - } - IM1312 im1312 = new IM1312(); - System.out.println("正在处理第" + page + "页"); - String dateTimeString = "2020-01-01 00:00:00"; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - im1312.setUpdtTime(LocalDateTime.parse(dateTimeString, formatter)); - im1312.setValiFlag("1"); - im1312.setPageNum(page); - im1312.setPageSize(1000); - OM1312 om1312 = socialRequest.call1312(im1312); - System.out.println(page + "/" + om1312.getPages()); - List> data = om1312.getData(); - saveDataToFile(data, "D:/1312/" + page + ".json"); - processedPages.incrementAndGet(); // 增加已处理的页面数 - printEstimatedRemainingTime(); // 打印剩余时间估计 - } - - private void printEstimatedRemainingTime() { - Instant now = Instant.now(); - Duration elapsedTime = Duration.between(startTime, now); - int currentProcessedPages = processedPages.get(); // 使用 get 方法获取当前处理的页面数 - if (currentProcessedPages == 0) { - return; // 避免除以零 - } - double averageTimePerPage = elapsedTime.toMillis() / (double) currentProcessedPages; - int remainingPages = totalPages - currentProcessedPages; - long estimatedRemainingTimeInMillis = (long) (averageTimePerPage * remainingPages); - Duration estimatedRemainingTime = Duration.ofMillis(estimatedRemainingTimeInMillis); - - System.out.println("Estimated remaining time: " + estimatedRemainingTime.toHoursPart() + " hours, " + - estimatedRemainingTime.toMinutesPart() + " minutes, " + - estimatedRemainingTime.getSeconds() + " seconds"); - } - - private void saveDataToFile(List> data, String filePath) { - try { - if (data == null || data.isEmpty()) { - return; - } - - // 将 data 转换为 JSON 字符串 - String jsonString = JSONObject.toJSONString(data); - - // 创建文件夹(如果不存在) - File folder = new File("D:/1312"); - if (!folder.exists()) { - folder.mkdirs(); - } - - // 写入文件 - File file = new File(filePath); - if (file.exists()) { - file.delete(); - } - - try (FileWriter writer = new FileWriter(file)) { - writer.write(jsonString); - } - - } catch (IOException e) { - e.printStackTrace(); - throw new RuntimeException("Failed to save data to file", e); - } - } - - // 定义一个内部类来处理页码 - private class PageProcessor implements Runnable { - private final ConcurrentLinkedQueue pageQueue; - - public PageProcessor(ConcurrentLinkedQueue pageQueue) { - this.pageQueue = pageQueue; - } - - @Override - public void run() { - while (true) { - Integer page = pageQueue.poll(); - if (page == null) { - // 队列为空,退出循环 - break; - } - try{ - processPage(page); - }catch (Exception e){ - System.out.println("第"+page+"页出错"); - e.printStackTrace(); - } - - - } - } - } -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1318.java b/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1318.java deleted file mode 100644 index 0157c28..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1318.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.syjiaer.pharmacy.server.common.util; - -import com.alibaba.fastjson.JSONObject; -import com.syjiaer.pharmacy.server.modules.social.api.input.IM1318; -import com.syjiaer.pharmacy.server.modules.social.api.output.OM1318; -import com.syjiaer.pharmacy.server.modules.social.api.request.SocialRequest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.time.Duration; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicInteger; - -@Component -public class Download1318 { - @Autowired - private SocialRequest socialRequest; - private Instant startTime; - private int totalPages = 1719; - private AtomicInteger processedPages = new AtomicInteger(0); // 使用 AtomicInteger - - public void download() throws InterruptedException { - startTime = Instant.now(); - - // 创建一个队列来存储页码 - ConcurrentLinkedQueue pageQueue = new ConcurrentLinkedQueue<>(); - for (int i = 1; i <= totalPages; i++) { - pageQueue.add(i); - } - - // 创建并启动4个线程 - Thread[] threads = new Thread[8]; - for (int i = 0; i < threads.length; i++) { - threads[i] = new Thread(new PageProcessor(pageQueue)); - threads[i].start(); - } - - // 等待所有线程完成 - for (Thread thread : threads) { - thread.join(); - } - - System.out.println("所有页面处理完成"); - } - - private void processPage(int page) { - File file = new File("D:/1318/" + page + ".json"); - if (file.exists()) { -// System.out.println("第" + page + "页文件已存在,跳过处理"); - return; - } - IM1318 im1318 = new IM1318(); - System.out.println("正在处理第" + page + "页"); - String dateTimeString = "2020-01-01 00:00:00"; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - im1318.setUpdtTime(LocalDateTime.parse(dateTimeString, formatter)); - im1318.setValiFlag("1"); - im1318.setPageNum(page); - im1318.setPageSize(1000); - OM1318 om1318 = socialRequest.call1318(im1318); - System.out.println(page + "/" + om1318.getPages()); - List> data = om1318.getData(); - saveDataToFile(data, "D:/1318/" + page + ".json"); - processedPages.incrementAndGet(); // 增加已处理的页面数 - printEstimatedRemainingTime(); // 打印剩余时间估计 - } - - private void printEstimatedRemainingTime() { - Instant now = Instant.now(); - Duration elapsedTime = Duration.between(startTime, now); - int currentProcessedPages = processedPages.get(); // 使用 get 方法获取当前处理的页面数 - if (currentProcessedPages == 0) { - return; // 避免除以零 - } - double averageTimePerPage = elapsedTime.toMillis() / (double) currentProcessedPages; - int remainingPages = totalPages - currentProcessedPages; - long estimatedRemainingTimeInMillis = (long) (averageTimePerPage * remainingPages); - Duration estimatedRemainingTime = Duration.ofMillis(estimatedRemainingTimeInMillis); - - System.out.println("Estimated remaining time: " + estimatedRemainingTime.toHoursPart() + " hours, " + - estimatedRemainingTime.toMinutesPart() + " minutes, " + - estimatedRemainingTime.getSeconds() + " seconds"); - } - - private void saveDataToFile(List> data, String filePath) { - try { - if (data == null || data.isEmpty()) { - return; - } - - // 将 data 转换为 JSON 字符串 - String jsonString = JSONObject.toJSONString(data); - - // 创建文件夹(如果不存在) - File folder = new File("D:/1318"); - if (!folder.exists()) { - folder.mkdirs(); - } - - // 写入文件 - File file = new File(filePath); - if (file.exists()) { - file.delete(); - } - - try (FileWriter writer = new FileWriter(file)) { - writer.write(jsonString); - } - - } catch (IOException e) { - e.printStackTrace(); - throw new RuntimeException("Failed to save data to file", e); - } - } - - // 定义一个内部类来处理页码 - private class PageProcessor implements Runnable { - private final ConcurrentLinkedQueue pageQueue; - - public PageProcessor(ConcurrentLinkedQueue pageQueue) { - this.pageQueue = pageQueue; - } - - @Override - public void run() { - while (true) { - Integer page = pageQueue.poll(); - if (page == null) { - // 队列为空,退出循环 - break; - } - try{ - processPage(page); - }catch (Exception e){ - System.out.println("第"+page+"页出错"); - e.printStackTrace(); - } - - - } - } - } -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1319.java b/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1319.java deleted file mode 100644 index db10eac..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/Download1319.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.syjiaer.pharmacy.server.common.util; - -import com.alibaba.fastjson.JSONObject; -import com.syjiaer.pharmacy.server.modules.social.api.input.IM1319; -import com.syjiaer.pharmacy.server.modules.social.api.output.OM1319; -import com.syjiaer.pharmacy.server.modules.social.api.request.SocialRequest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.time.Duration; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicInteger; -@Component -public class Download1319 { - @Autowired - private SocialRequest socialRequest; - private Instant startTime; - private int totalPages = 3547; - private AtomicInteger processedPages = new AtomicInteger(0); // 使用 AtomicInteger - - public void download() throws InterruptedException { - startTime = Instant.now(); - - // 创建一个队列来存储页码 - ConcurrentLinkedQueue pageQueue = new ConcurrentLinkedQueue<>(); - for (int i = 1; i <= totalPages; i++) { - pageQueue.add(i); - } - - // 创建并启动4个线程 - Thread[] threads = new Thread[8]; - for (int i = 0; i < threads.length; i++) { - threads[i] = new Thread(new PageProcessor(pageQueue)); - threads[i].start(); - } - - // 等待所有线程完成 - for (Thread thread : threads) { - thread.join(); - } - - System.out.println("所有页面处理完成"); - } - - private void processPage(int page) { - File file = new File("D:/1319/" + page + ".json"); - if (file.exists()) { -// System.out.println("第" + page + "页文件已存在,跳过处理"); - return; - } - IM1319 im1319 = new IM1319(); - System.out.println("正在处理第" + page + "页"); - String dateTimeString = "2020-01-01 00:00:00"; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - im1319.setUpdtTime(LocalDateTime.parse(dateTimeString, formatter)); - im1319.setSelfpayPropPsnType("310"); - im1319.setValiFlag("1"); - im1319.setPageNum(page); - im1319.setPageSize(1000); - OM1319 om1319 = socialRequest.call1319(im1319); - System.out.println(page + "/" + om1319.getPages()); - List> data = om1319.getData(); - saveDataToFile(data, "D:/1319/" + page + ".json"); - processedPages.incrementAndGet(); // 增加已处理的页面数 - printEstimatedRemainingTime(); // 打印剩余时间估计 - } - - private void printEstimatedRemainingTime() { - Instant now = Instant.now(); - Duration elapsedTime = Duration.between(startTime, now); - int currentProcessedPages = processedPages.get(); // 使用 get 方法获取当前处理的页面数 - if (currentProcessedPages == 0) { - return; // 避免除以零 - } - double averageTimePerPage = elapsedTime.toMillis() / (double) currentProcessedPages; - int remainingPages = totalPages - currentProcessedPages; - long estimatedRemainingTimeInMillis = (long) (averageTimePerPage * remainingPages); - Duration estimatedRemainingTime = Duration.ofMillis(estimatedRemainingTimeInMillis); - - System.out.println("Estimated remaining time: " + estimatedRemainingTime.toHoursPart() + " hours, " + - estimatedRemainingTime.toMinutesPart() + " minutes, " + - estimatedRemainingTime.getSeconds() + " seconds"); - } - - private void saveDataToFile(List> data, String filePath) { - try { - if (data == null || data.isEmpty()) { - return; - } - - // 将 data 转换为 JSON 字符串 - String jsonString = JSONObject.toJSONString(data); - - // 创建文件夹(如果不存在) - File folder = new File("D:/1319"); - if (!folder.exists()) { - folder.mkdirs(); - } - - // 写入文件 - File file = new File(filePath); - if (file.exists()) { - file.delete(); - } - - try (FileWriter writer = new FileWriter(file)) { - writer.write(jsonString); - } - - } catch (IOException e) { - e.printStackTrace(); - throw new RuntimeException("Failed to save data to file", e); - } - } - - // 定义一个内部类来处理页码 - private class PageProcessor implements Runnable { - private final ConcurrentLinkedQueue pageQueue; - - public PageProcessor(ConcurrentLinkedQueue pageQueue) { - this.pageQueue = pageQueue; - } - - @Override - public void run() { - while (true) { - Integer page = pageQueue.poll(); - if (page == null) { - // 队列为空,退出循环 - break; - } - try{ - processPage(page); - }catch (Exception e){ - System.out.println("第"+page+"页出错"); - e.printStackTrace(); - } - - - } - } - } -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/JoinQueryWrapper.java b/src/main/java/com/syjiaer/pharmacy/server/common/util/JoinQueryWrapper.java deleted file mode 100644 index b0f1fbc..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/JoinQueryWrapper.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.syjiaer.pharmacy.server.common.util; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; - -import java.util.ArrayList; -import java.util.List; - -public class JoinQueryWrapper extends QueryWrapper { - private List joins = new ArrayList<>(); // 存储连接条件 - - // 定义连接条件类 - private static class JoinCondition { - private String alias; - private String table; - private String type; - private String onCondition; - - public JoinCondition(String alias, String table, String type, String onCondition) { - this.alias = alias; - this.table = table; - this.type = type; - this.onCondition = onCondition; - } - - public String getAlias() { - return alias; - } - - public String getTable() { - return table; - } - - public String getType() { - return type; - } - - public String getOnCondition() { - return onCondition; - } - } - - // 实现左连接方法 - public JoinQueryWrapper leftJoin(String tableAlias, String tableName, String onCondition) { - joins.add(new JoinCondition(tableAlias, tableName, "LEFT JOIN", onCondition)); - return this; - } - - // 实现右连接方法 - public JoinQueryWrapper rightJoin(String tableAlias, String tableName, String onCondition) { - joins.add(new JoinCondition(tableAlias, tableName, "RIGHT JOIN", onCondition)); - return this; - } - - - // 重写 instance 方法 - @Override - protected JoinQueryWrapper instance() { - return this; - } -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/common/util/PdfUtil.java b/src/main/java/com/syjiaer/pharmacy/server/common/util/PdfUtil.java deleted file mode 100644 index 3415072..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/common/util/PdfUtil.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.syjiaer.pharmacy.server.common.util; - -import com.syjiaer.pharmacy.server.common.exception.MessageException; -import net.sf.jasperreports.engine.*; -import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; -import org.springframework.stereotype.Component; - -import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -@Component -public class PdfUtil { - public void setPdf(String templateName,String fileName, Map map, List> list) { - InputStream inputStream = PdfUtil.class.getClassLoader().getResourceAsStream("jasTemplate\\"+templateName+".jasper"); - JRDataSource dataSource = null; - if(list == null){ - dataSource = new JREmptyDataSource(); - }else{ - dataSource = new JRBeanCollectionDataSource(list); - } - if(map==null){ - map = new HashMap(); - } - try { - JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, map, dataSource); - // 生成随机文件名 - String randomFileName = UUID.randomUUID().toString() + ".pdf"; - // 导出PDF到指定路径 - JasperExportManager.exportReportToPdfFile(jasperPrint, fileName); - // 返回随机文件名 - return; - } catch (Exception e) { - e.printStackTrace(); - throw new MessageException("生成PDF出错"); - - - } finally { - try { - if (inputStream != null) { - inputStream.close(); // 确保输入流关闭 - } - } catch (Exception e) { - e.printStackTrace(); - throw new MessageException("关闭PDF流出错"); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseDefaultController.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseDefaultController.java deleted file mode 100644 index 431f7c0..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseDefaultController.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.controller; - - -public class BaseDefaultController extends BaseController { - -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseSocialController.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseSocialController.java deleted file mode 100644 index e4cfbee..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/BaseSocialController.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.IService; -import com.syjiaer.pharmacy.server.common.vo.Page; -import org.springframework.beans.factory.annotation.Value; - -import java.util.List; - -public class BaseSocialController extends BaseController { - @Value("${common.isdev}") - private Boolean isdev; - - protected Page SelectPage(QueryWrapper queryWrapper, int page_num, int size, IService service, String order_field, String order_type) { - Long total_count = service.count(queryWrapper); - queryWrapper.last("LIMIT " + size + " OFFSET " + (page_num - 1) * size); - if (order_type.equals("asc")) { - queryWrapper.orderByAsc(order_field); - } else { - queryWrapper.orderByDesc(order_field); - } - - List socialDirectoryList = service.list(queryWrapper); - int total_page = (int) Math.ceil((double) total_count / size); - Page page = new Page(); - page.setTotal_page(total_page); - page.setTotal_count(total_count); - page.setList(socialDirectoryList); - return page; - } - - protected Page SelectPage(QueryWrapper queryWrapper, int page_num, int size, IService service) { - return SelectPage(queryWrapper, page_num, size, service, "id", "asc"); - } -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/CommonConfigController.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/CommonConfigController.java deleted file mode 100644 index 3ea9561..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/CommonConfigController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.syjiaer.pharmacy.server.common.vo.Result; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonConfig; -import com.syjiaer.pharmacy.server.modules.base.service.ICommonConfigService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - *

- * 前端控制器 - *

- * - * @author NiuZiYuan - * @since 2025-02-24 - */ -@RestController -@RequestMapping("/common/config") -public class CommonConfigController extends BaseController { - @Autowired - private ICommonConfigService iCommonConfigService; - - @RequestMapping("list") - public Result list() { - return success(iCommonConfigService.list()); - } - - @RequestMapping("getall") - public Result getall() { - List list = iCommonConfigService.list(); - Map map=new HashMap<>(); - for (CommonConfig commonConfig : list) { - map.put(commonConfig.getK(),commonConfig.getVal()); - } - return success(map); - } - - @RequestMapping("edit") - public Result edit() { - Map parms = getParms(); - for (String key : parms.keySet()) { - CommonConfig commonConfig = new CommonConfig(); - commonConfig.setK(key); - commonConfig.setVal(parms.get(key).toString()); - iCommonConfigService.saveOrUpdate(commonConfig); - } - return success(); - } - @RequestMapping("setcert") - public Result sercert() { - Map parms = getParms(); - String encryptedText= parmsUtil.getString("encryptedText","请输入密文"); - CommonConfig commonConfig=new CommonConfig(); - commonConfig.setK("common_cert"); - commonConfig.setVal(encryptedText); - iCommonConfigService.saveOrUpdate(commonConfig); - return success(); - } - @RequestMapping("get") - public Result get() { - String key= parmsUtil.getString("key","请输入key"); - QueryWrapper queryWrapper=new QueryWrapper(); - queryWrapper.eq("k",key); - return success(iCommonConfigService.getOne(queryWrapper)); - } - -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/ManagerUserController.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/ManagerUserController.java deleted file mode 100644 index 907e3cb..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/controller/ManagerUserController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.syjiaer.pharmacy.server.common.vo.Result; -import com.syjiaer.pharmacy.server.modules.base.entity.ManagerUser; -import com.syjiaer.pharmacy.server.modules.base.service.IManagerUserService; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.security.Keys; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.crypto.SecretKey; -import java.util.Date; -import java.util.Map; - -/** - *

- * 前端控制器 - *

- * - * @author NiuZiYuan - * @since 2025-02-28 - */ -@RestController -@RequestMapping("/manager/user") -public class ManagerUserController extends BaseDefaultController { - @Autowired - private IManagerUserService managerUserService; - - @Value("${jwt.expiration}") - private long jwtExpiration; - - @PostMapping("login") - public Result login() { - Map parms = getParms(); - String username = (String) parms.get("username"); - String password = (String) parms.get("password"); - if (username == null || username.isEmpty()) { - return error("请输入用户名"); - } - if (password == null || password.isEmpty()) { - return error("请输入密码"); - } - ManagerUser managerUser = managerUserService.getOne(new QueryWrapper().eq("username", username).eq("password", password)); - if (managerUser == null) { - return error("用户名或密码错误"); - } - Date exdata = new Date(System.currentTimeMillis() + jwtExpiration * 1000); - System.out.println(exdata); - SecretKey key = Keys.hmacShaKeyFor(jwtSecret.getBytes()); - String token = Jwts.builder() - .subject(managerUser.getId().toString()) // 用户ID作为主题 - .expiration(exdata) - .claim("username", managerUser.getUsername()) // 添加自定义声明 - .claim("name", managerUser.getName()) // 添加自定义声明 - .claim("userId", managerUser.getId()) - .signWith(key) - .compact(); - return success(token); - } - - //验证token - @PostMapping("verify") - public Result verify() { - ManagerUser managerUser =getManagerUser(); - return success(managerUser); - } - - -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonConfigService.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonConfigService.java deleted file mode 100644 index cde89bc..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonConfigService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonConfig; - -/** - *

- * 服务类 - *

- * - * @author NiuZiYuan - * @since 2025-02-24 - */ -public interface ICommonConfigService extends IService { - -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonLogService.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonLogService.java deleted file mode 100644 index 946e12d..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/ICommonLogService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonLog; - -/** - *

- * 服务类 - *

- * - * @author NiuZiYuan - * @since 2025-04-14 - */ -public interface ICommonLogService extends IService { - - - void saveLog(String message, Integer managerId); -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/IManagerUserService.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/IManagerUserService.java deleted file mode 100644 index 3331f30..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/IManagerUserService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.syjiaer.pharmacy.server.modules.base.entity.ManagerUser; - -/** - *

- * 服务类 - *

- * - * @author NiuZiYuan - * @since 2025-02-28 - */ -public interface IManagerUserService extends IService { - -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonConfigServiceImpl.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonConfigServiceImpl.java deleted file mode 100644 index 187d581..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonConfigServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonConfig; -import com.syjiaer.pharmacy.server.modules.base.mapper.CommonConfigMapper; -import com.syjiaer.pharmacy.server.modules.base.service.ICommonConfigService; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author NiuZiYuan - * @since 2025-02-24 - */ -@Service -public class CommonConfigServiceImpl extends ServiceImpl implements ICommonConfigService { - -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonLogServiceImpl.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonLogServiceImpl.java deleted file mode 100644 index 588201e..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/CommonLogServiceImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.syjiaer.pharmacy.server.modules.base.entity.CommonLog; -import com.syjiaer.pharmacy.server.modules.base.mapper.CommonLogMapper; -import com.syjiaer.pharmacy.server.modules.base.service.ICommonLogService; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; - -/** - *

- * 服务实现类 - *

- * - * @author NiuZiYuan - * @since 2025-04-14 - */ -@Service -public class CommonLogServiceImpl extends ServiceImpl implements ICommonLogService { - - @Override - public void saveLog(String message, Integer managerId) { - CommonLog commonLog = new CommonLog(); - commonLog.setMessage(message); - commonLog.setManagerId(managerId); - commonLog.setCreateDatetime(LocalDateTime.now()); - save(commonLog); - } -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/ManagerUserServiceImpl.java b/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/ManagerUserServiceImpl.java deleted file mode 100644 index 1c84823..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/base/service/impl/ManagerUserServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.base.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.syjiaer.pharmacy.server.modules.base.entity.ManagerUser; -import com.syjiaer.pharmacy.server.modules.base.mapper.ManagerUserMapper; -import com.syjiaer.pharmacy.server.modules.base.service.IManagerUserService; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author NiuZiYuan - * @since 2025-02-28 - */ -@Service -public class ManagerUserServiceImpl extends ServiceImpl implements IManagerUserService { - -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/social/BaseService.java b/src/main/java/com/syjiaer/pharmacy/server/modules/social/BaseService.java deleted file mode 100644 index 7437ff4..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/social/BaseService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.social; - -import com.syjiaer.pharmacy.server.common.util.InfoUtil; -import org.springframework.beans.factory.annotation.Autowired; - -public abstract class BaseService { - @Autowired - private InfoUtil infoUtil; - public void commonLog(String message){ - - } -} diff --git a/src/main/java/com/syjiaer/pharmacy/server/modules/social/service/SocialDirectoryService.java b/src/main/java/com/syjiaer/pharmacy/server/modules/social/service/SocialDirectoryService.java deleted file mode 100644 index 7dfb046..0000000 --- a/src/main/java/com/syjiaer/pharmacy/server/modules/social/service/SocialDirectoryService.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.syjiaer.pharmacy.server.modules.social.service; - -import com.syjiaer.pharmacy.server.modules.social.BaseService; -import org.springframework.stereotype.Service; - -@Service -public class SocialDirectoryService extends BaseService { - - -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2101933..f690eb9 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: server datasource: driver-class-name: org.postgresql.Driver - url: jdbc:postgresql://dev.jizhiweb.cn:15321/syjiaer_pharmacy + url: jdbc:postgresql://dev.jizhiweb.cn:15321/syjiaer_clinic username: postgres password: i7L0BS91pADGuy7z hikari: diff --git a/src/main/resources/xml/CommonConfigMapper.xml b/src/main/resources/xml/CommonConfigMapper.xml new file mode 100644 index 0000000..752496f --- /dev/null +++ b/src/main/resources/xml/CommonConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/CommonLogMapper.xml b/src/main/resources/xml/CommonLogMapper.xml new file mode 100644 index 0000000..a862715 --- /dev/null +++ b/src/main/resources/xml/CommonLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryApplyLogMapper.xml b/src/main/resources/xml/InventoryApplyLogMapper.xml new file mode 100644 index 0000000..394853d --- /dev/null +++ b/src/main/resources/xml/InventoryApplyLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryApplyMapper.xml b/src/main/resources/xml/InventoryApplyMapper.xml new file mode 100644 index 0000000..f10a194 --- /dev/null +++ b/src/main/resources/xml/InventoryApplyMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryCheckLogMapper.xml b/src/main/resources/xml/InventoryCheckLogMapper.xml new file mode 100644 index 0000000..5b90e2c --- /dev/null +++ b/src/main/resources/xml/InventoryCheckLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryCheckMapper.xml b/src/main/resources/xml/InventoryCheckMapper.xml new file mode 100644 index 0000000..facf01f --- /dev/null +++ b/src/main/resources/xml/InventoryCheckMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryInitMapper.xml b/src/main/resources/xml/InventoryInitMapper.xml new file mode 100644 index 0000000..87d8af3 --- /dev/null +++ b/src/main/resources/xml/InventoryInitMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryLogMapper.xml b/src/main/resources/xml/InventoryLogMapper.xml new file mode 100644 index 0000000..cf97a7d --- /dev/null +++ b/src/main/resources/xml/InventoryLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryMapper.xml b/src/main/resources/xml/InventoryMapper.xml new file mode 100644 index 0000000..0f5ccdd --- /dev/null +++ b/src/main/resources/xml/InventoryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryPurchaseLogMapper.xml b/src/main/resources/xml/InventoryPurchaseLogMapper.xml new file mode 100644 index 0000000..36c54b1 --- /dev/null +++ b/src/main/resources/xml/InventoryPurchaseLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventoryPurchaseMapper.xml b/src/main/resources/xml/InventoryPurchaseMapper.xml new file mode 100644 index 0000000..23b30f5 --- /dev/null +++ b/src/main/resources/xml/InventoryPurchaseMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/InventorySupplierMapper.xml b/src/main/resources/xml/InventorySupplierMapper.xml new file mode 100644 index 0000000..ad7fad8 --- /dev/null +++ b/src/main/resources/xml/InventorySupplierMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/ItemMapper.xml b/src/main/resources/xml/ItemMapper.xml new file mode 100644 index 0000000..b7e7987 --- /dev/null +++ b/src/main/resources/xml/ItemMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/ManagerUserMapper.xml b/src/main/resources/xml/ManagerUserMapper.xml new file mode 100644 index 0000000..51fb051 --- /dev/null +++ b/src/main/resources/xml/ManagerUserMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/SocialDirectoryLimitMapper.xml b/src/main/resources/xml/SocialDirectoryLimitMapper.xml new file mode 100644 index 0000000..f8b48b2 --- /dev/null +++ b/src/main/resources/xml/SocialDirectoryLimitMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/SocialDirectoryMapper.xml b/src/main/resources/xml/SocialDirectoryMapper.xml index 57cdcb9..6ca5c9c 100644 --- a/src/main/resources/xml/SocialDirectoryMapper.xml +++ b/src/main/resources/xml/SocialDirectoryMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/src/main/resources/xml/SocialDirectorySelfMapper.xml b/src/main/resources/xml/SocialDirectorySelfMapper.xml new file mode 100644 index 0000000..5230bde --- /dev/null +++ b/src/main/resources/xml/SocialDirectorySelfMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/SocialDirectoryUpinfoMapper.xml b/src/main/resources/xml/SocialDirectoryUpinfoMapper.xml new file mode 100644 index 0000000..1805bc3 --- /dev/null +++ b/src/main/resources/xml/SocialDirectoryUpinfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/xml/SocialDirectoryVersionMapper.xml b/src/main/resources/xml/SocialDirectoryVersionMapper.xml new file mode 100644 index 0000000..159af7b --- /dev/null +++ b/src/main/resources/xml/SocialDirectoryVersionMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java new file mode 100644 index 0000000..c4ff269 --- /dev/null +++ b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java @@ -0,0 +1,21 @@ +package com.syjiaer.clinic.server; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.syjiaer.clinic.server.mapper.social.SocialDirectoryMapper; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ServerApplicationTests { + + @Autowired + private SocialDirectoryMapper socialDirectoryMapper; + @Test + void contextLoads() { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.last("limit 100"); + socialDirectoryMapper.selectList(queryWrapper); + } + +} diff --git a/src/test/java/com/syjiaer/pharmacy/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/pharmacy/server/ServerApplicationTests.java deleted file mode 100644 index 394e2b8..0000000 --- a/src/test/java/com/syjiaer/pharmacy/server/ServerApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.syjiaer.pharmacy.server; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class ServerApplicationTests { - - @Test - void contextLoads() { - } - -}