From cdd0c68589ef856a1db2770eb45f71caf053cef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Thu, 5 Jun 2025 15:02:43 +0800 Subject: [PATCH] =?UTF-8?q?patch=5Fdev=5Fgl=5F=E8=BE=85=E5=8A=A9=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E8=B4=A6=E5=AD=97=E6=AE=B5=E6=98=BE=E7=A4=BA=E4=BC=98?= =?UTF-8?q?=E5=8C=96=5Fsdlizheng=5F20250605?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gl/lightgl/assdetail/AssDetailBO.java | 1158 +++++++++++++++++ 1 file changed, 1158 insertions(+) create mode 100644 gl/src/private/nccloud/pubimpl/gl/lightgl/assdetail/AssDetailBO.java diff --git a/gl/src/private/nccloud/pubimpl/gl/lightgl/assdetail/AssDetailBO.java b/gl/src/private/nccloud/pubimpl/gl/lightgl/assdetail/AssDetailBO.java new file mode 100644 index 0000000..645fa54 --- /dev/null +++ b/gl/src/private/nccloud/pubimpl/gl/lightgl/assdetail/AssDetailBO.java @@ -0,0 +1,1158 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nccloud.pubimpl.gl.lightgl.assdetail; + +import java.util.*; + +import nc.bs.framework.common.InvocationInfoProxy; +import nc.bs.glcom.ass.assitem.cache.AccAssItemCache; +import nc.bs.logging.Logger; +import nc.gl.account.glconst.CurrTypeConst; +import nc.gl.utils.DataFormatUtilGL; +import nc.gl.utils.GLMultiLangUtil; +import nc.itf.fi.pub.Currency; +import nc.itf.fi.pub.MeasdocUtils; +import nc.itf.gl.pub.ILinkQueryParamTransfer; +import nc.pub.gl.query.CBalanceAssTool; +import nc.pub.gl.query.GlQueryVOAssTool; +import nc.pubitf.accperiod.AccountCalendar; +import nc.pubitf.bd.accessor.GeneralAccessorFactory; +import nc.pubitf.bd.accessor.IGeneralAccessor; +import nc.ui.fi.uforeport.BSDataSourceControl; +import nc.vo.bd.accassitem.AccAssItemVO; +import nc.vo.bd.accessor.IBDData; +import nc.vo.bd.accessor.bankaccsub.BankaccsubBDDataVO; +import nc.vo.bd.account.AccountVO; +import nc.vo.bd.account.pub.AccountGLSimpleVO; +import nc.vo.bd.material.MaterialVO; +import nc.vo.bd.pub.BDCacheQueryUtil; +import nc.vo.fi.uforeport.IUFOInvokeContext; +import nc.vo.fipub.freevalue.account.proxy.AccAssGL; +import nc.vo.fipub.freevalue.util.FreeValueDefUtil; +import nc.vo.fipub.utils.StrTools; +import nc.vo.gateway60.accountbook.AccountBookUtil; +import nc.vo.gateway60.itfs.AccountByPkThreadCache; +import nc.vo.gateway60.itfs.AccountUtilGL; +import nc.vo.gateway60.itfs.CalendarUtilGL; +import nc.vo.gl.detailbooks.DetailBSVO; +import nc.vo.glcom.account.Balanorient; +import nc.vo.glcom.ass.AssAccessorManager; +import nc.vo.glcom.ass.AssVO; +import nc.vo.glcom.balance.AttrsValueVO; +import nc.vo.glcom.balance.GLQueryObj; +import nc.vo.glcom.balance.GlQryFormatVO; +import nc.vo.glcom.balance.GlQueryVO; +import nc.vo.glcom.tools.BaseCorpChooser; +import nc.vo.jcom.util.Convertor; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFDate; +import nc.vo.pub.lang.UFDateTime; +import nc.vo.pub.lang.UFDouble; +import nccloud.dto.gl.lightgl.displayformattool.ShowContentCenter; +import nccloud.pub.gl.lightgl.ColumnInfo; +import nccloud.pub.gl.lightgl.IColumnInfo; +import nccloud.pub.gl.tool.ReportExportUtil; +import nccloud.pubimpl.gl.account.AccountRepUtil; +import nccloud.pubimpl.gl.account.GLReportFormat; +import nccloud.pubimpl.gl.util.JsonUtils; + +public class AssDetailBO { + public Map queryAssBalance(Map params) throws BusinessException { + BSDataSourceControl envInit = this.initEnvirment(params); + + Map var8; + try { + GlQueryVO qryvo = null; + if (params.get("link") != null) { + Class clazz = Class.forName(params.get("class").toString()); + ILinkQueryParamTransfer transfor = (ILinkQueryParamTransfer)clazz.newInstance(); + qryvo = (GlQueryVO)transfor.transLinkQueryParam(params); + params.put("pageindex", "1"); + } else { + qryvo = this.getQueryVO(params); + AccountRepUtil.checkQueryVO(qryvo); + AccountRepUtil.checkPeriodSpan(qryvo); + this.checkQryObjs(qryvo); + } + + DetailList dataList = new DetailList(); + Integer pageindex = JsonUtils.getInteger(params.get("pageindex")); + Integer pagedirection = JsonUtils.getInteger(params.get("pagedirection")); + HashMap dataMap = this.dealQuery(qryvo, pageindex - 1, dataList, pagedirection); + var8 = this.getRes(dataList.getQueryVO(), dataMap); + } catch (Exception e) { + Logger.error(e.getMessage(), e); + throw new BusinessException(e.getMessage(), e); + } finally { + if (envInit != null) { + envInit.afterPress("", (Object[])null, (IUFOInvokeContext)null); + } + + } + + return var8; + } + + public BSDataSourceControl initEnvirment(Map params) throws BusinessException { + if (params.containsKey("env")) { + try { + String env = (String)params.get("env"); + String[] envs = env.replace("[", "").replace("]", "").replaceAll("\"", "").split(","); + BSDataSourceControl envInit = new BSDataSourceControl(); + envInit.beforePress((String)null, envs, (IUFOInvokeContext)null); + return envInit; + } catch (Exception e) { + Logger.error(e.getMessage()); + throw new BusinessException(e.getMessage(), e); + } + } else { + return null; + } + } + + public HashMap dealQuery(GlQueryVO qryvo, int pageindex, DetailList dataList, Integer pagedirection) throws Exception { + HashMap dataMap = new HashMap(); + dataList.setBillModel(new AssDetailWebModel()); + dataList.setQueryVO(qryvo); + int totalPage = dataList.getPageNums(); + dataList.getBillModel().preFilterDataFromBalance(qryvo); + DetailBSVO[] vos = (DetailBSVO[])dataList.goPage(pageindex); + + int pageIndexCopy; + for(pageIndexCopy = pageindex; (pagedirection == null || pagedirection == 0) && vos.length == 0 && pageindex + 1 < totalPage; vos = (DetailBSVO[])dataList.goPage(pageindex)) { + ++pageindex; + } + + while(pagedirection != null && pagedirection == 1 && vos.length == 0 && pageindex + 1 > 0) { + --pageindex; + vos = (DetailBSVO[])dataList.goPage(pageindex); + } + + if (pagedirection != null && pagedirection == 1 && (vos == null || vos.length == 0)) { + for(pageindex = pageIndexCopy; vos.length == 0 && pageindex + 1 < totalPage; vos = (DetailBSVO[])dataList.goPage(pageindex)) { + ++pageindex; + } + } + + dataList.getQueryVO().setIVoucherState(totalPage); + dataMap.put("datavos", vos); + dataMap.put("pageindex", pageindex + 1); + return dataMap; + } + + public GlQueryVO constructQueryVO(Map params) throws Exception { + GlQueryVO qryvo = null; + if (params.get("link") != null) { + Class clazz = Class.forName(params.get("class").toString()); + ILinkQueryParamTransfer transfor = (ILinkQueryParamTransfer)clazz.newInstance(); + qryvo = (GlQueryVO)transfor.transLinkQueryParam(params); + params.put("pageindex", "1"); + } else { + qryvo = this.getQueryVO(params); + AccountRepUtil.checkQueryVO(qryvo); + AccountRepUtil.checkPeriodSpan(qryvo); + this.checkQryObjs(qryvo); + } + + return qryvo; + } + + private void fillParamMap(Map params) throws BusinessException { + String companyPK = (String)((Map)params.get("companychoose")).get("pk_org"); + String accountingPeriod = JsonUtils.getStrEmpty(params.get("accountingPeriod")); + String auxiliaryFiles = JsonUtils.getStrEmpty(params.get("auxiliaryFiles")); + String accountSubject = JsonUtils.getStrNULL(params.get("accountSubject")); + List accountingbook_pks = new ArrayList(); + String pk_accountingbook = AccountRepUtil.getAccountingbookPKByOrgPK(companyPK); + accountingbook_pks.add(pk_accountingbook); + UFDate bizDate = new UFDate(InvocationInfoProxy.getInstance().getBizDateTime()); + AccountCalendar calendar = CalendarUtilGL.getAccountCalendarByAccountBook(pk_accountingbook); + calendar.setDate(bizDate); + String periodyear = calendar.getYearVO().getPeriodyear(); + if (!StrTools.isEmptyStr(accountingPeriod) && accountingPeriod.length() <= 40 && accountingPeriod.matches("\\d{6}-\\d{6}[^\\s]*")) { + String[] splitPeriod = accountingPeriod.split("-"); + String year_begin = splitPeriod[0].substring(0, 4); + String year_end = splitPeriod[1].substring(0, 4); + String period_begin = splitPeriod[0].substring(4); + String period_end = splitPeriod[1].substring(4); + if (StrTools.isEmptyStr(year_begin)) { + year_begin = periodyear; + } + + if (StrTools.isEmptyStr(year_end)) { + year_end = year_begin; + } + + if (StrTools.isEmptyStr(period_begin)) { + period_begin = calendar.getMonthVO().getAccperiodmth(); + } + + if (StrTools.isEmptyStr(period_end)) { + period_end = period_begin; + } + + String commaEn = ","; + String commaCh = ","; + String[] itemname = auxiliaryFiles.contains(commaEn) ? auxiliaryFiles.split(commaEn) : auxiliaryFiles.split(commaCh); + params.put("pk_glorgbooks", accountingbook_pks); + params.put("selectionState", true); + params.put("beginyear", year_begin); + params.put("endyear", year_end); + params.put("beginperiod", period_begin); + params.put("endperiod", period_end); + params.put("begindate", year_begin + "-" + period_begin + "-01"); + params.put("enddate", year_begin + "-" + period_begin + "-01"); + params.put("includeUnTallyed", true); + params.put("includeError", true); + params.put("includeTransfer", true); + params.put("includeReClassify", false); + params.put("currTypeName", CurrTypeConst.QUERY_LOC_CURRTYPE()); + params.put("return_currtype", 1); + params.put("sortType", "0"); + params.put("balanceDirection", -1); + params.put("pageindex", "1"); + List> qryObjs = new ArrayList(); + Map accountQryObj = new HashMap(6); + String MultiLang_Account = NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000031"); + accountQryObj.put("name", MultiLang_Account); + accountQryObj.put("pk_checktype", MultiLang_Account); + if (!StrTools.isEmptyStr(accountSubject)) { + StringBuilder pk_accasoa = new StringBuilder(); + if (accountSubject.contains("-")) { + String[] accountScope = accountSubject.split("-"); + AccountGLSimpleVO[] accvos = AccountUtilGL.querySimpleAccountVOs(new String[]{pk_accountingbook}, accountScope[0], accountScope[1], "1", "1", true, false, AccountRepUtil.getPowerCond(), bizDate.toString()); + if (accvos == null || accvos.length <= 0) { + String var10002 = NCLangRes4VoTransl.getNCLangRes().getStrByID("20021101", "UPP20021101-000264"); + throw new BusinessException(var10002 + NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000230") + accountSubject + NCLangRes4VoTransl.getNCLangRes().getStrByID("20021201", "UPP20021201-000322")); + } + + for(AccountGLSimpleVO accvo : accvos) { + pk_accasoa.append(accvo.getPk_accasoa()).append(commaEn); + } + } else { + accountSubject = accountSubject.replaceAll(" ", ""); + String[] accountCodes = accountSubject.contains(commaCh) ? accountSubject.split(commaCh) : accountSubject.split(commaEn); + Map accountCodesMap = new Hashtable(accountCodes.length); + + for(String code : accountCodes) { + accountCodesMap.put(code, ""); + } + + AccountVO[] accvos = AccountByPkThreadCache.getInstance().getAccountVOByCodes(pk_accountingbook, accountCodes, bizDate.toString()); + if (accvos != null && accvos.length > 0) { + for(AccountVO accvo : accvos) { + if (accvo != null) { + pk_accasoa.append(accvo.getPk_accasoa()).append(commaEn); + accountCodesMap.remove(accvo.getCode()); + } + } + } + + if (!accountCodesMap.isEmpty()) { + StringBuilder errAccCode = new StringBuilder(); + + for(String code : accountCodesMap.keySet()) { + errAccCode.append(code).append(commaEn); + } + + errAccCode.deleteCharAt(errAccCode.length() - 1); + String var55 = NCLangRes4VoTransl.getNCLangRes().getStrByID("20021101", "UPP20021101-000264"); + throw new BusinessException(var55 + errAccCode.toString() + NCLangRes4VoTransl.getNCLangRes().getStrByID("20021505", "UPP20021505-000146")); + } + } + + if (pk_accasoa.length() > 0) { + pk_accasoa.deleteCharAt(pk_accasoa.length() - 1); + } + + accountQryObj.put("pk_checkvalue", pk_accasoa.toString()); + } + + accountQryObj.put("headEle", false); + accountQryObj.put("accEle", false); + accountQryObj.put("includeSub", false); + qryObjs.add(accountQryObj); + if (itemname != null && itemname.length > 0) { + IGeneralAccessor accessor = GeneralAccessorFactory.getAccessor("d3f0e93b-9234-44b9-83c1-6e05bf1e9a28"); + String groupId = InvocationInfoProxy.getInstance().getGroupId(); + StringBuilder errChecktype = new StringBuilder(); + + for(String checktypename : itemname) { + checktypename = checktypename.trim(); + if (!StrTools.isEmptyStr(checktypename)) { + IBDData bdData = accessor.getDocByNameWithMainLang(groupId, checktypename); + if (bdData == null) { + errChecktype.append(checktypename).append(commaEn); + } + + if (errChecktype.length() == 0) { + Map qryObj = new HashMap(6); + qryObj.put("name", bdData.getName().toString()); + qryObj.put("pk_checktype", bdData.getPk()); + qryObj.put("pk_checkvalue", ""); + qryObj.put("headEle", false); + qryObj.put("accEle", false); + qryObj.put("includeSub", false); + qryObjs.add(qryObj); + } + } + } + + if (errChecktype.length() > 0) { + errChecktype.deleteCharAt(errChecktype.length() - 1); + String var54 = NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000058"); + throw new BusinessException(var54 + errChecktype.toString() + NCLangRes4VoTransl.getNCLangRes().getStrByID("20021505", "UPP20021505-000146")); + } + } + + params.put("qryObjs", qryObjs); + } else { + throw new BusinessException("会计期间格式不正确!请按照如下示例:" + periodyear + "01-" + periodyear + "03"); + } + } + + public GlQueryVO getQueryVO(Map params) throws BusinessException { + if (params.containsKey("companyName")) { + this.fillParamMap(params); + } + + GlQueryVO qryVO = new GlQueryVO(); + String[] pk_glorgbooks = JsonUtils.getStrArray(params.get("pk_glorgbooks")); + if (pk_glorgbooks != null && pk_glorgbooks.length != 0) { + String pk_accountingbook = pk_glorgbooks[0]; + String newBase = BaseCorpChooser.getPk_BasCorp(pk_glorgbooks, pk_accountingbook); + qryVO.setBaseAccountingbook(newBase); + if (pk_glorgbooks == null || pk_glorgbooks.length == 0) { + pk_glorgbooks = new String[]{pk_accountingbook}; + } + + qryVO.setpk_accountingbook(pk_glorgbooks); + GlQryFormatVO qryFormatVo = qryVO.getFormatVO(); + qryVO.setQueryByPeriod(JsonUtils.getBoolean(params.get("selectionState"))); + if (qryVO.isQueryByPeriod()) { + qryVO.setYear(JsonUtils.getStrNULL(params.get("beginyear"))); + qryVO.setPeriod(JsonUtils.getStrNULL(params.get("beginperiod"))); + qryVO.setEndYear(JsonUtils.getStrNULL(params.get("endyear"))); + qryVO.setEndPeriod(JsonUtils.getStrNULL(params.get("endperiod"))); + if (!StrTools.isEmptyStr(qryVO.getYear()) && !StrTools.isEmptyStr(qryVO.getEndYear()) && !StrTools.isEmptyStr(qryVO.getPeriod()) && !StrTools.isEmptyStr(qryVO.getEndPeriod())) { + AccountCalendar calendar = CalendarUtilGL.getAccountCalendarByAccountBook(qryVO.getBaseAccountingbook()); + calendar.set(qryVO.getYear(), qryVO.getPeriod()); + qryVO.setDate(calendar.getMonthVO().getBegindate()); + calendar.set(qryVO.getEndYear(), qryVO.getEndPeriod().substring(0, 2)); + qryVO.setEndDate(calendar.getMonthVO().getEnddate().asEnd()); + } + } else { + String date = JsonUtils.getStrNULL(params.get("begindate")); + qryVO.setDate(StrTools.isEmptyStr(date) ? null : AccountRepUtil.getStdStartDate(date)); + String endDate = JsonUtils.getStrNULL(params.get("enddate")); + qryVO.setEndDate(StrTools.isEmptyStr(endDate) ? null : AccountRepUtil.getStdEndDate(endDate)); + if (qryVO.getDate() != null && qryVO.getEndDate() != null) { + AccountCalendar calendar = CalendarUtilGL.getAccountCalendarByAccountBook(qryVO.getBaseAccountingbook()); + calendar.setDate(qryVO.getDate()); + qryVO.setYear(calendar.getYearVO().getPeriodyear()); + qryVO.setPeriod(calendar.getMonthVO().getAccperiodmth()); + calendar.setDate(qryVO.getEndDate()); + qryVO.setEndYear(calendar.getYearVO().getPeriodyear()); + qryVO.setEndPeriod(calendar.getMonthVO().getAccperiodmth()); + } + } + + qryVO.setIncludeUnTallyed(JsonUtils.getBoolean(params.get("includeUnTallyed"))); + qryVO.setIncludeError(JsonUtils.getBoolean(params.get("includeError"))); + qryVO.setIncludeTransfer(JsonUtils.getBoolean(params.get("includeTransfer"))); + qryVO.setIncludeReClassify(JsonUtils.getBoolean(params.get("includeReClassify"))); + qryVO.setCurrTypeName(JsonUtils.getStrNULL(params.get("currTypeName"))); + qryVO.setM_Return_CurrType(JsonUtils.getInteger(params.get("return_currtype"))); + qryVO.setLocalFrac(false); + if (!qryVO.getCurrTypeName().equals(CurrTypeConst.AUX_CURRTYPE()) && !qryVO.getCurrTypeName().equals(CurrTypeConst.QUERY_LOC_CURRTYPE()) && !qryVO.getCurrTypeName().equals(CurrTypeConst.ALL_CURRTYPE())) { + qryVO.setPk_currtype(JsonUtils.getStrNULL(params.get("pk_currtype"))); + } else { + qryVO.setPk_currtype((String)null); + if (qryVO.getCurrTypeName().equals(CurrTypeConst.AUX_CURRTYPE())) { + qryVO.setLocalFrac(true); + } + } + + if (qryVO.getCurrTypeName().equals(CurrTypeConst.ALL_CURRTYPE())) { + qryVO.setLocalFrac(ReportExportUtil.isLocalFrac(pk_accountingbook)); + } + + qryFormatVo.setMultiCorpCombine(false); + qryFormatVo.setBalanceOrient(JsonUtils.getInteger(params.get("balanceDirection"))); + qryFormatVo.setCorpDispLocation(1); + qryFormatVo.setIsSubjSelectAll(true); + qryFormatVo.setSortType(JsonUtils.getInteger(params.get("sortType"))); + qryFormatVo.setShowDayAcc(JsonUtils.getBoolean(params.get("addupByDay"))); + qryVO.setDisLocalCurySum(JsonUtils.getBoolean(params.get("disLocalCurySum"))); + qryFormatVo.setShowHasBalanceButZeroOccur(!JsonUtils.getBoolean(params.get("ckNoAccurNoDsp"))); + qryFormatVo.setShowYearAcc(JsonUtils.getBoolean(params.get("dspAccumu"))); + qryFormatVo.setCombineVoucher(JsonUtils.getBoolean(params.get("combineVoucher"))); + qryVO.setFormatVO(qryFormatVo); + Object[] pk_orgs = JsonUtils.getStrArray(params.get("pk_orgs")); + String[] pk_units = null; + if (pk_glorgbooks.length == 1) { + if (pk_orgs != null && pk_orgs.length > 0) { + pk_units = new String[pk_orgs.length]; + + for(int i = 0; i < pk_orgs.length; ++i) { + pk_units[i] = pk_orgs[i].toString(); + } + } else { + pk_units = AccountRepUtil.getPowerUnits(pk_glorgbooks[0]); + } + } + + Object[] pk_liabilitycenteros = JsonUtils.getStrArray(params.get("pk_liabilitycenter")); + String[] pk_liabilitycenters = null; + if (pk_glorgbooks.length == 1 && pk_liabilitycenteros != null && pk_liabilitycenteros.length > 0) { + pk_liabilitycenters = new String[pk_liabilitycenteros.length]; + + for(int i = 0; i < pk_liabilitycenteros.length; ++i) { + pk_liabilitycenters[i] = pk_liabilitycenteros[i].toString(); + } + } + + qryVO.setPk_liabilitycenters(pk_liabilitycenters); + qryVO.setPk_unis(pk_units); + qryVO.setMultiBusi(JsonUtils.getBoolean(params.get("multiBusi"))); + qryVO.setMultiLiabcenter(JsonUtils.getBoolean(params.get("multliabcenter"))); + UFDate busiDate = new UFDate(InvocationInfoProxy.getInstance().getBizDateTime()); + qryVO.setPk_user(InvocationInfoProxy.getInstance().getUserId()); + qryVO.setDefaultAdjust(false); + qryVO.setUseSubjVersion(JsonUtils.getBoolean(params.get("useSubjVersion"))); + if (qryVO.isUseSubjVersion()) { + qryVO.setSubjVersion(JsonUtils.getStrNULL(params.get("subjVersion"))); + } else { + qryVO.setSubjVersionYear("" + busiDate.getYear()); + qryVO.setSubjVerisonPeriod(busiDate.getStrMonth()); + qryVO.setSubjVersion(busiDate.toStdString()); + } + + this.setQryObjs(qryVO, params.get("qryObjs")); + qryVO.setShowBusinessDate(JsonUtils.getBoolean(params.get("showBusDate"))); + qryVO.setNeedCheckData(true); + return qryVO; + } else { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("gl20111017public_v1_0", "02002001-0019")); + } + } + + private Map getRes(GlQueryVO qryvo, HashMap dataMap) throws Exception { + Map result = new HashMap(); + DetailBSVO[] data = (DetailBSVO[])dataMap.get("datavos"); + int pageindex = (Integer)dataMap.get("pageindex"); + result.put("column", this.getColumn(qryvo)); + result.put("data", this.getData(qryvo, data)); + result.put("totalpage", qryvo.getIVoucherState()); + result.put("pageindex", pageindex); + Map headTitle = new HashMap(); + headTitle.put("accbook", AccountRepUtil.getOrgNames(qryvo)); + headTitle.put("period", qryvo.isQueryByPeriod() ? qryvo.getYear() + "-" + qryvo.getPeriod() + "--" + qryvo.getEndYear() + "-" + qryvo.getEndPeriod() : DataFormatUtilGL.formatDate(qryvo.getDate()).getValue() + "--" + DataFormatUtilGL.formatDate(qryvo.getEndDate()).getValue()); + headTitle.put("currtype", qryvo.getCurrTypeName()); + StringBuilder queryObjName = new StringBuilder(); + if (qryvo.getFormatVO() != null && qryvo.getFormatVO().getQryObjs() != null && qryvo.getAssVos() != null) { + for(GLQueryObj qryObj : qryvo.getFormatVO().getQryObjs()) { + if (qryObj.getHeadEle()) { + if (qryObj.getType().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("2002gl55", "UPP2002gl55-000061"))) { + String subjName = ShowContentCenter.getShowAccsubj(qryvo.getBaseAccountingbook(), qryvo.getPk_account() == null ? null : qryvo.getPk_account()[0], qryvo.getSubjVersion()); + String var10001 = NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000135"); + queryObjName.append(var10001 + subjName + NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000136")); + } else { + for(AssVO assvo : qryvo.getAssVos()) { + if (qryObj.getType().equals(assvo.getChecktypename())) { + String assname = ShowContentCenter.getShowAss(qryvo.getBaseAccountingbook(), new AssVO[]{assvo}); + queryObjName.append(assname); + break; + } + } + } + } + } + } + + headTitle.put("queryobjname", queryObjName.toString()); + headTitle.put("unit", this.getUnitName(qryvo)); + result.put("headtitle", headTitle); + return result; + } + + private String getUnitName(GlQueryVO qryvo) throws BusinessException { + String unit = ""; + GLQueryObj[] allQryObjs = qryvo.getFormatVO().getQryObjs(); + Vector vTempHead = new Vector(); + Vector vHeadAssLoc = new Vector(); + int adjustValue = 0; + + for(int i = 0; i < allQryObjs.length; ++i) { + if (allQryObjs[i].getType().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("2002gl55", "UPP2002gl55-000061"))) { + --adjustValue; + } + + if (allQryObjs[i].getHeadEle()) { + vTempHead.add(allQryObjs[i]); + if (!allQryObjs[i].getType().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("2002gl55", "UPP2002gl55-000061"))) { + vHeadAssLoc.add(i + adjustValue); + } + } + } + + if (qryvo.getOppSubjQryObj() != null && qryvo.getOppSubjQryObj().getHeadEle()) { + vTempHead.add(qryvo.getOppSubjQryObj()); + } + + GLQueryObj[] head = (GLQueryObj[])Convertor.convertVectorToArray(vTempHead); + Integer[] headAssLocation = (Integer[])Convertor.convertVectorToArray(vHeadAssLoc); + if (qryvo.getPk_account() != null) { + String sUnit = ""; + String classid = "eae040f4-3c88-413d-abc9-b15774463d46"; + AccAssItemVO[] assItems = AccAssItemCache.getAccAssItemsByClassIDs(new String[]{classid}); + AssVO headAssVO = null; + boolean accountIsHead = false; + boolean assUnitIsExist = false; + if (head != null && head.length > 0) { + int assIndex = -1; + + for(int i = 0; i < head.length; ++i) { + if (head[i].getType().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("2002gl55", "UPP2002gl55-000061"))) { + accountIsHead = true; + } else if (!head[i].getType().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("20021010", "UPP20021005-000274"))) { + ++assIndex; + } + + if (headAssLocation != null && assIndex >= 0) { + headAssVO = qryvo.getAssVos()[headAssLocation[assIndex]]; + + for(AccAssItemVO accAssItemVO : assItems) { + if (accAssItemVO.getPk_accassitem().equals(headAssVO.getPk_Checktype())) { + Object[] measdoc = BDCacheQueryUtil.queryVOsByIDs(MaterialVO.class, "pk_material", new String[]{headAssVO.getPk_Checkvalue()}, new String[]{"pk_measdoc"}); + if (measdoc != null && measdoc[0] != null) { + sUnit = ((MaterialVO)measdoc[0]).getPk_measdoc(); + assUnitIsExist = true; + break; + } + } + } + } + + if (assUnitIsExist && accountIsHead) { + break; + } + } + + if (accountIsHead) { + AccountVO accountVO = AccountByPkThreadCache.getInstance().getAccountVO(qryvo.getPk_account()[0], qryvo.getSubjVersion()); + String accountUnit = accountVO == null ? null : accountVO.getUnit(); + if (!assUnitIsExist) { + sUnit = accountUnit; + } else if (accountUnit == null) { + sUnit = accountUnit; + } + } + + unit = sUnit == null ? "" : MeasdocUtils.getNameBypk(sUnit); + } else { + unit = ""; + } + } + + return unit; + } + + private List getColumn(GlQueryVO qryvo) { + List colList = new ArrayList(); + if (qryvo.getDate().getYear() != qryvo.getEndDate().getYear()) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000485"), "year", ColumnInfo.LEFT)); + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000079"), "month", ColumnInfo.LEFT)); + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000087"), "day", ColumnInfo.LEFT)); + } else { + colList.add(AccountRepUtil.getMultHeadColum(String.valueOf(qryvo.getDate().getYear()), new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000079"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000087")}, new String[]{"month", "day"}, new String[]{ColumnInfo.LEFT, ColumnInfo.LEFT})); + } + + if (qryvo.isShowBusinessDate()) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-001008"), "businessdate", ColumnInfo.LEFT)); + } + + if (qryvo.getpk_accountingbook().length > 1) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("gl20111017public_v1_0", "1200230400004"), "bookname", ColumnInfo.LEFT)); + } + + if (AccountRepUtil.isAssdetailBuSupport(qryvo)) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UCMD1-000396"), "unitname", ColumnInfo.LEFT)); + } + + if (AccountRepUtil.isAssliabilitycenterSupport(qryvo)) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UCMD1-000445"), "liabilitycentername", ColumnInfo.LEFT)); + } + + if (!GlQueryVOAssTool.isMultiPages(qryvo)) { + GLQueryObj[] queryObjs = qryvo.getFormatVO().getQryObjs(); + + for(int i = 0; i < queryObjs.length; ++i) { + GLQueryObj queryObj = queryObjs[i]; + if (queryObj.getTypeName().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000031"))) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000010"), "accsubjcode", ColumnInfo.LEFT)); + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000011"), "accsubjname", ColumnInfo.LEFT)); + } else { + AssVO[] assvos = queryObj.getValueRange(); + if (assvos != null && assvos[0] != null) { + AssVO assvo = assvos[0]; + colList.add(new ColumnInfo(assvo.getChecktypename() + NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000033"), "checkvaluecode" + i, ColumnInfo.LEFT)); + colList.add(new ColumnInfo(assvo.getChecktypename() + NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000034"), "showname" + i, ColumnInfo.LEFT)); + } + } + } + } else { + GLQueryObj[] queryObjs = qryvo.getFormatVO().getQryObjs(); + + for(int i = 0; i < queryObjs.length; ++i) { + GLQueryObj queryObj = queryObjs[i]; + if (!queryObj.getHeadEle()) { + if (queryObj.getTypeName().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000031"))) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000010"), "accsubjcode", ColumnInfo.LEFT)); + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000011"), "accsubjname", ColumnInfo.LEFT)); + } else { + AssVO[] assvos = queryObj.getValueRange(); + if (assvos != null && assvos[0] != null) { + AssVO assvo = assvos[0]; + colList.add(new ColumnInfo(assvo.getChecktypename() + NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000033"), "checkvaluecode" + i, ColumnInfo.LEFT)); + colList.add(new ColumnInfo(assvo.getChecktypename() + NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000034"), "showname" + i, ColumnInfo.LEFT)); + } + } + } + } + } + + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000008"), "voucherno", ColumnInfo.LEFT)); + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000009"), "explanation", ColumnInfo.LEFT)); + if (qryvo.getCurrTypeName().equals(CurrTypeConst.ALL_CURRTYPE())) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000012"), "currtypename", ColumnInfo.LEFT)); + } + + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000287"), "oppsubjname", ColumnInfo.LEFT)); + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000288"), "price", ColumnInfo.RIGTH)); + if (!qryvo.getCurrTypeName().equals(CurrTypeConst.QUERY_LOC_CURRTYPE())) { + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000290"), "ratio2", ColumnInfo.RIGTH)); + } + + String[] childStr = null; + String[] childAlign = null; + String[] childKey = null; + if (qryvo.getCurrTypeName().equals(CurrTypeConst.QUERY_LOC_CURRTYPE())) { + childStr = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000050"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000053")}; + childAlign = new String[]{ColumnInfo.RIGTH, ColumnInfo.RIGTH}; + childKey = new String[]{"debitquantity", "debitlocamount"}; + } else { + childStr = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000050"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000051"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000053")}; + childAlign = new String[]{ColumnInfo.RIGTH, ColumnInfo.RIGTH, ColumnInfo.RIGTH}; + childKey = new String[]{"debitquantity", "debitamount", "debitlocamount"}; + } + + colList.add(AccountRepUtil.getMultHeadColum(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000074"), childStr, childKey, childAlign)); + if (qryvo.getCurrTypeName().equals(CurrTypeConst.QUERY_LOC_CURRTYPE())) { + childKey = new String[]{"creditquantity", "creditlocamount"}; + } else { + childKey = new String[]{"creditquantity", "creditamount", "creditlocamount"}; + } + + colList.add(AccountRepUtil.getMultHeadColum(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000076"), childStr, childKey, childAlign)); + colList.add(new ColumnInfo(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000134"), "balanceorient", ColumnInfo.CENTER)); + if (qryvo.getCurrTypeName().equals(CurrTypeConst.QUERY_LOC_CURRTYPE())) { + childStr = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000050"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000291"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000053")}; + childAlign = new String[]{ColumnInfo.RIGTH, ColumnInfo.RIGTH, ColumnInfo.RIGTH}; + childKey = new String[]{"balancequant", "averageprice", "balancelocamount"}; + } else { + childStr = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000050"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000291"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000051"), NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000053")}; + childAlign = new String[]{ColumnInfo.RIGTH, ColumnInfo.RIGTH, ColumnInfo.RIGTH, ColumnInfo.RIGTH}; + childKey = new String[]{"balancequant", "averageprice", "balanceamount", "balancelocamount"}; + } + + colList.add(AccountRepUtil.getMultHeadColum(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000077"), childStr, childKey, childAlign)); + return colList; + } + + public List> getData(GlQueryVO qryvo, DetailBSVO[] detailBSVOs) throws Exception { + Map assIndexMap = new HashMap(); + GLQueryObj[] queryObjs = qryvo.getFormatVO().getQryObjs(); + + for(int i = 0; i < queryObjs.length; ++i) { + GLQueryObj queryObj = queryObjs[i]; + AssVO[] assvos = queryObj.getValueRange(); + if (assvos != null && assvos.length > 0 && assvos[0] != null) { + assIndexMap.put(assvos[0].getPk_Checktype(), "" + i); + } + } + + List> data = new ArrayList(); + String pk_localcurr = AccountRepUtil.getLocalCurr(qryvo); + String pk_org = AccountBookUtil.getPk_org(qryvo.getBaseAccountingbook()); + GLReportFormat format = new GLReportFormat(77, 63, 40); + boolean isExistsMaterial = this.isExistsMaterial(qryvo); + Map materialMeasdocMap = null; + if (isExistsMaterial) { + materialMeasdocMap = this.getMaterialMeasdoc(detailBSVOs); + } + + for(DetailBSVO vo : detailBSVOs) { + Map row = new HashMap(); + row.put("prepareddate", vo.getValue(1)); + row.put("year", vo.getValue(35)); + row.put("period", vo.getValue(0)); + row.put("detailindex", vo.getValue(65)); + row.put("explanation", vo.getValue(3)); + row.put("vouchertype", vo.getValue(25)); + row.put("vouchernum", vo.getValue(2)); + if (vo.getDaybakAsDate() != null) { + UFDateTime date = vo.getDaybakAsDate(); + date = DataFormatUtilGL.getLocalDateTime(date); + row.put("year", date.getYear()); + row.put("month", date.getStrMonth()); + row.put("day", date.getStrDay()); + } + + row.put("businessdate", DataFormatUtilGL.formatStringDateTime((String)vo.getValue(275))); + row.put("bookname", vo.getValue(116)); + row.put("unitname", vo.getValue(274)); + row.put("liabilitycentername", vo.getValue(283)); + row.put("accsubjcode", vo.getValue(63)); + row.put("accsubjname", vo.getValue(64)); + if (vo.getValue(25) != null && vo.getValue(2) != null) { + Object var10002 = vo.getValue(25); + row.put("voucherno", var10002 + "-" + vo.getValue(2)); + } + + row.put("explanation", vo.getValue(3)); + row.put("currtypename", vo.getValue(4)); + row.put("oppsubjname", vo.getValue(5)); + row.put("price", format.getFormatPrice(vo.getValue(6), vo, qryvo.getSubjVersion())); + if (!qryvo.getCurrTypeName().equals(CurrTypeConst.QUERY_LOC_CURRTYPE()) && !StrTools.isEmptyStr((String)vo.getValue(44))) { + row.put("ratio2", format.getFormatRate(this.getRadio(qryvo, vo), this.getCurrtypePK(qryvo, vo), pk_localcurr, pk_org)); + } + + row.put("debitamount", format.getFormatAmountVlaue(vo.getValue(10), vo, pk_localcurr)); + row.put("debitlocamount", format.getFormatLocalVlaue(vo.getValue(12), pk_localcurr)); + row.put("creditamount", format.getFormatAmountVlaue(vo.getValue(14), vo, pk_localcurr)); + row.put("creditlocamount", format.getFormatLocalVlaue(vo.getValue(16), pk_localcurr)); + String balanceorient = ""; + if (vo.getValue(3) != null && NCLangRes4VoTransl.getNCLangRes().getStrByID("2002033381", "UPP2002033381-000138").equals(vo.getValue(3).toString()) && qryvo.getpk_accountingbook().length > 1) { + balanceorient = null; + } else { + balanceorient = Balanorient.getOrientStr(Integer.valueOf(vo.getValue(30).toString())); + } + + row.put("balanceorient", balanceorient); + row.put("averageprice", format.getFormatPrice(vo.getValue(67), vo, qryvo.getSubjVersion())); + row.put("balanceamount", format.getFormatAmountVlaue(vo.getValue(32), vo, pk_localcurr)); + row.put("balancelocamount", format.getFormatLocalVlaue(vo.getValue(34), pk_localcurr)); + if (NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000000").equals(vo.getValue(3))) { + row.put("debitquantity", format.getBeginBalanceQuan(vo.getValue(9), qryvo.getPk_account(), qryvo.getBaseAccountingbook())); + row.put("creditquantity", format.getBeginBalanceQuan(vo.getValue(13), qryvo.getPk_account(), qryvo.getBaseAccountingbook())); + row.put("balancequant", format.getBeginBalanceQuan(vo.getValue(31), qryvo.getPk_account(), qryvo.getBaseAccountingbook())); + } else if (isExistsMaterial) { + String materialPK = this.getMaterialPK(vo); + String pk_measdoc = (String)materialMeasdocMap.get(materialPK); + row.put("debitquantity", format.getFormatQuanMaterial(vo.getValue(9), pk_measdoc)); + row.put("creditquantity", format.getFormatQuanMaterial(vo.getValue(13), pk_measdoc)); + row.put("balancequant", format.getFormatQuanMaterial(vo.getValue(31), pk_measdoc)); + } else { + row.put("debitquantity", format.getFormatQuan(vo.getValue(9), vo, qryvo.getSubjVersion())); + row.put("creditquantity", format.getFormatQuan(vo.getValue(13), vo, qryvo.getSubjVersion())); + row.put("balancequant", format.getFormatQuan(vo.getValue(31), vo, qryvo.getSubjVersion())); + } + + Object assvosObj = vo.getValue(60); + if (row.get("mark") == null && assvosObj != null && assvosObj.getClass().isArray()) { + AssVO[] assvos = (AssVO[])assvosObj; + + for(int i = 0; i < assvos.length; ++i) { + AssVO assvo = assvos[i]; + String index = (String)assIndexMap.get(assvo.getPk_Checktype()); + row.put("checktypecode" + index, assvo.getChecktypecode()); + row.put("checktypename" + index, assvo.getChecktypename()); + row.put("checkvaluecode" + index, assvo.getCheckvaluecode()); + row.put("checkvaluename" + index, assvo.getCheckvaluename()); + row.put("classid" + index, assvo.getM_classid()); + row.put("pk_checktype" + index, assvo.getPk_Checktype()); + row.put("pk_checkvalue" + index, assvo.getPk_Checkvalue()); +// row.put("showname" + index, ShowContentCenter.getShowAss(qryvo.getBaseAccountingbook(), new AssVO[]{assvo})); + //还原为源码 start + row.put("showname" + index, assvo.getCheckvaluename()); + //end + } + } + + if (vo.getValue(44) != null) { + Map link = new HashMap(); + link.put("pk_voucher", vo.getValue(44)); + link.put("explanation", vo.getValue(3)); + link.put("debitlocamount", vo.getValue(12)); + link.put("creditlocamount", vo.getValue(16)); + AssVO[] assvos = (AssVO[])vo.getValue(60); + if (assvos != null && assvos.length > 0) { + List> list = new ArrayList(assvos.length); + + for(AssVO assvo : assvos) { + Map map = new HashMap(); + map.put("pk_checktype", assvo.getPk_Checktype()); + map.put("pk_checkvalue", assvo.getPk_Checkvalue()); + list.add(map); + } + + link.put("ass", list); + } + + if (vo.getValue(63) != null && vo.getValue(62) != null) { + link.put("accountingcode", vo.getValue(63)); + } + + if (qryvo.getpk_accountingbook().length > 1) { + row.put("linkmsg", new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000299")}); + } + + row.put("link", link); + } + + data.add(row); + } + + return data; + } + + private UFDouble getRadio(GlQueryVO qryvo, DetailBSVO vo) throws Exception { + UFDouble radio = (UFDouble)vo.getValue(8); + if (qryvo.getM_Return_CurrType() == 2) { + radio = (UFDouble)vo.getValue(26); + } else if (qryvo.getM_Return_CurrType() == 3) { + radio = (UFDouble)vo.getValue(27); + } + + return radio; + } + + private String getCurrtypePK(GlQueryVO qryvo, DetailBSVO vo) throws Exception, BusinessException { + String pk_currtype = (String)vo.getValue(40); + if (qryvo.getM_Return_CurrType() == 2 && !Currency.isGroupRawConvertModel(InvocationInfoProxy.getInstance().getGroupId())) { + pk_currtype = Currency.getLocalCurrPK(AccountBookUtil.getPk_org(qryvo.getBaseAccountingbook())); + } else if (qryvo.getM_Return_CurrType() == 3 && !Currency.isGlobalRawConvertModel((String)null)) { + pk_currtype = Currency.getLocalCurrPK(AccountBookUtil.getPk_org(qryvo.getBaseAccountingbook())); + } + + return pk_currtype; + } + + private void setQryObjs(GlQueryVO qryVO, Object json) throws BusinessException { + if (json != null) { + Set checktypeList = new HashSet(); + List glQueryObjs = new ArrayList(); + List list = (List)json; + + for(int i = 0; i < list.size(); ++i) { + Map qryObjMap = (Map)list.get(i); + if (!StrTools.isEmptyStr(JsonUtils.getStrNULL(qryObjMap.get("name"))) && !NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000031").equals(JsonUtils.getStrNULL(qryObjMap.get("name")))) { + checktypeList.add(JsonUtils.getStrNULL(qryObjMap.get("pk_checktype"))); + } + } + + for(int i = 0; i < list.size(); ++i) { + Map qryObjMap = (Map)list.get(i); + if (!StrTools.isEmptyStr(JsonUtils.getStrNULL(qryObjMap.get("name")))) { + GLQueryObj glQueryObj = new GLQueryObj(); + glQueryObj.setAccEle(JsonUtils.getBoolean(qryObjMap.get("accEle"))); + glQueryObj.setAttrsValues((AttrsValueVO[])null); + glQueryObj.setHeadEle(JsonUtils.getBoolean(qryObjMap.get("headEle"))); + glQueryObj.setIncludeSub(JsonUtils.getBoolean(qryObjMap.get("includeSub"))); + glQueryObj.setLinkObj((Object)null); + glQueryObj.setDirty(false); + glQueryObj.setType(JsonUtils.getStrNULL(qryObjMap.get("name"))); + glQueryObj.setTypeName(JsonUtils.getStrNULL(qryObjMap.get("name"))); + String pk_checkvalues = JsonUtils.getStrNULL(qryObjMap.get("pk_checkvalue")); + if (NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000031").equals(JsonUtils.getStrNULL(qryObjMap.get("name")))) { + if (pk_checkvalues != null && pk_checkvalues.length() > 0) { + AccountVO[] accvos = AccountUtilGL.queryAccountVosByPks(pk_checkvalues.split(","), qryVO.getSubjVersion(), false); + if (accvos != null && accvos.length > 0) { + Arrays.sort(accvos, new Comparator() { + public int compare(AccountVO o1, AccountVO o2) { + return o1.getCode().compareTo(o2.getCode()); + } + }); AssVO[] accounts = new AssVO[accvos.length]; + + for(int j = 0; j < accvos.length; ++j) { + accounts[j] = new AssVO(); + accounts[j].setCheckvaluecode(accvos[j].getCode()); + accounts[j].setCheckvaluename(accvos[j].getName()); + accounts[j].setPk_Checkvalue(accvos[j].getPk_accasoa()); + } + + glQueryObj.setValueRange(accounts); + } + } else { + AccountGLSimpleVO[] accvos = AccountUtilGL.queryAccByAss((String[])checktypeList.toArray(new String[0]), qryVO.getBaseAccountingbook(), qryVO.getSubjVersion()); + if (accvos != null && accvos.length > 0) { + Arrays.sort(accvos, new Comparator() { + public int compare(AccountGLSimpleVO o1, AccountGLSimpleVO o2) { + return o1.getCode().compareTo(o2.getCode()); + } + }); AssVO[] accounts = new AssVO[accvos.length]; + + for(int j = 0; j < accvos.length; ++j) { + accounts[j] = new AssVO(); + accounts[j].setCheckvaluecode(accvos[j].getCode()); + accounts[j].setCheckvaluename(accvos[j].getName()); + accounts[j].setPk_Checkvalue(accvos[j].getPk_accasoa()); + } + + glQueryObj.setValueRange(accounts); + } + } + + if (glQueryObj.getValueRange() == null) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000198")); + } + } else { + String pk_checktype = JsonUtils.getStrNULL(qryObjMap.get("pk_checktype")); + AccAssItemVO accassItemVO = AccAssGL.getAccAssItemVOByPk(pk_checktype); + if (accassItemVO == null) { + Logger.error("assdetail: invalid pk_checktype:" + pk_checktype); + continue; + } + + String checkvaluename = GLMultiLangUtil.getMultiName(accassItemVO); + String checkvaluecode = accassItemVO.getCode(); + String classid = AccAssGL.getClassidByCheckTypePk(pk_checktype); + if (!StrTools.isEmptyStr(pk_checkvalues)) { + String[] arrCheckvalues = pk_checkvalues.split(","); + AssVO[] assvos = new AssVO[arrCheckvalues.length]; + + for(int j = 0; j < assvos.length; ++j) { + assvos[j] = new AssVO(); + assvos[j].setPk_Checktype(pk_checktype); + assvos[j].setChecktypename(checkvaluename); + assvos[j].setChecktypecode(checkvaluecode); + assvos[j].setM_classid(classid); + } + + if (FreeValueDefUtil.getInstance().isDefDoc(classid)) { + for(int j = 0; j < assvos.length; ++j) { + assvos[j].setPk_Checkvalue(arrCheckvalues[j]); + assvos[j].setCheckvaluecode(arrCheckvalues[j]); + assvos[j].setCheckvaluename(arrCheckvalues[j]); + } + } else { + IGeneralAccessor accessor = (new AssAccessorManager()).getDBAccess(classid); + IBDData[] datas = accessor.getDocbyPks(arrCheckvalues); + Map map = new HashMap(); + + for(IBDData data : datas) { + map.put(data.getPk(), data); + } + + for(int j = 0; j < assvos.length; ++j) { + assvos[j].setPk_Checkvalue(arrCheckvalues[j]); + if (map.get(arrCheckvalues[j]) instanceof BankaccsubBDDataVO) { + assvos[j].setCheckvaluecode(((BankaccsubBDDataVO)map.get(arrCheckvalues[j])).getSubcode()); + assvos[j].setCheckvaluename(((BankaccsubBDDataVO)map.get(arrCheckvalues[j])).getSubname().toString()); + } else { + assvos[j].setCheckvaluecode(((IBDData)map.get(arrCheckvalues[j])).getCode()); + assvos[j].setCheckvaluename(((IBDData)map.get(arrCheckvalues[j])).getName().getText()); + } + } + } + + glQueryObj.setValueRange(assvos); + } else { + AssVO[] assvos = new AssVO[1]; + assvos[0] = new AssVO(); + assvos[0].setPk_Checktype(JsonUtils.getStrNULL(qryObjMap.get("pk_checktype"))); + assvos[0].setCheckvaluename("ALL"); + assvos[0].setChecktypename(GLMultiLangUtil.getMultiName(AccAssGL.getAccAssItemVOByPk(assvos[0].getPk_Checktype()))); + assvos[0].setChecktypecode(AccAssGL.getAccAssItemVOByPk(assvos[0].getPk_Checktype()).getCode()); + assvos[0].setM_classid(classid); + glQueryObj.setValueRange(assvos); + } + } + + glQueryObjs.add(glQueryObj); + } + } + + qryVO.getFormatVO().setQryObjs((GLQueryObj[])glQueryObjs.toArray(new GLQueryObj[glQueryObjs.size()])); + } + } + + public void checkQryObjs(GlQueryVO qryVO) throws BusinessException { + if (qryVO.getDate() == null) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000185")); + } else { + GlQryFormatVO qryFormatVo = qryVO.getFormatVO(); + int iKmAmount = 0; + + for(GLQueryObj qryObj : qryFormatVo.getQryObjs()) { + if (!StrTools.isEmptyStr(qryObj.getType())) { + if (qryObj.getType().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000031"))) { + ++iKmAmount; + } else if (qryObj.getValueRange()[0] != null && qryObj.getValueRange()[0].getCheckvaluename() != null && qryObj.getValueRange()[0].getCheckvaluename().equals("ALL") && qryObj.getIncludeSub()) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000187")); + } + } + } + + if (iKmAmount == 0) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000188")); + } else if (iKmAmount > 1) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000189")); + } else { + GLQueryObj[] aQryObjs = qryFormatVo.getQryObjs(); + boolean blnIsChild = false; + boolean blnAssIsChild = false; + String sCorpTmp = AccountBookUtil.getPk_orgByAccountBookPk(qryVO.getBaseAccountingbook()); + boolean blnSubjAccIsInBody = false; + boolean blnAssIsInBody = false; + int iBodyItemCount = 0; + + for(int i = 0; i < aQryObjs.length; ++i) { + if ((!blnIsChild || !blnAssIsChild) && !aQryObjs[i].getHeadEle()) { + if (aQryObjs[i].getType().equals(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000031"))) { + if (!aQryObjs[i].getHeadEle()) { + blnSubjAccIsInBody = true; + ++iBodyItemCount; + } + + if (aQryObjs[i].getValueRange() != null && aQryObjs[i].getValueRange()[0].getCheckvaluecode().contains(",")) { + String[] acccode = aQryObjs[i].getValueRange()[0].getCheckvaluecode().split(","); + + for(int j = 0; j < acccode.length; ++j) { + for(int k = 0; k < acccode.length; ++k) { + if (j != k && acccode[j].startsWith(acccode[k])) { + blnIsChild = true; + break; + } + } + } + } else { + for(int j = 0; j < aQryObjs[i].getValueRange().length; ++j) { + for(int k = 0; k < aQryObjs[i].getValueRange().length; ++k) { + if (j != k && aQryObjs[i].getValueRange()[j].getCheckvaluecode().startsWith(aQryObjs[i].getValueRange()[k].getCheckvaluecode())) { + blnIsChild = true; + break; + } + } + } + } + } else { + if (!aQryObjs[i].getHeadEle()) { + ++iBodyItemCount; + blnAssIsInBody = true; + } + + for(int j = 0; aQryObjs[i].getValueRange() != null && j < aQryObjs[i].getValueRange().length; ++j) { + if (aQryObjs[i].getIncludeSub()) { + try { + AssVO[] assVos = CBalanceAssTool.getSubDocsTackle(aQryObjs[i].getValueRange()[j], sCorpTmp); + + for(int f = 0; f < assVos.length; ++f) { + for(int k = 0; k < aQryObjs[i].getValueRange().length; ++k) { + if (assVos[f].getPk_Checkvalue().equals(aQryObjs[i].getValueRange()[k].getPk_Checkvalue())) { + blnAssIsChild = true; + break; + } + } + } + } catch (Exception e) { + throw new BusinessException(e.getMessage(), e); + } + } + } + } + } + } + + if (blnIsChild && (!blnSubjAccIsInBody || iBodyItemCount != 1)) { + qryFormatVo.setAssBalIncludeChildSubj(true); + blnIsChild = false; + } + + if (blnIsChild) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000190")); + } else { + qryFormatVo.setIsSubjAccIncldFatherSon(false); + if (blnAssIsChild) { + if (!blnAssIsInBody || iBodyItemCount != 1 || qryFormatVo.getCorpDispLocation() == 0 && qryVO.getpk_accountingbook().length > 1) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000191")); + } + + qryFormatVo.setIsAssIncldFatherSon(true); + } + + if (aQryObjs.length < 2) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000194")); + } else { + UFDouble from = qryVO.getFormatVO().getBalanceRangeFrom(); + UFDouble to = qryVO.getFormatVO().getBalanceRangeTo(); + if (from == null) { + from = UFDouble.ZERO_DBL; + } + + if (to == null) { + to = UFDouble.ZERO_DBL; + } + + if (from.compareTo(to) > 0) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20023030", "UPP20023030-000195")); + } + } + } + } + } + } + + private boolean isExistsMaterial(GlQueryVO qryVO) { + for(GLQueryObj qryObj : qryVO.getFormatVO().getQryObjs()) { + if (qryObj.getValueRange() != null && qryObj.getValueRange().length > 0 && "eae040f4-3c88-413d-abc9-b15774463d46".equals(qryObj.getValueRange()[0].getM_classid())) { + return true; + } + } + + return false; + } + + private Map getMaterialMeasdoc(DetailBSVO[] detailBSVOs) throws Exception { + Map map = new HashMap(); + Set pk_material = new HashSet(); + + for(DetailBSVO vo : detailBSVOs) { + String materialPK = this.getMaterialPK(vo); + if (!StrTools.isEmptyStr(materialPK)) { + pk_material.add(materialPK); + } + } + + if (pk_material.size() > 0) { + MaterialVO[] materialVOs = (MaterialVO[])BDCacheQueryUtil.queryVOsByIDs(MaterialVO.class, "pk_material", (String[])pk_material.toArray(new String[pk_material.size()]), new String[]{"pk_measdoc"}); + if (materialVOs != null && materialVOs.length > 0) { + for(MaterialVO materialVO : materialVOs) { + if (materialVO != null) { + map.put(materialVO.getPk_material(), materialVO.getPk_measdoc()); + } + } + } + } + + return map; + } + + private String getMaterialPK(DetailBSVO vo) throws Exception { + AssVO[] assvos = (AssVO[])vo.getValue(60); + if (assvos != null) { + for(AssVO assvo : assvos) { + if ("eae040f4-3c88-413d-abc9-b15774463d46".equals(assvo.getM_classid())) { + return assvo.getPk_Checkvalue(); + } + } + } + + return null; + } +}