16 changed files with 269 additions and 57 deletions
			
			
		@ -1,32 +0,0 @@ | 
				
			|||||||
package com.hnac.hzims.bigmodel.zhipuai.constants; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import lombok.Getter; | 
					 | 
				
			||||||
import org.apache.poi.ss.formula.functions.T; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.math.BigDecimal; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * @Author: ypj | 
					 | 
				
			||||||
 * @Date: 2024/8/8 15:27 | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
@Getter | 
					 | 
				
			||||||
public enum AnalysisResultType implements BaseEnum { | 
					 | 
				
			||||||
    BOOLEAN("BOOLEAN", "是非判断", "是", Boolean.class), | 
					 | 
				
			||||||
    NUMBER("NUMBER", "确定数量", null, Integer.class), | 
					 | 
				
			||||||
    DECIMAL("DECIMAL", "获取数值", null, BigDecimal.class); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private final String code; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private final String msg; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private final String condition; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private final Class<T> clazz; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    AnalysisResultType(String code, String msg, String condition, Class clazz) { | 
					 | 
				
			||||||
        this.code = code; | 
					 | 
				
			||||||
        this.msg = msg; | 
					 | 
				
			||||||
        this.condition = condition; | 
					 | 
				
			||||||
        this.clazz = clazz; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.bigmodel.zhipuai.constants; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Getter; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: ypj | 
				
			||||||
 | 
					 * @Date: 2024/8/14 9:23 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Getter | 
				
			||||||
 | 
					public enum ComparisonType implements BaseEnum { | 
				
			||||||
 | 
					    EQUAL("equal", "相等"), | 
				
			||||||
 | 
					    GREATER("greater","大于"), | 
				
			||||||
 | 
					    LESS("less","小于"); | 
				
			||||||
 | 
					    private final String code; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String msg; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ComparisonType(String code, String msg) { | 
				
			||||||
 | 
					        this.code = code; | 
				
			||||||
 | 
					        this.msg = msg; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.bigmodel.zhipuai.constants; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Getter; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: ypj | 
				
			||||||
 | 
					 * @Date: 2024/8/14 8:28 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Getter | 
				
			||||||
 | 
					public enum ResultDataType implements BaseEnum { | 
				
			||||||
 | 
					    OBJECT("Object", "Object类型", Object.class.getName(), null), | 
				
			||||||
 | 
					    STRING("String", "String类型", String.class.getName(), null), | 
				
			||||||
 | 
					    BOOLEAN("Boolean","Boolean类型",Boolean.class.getName(),"parseBoolean"), | 
				
			||||||
 | 
					    INTEGER("Integer","Integer类型",Integer.class.getName(),"parseInt"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String code; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String msg; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String className; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String method; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ResultDataType(String code, String msg, String className, String method) { | 
				
			||||||
 | 
					        this.code = code; | 
				
			||||||
 | 
					        this.msg = msg; | 
				
			||||||
 | 
					        this.className = className; | 
				
			||||||
 | 
					        this.method = method; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,39 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.bigmodel.zhipuai.constants; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.handler.ResultBooleanStrategy; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.handler.ResultCommonStrategy; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.handler.ResultStrategy; | 
				
			||||||
 | 
					import lombok.Getter; | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: ypj | 
				
			||||||
 | 
					 * @Date: 2024/8/8 15:27 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Getter | 
				
			||||||
 | 
					@Slf4j | 
				
			||||||
 | 
					public enum ResultStrategyType implements BaseEnum { | 
				
			||||||
 | 
					    COMMON("ResultCommonStrategy", "普通值", ResultCommonStrategy.class), | 
				
			||||||
 | 
					    BOOLEAN("ResultBooleanStrategy", "是非判断", ResultBooleanStrategy.class); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String code; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String msg; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Class<? extends ResultStrategy> strategyClass; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ResultStrategyType(String code, String msg, Class<? extends ResultStrategy> strategy) { | 
				
			||||||
 | 
					        this.code = code; | 
				
			||||||
 | 
					        this.msg = msg; | 
				
			||||||
 | 
					        this.strategyClass = strategy; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ResultStrategy getStrategy() { | 
				
			||||||
 | 
					        try { | 
				
			||||||
 | 
					            return strategyClass.newInstance(); | 
				
			||||||
 | 
					        } catch (Exception e) { | 
				
			||||||
 | 
					            log.error("get result strategy fail", e); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return null; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,34 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.bigmodel.zhipuai.handler; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.constants.BaseEnum; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.constants.ComparisonType; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.constants.ResultStrategyType; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.entity.ZhipuAnalysisInfoEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: ypj | 
				
			||||||
 | 
					 * @Date: 2024/8/14 7:41 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class ResultBooleanStrategy implements ResultStrategy<Boolean> { | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public String getCode() { | 
				
			||||||
 | 
					        return ResultStrategyType.BOOLEAN.getCode(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public Boolean getResult(ZhipuAnalysisInfoEntity info, Object resultData) { | 
				
			||||||
 | 
					        Object comparator = convertOriginalData(info.getResultCondition(), info.getResultType()); | 
				
			||||||
 | 
					        ComparisonType comparisonType = BaseEnum.getInstance(info.getResultJudgeModel(), ComparisonType.class); | 
				
			||||||
 | 
					        switch (comparisonType) { | 
				
			||||||
 | 
					            case EQUAL: | 
				
			||||||
 | 
					                return comparator.equals(resultData); | 
				
			||||||
 | 
					            case GREATER: | 
				
			||||||
 | 
					                return ((Comparable) comparator).compareTo(resultData) < 0; | 
				
			||||||
 | 
					            case LESS: | 
				
			||||||
 | 
					                return ((Comparable) comparator).compareTo(resultData) > 0; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return null; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.bigmodel.zhipuai.handler; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.constants.ResultStrategyType; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.entity.ZhipuAnalysisInfoEntity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: ypj | 
				
			||||||
 | 
					 * @Date: 2024/8/13 10:33 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class ResultCommonStrategy implements ResultStrategy<Object> { | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public String getCode() { | 
				
			||||||
 | 
					        return ResultStrategyType.COMMON.getCode(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public Object getResult(ZhipuAnalysisInfoEntity info, Object data) { | 
				
			||||||
 | 
					        return data; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,44 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.bigmodel.zhipuai.handler; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.constants.BaseEnum; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.constants.ResultDataType; | 
				
			||||||
 | 
					import com.hnac.hzims.bigmodel.zhipuai.entity.ZhipuAnalysisInfoEntity; | 
				
			||||||
 | 
					import org.slf4j.Logger; | 
				
			||||||
 | 
					import org.slf4j.LoggerFactory; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.StringUtil; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.lang.reflect.Method; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: ypj | 
				
			||||||
 | 
					 * @Date: 2024/8/13 10:00 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface ResultStrategy<T> { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String getCode(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default boolean isSupport(String strategyCode) { | 
				
			||||||
 | 
					        return getCode().equals(strategyCode); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default Object convertOriginalData(String originalData, String className) { | 
				
			||||||
 | 
					        ResultDataType type = BaseEnum.getInstance(className, ResultDataType.class); | 
				
			||||||
 | 
					        if (null != type && StringUtil.isNotBlank(type.getMethod())) { | 
				
			||||||
 | 
					            try { | 
				
			||||||
 | 
					                Class<?> clazz = Class.forName(type.getClassName()); | 
				
			||||||
 | 
					                Method method = clazz.getMethod(type.getMethod(), String.class); | 
				
			||||||
 | 
					                return method.invoke(null, originalData); | 
				
			||||||
 | 
					            } catch (Exception ignore) { | 
				
			||||||
 | 
					                Logger logger = LoggerFactory.getLogger(ResultStrategy.class); | 
				
			||||||
 | 
					                logger.info("parse data error", ignore); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        return originalData; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default T getResult(ZhipuAnalysisInfoEntity info, String originalData) { | 
				
			||||||
 | 
					        return getResult(info, convertOriginalData(originalData, info.getResultType())); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    T getResult(ZhipuAnalysisInfoEntity info, Object resultData); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,28 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.bigmodel.zhipuai.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModel; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @Author: ypj | 
				
			||||||
 | 
					 * @Date: 2024/8/13 16:18 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					@ApiModel(description = "分析返回信息") | 
				
			||||||
 | 
					public class ZhipuAnalysisResult<T> implements Serializable { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = 1L; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty(value = "是否成功", required = true) | 
				
			||||||
 | 
					    private boolean success; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty(value = "承载数据") | 
				
			||||||
 | 
					    private T result; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @ApiModelProperty(value = "结果描述") | 
				
			||||||
 | 
					    private String resultStr; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue