From 4be53545da60a81effcf95ea458fc1f3b97347b2 Mon Sep 17 00:00:00 2001 From: mzr <1562242162@qq.com> Date: Sun, 9 Mar 2025 18:36:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=80=E6=9D=A5=E6=A0=B8=E9=94=80=E5=A4=84?= =?UTF-8?q?=E7=90=86-=E4=B8=BA=E5=80=9F=E6=96=B9=E5=92=8C=E8=B4=B7?= =?UTF-8?q?=E6=96=B9=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E5=B8=81=E7=A7=8D?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lightgl/verify/VerifyWebServiceImpl.java | 789 ++++++++++++++++++ 1 file changed, 789 insertions(+) create mode 100644 gl/src/private/nccloud/pubimpl/gl/lightgl/verify/VerifyWebServiceImpl.java diff --git a/gl/src/private/nccloud/pubimpl/gl/lightgl/verify/VerifyWebServiceImpl.java b/gl/src/private/nccloud/pubimpl/gl/lightgl/verify/VerifyWebServiceImpl.java new file mode 100644 index 0000000..f3c509d --- /dev/null +++ b/gl/src/private/nccloud/pubimpl/gl/lightgl/verify/VerifyWebServiceImpl.java @@ -0,0 +1,789 @@ +/*336L/tOhma6VzKP3mxHcEkAXkBRqJpb8XsF1elPHMJ2c/NcdtKK6mxZmzuL3bjcU*/ +package nccloud.pubimpl.gl.lightgl.verify; + +import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.InvocationInfoProxy; +import nc.bs.framework.common.NCLocator; +import nc.bs.gl.voucher.DetailServiceBO; +import nc.gl.utils.GLMultiLangUtil; +import nc.itf.gl.pub.IFreevaluePub; +import nc.itf.gl.voucher.IVoucher; +import nc.jdbc.framework.processor.MapListProcessor; +import nc.md.MDBaseQueryFacade; +import nc.md.model.IBean; +import nc.md.model.MetaDataException; +import nc.vo.bd.accassitem.AccAssItemVO; +import nc.vo.bd.accessor.IBDData; +import nc.vo.fipub.freevalue.Module; +import nc.vo.fipub.freevalue.accountbook.proxy.AccountBookUtil; +import nc.vo.fipub.timecontrol.TimeUnit; +import nc.vo.fipub.utils.AccountCalendarUtils; +import nc.vo.fipub.utils.StrTools; +import nc.vo.gateway60.accountbook.GlOrgUtils; +import nc.vo.gateway60.itfs.AccountUtilGL; +import nc.vo.gateway60.itfs.Currency; +import nc.vo.gateway60.pub.GlBusinessException; +import nc.vo.gl.ageanalysis.AgeAnalysisVO; +import nc.vo.gl.pubvoucher.DetailVO; +import nc.vo.gl.pubvoucher.VoucherVO; +import nc.vo.gl.verbalance.BalanceFilterVO; +import nc.vo.gl.verbalance.VerBalanceVO; +import nc.vo.gl.verbalance.VerDetailFilterVO; +import nc.vo.glcom.ass.AssVO; +import nc.vo.glcom.tools.GLPubProxy; +import nc.vo.glrp.pub.ParaVO; +import nc.vo.glrp.pub.VerifyMsg; +import nc.vo.glrp.verify.FilterCondVO; +import nc.vo.glrp.verify.GlVerifyDisplogVO; +import nc.vo.glrp.verify.VerifyDetailVO; +import nc.vo.glrp.verifyobj.ObjQryVO; +import nc.vo.glrp.verifyobj.VerifyObjHeaderVO; +import nc.vo.glrp.verifyobj.VerifyObjItemVO; +import nc.vo.glrp.verifyobj.VerifyObjVO; +import nc.vo.jcom.lang.StringUtil; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pub.lang.UFDate; +import nccloud.baseapp.core.log.NCCForUAPLogger; +import nccloud.dto.gl.verify.VerifyDetailWebVO; +import nccloud.dto.gl.verify.VerifyDisplogWebVO; +import nccloud.dto.gl.verify.VerifyInfoWebVO; +import nccloud.pub.gl.lightgl.IColumnInfo; +import nccloud.pubimpl.gl.account.AccountRepUtil; +import nccloud.pubitf.gl.lightgl.verify.IVerifyWebService; +import nccloud.pubitf.gl.lightgl.voucher.IVoucherWebQryService; + +import java.util.*; + +public class VerifyWebServiceImpl implements IVerifyWebService { + + public static int COLUMNNAME = 0; // 显示名称 + public static int COLUMNCODE = 1; // 显示编码 + public static int COLUMNALL = 2; // 显示编码+名称 + + public final static String PROPERTYID = "PROPERTYID"; + public final static String STARTUNIT = "STARTUNIT"; + public final static String ENDUNIT = "ENDUNIT"; + public final static String UNIT = "UNIT"; + public final static String DESCR = "DESCR"; + + @Override + public Map queryRtVerifyData(String pk_voucher, String pk_detail, String date) throws BusinessException { + Map resultMap = new HashMap(); + VoucherVO voucher = NCLocator.getInstance().lookup(IVoucher.class).findByPrimaryKey(pk_voucher); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook(voucher.getPk_accountingbook()); + + if (voucher != null) { + DetailVO rtdetail = null; + for (DetailVO detailvo : voucher.getDetails()) { + if (detailvo.getPrimaryKey().equals(pk_detail)) { + rtdetail = detailvo; + break; + } + } + if (rtdetail != null) { + Object[] bizzData = new DetailServiceBO().getRtVerifyData(rtdetail, verifyModel.getFilterVOEx(rtdetail, date)); + if (bizzData == null) + throw new BusinessException(nc.vo.glrp.pub.VerifyMsg.getMSG_CANNTVERIFY()); + else if (verifyModel.isDataLegal((VerifyDetailVO) bizzData[0], (VerifyObjVO) bizzData[1])) { + VerifyDetailVO verifyDetailVO = (VerifyDetailVO) bizzData[0]; + verifyModel.setVerifyDetailVO(verifyDetailVO); + resultMap = getReusltMap(rtdetail, verifyModel, bizzData, true); + } else { + throw new GlBusinessException(nc.vo.glrp.pub.VerifyMsg.getMSG_CANNTVERIFY()); + } + } else + throw new GlBusinessException(nc.vo.glrp.pub.VerifyMsg.getMSG_CANNTVERIFY()); + } + return resultMap; + } + + private Map getReusltMap(DetailVO detail, GlVerifyWebModel verifyModel, + Object[] bizzData, Boolean rtVerify) throws BusinessException, MetaDataException { + Map resultMap = new HashMap(); + nc.vo.glrp.com.verify.IVerifyVO[][] v = (nc.vo.glrp.com.verify.IVerifyVO[][]) bizzData[3]; + Map[][] webvo = new Map[][]{verifyModel.appendDetailInfo((VerifyDetailVO[]) v[0]), + verifyModel.appendDetailInfo((VerifyDetailVO[]) v[1])}; + VerifyObjVO verifyObjVO = (VerifyObjVO) bizzData[1]; + VerifyObjHeaderVO headvo = (VerifyObjHeaderVO) verifyObjVO.getParentVO(); + IBDData[] data = AccountUtilGL.getAccDocByPks(new String[]{headvo.getPk_accsubj()}, + (new UFDate(InvocationInfoProxy.getInstance().getBizDateTime())).toStdString()); + if (data != null && data.length > 0) { + headvo.setAccSubjCode(data[0].getCode()); + headvo.setAccSubjName(GLMultiLangUtil.getMultiName(AccountUtilGL.findByPrimaryKey(detail.getPk_accasoa()))); + } + FilterCondVO conVO = (FilterCondVO) bizzData[2]; + if (conVO.getAssvos() != null) { + AssVO[] assvos = conVO.getAssvos(); + for (AssVO assVO : assvos) { + IBean bean = MDBaseQueryFacade.getInstance().getBeanByID(assVO.getM_classid()); + String fullName = bean.getFullName(); + // 参照的refcode临时放入userdata + assVO.setUserData(fullName); + } + } + if (conVO.getCreditCond().getAssvos() != null) { + AssVO[] assvos = conVO.getCreditCond().getAssvos(); + for (AssVO assVO : assvos) { + IBean bean = MDBaseQueryFacade.getInstance().getBeanByID(assVO.getM_classid()); + String fullName = bean.getFullName(); + // 参照的refcode临时放入userdata + assVO.setUserData(fullName); + } + } + if (conVO.getDebitCond().getAssvos() != null) { + AssVO[] assvos = conVO.getDebitCond().getAssvos(); + for (AssVO assVO : assvos) { + IBean bean = MDBaseQueryFacade.getInstance().getBeanByID(assVO.getM_classid()); + String fullName = bean.getFullName(); + // 参照的refcode临时放入userdata + assVO.setUserData(fullName); + } + } + + if (rtVerify) { + Map condMap = new LinkedHashMap(); + condMap.put("pk_accountingbook", detail.getPk_accountingbook()); + condMap.put("accountingbookName", AccountBookUtil.getAccountingBookNameByPk(detail.getPk_accountingbook())); + condMap.put("pk_units", new String[]{detail.getPk_unit()}); + condMap.put("pk_unitName", GLMultiLangUtil.getMultiName(GlOrgUtils.getOrgByPk(detail.getPk_unit()))); + condMap.put("pk_accasoa", ((VerifyObjHeaderVO) verifyObjVO.getParentVO()).getPk_accsubj()); + condMap.put("accountName", ((VerifyObjHeaderVO) verifyObjVO.getParentVO()).getAccSubjName()); + + ParaVO paraVO = GLPubProxy.getRemoteVerifyobj().initEnvirment(detail.getPk_accountingbook()); + if (paraVO.getDateName().equalsIgnoreCase("VoucherDate")) { + condMap.put("dateType", "prepareddate"); + condMap.put("end_date", verifyModel.getVerifyDetailvo().getPrepareddate().toStdString()); + } else { + condMap.put("dateType", "Businessdate"); + condMap.put("end_date", verifyModel.getVerifyDetailvo().getBusinessdate().toStdString()); + } + condMap.put("cmbMnyType", VerifyMsg.getDISP_ORIGIN()); + String pk_currency = detail.getPk_currtype(); + condMap.put("pk_currency", pk_currency); + condMap.put("currName", GLMultiLangUtil.getMultiName(Currency.getCurrInfo(pk_currency))); + condMap.put("hasTally", "Y"); + condMap.put("pk_detail", detail.getPk_detail()); + + AccAssItemVO[] assItems = NCLocator.getInstance().lookup(IVoucherWebQryService.class).queryAssItemByAsoaPk( + ((VerifyObjHeaderVO) verifyObjVO.getParentVO()).getPk_accsubj(), + AccountCalendarUtils.getStdDate()); + Map accassMap = new HashMap(); + if (assItems != null && assItems.length > 0) { + for (AccAssItemVO accAssItemVO : assItems) { + accassMap.put(accAssItemVO.getPk_accassitem(), accAssItemVO); + } + } + AssVO[] assvos = detail.getAss(); + List> asslist = new ArrayList>(); + if (assvos != null && assvos.length > 0) { + for (AssVO vo : assvos) { + Map assMap = new HashMap(); + assMap.put("checktypecode", vo.getChecktypecode()); + assMap.put("checktypename", vo.getChecktypename()); + assMap.put("checkvaluecode", vo.getCheckvaluecode()); + assMap.put("checkvaluename", vo.getCheckvaluename()); + assMap.put("innerCode", vo.getInnerCode()); + assMap.put("note1", vo.getnote1()); + assMap.put("note2", vo.getnote2()); + assMap.put("pk_Checktype", vo.getPk_Checktype()); + assMap.put("pk_Checkvalue", vo.getPk_Checkvalue()); + assMap.put("m_metaClassid", vo.getM_metaClassid()); + assMap.put("userData", vo.getUserData()); + assMap.put("m_classid", vo.getM_classid()); + assMap.put("refnodename", accassMap.get(vo.getPk_Checktype()) == null ? null : accassMap.get(vo.getPk_Checktype()).getRefnodename()); + asslist.add(assMap); + } + } + condMap.put("ass", asslist.toArray()); + if (detail.getDirection()) { + condMap.put("cmbDirect", "1"); + } else { + condMap.put("cmbDirect", "0"); + } + condMap.put("type", nc.vo.glrp.pub.VerifyMsg.TYPE_TIMELY); + resultMap.put("conVO", condMap); + } + Map accountingbookMap = new HashMap(); + accountingbookMap.put("name", AccountBookUtil.getAccountingBookNameByPk(detail.getPk_accountingbook())); + accountingbookMap.put("pk_accountingbook", detail.getPk_accountingbook()); + resultMap.put("accountingBook", accountingbookMap); + resultMap.put("verifyObj", bizzData[1]); + resultMap.put("debit", webvo[0]); + resultMap.put("credit", webvo[1]); + return resultMap; + } + + @Override + public Map queryVerifyDatas(Map varMap) throws BusinessException { + Map resultMap = new HashMap(); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook((String) varMap.get("pk_accountingbook")); + verifyModel.checkQryCond(varMap); + verifyModel.onQuery(verifyModel.getFilterVO(varMap)); + Map>[] creditInfo = verifyModel.getCreditVerifyWebInfo(); + Map>[] debitInfo = verifyModel.getDebitVerifyWebInfo(); + setCurrTypeNameForVerify(creditInfo, debitInfo); + resultMap.put("credit", creditInfo); + resultMap.put("debit", debitInfo); + return resultMap; + } + + @Override + public Map onVerify(VerifyInfoWebVO verifyInfoWebVO) throws BusinessException { + Map resultMap = new HashMap(); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook((String) verifyInfoWebVO.getCondition().get("pk_accountingbook")); + verifyModel.checkVerifyObj(verifyInfoWebVO.getCondition()); + VerifyDetailVO[] creditVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getCredit().toArray(new VerifyDetailWebVO[0])); + VerifyDetailVO[] debitVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getDebit().toArray(new VerifyDetailWebVO[0])); + verifyModel.setCreditVerify(creditVerifyVOs); + verifyModel.setDebitVerify(debitVerifyVOs); + verifyModel.onVerify(); + verifyModel.onQuery(verifyModel.getFilterVO(verifyInfoWebVO.getCondition())); + resultMap.put("credit", verifyModel.getCreditVerifyWebInfo()); + resultMap.put("debit", verifyModel.getDebitVerifyWebInfo()); + return resultMap; + } + + @Override + public Map onAutoVerify(VerifyInfoWebVO verifyInfoWebVO) throws BusinessException { + Map resultMap = new HashMap(); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook((String) verifyInfoWebVO.getCondition().get("pk_accountingbook")); + verifyModel.checkVerifyObj(verifyInfoWebVO.getCondition()); + VerifyDetailVO[] creditVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getCredit().toArray(new VerifyDetailWebVO[0])); + VerifyDetailVO[] debitVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getDebit().toArray(new VerifyDetailWebVO[0])); + verifyModel.setCreditVerify(creditVerifyVOs); + verifyModel.setDebitVerify(debitVerifyVOs); + verifyModel.setVerifyStandardVO(verifyModel.getStandardVO(verifyInfoWebVO.getStandard())); + verifyModel.onAutoVerify(); + verifyModel.onQuery(verifyModel.getFilterVO(verifyInfoWebVO.getCondition())); + resultMap.put("credit", verifyModel.getCreditVerifyWebInfo()); + resultMap.put("debit", verifyModel.getDebitVerifyWebInfo()); + return resultMap; + } + + @Override + public Map queryHistoryDatas(Map varMap) throws BusinessException { + Map resultMap = new HashMap(); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook((String) varMap.get("pk_accountingbook")); + verifyModel.checkHistoryCondition(varMap); + verifyModel.onQueryHisRecord(verifyModel.getCondVO(varMap)); + verifyModel.setSumLogs(verifyModel.appendLogInfo(verifyModel.getHistroySumData())); + verifyModel.setDetailLogsWeb(verifyModel.appendLogInfo(verifyModel.getHistroyData())); + resultMap.put("historySumData", verifyModel.getSumLogs()); + resultMap.put("historyData", verifyModel.getDetailLogsWeb()); + return resultMap; + } + + @Override + public Map unVerify(VerifyInfoWebVO verifyInfoWebVO) throws BusinessException { + Map resultMap = new HashMap(); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook((String) verifyInfoWebVO.getCondition().get("pk_accountingbook")); + VerifyDisplogWebVO[] displogWebVOs = verifyInfoWebVO.getDisplogVO().toArray(new VerifyDisplogWebVO[0]); + GlVerifyDisplogVO[] verifyDisplogVOs = verifyModel.transferWebToDispLogVO(displogWebVOs); + verifyModel.setHistroyData(verifyDisplogVOs); + verifyModel.unVerify(); + verifyModel.onQueryHisRecord(verifyModel.getCondVO(verifyInfoWebVO.getCondition())); + verifyModel.setSumLogs(verifyModel.appendLogInfo(verifyModel.getHistroySumData())); + verifyModel.setDetailLogsWeb(verifyModel.appendLogInfo(verifyModel.getHistroyData())); + resultMap.put("historySumData", verifyModel.getSumLogs()); + resultMap.put("historyData", verifyModel.getDetailLogsWeb()); + return resultMap; + } + + @Override + public Map onRedBlue(VerifyInfoWebVO verifyInfoWebVO) + throws BusinessException { + Map resultMap = new HashMap(); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook((String) verifyInfoWebVO.getCondition().get("pk_accountingbook")); + VerifyDetailVO[] creditVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getCredit().toArray(new VerifyDetailWebVO[0])); + VerifyDetailVO[] debitVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getDebit().toArray(new VerifyDetailWebVO[0])); + verifyModel.setCreditVerify(creditVerifyVOs); + verifyModel.setDebitVerify(debitVerifyVOs); + verifyModel.onRedBlue(verifyInfoWebVO.getCondition()); + verifyModel.onQuery(verifyModel.getFilterVO(verifyInfoWebVO.getCondition())); + resultMap.put("credit", verifyModel.getCreditVerifyWebInfo()); + resultMap.put("debit", verifyModel.getDebitVerifyWebInfo()); + return resultMap; + } + + @Override + public Map onAutoRedBlue(VerifyInfoWebVO verifyInfoWebVO) + throws BusinessException { + Map resultMap = new HashMap(); + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook((String) verifyInfoWebVO.getCondition().get("pk_accountingbook")); + verifyModel.checkVerifyObj(verifyInfoWebVO.getCondition()); + VerifyDetailVO[] creditVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getCredit().toArray(new VerifyDetailWebVO[0])); + VerifyDetailVO[] debitVerifyVOs = verifyModel.transferWebToVO(verifyInfoWebVO.getDebit().toArray(new VerifyDetailWebVO[0])); + verifyModel.setCreditVerify(creditVerifyVOs); + verifyModel.setDebitVerify(debitVerifyVOs); + verifyModel.setVerifyStandardVO(verifyModel.getStandardVO(verifyInfoWebVO.getStandard())); + if (debitVerifyVOs != null && debitVerifyVOs.length > 0) + verifyModel.onAutoRedBlue(true); + if (creditVerifyVOs != null && creditVerifyVOs.length > 0) + verifyModel.onAutoRedBlue(false); + verifyModel.onQuery(verifyModel.getFilterVO(verifyInfoWebVO.getCondition())); + resultMap.put("credit", verifyModel.getCreditVerifyWebInfo()); + resultMap.put("debit", verifyModel.getDebitVerifyWebInfo()); + return resultMap; + } + + @SuppressWarnings("unchecked") + @Override + public Map verBalanceQuery(Map varMap) throws BusinessException { + Map resultMap = new HashMap(); + VerBalanceWebModel balanceModel = new VerBalanceWebModel(); + String pk_accountingbook = (String) varMap.get("pk_accountingbook"); + String pagecode = (String) varMap.get("pagecode"); + balanceModel.setPk_accountingbook(pk_accountingbook); + BalanceFilterVO balanceFilterVO = balanceModel.getFilterVO(varMap); + balanceModel.getHeadData(balanceFilterVO, resultMap); + Map[] balanceVOs = null; + if (balanceFilterVO.getDirect() == BalanceFilterVO.DIRECTION_BOTH) { + balanceVOs = balanceModel.onQueryTwo(balanceFilterVO); + } else { + balanceVOs = balanceModel.onQuery(balanceFilterVO); + } + resultMap.put("balanceVO", balanceVOs); + if (balanceVOs != null) { + for (Map verBalanceWebVO : balanceVOs) { + verBalanceWebVO.put("link", new HashMap()); + if (verBalanceWebVO.get("m_Pk_verifydetail") != null) { + ((Map) verBalanceWebVO.get("link")).put("m_Pk_verifydetail", verBalanceWebVO.get("m_Pk_verifydetail")); + verBalanceWebVO.remove("m_Pk_verifydetail"); + } + verBalanceWebVO.remove("m_Flag"); + verBalanceWebVO.remove("assid"); + verBalanceWebVO.remove("m_VouchTypepk"); + verBalanceWebVO.remove("m_Balancecreditamount"); + verBalanceWebVO.remove("m_Balancecreditquantity"); + verBalanceWebVO.remove("m_Balancelocalcreditamount"); + verBalanceWebVO.remove("m_Balancedebitamount"); + verBalanceWebVO.remove("m_Balancedebitquantity"); + verBalanceWebVO.remove("m_Balancelocaldebitamount"); + verBalanceWebVO.remove("m_Businessdate"); + if (verBalanceWebVO.get("m_Creditamount") != null) { + ((Map) verBalanceWebVO.get("link")).put("m_Creditamount", verBalanceWebVO.get("m_Creditamount")); + verBalanceWebVO.remove("m_Creditamount"); + } + if (verBalanceWebVO.get("m_Debitamount") != null) { + ((Map) verBalanceWebVO.get("link")).put("m_Debitamount", verBalanceWebVO.get("m_Debitamount")); + verBalanceWebVO.remove("m_Debitamount"); + } + if (verBalanceWebVO.get("m_Explanation") != null) + ((Map) verBalanceWebVO.get("link")).put("m_Explanation", verBalanceWebVO.get("m_Explanation")); + if (verBalanceWebVO.get("m_Localcreditamount") != null) { + ((Map) verBalanceWebVO.get("link")).put("m_Localcreditamount", verBalanceWebVO.get("m_Localcreditamount")); + verBalanceWebVO.remove("m_Localcreditamount"); + } + if (verBalanceWebVO.get("m_Localdebitamount") != null) { + ((Map) verBalanceWebVO.get("link")).put("m_Localdebitamount", verBalanceWebVO.get("m_Localdebitamount")); + verBalanceWebVO.remove("m_Localdebitamount"); + } + verBalanceWebVO.remove("groupcreditamount"); + verBalanceWebVO.remove("groupdebitamount"); + verBalanceWebVO.remove("globalcreditamount"); + verBalanceWebVO.remove("globaldebitamount"); + if (verBalanceWebVO.get("m_Pk_accsubj") != null) { + ((Map) verBalanceWebVO.get("link")).put("m_Pk_accsubj", verBalanceWebVO.get("m_Pk_accsubj")); + verBalanceWebVO.remove("m_Pk_accsubj"); + } + verBalanceWebVO.remove("m_Pk_corp"); + verBalanceWebVO.remove("m_Pk_currtype"); + verBalanceWebVO.remove("m_Pk_detail"); + verBalanceWebVO.remove("m_Pk_manager"); + verBalanceWebVO.remove("m_Pk_prepared"); + verBalanceWebVO.remove("m_Pk_sob"); + verBalanceWebVO.remove("m_Pk_voucher"); + verBalanceWebVO.remove("m_Pk_vouchertype"); + verBalanceWebVO.remove("m_Prepareddate"); + verBalanceWebVO.remove("m_userData"); + verBalanceWebVO.remove("m_Balanceamount"); + verBalanceWebVO.remove("m_Balancequantity"); + verBalanceWebVO.remove("m_Balancelocalamount"); + verBalanceWebVO.remove("m_Balancebalanceamount"); + verBalanceWebVO.remove("m_Balancebalancequantity"); + verBalanceWebVO.remove("m_Balancelocalbalanceamount"); + verBalanceWebVO.remove("pk_unit"); + verBalanceWebVO.remove("pk_unit_v"); + } + } + Map columnMap = balanceModel.getColumnName(balanceFilterVO, VerifyWebServiceImpl.COLUMNNAME); + Map column1Map = balanceModel.getColumnName(balanceFilterVO, VerifyWebServiceImpl.COLUMNCODE); + Map column2Map = balanceModel.getColumnName(balanceFilterVO, VerifyWebServiceImpl.COLUMNALL); + if (!StrTools.isEmptyStr(pagecode)) { + AccountRepUtil.resetColumnWidth(columnMap.values(), pagecode); + AccountRepUtil.resetColumnWidth(column1Map.values(), pagecode); + AccountRepUtil.resetColumnWidth(column2Map.values(), pagecode); + } + resultMap.put("columnInfo", columnMap.values()); + resultMap.put("columnInfo1", column1Map.values()); + resultMap.put("columnInfo2", column2Map.values()); + return resultMap; + } + + @Override + public Map verDetailQuery(Map varMap) throws BusinessException { + Map resultMap = new HashMap(); + VerDetailWebModel detailModel = new VerDetailWebModel(); + String pk_accountingbook = (String) varMap.get("pk_accountingbook"); + String pagecode = (String) varMap.get("pagecode"); + detailModel.setPk_accountingbook(pk_accountingbook); + VerDetailFilterVO detailFilterVO = detailModel.getFilterVO(varMap); + detailModel.getHeadData(detailFilterVO, resultMap); + Map[] detailVOs = null; + detailVOs = detailModel.onQuery(detailFilterVO); + resultMap.put("detailVO", detailVOs); + Map columnMap = detailModel.getColumnName(detailFilterVO, VerifyWebServiceImpl.COLUMNNAME); + Map column1Map = detailModel.getColumnName(detailFilterVO, VerifyWebServiceImpl.COLUMNCODE); + Map column2Map = detailModel.getColumnName(detailFilterVO, VerifyWebServiceImpl.COLUMNALL); + if (!StrTools.isEmptyStr(pagecode)) { + AccountRepUtil.resetColumnWidth(columnMap.values(), pagecode); + AccountRepUtil.resetColumnWidth(column1Map.values(), pagecode); + AccountRepUtil.resetColumnWidth(column2Map.values(), pagecode); + } + resultMap.put("columnInfo", columnMap.values()); + resultMap.put("columnInfo1", column1Map.values()); + resultMap.put("columnInfo2", column2Map.values()); + return resultMap; + } + + @Override + public Map verDetailLinkQuery(VerifyInfoWebVO verifyInfoWebVO) throws BusinessException { + VerBalanceVO verBalanceVO = verifyInfoWebVO.getVerBalanceVO(); + if (verBalanceVO.getExplanation().indexOf( + NCLangRes4VoTransl.getNCLangRes().getStrByID("2002365804", "UPP2002365804-000046")/* + * @res "小计" + */) >= 0 + || verBalanceVO.getExplanation().equals( + NCLangRes4VoTransl.getNCLangRes().getStrByID("2002365804", "UPP2002365804-000047")/* + * @res "科目小计" + */) + || verBalanceVO.getExplanation().equals( + NCLangRes4VoTransl.getNCLangRes().getStrByID("2002365804", "UPP2002365804-000048")/* + * @res "总计" + */)) { + return null; + } + + Map resultMap = new HashMap(); + VerBalanceWebModel balanceModel = new VerBalanceWebModel(); + String pk_accountingbook = (String) verifyInfoWebVO.getCondition().get("pk_accountingbook"); + balanceModel.setPk_accountingbook(pk_accountingbook); + BalanceFilterVO balanceFilterVO = balanceModel.getFilterVO(verifyInfoWebVO.getCondition()); + VerDetailFilterVO detailFilterVO = balanceModel.transferVerDetailFilterVO(balanceFilterVO, verBalanceVO); + + VerDetailWebModel detailModel = new VerDetailWebModel(); + detailModel.setPk_accountingbook(pk_accountingbook); + detailModel.getHeadData(detailFilterVO, resultMap); + Map[] detailVOs = detailModel.onQueryDetail(detailFilterVO, verBalanceVO.getPk_verifydetail()); + resultMap.put("detailVO", detailVOs); + Map columnMap = detailModel.getColumnName(detailFilterVO, VerifyWebServiceImpl.COLUMNNAME); + Map column1Map = detailModel.getColumnName(detailFilterVO, VerifyWebServiceImpl.COLUMNCODE); + Map column2Map = detailModel.getColumnName(detailFilterVO, VerifyWebServiceImpl.COLUMNALL); + resultMap.put("columnInfo", columnMap.values()); + resultMap.put("columnInfo1", column1Map.values()); + resultMap.put("columnInfo2", column2Map.values()); + return resultMap; + } + + @SuppressWarnings("rawtypes") + @Override + public Map onQuery(Map varMap) throws BusinessException { + Map resultMap = new HashMap(); + AccountAgeAnalysisWebModel accountAgeModel = new AccountAgeAnalysisWebModel(); + String pagecode = (String) varMap.get("pagecode"); + Object[] objPk_accountbooks = ((List) varMap.get("pk_accountingbook")).toArray(); + String pk_accountingbook = (String) objPk_accountbooks[0]; + accountAgeModel.setPk_accountingbook(pk_accountingbook); + CircularlyAccessibleValueObject[] vo = accountAgeModel.onQuery(false, varMap); + accountAgeModel.getHeadData(resultMap); + resultMap.put("totalVO", accountAgeModel.transferDynamicData(vo)); + if (vo != null && vo.length > 0) { + Map columnMap = accountAgeModel.getColumnName(((AgeAnalysisVO) vo[0]).getColumnCodes(), VerifyWebServiceImpl.COLUMNNAME); + Map column1Map = accountAgeModel.getColumnName(((AgeAnalysisVO) vo[0]).getColumnCodes(), VerifyWebServiceImpl.COLUMNCODE); + Map column2Map = accountAgeModel.getColumnName(((AgeAnalysisVO) vo[0]).getColumnCodes(), VerifyWebServiceImpl.COLUMNALL); + if (!StrTools.isEmptyStr(pagecode)) { + AccountRepUtil.resetColumnWidth(columnMap.values(), pagecode); + AccountRepUtil.resetColumnWidth(column1Map.values(), pagecode); + AccountRepUtil.resetColumnWidth(column2Map.values(), pagecode); + } + resultMap.put("columnInfo", columnMap.values()); + resultMap.put("columnInfo1", column1Map.values()); + resultMap.put("columnInfo2", column2Map.values()); + } + return resultMap; + } + + @Override + public Map onDetailed(Map varMap) throws BusinessException { + Map resultMap = new HashMap(); + AccountAgeAnalysisWebModel accountAgeModel = new AccountAgeAnalysisWebModel(); + Object[] objPk_accountbooks = ((List) varMap.get("pk_accountingbook")).toArray(); + String pk_accountingbook = (String) objPk_accountbooks[0]; + accountAgeModel.setPk_accountingbook(pk_accountingbook); + CircularlyAccessibleValueObject[] vo = accountAgeModel.onDetailed(varMap); + accountAgeModel.getHeadData(resultMap); + resultMap.put("detailVO", accountAgeModel.transferDynamicData(vo)); + if (vo != null && vo.length > 0) { + Map columnMap = accountAgeModel.getColumnName(((AgeAnalysisVO) vo[0]).getColumnCodes(), VerifyWebServiceImpl.COLUMNNAME); + Map column1Map = accountAgeModel.getColumnName(((AgeAnalysisVO) vo[0]).getColumnCodes(), VerifyWebServiceImpl.COLUMNCODE); + Map column2Map = accountAgeModel.getColumnName(((AgeAnalysisVO) vo[0]).getColumnCodes(), VerifyWebServiceImpl.COLUMNALL); + resultMap.put("columnInfo", columnMap.values()); + resultMap.put("columnInfo1", column1Map.values()); + resultMap.put("columnInfo2", column2Map.values()); + } + return resultMap; + } + + @Override + public Map refVerify(DetailVO selDetail, String busidate) throws BusinessException { + Map reusltMap = new HashMap(); +// DetailVO selDetail = voucher.getDetail(selectIndex); + if (selDetail.getPk_accasoa() == null) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("20021005", + "UPT2002100573-900063")/* + * @ res "当前分录科目尚未选择,不能进行参照核销!" + */); + } + if (selDetail.getIsmatched() != null && selDetail.getIsmatched().equals(UFBoolean.TRUE)) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("20021005", + "UPT2002100573-900070")/* + * @ res "当前分录已有后续业务,不能进行参照核销!" + */); + } + String pks[] = AccountUtilGL.findAccountPathToRootPks(selDetail.getPk_accountingbook(), selDetail.getPk_accasoa(), selDetail.getPrepareddate().toString()); + ArrayList l = new ArrayList(); + l.add(selDetail.getPk_accasoa()); + if (pks != null) + for (String pk : pks) + l.add(pk); + DetailVO detail = (DetailVO) selDetail.clone(); + ObjQryVO qryVO = new ObjQryVO(); + qryVO.setPk_glorgbook(selDetail.getPk_accountingbook()); + qryVO.setPk_accSubjs(l.toArray(new String[0])); + VerifyObjVO verifyObj = GLPubProxy.getRemoteVerifyobj().findObjbyCond(qryVO); + if (verifyObj == null || verifyObj.getParentVO() == null) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("20021005", + "UPT2002100573-900064")/* @res"当前分录科目不是核销对象,不能进行参照核销!" */); + } + + if (!StringUtil.isEmptyWithTrim(detail.getAssid())) { + String assid = detail.getAssid(); + AssVO[] assvos = NCLocator.getInstance().lookup(IFreevaluePub.class).queryAssvosByid(assid, Module.GL); + detail.setAss(assvos); + } + + VerifyObjHeaderVO voHead = (VerifyObjHeaderVO) verifyObj.getParentVO(); + if (voHead.getBcontrol().booleanValue()) { /* 严格按照辅助核算控制 */ + VerifyObjItemVO[] items = (VerifyObjItemVO[]) verifyObj.getChildrenVO(); + if (items != null && items.length > 0) { + if (StringUtil.isEmptyWithTrim(detail.getAssid())) + throw new GlBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("20021005", + "UPT2002100573-900065")/* + * @res + * "当前分录科目的核销对象已设置辅助核算严格控制,请先录入辅助核算!" + */); + + for (AssVO assvo : detail.getAss()) { + if (assvo.getPk_Checkvalue() == null) + assvo.setPk_Checkvalue("~"); + } + // 下面代码处理多个辅助核算中的一部分严格控制时,查询数据。 + List assvolist = new ArrayList(); + for (int i = 0; i < items.length; i++) { + for (AssVO ass : detail.getAss()) { + if (ass.getPk_Checktype().equals(items[i].getPk_subjass())) { + assvolist.add(ass); + } + } + } + detail.setAss(assvolist.toArray(new AssVO[0])); + } + } + + FilterCondVO voCond = new FilterCondVO(); + FilterCondVO debitCond = new FilterCondVO(); + FilterCondVO creditCond = new FilterCondVO(); + + creditCond.setPkuser(InvocationInfoProxy.getInstance().getUserId()); + creditCond.setPk_glorgbook(detail.getPk_accountingbook()); + creditCond.setPkSob(null); + creditCond.setLogonDate(new UFDate(busidate).asEnd().toString()); + creditCond.setCurPk(detail.getPk_currtype()); + + AssVO[] assvos = detail.getAss(); + if (assvos != null && assvos.length > 0) { + creditCond.setAssvos(assvos); + } else { + creditCond.setAssvos(null); + } + + creditCond.setBeginDate(null); + creditCond.setEndDate(new UFDate(busidate).asEnd().toString()); + creditCond.setDateType("Businessdate"); + creditCond.setMnyType("原币");/* -=notranslate=- */ + creditCond.setDigest(null); + creditCond.setVerifyNo(null); + creditCond.sethasTally(true); + + debitCond.setPkuser(InvocationInfoProxy.getInstance().getUserId()); + debitCond.setPk_glorgbook(detail.getPk_accountingbook()); + debitCond.setPkSob(null); + debitCond.setLogonDate(new UFDate(busidate).asEnd().toString()); + debitCond.setCurPk(detail.getPk_currtype()); + + if (assvos != null && assvos.length > 0) { + debitCond.setAssvos(assvos); + } else { + debitCond.setAssvos(null); + } + + debitCond.setBeginDate(null); + debitCond.setEndDate(new UFDate(busidate).asEnd().toString()); + debitCond.setDateType("Businessdate"); + debitCond.setMnyType("原币");/* -=notranslate=- */ + debitCond.setDigest(null); + debitCond.setVerifyNo(null); + debitCond.sethasTally(true); + voCond.setCreditCond(creditCond); + voCond.setDebitCond(debitCond); + VoucherVO voucher = new VoucherVO(); + voucher.setPk_voucher(detail.getPk_voucher()); + voucher.setPk_accountingbook(detail.getPk_accountingbook()); + voucher.setPrepareddate(detail.getPrepareddate()); + Object[] refVerifyData = new DetailServiceBO().getRefVerifyData(detail, voCond, voucher); + if (refVerifyData != null && refVerifyData.length > 0) { + GlVerifyWebModel verifyModel = new GlVerifyWebModel(); + verifyModel.setPk_accountingbook(detail.getPk_accountingbook()); + verifyModel.setRslt((FilterCondVO) refVerifyData[2], + (nc.vo.glrp.verify.VerifyDetailVO[][]) refVerifyData[3]); + + reusltMap = getReusltMap(detail, verifyModel, refVerifyData, false); + } + return reusltMap; + } + + @Override + public List queryBadAccountRate(String pk_accountAgePeriod) throws BusinessException { + List rslist = new ArrayList(); + StringBuffer sbSQL = new StringBuffer(); + sbSQL.append(" select propertyid,startunit,endunit,b.unit,descr from fipub_timecontrol_b pub_timecontrol_a" + + " join fipub_timecontrol b on b.pk_timectrl =pub_timecontrol_a.pk_timectrl where pub_timecontrol_a .pk_timectrl = '"); + sbSQL.append(pk_accountAgePeriod); + sbSQL.append("' and pub_timecontrol_a.dr = 0 order by pub_timecontrol_a.propertyid "); + nc.vo.pub.rs.MemoryResultSet accountPeriod = null; + try { + accountPeriod = GLPubProxy.getRemoteAccountAgeAnalysis().queryPeriod(sbSQL.toString()); + while (accountPeriod.next()) { + // startvalue + Object objStart = accountPeriod.getInt(STARTUNIT); + // endvalue + Object objEnd = accountPeriod.getInt(ENDUNIT); + // 是年、月、日 + Object objUnit = accountPeriod.getInt(UNIT); + // 账龄区间描述 + Object objDescr = accountPeriod.getString(DESCR); + if (StrTools.isEmptyStr((String) objDescr)) { + if (objEnd == null || Integer.parseInt(objEnd.toString()) == 0) { + if (objDescr == null) { + if (objUnit != null && objUnit == TimeUnit.valueOfInt(TimeUnit.DAY)) { + objDescr = objStart.toString() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("subjverify_0", "02002004-0001")/*@res "天以上"*/; + } else if (objUnit != null && objUnit == TimeUnit.valueOfInt(TimeUnit.MONTH)) { + objDescr = objStart.toString() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("subjverify_0", "02002004-0002")/*@res "月以上"*/; + } else { + objDescr = objStart.toString() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("subjverify_0", "02002004-0003")/*@res "年以上"*/; + } + } + } else { + if (objUnit != null && objUnit == TimeUnit.valueOfInt(TimeUnit.DAY)) { + objDescr = objStart.toString() + "-" + objEnd.toString() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("subjverify_0", "02002004-0004")/*@res "天"*/; + } else if (objUnit != null && objUnit == TimeUnit.valueOfInt(TimeUnit.MONTH)) { + objDescr = objStart.toString() + "-" + objEnd.toString() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0002494")/*@res "月"*/; + } else { + objDescr = objStart.toString() + "-" + objEnd.toString() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0001787")/*@res "年"*/; + } + } + } + rslist.add(objDescr); + } + } catch (Exception e) { + throw new BusinessException(e); + } + return rslist; + } + + /** + * 为借方和贷方列表增加币种字段 + * + * @param creditInfo + * @param creditInfo + */ + private void setCurrTypeNameForVerify(Map>[] creditInfo, Map>[] debitInfo) { + Map resMap = new HashMap<>(); + Set pk_currtypes = new HashSet<>(); + try { + // 提取币种主键 + processCurrencyTypes(creditInfo, pk_currtypes); + processCurrencyTypes(debitInfo, pk_currtypes); + + // 查询币种名称 + String pk_currtypeStr = String.join("','", pk_currtypes); + // NCCForUAPLogger.debug("pk_currtypeStr:" + pk_currtypeStr); + String sql = "select pk_currtype, name from bd_currtype where pk_currtype in ('" + pk_currtypeStr + "') and dr = 0"; + List results = (List) new BaseDAO().executeQuery(sql, new MapListProcessor()); + + for (Map result : results) { + String pk_currtype = result.getOrDefault("pk_currtype", "") + ""; + String name = result.getOrDefault("name", "") + ""; + if (pk_currtype.isEmpty() || name.isEmpty()) { + continue; + } + resMap.put(pk_currtype, name); + } + + // 设置币种名称 + setCurrencyNameInArr(creditInfo, resMap); + setCurrencyNameInArr(debitInfo, resMap); + } catch (Exception e) { + NCCForUAPLogger.debug("setCurrTypeNameForVerify-exp:" + e.getMessage()); + throw new RuntimeException(e); + } + } + + private void processCurrencyTypes(Map>[] infoArray, Set pk_currtypes) { + for (Map> map : infoArray) { + Map currtypeMap = map.get("m_pk_currtype"); + // NCCForUAPLogger.debug("infoArray-m_pk_currtype= " + currtypeMap); + if (!"".equals(currtypeMap.getOrDefault("value", ""))) { + String pk_currtype = currtypeMap.getOrDefault("value", "") + ""; + pk_currtypes.add(pk_currtype); + } + } + } + + private void setCurrencyNameInArr(Map>[] infoArray, Map resMap) { + for (Map> map : infoArray) { + Map currtypeMap = map.get("m_pk_currtype"); + String pk_currtype = currtypeMap.getOrDefault("value", "") + ""; + String m_currtypeName = resMap.get(pk_currtype); + + Map currtypeNameMap = new HashMap<>(); + currtypeNameMap.put("value", m_currtypeName); + currtypeNameMap.put("display", m_currtypeName); + map.put("m_currtypeName", currtypeNameMap); + } + } + +} + +/*336L/tOhma6VzKP3mxHcEkAXkBRqJpb8XsF1elPHMJ2c/NcdtKK6mxZmzuL3bjcU*/ \ No newline at end of file