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 AssetMidBillOpPlugin 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 { List 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", 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);//减少方式默认"调出" dispatch.set("currency", 1);//币种 dispatch.set("currencyrate", 1);//结算汇率 //制单信息 dispatch.set("billstatus", "A");//暂存 //调出方向 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()); //创建调出单分录 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", ChangeDataUtils.getOrg(info.getString("nckd_dept_in")));//调入使用部门 } //执行保存-提交-审核 OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateOption.create()); if (saveResult.isSuccess()){ info.set("nckd_flag", "1"); SaveServiceHelper.save(new DynamicObject[]{info}); this.operationResult.setSuccess(true); this.operationResult.setMessage("下推资产调出单成功"); this.operationResult.setShowMessage(true); 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 { this.operationResult.setShowMessage(true); this.operationResult.setSuccess(false); this.operationResult.setMessage("下推资产调出单单失败"); } } } } } } } }