Bläddra i källkod

代发单反写薪酬计提,手动下推代发单

zhouger 7 månader sedan
förälder
incheckning
fd81e1737a

+ 145 - 0
src/main/java/fi/em/formPlugin/AgentpaybillFormPlugin.java

@@ -0,0 +1,145 @@
+package fi.em.formPlugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.ExtendedDataEntity;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.botp.BFTrackerServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.sdk.plugin.Plugin;
+
+import java.util.*;
+
+/**
+ * @author cjz
+ * @date 2024/8/28 15:05
+ * @description:代发处理单支付状态变更后将值反写薪酬计提单
+ */
+public class AgentpaybillFormPlugin extends AbstractListPlugin implements Plugin {
+    private static String nckd_cas_agentpaybill="nckd_cas_agentpaybill";//代发处理单标识
+    private static String nckd_paystate="nckd_paystate";//支付状态标识
+    private static String nckd_salarydistribute="nckd_salarydistribute";//薪酬计提发放单标识
+
+
+    //操作后刷新字段
+    public void afterDoOperation(AfterDoOperationEventArgs arg){
+        super.afterDoOperation(arg);
+        String operateKey = arg.getOperateKey();
+        //关闭付款按钮标识
+        String closepay="closepay";
+        //付款给前置按钮标识
+        String payforfront="payforfront";
+        //实时反写支付状态字段给上游薪酬计提
+        if(closepay.equals(operateKey)||payforfront.equals(operateKey)) {
+            this.getView().updateView();
+            //获取当前单据模型
+            DynamicObject dynamicObject=this.getModel().getDataEntity();
+            //获取代发分录
+            DynamicObjectCollection entryCollection=dynamicObject.getDynamicObjectCollection("entry");
+            //获取源单id
+            Long sourcebillid=entryCollection.get(0).getLong("sourcebillid");
+            //支付状态
+            String nckd_paystate=dynamicObject.getString("nckd_paystate");
+            QFilter filter=new QFilter("id",QCP.equals,sourcebillid);
+            //获取薪酬计提
+            DynamicObject agentpaybill=BusinessDataServiceHelper.loadSingle(nckd_salarydistribute,"id,nckd_paystate",new QFilter[]{filter});
+            agentpaybill.set("nckd_paystate",nckd_paystate);
+            SaveServiceHelper.save(new DynamicObject[] {agentpaybill});
+        }
+
+        //点击关闭付款按钮后,反写分录字段到上游单据
+        if (closepay.equals(operateKey))
+        {
+            //获取当前单据模型
+            DynamicObject dynamicObject=this.getModel().getDataEntity();
+            //获取代发分录
+            DynamicObjectCollection entryCollection=dynamicObject.getDynamicObjectCollection("entry");
+            //获取源单id
+            Long sourcebillid=entryCollection.get(0).getLong("sourcebillid");
+            QFilter filter=new QFilter("id",QCP.equals,sourcebillid);
+            DynamicObject agentpaybill=BusinessDataServiceHelper
+                    .loadSingle(nckd_salarydistribute,
+                            "id,nckd_entrytype,nckd_staffentry,nckd_earlyretiredentry,nckd_retireentry,nckd_salaryentry" +
+                                    ",nckd_salaryentryre,nckd_se_success,nckd_se_sysfeedback,nckd_ee_success,nckd_ee_sysfeedback,nckd_re_success" +
+                                    ",nckd_re_sysfeedback,nckd_sae_success,nckd_sae_sysfeedback,nckd_see_success,nckd_see_sysfeedback"
+                            ,new QFilter[]{filter});
+            //薪酬计提单分录类型
+            String nckd_entrytype=agentpaybill.getString("nckd_entrytype");
+            //薪酬计提单分录
+            if ("A".equals(nckd_entrytype)) {
+                //一般员工分录
+                DynamicObjectCollection nckd_staffentry=agentpaybill.getDynamicObjectCollection("nckd_staffentry");
+                for (int a=0;a<nckd_staffentry.size();a++) {
+                    nckd_staffentry.get(a).set("nckd_se_success",entryCollection.get(a).getBoolean("e_issuccess"));
+                    nckd_staffentry.get(a).set("nckd_se_sysfeedback",entryCollection.get(a).getString("bankreturnmsg"));
+                }
+            }
+            if ("B".equals(nckd_entrytype)) {
+                //内退分录
+                DynamicObjectCollection nckd_earlyretiredentry=agentpaybill.getDynamicObjectCollection("nckd_earlyretiredentry");
+                for (int b=0;b<nckd_earlyretiredentry.size();b++)
+                {
+                    nckd_earlyretiredentry.get(b).set("nckd_ee_success",entryCollection.get(b).getBoolean("e_issuccess"));
+                    nckd_earlyretiredentry.get(b).set("nckd_ee_sysfeedback",entryCollection.get(b).getString("bankreturnmsg"));
+                }
+            }
+            if ("C".equals(nckd_entrytype)) {
+                //退休分录
+                DynamicObjectCollection nckd_retireentry=agentpaybill.getDynamicObjectCollection("nckd_retireentry");
+                for (int c=0;c<nckd_retireentry.size();c++) {
+                    nckd_retireentry.get(c).set("nckd_re_success",entryCollection.get(c).getBoolean("e_issuccess"));
+                    nckd_retireentry.get(c).set("nckd_re_sysfeedback",entryCollection.get(c).getString("bankreturnmsg"));
+                }
+            }
+            if ("D".equals(nckd_entrytype)) {
+                //人力薪酬分录
+                DynamicObjectCollection nckd_salaryentry=agentpaybill.getDynamicObjectCollection("nckd_salaryentry");
+                for (int d=0;d<nckd_salaryentry.size();d++) {
+                    nckd_salaryentry.get(d).set("nckd_sae_success",entryCollection.get(d).getBoolean("e_issuccess"));
+                    nckd_salaryentry.get(d).set("nckd_sae_sysfeedback",entryCollection.get(d).getString("bankreturnmsg"));
+                }
+            }
+            if ("E".equals(nckd_entrytype)) {
+                //人力薪酬内退分录
+                DynamicObjectCollection nckd_salaryentry=agentpaybill.getDynamicObjectCollection("nckd_salaryentryre");
+                for (int d=0;d<nckd_salaryentry.size();d++) {
+                    nckd_salaryentry.get(d).set("nckd_see_success",entryCollection.get(d).getBoolean("e_issuccess"));
+                    nckd_salaryentry.get(d).set("nckd_see_sysfeedback",entryCollection.get(d).getString("bankreturnmsg"));
+                }
+            }
+            //反写后保存
+            SaveServiceHelper.save(new DynamicObject[] {agentpaybill});
+        }
+    }
+
+    public void propertyChanged(PropertyChangedArgs e)
+    {
+        super.beforePropertyChanged(e);
+        String name=e.getProperty().getName();
+        //支付状态发生改变
+        if (nckd_paystate.equals(name))
+        {
+            //获取当前单据模型
+            DynamicObject dynamicObject=this.getModel().getDataEntity(true);
+            //id
+            //获取代发分录
+            DynamicObjectCollection entryCollection=dynamicObject.getDynamicObjectCollection("entry");
+            //获取源单id
+            Long id=entryCollection.get(0).getLong("sourcebillid");
+            //当前支付状态
+            String paystate=dynamicObject.getString(nckd_paystate);
+            QFilter filter=new QFilter("id",QCP.equals,id);
+            DynamicObject agentpaybill=BusinessDataServiceHelper
+                    .loadSingle(nckd_salarydistribute,"id,nckd_paystate",new QFilter[]{filter});
+            //反写薪酬计提支付状态
+            agentpaybill.set("nckd_paystate",paystate);
+            //获取代发单代发分录中字段信息
+            SaveServiceHelper.save(new DynamicObject[] {agentpaybill});
+        }
+    }
+}

