Bläddra i källkod

动态字段功能实现

yzc 1 år sedan
förälder
incheckning
e44767e73e

+ 11 - 0
hx-account/src/main/java/com/fjhx/account/controller/cost/CostControlController.java

@@ -1,5 +1,6 @@
 package com.fjhx.account.controller.cost;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.account.entity.cost.dto.CostControlDto;
 import com.fjhx.account.entity.cost.dto.CostControlSelectDto;
@@ -68,4 +69,14 @@ public class CostControlController {
         costControlService.delete(dto.getId());
     }
 
+    /**
+     * 费控删除
+     *
+     * @return
+     */
+    @PostMapping("/getFieldInfo")
+    public JSONObject getFieldInfo() {
+        return costControlService.getFieldInfo();
+    }
+
 }

+ 16 - 0
hx-account/src/main/java/com/fjhx/account/entity/cost/po/CostControl.java

@@ -1,6 +1,7 @@
 package com.fjhx.account.entity.cost.po;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fjhx.common.controller.Label;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
@@ -26,76 +27,91 @@ public class CostControl extends BasePo {
     /**
      * 费用类型
      */
+    @Label("费用类型")
     private String costType;
 
     /**
      * 记账凭证号
      */
+    @Label("记账凭证号")
     private String voucherNo;
 
     /**
      * 申请时间
      */
+    @Label("申请时间")
     private String applyTime;
 
     /**
      * 流水号
      */
+    @Label("流水号")
     private String code;
 
     /**
      * 物流公司id
      */
+    @Label("物流公司信息")
     private String logisticsCompanyId;
 
     /**
      * 是否提交凭证
      */
+    @Label("是否提交凭证")
     private String isVoucher;
 
     /**
      * 所属中心
      */
+    @Label("所属中心")
     private String companyId;
 
     /**
      * 所属部门
      */
+    @Label("所属部门")
     private String deptId;
 
     /**
      * 申请人id
      */
+    @Label("申请人")
     private String applyUserId;
 
     /**
      * 是否预付
      */
+    @Label("是否预付")
     private String isAdvance;
 
     /**
      * 合计金额
      */
+    @Label("合计金额")
     private String amount;
 
     /**
      * 是否公户转出
      */
+    @Label("是否公户转出")
     private String isPublicTransfer;
 
     /**
      * 开户名
      */
+    @Label("开户名")
     private String accountName;
 
     /**
      * 开户行
      */
+    @Label("开户行")
     private String accountBank;
 
     /**
      * 开户账号
      */
+    @Label("开户账号")
     private String accountNumber;
 
 }

+ 27 - 0
hx-account/src/main/java/com/fjhx/account/entity/cost/po/CostControlDetail.java

@@ -1,6 +1,7 @@
 package com.fjhx.account.entity.cost.po;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fjhx.common.controller.Label;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
@@ -21,131 +22,157 @@ public class CostControlDetail extends BasePo {
     /**
      * 付款说明
      */
+    @Label("付款说明")
     private String remark;
 
     /**
      * 供应商
      */
+    @Label("供应商")
     private String supplierId;
 
     /**
      * 收款单位
      */
+    @Label("收款单位")
     private String payeeAccountId;
 
     /**
      * 申请备注
      */
+    @Label("申请备注")
     private String applyRemark;
 
     /**
      * 抵扣工资月份
      */
+    @Label("抵扣工资月份")
     private String deductionMonth;
 
     /**
      * 本期应付
      */
+    @Label("本期应付")
     private String currentPayable;
 
     /**
      * 本期应付(抵扣后)
      */
+    @Label("本期应付(抵扣后)")
     private String currentPayableDeduction;
 
     /**
      * 记账科目
      */
+    @Label("记账科目")
     private String accountSubjectsId;
 
     /**
      * 记账金额
      */
+    @Label("记账金额")
     private String money;
 
     /**
      * 快递公司
      */
+    @Label("快递公司")
     private String logisticsCompanyId;
 
     /**
      * 开票税点
      */
+    @Label("开票税点")
     private String invoiceTaxPoint;
 
     /**
      * 结存预付款_含税
      */
+    @Label("结存预付款_含税")
     private String balancePrepaidTax;
 
     /**
      * 结存预付款
      */
+    @Label("结存预付款")
     private String balancePrepaid;
 
     /**
      * 帐期
      */
+    @Label("帐期")
     private String accountPeriod;
 
     /**
      * 本账期金额
      */
+    @Label("本账期金额")
     private String accountPeriodAmount;
 
     /**
      * 本账期金额_含税
      */
+    @Label("本账期金额_含税")
     private String accountPeriodAmountTax;
 
     /**
      * 本账期调整金额
      */
+    @Label("本账期调整金额")
     private String accountPeriodAdjustAmount;
 
     /**
      * 本期预付款_含税
      */
+    @Label("本期预付款_含税")
     private String currentPrepaidTax;
 
     /**
      * 本期预付款
      */
+    @Label("本期预付款")
     private String currentPrepaid;
 
     /**
      * 抵扣预付款_含税
      */
+    @Label("抵扣预付款_含税")
     private String deductionPrepaidTax;
 
     /**
      * 抵扣预付款
      */
+    @Label("抵扣预付款")
     private String deductionPrepaid;
 
     /**
      * 店铺id
      */
+    @Label("店铺信息")
     private String shopId;
 
     /**
      * 费用类型
      */
+    @Label("费用类型")
     private String costType;
 
     /**
      * 刷单时间
      */
+    @Label("刷单时间")
     private String brushingTime;
 
     /**
      * 推广费类型
      */
+    @Label("推广费类型")
     private String promotionFeeType;
 
     /**
      * 税费
      */
+    @Label("税费")
     private String taxation;
 
 }

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/payment/po/PaymentType.java

