From b20d556c991561d606dcea3319403afc128f200d Mon Sep 17 00:00:00 2001
From: unknown <2975965946@qq.com>
Date: Tue, 29 Apr 2025 21:01:21 +0800
Subject: [PATCH] src
---
src/wcp-parameter/pom.xml | 89 ++++
.../farm/log4j/appender/FarmDbAppender.java | 57 +++
.../farm/parameter/FarmParameterService.java | 167 +++++++
.../controller/ApplogController.java | 315 +++++++++++++
.../controller/DictionaryController.java | 247 ++++++++++
.../controller/DictionaryTypeController.java | 397 ++++++++++++++++
.../controller/ParameterController.java | 411 +++++++++++++++++
.../parameter/dao/AloneApplogDaoInter.java | 71 +++
.../dao/AloneparameterlocalDaoInter.java | 112 +++++
.../dao/DictionaryEntityDaoInter.java | 56 +++
.../parameter/dao/DictionaryTypeDaoInter.java | 41 ++
.../farm/parameter/dao/ParameterDaoInter.java | 92 ++++
.../parameter/dao/impl/AloneApplogDao.java | 198 ++++++++
.../dao/impl/AloneparameterlocalDaoImpl.java | 269 +++++++++++
.../dao/impl/DictionaryEntityDao.java | 139 ++++++
.../parameter/dao/impl/DictionaryTypeDao.java | 121 +++++
.../farm/parameter/dao/impl/ParameterDao.java | 142 ++++++
.../farm/parameter/domain/AloneApplog.java | 177 +++++++
.../domain/AloneDictionaryEntity.java | 236 ++++++++++
.../parameter/domain/AloneDictionaryType.java | 292 ++++++++++++
.../farm/parameter/domain/AloneParameter.java | 309 +++++++++++++
.../parameter/domain/Aloneparameterlocal.java | 103 +++++
.../exception/KeyExistException.java | 10 +
.../service/AloneApplogServiceInter.java | 48 ++
.../service/DictionaryEntityServiceInter.java | 76 ++++
.../service/DictionaryTypeServiceInter.java | 24 +
.../service/ParameterServiceInter.java | 143 ++++++
.../service/impl/AloneApplogServiceImpl.java | 105 +++++
.../service/impl/ConstantVarService.java | 57 +++
.../impl/DictionaryEntityServiceImpl.java | 345 ++++++++++++++
.../impl/DictionaryTypeServiceImpl.java | 187 ++++++++
.../service/impl/ParameterServiceImpl.java | 430 ++++++++++++++++++
.../service/impl/PropertiesFileService.java | 104 +++++
33 files changed, 5570 insertions(+)
create mode 100644 src/wcp-parameter/pom.xml
create mode 100644 src/wcp-parameter/src/main/java/com/farm/log4j/appender/FarmDbAppender.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/FarmParameterService.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/controller/ApplogController.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryController.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryTypeController.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/controller/ParameterController.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/AloneApplogDaoInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/AloneparameterlocalDaoInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/DictionaryEntityDaoInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/DictionaryTypeDaoInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/ParameterDaoInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/impl/AloneApplogDao.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/impl/AloneparameterlocalDaoImpl.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/impl/DictionaryEntityDao.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/impl/DictionaryTypeDao.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/dao/impl/ParameterDao.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/domain/AloneApplog.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/domain/AloneDictionaryEntity.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/domain/AloneDictionaryType.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/domain/AloneParameter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/domain/Aloneparameterlocal.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/exception/KeyExistException.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/AloneApplogServiceInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/DictionaryEntityServiceInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/DictionaryTypeServiceInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/ParameterServiceInter.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/impl/AloneApplogServiceImpl.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/impl/ConstantVarService.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/impl/DictionaryEntityServiceImpl.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/impl/DictionaryTypeServiceImpl.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/impl/ParameterServiceImpl.java
create mode 100644 src/wcp-parameter/src/main/java/com/farm/parameter/service/impl/PropertiesFileService.java
diff --git a/src/wcp-parameter/pom.xml b/src/wcp-parameter/pom.xml
new file mode 100644
index 0000000..304842f
--- /dev/null
+++ b/src/wcp-parameter/pom.xml
@@ -0,0 +1,89 @@
+
+
+
+ 4.0.0
+
+ com.farm
+
+ wcp-parameter
+
+ ${wcp.version}
+
+ 参数系统
+
+
+
+ 3.2.0
+
+
+ UTF-8
+
+ UTF-8
+
+
+ UTF-8
+
+
+
+
+
+
+ com.farm
+
+ farm-core
+
+ ${wcp.version}
+
+
+
+
+
+ javax.servlet.jsp
+
+ jsp-api
+
+
+
+
+
+
+
+
+
+
+
+ maven-compiler-plugin
+
+
+
+ 1.8
+
+ 1.8
+
+
+
+
+
+ org.apache.maven.plugins
+
+ maven-jar-plugin
+
+ 2.1
+
+
+
+
+
+
+
+ true
+
+ true
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/wcp-parameter/src/main/java/com/farm/log4j/appender/FarmDbAppender.java b/src/wcp-parameter/src/main/java/com/farm/log4j/appender/FarmDbAppender.java
new file mode 100644
index 0000000..e656a95
--- /dev/null
+++ b/src/wcp-parameter/src/main/java/com/farm/log4j/appender/FarmDbAppender.java
@@ -0,0 +1,57 @@
+package com.farm.log4j.appender;
+// 导入org.apache.log4j包中的AppenderSkeleton类,AppenderSkeleton是log4j中用于创建自定义Appender的基类
+import org.apache.log4j.AppenderSkeleton;
+// 导入org.apache.log4j包中的MDC类,MDC(Mapped Diagnostic Context)用于在日志记录中存储和检索线程相关的诊断信息
+import org.apache.log4j.MDC;
+// 导入org.apache.log4j.spi包中的LoggingEvent类,LoggingEvent表示日志事件,包含了日志记录的相关信息
+import org.apache.log4j.spi.LoggingEvent;
+
+import com.farm.parameter.service.AloneApplogServiceInter;
+import com.farm.util.spring.BeanFactory;
+
+// 定义一个名为FarmDbAppender的类,它继承自AppenderSkeleton,用于实现自定义的日志Appender
+public class FarmDbAppender extends AppenderSkeleton {
+
+ // 重写父类AppenderSkeleton的append方法,该方法用于处理实际的日志事件
+ @Override
+ protected void append(LoggingEvent arg0) {
+ // 从MDC中获取名为"USERID"的用户ID信息,如果不存在则设置为"NONE"
+ String userid = MDC.get("USERID") != null ? MDC.get("USERID")
+ .toString() : "NONE";
+ // 从MDC中获取名为"IP"的IP地址信息,如果不存在则设置为"NONE"
+ String ip = MDC.get("IP") != null ? MDC.get("IP").toString() : "NONE";
+
+ // 获取日志事件中的消息内容,如果消息内容为空则设置为空字符串
+ String message = arg0.getMessage() != null ? arg0.getMessage()
+ .toString() : "";
+
+ // 如果消息长度超过512个字符,则截取前512个字符并添加省略号
+ if (message.length() > 512) {
+ message = message.substring(0, 512) + "... ...";
+ }
+ try {
+ // 从Spring的BeanFactory中获取名为"aloneApplogServiceImpl"的Bean实例,并将其强转为AloneApplogServiceInter类型
+ AloneApplogServiceInter logService = (AloneApplogServiceInter) BeanFactory
+ .getBean("aloneApplogServiceImpl");
+ // 调用AloneApplogServiceInter接口的log方法,将日志相关信息(消息、用户ID、日志级别、方法名、类名、IP地址)记录到日志中
+ logService.log(message, userid, arg0.getLevel().toString(), arg0
+ .getLocationInformation().getMethodName(), arg0
+ .getLocationInformation().getClassName(), ip);
+ } catch (Exception e) {
+ // 如果在记录日志过程中发生异常,在控制台输出错误信息,提示日志系统异常并包含出错的日志消息
+ System.out.println("ERROR:日志系统异常,请修复!log error( " + message + ")");
+ }
+ }
+
+ // 重写父类AppenderSkeleton的close方法,这里简单返回,不进行实际的关闭操作
+ @Override
+ public void close() {
+ return;
+ }
+
+ // 重写父类AppenderSkeleton的requiresLayout方法,返回false表示该Appender不需要布局
+ @Override
+ public boolean requiresLayout() {
+ return false;
+ }
+}}
diff --git a/src/wcp-parameter/src/main/java/com/farm/parameter/FarmParameterService.java b/src/wcp-parameter/src/main/java/com/farm/parameter/FarmParameterService.java
new file mode 100644
index 0000000..200f96b
--- /dev/null
+++ b/src/wcp-parameter/src/main/java/com/farm/parameter/FarmParameterService.java
@@ -0,0 +1,167 @@
+package com.farm.parameter;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.farm.core.ParameterService;
+import com.farm.parameter.service.DictionaryEntityServiceInter;
+import com.farm.parameter.service.ParameterServiceInter;
+import com.farm.parameter.service.impl.ConstantVarService;
+import com.farm.parameter.service.impl.PropertiesFileService;
+import com.farm.util.spring.BeanFactory;
+
+/**
+ * 框架系统参数服务
+ *
+ * @author Administrator
+ *
+ */
+public class FarmParameterService implements ParameterService {
+ private static ParameterServiceInter parametersLocal;
+ private static DictionaryEntityServiceInter dictionaryentitysLocal;
+ private static ParameterService localstatic;
+
+ /**
+ * @return
+ */
+ public static ParameterService getInstance() {
+ if (localstatic == null) {
+ localstatic = new FarmParameterService();
+ }
+ return localstatic;
+ }
+
+ private ParameterServiceInter getParameterService() {
+ if (parametersLocal == null) {
+ parametersLocal = (ParameterServiceInter) BeanFactory
+ .getBean("parameterServiceImpl");
+ }
+ return parametersLocal;
+ }
+
+ private DictionaryEntityServiceInter getDictionaryEntityService() {
+ if (dictionaryentitysLocal == null) {
+ dictionaryentitysLocal = (DictionaryEntityServiceInter) BeanFactory
+ .getBean("dictionaryEntityServiceImpl");
+ }
+ return dictionaryentitysLocal;
+ }
+
+ // 设置属性文件的方法,接受一个包含属性文件名称的列表作为参数
+ public void setPropertiesFiles(List propertiesFiles) {
+ // 遍历属性文件名称列表
+ for (String name : propertiesFiles) {
+ // 调用 PropertiesFileService 的 registConstant 方法注册属性文件
+ if (PropertiesFileService.registConstant(name)) {
+ // 如果注册成功,打印注册成功的信息
+ System.out
+ .println("注册配置文件:"
+ + name
+ + ".properties(com.farm.parameter.FarmParameterService)");
+ }
+ }
+ }
+
+ // 重写 getDictionary 方法,用于根据键获取字典映射
+ @Override
+ public Map getDictionary(String key) {
+ // 调用 getDictionaryEntityService 方法获取字典实体服务,并调用其 getDictionary 方法获取字典映射
+ return getDictionaryEntityService().getDictionary(key);
+ }
+
+ // 重写 getDictionaryList 方法,用于根据键获取字典列表(键值对条目列表)
+ @Override
+ public List> getDictionaryList(String key) {
+ // 调用 getDictionaryEntityService 方法获取字典实体服务,并调用其 getDictionaryList 方法获取字典列表
+ return getDictionaryEntityService().getDictionaryList(key);
+ }
+
+ // 重写 getParameter 方法,用于根据键获取参数值
+ @Override
+ public String getParameter(String key) {
+ // 去除键两端的空格
+ key = key.trim();
+ // 首先尝试从参数服务中获取参数值(先找用户参数和系统参数)
+ String value = getParameterService().getValue(key);
+ // 如果获取到的参数值不为 null,则直接返回该值
+ if (value != null) {
+ return value;
+ }
+ // 如果在参数服务中未获取到参数值,再尝试从属性文件中获取参数值
+ value = PropertiesFileService.getValue(key);
+ // 如果从属性文件中获取到的参数值不为 null,则直接返回该值
+ if (value != null) {
+ return value;
+ }
+ // 如果在属性文件中也未获取到参数值,尝试从常量中获取参数值
+ value = ConstantVarService.getValue(key);
+ // 如果从常量中获取到的参数值不为 null,则直接返回该值
+ if (value != null) {
+ return value;
+ }
+ // 如果在以上所有地方都未获取到参数值,抛出运行时异常,提示无法获得参数
+ throw new RuntimeException("无法获得参数:" + key);
+ }
+
+ // 重写 getParameter 方法,用于根据键和用户 ID 获取参数值
+ @Override
+ public String getParameter(String key, String userId) {
+ // 首先尝试从参数服务中获取参数值(根据键和用户 ID)
+ String value = getParameterService().getValue(key, userId);
+ // 如果获取到的参数值不为 null,则直接返回该值
+ if (value != null) {
+ return value;
+ }
+ // 如果在参数服务中未获取到参数值,再尝试从属性文件中获取参数值
+ value = PropertiesFileService.getValue(key);
+ // 如果从属性文件中获取到的参数值不为 null,则直接返回该值
+ if (value != null) {
+ return value;
+ }
+ // 如果在属性文件中也未获取到参数值,尝试从常量中获取参数值
+ value = ConstantVarService.getValue(key);
+ // 如果从常量中获取到的参数值不为 null,则直接返回该值
+ if (value != null) {
+ return value;
+ }
+ // 如果在以上所有地方都未获取到参数值,抛出运行时异常,提示无法获得参数
+ throw new RuntimeException("无法获得参数:" + key);
+ }
+
+ // 重写 getParameterInt 方法,用于根据键获取参数值并转换为整数类型
+ @Override
+ public int getParameterInt(String key) {
+ // 调用 getParameter 方法获取参数值(不传入用户 ID)
+ String val = getParameter(key, null);
+ // 如果获取到的参数值不为空(使用 StringUtils 的 isNotBlank 方法判断)
+ if (StringUtils.isNotBlank(val)) {
+ // 将参数值转换为整数并返回
+ return Integer.valueOf(val);
+ }
+ // 如果获取到的参数值为空,抛出运行时异常,提示参数不存在
+ throw new RuntimeException("the parameter not exist![" + key + "]");
+ }
+
+ // 重写 getParameterBoolean 方法,用于根据键获取参数值并转换为布尔类型
+ @Override
+ public boolean getParameterBoolean(String key) {
+ // 调用 getParameter 方法获取参数值(不传入用户 ID)
+ String val = getParameter(key, null);
+ // 如果获取到的参数值为空(使用 StringUtils 的 isBlank 方法判断)
+ if (StringUtils.isBlank(val)) {
+ // 抛出运行时异常,提示参数不存在
+ throw new RuntimeException("the parameter not exist![" + key + "]");
+ } else {
+ // 如果参数值不为空,将其转换为大写并与 "TRUE" 比较
+ if (val.trim().toUpperCase().equals("TRUE")) {
+ // 如果相等,返回 true
+ return true;
+ } else {
+ // 如果不相等,返回 false
+ return false;
+ }
+ }
+ }
diff --git a/src/wcp-parameter/src/main/java/com/farm/parameter/controller/ApplogController.java b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/ApplogController.java
new file mode 100644
index 0000000..0f967e3
--- /dev/null
+++ b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/ApplogController.java
@@ -0,0 +1,315 @@
+package com.farm.parameter.controller;
+
+import java.util.Map;
+
+// 导入javax.annotation包中的Resource注解,用于依赖注入
+import javax.annotation.Resource;
+// 导入javax.servlet.http包中的HttpServletRequest类,用于处理HTTP请求
+import javax.servlet.http.HttpServletRequest;
+// 导入javax.servlet.http包中的HttpSession类,用于管理用户会话
+import javax.servlet.http.HttpSession;
+
+// 导入org.apache.log4j包中的Logger类,用于日志记录
+import org.apache.log4j.Logger;
+// 导入org.springframework.stereotype包中的Controller注解,将该类标记为Spring MVC的控制器
+import org.springframework.stereotype.Controller;
+// 导入org.springframework.web.bind.annotation包中的RequestMapping注解,用于映射HTTP请求到控制器的处理方法
+import org.springframework.web.bind.annotation.RequestMapping;
+// 导入org.springframework.web.bind.annotation包中的ResponseBody注解,用于将方法的返回值直接作为HTTP响应体返回
+import org.springframework.web.bind.annotation.ResponseBody;
+// 导入org.springframework.web.servlet包中的ModelAndView类,用于封装模型数据和视图信息
+import org.springframework.web.servlet.ModelAndView;
+
+import com.farm.parameter.service.AloneApplogServiceInter;
+import com.farm.core.page.RequestMode;
+import com.farm.core.page.ViewMode;
+import com.farm.core.sql.query.DBSort;
+import com.farm.core.sql.query.DataQuery;
+import com.farm.core.sql.result.DataResult;
+import com.farm.web.easyui.EasyUiUtils;
+
+/**
+ * 系统日志
+ *
+ * @author autoCode
+ *
+ */
+// 定义请求映射的基础路径为"/log"
+@RequestMapping("/log")
+// 将该类标记为Spring MVC的控制器
+@Controller
+public class ApplogController
+ // 定义一个静态的Logger对象,用于记录该类的日志信息
+ private final static Logger log = Logger
+ .getLogger(ApplogController.class);
+ // 使用Resource注解进行依赖注入,将AloneApplogServiceInter接口的实现类实例注入到该变量中
+ @Resource
+ AloneApplogServiceInter aloneApplogServiceImpl;
+
+ // 定义获取aloneApplogServiceImpl实例的getter方法
+ public AloneApplogServiceInter getAloneApplogServiceImpl() {
+ return aloneApplogServiceImpl;
+ }
+
+ // 定义设置aloneApplogServiceImpl实例的setter方法
+ public void setAloneApplogServiceImpl(
+ AloneApplogServiceInter aloneApplogServiceImpl) {
+ this.aloneApplogServiceImpl = aloneApplogServiceImpl;
+ }
+ /**
+ * 进入日志界面
+ * @param session 用户会话对象
+ * @return 返回包含视图信息的ModelAndView对象
+ */
+ // 映射"/log/list"请求到该方法
+ @RequestMapping("/list")
+ public ModelAndView index(HttpSession session) {
+ // 通过ViewMode实例返回一个ModelAndView对象,指定视图名为"parameter/pAloneApplogLayout"
+ return ViewMode.getInstance().returnModelAndView(
+ "parameter/pAloneApplogLayout");
+ }
+ /**
+ * 查询结果集合
+ *
+ * @param query 数据查询对象
+ * @param request HTTP请求对象
+ * @return 返回包含查询结果的Map对象
+ */
+ // 映射"/log/query"请求到该方法,并将方法返回值直接作为HTTP响应体返回
+ @RequestMapping("/query")
+ @ResponseBody
+ public Map queryall(DataQuery query,
+ HttpServletRequest request) {
+ try {
+ // 使用EasyUiUtils工具类格式化Grid查询参数
+ query = EasyUiUtils.formatGridQuery(request, query);
+ // 初始化数据查询对象,指定查询的SQL语句和要查询的字段
+ query = DataQuery
+ .init(query,
+ "alone_applog a left join alone_auth_user b on b.id=a.APPUSER",
+ "a.id as id,a.CTIME as ctime,a.DESCRIBES as describes,b.name as APPUSER,a.LEVELS as levels,a.METHOD as method,a.CLASSNAME as classname,a.IP as ip");
+ // 为查询添加默认排序规则,按"a.CTIME"字段降序排序
+ query.addDefaultSort(new DBSort("a.CTIME", "DESC"));
+ // 执行查询操作,获取查询结果
+ DataResult result = query.search();
+ // 加载查询结果列表
+ result.LoadListArray();
+ // 对查询结果中的"CTIME"字段进行时间格式化,格式为"yyyy-MM-dd_HH/mm/ss"
+ result.runformatTime("CTIME", "yyyy-MM-dd_HH/mm/ss");
+ // 将查询结果通过EasyUiUtils工具类格式化后,放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance()
+ .putAttrs(EasyUiUtils.formatGridData(result))
+ .returnObjMode();
+ } catch (Exception e) {
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+ /**
+ * 显示详细信息(修改或浏览时)
+ *
+ * @param pageset 请求模式对象
+ * @param ids 要操作的实体ID
+ * @return 返回包含视图信息和模型数据的ModelAndView对象
+ */
+ // 映射"/log/form"请求到该方法
+ @RequestMapping("/form")
+ public ModelAndView view(RequestMode pageset, String ids) {
+ try {
+ // 根据请求模式的操作类型进行不同处理
+ switch (pageset.getOperateType()) {
+ case (1): { // 新增
+ // 将请求模式对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .returnModelAndView("parameter/pAloneApplogEntity");
+ }
+ case (0): { // 展示
+ // 将请求模式对象和要展示的实体对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", aloneApplogServiceImpl.getEntity(ids))
+ .returnModelAndView("parameter/pAloneApplogEntity");
+ }
+ case (2): { // 修改
+ // 将请求模式对象和要修改的实体对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", aloneApplogServiceImpl.getEntity(ids))
+ .returnModelAndView("parameter/pAloneApplogEntity");
+ }
+ default:
+ break;
+ }
+ } catch (Exception e) {
+ // 将异常信息放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().setError(e + e.getMessage())
+ .returnModelAndView("parameter/pAloneApplogEntity");
+ }
+ // 返回默认视图名的ModelAndView对象
+ return ViewMode.getInstance().returnModelAndView(
+ "parameter/pAloneParameterEntity");
+ }
+ // /**
+ // * 提交修改数据
+ // *
+ // * @return
+ // */
+ // public String editSubmit() {
+ // try {
+ // entity = aloneIMP.editEntity(entity, getCurrentUser());
+ // pageset = new PageSet(PageType.UPDATE, CommitType.TRUE);
+ // } catch (Exception e) {
+ // pageset = PageSet.initPageSet(pageset, PageType.UPDATE,
+ // CommitType.FALSE, e);
+ // }
+ // return SUCCESS;
+ // }
+ //
+ // /**
+ // * 提交新增数据
+ // *
+ // * @return
+ // */
+ // public String addSubmit() {
+ // try {
+ // entity = aloneIMP.insertEntity(entity, getCurrentUser());
+ // pageset = new PageSet(PageType.ADD, CommitType.TRUE);
+ // } catch (Exception e) {
+ // pageset = PageSet.initPageSet(pageset, PageType.ADD,
+ // CommitType.FALSE, e);
+ // }
+ // return SUCCESS;
+ // }
+ //
+ // /**
+ // * 删除数据
+ // *
+ // * @return
+ // */
+ // public String delSubmit() {
+ // try {
+ // for (String id : parseIds(ids)) {
+ // aloneIMP.deleteEntity(id, getCurrentUser());
+ // }
+ // pageset = new PageSet(PageType.ADD, CommitType.TRUE);
+ // } catch (Exception e) {
+ // pageset = PageSet.initPageSet(pageset, PageType.DEL,
+ // CommitType.FALSE, e);
+ // }
+ // return SUCCESS;
+ // }
+ //
+ // /**
+ // * 跳转
+ // *
+ // * @return
+ // */
+ // public String forSend() {
+ // return SUCCESS;
+ // }
+ //
+ // /**
+ // * 显示详细信息(修改或浏览时)
+ // *
+ // * @return
+ // */
+ // public String view() {
+ // try {
+ // switch (pageset.getPageType()) {
+ // case (1): {// 新增
+ // return SUCCESS;
+ // }
+ // case (0): {// 展示
+ // entity = aloneIMP.getEntity(ids);
+ // return SUCCESS;
+ // }
+ // case (2): {// 修改
+ // entity = aloneIMP.getEntity(ids);
+ // return SUCCESS;
+ // }
+ // default:
+ // break;
+ // }
+ // } catch (Exception e) {
+ // pageset = PageSet.initPageSet(pageset, PageType.OTHER,
+ // CommitType.FALSE, e);
+ // }
+ // return SUCCESS;
+ // }
+ //
+ // private final static AloneApplogManagerInter aloneIMP =
+ // (AloneApplogManagerInter) BEAN("alone_applogProxyId");
+ //
+ // //
+ // ----------------------------------------------------------------------------------
+ // public DataQuery getQuery() {
+ // return query;
+ // }
+ //
+ // public void setQuery(DataQuery query) {
+ // this.query = query;
+ // }
+ //
+ // public DataResult getResult() {
+ // return result;
+ // }
+ //
+ // public void setResult(DataResult result) {
+ // this.result = result;
+ // }
+ //
+ // public AloneApplog getEntity() {
+ // return entity;
+ // }
+ //
+ // public void setEntity(AloneApplog entity) {
+ // this.entity = entity;
+ // }
+ //
+ // public PageSet getPageset() {
+ // return pageset;
+ // }
+ //
+ // public void setPageset(PageSet pageset) {
+ // this.pageset = pageset;
+ // }
+ //
+ // public String getIds() {
+ // return ids;
+ // }
+ //
+ // public void setIds(String ids) {
+ // this.ids = ids;
+ // }
+ //
+ // public InputStream getInputStream() {
+ // return inputStream;
+ // }
+ //
+ // public void setInputStream(InputStream inputStream) {
+ // this.inputStream = inputStream;
+ // }
+ //
+ // public Map getJsonResult() {
+ // return jsonResult;
+ // }
+ //
+ // public void setJsonResult(Map jsonResult) {
+ // this.jsonResult = jsonResult;
+ // }
+ //
+ // private static final Logger log = Logger
+ // .getLogger(ActionAloneApplogQuery.class);
+ // private static final long serialVersionUID = 1L;
+ // /**
+ // * 加载树节点 public String loadTreeNode() { treeNodes =
+ // * EasyUiTreeNode.formatAjaxTree(EasyUiTreeNode .queryTreeNodeOne(id,
+ // * "SORT", "alone_menu", "ID", "PARENTID", "NAME").getResultList(),
+ // * EasyUiTreeNode .queryTreeNodeTow(id, "SORT", "alone_menu", "ID",
+ // * "PARENTID", "NAME").getResultList(), "PARENTID", "ID", "NAME"); return
+ // * SUCCESS; }
+ // *
+ // * @return
+ // */
+}
diff --git a/src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryController.java b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryController.java
new file mode 100644
index 0000000..73b3455
--- /dev/null
+++ b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryController.java
@@ -0,0 +1,247 @@
+package com.farm.parameter.controller;
+
+import java.util.Map;
+
+// 导入依赖注入相关注解,用于自动注入依赖的Bean
+import javax.annotation.Resource;
+// 导入处理HTTP请求的类,用于获取请求信息
+import javax.servlet.http.HttpServletRequest;
+// 导入处理HTTP会话的类,用于管理用户会话信息
+import javax.servlet.http.HttpSession;
+
+// 导入日志记录类,用于记录程序运行中的日志信息
+import org.apache.log4j.Logger;
+// 导入Spring MVC的控制器注解,将该类标记为控制器
+import org.springframework.stereotype.Controller;
+// 导入请求映射注解,用于将请求映射到具体的处理方法
+import org.springframework.web.bind.annotation.RequestMapping;
+// 导入响应体注解,用于将方法的返回值直接作为HTTP响应体返回
+import org.springframework.web.bind.annotation.ResponseBody;
+// 导入模型视图类,用于封装模型数据和视图信息
+import org.springframework.web.servlet.ModelAndView;
+
+import com.farm.parameter.domain.AloneDictionaryEntity;
+import com.farm.parameter.service.DictionaryEntityServiceInter;
+import com.farm.core.page.OperateType;
+import com.farm.core.page.RequestMode;
+import com.farm.core.page.ViewMode;
+import com.farm.core.sql.query.DBSort;
+import com.farm.core.sql.query.DataQuery;
+import com.farm.core.sql.result.DataResult;
+import com.farm.web.WebUtils;
+import com.farm.web.easyui.EasyUiUtils;
+
+/**
+ * 数据字典
+ *
+ * @author zhaonaixia
+ * @time 2015-7-06 上午10:19:25
+ *
+ */
+// 定义请求映射的基础路径,所有以/dictionary开头的请求会被该控制器处理
+@RequestMapping("/dictionary")
+// 标记该类为Spring MVC的控制器
+@Controller
+// 继承WebUtils类,可使用其提供的工具方法
+public class DictionaryController extends WebUtils{
+ // 定义日志记录器,用于记录该类的日志信息
+ private static final Logger log = Logger
+ .getLogger(DictionaryController.class);
+
+ // 使用@Resource注解注入DictionaryEntityServiceInter接口的实现类实例
+ @Resource
+ DictionaryEntityServiceInter dictionaryEntityServiceImpl;
+
+ /**
+ * 查询结果集合
+ * @param query 数据查询对象,用于封装查询条件和参数
+ * @param request HTTP请求对象,用于获取请求信息
+ * @return 返回包含查询结果的Map对象
+ */
+ // 映射/dictionary/query请求到该方法,并将返回值作为响应体返回
+ @RequestMapping("/query")
+ @ResponseBody
+ public Map queryall(DataQuery query,
+ HttpServletRequest request) {
+ try {
+ // 使用EasyUiUtils工具类格式化Grid查询参数,使其符合EasyUI的格式要求
+ query = EasyUiUtils.formatGridQuery(request, query);
+ // 初始化数据查询对象,指定查询的表和要查询的字段
+ query = DataQuery.init(query, "alone_dictionary_entity",
+ "id,name,entityindex,type,type as types,comments");
+ // 添加默认排序规则,按utime字段降序排序
+ query.addDefaultSort(new DBSort("utime", "DESC"));
+ // 执行查询操作,获取查询结果
+ DataResult result = query.search();
+ // 对查询结果中的TYPE字段进行字典转换,将1转换为序列,0转换为树
+ result.runDictionary("1:序列,0:树", "TYPE");
+ // 将查询结果通过EasyUiUtils工具类格式化后,放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance()
+ .putAttrs(EasyUiUtils.formatGridData(result))
+ .returnObjMode();
+ } catch (Exception e) {
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 进入数据字典界面
+ * @param session 用户会话对象,用于获取用户会话信息
+ * @return 返回包含视图信息的ModelAndView对象
+ */
+ // 映射/dictionary/list请求到该方法
+ @RequestMapping("/list")
+ public ModelAndView index(HttpSession session) {
+ // 通过ViewMode实例返回一个ModelAndView对象,指定视图名为parameter/pAloneDictionaryEntityLayout
+ return ViewMode.getInstance()
+ .returnModelAndView("parameter/pAloneDictionaryEntityLayout");
+ }
+
+ /**
+ * 提交修改数据
+ * @param dictionary 要修改的字典实体对象
+ * @param session 用户会话对象,用于获取当前用户信息
+ * @return 返回包含操作结果的Map对象
+ */
+ // 映射/dictionary/edit请求到该方法,并将返回值作为响应体返回
+ @RequestMapping("/edit")
+ @ResponseBody
+ public Map editSubmit(AloneDictionaryEntity dictionary, HttpSession session) {
+ try {
+ // 调用服务层的editEntity方法修改字典实体,并传入当前用户信息
+ AloneDictionaryEntity entity = dictionaryEntityServiceImpl.editEntity(dictionary, getCurrentUser(session));
+ // 将修改后的实体对象放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance().putAttr("entity", entity)
+ .returnObjMode();
+ } catch (Exception e) {
+ // 打印异常堆栈信息
+ e.printStackTrace();
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 提交新增数据
+ * @param dictionary 要新增的字典实体对象
+ * @param session 用户会话对象,用于获取当前用户信息
+ * @return 返回包含操作结果的Map对象
+ */
+ // 映射/dictionary/add请求到该方法,并将返回值作为响应体返回
+ @RequestMapping("/add")
+ @ResponseBody
+ public Map addSubmit(AloneDictionaryEntity dictionary, HttpSession session) {
+ try {
+ // 调用服务层的insertEntity方法插入字典实体,并传入当前用户信息
+ AloneDictionaryEntity entity = dictionaryEntityServiceImpl.insertEntity(dictionary,
+ getCurrentUser(session));
+ // 设置操作类型为新增,将新增的实体对象放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance().setOperate(OperateType.ADD)
+ .putAttr("entity", entity).returnObjMode();
+ } catch (Exception e) {
+ // 打印异常堆栈信息
+ e.printStackTrace();
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 删除数据
+ * @param ids 要删除的记录的ID集合,多个ID用逗号分隔
+ * @param session 用户会话对象,用于获取当前用户信息
+ * @return 返回包含操作结果的Map对象
+ */
+ // 映射/dictionary/del请求到该方法,并将返回值作为响应体返回
+ @RequestMapping("/del")
+ @ResponseBody
+ public Map delSubmit(String ids, HttpSession session) {
+ try {
+ // 解析ID集合,将其拆分为单个ID
+ for (String id : parseIds(ids)) {
+ // 调用服务层的deleteEntity方法删除指定ID的字典实体,并传入当前用户信息
+ dictionaryEntityServiceImpl.deleteEntity(id, getCurrentUser(session));
+ }
+ // 返回一个空的操作结果Map对象
+ return ViewMode.getInstance().returnObjMode();
+ } catch (Exception e) {
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 显示详细信息(修改或浏览时)
+ * @param pageset 请求模式对象,包含操作类型等信息
+ * @param ids 要操作的记录的ID
+ * @return 返回包含视图信息和模型数据的ModelAndView对象
+ */
+ // 映射/dictionary/form请求到该方法
+ @RequestMapping("/form")
+ public ModelAndView view(RequestMode pageset, String ids) {
+ try {
+ // 根据请求模式的操作类型进行不同处理
+ switch (pageset.getOperateType()) {
+ case (1): { // 新增
+ // 将请求模式对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .returnModelAndView("parameter/pAloneDictionaryEntityEntity");
+ }
+ case (0): { // 展示
+ // 将请求模式对象和要展示的实体对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", dictionaryEntityServiceImpl.getEntity(ids))
+ .returnModelAndView("parameter/pAloneDictionaryEntityEntity");
+ }
+ case (2): { // 修改
+ // 将请求模式对象、要修改的实体对象和ID放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", dictionaryEntityServiceImpl.getEntity(ids))
+ .putAttr("ids", ids)
+ .returnModelAndView("parameter/pAloneDictionaryEntityEntity");
+ }
+ default:
+ break;
+ }
+ } catch (Exception e) {
+ // 将异常信息放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().setError(e + e.getMessage())
+ .returnModelAndView("parameter/pAloneDictionaryEntityEntity");
+ }
+ // 返回默认视图名的ModelAndView对象
+ return ViewMode.getInstance().returnModelAndView(
+ "parameter/pAloneDictionaryEntityEntity");
+ }
+
+ /**
+ * 验证key是否重复
+ * @param key 要验证的key值
+ * @param ids 当前记录的ID,用于排除自身
+ * @return 返回包含验证结果的Map对象
+ */
+ // 映射/dictionary/ALONEDictionary_validateIsRepeatKey请求到该方法,并将返回值作为响应体返回
+ @RequestMapping("/ALONEDictionary_validateIsRepeatKey")
+ @ResponseBody
+ public Map validateIsRepeatKey(String key,String ids) {
+ // 调用服务层的validateIsRepeatKey方法验证key是否重复
+ boolean isRepeatKey = dictionaryEntityServiceImpl.validateIsRepeatKey(key, ids);
+ // 将验证结果放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance()
+ .putAttr("isRepeatKey", isRepeatKey)
+ .returnObjMode();
+ }
+
+}
diff --git a/src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryTypeController.java b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryTypeController.java
new file mode 100644
index 0000000..f7fba3e
--- /dev/null
+++ b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/DictionaryTypeController.java
@@ -0,0 +1,397 @@
+package com.farm.parameter.controller;
+
+import java.util.Map;
+
+// 用于依赖注入,将Spring容器中的Bean注入到当前类的属性中
+import javax.annotation.Resource;
+// 用于处理HTTP请求,获取请求参数、请求头等信息
+import javax.servlet.http.HttpServletRequest;
+// 用于管理用户会话,存储和获取会话相关的数据
+import javax.servlet.http.HttpSession;
+
+// 用于记录日志信息,方便调试和监控程序运行状态
+import org.apache.log4j.Logger;
+// 标记该类为Spring MVC的控制器,用于处理HTTP请求
+import org.springframework.stereotype.Controller;
+// 用于将HTTP请求映射到控制器的方法上
+import org.springframework.web.bind.annotation.RequestMapping;
+// 用于将方法的返回值直接作为HTTP响应体返回
+import org.springframework.web.bind.annotation.ResponseBody;
+// 用于封装模型数据和视图信息,返回给前端页面
+import org.springframework.web.servlet.ModelAndView;
+
+import com.farm.parameter.domain.AloneDictionaryType;
+import com.farm.parameter.service.DictionaryTypeServiceInter;
+import com.farm.core.page.OperateType;
+import com.farm.core.page.RequestMode;
+import com.farm.core.page.ViewMode;
+import com.farm.core.sql.query.DBRule;
+import com.farm.core.sql.query.DBSort;
+import com.farm.core.sql.query.DataQuery;
+import com.farm.core.sql.result.DataResult;
+import com.farm.web.WebUtils;
+import com.farm.web.easyui.EasyUiTreeNode;
+import com.farm.web.easyui.EasyUiUtils;
+
+/**
+ * 字典类型
+ *
+ * @author zhaonaixia
+ * @time 2015-7-06 上午10:19:25
+ *
+ */
+// 所有以 /dictionaryType 开头的请求都会由该控制器处理
+@RequestMapping("/dictionaryType")
+// 标记该类为Spring MVC的控制器
+@Controller
+// 继承WebUtils类,可使用其提供的工具方法
+public class DictionaryTypeController extends WebUtils {
+ // 父组织机构名称
+ private String parentName;
+ // 记录该类的日志信息
+ private static final Logger log = Logger
+ .getLogger(DictionaryTypeController.class);
+
+ // 注入DictionaryTypeServiceInter接口的实现类实例
+ @Resource
+ DictionaryTypeServiceInter dictionaryTypeServiceImpl;
+
+ /**
+ * 查询结果集合
+ *
+ * @param query 数据查询对象,用于封装查询条件和排序规则
+ * @param request HTTP请求对象,用于获取请求参数
+ * @param ids 可选的查询条件参数
+ * @return 包含查询结果的Map对象
+ */
+ // 处理 /dictionaryType/query 请求,并将返回值作为JSON响应返回
+ @RequestMapping("/query")
+ @ResponseBody
+ public Map queryall(DataQuery query,
+ HttpServletRequest request, String ids) {
+ try {
+ // 使用EasyUiUtils工具类格式化Grid查询参数
+ query = EasyUiUtils.formatGridQuery(request, query);
+ // 初始化数据查询对象,设置查询的表和要查询的字段
+ query = DataQuery
+ .init(
+ query,
+ "alone_dictionary_type a LEFT JOIN alone_dictionary_type b ON a.parentid = b.id",
+ "a.id AS ID,a.sort AS SORT,a.name AS NAME,a.entitytype AS ENTITYTYPE,a.state AS STATE,b.name AS PNAME");
+ // 添加SQL规则,只查询状态为0或1的记录(非删除的组织机构)
+ query.addSqlRule(" and (a.state = '0' or a.state = '1') ");
+ // 添加默认排序规则,按 a.sort 字段升序排序
+ query.addDefaultSort(new DBSort("a.sort", "asc"));
+ // 如果ids参数不为空,则添加查询规则,只查询 a.entity 等于 ids 的记录
+ if (ids != null && ids.trim().length() > 0) {
+ query.addRule(new DBRule("a.entity", ids, "="));
+ }
+ // 执行查询操作,获取查询结果
+ DataResult result = query.search();
+ // 对查询结果中的 STATE 字段进行字典转换,将 1 转换为可用,0 转换为禁用
+ result.runDictionary("1:可用,0:禁用", "STATE");
+ // 将查询结果通过EasyUiUtils工具类格式化后,放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance()
+ .putAttrs(EasyUiUtils.formatGridData(result))
+ .returnObjMode();
+ } catch (Exception e) {
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 提交修改数据
+ *
+ * @param dictionary 要修改的字典类型实体对象
+ * @param session 用户会话对象,用于获取当前用户信息
+ * @return 包含修改后实体对象的Map对象
+ */
+ // 处理 /dictionaryType/edit 请求,并将返回值作为JSON响应返回
+ @RequestMapping("/edit")
+ @ResponseBody
+ public Map editSubmit(AloneDictionaryType dictionary, HttpSession session) {
+ try {
+ // 调用服务层的 editEntity 方法修改字典类型实体,并传入当前用户信息
+ AloneDictionaryType entity = dictionaryTypeServiceImpl.editEntity(dictionary, getCurrentUser(session));
+ // 将修改后的实体对象放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance().putAttr("entity", entity)
+ .returnObjMode();
+ } catch (Exception e) {
+ // 打印异常堆栈信息
+ e.printStackTrace();
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 提交新增数据
+ *
+ * @param dictionary 要新增的字典类型实体对象
+ * @param session 用户会话对象,用于获取当前用户信息
+ * @return 包含新增后实体对象的Map对象
+ */
+ // 处理 /dictionaryType/add 请求,并将返回值作为JSON响应返回
+ @RequestMapping("/add")
+ @ResponseBody
+ public Map addSubmit(AloneDictionaryType dictionary, HttpSession session) {
+ try {
+ // 调用服务层的 insertEntity 方法插入字典类型实体,并传入当前用户信息
+ AloneDictionaryType entity = dictionaryTypeServiceImpl.insertEntity(dictionary, getCurrentUser(session));
+ // 设置操作类型为新增,将新增的实体对象放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance().setOperate(OperateType.ADD)
+ .putAttr("entity", entity).returnObjMode();
+ } catch (Exception e) {
+ // 打印异常堆栈信息
+ e.printStackTrace();
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 删除数据
+ *
+ * @param ids 要删除的记录的ID集合,多个ID用逗号分隔
+ * @param session 用户会话对象,用于获取当前用户信息
+ * @return 操作结果的Map对象
+ */
+ // 处理 /dictionaryType/del 请求,并将返回值作为JSON响应返回
+ @RequestMapping("/del")
+ @ResponseBody
+ public Map delSubmit(String ids, HttpSession session) {
+ try {
+ // 解析ID集合,将其拆分为单个ID
+ for (String id : parseIds(ids)) {
+ // 如果要删除的实体存在,则调用服务层的 deleteEntity 方法删除该实体,并传入当前用户信息
+ if (dictionaryTypeServiceImpl.getEntity(id) != null) {
+ dictionaryTypeServiceImpl.deleteEntity(id, getCurrentUser(session));
+ }
+ }
+ // 返回一个空的操作结果Map对象
+ return ViewMode.getInstance().returnObjMode();
+ } catch (Exception e) {
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 跳转
+ *
+ * @param ids 可选的参数
+ * @param type 跳转类型,0 表示树,其他表示序列
+ * @return 包含视图信息和参数的ModelAndView对象
+ */
+ // 处理 /dictionaryType/ALONEDictionaryType_ACTION_CONSOLE 请求
+ @RequestMapping("/ALONEDictionaryType_ACTION_CONSOLE")
+ public ModelAndView forSend(String ids, String type) {
+ if ("0".equals(type)) { // 如果 type 为 0,则跳转到树布局页面
+ return ViewMode.getInstance()
+ .putAttr("ids", ids)
+ .putAttr("type", type)
+ .returnModelAndView("parameter/pAloneDictionaryTypeTreeLayout");
+ } else { // 否则跳转到序列布局页面
+ return ViewMode.getInstance()
+ .putAttr("ids", ids)
+ .putAttr("type", type)
+ .returnModelAndView("parameter/pAloneDictionaryTypeLayout");
+ }
+ }
+
+ /**
+ * 显示详细信息(修改或浏览时)
+ *
+ * @param pageset 请求模式对象,包含操作类型等信息
+ * @param ids 要操作的记录的ID
+ * @param dicId 关联的数据字典ID
+ * @return 包含视图信息和模型数据的ModelAndView对象
+ */
+ // 处理 /dictionaryType/form 请求
+ @RequestMapping("/form")
+ public ModelAndView view(RequestMode pageset, String ids, String dicId) {
+ try {
+ // 根据请求模式的操作类型进行不同处理
+ switch (pageset.getOperateType()) {
+ case (1): { // 新增
+ // 如果 dicId 为空,则抛出异常
+ if (dicId == null || dicId.equals("")) {
+ throw new RuntimeException("找不到关联的数据字典!");
+ }
+ // 创建一个新的字典类型实体对象,并设置其 entity 属性为 dicId
+ AloneDictionaryType entity = new AloneDictionaryType();
+ entity.setEntity(dicId);
+ // 将请求模式对象和实体对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", entity)
+ .returnModelAndView("parameter/pAloneDictionaryTypeEntity");
+ }
+ case (0): { // 展示
+ // 将请求模式对象和要展示的实体对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", dictionaryTypeServiceImpl.getEntity(ids))
+ .returnModelAndView("parameter/pAloneDictionaryTypeEntity");
+ }
+ case (2): { // 修改
+ // 将请求模式对象和要修改的实体对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", dictionaryTypeServiceImpl.getEntity(ids))
+ .returnModelAndView("parameter/pAloneDictionaryTypeEntity");
+ }
+ default:
+ break;
+ }
+ } catch (Exception e) {
+ // 将异常信息放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().setError(e + e.getMessage())
+ .returnModelAndView("parameter/pAloneDictionaryEntityEntity");
+ }
+ // 返回默认视图名的ModelAndView对象
+ return ViewMode.getInstance().returnModelAndView(
+ "parameter/pAloneDictionaryEntityEntity");
+ }
+
+ /**
+ * (树组织结构)显示详细信息
+ *
+ * @param pageset 请求模式对象,包含操作类型等信息
+ * @param ids 要操作的记录的ID
+ * @param dicId 关联的数据字典ID
+ * @param parentId 父节点ID
+ * @return 包含视图信息和模型数据的ModelAndView对象
+ */
+ // 处理 /dictionaryType/viewTreeform 请求
+ @RequestMapping("/viewTreeform")
+ public ModelAndView viewTree(RequestMode pageset, String ids, String dicId, String parentId) {
+ try {
+ // 根据请求模式的操作类型进行不同处理
+ switch (pageset.getOperateType()) {
+ case (1): { // 新增
+ // 如果 dicId 为空,则抛出异常
+ if (dicId == null || dicId.equals("")) {
+ throw new RuntimeException("找不到关联的数据字典!");
+ }
+ // 创建一个新的字典类型实体对象,并设置其 entity 属性为 dicId
+ AloneDictionaryType entity = new AloneDictionaryType();
+ entity.setEntity(dicId);
+ // 如果父节点ID不为空,则获取父节点实体对象
+ if (parentId != null && !parentId.equals("")) {
+ AloneDictionaryType pEntity = dictionaryTypeServiceImpl.getEntity(parentId);
+ // 如果父节点状态为可用,则设置父节点名称和父节点ID
+ if (pEntity.getState().equals("1")) {
+ parentName = pEntity.getName(); // 回显父组织机构名称
+ entity.setParentid(parentId);
+ }
+ } else {
+ // 否则设置父节点ID为 NONE
+ entity.setParentid("NONE");
+ }
+ // 将请求模式对象、实体对象和父节点名称放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", entity)
+ .putAttr("parentName", parentName)
+ .returnModelAndView("parameter/pAloneDictionaryTypeTreeEntity");
+ }
+ case (0): { // 展示
+ // 将请求模式对象和要展示的实体对象放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", dictionaryTypeServiceImpl.getEntity(ids))
+ .returnModelAndView("parameter/pAloneDictionaryTypeTreeEntity");
+ }
+ case (2): { // 修改
+ // 获取要修改的实体对象
+ AloneDictionaryType entity = dictionaryTypeServiceImpl.getEntity(ids);
+ // 如果父节点ID不为 NONE,则获取父节点名称
+ if (!entity.getParentid().equals("NONE")) {
+ parentName = dictionaryTypeServiceImpl.getEntity(entity.getParentid())
+ .getName();
+ }
+ // 将请求模式对象、实体对象和父节点名称放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("pageset", pageset)
+ .putAttr("entity", entity)
+ .putAttr("parentName", parentName)
+ .returnModelAndView("parameter/pAloneDictionaryTypeTreeEntity");
+ }
+ default:
+ break;
+ }
+ } catch (Exception e) {
+ // 打印异常堆栈信息
+ e.printStackTrace();
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().setError(e + e.getMessage())
+ .returnModelAndView("parameter/pAloneDictionaryTypeTreeEntity");
+ }
+ // 返回默认视图名的ModelAndView对象
+ return ViewMode.getInstance().returnModelAndView(
+ "parameter/pAloneDictionaryTypeTreeEntity");
+ }
+
+ /**
+ * 加载树节点
+ *
+ * @param ids 关联的数据字典ID
+ * @param id 当前节点ID
+ * @return 格式化后的树节点数据
+ */
+ // 处理 /dictionaryType/dictionaryTreeNote 请求,并将返回值作为JSON响应返回
+ @RequestMapping("/dictionaryTreeNote")
+ @ResponseBody
+ public Object loadTreeNode(String ids, String id) {
+ // 如果当前节点ID为空,则设置为 NONE
+ if (id == null) {
+ id = "NONE";
+ }
+ try {
+ // 格式化异步Ajax树节点数据,查询一级和二级树节点,并进行格式化返回
+ return EasyUiTreeNode
+ .formatAsyncAjaxTree(
+ EasyUiTreeNode
+ .queryTreeNodeOne(
+ id,
+ "SORT",
+ " (SELECT a.id AS ID,a.parentid AS PARENTID,a.name AS NAME,a.ctime AS CTIME,a.sort AS SORT,a.entity AS ENTITY,a.state AS STATE FROM ALONE_DICTIONARY_TYPE a LEFT JOIN ALONE_DICTIONARY_ENTITY b ON a.ENTITY = b.id WHERE b.type = 0) ",
+ "ID",
+ "PARENTID",
+ "NAME",
+ "CTIME",
+ " and a.ENTITY='" + ids
+ + "' and a.state!=2")
+ .getResultList(),
+ EasyUiTreeNode
+ .queryTreeNodeTow(
+ id,
+ "SORT",
+ " (SELECT a.id AS ID,a.parentid AS PARENTID,a.name AS NAME,a.ctime AS CTIME,a.sort AS SORT,a.entity AS ENTITY,a.state AS STATE FROM ALONE_DICTIONARY_TYPE a LEFT JOIN ALONE_DICTIONARY_ENTITY b ON a.ENTITY = b.id WHERE b.type = 0) ",
+ "ID",
+ "PARENTID",
+ "NAME",
+ "CTIME",
+ " and a.ENTITY='" + ids
+ + "' and a.state!=2")
+ .getResultList(), "PARENTID", "ID", "NAME",
+ "CTIME");
+ } catch (Exception e) {
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+}
diff --git a/src/wcp-parameter/src/main/java/com/farm/parameter/controller/ParameterController.java b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/ParameterController.java
new file mode 100644
index 0000000..573a49d
--- /dev/null
+++ b/src/wcp-parameter/src/main/java/com/farm/parameter/controller/ParameterController.java
@@ -0,0 +1,411 @@
+// 声明当前类所在的包
+package com.farm.parameter.controller;
+
+// 导入用于创建动态数组的类
+import java.util.ArrayList;
+// 导入用于创建键值对映射的类
+import java.util.HashMap;
+// 导入用于处理列表的接口
+import java.util.List;
+// 导入用于处理键值对映射的接口
+import java.util.Map;
+// 导入用于遍历Map的条目接口
+import java.util.Map.Entry;
+
+// 用于依赖注入,将Spring容器中的Bean注入到当前类的属性中
+import javax.annotation.Resource;
+// 用于处理HTTP请求,获取请求参数、请求头等信息
+import javax.servlet.http.HttpServletRequest;
+// 用于管理用户会话,存储和获取会话相关的数据
+import javax.servlet.http.HttpSession;
+
+// 用于记录日志信息,方便调试和监控程序运行状态
+import org.apache.log4j.Logger;
+// 标记该类为Spring MVC的控制器,用于处理HTTP请求
+import org.springframework.stereotype.Controller;
+// 用于将HTTP请求映射到控制器的方法上
+import org.springframework.web.bind.annotation.RequestMapping;
+// 用于将方法的返回值直接作为HTTP响应体返回
+import org.springframework.web.bind.annotation.ResponseBody;
+// 用于封装模型数据和视图信息,返回给前端页面
+import org.springframework.web.servlet.ModelAndView;
+
+import com.farm.parameter.domain.AloneParameter;
+import com.farm.parameter.service.ParameterServiceInter;
+import com.farm.parameter.service.impl.ConstantVarService;
+import com.farm.parameter.service.impl.PropertiesFileService;
+import com.farm.core.page.RequestMode;
+import com.farm.core.page.ViewMode;
+import com.farm.core.sql.query.DBSort;
+import com.farm.core.sql.query.DataQuery;
+import com.farm.core.sql.result.DataResult;
+import com.farm.web.WebUtils;
+import com.farm.web.easyui.EasyUiUtils;
+
+/**
+ * 系统参数Action
+ *
+ * @author zhang_hc
+ * @time 2012-8-31 上午11:47:25
+ * @author wangdong
+ * @time 2015-7-03 上午10:19:25
+ */
+// 所有以 /parameter 开头的请求都会由该控制器处理
+@RequestMapping("/parameter")
+// 标记该类为Spring MVC的控制器
+@Controller
+// 继承WebUtils类,可使用其提供的工具方法
+public class ParameterController extends WebUtils {
+
+ // 定义日志记录器,用于记录该类的日志信息
+ private static final Logger log = Logger
+ .getLogger(ParameterController.class);
+
+ // 使用@Resource注解注入ParameterServiceInter接口的实现类实例
+ @Resource
+ ParameterServiceInter parameterServiceImpl;
+
+ /**
+ * 查询结果集合
+ *
+ * @param query 数据查询对象,用于封装查询条件和排序规则
+ * @param request HTTP请求对象,用于获取请求参数
+ * @return 包含查询结果的Map对象
+ */
+ // 处理 /parameter/query 请求,并将返回值作为JSON响应返回
+ @RequestMapping("/query")
+ @ResponseBody
+ public Map queryall(DataQuery query,
+ HttpServletRequest request) {
+ // 使用EasyUiUtils工具类格式化Grid查询参数
+ query = EasyUiUtils.formatGridQuery(request, query);
+ try {
+ // 初始化数据查询对象,设置查询的表和要查询的字段
+ query = DataQuery.init(//
+ query, //
+ "Alone_Parameter a", //
+ "id,domain,name,pkey,pvalue,vtype,comments");
+
+ // 添加排序规则,按最后修改时间降序排序
+ query.addSort(new DBSort("a.utime", "desc"));
+ // 执行查询操作,获取查询结果
+ DataResult result = query.search();
+ // 创建一个HashMap用于状态转义
+ HashMap transMap = new HashMap();
+ // 将 null 转义为空字符串
+ transMap.put("null", "");
+ // 对查询结果中的 COMMENTS 字段进行状态转义
+ result.runDictionary(transMap, "COMMENTS");
+ // 将查询结果通过EasyUiUtils工具类格式化后,放入ViewMode实例中,并返回包含结果的Map对象
+ return ViewMode.getInstance()
+ .putAttrs(EasyUiUtils.formatGridData(result))
+ .returnObjMode();
+ } catch (Exception e) {
+ // 记录异常信息到日志
+ log.error(e.getMessage());
+ // 将异常信息放入ViewMode实例中,并返回包含错误信息的Map对象
+ return ViewMode.getInstance().setError(e.getMessage())
+ .returnObjMode();
+ }
+ }
+
+ /**
+ * 进入参数定义界面
+ *
+ * @param session 用户会话对象,用于获取用户会话信息
+ * @return 返回包含视图信息的ModelAndView对象
+ */
+ // 处理 /parameter/list 请求
+ @RequestMapping("/list")
+ public ModelAndView index(HttpSession session) {
+ // 通过ViewMode实例返回一个ModelAndView对象,指定视图名为 parameter/pAloneParameterLayout
+ return ViewMode.getInstance().returnModelAndView(
+ "parameter/pAloneParameterLayout");
+ }
+
+ /**
+ * 进入参数配置界面
+ *
+ * @return 返回包含视图信息和模型数据的ModelAndView对象
+ */
+ // 处理 /parameter/editlist 请求
+ @RequestMapping("/editlist")
+ public ModelAndView showPara() {
+ // 从PropertiesFileService中获取文件属性条目列表
+ List> filePropertys = PropertiesFileService
+ .getEntrys();
+ // 从ConstantVarService中获取常量属性条目列表
+ List> constantPropertys = ConstantVarService
+ .getEntrys();
+ // 将文件属性条目列表和常量属性条目列表放入ViewMode实例中,并返回指定视图名的ModelAndView对象
+ return ViewMode.getInstance().putAttr("filePropertys", filePropertys)
+ .putAttr("constantPropertys", constantPropertys)
+ .returnModelAndView("parameter/pAloneParameterConf");
+ }
+
+ // 处理 /parameter/userelist 请求
+ @RequestMapping("/userelist")
+ public ModelAndView showUserPara() {
+ // 通过ViewMode实例返回一个ModelAndView对象,指定视图名为 parameter/pAloneParameterConfForUser
+ return ViewMode.getInstance().returnModelAndView(
+ "parameter/pAloneParameterConfForUser");
+ }
+
+ /**
+ * 查询数据并格式化为EasyUI所需的列表
+ *
+ * @param query 数据查询对象,用于封装查询条件和排序规则
+ * @param request HTTP请求对象,用于获取请求参数
+ * @return 格式化后的参数列表
+ */
+ // 处理 /parameter/queryForEU 请求,并将返回值作为JSON响应返回
+ @RequestMapping("/queryForEU")
+ @ResponseBody
+ public List