From fb67c661dff72fd4401a766da4fe53c1c36c0660 Mon Sep 17 00:00:00 2001 From: tangw Date: Fri, 6 Mar 2026 18:48:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czlis/common/constant/CacheConstants.java | 5 +- .../core/domain/entity/lis/SysExeBak.java | 19 ++++ .../czlis/common/utils/LisupdateUtils.java | 61 +++++++++++++ .../mapper/SysExeBakMapper.java | 12 +++ .../interfaceCommon/utils/SysExeBakUtil.java | 28 ++++++ .../main/resources/mapper/SysExeBakMapper.xml | 25 ++++++ .../java/com/czlis/quartz/task/LisTask.java | 11 ++- .../plugin/LisPluginController.java | 42 +++++++++ .../liswork/service/LisPluginService.java | 9 ++ .../service/impl/LisPluginServiceImpl.java | 87 +++++++++++++++++++ 10 files changed, 297 insertions(+), 2 deletions(-) create mode 100644 lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/SysExeBak.java create mode 100644 lis-common/src/main/java/com/czlis/common/utils/LisupdateUtils.java create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/SysExeBakMapper.java create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/SysExeBakUtil.java create mode 100644 lis-interfaceCommon/src/main/resources/mapper/SysExeBakMapper.xml create mode 100644 liswork/src/main/java/com/czlis/liswork/controller/plugin/LisPluginController.java create mode 100644 liswork/src/main/java/com/czlis/liswork/service/LisPluginService.java create mode 100644 liswork/src/main/java/com/czlis/liswork/service/impl/LisPluginServiceImpl.java diff --git a/lis-common/src/main/java/com/czlis/common/constant/CacheConstants.java b/lis-common/src/main/java/com/czlis/common/constant/CacheConstants.java index c7fa6db..2976f89 100644 --- a/lis-common/src/main/java/com/czlis/common/constant/CacheConstants.java +++ b/lis-common/src/main/java/com/czlis/common/constant/CacheConstants.java @@ -50,5 +50,8 @@ public class CacheConstants * lis设置缓存 */ public static final String COM_OPT_KEY = "com_opt:"; - + /** + * lis插件更新缓存 + */ + public static final String SYS_EXE_BAK_KEY="sys_exe_bak:"; } diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/SysExeBak.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/SysExeBak.java new file mode 100644 index 0000000..42aed72 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/SysExeBak.java @@ -0,0 +1,19 @@ +package com.czlis.common.core.domain.entity.lis; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SysExeBak { + private String filepath; + private String filena; + private Date bakdt1; + private Date bakdt2; + private byte[] bakdata1; + private byte[] bakdata2; +} diff --git a/lis-common/src/main/java/com/czlis/common/utils/LisupdateUtils.java b/lis-common/src/main/java/com/czlis/common/utils/LisupdateUtils.java new file mode 100644 index 0000000..2412e09 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/utils/LisupdateUtils.java @@ -0,0 +1,61 @@ +package com.czlis.common.utils; + +import com.alibaba.fastjson2.JSONArray; +import com.czlis.common.constant.CacheConstants; +import com.czlis.common.core.domain.entity.lis.SysExeBak; +import com.czlis.common.core.redis.RedisCache; +import com.czlis.common.utils.spring.SpringUtils; + +import java.util.Collection; +import java.util.List; + +/** + * lis插件更新工具类 + */ +public class LisupdateUtils { + + /** + * 设置代码插件更新缓存 + * + * @param zdlb 插件更新类别 + * @param PluginDatas 插件更新数据列表 + */ + public static void setPluginCache(String zdlb, List PluginDatas) { + //先清除该key的所有缓存,然后再重新设置该key的缓存 + SpringUtils.getBean(RedisCache.class).deleteObject(zdlb); + SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(zdlb), PluginDatas); + } + + /** + * 清空插件更新缓存 + */ + public static void clearPluginCache() { + Collection keys = SpringUtils.getBean(RedisCache.class).keys(CacheConstants.SYS_EXE_BAK_KEY + "*"); + SpringUtils.getBean(RedisCache.class).deleteObject(keys); + } + /** + * 获取插件更新缓存 + * + * @param zdlb 插件更新类别 + * @return PluginDatas 插件更新数据列表 + */ + public static List getPluginCache(String zdlb) { + JSONArray arrayCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(zdlb)); + if (StringUtils.isNotNull(arrayCache)) { + return arrayCache.toList(SysExeBak.class); + } + return null; + } + + + + /** + * 设置cache key + * + * @param configKey 参数键 + * @return 缓存键key + */ + public static String getCacheKey(String configKey) { + return CacheConstants.SYS_EXE_BAK_KEY + configKey; + } +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/SysExeBakMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/SysExeBakMapper.java new file mode 100644 index 0000000..5f8791b --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/SysExeBakMapper.java @@ -0,0 +1,12 @@ +package com.czlis.interfaceCommon.mapper; + +import com.czlis.common.core.domain.entity.lis.SysExeBak; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface SysExeBakMapper { + List queryfilelist(String filepath); + SysExeBak getfile(@Param("filepath") String filepath, @Param("filena") String filena); + SysExeBak getdwfile(@Param("reportid") Integer reportid, @Param("reportkind") String reportkind); +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/SysExeBakUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/SysExeBakUtil.java new file mode 100644 index 0000000..82bfc89 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/SysExeBakUtil.java @@ -0,0 +1,28 @@ +package com.czlis.interfaceCommon.utils; + +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.SysExeBak; +import com.czlis.common.utils.LisupdateUtils; +import com.czlis.interfaceCommon.mapper.SysExeBakMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Component +public class SysExeBakUtil { + @Autowired + SysExeBakMapper sysExeBakMapper; + /** + * 定时检查插件更新 + * @return + */ + public Result checkplugin(){ + List filelist=sysExeBakMapper.queryfilelist("plugin"); + LisupdateUtils.clearPluginCache(); + LisupdateUtils.setPluginCache("plugin",filelist); + return new Result("0","成功!"); + } +} diff --git a/lis-interfaceCommon/src/main/resources/mapper/SysExeBakMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/SysExeBakMapper.xml new file mode 100644 index 0000000..10c146e --- /dev/null +++ b/lis-interfaceCommon/src/main/resources/mapper/SysExeBakMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/lis-quartz/src/main/java/com/czlis/quartz/task/LisTask.java b/lis-quartz/src/main/java/com/czlis/quartz/task/LisTask.java index de1350d..4f7084c 100644 --- a/lis-quartz/src/main/java/com/czlis/quartz/task/LisTask.java +++ b/lis-quartz/src/main/java/com/czlis/quartz/task/LisTask.java @@ -6,6 +6,7 @@ import com.czlis.common.core.domain.Result; import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; import com.czlis.interfaceCommon.pojo.inter.SetDict; import com.czlis.interfaceCommon.utils.LisInterfaceUtil; +import com.czlis.interfaceCommon.utils.SysExeBakUtil; import com.czlis.quartz.util.LisTaskUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -23,7 +24,8 @@ public class LisTask { @Autowired private LisInterfaceUtil lisInterfaceUtil; - + @Autowired + private SysExeBakUtil sysExeBakUtil; /** * 获取his科室信息接口定时任务 * @return @@ -85,4 +87,11 @@ public class LisTask { LisTaskUtil.deletePdfFilesBefore(outputPath); return new Result("0","删除文件成功!"); } + /** + * 定时检查插件更新 + * @return + */ + public Result checkplugin(){ + return sysExeBakUtil.checkplugin(); + } } diff --git a/liswork/src/main/java/com/czlis/liswork/controller/plugin/LisPluginController.java b/liswork/src/main/java/com/czlis/liswork/controller/plugin/LisPluginController.java new file mode 100644 index 0000000..83c50b9 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/controller/plugin/LisPluginController.java @@ -0,0 +1,42 @@ +package com.czlis.liswork.controller.plugin; + +import com.czlis.common.annotation.Anonymous; +import com.czlis.common.core.controller.BaseController; +import com.czlis.common.core.domain.Result; +import com.czlis.liswork.service.LisPluginService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +@RequestMapping("/plugin") +@Api(tags = "插件自动更新接口") +@Slf4j +public class LisPluginController extends BaseController { + @Autowired + private LisPluginService lisPluginService; + @Anonymous + @ApiOperation("检查更新时间戳") + @GetMapping("/queryfilelist") + public Result queryfilelist() { + return lisPluginService.queryfilelist(); + } + @Anonymous + @ApiOperation("获取更新文件") + @GetMapping("/getfile") + public Result getfile(String filename) { + return lisPluginService.getfile(filename); + } + @Anonymous + @ApiOperation("获取dw文件") + @GetMapping("/getdwfile") + public Result getdwfile(String filename) { + return lisPluginService.getdwfile(filename); + } + +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/LisPluginService.java b/liswork/src/main/java/com/czlis/liswork/service/LisPluginService.java new file mode 100644 index 0000000..921cd6e --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/service/LisPluginService.java @@ -0,0 +1,9 @@ +package com.czlis.liswork.service; + +import com.czlis.common.core.domain.Result; + +public interface LisPluginService { + Result queryfilelist(); + Result getfile(String filename); + Result getdwfile(String filename); +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LisPluginServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LisPluginServiceImpl.java new file mode 100644 index 0000000..461996f --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LisPluginServiceImpl.java @@ -0,0 +1,87 @@ +package com.czlis.liswork.service.impl; + +import cn.hutool.core.codec.Base64; +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.SysExeBak; +import com.czlis.common.utils.LisupdateUtils; +import com.czlis.interfaceCommon.mapper.SysExeBakMapper; +import com.czlis.interfaceCommon.utils.CommonUtil; +import com.czlis.liswork.service.LisPluginService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class LisPluginServiceImpl implements LisPluginService { + @Autowired + SysExeBakMapper sysExeBakMapper; + @Autowired + CommonUtil commonUtil; + @Override + public Result queryfilelist(){ + //List filelist=sysExeBakMapper.queryfilelist("plugin"); + List filelist=LisupdateUtils.getPluginCache("plugin"); + return new Result("0","成功",filelist); + } + @Override + public Result getfile(String filename){ + SysExeBak file=sysExeBakMapper.getfile("plugin",filename); + if(file!=null){ + byte[] txnr = file.getBakdata1(); + String filedata = Base64.encode(txnr); + Map map=new HashMap<>(); + map.put("filename",filename); + map.put("filesize",txnr.length+""); + map.put("filedata",filedata); + return new Result("0","成功",map); + } + return new Result("-1","未找到"); + } + + /** + * 获取打印条码模板的DW文件 + * @param filetype + * @return + */ + @Override + public Result getdwfile(String filetype){ + String reportids=commonUtil.getComOptValue("_MZCX_",filetype); + if(reportids==null||"".equals(reportids))return new Result("-1","未找到模板"); + Integer reportid = Integer.parseInt(reportids); + String reportkind="C"; + switch (filetype) { + case "BARRPT": + //条码模板 + reportkind="C"; + break; + case "REQRPT": + //申请单模板 + reportkind="F"; + break; + case "RBKRPT": + //回执单模板 + reportkind="D"; + break; + case "BARRPT_ZJM": + //主界面条码模板 + reportkind="C"; + break; + } + + SysExeBak file=sysExeBakMapper.getdwfile(reportid,"C"); + if(file!=null){ + byte[] txnr = file.getBakdata1(); + String filedata = Base64.encode(txnr); + Map map=new HashMap<>(); + map.put("filesize",txnr.length+""); + map.put("filedata",filedata); + return new Result("0","成功",map); + } + return new Result("-1","未找到"); + } +}