소스 검색

Merge remote-tracking branch 'origin/master'

徐昊 8 달 전
부모
커밋
29d3bfe28b

+ 27 - 2
src/main/java/fi/em/formPlugin/SalaryDistributeEditPlugin.java

@@ -8,10 +8,13 @@ import kd.bos.form.ConfirmCallBackListener;
 import kd.bos.form.ConfirmTypes;
 import kd.bos.form.MessageBoxOptions;
 import kd.bos.form.MessageBoxResult;
+import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.events.MessageBoxClosedEvent;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.sdk.plugin.Plugin;
 
 import java.util.ArrayList;
@@ -87,6 +90,29 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
         this.setVieeVisible("");
     }
 
+    //审核后获取审核人并刷新前端界面
+    public void afterDoOperation(AfterDoOperationEventArgs arg){
+        super.afterDoOperation(arg);
+        String operateKey = arg.getOperateKey();
+        //审核操作代码
+        String audit="audit";
+        if (operateKey.equals(audit)) {
+            //获取单据编号
+            String billno=this.getModel().getDataEntity().getString("billno");
+            QFilter filter=new QFilter("billno", QFilter.equals,billno);
+            DynamicObject[] dynamicObjectList= BusinessDataServiceHelper.load("nckd_salarydistribute","id",new QFilter[]{filter});
+            DynamicObject auditor = null;
+            for (DynamicObject dynamicObject:dynamicObjectList) {
+                DynamicObject info=BusinessDataServiceHelper.
+                        loadSingle(dynamicObject.getPkValue(),dynamicObject.getDynamicObjectType().getName());
+                auditor=info.getDynamicObject("nckd_auditor");
+            }
+            if (null!=auditor) {
+                this.getModel().setValue("nckd_auditor",auditor);
+                this.getView().updateView();
+            }
+        }
+    }
 
     public void propertyChanged(PropertyChangedArgs e)
     {
@@ -184,8 +210,7 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
     }
 
     //判断单据内四个分录是否为空,分录有数据则返回true
-    public boolean billIsNotEmpty(DynamicObject data)
-    {
+    public boolean billIsNotEmpty(DynamicObject data) {
         //四个分录标识
         List<String> nckd_entryList = Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry");
         for (String item:nckd_entryList) {

+ 0 - 2
src/main/java/fi/em/formPlugin/SalaryFileUploadEditPlugin.java

@@ -235,7 +235,6 @@ public class SalaryFileUploadEditPlugin extends AbstractBillPlugIn implements Up
                 }
                 //刷新分录
                 this.getView().updateView("nckd_staffentry");
-
             }
         }
         //薪酬明细(内退)分录
@@ -303,7 +302,6 @@ public class SalaryFileUploadEditPlugin extends AbstractBillPlugIn implements Up
                     }
                 }
             }
-
         }
 
         //薪酬明细(退休)分录

+ 0 - 2
src/main/java/fi/er/opplugin/FinapbillBeforeF7SelectSample.java

@@ -61,8 +61,6 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
                 ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
                 showParameter.getListFilterParameter().setFilter(qFilter);
             }
-        } else if (StringUtils.equals(fieldKey, nckd_real_card)) {
-
         }
     }
 

+ 35 - 271
src/main/java/fi/fa/opplugin/AssetMidBillOpPlugin.java

@@ -1,6 +1,7 @@
 package fi.fa.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;
@@ -14,9 +15,9 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.OperationServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 import org.apache.commons.lang3.ObjectUtils;
-import java.util.ArrayList;
 import java.util.List;
 
