Explorar o código

feat(base): 新增通用 QFilter 辅助类和组织辅助类

- 在 FromConstant 中添加了新的常量字段
- 新增 QFilterCommonHelper 类,提供通用的 QFilter 方法
- 新增 AdminOrgHelper 类,提供组织相关的辅助方法
- 新增 QFilterPersonHelper 类,提供人员查询相关的 QFilter 方法
wyc hai 1 semana
pai
achega
13514dec01

+ 14 - 5
code/base/nckd-jxccl-base-common/src/main/java/nckd/jxccl/base/common/constant/FromConstant.java

@@ -12,6 +12,8 @@ public class FromConstant {
     public static final String ID_KEY = "id";
     /** 名称标识 */
     public static final String NAME_KEY = "name";
+    /** 编号标识 */
+    public static final String NUMBER_KEY = "number";
     /** 分录字段标识 */
     public static final String ENTRY_ENTITY_KEY = "entryentity";
     /** 保存按钮标识 */
@@ -29,7 +31,7 @@ public class FromConstant {
     /**
      * 单据状态
      **/
-    public static final String BILL_STATUS_KEY = "BILLSTATUS";
+    public static final String BILL_STATUS_KEY = "billstatus";
     /**
      * 创建人
      **/
@@ -71,12 +73,19 @@ public class FromConstant {
      **/
     public static final String MODIFY_DATE_FIELD_KEY = "MODIFYDATEFIELD";
     /** 数据状态 */
-    public static final String STATUS = "STATUS";
+    public static final String STATUS = "status";
     /** 使用状态 */
-    public static final String ENABLE = "ENABLE";
+    public static final String ENABLE = "enable";
     /** 主数据内码 */
-    public static final String MASTERID = "MASTERID";
-
+    public static final String MASTER_ID = "masterid";
+    /**** 是否当前版本 */
+    public static final String IS_CURRENT_VERSION = "iscurrentversion";
+    /** 数据状态 */
+    public static final String DATA_STATUS = "datastatus";
+    /** 业务状态 */
+    public static final String BUSINESS_STATUS = "businessstatus";
+    /** 初始状态 */
+    public static final String INIT_STATUS = "initstatus";
 
     /** 确认框确认按钮 */
     public static final String OP_BTN_OK = "btnok";

+ 59 - 0
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/org/helper/AdminOrgHelper.java

@@ -0,0 +1,59 @@
+package nckd.jxccl.base.org.helper;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.hr.hbp.business.dao.factory.HRBaseDaoFactory;
+import nckd.jxccl.base.common.utils.ConvertUtil;
+import nckd.jxccl.base.orm.helper.QFilterCommonHelper;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * 组织辅助类
+ * @author W.Y.C
+ * @date 2025/7/7 10:58
+ * @version 1.0
+ */
+public class AdminOrgHelper {
+
+    /**
+     * 获取当前组织下的所有子组织
+     * @param adminOrgId 组织id
+     * @return: java.util.Set<java.lang.Long>
+     * @author W.Y.C
+     * @date: 2025/07/07 11:03
+     */
+   public static Set<Long> getChildOrg(Long adminOrgId) {
+       QFilter adminOrgIdFilter = new QFilter("adminorg.id", QCP.equals,adminOrgId);
+       DynamicObject structLongNumber = HRBaseDaoFactory.getInstance("haos_adminorgstruct").queryOne("structlongnumber",
+               new QFilter[]{QFilterCommonHelper.getCurrentVersionFilter(), QFilterCommonHelper.getInitStatusFinishFilter(),
+               QFilterCommonHelper.getDataStatusFilter(), adminOrgIdFilter});
+       String longNumber = structLongNumber.getString("structlongnumber");
+
+       QFilter structLongNumberFilter = new QFilter("structlongnumber", QCP.like, longNumber + "%");
+       DynamicObjectCollection dynamicObjects = HRBaseDaoFactory.getInstance("haos_adminorgstruct").queryColl("adminorg.id adminorg", new QFilter[]{structLongNumberFilter, QFilterCommonHelper.getCurrentVersionFilter(), QFilterCommonHelper.getInitStatusFinishFilter(),
+               QFilterCommonHelper.getDataStatusFilter()}, null);
+       Set<Long> ids = new HashSet<>(dynamicObjects.size());
+       dynamicObjects.forEach(dynamicObject -> ids.add(dynamicObject.getLong("adminorg")));
+       return ids;
+   }
+
+   /**
+    * 获取上级组织
+    * @param adminOrgId 组织id
+    * @return: java.lang.Long
+    * @author W.Y.C
+    * @date: 2025/07/07 15:08
+    */
+    public static Long getParentOrg(Long adminOrgId) {
+        QFilter adminOrgIdFilter = new QFilter("adminorg.id", QCP.equals,adminOrgId);
+        DynamicObject parentOrg = HRBaseDaoFactory.getInstance("haos_adminorgstruct").queryOne("parentorg.id as parentorg",
+                new QFilter[]{QFilterCommonHelper.getCurrentVersionFilter(), QFilterCommonHelper.getInitStatusFinishFilter(),
+                QFilterCommonHelper.getDataStatusFilter(), adminOrgIdFilter});
+        return parentOrg.getLong("parentorg");
+
+    }
+}

+ 146 - 0
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/orm/helper/QFilterCommonHelper.java

@@ -0,0 +1,146 @@
+package nckd.jxccl.base.orm.helper;
+
+import kd.bos.common.enums.EnableEnum;
+import kd.bos.entity.constant.StatusEnum;
+import kd.bos.entity.validate.BillStatus;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import nckd.jxccl.base.common.constant.FromConstant;
+import nckd.jxccl.base.common.utils.ConvertUtil;
+
+import java.util.List;
+
+/**
+ * QFilter 通用辅助类
+ * @author W.Y.C
+ * @date 2025/7/7 9:17
+ * @version 1.0
+ */
+public final class QFilterCommonHelper {
+
+    private static final Log logger = LogFactory.getLog(QFilterCommonHelper.class);
+
+    private QFilterCommonHelper() {
+    }
+    /**
+     * 获取使用状态为可用的QFilter实例
+     * @param
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getEnableFilter() {
+        return getEnableFilter(true);
+    }
+
+    /**
+     * 根据使用状态获取QFilter实例
+     * @param enable 是否启用
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getEnableFilter(boolean enable) {
+        return new QFilter(FromConstant.ENABLE, QCP.equals, enable ? EnableEnum.YES.getCode() : EnableEnum.NO.getCode());
+    }
+
+    /**
+     * 获取当前版本QFilter实例
+     * @param
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getCurrentVersionFilter() {
+        return new QFilter(FromConstant.IS_CURRENT_VERSION, QCP.equals, EnableEnum.YES.getCode());
+    }
+
+    /**
+     * 获取状态为已审核的QFilter实例
+     * @param
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getStatusFilter() {
+        return new QFilter(FromConstant.STATUS, QCP.equals, StatusEnum.C.toString());
+    }
+
+    /**
+     * 获取数据版本状态为生效中的QFilter实例
+     * @param
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getDataStatusFilter() {
+        return new QFilter(FromConstant.DATA_STATUS, QCP.equals, EnableEnum.YES.getCode());
+    }
+
+    /**
+     * 获取业务状态为生效中的QFilter实例
+     * @param
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getBusinessStatusFilter() {
+        return new QFilter(FromConstant.BUSINESS_STATUS, QCP.equals, EnableEnum.YES.getCode());
+    }
+
+    /**
+     * 获取初始状态为完成的QFilter实例
+     * @param
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getInitStatusFinishFilter() {
+        return new QFilter(FromConstant.INIT_STATUS, QCP.equals, BillStatus.C.ordinal()+"");
+    }
+
+    /**
+     * 获取业务状态为已审批的QFilter实例
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 17:30
+     */
+    public static QFilter getBillStatusFilter() {
+        return new QFilter(FromConstant.BILL_STATUS_KEY, QCP.equals, BillStatus.C.toString());
+    }
+
+    /**
+     * 获取编号等于number的QFilter实例
+     * @param number
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getNumberEqFilter(String number) {
+        return new QFilter(FromConstant.NUMBER_KEY, QCP.equals, number);
+    }
+
+    /**
+     * 获取主键等于id的QFilter实例
+     * @param id
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getIdEqFilter(Object id) {
+        return new QFilter(FromConstant.ID_KEY, QCP.in, ConvertUtil.toLong(id));
+    }
+
+    /**
+     * 获取主键等于idList的QFilter实例
+     * @param idList
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 09:20
+     */
+    public static QFilter getIdInFilter(List<Long> idList) {
+        return new QFilter(FromConstant.ID_KEY, QCP.in, idList);
+    }
+}

+ 59 - 0
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/orm/helper/QFilterPersonHelper.java

@@ -0,0 +1,59 @@
+package nckd.jxccl.base.orm.helper;
+
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+
+/**
+ * QFilter 人员查询辅助类
+ * @author W.Y.C
+ * @date 2025/7/7 16:52
+ * @version 1.0
+ */
+public class QFilterPersonHelper {
+
+    /** 组织人关联的任职类型编码(任职类型.任职类型分类.编码)*/
+    private static final String POS_TYPE_POST_CATEGORY_KEY = "postype.postcategory.number";
+    /**任职类型全职编码*/
+    private static final String POST_CATEGORY_OF_STAFF_NUMBER = "1010_S";
+
+    /** 组织人关联的用工关系状态编码(企业人.用工关系状态.用工状态分类.编码)*/
+    private static final String LAB_REL_STATUS_CLS_KEY = "employee.laborrelstatus.labrelstatuscls.number";
+    /**用工状态分类为在职*/
+    private static final String LAB_REL_STATUS_CLS_NUMBER = "1020_S";
+
+    /** 组织团队分类编码(组织团队分类.编码)*/
+    private static final String OT_CLASSIFY_NUMBER_KEY = "otclassify.number";
+    /**行政组织*/
+    private static final String OT_CLASSIFY_NUMBER = "1010_S";
+
+    /**
+     * 获取任职类型为全职的Filter(组织人)
+      * @param
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 17:29
+     */
+    public static QFilter getPostCategoryOfStaffFilter(){
+        return new QFilter(POS_TYPE_POST_CATEGORY_KEY, QCP.equals, POST_CATEGORY_OF_STAFF_NUMBER);
+    }
+
+    /**
+     * 获取用工关系状态为在职的Filter(组织人)
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 17:29
+     */
+    public static QFilter getLaborRelStatusOfStaffFilter(){
+        return new QFilter(LAB_REL_STATUS_CLS_KEY, QCP.equals, LAB_REL_STATUS_CLS_NUMBER);
+    }
+
+    /**
+     * 获取组织团队分类为行政组织的Filter(组织人)
+     * @return: kd.bos.orm.query.QFilter
+     * @author W.Y.C
+     * @date: 2025/07/07 17:28
+     */
+    public static QFilter getOtClassifyFilter(){
+        return new QFilter(OT_CLASSIFY_NUMBER_KEY, QCP.equals, OT_CLASSIFY_NUMBER);
+    }
+}