+ 91 - 0
src/main/java/fi/em/opplugin/AgentpayPushOpPlugin.java

@@ -0,0 +1,91 @@
+package fi.em.opplugin;
+
+import com.alibaba.druid.util.StringUtils;
+import fi.fa.opplugin.utils.ChangeDataUtils;
+import kd.bos.dataentity.OperateOption;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+
+import kd.bos.entity.api.ApiResult;
+import kd.bos.entity.botp.runtime.ConvertOperationResult;
+import kd.bos.entity.botp.runtime.PushArgs;
+import kd.bos.entity.datamodel.ListSelectedRow;
+import kd.bos.entity.operate.result.OperationResult;
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.exception.KDBizException;
+import kd.bos.metadata.botp.ConvertRuleReader;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.botp.ConvertServiceHelper;
+import kd.bos.servicehelper.operation.OperationServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author cjz
+ * @date 2024/8/30 10:37
+ * @description:薪酬计提单手动下推代发处理
+ */
+public class AgentpayPushOpPlugin extends AbstractOperationServicePlugIn {
+
+    private static String nckd_salarydistribute="nckd_salarydistribute";//薪酬计提发放单标识
+    private static String cas_agentpaybill="cas_agentpaybill";//代发处理单标识
+
+
+
+    @Override
+    public void beginOperationTransaction(BeginOperationTransactionArgs e) {
+        super.beginOperationTransaction(e);
+        if ("push".equals(e.getOperationKey())){
+            DynamicObject[] dynamicObjects = e.getDataEntities();
+            for (int i=0;i< dynamicObjects.length;i++)
+            {
+                //获取当前薪酬计提单
+                DynamicObject info=BusinessDataServiceHelper
+                        .loadSingle(dynamicObjects[i].getPkValue(),dynamicObjects[i].getDynamicObjectType().getName());
+                //源单id
+                Long pkid=info.getLong("id");
+                // 下推参数,设置所选数据项
+                List <ListSelectedRow> selectedRows=new ArrayList<>();
+                ListSelectedRow selectedRow=new ListSelectedRow(pkid);
+                //设置需要下推的单据名
+//                selectedRow.setEntryEntityKey("nckd_salarydistribute");
+                // 设置需要下推的单据体行内码:按分录下推时必须设置
+                selectedRow.setEntryPrimaryKeyValue(pkid);
+                selectedRows.add(selectedRow);
+                // 创建下推参数
+                PushArgs pushArgs = new PushArgs();
+                // 源单标识
+                pushArgs.setSourceEntityNumber(nckd_salarydistribute);
+                // 目标单据标识
+                pushArgs.setTargetEntityNumber(cas_agentpaybill);
+                // 生成转换结果报告
+                pushArgs.setBuildConvReport(true);
+                //传入下推使用的转换规则id,不填则使用默认规则
+//            pushArgs.setRuleId("");
+                //下推默认保存
+                pushArgs.setAutoSave(true);
+                // 设置源单选中的数据包
+                pushArgs.setSelectedRows(selectedRows);
+                // 执行下推操作
+                ConvertOperationResult result = ConvertServiceHelper.push(pushArgs);
+                //获取下推目标单id
+                Set<Object> targetBillIds = result.getTargetBillIds();
+                if(!targetBillIds.isEmpty()) {
+                    this.operationResult.setShowMessage(true);
+                    this.operationResult.setSuccess(true);
+                    this.operationResult.setMessage("下推代发处理单成功");
+                }else {
+                    this.operationResult.setShowMessage(true);
+                    this.operationResult.setSuccess(false);
+                    this.operationResult.setMessage("下推代发处理单失败");
+                }
+            }
+        }
+    }
+}

