Browse Source

feat: 开发中国社保模块中的个人权益单

ouyangtianpeng 1 month ago
parent
commit
2b86248ff1

+ 135 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/selfsearch/SelfSearchFormPlugin.java

@@ -1,11 +1,145 @@
 package nckd.jxccl.sit.hcsi.formplugin.web.selfsearch;
 package nckd.jxccl.sit.hcsi.formplugin.web.selfsearch;
 
 
+import kd.bos.context.RequestContext;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.utils.ObjectUtils;
+import kd.bos.entity.datamodel.IDataModel;
+import kd.bos.form.control.Control;
+import kd.bos.form.control.Label;
 import kd.bos.form.plugin.AbstractFormPlugin;
 import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
+import kd.hrmp.hrobs.business.domain.assignment.service.IAssignmentDomainService;
 import kd.sdk.plugin.Plugin;
 import kd.sdk.plugin.Plugin;
+import nckd.jxccl.hr.hstu.common.HonorStudentConstant;
+
+import java.util.Date;
+import java.util.EventObject;
 
 
 /**
 /**
- * 动态表单插件
+ * Tyx 2025-10-27
+ * 个人权益单查询表单插件
  */
  */
 public class SelfSearchFormPlugin extends AbstractFormPlugin implements Plugin {
 public class SelfSearchFormPlugin extends AbstractFormPlugin implements Plugin {
 
 
+    private static final HRBaseServiceHelper INSURANCE_HELPER = new HRBaseServiceHelper("hcsi_sibase");
+    private static final HRBaseServiceHelper SINSURFILE_HELPER = new HRBaseServiceHelper("hcsi_sinsurfile");
+
+    private static final String SEARCH_BTN_KEY = "nckd_btnsearch";
+
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        this.addClickListeners(SEARCH_BTN_KEY);
+    }
+
+    /**
+     * 按钮点击事件
+     * @param evt
+     */
+    @Override
+    public void click(EventObject evt) {
+        super.click(evt);
+        Control source = (Control) evt.getSource();
+        // 点击按钮的标识
+        String key = source.getKey();
+        if("nckd_btnsearch".equals(key)){
+            // 清除单据体n
+            this.getModel().deleteEntryData("nckd_entryentity");
+            // 获取到期间:
+            DynamicObject period = (DynamicObject) this.getModel().getValue("nckd_sinsurperiod");
+            Date endDate = period.getDate("enddate");
+            if(ObjectUtils.isEmpty(period)) {
+                this.getView().showTipNotification("请选择查询期间");
+            }
+            else {
+                // 获取当前登录用户对应的HR人员
+                Long employeeId = IAssignmentDomainService.getInstance().queryEmployeeIdByUserId(RequestContext.getOrCreate().getCurrUserId());
+                if (employeeId != 0L) {
+                    doSearch(endDate, employeeId);
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询实际执行方法
+     */
+    private void doSearch(Date endDate, Long employeeId) {
+        // 查询社保档案
+        DynamicObject sinsurFile = searchSinsurFileInfo(employeeId);
+        if(!ObjectUtils.isEmpty(sinsurFile)) {
+            // 查询基本信息:工号、姓名、性别、社保账号
+            searchEmpBaseInfo(employeeId);
+            // 查询险种信息:
+            searchInsranceInfo(sinsurFile, employeeId, endDate);
+        }
+    }
+
+    private DynamicObject searchSinsurFileInfo(Long employeeId) {
+
+        // 社保档案上有employee
+        // 社保档案上的字段+employee上所有的字段;
+
+        // 查询字段
+        String selectFields = "id,employee.name,employee.empnumber,employee.gender.name,sinsuraccount";
+        // 过滤条件
+        QFilter filter = new QFilter("employee.id", QCP.equals, employeeId);
+        // 实际查询
+        DynamicObject sinsurFile = SINSURFILE_HELPER.queryOriginalOne(selectFields, new QFilter[]{filter});
+        return sinsurFile;
+
+
+    }
+
+    /**
+     * 查询基本信息:工号、姓名、性别、社保账号
+     * @param employeeId
+     */
+    private void searchEmpBaseInfo(Long employeeId) {
+        String selectFields = "employee.name,employee.number,employee.gender.name,sinsuraccount";
+        QFilter filter = new QFilter("employee.id", QCP.equals, employeeId);
+        DynamicObject sinsurFile = SINSURFILE_HELPER.queryOriginalOne(selectFields, new QFilter[]{filter});
+        setLabelText("nckd_nameval", sinsurFile.getString("employee.name"));
+        setLabelText("nckd_nunmberval", sinsurFile.getString("employee.number"));
+        setLabelText("nckd_sexval", sinsurFile.getString("employee.gender.name"));
+        setLabelText("nckd_socnumberval", sinsurFile.getString("sinsuraccount"));
+
+    }
+
+    /**
+     * 查询险种信息:险种,个人缴纳基数,单位缴纳基数,缴纳单位,备注
+     * @param employeeId
+     */
+    private void searchInsranceInfo(DynamicObject sinsurFile, Long employeeId, Date date) {
+        String selectFileds = "welfaretype.id, paybaseofemployee, paybaseofcompany, sinsurfile.welfarepayer.id, sinsurfile.employee.empnumber, description";
+        QFilter filter1 = new QFilter("sinsurfile.employee.empnumber", QCP.equals, sinsurFile.getString("employee.empnumber"));
+        filter1.and("startdate", QCP.less_equals, date);
+        filter1.and("enddate", QCP.large_equals, date);
+        DynamicObjectCollection dyn = INSURANCE_HELPER.queryOriginalCollection(selectFileds, new QFilter[]{filter1});
+
+        IDataModel dataModel = this.getModel();
+        for(DynamicObject d : dyn) {
+            int row = dataModel.createNewEntryRow("nckd_entryentity");
+            // 基础资料类型数据,获取id进行数据更新
+            dataModel.setValue("nckd_welfaretype", d.getLong("welfaretype.id"), row);
+            dataModel.setValue("nckd_welfarepayer", d.getLong("sinsurfile.welfarepayer.id"), row);
+            dataModel.setValue("nckd_paybaseofcompany", d.getBigDecimal("paybaseofcompany"), row);
+            dataModel.setValue("nckd_paybaseofemployee", d.getBigDecimal("paybaseofemployee"), row);
+            dataModel.setValue("nckd_remark", d.getString("description"), row);
+        }
+    }
+
+    /**
+     * 设置标签文本值
+     * @param lblKey
+     * @param value
+     */
+    private void setLabelText(String lblKey, String value) {
+        Label label = (Label)this.getView().getControl(lblKey);
+        label.setText(value);
+    }
 }
 }