package fi.fa.opplugin; import com.alibaba.druid.util.StringUtils; 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.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import java.util.ArrayList; import java.util.List; //实物卡片 public class RealCardBillOpPlugin extends AbstractOperationServicePlugIn { @Override public void beginOperationTransaction(BeginOperationTransactionArgs e) { DynamicObject[] dynamicObjects = e.getDataEntities(); for (int i = 0; i < dynamicObjects.length; i++) { if (StringUtils.equals(e.getOperationKey(),"audit")) { List ids = new ArrayList<>(); //审批通过后,如果是报销单下推的单据,则回写e卡片清单 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName()); String srcbillentityname = info.getString("srcbillentityname"); long bxId = info.getLong("nckd_bz_id"); String number = info.getString("number");//资产编码 String name = info.getString("assetname");//资产名称 DynamicObject org = info.getDynamicObject("assetunit");//资产组织 String orgName = org.getString("name"); if (!"fa_assetsplitbill".equals(srcbillentityname)) { DynamicObjectCollection nckd_real_card = info.getDynamicObjectCollection("nckd_real_card"); if( nckd_real_card != null) { for (DynamicObject object : nckd_real_card) { DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(object.get(2), "nckd_fa_card_real_list"); //回写e卡片实物清单字段 cardInfo.set("nckd_flag", "1"); cardInfo.set("nckd_card_real_org", orgName); cardInfo.set("nckd_card_real_code", number); cardInfo.set("nckd_card_real_name", name); SaveServiceHelper.save(new DynamicObject[]{cardInfo}); } } //反写合同台账单 if (bxId != 0) { //查询报销单 QFilter bxFilter = new QFilter("id", QCP.equals,bxId); DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load("er_publicreimbursebill","id",new QFilter[] {bxFilter}); for (int j = 0; j < bxDynamicObjects.length; j++) { DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName()); String nckd_sourcebillid = bxInfo.getString("nckd_sourcebillid"); if (!StringUtils.isEmpty(nckd_sourcebillid)) { Long contractbillId = Long.parseLong(nckd_sourcebillid); //查询合同台账单 QFilter htFilter = new QFilter("id", QCP.equals,contractbillId); DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load("er_contractbill","id",new QFilter[] {htFilter}); for (int k = 0; k < htDynamicObjects.length; k++) { DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName()); htInfo.set("nckd_real_card", info.getString("billno")); SaveServiceHelper.save(new DynamicObject[]{htInfo}); } } } } } }else if(StringUtils.equals(e.getOperationKey(),"unaudit")) { DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName()); long bxId = info.getLong("nckd_bz_id"); String srcbillentityname = info.getString("srcbillentityname"); if (!"fa_assetsplitbill".equals(srcbillentityname)) { //反审核,e管家实物卡片清单三个字段置为空 String number = info.getString("number");//资产编码 //查询e管家实物清单 QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number); 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[j].getPkValue(), cardObjects[j].getDynamicObjectType().getName()); //回写e卡片实物清单字段 cardInfo.set("nckd_flag", "0"); cardInfo.set("nckd_card_real_org", null); cardInfo.set("nckd_card_real_code", null); cardInfo.set("nckd_card_real_name", null); SaveServiceHelper.save(new DynamicObject[]{cardInfo}); } //反写合同台账 if (bxId != 0) { //查询报销单 QFilter bxFilter = new QFilter("id", QCP.equals,bxId); DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load("er_publicreimbursebill","id",new QFilter[] {bxFilter}); for (int j = 0; j < bxDynamicObjects.length; j++) { DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName()); String nckd_sourcebillid = bxInfo.getString("nckd_sourcebillid"); if (!StringUtils.isEmpty(nckd_sourcebillid)) { Long contractbillId = Long.parseLong(nckd_sourcebillid); //查询合同台账单 QFilter htFilter = new QFilter("id", QCP.equals,contractbillId); DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load("er_contractbill","id",new QFilter[] {htFilter}); for (int k = 0; k < htDynamicObjects.length; k++) { DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName()); htInfo.set("nckd_real_card", null); SaveServiceHelper.save(new DynamicObject[]{htInfo}); } } } } } } } } }