Bladeren bron

固定资产开发

wanwei 8 maanden geleden
bovenliggende
commit
970ad4be2e

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

@@ -1,8 +1,10 @@
 package fi.er.opplugin;
 
 import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSONObject;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.serialization.SerializationUtils;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.form.field.RefBillEdit;
@@ -15,8 +17,10 @@ import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.EventObject;
+import java.util.List;
 
 public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements BeforeF7SelectListener {
     private static String nckd_apfinapbill = "nckd_apfinapbill"; //应付挂账单字段
@@ -68,10 +72,52 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
         if (StringUtils.equals("nckd_real_card", fieldKey)){
             ChangeData changeData = e.getChangeSet()[0];
             DynamicObjectCollection dynamicObjectCollection = (DynamicObjectCollection) changeData.getNewValue();
+            List<Long> ids = new ArrayList<>();
+            StringBuffer stringBuffer = new StringBuffer();
             for(DynamicObject  object : dynamicObjectCollection) {
-                DynamicObject realcard = object.getDynamicObject("nckd_real_card");
+                Long id = (Long) object.get(2);
+                ids.add(id);
+                stringBuffer.append(id.toString());
+            }
+            this.getModel().setValue("nckd_card_list_id",stringBuffer);
+           //查询实物卡片清单
+            QFilter filter = new QFilter("id", QCP.in,ids);
+            DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+            if (dynamicObjects.length > 0) {
+                this.getModel().deleteEntryData("nckd_realcard_list");
+                for (int i = 0; i < dynamicObjects.length; i++) {
+                    DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                    String number = info.getString("number");//资产编码
+                    String name = info.getString("name");//资产名称
+                    String nckd_card_type = info.getString("nckd_card_type");//资产类别
+                    String nckd_card_status = info.getString("nckd_card_status");//资产状态
+                    DynamicObject nckd_orgfield = info.getDynamicObject("nckd_orgfield");//归属机构
+                    DynamicObject nckd_dept = info.getDynamicObject("nckd_dept");//归属部门
+                    String nckd_use_name = info.getString("nckd_use_name");//使用人
+                    Date nckd_start_date = info.getDate("nckd_start_date");//开始使用日期
+                    String nckd_local = info.getString("nckd_local");//存放地点
+                    String nckd_card_brand = info.getString("nckd_card_brand");//品牌
+                    String nckd_card_model = info.getString("nckd_card_model");//型号
+                    String nckd_serial_number = info.getString("nckd_serial_number");//序列号
+
+                    //实物卡片清单分录赋值
+                    int rowIndex = this.getModel().createNewEntryRow("nckd_realcard_list");
+
+                    this.getModel().setValue("nckd_card_code",number,rowIndex);
+                    this.getModel().setValue("nckd_card_name",name,rowIndex);
+                    this.getModel().setValue("nckd_card_type",nckd_card_type,rowIndex);
+                    this.getModel().setValue("nckd_card_status",nckd_card_status,rowIndex);
+                    this.getModel().setValue("nckd_orgfield",nckd_orgfield,rowIndex);
+                    this.getModel().setValue("nckd_use_name",nckd_use_name,rowIndex);
+                    this.getModel().setValue("nckd_start_date",nckd_start_date,rowIndex);
+                    this.getModel().setValue("nckd_local",nckd_local,rowIndex);
+                    this.getModel().setValue("nckd_card_brand",nckd_card_brand,rowIndex);
+                    this.getModel().setValue("nckd_card_model",nckd_card_model,rowIndex);
+                    this.getModel().setValue("nckd_serial_number",nckd_serial_number,rowIndex);
+                }
+                //刷新实物卡片清单分录
+                this.getView().updateView("nckd_realcard_list");
             }
-            DynamicObject dynamicObject = dynamicObjectCollection.get(0);
         } else if (StringUtils.equals("nckd_apfinapbill", fieldKey)) {
             ChangeData changeData = e.getChangeSet()[0];
             DynamicObject dynamicObject = (DynamicObject) changeData.getNewValue();

+ 53 - 30
src/main/java/fi/er/opplugin/PublicreimburOpPlugin.java

@@ -3,8 +3,10 @@ package fi.er.opplugin;
 import com.alibaba.druid.util.StringUtils;
 import fi.cas.common.SettlementStatusEnum;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 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;
@@ -38,6 +40,25 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
                 info.set("nckd_unsettleamount",totalUnsettleamount);
                 info.set("nckd_settleamount",BigDecimal.ZERO);
                 info.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
+
+                //反写实物卡片清单
+                if (info.getDynamicObjectCollection("nckd_realcard_list") != null ) {
+                    List<String > codeList = new ArrayList<>();
+                    for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_realcard_list")) {
+                        //取当前循环付款明细分录的源单分录id
+                        String cardCode = entryentity.getString("nckd_card_code");
+                        codeList.add(cardCode);
+                    }
+                    //查询实物卡片分录数据,如果查询到数据则不能保存该报销单
+                    QFilter filter = new QFilter("number", QCP.in,codeList);
+                    DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+                    for (int j = 0; j < cardObjects.length; j++) {
+                        DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[i].getPkValue(), cardObjects[i].getDynamicObjectType().getName());
+                        //资产报账单审核通过后,实物卡片清单标记为1
+                        cardInfo.set("nckd_flag", "1");
+                        SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                    }
+                }
                 SaveServiceHelper.save(new DynamicObject[]{info});
             } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
                 //当前单头数据包