+//资产调出单中间表下推资产调出单
 public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
     @Override
     public void beginOperationTransaction(BeginOperationTransactionArgs e) {
@@ -31,40 +32,24 @@ public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
                 }else {
                     String dispatchType = info.getString("nckd_dispatch_type");
                     String direction = info.getString("nckd_direction");
-                    String nckd_card_real_code = info.getString("nckd_card_number_tag");
-                    String[] asset = nckd_card_real_code.split(",");
-                    // 存储键的数组
-                    String[] keys = new String[asset.length];
-                    List<String> number = new ArrayList<>();
-                    List<String> cardNumber = new ArrayList<>();
-                    // 遍历每个键值对并获取键
-                    for (int j = 0; j < asset.length; j++) {
-                        String[] keyValue = asset[j].split(":");
-                        if (keyValue.length > 0) {
-                            number.add(keyValue[0]);
-                        }
-                    }
-                    //查询e管家实物卡片清单
-                    QFilter cardFilter = new QFilter("number", QCP.in,number);
-                    DynamicObject[] eCard = BusinessDataServiceHelper.load("nckd_fa_card_real_list","nckd_card_real_code",new QFilter[] {cardFilter});
-                    for (DynamicObject object : eCard) {
-                        cardNumber.add(object.getString("nckd_card_real_code"));
-                    }
-                    if ("0".equals(dispatchType)) {
-                        List<String> list = new ArrayList<>();
-                        list.add("A00100101900240600002");
-                        list.add("A00100101900240600008");
-                        QFilter filter = new QFilter("number", QCP.in,"A00100101900240600002");
-                        filter.and("isbak",  QCP.equals, "0");
-                        DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
-//                        if (asset.length == card.length) {
+                    String error = ChangeDataUtils.check(info);
+                    if (!StringUtils.isEmpty(error)) {
+                        this.operationResult.setShowMessage(true);
+                        this.operationResult.setSuccess(false);
+                        this.operationResult.setMessage(error);
+                    }else {
+                        List<String> codeList = ChangeDataUtils.getCardNumber(info);
+                        if ("0".equals(dispatchType)) {
+                            QFilter filter = new QFilter("number", QCP.in,codeList);
+                            filter.and("isbak",  QCP.equals, "0");
+                            DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
                             DynamicObject dispatch = BusinessDataServiceHelper.newDynamicObject("fa_dispatch");
                             //单据头
                             dispatch.set("dispatchdate", info.getDate("nckd_date_out"));//调出日期
-                            dispatch.set("assetunit", getOrg(info.getString("nckd_org_out")));//调出组织
-                            dispatch.set("inassetunit", getOrg(info.getString("nckd_org_in")));//调入组织
-                            dispatch.set("org", getOrg(info.getString("nckd_org_out")));//调出核算组织
-                            dispatch.set("inorg", getOrg(info.getString("nckd_org_in")));//调入核算组织
+                            dispatch.set("assetunit", ChangeDataUtils.getOrg(info.getString("nckd_org_out")));//调出组织
+                            dispatch.set("inassetunit", ChangeDataUtils.getOrg(info.getString("nckd_org_in")));//调入组织
+                            dispatch.set("org", ChangeDataUtils.getOrg(info.getString("nckd_org_out")));//调出核算组织
+                            dispatch.set("inorg", ChangeDataUtils.getOrg(info.getString("nckd_org_in")));//调入核算组织
                             dispatch.set("reason", info.getString("nckd_reason"));//调出原因
                             dispatch.set("dispatchtype", "A");//调拨类型 A="平价调拨",B="非平价调拨"
                             dispatch.set("changemode", 14);//减少方式默认"调出"
@@ -72,23 +57,23 @@ public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
                             dispatch.set("currencyrate", 1);//结算汇率
                             //制单信息
                             dispatch.set("billstatus", "A");//暂存
-                        //调出方向
-                        if("0".equals(direction)){
-                            dispatch.set("outuser", getUser(info.getString("nckd_user_out")));//调出申请人
-                            dispatch.set("inuser", getUser(info.getString("nckd_user_in")));//调入负责人
-                            dispatch.set("creator", getUser(info.getString("nckd_user_out")));//创建人
-                            dispatch.set("modifier", getUser(info.getString("nckd_user_out")));//修改人
-                            dispatch.set("auditor", getUser(info.getString("nckd_user_out")));//审核人
-                            dispatch.set("appliant", getUser(info.getString("nckd_user_out")));//调拨申请人
-                        }//调入方向
-                        else if ("1".equals(direction)) {
-                            dispatch.set("outuser", getUser(info.getString("nckd_user_in")));//调出申请人
-                            dispatch.set("inuser", getUser(info.getString("nckd_user_out")));//调入负责人
-                            dispatch.set("creator", getUser(info.getString("nckd_user_in")));//创建人
-                            dispatch.set("modifier", getUser(info.getString("nckd_user_in")));//修改人
-                            dispatch.set("auditor", getUser(info.getString("nckd_user_in")));//审核人
-                            dispatch.set("appliant", getUser(info.getString("nckd_user_in")));//调拨申请人
-                        }
+                            //调出方向
+                            if("0".equals(direction)){
+                                dispatch.set("outuser", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调出申请人
+                                dispatch.set("inuser", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调入负责人
+                                dispatch.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
+                                dispatch.set("modifier", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//修改人
+                                dispatch.set("auditor", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//审核人
+                                dispatch.set("appliant", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
+                            }//调入方向
+                            else if ("1".equals(direction)) {
+                                dispatch.set("outuser", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调出申请人
+                                dispatch.set("inuser", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调入负责人
+                                dispatch.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
+                                dispatch.set("modifier", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//修改人
+                                dispatch.set("auditor", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//审核人
+                                dispatch.set("appliant", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
+                            }
                             for (int c = 0; c < card.length; c++) {
                                 DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
                                 //创建调出单分录
@@ -97,7 +82,7 @@ public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
                                 entry1.set("realcard", cardInfo);//资产编码
                                 entry1.set("measurement", cardInfo.getDynamicObject("unit").getLong("id"));//计量单位
                                 entry1.set("dispatchqty", cardInfo.getInt("assetamount"));//数量
-                                entry1.set("inusedept", getOrg(info.getString("nckd_dept_in")));//调入使用部门
+                                entry1.set("inusedept", ChangeDataUtils.getOrg(info.getString("nckd_dept_in")));//调入使用部门
                             }
                             //执行保存-提交-审核
                             OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateOption.create());
@@ -114,231 +99,10 @@ public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
                                 this.operationResult.setSuccess(false);
                                 this.operationResult.setMessage("下推资产调出单单失败");
                             }
-
-//                        }else {
-//                            throw new KDBizException("请先拆分实物卡片再下推生单!");
-//                        }
-
-                    }else if ("1".equals(dispatchType)) {
-                        DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
-                        //单据头
-                        DynamicObject orgInfo = queryOrg(getOrg(info.getString("nckd_org_in")));
-                        changeDept.set("org", orgInfo);//核算组织
-                        changeDept.set("changedate", info.getDate("nckd_date_out"));//记账日期
-                        changeDept.set("appliantid", getUser(info.getString("nckd_user_out")));//变更申请人
-                        changeDept.set("remark", info.getString("nckd_reason"));//调出原因
-                        changeDept.set("sourcetype", 2);//来源方式(5:API生成)
-                        changeDept.set("changetype", queryChangeType(Long.parseLong("733953285719123968")));//变更类型,默认部门变更
-                        changeDept.set("chtypedetail", "1");//变更类型明细默认实物变更1
-                        changeDept.set("voucherflag", "A");//记账标识默认无需记账A
-                        changeDept.set("billstatus", "A");//暂存
-                        QFilter filter = new QFilter("number", QCP.in,"A00100101900240600007");
-                        filter.and("isbak",  QCP.equals, "0");
-                        DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
-                        for (int c = 0; c < card.length; c++) {
-                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-                            //查询财务卡片
-                            DynamicObject fin = queryFinCard(cardInfo.getLong("id"));//财务卡片id
-                            //创建变更字段分录
-                            DynamicObjectCollection fieldentry = changeDept.getDynamicObjectCollection("fieldentry");
-                            if (!getOrg(info.getString("nckd_org_in")).equals(cardInfo.getDynamicObject("headusedept").getLong("id"))){
-                                DynamicObject entry1 = fieldentry.addNew();
-                                entry1.set("realcard1", cardInfo);//资产编码
-                                entry1.set("depreuse1", queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
-                                entry1.set("currency1", 1);//币别
-                                entry1.set("basecurrency1", 1);//本币位
-                                entry1.set("assetnumber",cardInfo.getString("number"));//资产编码
-                                entry1.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
-                                entry1.set("field", "fa_card_real.headusedept");//变更字段-部门
-                                entry1.set("beforevalue", String.valueOf(cardInfo.getDynamicObject("headusedept").getLong("id")));//变更前值
-                                entry1.set("aftervalue", getOrg(info.getString("nckd_dept_in")).toString());//变更后值
-                                entry1.set("realcardmasterid", cardInfo);//实物卡片id
-                                entry1.set("fincard1", fin);//财务卡片
-                            }
-                            if (ObjectUtils.isEmpty(cardInfo.getDynamicObject("headuseperson")) ||
-                                    ObjectUtils.isNotEmpty(cardInfo.getDynamicObject("headuseperson")) && !getUser(info.getString("nckd_used_user")).equals(cardInfo.getDynamicObject("headuseperson").getLong("id"))) {
-                                String beforevalue = cardInfo.getDynamicObject("headuseperson") == null ? "" : String.valueOf(cardInfo.getDynamicObject("headuseperson").getLong("id"));
-                                DynamicObject entry2 = fieldentry.addNew();
-                                entry2.set("realcard1", cardInfo);//资产编码
-                                entry2.set("depreuse1", queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
-                                entry2.set("currency1", 1);//币别
-                                entry2.set("basecurrency1", 1);//本币位
-                                entry2.set("assetnumber",cardInfo.getString("number"));//资产编码
-                                entry2.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
-                                entry2.set("field", "fa_card_real.headuseperson");//变更字段-使用人
-                                entry2.set("beforevalue", beforevalue);//变更前值
-                                entry2.set("aftervalue", String.valueOf(getUser(info.getString("nckd_used_user")).getLong("id")));//变更后值
-                                entry2.set("realcardmasterid", cardInfo);//实物卡片id
-                                entry2.set("fincard1", fin);//财务卡片
-                            }
-
-                            //创建实物变更分录
-                            DynamicObjectCollection realentry = changeDept.getDynamicObjectCollection("realentry");
-                            DynamicObject realentry1 = realentry.addNew();
-                            realentry1.set("realcard", cardInfo.getLong("id"));//资产编码
-
-                            //创建财务变更分录
-                            DynamicObjectCollection finentry = realentry1.getDynamicObjectCollection("finentry");
-                            DynamicObject finentry1 = finentry.addNew();
-                            finentry1.set("depreuse", queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
-                            finentry1.set("fincard", fin);
-                            finentry1.set("bizdate", info.getDate("nckd_date_out"));
-
-                        }
-                        //执行保存-提交-审核
-                        OperationResult saveResult = SaveServiceHelper.saveOperate("fa_change_dept", new DynamicObject[]{changeDept}, OperateOption.create());
-                        if (saveResult.isSuccess()) {
-                            info.set("nckd_flag", "1");
-                            SaveServiceHelper.save(new DynamicObject[]{info});
-                            this.operationResult.setShowMessage(true);
-                            this.operationResult.setSuccess(true);
-                            this.operationResult.setMessage("下推资产变更单成功");
-                            OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_change_dept",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
-                            OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_change_dept",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
-                        }else {
-                            this.operationResult.setShowMessage(true);
-                            this.operationResult.setSuccess(false);
-                            this.operationResult.setMessage("下推资产变更单失败");
-                        }
-                    }
-                    else if ("2".equals(dispatchType)) {
-                        DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
-                        busProcess.set("nckd_bizdate", info.getDate("nckd_date_out"));//业务日期
-                        busProcess.set("nckd_detailtype", "D");//业务类型 D:报废
-                        busProcess.set("nckd_costcompany", getOrg(info.getString("nckd_org_in")));//资产组织
-                        busProcess.set("nckd_textfield1", info.getString("nckd_reason"));//摘要事由
-                        busProcess.set("nckd_applierv", getUser(info.getString("nckd_user_out")));//制单人
-
-                        //制单信息
-                        busProcess.set("creator", getUser(info.getString("nckd_user_out")));//创建人
-                        busProcess.set("createtime", info.getDate("nckd_date_out"));//创建时间
-                        busProcess.set("modifier", getUser(info.getString("nckd_user_out")));//修改人
-                        busProcess.set("modifytime", info.getDate("nckd_date_out"));//修改时间
-                        busProcess.set("auditor", getUser(info.getString("nckd_user_out")));//审核人
-                        busProcess.set("auditdate", info.getDate("nckd_date_out"));//审核时间
-                        busProcess.set("billstatus", "A");//状态
-                        QFilter filter = new QFilter("number", QCP.equals,"A00100101900240700007");
-                        cardFilter.and("isbak",  QCP.equals, "0");
-                        DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
-                        for (int c = 0; c < card.length; c++) {
-                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-                            //创建报废明细分录
-                            DynamicObjectCollection entryEntity = busProcess.getDynamicObjectCollection("nckd_entryentity6");
-                            DynamicObject entry1 = entryEntity.addNew();
-                            entry1.set("nckd_basedatafield", cardInfo);//资产编码
-                            Integer count = Integer.valueOf(info.getString("nckd_count"));
-                            entry1.set("nckd_integerfield", count);//报废数量
-                        }
-                        //执行保存-提交-审核
-                        OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, OperateOption.create());
-                        if (saveResult.isSuccess()){
-                            info.set("nckd_flag", "1");
-                            SaveServiceHelper.save(new DynamicObject[]{info});
-                            this.operationResult.setShowMessage(true);
-                            this.operationResult.setSuccess(true);
-                            this.operationResult.setMessage("下推业务处理单成功");
-                            OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
-                            OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
-                        }else {
-                            this.operationResult.setShowMessage(true);
-                            this.operationResult.setSuccess(false);
-                            this.operationResult.setMessage("下推业务处理单失败");
                         }
                     }
                 }
             }
         }
     }
-
-    /**
-     * @description 查询用户表获取用户
-     * @param eUser
-     * @return Long
-     */
-    private DynamicObject getUser(String eUser) {
-        QFilter filter = new QFilter("number", QCP.in, eUser);
-        DynamicObject[] user = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {filter});
-        if (user.length > 0) {
-            DynamicObject userInfo = BusinessDataServiceHelper.loadSingle(user[0].getPkValue(), user[0].getDynamicObjectType().getName());
-            return userInfo;
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询组织对照表获取组织id
-     * @param eOrgId
-     * @return Long
-     */
-    private Long getOrg(String eOrgId) {
-        QFilter orgFilter = new QFilter("nckd_e_org", QCP.equals,eOrgId);
-        DynamicObject[] orgControl = BusinessDataServiceHelper.load("nckd_base_org_ext","id",new QFilter[] {orgFilter});
-        if (orgControl.length > 0) {
-            DynamicObject orgControlInfo = BusinessDataServiceHelper.loadSingle(orgControl[0].getPkValue(), orgControl[0].getDynamicObjectType().getName());
-            String number = orgControlInfo.getString("nckd_org_number");
-            QFilter filter = new QFilter("number", QCP.equals,number);
-            DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {filter});
-            if (org.length > 0) {
-                DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[0].getPkValue(), org[0].getDynamicObjectType().getName());
-                return orgInfo.getLong("id");
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询财务卡片
-     * @param realCardId
-     */
-    private DynamicObject queryFinCard(Long realCardId) {
-        QFilter cardFilter = new QFilter("realcardmasterid", QCP.equals,realCardId);
-        DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_fin","id",new QFilter[] {cardFilter});
-        for (int c = 0; c < card.length; c++) {
-            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-            return cardInfo;
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询折旧用途
-     * @param id
-     */
-    private DynamicObject queryDepreuse(Long id) {
-        QFilter orgQFilter= new QFilter("id", QCP.equals,id);
-        DynamicObject[] depreuse = BusinessDataServiceHelper.load("fa_depreuse","id",new QFilter[] {orgQFilter});
-        for (int c = 0; c < depreuse.length; c++) {
-            DynamicObject depreuseInfo = BusinessDataServiceHelper.loadSingle(depreuse[c].getPkValue(), depreuse[c].getDynamicObjectType().getName());
-            return depreuseInfo;
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询变更类型
-     * @param id
-     */
-    private DynamicObject queryChangeType(Long id) {
-        QFilter orgQFilter= new QFilter("id", QCP.equals,id);
-        DynamicObject[] changeType = BusinessDataServiceHelper.load("fa_change_type","id",new QFilter[] {orgQFilter});
-        for (int c = 0; c < changeType.length; c++) {
-            DynamicObject changeInfo = BusinessDataServiceHelper.loadSingle(changeType[c].getPkValue(), changeType[c].getDynamicObjectType().getName());
-            return changeInfo;
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询组织
-     * @param orgId
-     */
-    private DynamicObject queryOrg(Long orgId) {
-        QFilter orgQFilter= new QFilter("id", QCP.equals,orgId);
-        DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {orgQFilter});
-        for (int c = 0; c < org.length; c++) {
-            DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[c].getPkValue(), org[c].getDynamicObjectType().getName());
-            return orgInfo;
-        }
-        return null;
-    }
 }

+ 1 - 1
src/main/java/fi/fa/opplugin/FaChangeDeptBillOpPlugin.java

@@ -64,7 +64,7 @@ public class FaChangeDeptBillOpPlugin extends AbstractOperationServicePlugIn {
                             deptId = Long.parseLong(fieldentry.getString("beforevalue"));
                         }
                         if ("fa_card_real.headuseperson".equals(fieldentry.getString("field")) && !StringUtils.isEmpty(fieldentry.getString("aftervalue"))) {
-                            user = Long.parseLong(fieldentry.getString("beforevalue"));
+                            user = fieldentry.getString("beforevalue").isEmpty() ? null : Long.parseLong(fieldentry.getString("beforevalue"));
                             userInfo = getUser(user);
                         }
                         number = fieldentry.getString("assetnumber");

+ 143 - 0
src/main/java/fi/fa/opplugin/FaChangeMidOpPlugin.java

@@ -0,0 +1,143 @@
+package fi.fa.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.operate.result.OperationResult;
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.exception.KDBizException;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.OperationServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import java.util.List;
+
+//资产变更单中间表下推资产变更单
+public class FaChangeMidOpPlugin extends AbstractOperationServicePlugIn {
+    @Override
+    public void beginOperationTransaction(BeginOperationTransactionArgs e) {
+        super.beginOperationTransaction(e);
+        DynamicObject[] dynamicObjects = e.getDataEntities();
+        for (int i = 0; i < dynamicObjects.length; i++) {
+            if (StringUtils.equals(e.getOperationKey(), "push")) {
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                String nckd_flag = info.getString("nckd_flag");
+                if ("1".equals(nckd_flag)) {
+                    throw new KDBizException("单据" + info.getString("number") + "已经下推生成了资产调拨单,不允许重复下推!");
+                }else {
+                    String dispatchType = info.getString("nckd_dispatch_type");
+                    String direction = info.getString("nckd_direction");
+                    String error = ChangeDataUtils.check(info);
+                    if (!StringUtils.isEmpty(error)) {
+                        this.operationResult.setShowMessage(true);
+                        this.operationResult.setSuccess(false);
+                        this.operationResult.setMessage(error);
+                    }else {
+
+                        if ("1".equals(dispatchType)) {
+                            DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
+                            //单据头
+                            DynamicObject orgInfo = ChangeDataUtils.queryOrg(ChangeDataUtils.getOrg(info.getString("nckd_org_in")));
+                            changeDept.set("org", orgInfo);//核算组织
+                            changeDept.set("changedate", info.getDate("nckd_date_out"));//记账日期
+                            changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//变更申请人
+                            changeDept.set("remark", info.getString("nckd_reason"));//调出原因
+                            changeDept.set("sourcetype", 2);//来源方式(5:API生成)
+                            changeDept.set("changetype", ChangeDataUtils.queryChangeType(Long.parseLong("733953285719123968")));//变更类型,默认部门变更
+                            changeDept.set("chtypedetail", "1");//变更类型明细默认实物变更1
+                            changeDept.set("voucherflag", "A");//记账标识默认无需记账A
+                            changeDept.set("billstatus", "A");//暂存
+                            //调出方向
+                            if("0".equals(direction)){
+                                changeDept.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
+                                changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
+                            }//调入方向
+                            else if ("1".equals(direction)) {
+                                changeDept.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
+                                changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
+                            }
+                            List<String> codeList =ChangeDataUtils.getCardNumber(info);
+                            QFilter filter = new QFilter("number", QCP.in,codeList);
+                            filter.and("isbak",  QCP.equals, "0");
+                            DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
+                            for (int c = 0; c < card.length; c++) {
+                                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
+                                //查询财务卡片
+                                DynamicObject fin = ChangeDataUtils.queryFinCard(cardInfo.getLong("id"));//财务卡片id
+                                //创建变更字段分录
+                                DynamicObjectCollection fieldentry = changeDept.getDynamicObjectCollection("fieldentry");
+
+                                String deptAftervalue = ChangeDataUtils.getOrg(info.getString("nckd_dept_in")) == null ? null : ChangeDataUtils.getOrg(info.getString("nckd_dept_in")).toString();
+                                String deptBeforevalue =  cardInfo.getDynamicObject("headusedept") == null ? null : String.valueOf(cardInfo.getDynamicObject("headusedept").getLong("id"));
+                                if (!StringUtils.equals(deptBeforevalue, deptAftervalue)) {
+                                    DynamicObject entry1 = fieldentry.addNew();
+                                    entry1.set("realcard1", cardInfo);//资产编码
+                                    entry1.set("depreuse1", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
+                                    entry1.set("currency1", 1);//币别
+                                    entry1.set("basecurrency1", 1);//本币位
+                                    entry1.set("assetnumber",cardInfo.getString("number"));//资产编码
+                                    entry1.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
+                                    entry1.set("field", "fa_card_real.headusedept");//变更字段-部门
+                                    entry1.set("beforevalue", deptBeforevalue);//变更前值
+                                    entry1.set("aftervalue", deptAftervalue);//变更后值
+                                    entry1.set("realcardmasterid", cardInfo);//实物卡片id
+                                    entry1.set("fincard1", fin);//财务卡片
+                                }
+
+                                String userAftervalue = info.getString("nckd_used_user") == null ? null : String.valueOf(ChangeDataUtils.getUser(info.getString("nckd_used_user")).getLong("id"));
+                                String userBeforevalue  = cardInfo.getDynamicObject("headuseperson") == null ? null : String.valueOf(ChangeDataUtils.getUser(info.getString("nckd_used_user")).getLong("id"));
+                                if (!StringUtils.equals(userBeforevalue, userAftervalue)) {
+                                    DynamicObject entry2 = fieldentry.addNew();
+                                    entry2.set("realcard1", cardInfo);//资产编码
+                                    entry2.set("depreuse1", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
+                                    entry2.set("currency1", 1);//币别
+                                    entry2.set("basecurrency1", 1);//本币位
+                                    entry2.set("assetnumber",cardInfo.getString("number"));//资产编码
+                                    entry2.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
+                                    entry2.set("field", "fa_card_real.headuseperson");//变更字段-使用人
+                                    entry2.set("beforevalue", userBeforevalue);//变更前值
+                                    entry2.set("aftervalue", userAftervalue);//变更后值
+                                    entry2.set("realcardmasterid", cardInfo);//实物卡片id
+                                    entry2.set("fincard1", fin);//财务卡片
+                                }
+
+
+                                //创建实物变更分录
+                                DynamicObjectCollection realentry = changeDept.getDynamicObjectCollection("realentry");
+                                DynamicObject realentry1 = realentry.addNew();
+                                realentry1.set("realcard", cardInfo.getLong("id"));//资产编码
+
+                                //创建财务变更分录
+                                DynamicObjectCollection finentry = realentry1.getDynamicObjectCollection("finentry");
+                                DynamicObject finentry1 = finentry.addNew();
+                                finentry1.set("depreuse", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
+                                finentry1.set("fincard", fin);
+                                finentry1.set("bizdate", info.getDate("nckd_date_out"));
+
+                            }
+                            //执行保存-提交-审核
+                            OperationResult saveResult = SaveServiceHelper.saveOperate("fa_change_dept", new DynamicObject[]{changeDept}, OperateOption.create());
+                            if (saveResult.isSuccess()) {
+                                info.set("nckd_flag", "1");
+                                SaveServiceHelper.save(new DynamicObject[]{info});
+                                this.operationResult.setShowMessage(true);
+                                this.operationResult.setSuccess(true);
+                                this.operationResult.setMessage("下推资产变更单成功");
+                                OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_change_dept",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
+                                OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_change_dept",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
+                            }else {
+                                this.operationResult.setShowMessage(true);
+                                this.operationResult.setSuccess(false);
+                                this.operationResult.setMessage("下推资产变更单失败");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 86 - 0
src/main/java/fi/fa/opplugin/FaDisCardMidOpPlugin.java

@@ -0,0 +1,86 @@
+package fi.fa.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.operate.result.OperationResult;
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.exception.KDBizException;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.OperationServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import java.util.List;
+
+//资产报废单中间表下推业务处理单
+public class FaDisCardMidOpPlugin extends AbstractOperationServicePlugIn {
+    @Override
+    public void beginOperationTransaction(BeginOperationTransactionArgs e) {
+        super.beginOperationTransaction(e);
+        DynamicObject[] dynamicObjects = e.getDataEntities();
+        for (int i = 0; i < dynamicObjects.length; i++) {
+            if (StringUtils.equals(e.getOperationKey(), "push")) {
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                String nckd_flag = info.getString("nckd_flag");
+                if ("1".equals(nckd_flag)) {
+                    throw new KDBizException("单据" + info.getString("number") + "已经下推生成了资产调拨单,不允许重复下推!");
+                }else {
+                    String dispatchType = info.getString("nckd_dispatch_type");
+                    String error = ChangeDataUtils.check(info);
+                    if (!StringUtils.isEmpty(error)) {
+                        this.operationResult.setShowMessage(true);
+                        this.operationResult.setSuccess(false);
+                        this.operationResult.setMessage(error);
+                    }else {
+                        List<String> codeList = ChangeDataUtils.getCardNumber(info);
+                        if ("2".equals(dispatchType)) {
+                            DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
+                            busProcess.set("nckd_bizdate", info.getDate("nckd_date_out"));//业务日期
+                            busProcess.set("nckd_detailtype", "D");//业务类型 D:报废
+                            busProcess.set("nckd_costcompany", ChangeDataUtils.getOrg(info.getString("nckd_org_in")));//资产组织
+                            busProcess.set("nckd_textfield1", info.getString("nckd_reason"));//摘要事由
+                            busProcess.set("nckd_applierv", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//制单人
+
+                            //制单信息
+                            busProcess.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
+                            busProcess.set("createtime", info.getDate("nckd_date_out"));//创建时间
+                            busProcess.set("billstatus", "A");//状态
+                            QFilter filter = new QFilter("number", QCP.in,codeList);
+                            filter.and("isbak",  QCP.equals, "0");
+                            DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
+                            for (int c = 0; c < card.length; c++) {
+                                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
+                                //创建报废明细分录
+                                DynamicObjectCollection entryEntity = busProcess.getDynamicObjectCollection("nckd_entryentity6");
+                                DynamicObject entry1 = entryEntity.addNew();
+                                entry1.set("nckd_basedatafield", cardInfo);//资产编码
+                                String nckd_count = info.getString("nckd_count").isEmpty() ? "1" : info.getString("nckd_count");
+                                Integer count = Integer.valueOf(nckd_count);
+                                entry1.set("nckd_integerfield", count);//报废数量
+                            }
+                            //执行保存-提交-审核
+                            OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, OperateOption.create());
+                            if (saveResult.isSuccess()){
+                                info.set("nckd_flag", "1");
+                                SaveServiceHelper.save(new DynamicObject[]{info});
+                                this.operationResult.setShowMessage(true);
+                                this.operationResult.setSuccess(true);
+                                this.operationResult.setMessage("下推业务处理单成功");
+                                OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
+                                OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
+                            }else {
+                                this.operationResult.setShowMessage(true);
+                                this.operationResult.setSuccess(false);
+                                this.operationResult.setMessage("下推业务处理单失败");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 206 - 0
src/main/java/fi/fa/opplugin/utils/ChangeDataUtils.java

@@ -0,0 +1,206 @@
+package fi.fa.opplugin.utils;
+
+import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import org.apache.commons.lang3.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ChangeDataUtils {
+    /**
+     * @description 查询财务卡片
+     * @param realCardId
+     */
+    public static DynamicObject queryFinCard(Long realCardId) {
+        QFilter cardFilter = new QFilter("realcardmasterid", QCP.equals,realCardId);
+        DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_fin","id",new QFilter[] {cardFilter});
+        for (int c = 0; c < card.length; c++) {
+            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
+            return cardInfo;
+        }
+        return null;
+    }
+
+    /**
+     * @description 查询折旧用途
+     * @param id
+     */
+    public static DynamicObject queryDepreuse(Long id) {
+        QFilter orgQFilter= new QFilter("id", QCP.equals,id);
+        DynamicObject[] depreuse = BusinessDataServiceHelper.load("fa_depreuse","id",new QFilter[] {orgQFilter});
+        for (int c = 0; c < depreuse.length; c++) {
+            DynamicObject depreuseInfo = BusinessDataServiceHelper.loadSingle(depreuse[c].getPkValue(), depreuse[c].getDynamicObjectType().getName());
+            return depreuseInfo;
+        }
+        return null;
+    }
+
+    /**
+     * @description 查询变更类型
+     * @param id
+     */
+    public static DynamicObject queryChangeType(Long id) {
+        QFilter orgQFilter= new QFilter("id", QCP.equals,id);
+        DynamicObject[] changeType = BusinessDataServiceHelper.load("fa_change_type","id",new QFilter[] {orgQFilter});
+        for (int c = 0; c < changeType.length; c++) {
+            DynamicObject changeInfo = BusinessDataServiceHelper.loadSingle(changeType[c].getPkValue(), changeType[c].getDynamicObjectType().getName());
+            return changeInfo;
+        }
+        return null;
+    }
+
+    /**
+     * @description 查询组织
+     * @param orgId
+     */
+    public static DynamicObject queryOrg(Long orgId) {
+        QFilter orgQFilter= new QFilter("id", QCP.equals,orgId);
+        DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {orgQFilter});
+        for (int c = 0; c < org.length; c++) {
+            DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[c].getPkValue(), org[c].getDynamicObjectType().getName());
+            return orgInfo;
+        }
+        return null;
+    }
+
+    /**
+     * @description 查询组织对照表获取组织id
+     * @param eOrgId
+     * @return Long
+     */
+    public static Long getOrg(String eOrgId) {
+        QFilter orgFilter = new QFilter("nckd_e_org", QCP.equals,eOrgId);
+        DynamicObject[] orgControl = BusinessDataServiceHelper.load("nckd_base_org_ext","id",new QFilter[] {orgFilter});
+        if (orgControl.length > 0) {
+            DynamicObject orgControlInfo = BusinessDataServiceHelper.loadSingle(orgControl[0].getPkValue(), orgControl[0].getDynamicObjectType().getName());
+            String number = orgControlInfo.getString("nckd_org_number");
+            QFilter filter = new QFilter("number", QCP.equals,number);
+            DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {filter});
+            if (org.length > 0) {
+                DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[0].getPkValue(), org[0].getDynamicObjectType().getName());
+                return orgInfo.getLong("id");
+            }
+        }
+        return null;
+    }
+
+    /**
+     * @description 查询用户表获取用户
+     * @param eUser
+     * @return Long
+     */
+    public static DynamicObject getUser(String eUser) {
+        QFilter filter = new QFilter("number", QCP.in, eUser);
+        DynamicObject[] user = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {filter});
+        if (user.length > 0) {
+            DynamicObject userInfo = BusinessDataServiceHelper.loadSingle(user[0].getPkValue(), user[0].getDynamicObjectType().getName());
+            return userInfo;
+        }
+        return null;
+    }
+
+    /**
+     * @description e管家推送数据校验
+     * @param info
+     * @return String
+     */
+    public static String check(DynamicObject info) {
+        String billno = info.getString("number");//源单编号
+        String dispatchType = info.getString("nckd_dispatch_type");//调拨类型
+        String nckd_card_real_code = info.getString("nckd_card_number");
+        String[] asset = nckd_card_real_code.split(",");
+        if (nckd_card_real_code.isEmpty()) {
+            return "单据" + billno + "未绑定资产信息,生成调拨单失败";
+        }
+        // 使用 Stream 判断 : 后的数据是否相同
+        boolean isSame = Arrays.stream(asset)
+                .map(item -> item.split(":")[1]) // 提取组织部分
+                .distinct()                       // 去重
+                .count() <= 1;                   // 如果去重后的数量小于等于 1,则表示相同
+        // 使用 Stream 获取所有的 ID(前面的数据)
+        List<String> numberList = Arrays.stream(asset)
+                .map(item -> item.split(":")[0])  // 分割并提取 ID
+                .collect(Collectors.toList());      // 收集到列表中
+
+        //组织相同则处理
+        if (isSame) {
+            String e_orgId = Arrays.stream(asset).map(item -> item.split(":")[1]).collect(Collectors.toList()).get(0);
+            //查询e管家实物卡片清单
+            QFilter filter = new QFilter("number", QCP.in,numberList);
+            DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+            if (dynamicObjects.length == 0 || dynamicObjects.length != numberList.size()) {
+                return "单据"+billno+"绑定的资产有未同步至星瀚的数据,生成调拨单失败";
+            }else {
+                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType().getName());
+                //获取星瀚资产编码,查询关联的e管家实物卡片清单数量
+                String code  = cardInfo.getString("nckd_card_real_code");
+                if (StringUtils.isEmpty(code)) {
+                    //星瀚未生成实物卡片,更新实物卡片清单数据-查询组织对照表
+                    Long orgId = getOrg(e_orgId);
+                    if (ObjectUtils.isNotEmpty(orgId) && ("0".equals(dispatchType))) {
+                        //更新归属机构,归属部门,使用人
+                        for (int a = 0; a < dynamicObjects.length ; a++) {
+                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
+                            ecardInfoList.set("nckd_orgfield", orgId);
+                            ecardInfoList.set("nckd_dept", getOrg(info.getString("nckd_dept_in")));
+                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
+                        }
+                    }else if (ObjectUtils.isNotEmpty(orgId) && "1".equals(dispatchType)) {
+                        //更新是否报废为是
+                        for (int a = 0; a < dynamicObjects.length ; a++) {
+                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
+                            ecardInfoList.set("nckd_dept", getOrg(info.getString("nckd_dept_in")));
+                            ecardInfoList.set("nckd_use_name", info.getString("user"));
+                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
+                        }
+                    }
+                    else if (ObjectUtils.isNotEmpty(orgId) && "2".equals(dispatchType)) {
+                        //更新是否报废为是
+                        for (int a = 0; a < dynamicObjects.length ; a++) {
+                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
+                            ecardInfoList.set("nckd_discard",1);
+                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
+                        }
+                    } else {
+                        return "资产信息的组织在组织对照表中未查询到数据,生成调拨单失败";
+                    }
+                    return "星瀚系统未生成实物卡片,已更新e管家实物卡片清单";
+                }else {
+                    //查询e管家实物卡片清单
+                    QFilter qfilter = new QFilter("nckd_card_real_code", QCP.equals,code);
+                    DynamicObject[] cardObject = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {qfilter});
+                    //e管家推送的清单和星瀚系统保存的清单数量不一致,返回错误信息并且不能生成调拨单
+                    if (cardObject.length > 0 && asset.length != cardObject.length) {
+                        return "单据"+billno+"绑定的资产信息与星瀚实物卡片数量不一致,生成调拨单失败";
+                    }
+                }
+            }
+        }else {
+            //资产信息组织不同
+            return "单据"+billno+"绑定的资产信息组织不相同,生成调拨单失败";
+        }
+        return null;
+    }
+
+    public static List<String> getCardNumber(DynamicObject info) {
+        String nckd_card_real_code = info.getString("nckd_card_number");
+        String[] asset = nckd_card_real_code.split(",");
+        List<String> codeList = new ArrayList<>();
+        List<String> numberList = Arrays.stream(asset).map(item -> item.split(":")[0]).collect(Collectors.toList());
+        QFilter listFilter = new QFilter("number", QCP.in,numberList);
+        DynamicObject[] cardList = BusinessDataServiceHelper.load("nckd_fa_card_real_list","nckd_card_real_code",new QFilter[] {listFilter});
+        for (int i = 0; i < cardList.length; i++) {
+            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardList[i].getPkValue(), cardList[i].getDynamicObjectType().getName());
+            String code = cardInfo.getString("nckd_card_real_code");
+            codeList.add(code);
+        }
+        return codeList;
+    }
+}

+ 59 - 552
src/main/java/fi/fa/webService/DispatchMidController.java

@@ -1,12 +1,8 @@
 package fi.fa.webService;
 
-
-import com.alibaba.druid.util.StringUtils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.entity.operate.result.OperationResult;
 import kd.bos.openapi.common.custom.annotation.ApiController;
 import kd.bos.openapi.common.custom.annotation.ApiMapping;
 import kd.bos.openapi.common.custom.annotation.ApiParam;
@@ -15,14 +11,8 @@ import kd.bos.openapi.common.result.CustomApiResult;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
-import kd.bos.servicehelper.operation.OperationServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
-import kd.bos.dataentity.OperateOption;
-import org.apache.commons.lang3.ObjectUtils;
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
 
 /**
  * 接收e管家资产调拨单接口
@@ -43,27 +33,14 @@ public class DispatchMidController implements Serializable {
         for (int i = 0; i < data.size(); i++) {
             try{
                 JSONObject eobject = data.getJSONObject(i);
-                //用来储存转换好的用户和组织id
-                HashMap<String , Long> map = new HashMap<>();
                 //第一步:保存进中间表
                 SaveMidDispatch(eobject);
-                //组织,人员信息转换
-                String errorChange = Control(eobject, map);
-                //第二步:校验传入信息是否可以下推调拨单
-                String errorCode = Check(eobject, map);
-                //第三步:下推生成调拨单
-                if (StringUtils.isEmpty(errorCode) && StringUtils.isEmpty(errorChange)) {
-                    //下推生成单
-                    Push(eobject, map);
-                }
-                // 错误拼接
-                appendErrorMessages(resultString, errorChange, errorCode);
             } catch (Exception e){
                 resultString.append("保存过程中发生异常:").append(e.getMessage()).append("\n");
             }
         }
         return resultString.length() == 0
-                ? CustomApiResult.success("推送调拨单成功!")
+                ? CustomApiResult.success("推送中间表成功成功!")
                 : CustomApiResult.fail("404", resultString.toString());
     }
 
@@ -72,29 +49,61 @@ public class DispatchMidController implements Serializable {
      * @param jsonObject
      */
     private void SaveMidDispatch(JSONObject jsonObject) {
-        DynamicObject midDispatch;
-        //查询中间表,如果有则修改,没有则新增
-        QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
-        DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid","id",new QFilter[] {filter});
-        if (mid.length > 0) {
-            midDispatch = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
-        }else {
-            midDispatch = BusinessDataServiceHelper.newDynamicObject("nckd_e_dispatch_mid");
-        }
+        String dispatchType = jsonObject.getString("dispatchType");
+        DynamicObject minInfo = null;
+        if ("0".equals(dispatchType)) {
+            //查询调出中间表,如果有则修改,没有则新增
+            QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
+            DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid","id",new QFilter[] {filter});
+            if (mid.length > 0) {
+                minInfo = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
+            }else {
+                minInfo = BusinessDataServiceHelper.newDynamicObject("nckd_e_dispatch_mid");
+            }
+
+            minInfo.set("nckd_changemode", "调出");//减少方式默认调出
+            minInfo.set("nckd_user_out", jsonObject.getString("sendUser"));//调出类型对应人员
+            minInfo.set("nckd_user_in", jsonObject.getString("recieveUser"));//调入负责人
+            minInfo.set("nckd_org_out", jsonObject.getString("outOrgId"));//调出组织
+            minInfo.set("nckd_org_in", jsonObject.getString("orgId"));//调入组织
+            minInfo.set("nckd_used_user", jsonObject.getString("user"));//调入使用人
+            minInfo.set("nckd_direction", jsonObject.getString("direction"));//调入调出类型
+            minInfo.set("nckd_storeplace", jsonObject.getString("storeplace"));//调入存放地点
+        } else if ("1".equals(dispatchType)) {
+            //查询变更中间表,如果有则修改,没有则新增
+            QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
+            DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_change_mid","id",new QFilter[] {filter});
+            if (mid.length > 0) {
+                minInfo = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
+            }else {
+                minInfo = BusinessDataServiceHelper.newDynamicObject("nckd_e_change_mid");
+            }
+            minInfo.set("nckd_user_out", jsonObject.getString("sendUser"));//调出类型对应人员
+            minInfo.set("nckd_user_in", jsonObject.getString("recieveUser"));//调入负责人
+            minInfo.set("nckd_org_in", jsonObject.getString("orgId"));//归属机构
+            minInfo.set("nckd_used_user", jsonObject.getString("user"));//调入使用人
+            minInfo.set("nckd_direction", jsonObject.getString("direction"));//调入调出类型
+            minInfo.set("nckd_storeplace", jsonObject.getString("storeplace"));//调入存放地点
+        } else if ("2".equals(dispatchType)) {
+            //查询报废单中间表,如果有则修改,没有则新增
+            QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
+            DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_discard_mid","id",new QFilter[] {filter});
+            if (mid.length > 0) {
+                minInfo = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
+            }else {
+                minInfo = BusinessDataServiceHelper.newDynamicObject("nckd_e_discard_mid");
+            }
+            minInfo.set("nckd_org_in", jsonObject.getString("orgId"));//归属机构
+            minInfo.set("nckd_user_out", jsonObject.getString("sendUser"));//报废申请人
 
-        midDispatch.set("number", jsonObject.getString("billno"));//来源单据号
-        midDispatch.set("nckd_user_out", jsonObject.getString("sendUser"));//调出类型对应人员
-        midDispatch.set("nckd_user_in", jsonObject.getString("recieveUser"));//调入负责人
-        midDispatch.set("nckd_date_out", jsonObject.getDate("sendDate"));//调出日期
-        midDispatch.set("nckd_org_out", jsonObject.getString("outOrgId"));//调出组织
-        midDispatch.set("nckd_org_in", jsonObject.getString("orgId"));//调入组织
-        midDispatch.set("nckd_reason", jsonObject.getString("reason"));//调拨原因
-        midDispatch.set("nckd_changemode", "调出");//减少方式默认调出
-        midDispatch.set("nckd_dispatch_type", jsonObject.getString("dispatchType"));//调拨类型 枚举 组织间,组织内
-        midDispatch.set("nckd_dept_in", jsonObject.getString("inDeptId"));//调入部门
-        midDispatch.set("nckd_used_user", jsonObject.getString("user"));//调入使用人
-        midDispatch.set("nckd_storeplace", jsonObject.getString("storeplace"));//调入存放地点
-        midDispatch.set("nckd_direction", jsonObject.getString("direction"));//调入存放地点
+        }
+        minInfo.set("number", jsonObject.getString("billno"));//来源单据号
+        minInfo.set("nckd_date_out", jsonObject.getDate("sendDate"));//调出日期
+        minInfo.set("nckd_reason", jsonObject.getString("reason"));//调拨原因
+        minInfo.set("nckd_dispatch_type", jsonObject.getString("dispatchType"));//调拨类型 枚举 组织间,组织内
+        minInfo.set("nckd_dept_in", jsonObject.getString("inDeptId"));//调入部门
+        minInfo.set("createtime", jsonObject.getDate("sendDate"));//创建时间
+        minInfo.set("status", "A");//暂存
         //拼接资产信息的组织和编码
         String cardNumber = "";
         JSONArray assetArray = jsonObject.getJSONArray("asset");
@@ -103,514 +112,12 @@ public class DispatchMidController implements Serializable {
             JSONObject asset = assetArray.getJSONObject(j);
             String number = asset.getString("number");
             String orgId = asset.getString("orgId");
-            cardNumber = number+ ":" + orgId + ",";
+            cardNumber = cardNumber + number+ ":" + orgId + ",";
             if ("2".equals(jsonObject.getString("dispatchType"))) {
-                midDispatch.set("nckd_count", asset.getString("count"));//资产数量
-            }
-        }
-        midDispatch.set("nckd_card_number_tag", cardNumber);
-        SaveServiceHelper.save(new DynamicObject[]{midDispatch});
-    }
-
-    /**
-     * @description e管家推送数据校验
-     * @param jsonObject,map
-     * @return String
-     */
-    private  String Check(JSONObject jsonObject, HashMap<String , Long> map) {
-        String billno = jsonObject.getString("billno");//源单编号
-        String user = jsonObject.getString("user");//使用人
-        String dispatchType = jsonObject.getString("dispatchType");//调拨类型
-        List<String> numberList = new ArrayList<>();
-        // 校验该单据是否已经下推生成调拨单
-        if (isAlreadyDispatched(billno)) {
-            return "单据" + billno + "已经生成调拨单,请勿重复推送!";
-        }
-        // 获取资产编号数组
-        JSONArray assetArray = jsonObject.getJSONArray("asset");
-        if (assetArray.isEmpty()) {
-            return "单据" + billno + "未绑定资产信息,生成调拨单失败";
-        }
-        Boolean isSame = true;
-        //校验资产信息的组织是否相同,不相同则不进行处理
-        for (int j = 0; j < assetArray.size(); j++) {
-            //判断资产的组织是否相同
-            JSONObject asset = assetArray.getJSONObject(j);
-            if (!asset.getString("orgId").equals(assetArray.getJSONObject(0).getString("orgId"))) {
-                isSame = false;
-            }
-            numberList.add(asset.getString("number"));
-        }
-        //组织相同则处理
-        if (isSame) {
-            String  e_orgId = assetArray.getJSONObject(0).getString("orgId");
-            //查询e管家实物卡片清单
-            QFilter filter = new QFilter("number", QCP.in,numberList);
-            DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-            if (dynamicObjects.length == 0 || dynamicObjects.length != numberList.size()) {
-                return "单据"+billno+"绑定的资产有未同步至星瀚的数据,生成调拨单失败";
-            }else {
-                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType().getName());
-                //获取星瀚资产编码,查询关联的e管家实物卡片清单数量
-                String code  = cardInfo.getString("nckd_card_real_code");
-                if (StringUtils.isEmpty(code)) {
-                    //星瀚未生成实物卡片,更新实物卡片清单数据-查询组织对照表
-                    Long orgId = getOrg(e_orgId);
-                    if (ObjectUtils.isNotEmpty(orgId) && ("0".equals(dispatchType))) {
-                        //更新归属机构,归属部门,使用人
-                        for (int a = 0; a < dynamicObjects.length ; a++) {
-                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
-                            ecardInfoList.set("nckd_orgfield",orgId);
-                            ecardInfoList.set("nckd_dept",map.get("inDeptId"));
-                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
-                        }
-                    }else if (ObjectUtils.isNotEmpty(orgId) && "1".equals(dispatchType)) {
-                        //更新是否报废为是
-                        for (int a = 0; a < dynamicObjects.length ; a++) {
-                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
-                            ecardInfoList.set("nckd_dept",map.get("inDeptId"));
-                            ecardInfoList.set("nckd_use_name",user);
-                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
-                        }
-                    }
-                    else if (ObjectUtils.isNotEmpty(orgId) && "2".equals(dispatchType)) {
-                        //更新是否报废为是
-                        for (int a = 0; a < dynamicObjects.length ; a++) {
-                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
-                            ecardInfoList.set("nckd_discard",1);
-                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
-                        }
-                    } else {
-                        return "资产信息的组织在组织对照表中未查询到数据,生成调拨单失败";
-                    }
-                    return "星瀚系统未生成实物卡片,已更新e管家实物卡片清单";
-                }else {
-                    //查询e管家实物卡片清单
-                    QFilter qfilter = new QFilter("nckd_card_real_code", QCP.equals,code);
-                    DynamicObject[] cardObject = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {qfilter});
-                    //e管家推送的清单和星瀚系统保存的清单数量不一致,返回错误信息并且不能生成调拨单
-                    if (cardObject.length > 0 && assetArray.size() != cardObject.length) {
-                        return "单据"+billno+"绑定的资产信息与星瀚实物卡片数量不一致,生成调拨单失败";
-                    }
-                    jsonObject.put("nckd_card_real_code", code);
-                }
-            }
-        }else {
-            //资产信息组织不同
-            return "单据"+billno+"绑定的资产信息组织不相同,生成调拨单失败";
-        }
-        return null;
-    }
-
-    /**
-     * @description 下推生成资产调拨单
-     * @param jsonObject,map
-     */
-    private void Push(JSONObject jsonObject, HashMap<String , Long> map) {
-        String dispatchType = jsonObject.getString("dispatchType");
-        String direction = jsonObject.getString("direction");
-        //组织间,生成资产调出单
-        if ("0".equals(dispatchType)) {
-            DynamicObject dispatch = BusinessDataServiceHelper.newDynamicObject("fa_dispatch");
-            String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
-//            nckd_card_real_code = "A00100101900240600008";
-            //单据头
-            dispatch.set("dispatchdate", jsonObject.getDate("sendDate"));//调出日期
-            dispatch.set("assetunit", map.get("outOrgId"));//调出组织
-            dispatch.set("inassetunit", map.get("orgId"));//调入组织
-            dispatch.set("org", map.get("outOrgId"));//调出核算组织
-            dispatch.set("inorg", map.get("orgId"));//调入核算组织
-            dispatch.set("reason", jsonObject.getString("reason"));//调出原因
-            dispatch.set("dispatchtype", "A");//调拨类型 A="平价调拨",B="非平价调拨"
-            dispatch.set("changemode", 14);//减少方式默认"调出"
-            dispatch.set("currency", 1);//币种
-            dispatch.set("currencyrate", 1);//结算汇率
-            //制单信息
-            dispatch.set("createtime", jsonObject.getDate("sendDate"));//创建时间
-            dispatch.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
-            dispatch.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
-            dispatch.set("billstatus", "A");//暂存
-            //调出方向
-            if("0".equals(direction)){
-                dispatch.set("outuser", map.get("sendUser"));//调出申请人
-                dispatch.set("inuser", map.get("recieveUser"));//调入负责人
-                dispatch.set("creator", map.get("sendUser"));//创建人
-                dispatch.set("modifier", map.get("sendUser"));//修改人
-                dispatch.set("auditor", map.get("sendUser"));//审核人
-                dispatch.set("appliant", map.get("sendUser"));//调拨申请人
-            }//调入方向
-            else if ("1".equals(direction)) {
-                dispatch.set("outuser", map.get("recieveUser"));//调出申请人
-                dispatch.set("inuser", map.get("sendUser"));//调入负责人
-                dispatch.set("creator", map.get("recieveUser"));//创建人
-                dispatch.set("modifier", map.get("recieveUser"));//修改人
-                dispatch.set("auditor", map.get("recieveUser"));//审核人
-                dispatch.set("appliant", map.get("recieveUser"));//调拨申请人
-            }
-            //单据体
-            //根据资产编号查询实物卡片
-            QFilter cardFilter = new QFilter("number", QCP.equals,nckd_card_real_code);
-            cardFilter.and("isbak",  QCP.equals, "0");
-            DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {cardFilter});
-            for (int c = 0; c < card.length; c++) {
-                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-                //创建调出单分录
-                DynamicObjectCollection entryEntity = dispatch.getDynamicObjectCollection("dispatchentry");
-                DynamicObject entry1 = entryEntity.addNew();
-                entry1.set("realcard", cardInfo);//资产编码
-                entry1.set("measurement", cardInfo.getDynamicObject("unit").getLong("id"));//计量单位
-                entry1.set("dispatchqty", cardInfo.getInt("assetamount"));//数量
-                entry1.set("inusedept", map.get("inDeptId"));//调入使用部门
-            }
-            //执行保存-提交-审核
-            OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateOption.create());
-            if (saveResult.isSuccess()){
-                //生单后反写中间表,防止反复生单
-                OncePush(jsonObject.getString("billno"));
-                OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_dispatch",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
-                OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_dispatch",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
-            }
-
-
-        }//组织内,生成资产变更单
-        else if ("1".equals(dispatchType)) {
-            DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
-            String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
-//            nckd_card_real_code = "A00100101900240600007";
-            DynamicObject orgInfo = queryOrg(map.get("orgId"));
-            //单据头
-            changeDept.set("org", orgInfo);//核算组织
-            changeDept.set("changedate", jsonObject.getDate("sendDate"));//记账日期
-            changeDept.set("remark", jsonObject.getString("reason"));//调出原因
-            changeDept.set("sourcetype", 2);//来源方式(5:API生成)
-            changeDept.set("changetype", queryChangeType(Long.parseLong("733953285719123968")));//变更类型,默认部门变更
-            changeDept.set("chtypedetail", "1");//变更类型明细默认实物变更1
-            changeDept.set("voucherflag", "A");//记账标识默认无需记账A
-            //制单信息
-            changeDept.set("createtime", jsonObject.getDate("sendDate"));//创建时间
-            changeDept.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
-            changeDept.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
-            changeDept.set("billstatus", "A");//默认审核
-            //调出方向
-            if("0".equals(direction)){
-                changeDept.set("creator", getUser(jsonObject.getString("sendUser")));//创建人
-                changeDept.set("modifier", getUser(jsonObject.getString("sendUser")));//修改人
-                changeDept.set("auditor", getUser(jsonObject.getString("sendUser")));//审核人
-                changeDept.set("appliantid", getUser(jsonObject.getString("sendUser")));//变更申请人
-            }//调入方向
-            else if ("1".equals(direction)) {
-                changeDept.set("creator", getUser(jsonObject.getString("recieveUser")));//创建人
-                changeDept.set("modifier", getUser(jsonObject.getString("recieveUser")));//修改人
-                changeDept.set("auditor", getUser(jsonObject.getString("recieveUser")));//审核人
-                changeDept.set("appliantid", getUser(jsonObject.getString("recieveUser")));//变更申请人
-            }
-            //单据体
-            //根据资产编号查询实物卡片
-            QFilter cardFilter = new QFilter("number", QCP.equals,nckd_card_real_code);
-            cardFilter.and("isbak",  QCP.equals, "0");
-            DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {cardFilter});
-            for (int c = 0; c < card.length; c++) {
-                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-                //查询财务卡片
-                DynamicObject fin = queryFinCard(cardInfo.getLong("id"));//财务卡片id
-                //创建变更字段分录
-                DynamicObjectCollection fieldentry = changeDept.getDynamicObjectCollection("fieldentry");
-                if (!map.get("inDeptId").equals(cardInfo.getDynamicObject("headusedept").getLong("id"))){
-                    DynamicObject entry1 = fieldentry.addNew();
-                    entry1.set("realcard1", cardInfo);//资产编码
-                    entry1.set("depreuse1", queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
-                    entry1.set("currency1", 1);//币别
-                    entry1.set("basecurrency1", 1);//本币位
-                    entry1.set("assetnumber",cardInfo.getString("number"));//资产编码
-                    entry1.set("bizdate1", jsonObject.getDate("sendDate"));//业务日期
-                    entry1.set("field", "fa_card_real.headusedept");//变更字段-部门
-                    entry1.set("beforevalue", String.valueOf(cardInfo.getDynamicObject("headusedept").getLong("id")));//变更前值
-                    entry1.set("aftervalue", map.get("inDeptId").toString());//变更后值
-                    entry1.set("realcardmasterid", cardInfo);//实物卡片id
-                    entry1.set("fincard1", fin);//财务卡片
-                }
-                if (ObjectUtils.isEmpty(cardInfo.getDynamicObject("headuseperson")) ||
-                    ObjectUtils.isNotEmpty(cardInfo.getDynamicObject("headuseperson")) && !map.get("user").equals(cardInfo.getDynamicObject("headuseperson").getLong("id"))) {
-                    String beforevalue = cardInfo.getDynamicObject("headuseperson") == null ? "" : String.valueOf(cardInfo.getDynamicObject("headuseperson").getLong("id"));
-                    DynamicObject entry2 = fieldentry.addNew();
-                    entry2.set("realcard1", cardInfo);//资产编码
-                    entry2.set("depreuse1", queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
-                    entry2.set("currency1", 1);//币别
-                    entry2.set("basecurrency1", 1);//本币位
-                    entry2.set("assetnumber",cardInfo.getString("number"));//资产编码
-                    entry2.set("bizdate1", jsonObject.getDate("sendDate"));//业务日期
-                    entry2.set("field", "fa_card_real.headuseperson");//变更字段-使用人
-                    entry2.set("beforevalue", beforevalue);//变更前值
-                    entry2.set("aftervalue", map.get("user").toString());//变更后值
-                    entry2.set("realcardmasterid", cardInfo);//实物卡片id
-                    entry2.set("fincard1", fin);//财务卡片
-                }
-
-                //创建实物变更分录
-                DynamicObjectCollection realentry = changeDept.getDynamicObjectCollection("realentry");
-                DynamicObject realentry1 = realentry.addNew();
-                realentry1.set("realcard", cardInfo.getLong("id"));//资产编码
-
-                //创建财务变更分录
-                DynamicObjectCollection finentry = realentry1.getDynamicObjectCollection("finentry");
-                DynamicObject finentry1 = finentry.addNew();
-                finentry1.set("depreuse", queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
-                finentry1.set("fincard", fin);
-                finentry1.set("bizdate", jsonObject.getDate("sendDate"));
-
-            }
-            //执行保存-提交-审核
-            OperationResult saveResult = SaveServiceHelper.saveOperate("fa_change_dept", new DynamicObject[]{changeDept}, OperateOption.create());
-            if (saveResult.isSuccess()) {
-                //生单后反写中间表,防止反复生单
-                OncePush(jsonObject.getString("billno"));
-                OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_change_dept",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
-                OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_change_dept",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
-            }
-        } //生成业务处理单
-        else if ("2".equals(dispatchType)) {
-            DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
-            String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
-//            nckd_card_real_code = "A00100101900240700007";
-            DynamicObject orgInfo = queryOrg(map.get("orgId"));
-            busProcess.set("nckd_bizdate", jsonObject.getDate("sendDate"));//业务日期
-            busProcess.set("nckd_detailtype", "D");//业务类型 D:报废
-            busProcess.set("nckd_costcompany", map.get("orgId"));//资产组织
-            busProcess.set("nckd_textfield1", jsonObject.getString("reason"));//摘要事由
-            busProcess.set("nckd_applierv", getUser(jsonObject.getString("sendUser")));//制单人
-
-            //制单信息
-            busProcess.set("creator", getUser(jsonObject.getString("sendUser")));//创建人
-            busProcess.set("createtime", jsonObject.getDate("sendDate"));//创建时间
-            busProcess.set("modifier", getUser(jsonObject.getString("sendUser")));//修改人
-            busProcess.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
-            busProcess.set("auditor", getUser(jsonObject.getString("sendUser")));//审核人
-            busProcess.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
-            busProcess.set("billstatus", "A");//状态
-            //单据体
-            //根据资产编号查询实物卡片
-            QFilter cardFilter = new QFilter("number", QCP.equals,nckd_card_real_code);
-            cardFilter.and("isbak",  QCP.equals, "0");
-            DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {cardFilter});
-            for (int c = 0; c < card.length; c++) {
-                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-                //创建报废明细分录
-                DynamicObjectCollection entryEntity = busProcess.getDynamicObjectCollection("nckd_entryentity6");
-                DynamicObject entry1 = entryEntity.addNew();
-                entry1.set("nckd_basedatafield", cardInfo);//资产编码
-                Integer count = Integer.valueOf(jsonObject.getJSONArray("asset").getJSONObject(0).getString("count"));
-                entry1.set("nckd_integerfield", count);//报废数量
-            }
-            //执行保存-提交-审核
-            OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, OperateOption.create());
-            if (saveResult.isSuccess()){
-                //生单后反写中间表,防止反复生单
-                OncePush(jsonObject.getString("billno"));
-                OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
-                OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
-            }
-        }
-
-    }
-
-    /**
-     * @description 查询组织对照表获取组织id
-     * @param eOrgId
-     * @return Long
-     */
-    private Long getOrg(String eOrgId) {
-        QFilter orgFilter = new QFilter("nckd_e_org", QCP.equals,eOrgId);
-        DynamicObject[] orgControl = BusinessDataServiceHelper.load("nckd_base_org_ext","id",new QFilter[] {orgFilter});
-        if (orgControl.length > 0) {
-            DynamicObject orgControlInfo = BusinessDataServiceHelper.loadSingle(orgControl[0].getPkValue(), orgControl[0].getDynamicObjectType().getName());
-            String number = orgControlInfo.getString("nckd_org_number");
-            QFilter filter = new QFilter("number", QCP.equals,number);
-            DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {filter});
-            if (org.length > 0) {
-                DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[0].getPkValue(), org[0].getDynamicObjectType().getName());
-                return orgInfo.getLong("id");
+                minInfo.set("nckd_count", asset.getString("count"));//资产数量
             }
         }
-        return null;
-    }
-
-    /**
-     * @description 查询用户表获取用户
-     * @param eUser
-     * @return Long
-     */
-    private DynamicObject getUser(String eUser) {
-        QFilter filter = new QFilter("number", QCP.in, eUser);
-        DynamicObject[] user = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {filter});
-        if (user.length > 0) {
-            DynamicObject userInfo = BusinessDataServiceHelper.loadSingle(user[0].getPkValue(), user[0].getDynamicObjectType().getName());
-            return userInfo;
-        }
-        return null;
-    }
-
-
-    /**
-     * @description e管家数据转换为星瀚数据
-     * @param jsonObject,map
-     * @return String
-     */
-    private String Control(JSONObject jsonObject, HashMap<String , Long> map) {
-        String dispatchType = jsonObject.getString("dispatchType");
-        if ("0".equals(dispatchType)) {
-            //查询人员
-            DynamicObject sendUser = getUser(jsonObject.getString("sendUser"));//调出申请人
-            DynamicObject recieveUser = getUser(jsonObject.getString("recieveUser"));//调入负责人
-            if (ObjectUtils.isEmpty(sendUser) || ObjectUtils.isEmpty(recieveUser)) {
-                return "人员信息转换失败";
-            }
-            map.put("sendUser", sendUser.getLong("id"));
-            map.put("recieveUser", recieveUser.getLong("id"));
-            //查询组织
-            Long outOrgId = getOrg(jsonObject.getString("outOrgId"));//调出组织
-            Long orgId = getOrg(jsonObject.getString("orgId"));//调入组织
-            Long inDeptId = getOrg(jsonObject.getString("inDeptId"));//调入部门
-            if (ObjectUtils.isEmpty(outOrgId) || ObjectUtils.isEmpty(orgId) || ObjectUtils.isEmpty(inDeptId)) {
-                return "组织信息转换失败";
-            }
-            map.put("outOrgId", outOrgId);
-            map.put("orgId", orgId);
-            map.put("inDeptId", inDeptId);
-            return null;
-        } else if ("1".equals(dispatchType)) {
-            //查询人员
-            DynamicObject sendUser = getUser(jsonObject.getString("sendUser"));//调出申请人
-            DynamicObject recieveUser = getUser(jsonObject.getString("recieveUser"));//调入负责人
-            DynamicObject user = getUser(jsonObject.getString("user"));//调入使用人
-            if (ObjectUtils.isEmpty(sendUser) || ObjectUtils.isEmpty(recieveUser) || ObjectUtils.isEmpty(user)) {
-                return "人员信息转换失败";
-            }
-            map.put("sendUser", sendUser.getLong("id"));
-            map.put("recieveUser", recieveUser.getLong("id"));
-            map.put("user", user.getLong("id"));
-            //查询组织
-            Long orgId = getOrg(jsonObject.getString("orgId"));//调入组织
-            Long inDeptId = getOrg(jsonObject.getString("inDeptId"));//调入部门
-            if (ObjectUtils.isEmpty(orgId) || ObjectUtils.isEmpty(inDeptId)) {
-                return "组织信息转换失败";
-            }
-            map.put("orgId", orgId);
-            map.put("inDeptId", inDeptId);
-            return null;
-        }else if ("2".equals(dispatchType)) {
-            //查询人员
-            DynamicObject sendUser = getUser(jsonObject.getString("sendUser"));//调出申请人
-            if (ObjectUtils.isEmpty(sendUser)) {
-                return "人员信息转换失败";
-            }
-            map.put("sendUser", sendUser.getLong("id"));
-            //查询组织
-            Long orgId = getOrg(jsonObject.getString("orgId"));//资产组织
-            if (ObjectUtils.isEmpty(orgId)) {
-                return "组织信息转换失败";
-            }
-            map.put("orgId", orgId);
-            return null;
-        }
-        return null;
-    }
-
-
-    /**
-     * @description 生单后反写中间表,防止反复生单
-     * @param billno
-     * @return String
-     */
-    private void OncePush(String billno) {
-        QFilter filter = new QFilter("number", QCP.equals, billno);
-        DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid","id",new QFilter[] {filter});
-        DynamicObject midDispatch = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
-        midDispatch.set("nckd_flag", "1");
-        SaveServiceHelper.save(new DynamicObject[]{midDispatch});
-    }
-
-    /**
-     * @description 判断是否已经下推生成调拨单
-     * @param billno
-     * @return boolean
-     */
-    private boolean isAlreadyDispatched(String billno) {
-        QFilter flagFilter = new QFilter("number", QCP.equals, billno);
-        DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid", "id", new QFilter[]{flagFilter});
-        if (mid.length > 0) {
-            DynamicObject midDispatch = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
-            String flag = midDispatch.getString("nckd_flag");
-            return "1".equals(flag);
-        }
-        return false;
-    }
-
-    /**
-     * @description 拼接错误信息
-     * @param resultString,errorChange,errorCode
-     */
-    private void appendErrorMessages(StringBuilder resultString, String errorChange, String errorCode) {
-        if (!StringUtils.isEmpty(errorChange)) {
-            resultString.append(errorChange).append("\n");
-        }
-        if (!StringUtils.isEmpty(errorCode)) {
-            resultString.append(errorCode).append("\n");
-        }
-    }
-
-    /**
-     * @description 查询财务卡片
-     * @param realCardId
-     */
-    private DynamicObject queryFinCard(Long realCardId) {
-        QFilter cardFilter = new QFilter("realcardmasterid", QCP.equals,realCardId);
-        DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_fin","id",new QFilter[] {cardFilter});
-        for (int c = 0; c < card.length; c++) {
-            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-            return cardInfo;
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询组织
-     * @param orgId
-     */
-    private DynamicObject queryOrg(Long orgId) {
-        QFilter orgQFilter= new QFilter("id", QCP.equals,orgId);
-        DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {orgQFilter});
-        for (int c = 0; c < org.length; c++) {
-            DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[c].getPkValue(), org[c].getDynamicObjectType().getName());
-            return orgInfo;
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询变更类型
-     * @param id
-     */
-    private DynamicObject queryChangeType(Long id) {
-        QFilter orgQFilter= new QFilter("id", QCP.equals,id);
-        DynamicObject[] changeType = BusinessDataServiceHelper.load("fa_change_type","id",new QFilter[] {orgQFilter});
-        for (int c = 0; c < changeType.length; c++) {
-            DynamicObject changeInfo = BusinessDataServiceHelper.loadSingle(changeType[c].getPkValue(), changeType[c].getDynamicObjectType().getName());
-            return changeInfo;
-        }
-        return null;
-    }
-
-    /**
-     * @description 查询折旧用途
-     * @param id
-     */
-    private DynamicObject queryDepreuse(Long id) {
-        QFilter orgQFilter= new QFilter("id", QCP.equals,id);
-        DynamicObject[] depreuse = BusinessDataServiceHelper.load("fa_depreuse","id",new QFilter[] {orgQFilter});
-        for (int c = 0; c < depreuse.length; c++) {
-            DynamicObject depreuseInfo = BusinessDataServiceHelper.loadSingle(depreuse[c].getPkValue(), depreuse[c].getDynamicObjectType().getName());
-            return depreuseInfo;
-        }
-        return null;
+        minInfo.set("nckd_card_number", cardNumber);
+        SaveServiceHelper.save(new DynamicObject[]{minInfo});
     }
 }