+ 55 - 0
src/main/java/fi/em/opplugin/AgentpaybillOpPlugin.java

@@ -0,0 +1,55 @@
+package fi.em.opplugin;
+
+import kd.bos.context.RequestContext;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.ExtendedDataEntity;
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author cjz
+ * @date 2024/8/28 16:22
+ * @description:代发处理单,点击关闭付款,付款给前置,修改支付状态
+ */
+public class AgentpaybillOpPlugin extends AbstractOperationServicePlugIn {
+
+    //关闭付款按钮标识
+    private static String closepay="closepay";
+    //付款给前置按钮标识
+    private static String payforfront="payforfront";
+
+
+
+
+    @Override
+    public void beginOperationTransaction(BeginOperationTransactionArgs args){
+        DynamicObject[] dynamicObjects = args.getDataEntities();
+        String operationKey = args.getOperationKey();
+        //关闭付款则将支付状态更改为支付关闭状态
+        if (closepay.equals(operationKey)){
+            for (int i=0;i< dynamicObjects.length;i++)
+            {
+                //设置支付状态为
+                dynamicObjects[i].set("nckd_paystate","D");
+            }
+            SaveServiceHelper.save(dynamicObjects);
+        }
+        if (payforfront.equals(operationKey))
+        {
+            for (int i=0;i< dynamicObjects.length;i++)
+            {
+                //设置支付状态为支付中
+                dynamicObjects[i].set("nckd_paystate","B");
+            }
+            SaveServiceHelper.save(dynamicObjects);
+        }
+    }
+
+}