From d41e02aea75ee2238c28b18cf47a96e25e2071d5 Mon Sep 17 00:00:00 2001 From: tangw Date: Thu, 27 Aug 2026 14:30:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/lis/LabInstrgroupdetail.java | 18 ++ .../domain/entity/lis/LabInstrgroupmain.java | 20 ++ .../common/core/domain/entity/lis/XmComp.java | 3 + .../constants/SysLogConstants.java | 2 + lis-system/pom.xml | 2 +- .../czlis/system/config/MyBatisConfig.java | 9 + .../system/config/MyBatisPluginConfig.java | 29 --- .../SqlPlusToConcatInterceptor.java | 153 ------------- .../SqlServerSqlConvertInterceptor.java | 209 ++++++++++++++++++ .../src/main/resources/application-dm.yml | 61 +++++ .../main/resources/application-kingbase.yml | 61 +++++ lis-system/src/main/resources/application.yml | 7 +- .../resources/mapper/system/SysUserMapper.xml | 2 +- .../main/resources/mybatis/mybatis-config.xml | 1 - .../xtwh/LabInstrgroupmainController.java | 67 ++++++ .../controller/xtwh/XmCompController.java | 17 +- .../mapper/xtwh/LabInstrgroupmainMapper.java | 17 ++ .../liswork/mapper/xtwh/XmCompMapper.java | 6 +- .../pojo/DTO/LabInstrgroupmainDTO.java | 18 ++ .../com/czlis/liswork/pojo/DTO/XmCompDTO.java | 15 ++ .../service/LabInstrgroupmainService.java | 25 +++ .../czlis/liswork/service/XmCompService.java | 7 +- .../xtwh/LabInstrgroupmainServiceImpl.java | 79 +++++++ .../service/impl/xtwh/XmCompServiceImpl.java | 45 +++- .../mapper/LabInstrgroupmainMapper.xml | 70 ++++++ .../main/resources/mapper/XmCompMapper.xml | 27 ++- pom.xml | 4 +- 27 files changed, 768 insertions(+), 206 deletions(-) create mode 100644 lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupdetail.java create mode 100644 lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupmain.java delete mode 100644 lis-system/src/main/java/com/czlis/system/config/MyBatisPluginConfig.java delete mode 100644 lis-system/src/main/java/com/czlis/system/interceptor/SqlPlusToConcatInterceptor.java create mode 100644 lis-system/src/main/java/com/czlis/system/interceptor/SqlServerSqlConvertInterceptor.java create mode 100644 lis-system/src/main/resources/application-dm.yml create mode 100644 lis-system/src/main/resources/application-kingbase.yml create mode 100644 liswork/src/main/java/com/czlis/liswork/controller/xtwh/LabInstrgroupmainController.java create mode 100644 liswork/src/main/java/com/czlis/liswork/mapper/xtwh/LabInstrgroupmainMapper.java create mode 100644 liswork/src/main/java/com/czlis/liswork/pojo/DTO/LabInstrgroupmainDTO.java create mode 100644 liswork/src/main/java/com/czlis/liswork/pojo/DTO/XmCompDTO.java create mode 100644 liswork/src/main/java/com/czlis/liswork/service/LabInstrgroupmainService.java create mode 100644 liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrgroupmainServiceImpl.java create mode 100644 liswork/src/main/resources/mapper/LabInstrgroupmainMapper.xml diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupdetail.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupdetail.java new file mode 100644 index 0000000..4159e05 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupdetail.java @@ -0,0 +1,18 @@ +package com.czlis.common.core.domain.entity.lis; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class LabInstrgroupdetail { + + private String fzdh; + private String yq; + private Integer seq; + private String yljg; + + +} diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupmain.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupmain.java new file mode 100644 index 0000000..8151c70 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabInstrgroupmain.java @@ -0,0 +1,20 @@ +package com.czlis.common.core.domain.entity.lis; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class LabInstrgroupmain { + + private String fzdh; + private String fzmc; + private String bz; + private String tj_flag; + private String yljg; + private String yq; + private Integer seq; + +} diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmComp.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmComp.java index e951f2e..9d5e192 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmComp.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmComp.java @@ -14,4 +14,7 @@ public class XmComp { private String xmdh; private String bz; private Integer seq; + private String zhmcold; + private String zhlxold; + private String xmdhold; } diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SysLogConstants.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SysLogConstants.java index 55103c0..4d27ac3 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SysLogConstants.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SysLogConstants.java @@ -21,6 +21,8 @@ public class SysLogConstants { public static final String LISWORK_LOG = "主界面"; public static final String COMOPT_LOG = "后台参数"; public static final String LABINPUTMDL_LOG = "项目模板"; + public static final String LabInstrgroupdetail_LOG="仪器组合"; + public static final String LabInstrgroupmain_LOG="仪器组合明细"; public static final String LABINSTRVSREQCLASS_LOG = "仪器条码类别对照"; public static final String LABTATCTRL_LOG = "TAT设定"; public static final String XMCOMP_LOG = "项目组合"; diff --git a/lis-system/pom.xml b/lis-system/pom.xml index 170fa69..bf3d0df 100644 --- a/lis-system/pom.xml +++ b/lis-system/pom.xml @@ -117,7 +117,7 @@ mssql-jdbc - cn.com.kingbase + com.kingbase kingbase8 diff --git a/lis-system/src/main/java/com/czlis/system/config/MyBatisConfig.java b/lis-system/src/main/java/com/czlis/system/config/MyBatisConfig.java index d970775..6687f0a 100644 --- a/lis-system/src/main/java/com/czlis/system/config/MyBatisConfig.java +++ b/lis-system/src/main/java/com/czlis/system/config/MyBatisConfig.java @@ -1,7 +1,9 @@ package com.czlis.system.config; import com.czlis.common.utils.StringUtils; +import com.czlis.system.interceptor.SqlServerSqlConvertInterceptor; import org.apache.ibatis.io.VFS; +import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.boot.autoconfigure.SpringBootVFS; @@ -105,6 +107,13 @@ public class MyBatisConfig { sessionFactory.setTypeAliasesPackage(typeAliasesPackage); sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ","))); sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation)); + + // ============ 新增:注册自定义MyBatis拦截器 ============ + Interceptor[] plugins = new Interceptor[]{ + new SqlServerSqlConvertInterceptor() + }; + sessionFactory.setPlugins(plugins); + return sessionFactory.getObject(); } } \ No newline at end of file diff --git a/lis-system/src/main/java/com/czlis/system/config/MyBatisPluginConfig.java b/lis-system/src/main/java/com/czlis/system/config/MyBatisPluginConfig.java deleted file mode 100644 index 2e1f7c4..0000000 --- a/lis-system/src/main/java/com/czlis/system/config/MyBatisPluginConfig.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.czlis.system.config; - -import com.czlis.system.interceptor.SqlPlusToConcatInterceptor; -import org.apache.ibatis.session.SqlSessionFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationListener; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.event.ContextRefreshedEvent; -import javax.annotation.Resource; -import java.util.Map; - -@Configuration -public class MyBatisPluginConfig { - - @Resource - private ApplicationContext applicationContext; - - @Bean - public ApplicationListener registerInterceptor() { - return event -> { - Map map = applicationContext.getBeansOfType(SqlSessionFactory.class); - SqlPlusToConcatInterceptor interceptor = new SqlPlusToConcatInterceptor(); - for (SqlSessionFactory sf : map.values()) { - sf.getConfiguration().addInterceptor(interceptor); - } - }; - } -} \ No newline at end of file diff --git a/lis-system/src/main/java/com/czlis/system/interceptor/SqlPlusToConcatInterceptor.java b/lis-system/src/main/java/com/czlis/system/interceptor/SqlPlusToConcatInterceptor.java deleted file mode 100644 index b535557..0000000 --- a/lis-system/src/main/java/com/czlis/system/interceptor/SqlPlusToConcatInterceptor.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.czlis.system.interceptor; - -import org.apache.ibatis.executor.statement.StatementHandler; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.plugin.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.util.Properties; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * SQLServer转达梦 MyBatis SQL兼容拦截器 - * 全部正则模式,不依赖JSqlParser解析器,解决低版本jar包类缺失问题 - * 注意:该模式无法区分数字相加和字符串拼接,SQL尽量不要同时出现数字+运算 - */ -@Intercepts({ - @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class}) -}) -public class SqlPlusToConcatInterceptor implements Interceptor { - - private static final Logger log = LoggerFactory.getLogger(SqlPlusToConcatInterceptor.class); - - // '常量'+col 或者 col+'常量' - private static final Pattern CONCAT_PATTERN = Pattern.compile("(\\s*'[^']*'\\s*\\+|\\+\\s*'[^']*')"); - - // CHARINDEX(a,b) - private static final Pattern CHARINDEX_PATTERN = Pattern.compile("CHARINDEX\\s*\\(\\s*(.+?)\\s*,\\s*(.+?)\\s*\\)", Pattern.CASE_INSENSITIVE); - - // ISNULL(a,b) - private static final Pattern ISNULL_2PARAM_PATTERN = Pattern.compile("ISNULL\\s*\\(\\s*(.+?)\\s*,\\s*(.+?)\\s*\\)", Pattern.CASE_INSENSITIVE); - - // RIGHT(REPLICATE(' ',N)+expr,N) - private static final Pattern RIGHT_REPLICATE_PATTERN = Pattern.compile( - "RIGHT\\s*\\(\\s*REPLICATE\\s*\\(\\s*'\\s*'\\s*,\\s*(\\d+)\\s*\\)\\s*\\+\\s*(.+?)\\s*,\\s*(\\d+)\\s*\\)", - Pattern.CASE_INSENSITIVE | Pattern.DOTALL - ); - - // REPLICATE(str,N) - private static final Pattern REPLICATE_PATTERN = Pattern.compile( - "REPLICATE\\s*\\(\\s*(.+?)\\s*,\\s*(\\d+)\\s*\\)", - Pattern.CASE_INSENSITIVE | Pattern.DOTALL - ); - - @Override - public Object intercept(Invocation invocation) throws Throwable { - log.info("====进入SQL兼容拦截器===="); - StatementHandler statementHandler = (StatementHandler) invocation.getTarget(); - BoundSql boundSql = statementHandler.getBoundSql(); - String originSql = boundSql.getSql(); - Connection connection = (Connection) invocation.getArgs()[0]; - - DatabaseMetaData metaData = connection.getMetaData(); - String productName = metaData.getDatabaseProductName(); - boolean enableConvert = productName != null && productName.toUpperCase().contains("DM"); - log.info("识别数据库产品名称:[{}], 是否开启SQL兼容转换:{}", productName, enableConvert); - - try { - if (!enableConvert) { - return invocation.proceed(); - } - - String lowerSql = originSql.trim().toLowerCase(); - if (lowerSql.startsWith("call ") || lowerSql.startsWith("exec ")) { - return invocation.proceed(); - } - - String targetSql = originSql; - StringBuffer sb = new StringBuffer(); - - //1. RIGHT(REPLICATE(' ',N)+expr,N) → SUBSTR(LPAD(expr,N,' '),1,N) - Matcher mRightRep = RIGHT_REPLICATE_PATTERN.matcher(targetSql); - sb.setLength(0); - while (mRightRep.find()) { - String num = mRightRep.group(1).trim(); - String expr = mRightRep.group(2).trim(); - String newExpr = String.format("SUBSTR(LPAD(%s,%s,' '),1,%s)", expr, num, num); - mRightRep.appendReplacement(sb, Matcher.quoteReplacement(newExpr)); - } - mRightRep.appendTail(sb); - targetSql = sb.toString(); - - //2. 'xxx' + col / col + 'xxx' 加号替换为 || - Matcher mConcat = CONCAT_PATTERN.matcher(targetSql); - sb.setLength(0); - while (mConcat.find()) { - String found = mConcat.group(); - mConcat.appendReplacement(sb, Matcher.quoteReplacement(found.replace("+", "||"))); - } - mConcat.appendTail(sb); - targetSql = sb.toString(); - - //3. CHARINDEX(a,b) → INSTR(b,a) - Matcher mCharIndex = CHARINDEX_PATTERN.matcher(targetSql); - sb.setLength(0); - while (mCharIndex.find()) { - String p1 = mCharIndex.group(1).trim(); - String p2 = mCharIndex.group(2).trim(); - String newFunc = String.format("INSTR(%s,%s)", p2, p1); - mCharIndex.appendReplacement(sb, Matcher.quoteReplacement(newFunc)); - } - mCharIndex.appendTail(sb); - targetSql = sb.toString(); - - //4. ISNULL(a,b) → NVL(a,b) - Matcher mIsnull = ISNULL_2PARAM_PATTERN.matcher(targetSql); - sb.setLength(0); - while (mIsnull.find()) { - String p1 = mIsnull.group(1).trim(); - String p2 = mIsnull.group(2).trim(); - String newFunc = String.format("NVL(%s,%s)", p1, p2); - mIsnull.appendReplacement(sb, Matcher.quoteReplacement(newFunc)); - } - mIsnull.appendTail(sb); - targetSql = sb.toString(); - - //5. REPLICATE(str,N) → REPEAT(str,N) - Matcher mRep = REPLICATE_PATTERN.matcher(targetSql); - sb.setLength(0); - while (mRep.find()) { - String src = mRep.group(1).trim(); - String cnt = mRep.group(2).trim(); - String newFunc = String.format("REPEAT(%s,%s)", src, cnt); - mRep.appendReplacement(sb, Matcher.quoteReplacement(newFunc)); - } - mRep.appendTail(sb); - targetSql = sb.toString(); - - //回填修改后的SQL - if (!originSql.equals(targetSql)) { - log.debug("【SQL兼容转换】\n原SQL:\n{}\n转换后:\n{}", originSql, targetSql); - org.apache.ibatis.reflection.MetaObject metaObject - = org.apache.ibatis.reflection.SystemMetaObject.forObject(statementHandler); - metaObject.setValue("delegate.boundSql.sql", targetSql); - } - } catch (Exception e) { - log.warn("【SQL转换处理异常,直接放行原始SQL】sql:{} , ex:{}", originSql, e.getMessage()); - } - return invocation.proceed(); - } - - @Override - public Object plugin(Object target) { - return Plugin.wrap(target, this); - } - - @Override - public void setProperties(Properties properties) { - } -} \ No newline at end of file diff --git a/lis-system/src/main/java/com/czlis/system/interceptor/SqlServerSqlConvertInterceptor.java b/lis-system/src/main/java/com/czlis/system/interceptor/SqlServerSqlConvertInterceptor.java new file mode 100644 index 0000000..e8bcdb0 --- /dev/null +++ b/lis-system/src/main/java/com/czlis/system/interceptor/SqlServerSqlConvertInterceptor.java @@ -0,0 +1,209 @@ +package com.czlis.system.interceptor; + +import org.apache.ibatis.executor.statement.StatementHandler; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.plugin.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 统一SQL跨数据库转换拦截器 + * 源SQL标准:SQL Server语法 + * 目标适配:达梦 DM8 / 人大金仓 KingbaseES + * 转换清单: + * 1. 字符串 +拼接 → || + * 2. REPLICATE(str,n) → REPEAT(str,n) + * 3. CHARINDEX(needle,haystack) 差异化转换 + * - DM:INSTR(haystack,needle) + * - Kingbase:POSITION(needle IN haystack) + * 4. ISNULL(expr,default) 差异化转换 + * - DM:NVL(expr,default) + * - Kingbase:COALESCE(expr,default) + * 5. Kingbase:GETDATE() → CURRENT_TIMESTAMP + * 6. Kingbase:sys_xxx 系统表补schema dbo. + */ +@Intercepts({ + @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class}) +}) +@SuppressWarnings("DuplicatedCode") +public class SqlServerSqlConvertInterceptor implements Interceptor { + + private static final Logger log = LoggerFactory.getLogger(SqlServerSqlConvertInterceptor.class); + + // ============ 配置项,生产环境建议关闭完整SQL打印 ============ + private static final boolean PRINT_FULL_SQL_LOG = false; + + // ==================== 通用正则 ==================== + // 规避:数字加法 1+2,只匹配一侧/两侧存在字符串常量的加号拼接(仍有局限,极致方案需要SQL解析器) + private static final Pattern SQL_PLUS_CONCAT_PATTERN = Pattern.compile( + "((['\"].*?['\"])|[a-zA-Z0-9_.]+)\\s*\\+\\s*((['\"].*?['\"])|[a-zA-Z0-9_.]+)", + Pattern.CASE_INSENSITIVE + ); + + private static final Pattern REPLICATE_PATTERN = Pattern.compile( + "REPLICATE\\s*\\(\\s*(.+?)\\s*,\\s*(\\d+)\\s*\\)", + Pattern.CASE_INSENSITIVE + ); + + // ==================== 达梦DM正则 ==================== + private static final Pattern DM_CHARINDEX_PATTERN = Pattern.compile( + "CHARINDEX\\s*\\(\\s*(.+?)\\s*,\\s*(.+?)\\s*\\)", + Pattern.CASE_INSENSITIVE + ); + private static final Pattern DM_ISNULL_PATTERN = Pattern.compile( + "ISNULL\\s*\\(\\s*(.+?)\\s*,\\s*(.+?)\\s*\\)", + Pattern.CASE_INSENSITIVE + ); + + // ==================== 金仓Kingbase正则 ==================== + private static final Pattern KINGBASE_CHARINDEX_PATTERN = Pattern.compile( + "CHARINDEX\\s*\\(\\s*(.+?)\\s*,\\s*(.+?)\\s*\\)", + Pattern.CASE_INSENSITIVE + ); + private static final Pattern KINGBASE_ISNULL_PATTERN = Pattern.compile( + "ISNULL\\s*\\(\\s*(.+?)\\s*,\\s*(.+?)\\s*\\)", + Pattern.CASE_INSENSITIVE + ); + private static final Pattern KINGBASE_GETDATE_PATTERN = Pattern.compile( + "\\bGETDATE\\s*\\(\\s*\\)", + Pattern.CASE_INSENSITIVE + ); + private static final Pattern[] KINGBASE_SYS_TABLE_PATTERNS = { + Pattern.compile("\\bsys_config\\b", Pattern.CASE_INSENSITIVE), + Pattern.compile("\\bsys_user\\b", Pattern.CASE_INSENSITIVE), + Pattern.compile("\\bsys_role\\b", Pattern.CASE_INSENSITIVE), + Pattern.compile("\\bsys_sequence\\b", Pattern.CASE_INSENSITIVE) + }; + private static final String KINGBASE_SYS_TABLE_REPLACE = "dbo.$0"; + + @Override + public Object intercept(Invocation invocation) throws Throwable { + StatementHandler statementHandler = (StatementHandler) invocation.getTarget(); + BoundSql boundSql = statementHandler.getBoundSql(); + String originSql = boundSql.getSql(); + Connection connection = (Connection) invocation.getArgs()[0]; + + // 获取数据库类型 + DatabaseMetaData metaData = connection.getMetaData(); + String rawDbName = metaData.getDatabaseProductName(); + String productName = rawDbName.toUpperCase().trim(); + boolean isDm = productName.contains("DM"); + boolean isKingbase = productName.contains("KINGBASE"); + + if (!isDm && !isKingbase) { + return invocation.proceed(); + } + + // 跳过存储过程调用 + String lowerSql = originSql.trim().toLowerCase(); + if (lowerSql.startsWith("call ") || lowerSql.startsWith("exec ")) { + return invocation.proceed(); + } + + String targetSql = originSql; + try { + // 1. REPLICATE -> REPEAT + targetSql = replaceAll(targetSql, REPLICATE_PATTERN, m -> { + String expr = Matcher.quoteReplacement(m.group(1)); + String num = Matcher.quoteReplacement(m.group(2)); + return "REPEAT(" + expr + "," + num + ")"; + }); + + // 2. 字符串 + 拼接 转为 || + targetSql = replaceAll(targetSql, SQL_PLUS_CONCAT_PATTERN, m -> { + String g1 = Matcher.quoteReplacement(m.group(1)); + String g2 = Matcher.quoteReplacement(m.group(2)); + // 简单过滤:两边都是数字则不转换,防止破坏数值运算(简易策略) + if (isNumeric(g1) && isNumeric(g2)) { + return m.group(); + } + return g1 + " || " + g2; + }); + + if (isDm) { + // CHARINDEX(a,b) → INSTR(b,a) + targetSql = replaceAll(targetSql, DM_CHARINDEX_PATTERN, m -> { + String p1 = Matcher.quoteReplacement(m.group(1)); + String p2 = Matcher.quoteReplacement(m.group(2)); + return "INSTR(" + p2 + "," + p1 + ")"; + }); + // ISNULL → NVL + targetSql = replaceAll(targetSql, DM_ISNULL_PATTERN, m -> { + String p1 = Matcher.quoteReplacement(m.group(1)); + String p2 = Matcher.quoteReplacement(m.group(2)); + return "NVL(" + p1 + "," + p2 + ")"; + }); + } else if (isKingbase) { + // CHARINDEX(a,b) → POSITION(a IN b) + targetSql = replaceAll(targetSql, KINGBASE_CHARINDEX_PATTERN, m -> { + String p1 = Matcher.quoteReplacement(m.group(1)); + String p2 = Matcher.quoteReplacement(m.group(2)); + return "POSITION(" + p1 + " IN " + p2 + ")"; + }); + // ISNULL → COALESCE + targetSql = replaceAll(targetSql, KINGBASE_ISNULL_PATTERN, m -> { + String p1 = Matcher.quoteReplacement(m.group(1)); + String p2 = Matcher.quoteReplacement(m.group(2)); + return "COALESCE(" + p1 + "," + p2 + ")"; + }); + // 【修复】GETDATE() → LOCALTIMESTAMP,无时区timestamp + targetSql = replaceAll(targetSql, KINGBASE_GETDATE_PATTERN, matcher -> "LOCALTIMESTAMP"); + + // 系统表补schema,负向断言防止重复生成 dbo.dbo.xxx + for (Pattern tablePat : KINGBASE_SYS_TABLE_PATTERNS) { + targetSql = replaceAll(targetSql, tablePat, m -> "dbo." + m.group()); + } + } + + // 改写BoundSql + if (!originSql.equals(targetSql)) { + org.apache.ibatis.reflection.MetaObject metaObject + = org.apache.ibatis.reflection.SystemMetaObject.forObject(statementHandler); + metaObject.setValue("delegate.boundSql.sql", targetSql); + if (PRINT_FULL_SQL_LOG) { + log.info("【SQL转换生效】数据库:{} \n原SQL:\n{}\n转换后:\n{}", productName, originSql, targetSql); + } else { + log.debug("【SQL转换生效】数据库:{}", productName); + } + } + } catch (Exception e) { + log.warn("【SQL语法转换异常,放行原始SQL】msg={}", e.getMessage(), e); + } + return invocation.proceed(); + } + + /** + * 通用正则替换工具,消除重复StringBuffer样板代码 + */ + private String replaceAll(String sql, Pattern pattern, java.util.function.Function replacer) { + Matcher matcher = pattern.matcher(sql); + StringBuffer sb = new StringBuffer(); + while (matcher.find()) { + matcher.appendReplacement(sb, Matcher.quoteReplacement(replacer.apply(matcher))); + } + matcher.appendTail(sb); + return sb.toString(); + } + + /** + * 简易判断是否纯数字,用于区分字符串加号与数值加法 + */ + private boolean isNumeric(String str) { + return str.matches("^\\d+(\\.\\d+)?$"); + } + + @Override + public Object plugin(Object target) { + return Plugin.wrap(target, this); + } + + @Override + public void setProperties(Properties properties) { + } +} diff --git a/lis-system/src/main/resources/application-dm.yml b/lis-system/src/main/resources/application-dm.yml new file mode 100644 index 0000000..cbda344 --- /dev/null +++ b/lis-system/src/main/resources/application-dm.yml @@ -0,0 +1,61 @@ +# 数据源配置 +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: dm.jdbc.driver.DmDriver + druid: + # 主库数据源 + master: + url: jdbc:dm://118.31.187.160:5238?schema=DBO&zeroDateTimeBehavior=convertToNull + username: SYSDBA + password: Aa123$%^ + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: czlis + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 10000 + merge-sql: true + wall: + config: + multi-statement-allow: true \ No newline at end of file diff --git a/lis-system/src/main/resources/application-kingbase.yml b/lis-system/src/main/resources/application-kingbase.yml new file mode 100644 index 0000000..a974bff --- /dev/null +++ b/lis-system/src/main/resources/application-kingbase.yml @@ -0,0 +1,61 @@ +# 数据源配置 +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.kingbase8.Driver + druid: + # 主库数据源 + master: + url: jdbc:kingbase8://192.168.100.110:54321/lisnet?currentSchema=dbo + username: system + password: Aa123$%^ + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: czlis + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 10000 + merge-sql: true + wall: + config: + multi-statement-allow: true \ No newline at end of file diff --git a/lis-system/src/main/resources/application.yml b/lis-system/src/main/resources/application.yml index 526f7fe..c8fcfa3 100644 --- a/lis-system/src/main/resources/application.yml +++ b/lis-system/src/main/resources/application.yml @@ -134,9 +134,12 @@ mybatis: # PageHelper分页插件 pagehelper: - helperDialect: sqlserver + # helperDialect: postgresql + auto-runtime-dialect: true supportMethodsArguments: true - params: count=countSql + params: count=countSql;pageNum=pageNum;pageSize=pageSize + reasonable: true # 页码合理化,按需开启 + pageSizeZero: false # pageSize=0 是否查询全部 # Swagger配置 swagger: diff --git a/lis-system/src/main/resources/mapper/system/SysUserMapper.xml b/lis-system/src/main/resources/mapper/system/SysUserMapper.xml index 4997469..071dc23 100644 --- a/lis-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/lis-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -193,7 +193,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" password = #{password}, status = #{status}, login_ip = #{loginIp}, - login_date = #{loginDate}, + login_date = #{loginDate, jdbcType=TIMESTAMP}, update_by = #{updateBy}, remark = #{remark}, update_time = getdate() diff --git a/lis-system/src/main/resources/mybatis/mybatis-config.xml b/lis-system/src/main/resources/mybatis/mybatis-config.xml index 66f85e1..24054fb 100644 --- a/lis-system/src/main/resources/mybatis/mybatis-config.xml +++ b/lis-system/src/main/resources/mybatis/mybatis-config.xml @@ -18,5 +18,4 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN" - diff --git a/liswork/src/main/java/com/czlis/liswork/controller/xtwh/LabInstrgroupmainController.java b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/LabInstrgroupmainController.java new file mode 100644 index 0000000..ca3368d --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/LabInstrgroupmainController.java @@ -0,0 +1,67 @@ +package com.czlis.liswork.controller.xtwh; + +import com.czlis.common.annotation.Log; +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.LabInstrgroupdetail; +import com.czlis.common.core.domain.entity.lis.LabInstrgroupmain; +import com.czlis.common.enums.BusinessType; +import com.czlis.interfaceCommon.constants.SysLogConstants; +import com.czlis.liswork.pojo.DTO.LabInstrgroupmainDTO; +import com.czlis.liswork.service.LabInstrgroupmainService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@Api(tags = "仪器组合") +@RestController +@RequestMapping("/instrgroup") +@Slf4j +public class LabInstrgroupmainController { + + @Resource + private LabInstrgroupmainService labInstrgroupmainService; + @ApiOperation("查询仪器组合列表") + @GetMapping("/query") + public Result query(LabInstrgroupmain LabInstrgroupmain) { + return labInstrgroupmainService.query(LabInstrgroupmain); + } + + @ApiOperation("查询明细数据") + @GetMapping("/queryDetail") + public Result queryDetail(LabInstrgroupdetail LabInstrgroupmainDetail){ + return labInstrgroupmainService.queryDetail(LabInstrgroupmainDetail); + } + + @Log(title = SysLogConstants.LabInstrgroupmain_LOG,businessType = BusinessType.INSERT) + @ApiOperation("新增仪器组合") + @PostMapping("/add") + public Result add(@RequestBody LabInstrgroupmainDTO LabInstrgroupmainDTO){ + return labInstrgroupmainService.add(LabInstrgroupmainDTO); + } + + @Log(title = SysLogConstants.LabInstrgroupmain_LOG,businessType = BusinessType.UPDATE) + @ApiOperation("修改仪器组合") + @PostMapping("/update") + public Result update(@RequestBody LabInstrgroupmainDTO LabInstrgroupmainDTO){ + return labInstrgroupmainService.update(LabInstrgroupmainDTO); + } + + @Log(title = SysLogConstants.LabInstrgroupmain_LOG,businessType = BusinessType.DELETE) + @ApiOperation("删除仪器组合") + @GetMapping("/delete") + public Result delete(LabInstrgroupmain LabInstrgroupmain){ + return labInstrgroupmainService.delete(LabInstrgroupmain); + } + + @Log(title = SysLogConstants.LabInstrgroupdetail_LOG,businessType = BusinessType.DELETE_DETAIL) + @ApiOperation("删除明细数据") + @PostMapping("/deleteDetail") + public Result deleteDetail(@RequestBody List LabInstrgroupmainDetailList){ + return labInstrgroupmainService.deleteDetail(LabInstrgroupmainDetailList); + } + +} diff --git a/liswork/src/main/java/com/czlis/liswork/controller/xtwh/XmCompController.java b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/XmCompController.java index fc68cb3..82e5138 100644 --- a/liswork/src/main/java/com/czlis/liswork/controller/xtwh/XmCompController.java +++ b/liswork/src/main/java/com/czlis/liswork/controller/xtwh/XmCompController.java @@ -5,6 +5,7 @@ import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.XmComp; import com.czlis.common.enums.BusinessType; import com.czlis.interfaceCommon.constants.SysLogConstants; +import com.czlis.liswork.pojo.DTO.XmCompDTO; import com.czlis.liswork.service.XmCompService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -33,14 +34,15 @@ public class XmCompController { @Log(title = SysLogConstants.XMCOMP_LOG,businessType = BusinessType.INSERT) @ApiOperation("增加项目组合") @PostMapping("/add") - public Result addXmComp(@RequestBody List xmComp) { + public Result addXmComp(@RequestBody XmCompDTO xmComp) { + return xmCompService.addXmComp(xmComp); } @Log(title = SysLogConstants.XMCOMP_LOG,businessType = BusinessType.UPDATE) @ApiOperation("修改项目组合") @PostMapping("/update") - public Result updateXmComp(@RequestBody List xmComp) { + public Result updateXmComp(@RequestBody XmCompDTO xmComp) { return xmCompService.updateXmComp(xmComp); } @@ -50,4 +52,15 @@ public class XmCompController { public Result deleteXmComp(XmComp xmComp) { return xmCompService.deleteXmComp(xmComp); } + @ApiOperation("查询明细数据") + @GetMapping("/queryDetail") + public Result queryDetail(XmComp xmComp){ + return xmCompService.queryDetail(xmComp); + } + @Log(title = SysLogConstants.LABINPUTMDL_LOG,businessType = BusinessType.DELETE_DETAIL) + @ApiOperation("删除明细数据") + @PostMapping("/deleteDetail") + public Result deleteDetail(@RequestBody List xmComp){ + return xmCompService.deleteDetail(xmComp); + } } diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/LabInstrgroupmainMapper.java b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/LabInstrgroupmainMapper.java new file mode 100644 index 0000000..894a61e --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/LabInstrgroupmainMapper.java @@ -0,0 +1,17 @@ +package com.czlis.liswork.mapper.xtwh; + +import com.czlis.common.core.domain.entity.lis.LabInstrgroupdetail; +import com.czlis.common.core.domain.entity.lis.LabInstrgroupmain; + +import java.util.List; + +public interface LabInstrgroupmainMapper { + List getLabInstrgroupmainList(LabInstrgroupmain xmComp); + void addLabInstrgroupmain(LabInstrgroupmain xmComp); + void updateLabInstrgroupmain(LabInstrgroupmain xmComp); + void deleteLabInstrgroupmain(LabInstrgroupmain xmComp); + List getLabInstrgroupdetailList(LabInstrgroupdetail xmComp); + void addLabInstrgroupdetail(LabInstrgroupdetail xmComp); + void updateLabInstrgroupdetail(LabInstrgroupdetail xmComp); + void deleteLabInstrgroupdetail(LabInstrgroupdetail xmComp); +} diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/XmCompMapper.java b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/XmCompMapper.java index f8baf27..c09175e 100644 --- a/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/XmCompMapper.java +++ b/liswork/src/main/java/com/czlis/liswork/mapper/xtwh/XmCompMapper.java @@ -6,10 +6,10 @@ import java.util.List; public interface XmCompMapper { List getXmCompList(XmComp xmComp); - + List getXmCompMainList(XmComp xmComp); void addXmComp(XmComp xmComp); - void updateXmComp(XmComp xmComp); - + XmComp queryDetail(XmComp xmComp); void deleteXmComp(XmComp xmComp); + void deleteXmCompOld(XmComp xmComp); } diff --git a/liswork/src/main/java/com/czlis/liswork/pojo/DTO/LabInstrgroupmainDTO.java b/liswork/src/main/java/com/czlis/liswork/pojo/DTO/LabInstrgroupmainDTO.java new file mode 100644 index 0000000..dc2b142 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/pojo/DTO/LabInstrgroupmainDTO.java @@ -0,0 +1,18 @@ +package com.czlis.liswork.pojo.DTO; + +import com.czlis.common.core.domain.entity.lis.LabInputmdl; +import com.czlis.common.core.domain.entity.lis.LabInputmdlDetail; +import com.czlis.common.core.domain.entity.lis.LabInstrgroupdetail; +import com.czlis.common.core.domain.entity.lis.LabInstrgroupmain; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +@Data +@AllArgsConstructor +@NoArgsConstructor +public class LabInstrgroupmainDTO { + private LabInstrgroupmain labInstrgroupmain; + private List labInstrgroupdetailList; +} diff --git a/liswork/src/main/java/com/czlis/liswork/pojo/DTO/XmCompDTO.java b/liswork/src/main/java/com/czlis/liswork/pojo/DTO/XmCompDTO.java new file mode 100644 index 0000000..b25b4a3 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/pojo/DTO/XmCompDTO.java @@ -0,0 +1,15 @@ +package com.czlis.liswork.pojo.DTO; + +import com.czlis.common.core.domain.entity.lis.XmComp; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +@Data +@AllArgsConstructor +@NoArgsConstructor +public class XmCompDTO { + private XmComp xmComp; + private List xmCompList; +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/LabInstrgroupmainService.java b/liswork/src/main/java/com/czlis/liswork/service/LabInstrgroupmainService.java new file mode 100644 index 0000000..c7314a7 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/service/LabInstrgroupmainService.java @@ -0,0 +1,25 @@ +package com.czlis.liswork.service; + +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.LabInputmdl; +import com.czlis.common.core.domain.entity.lis.LabInputmdlDetail; +import com.czlis.common.core.domain.entity.lis.LabInstrgroupdetail; +import com.czlis.common.core.domain.entity.lis.LabInstrgroupmain; +import com.czlis.liswork.pojo.DTO.LabInputmdlDTO; +import com.czlis.liswork.pojo.DTO.LabInstrgroupmainDTO; + +import java.util.List; + +public interface LabInstrgroupmainService { + Result query(LabInstrgroupmain labInstrgroupmain); + + Result queryDetail(LabInstrgroupdetail labInstrgroupdetail); + + Result add(LabInstrgroupmainDTO labInstrgroupmainDTO); + + Result update(LabInstrgroupmainDTO labInstrgroupmainDTO); + + Result delete(LabInstrgroupmain labInstrgroupmain); + + Result deleteDetail(List labInstrgroupdetail); +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/XmCompService.java b/liswork/src/main/java/com/czlis/liswork/service/XmCompService.java index ad25c5a..ff46801 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/XmCompService.java +++ b/liswork/src/main/java/com/czlis/liswork/service/XmCompService.java @@ -2,6 +2,7 @@ package com.czlis.liswork.service; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.XmComp; +import com.czlis.liswork.pojo.DTO.XmCompDTO; import java.util.List; @@ -9,9 +10,11 @@ import java.util.List; public interface XmCompService { Result getXmCompList(XmComp xmComp); - Result addXmComp(List xmComp); + Result addXmComp(XmCompDTO xmComp); - Result updateXmComp(List xmComp); + Result updateXmComp(XmCompDTO xmComp); Result deleteXmComp(XmComp xmComp); + Result queryDetail(XmComp xmComp); + Result deleteDetail(List xmComp); } diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrgroupmainServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrgroupmainServiceImpl.java new file mode 100644 index 0000000..7077579 --- /dev/null +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrgroupmainServiceImpl.java @@ -0,0 +1,79 @@ +package com.czlis.liswork.service.impl.xtwh; + +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.*; +import com.czlis.liswork.mapper.xtwh.LabInstrgroupmainMapper; +import com.czlis.liswork.pojo.DTO.LabInstrgroupmainDTO; +import com.czlis.liswork.service.LabInstrgroupmainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class LabInstrgroupmainServiceImpl implements LabInstrgroupmainService { + @Autowired + LabInstrgroupmainMapper labInstrgroupmainMapper; + @Override + public Result query(LabInstrgroupmain labInstrgroupmain) { + List labInstrgroupmainList = labInstrgroupmainMapper.getLabInstrgroupmainList(labInstrgroupmain); + return new Result("0","查询成功!",labInstrgroupmainList); + } + + @Override + public Result queryDetail(LabInstrgroupdetail labInstrgroupdetail) { + List labInstrgroupdetailList = labInstrgroupmainMapper.getLabInstrgroupdetailList(labInstrgroupdetail); + return new Result("0","查询成功!",labInstrgroupdetailList); + } + + @Override + public Result add(LabInstrgroupmainDTO labInstrgroupmainDTO) { + labInstrgroupmainMapper.addLabInstrgroupmain(labInstrgroupmainDTO.getLabInstrgroupmain()); + List labInstrgroupdetailList = labInstrgroupmainDTO.getLabInstrgroupdetailList(); + for (LabInstrgroupdetail labInstrgroupdetail : labInstrgroupdetailList) { + labInstrgroupmainMapper.addLabInstrgroupdetail(labInstrgroupdetail); + } + return new Result("0","新增成功!"); + } + + @Override + public Result update(LabInstrgroupmainDTO labInstrgroupmainDTO) { + labInstrgroupmainMapper.updateLabInstrgroupmain(labInstrgroupmainDTO.getLabInstrgroupmain()); + List labInstrgroupdetailList = labInstrgroupmainDTO.getLabInstrgroupdetailList(); + for (LabInstrgroupdetail labInstrgroupdetail : labInstrgroupdetailList) { + List labInstrgroupdetailList1 = labInstrgroupmainMapper.getLabInstrgroupdetailList(labInstrgroupdetail); + if(labInstrgroupdetailList1.size() > 0){ + labInstrgroupmainMapper.updateLabInstrgroupdetail(labInstrgroupdetail); + }else{ + labInstrgroupmainMapper.addLabInstrgroupdetail(labInstrgroupdetail); + } + + } + return new Result("0","修改数据成功!"); + } + + @Override + public Result delete(LabInstrgroupmain labInstrgroupmain) { + //删除列表 + labInstrgroupmainMapper.deleteLabInstrgroupmain(labInstrgroupmain); + //删除明细 + LabInstrgroupdetail labInstrgroupdetail = new LabInstrgroupdetail(); + labInstrgroupdetail.setYq(labInstrgroupmain.getYq()); + labInstrgroupdetail.setFzdh(labInstrgroupmain.getFzdh()); + labInstrgroupmainMapper.deleteLabInstrgroupdetail(labInstrgroupdetail); + return new Result("0","删除成功!"); + } + + @Override + public Result deleteDetail(List labInstrgroupdetailList) { + for (LabInstrgroupdetail labInstrgroupdetail : labInstrgroupdetailList) { + if(labInstrgroupdetail.getYq() == null) return new Result("-1","仪器不能为空!"); + labInstrgroupmainMapper.deleteLabInstrgroupdetail(labInstrgroupdetail); + } + return new Result("0","删除明细成功!"); + } + + +} diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/XmCompServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/XmCompServiceImpl.java index e0a397b..7fb2ae0 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/XmCompServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/XmCompServiceImpl.java @@ -1,8 +1,10 @@ package com.czlis.liswork.service.impl.xtwh; import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.LabInputmdlDetail; import com.czlis.common.core.domain.entity.lis.XmComp; import com.czlis.liswork.mapper.xtwh.XmCompMapper; +import com.czlis.liswork.pojo.DTO.XmCompDTO; import com.czlis.liswork.service.XmCompService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -19,22 +21,39 @@ public class XmCompServiceImpl implements XmCompService { @Override public Result getXmCompList(XmComp xmComp) { - List xmCompList = xmCompMapper.getXmCompList(xmComp); + List xmCompList = xmCompMapper.getXmCompMainList(xmComp); return new Result("0","查询成功!",xmCompList); } @Override - public Result addXmComp(List xmCompList) { + public Result addXmComp(XmCompDTO xmCompList0) { + XmComp head=xmCompList0.getXmComp(); + List xmCompList = xmCompList0.getXmCompList(); for (XmComp xmComp : xmCompList) { - xmCompMapper.addXmComp(xmComp); + xmComp.setZhlx(head.getZhlx()); + xmComp.setZhmc(head.getZhmc()); + List xmCompList1 = xmCompMapper.getXmCompList(xmComp); + if(xmCompList1.size() > 0){ + }else{ + xmCompMapper.addXmComp(xmComp); + } } - return new Result("0","新增数据成功!"); + return new Result("0","新增成功!"); } @Override - public Result updateXmComp(List xmCompList) { + public Result updateXmComp(XmCompDTO xmCompList0) { + XmComp head=xmCompList0.getXmComp(); + xmCompMapper.deleteXmCompOld(head); + List xmCompList = xmCompList0.getXmCompList(); for (XmComp xmComp : xmCompList) { - xmCompMapper.updateXmComp(xmComp); + xmComp.setZhlx(head.getZhlx()); + xmComp.setZhmc(head.getZhmc()); + List xmCompList1 = xmCompMapper.getXmCompList(xmComp); + if(xmCompList1.size() > 0){ + }else{ + xmCompMapper.addXmComp(xmComp); + } } return new Result("0","修改成功!"); } @@ -44,4 +63,18 @@ public class XmCompServiceImpl implements XmCompService { xmCompMapper.deleteXmComp(xmComp); return new Result("0","删除数据成功!"); } + + @Override + public Result queryDetail(XmComp xmComp) { + List xmCompList = xmCompMapper.getXmCompList(xmComp); + return new Result("0","查询成功!",xmCompList); + } + + @Override + public Result deleteDetail(List xmCompList) { + for (XmComp xmComp : xmCompList) { + xmCompMapper.deleteXmComp(xmComp); + } + return new Result("0","删除数据成功!"); + } } diff --git a/liswork/src/main/resources/mapper/LabInstrgroupmainMapper.xml b/liswork/src/main/resources/mapper/LabInstrgroupmainMapper.xml new file mode 100644 index 0000000..ca1711e --- /dev/null +++ b/liswork/src/main/resources/mapper/LabInstrgroupmainMapper.xml @@ -0,0 +1,70 @@ + + + + + + + insert into lab_instrgroupmain(fzdh,fzmc,bz,yljg,tj_flag)values(#{fzdh},#{fzmc},#{bz},#{yljg},#{tj_flag}) + + + + update lab_instrgroupmain + set + fzdh = #{fzdh}, + fzmc = #{fzmc}, + bz = #{bz}, + yljg = #{yljg}, + tj_flag = #{yljg} + where fzdh = #{fzdh} + + + + delete from lab_instrgroupmain where fzdh = #{fzdh} + + + + + insert into lab_instrgroupdetail(fzdh,yq,seq,yljg)values(#{fzdh},#{yq},#{seq},#{yljg}) + + + + update lab_instrgroupdetail + set + fzdh = #{fzdh}, + yq = #{yq}, + seq = #{seq}, + yljg = #{yljg} + where fzdh = #{fzdh} + + + + delete from lab_instrgroupdetail + + and fzdh = #{fzdh} + and yq = #{yq} + and seq = #{seq} + and yljg = #{yljg} + + + + + + diff --git a/liswork/src/main/resources/mapper/XmCompMapper.xml b/liswork/src/main/resources/mapper/XmCompMapper.xml index 558c955..5e60252 100644 --- a/liswork/src/main/resources/mapper/XmCompMapper.xml +++ b/liswork/src/main/resources/mapper/XmCompMapper.xml @@ -4,7 +4,7 @@ - + + insert into xm_comp( yq,zhmc,zhlx,xmdh,bz,seq @@ -23,6 +39,7 @@ ) + update xm_comp @@ -32,13 +49,15 @@ seq = #{seq}, yq = #{yq},zhmc = #{zhmc} - where yq = #{yq},zhmc = #{zhmc} and zhlx = #{zhlx} and xmdh = #{xmdh} + where yq = #{yq} and zhmc = #{zhmcold} and zhlx = #{zhlxold} and xmdh = #{xmdhold} - delete from xm_comp where yq = #{yq} and zhmc = #{zhmc} and zhlx = #{zhlx} and xmdh = #{xmdh} + + delete from xm_comp where yq = #{yq} and zhmc = #{zhmcold} and zhlx = #{zhlxold} + diff --git a/pom.xml b/pom.xml index f194409..1b33d31 100644 --- a/pom.xml +++ b/pom.xml @@ -310,9 +310,9 @@ - cn.com.kingbase + com.kingbase kingbase8 - 8.2.0 + 8.6.0