@@ -48,41 +69,43 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
                 }
                 info.set("nckd_unsettleamount",BigDecimal.ZERO);
                 info.set("nckd_settlestatus", null);
+
+                //反审核反写实物卡片清单
+                if (info.getDynamicObjectCollection("nckd_realcard_list") != null ) {
+                    List<String > codeList = new ArrayList<>();
+                    for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_realcard_list")) {
+                        //取当前循环付款明细分录的源单分录id
+                        String cardCode = entryentity.getString("nckd_card_code");
+                        codeList.add(cardCode);
+                    }
+                    //查询实物卡片分录数据,如果查询到数据则不能保存该报销单
+                    QFilter filter = new QFilter("number", QCP.in,codeList);
+                    DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+                    for (int j = 0; j < cardObjects.length; j++) {
+                        DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[i].getPkValue(), cardObjects[i].getDynamicObjectType().getName());
+                        //资产报账单审核通过后,实物卡片清单标记为1
+                        cardInfo.set("nckd_flag", "0");
+                        SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                    }
+                }
                 SaveServiceHelper.save(new DynamicObject[]{info});
             } else if (StringUtils.equals(e.getOperationKey(),"save")) {
                 List<DynamicObject> dynamicObjectList = new ArrayList<>();
                 //获取当前页面数据
                 DynamicObject info = dynamicObjects[i];
-                //获取当前单据数据库保存数据
-                DynamicObject saveInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-                if (saveInfo == null) {
-                    DynamicObject apfinapbill = info.getDynamicObject("nckd_apfinapbill");
-                    if (apfinapbill != null) {
-                        //所选应付挂帐单更新标识
-                        Long id =  apfinapbill.getLong("id");
-                        QFilter gzFilter = new QFilter("id", QCP.equals,id);
-                        DynamicObject[] gzDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {gzFilter});
-                        DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[0].getPkValue(), gzDynamicObjects[0].getDynamicObjectType().getName());
-                        gzInfo.set("nckd_selectflag","1");
-                        SaveServiceHelper.save(new DynamicObject[]{gzInfo});
-                    }
-                }else {
-                    DynamicObject apfinapbill = info.getDynamicObject("nckd_apfinapbill");
-                    DynamicObject saveApfinapbill = saveInfo.getDynamicObject("nckd_apfinapbill");
-                    Long oldId = saveApfinapbill.getLong("id");
-                    //释放原应付挂账单
-                    QFilter oldFilter = new QFilter("id", QCP.equals,oldId);
-                    DynamicObject[] oldDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {oldFilter});
-                    DynamicObject oldInfo = BusinessDataServiceHelper.loadSingle(oldDynamicObjects[0].getPkValue(), oldDynamicObjects[0].getDynamicObjectType().getName());
-                    oldInfo.set("nckd_selectflag","");
-                    SaveServiceHelper.save(new DynamicObject[]{oldInfo});
-                    if (apfinapbill !=null) {
-                        Long id =  apfinapbill.getLong("id");
-                        QFilter gzFilter = new QFilter("id", QCP.equals,id);
-                        DynamicObject[] gzDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {gzFilter});
-                        DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[0].getPkValue(), gzDynamicObjects[0].getDynamicObjectType().getName());
-                        gzInfo.set("nckd_selectflag","1");
-                        SaveServiceHelper.save(new DynamicObject[]{gzInfo});
+                Long fid = info.getLong("id");
+                for (DynamicObject entryentity : info.getDynamicObjectCollection("assetentry")) {
+                    DynamicObjectCollection dynamicObjectCollection = entryentity.getDynamicObjectCollection("nckd_real_card");
+                    for(DynamicObject  object : dynamicObjectCollection) {
+                        Long id = (Long) object.get(2);
+                        String listId = String.valueOf(id);
+                        //查询报销单
+                        QFilter bxFilter = new QFilter("nckd_card_list_id", QCP.like,listId);
+                        bxFilter.and("id", QCP.not_equals, fid);
+                        DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load("er_publicreimbursebill","id",new QFilter[] {bxFilter});
+                        if (bxDynamicObjects.length > 0) {
+                            throw new KDBizException("实物卡片清单已经生成资产清单,请重新选择!");
+                        }
                     }
                 }
             }