@@ -38,4 +38,9 @@ public class PaymentType extends BasePo {
      */
     private String sort;
 
+    /**
+     * 动态字段json
+     */
+    private String dynamicFieldJson;
+
 }

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/service/cost/CostControlService.java

@@ -1,5 +1,6 @@
 package com.fjhx.account.service.cost;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.account.entity.cost.dto.CostControlDto;
 import com.fjhx.account.entity.cost.dto.CostControlSelectDto;
@@ -43,4 +44,8 @@ public interface CostControlService extends BaseService<CostControl> {
      */
     void delete(Long id);
 
+    /**
+     * 获取字段列表
+     */
+    JSONObject getFieldInfo();
 }

+ 47 - 0
hx-account/src/main/java/com/fjhx/account/service/cost/impl/CostControlServiceImpl.java

@@ -1,17 +1,26 @@
 package com.fjhx.account.service.cost.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.account.entity.cost.dto.CostControlDto;
 import com.fjhx.account.entity.cost.dto.CostControlSelectDto;
 import com.fjhx.account.entity.cost.po.CostControl;
+import com.fjhx.account.entity.cost.vo.CostControlDetailVo;
 import com.fjhx.account.entity.cost.vo.CostControlVo;
 import com.fjhx.account.mapper.cost.CostControlMapper;
 import com.fjhx.account.service.cost.CostControlService;
+import com.fjhx.common.controller.Label;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.stereotype.Service;
 
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 
 /**
  * <p>
@@ -54,4 +63,42 @@ public class CostControlServiceImpl extends ServiceImpl<CostControlMapper, CostC
         this.removeById(id);
     }
 
+    @Override
+    public JSONObject getFieldInfo() {
+
+
+        List<JSONObject> infoField = getField(CostControlVo.class);
+        List<JSONObject> detailField = getField(CostControlDetailVo.class);
+
+        JSONObject json = new JSONObject();
+        json.put("infoField", infoField);
+        json.put("detailField", detailField);
+
+
+        return json;
+    }
+
+    private List<JSONObject> getField(Class cl) {
+        //获取所有字段
+        List<Field> fieldList = new ArrayList<>();
+        Collections.addAll(fieldList, cl.getDeclaredFields());
+        Class<? super CostControlVo> superclass = cl.getSuperclass();
+        if (ObjectUtil.isNotEmpty(superclass)) {
+            Collections.addAll(fieldList, superclass.getDeclaredFields());
+        }
+
+        //遍历处理
+        List<JSONObject> arr = new ArrayList<>();
+        for (Field field : fieldList) {
+            Label labelAnnotation = field.getAnnotation(Label.class);
+            if (labelAnnotation != null) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("key", field.getName());
+                jsonObject.put("val", labelAnnotation.value());
+                arr.add(jsonObject);
+            }
+        }
+        return arr;
+    }
+
 }

+ 13 - 0
hx-common/src/main/java/com/fjhx/common/controller/Label.java

@@ -0,0 +1,13 @@
+package com.fjhx.common.controller;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Label {
+    String value();
+}
+