From 4d2df055d71255ad2112de8e10d585b64788f2fe Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 16 Apr 2025 14:39:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E6=96=B0=E4=BB=B7=E6=A0=BC=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2-init?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- purp/META-INF/.gitkeep | 0 purp/METADATA/.gitkeep | 0 purp/component.xml | 5 + purp/resources/.gitkeep | 0 purp/script/.gitkeep | 0 purp/src/client/.gitkeep | 0 .../supplierprice/rule/SupPriceQryRule.java | 273 ++++++++++++++++++ .../nc/vo/pp/report/util/PurpRptUtils.java | 175 +++++++++++ 8 files changed, 453 insertions(+) create mode 100644 purp/META-INF/.gitkeep create mode 100644 purp/METADATA/.gitkeep create mode 100644 purp/component.xml create mode 100644 purp/resources/.gitkeep create mode 100644 purp/script/.gitkeep create mode 100644 purp/src/client/.gitkeep create mode 100644 purp/src/private/nc/impl/pp/supplierprice/rule/SupPriceQryRule.java create mode 100644 purp/src/public/nc/vo/pp/report/util/PurpRptUtils.java diff --git a/purp/META-INF/.gitkeep b/purp/META-INF/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/purp/METADATA/.gitkeep b/purp/METADATA/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/purp/component.xml b/purp/component.xml new file mode 100644 index 0000000..cde11f8 --- /dev/null +++ b/purp/component.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/purp/resources/.gitkeep b/purp/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/purp/script/.gitkeep b/purp/script/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/purp/src/client/.gitkeep b/purp/src/client/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/purp/src/private/nc/impl/pp/supplierprice/rule/SupPriceQryRule.java b/purp/src/private/nc/impl/pp/supplierprice/rule/SupPriceQryRule.java new file mode 100644 index 0000000..bcaed47 --- /dev/null +++ b/purp/src/private/nc/impl/pp/supplierprice/rule/SupPriceQryRule.java @@ -0,0 +1,273 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.impl.pp.supplierprice.rule; + +import java.util.ArrayList; +import java.util.List; +import nc.vo.pp.report.entity.PurpReportTransMap; +import nc.vo.pp.report.util.PurpRptUtils; +import nc.vo.pp.supplierprice.entity.SupPriceRptConst; +import nc.vo.pp.util.StringUtils; +import nc.vo.pub.lang.UFDate; +import nc.vo.pub.query.ConditionVO; +import nc.vo.pubapp.AppContext; +import nc.vo.scmpub.util.ArrayUtil; +import nc.vo.util.CloneUtil; + +/** + * 最新价格查询 + * 2005适配2312 + * + * @author mzr + * @date 2025/04/16 + */ +public class SupPriceQryRule { + public SupPriceQryRule() { + } + + public String getWhereCtForHis(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) { + ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils); + if (ArrayUtil.isEmpty(convos)) { + return ""; + } else { + ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos); + List list = new ArrayList(); + + for(ConditionVO vo : copyconvos) { + if (vo.getFieldCode().equals("pk_supplier")) { + vo.setFieldCode(htablealias + ".cvendorid"); + list.add(vo); + } else if (vo.getFieldCode().equals("tcreatetime")) { + if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + } + + vo.setFieldCode(htablealias + ".creationtime"); + list.add(vo); + } else if (!vo.getFieldCode().equals("fpricesrctype")) { + if (vo.getFieldCode().equals("dvaliddate")) { + if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + } + + vo.setFieldCode(htablealias + ".dbilldate"); + list.add(vo); + } else if (vo.getFieldCode().equals("dinvaliddate")) { + if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + } + } else { + vo.setFieldCode(htablealias + "." + vo.getFieldCode()); + list.add(vo); + } + } + } + + StringBuilder sql = new StringBuilder(""); + sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[list.size()]))); + this.addMarWhere(sql, tranMap, rptutils, btablealias); + return sql.toString(); + } + } + + public String getWhereCtForNew(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) { + ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils); + if (ArrayUtil.isEmpty(convos)) { + return ""; + } else { + ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos); + + for(ConditionVO vo : copyconvos) { + if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) { + int month = Integer.valueOf(vo.getValue()); + UFDate curdate = AppContext.getInstance().getBusiDate(); + UFDate befdate = curdate.getDateBefore(month * 30); + vo.setFieldCode(htablealias + ".dbilldate"); + vo.setOperaCode("between"); + vo.setDataType(3); + String var10001 = befdate.toString(); + vo.setValue(var10001 + " ," + curdate.toString() + " "); + } else if (vo.getFieldCode().equals("pk_supplier")) { + vo.setFieldCode(htablealias + ".cvendorid"); + } else { + vo.setFieldCode(htablealias + "." + vo.getFieldCode()); + } + } + + StringBuilder sql = new StringBuilder(""); + sql.append((new ConditionVO()).getSQLStr(copyconvos)); + this.addMarWhere(sql, tranMap, rptutils, btablealias); + return sql.toString(); + } + } + + public String getWhereOrderForHis(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) { + List list = new ArrayList(); + ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils); + if (ArrayUtil.isEmpty(convos)) { + return ""; + } else { + ConditionVO[] convosCt = (ConditionVO[])CloneUtil.deepClone(convos); + + for(ConditionVO vo : convosCt) { + if (!vo.getFieldCode().equals("bsc") && !vo.getFieldCode().equals("fpricesrctype")) { + if (vo.getFieldCode().equals("dinvaliddate")) { + if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + } + } else if (vo.getFieldCode().equals("dvaliddate")) { + if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + } + } else if (vo.getFieldCode().equals("tcreatetime")) { + vo.setFieldCode(htablealias + ".creationtime"); + if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + } + + list.add(vo); + } else { + vo.setFieldCode(htablealias + "." + vo.getFieldCode()); + list.add(vo); + } + } + } + + StringBuilder sql = new StringBuilder(""); + sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[list.size()]))); + this.addMarWhere(sql, tranMap, rptutils, btablealias); + return sql.toString(); + } + } + + public String getWhereOrderForNew(PurpReportTransMap tranMap, PurpRptUtils rptutils, String htablealias, String btablealias) { + List list = new ArrayList(); + ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils); + ConditionVO[] convosCt = (ConditionVO[])CloneUtil.deepClone(convos); + if (convosCt != null && convosCt.length > 0) { + for(ConditionVO vo : convosCt) { + if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) { + int month = Integer.valueOf(vo.getValue()); + UFDate curdate = AppContext.getInstance().getBusiDate(); + UFDate befdate = curdate.getDateBefore(month * 30); + vo.setFieldCode(htablealias + ".dbilldate"); + vo.setOperaCode("between"); + vo.setDataType(3); + String var10001 = befdate.toString(); + vo.setValue(var10001 + " ," + curdate.toString() + " "); + list.add(vo); + } else if (!vo.getFieldCode().equals("bsc")) { + vo.setFieldCode(htablealias + "." + vo.getFieldCode()); + list.add(vo); + } + } + } + + StringBuilder sql = new StringBuilder(""); + sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[list.size()]))); + this.addMarWhere(sql, tranMap, rptutils, btablealias); + return sql.toString(); + } + + public String getWhereSupPrice(PurpReportTransMap tranMap, PurpRptUtils rptutils, String tablealias) { + ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils); + if (ArrayUtil.isEmpty(convos)) { + return ""; + } else { + ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos); + + for(ConditionVO vo : copyconvos) { + if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) { + int month = Integer.valueOf(vo.getValue()); + UFDate curdate = AppContext.getInstance().getBusiDate(); + UFDate befdate = curdate.getDateBefore(month * 30); + vo.setFieldCode(tablealias + ".dvaliddate"); + vo.setOperaCode("between"); + vo.setDataType(3); + String var10001 = befdate.toString(); + vo.setValue(var10001 + " ," + curdate.toString() + " "); + } else if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + vo.setFieldCode(tablealias + "." + vo.getFieldCode()); + } else { + vo.setFieldCode(tablealias + "." + vo.getFieldCode()); + } + } + + StringBuilder sql = new StringBuilder(""); + sql.append((new ConditionVO()).getSQLStr(copyconvos)); + this.addMarWhere(sql, tranMap, rptutils, tablealias); + return sql.toString(); + } + } + + public String getWhereSupPriceNew(PurpReportTransMap tranMap, PurpRptUtils rptutils, String tablealias) { + ConditionVO[] convos = this.getInitQryCondVOs(tranMap, rptutils); + if (ArrayUtil.isEmpty(convos)) { + return ""; + } else { + ConditionVO[] copyconvos = (ConditionVO[])CloneUtil.deepClone(convos); + List list = new ArrayList(); + + for(ConditionVO vo : copyconvos) { + if (vo.getFieldCode().equals(SupPriceRptConst.DBUSINESSDATE)) { + int month = Integer.valueOf(vo.getValue()); + UFDate curdate = AppContext.getInstance().getBusiDate(); + UFDate befdate = curdate.getDateBefore(month * 30); + vo.setFieldCode(tablealias + ".dinvaliddate"); + vo.setOperaCode("between"); + vo.setDataType(3); + String var10001 = befdate.toString(); + vo.setValue(var10001 + " ," + curdate.toString() + " "); + ConditionVO newvo = new ConditionVO(); + newvo.setLogic(false); + newvo.setFieldCode(tablealias + ".dvaliddate"); + newvo.setOperaCode("between"); + newvo.setDataType(3); + var10001 = befdate.toString(); + newvo.setValue(var10001 + " ," + curdate.toString() + " "); + list.add(vo); + list.add(newvo); + } else if (vo.getDataType() == 3 && vo.getOperaCode().equalsIgnoreCase("=")) { + UFDate date = new UFDate(vo.getValue()); + vo.setValue(date.toLocalString()); + vo.setFieldCode(tablealias + "." + vo.getFieldCode()); + list.add(vo); + } else { + vo.setFieldCode(tablealias + "." + vo.getFieldCode()); + list.add(vo); + } + } + + StringBuilder sql = new StringBuilder(""); + sql.append((new ConditionVO()).getSQLStr((ConditionVO[])list.toArray(new ConditionVO[0]))); + this.addMarWhere(sql, tranMap, rptutils, tablealias); + return sql.toString(); + } + } + + private void addMarWhere(StringBuilder sql, PurpReportTransMap tranMap, PurpRptUtils rptutils, String btablealias) { + String[] marQryKeys = new String[]{SupPriceRptConst.MARBASCLASS, SupPriceRptConst.MATERIALCODE, SupPriceRptConst.MARTERIALNAME}; + String marwhere = rptutils.getWhereForMar(tranMap, btablealias, marQryKeys); + if (!StringUtils.isEmpty(marwhere)) { + sql.append(" and " + marwhere); + } + + } + + private ConditionVO[] getInitQryCondVOs(PurpReportTransMap tranMap, PurpRptUtils rptutils) { + ConditionVO[] generalvos = tranMap.getConditionVOs(SupPriceRptConst.SUPPRICE_GENERALCOND); + ConditionVO[] logicalvos = tranMap.getConditionVOs(SupPriceRptConst.SUPPRICE_LOGICALCOND); + return rptutils.combineCondVOs(generalvos, logicalvos); + } +} diff --git a/purp/src/public/nc/vo/pp/report/util/PurpRptUtils.java b/purp/src/public/nc/vo/pp/report/util/PurpRptUtils.java new file mode 100644 index 0000000..fcfae47 --- /dev/null +++ b/purp/src/public/nc/vo/pp/report/util/PurpRptUtils.java @@ -0,0 +1,175 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.vo.pp.report.util; + +import java.util.HashMap; +import java.util.Map; +import nc.bs.ic.icreport.pub.RPMetaDataUtil; +import nc.bs.pubapp.report.ReportPermissionUtils; +import nc.pub.smart.context.SmartContext; +import nc.pub.smart.data.DataSet; +import nc.pub.smart.metadata.MetaData; +import nc.vo.ml.MultiLangUtil; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pp.report.entity.PurpReportTransMap; +import nc.vo.pub.ISuperVO; +import nc.vo.pub.query.ConditionVO; +import nc.vo.pubapp.pattern.model.entity.view.AbstractDataView; +import nc.vo.pubapp.pattern.model.meta.entity.view.IDataViewMeta; +import nc.vo.scmbd.pub.SCMESAPI; +import nc.vo.scmpub.util.ArrayUtil; + +/** + * 最新价格查询 + * 2005适配2312 + * + * @author mzr + * @date 2025/04/16 + */ +public class PurpRptUtils { + public static final int UFDATEDATATIMETYPE = 8; + public static final int UFDATEDATATYPE = 3; + + public PurpRptUtils() { + } + + public ConditionVO[] combineCondVOs(ConditionVO[] generalvos, ConditionVO[] logicalvos) { + ConditionVO[] endvos = null; + if (!ArrayUtil.isEmpty(generalvos)) { + endvos = generalvos; + } + + if (!ArrayUtil.isEmpty(logicalvos) && ArrayUtil.isEmpty(endvos)) { + endvos = logicalvos; + } else if (!ArrayUtil.isEmpty(logicalvos) && endvos != null && endvos.length > 0) { + System.arraycopy(logicalvos, 0, endvos, endvos.length, logicalvos.length); + } + + return endvos; + } + + public DataSet convertDataSet(IDataViewMeta md, AbstractDataView[] vos) { + String[] fields = md.getAttributeNames(); + MetaData mtd = new MetaData(); + RPMetaDataUtil.addVOMetaFieldByKeys(mtd, md, fields); + if (vos != null && vos.length > 0) { + Object[][] datas = new Object[vos.length][fields.length]; + + for(int i = 0; i < vos.length; ++i) { + if (vos[i] != null) { + for(int k = 0; k < fields.length; ++k) { + datas[i][k] = vos[i].getAttributeValue(fields[k]); + } + } + } + + return new DataSet(mtd, datas); + } else { + DataSet ds = new DataSet(); + ds.setMetaData(mtd); + return ds; + } + } + + public String getChnNo() { + return NCLangRes4VoTransl.getNCLangRes().getStrByID("40050004", "1400500040031"); + } + + public String getChnYes() { + return NCLangRes4VoTransl.getNCLangRes().getStrByID("40050004", "1400500040030"); + } + + public String getPermisionInnerJoin(SmartContext context, Class marclass, String btablealias) { + ReportPermissionUtils utils = new ReportPermissionUtils(context); + Map, String> beanMap = new HashMap(); + beanMap.put(marclass, btablealias); + return utils.getPermissionSQL(beanMap); + } + + public String getWhereForMar(PurpReportTransMap tranMap, String btablealias, String[] marQryKeys) { + String marclassKey = marQryKeys[0]; + String marcodeKey = marQryKeys[1]; + String marnameKey = marQryKeys[2]; + ConditionVO codeVO = this.getMarCondVO(tranMap, marcodeKey); + ConditionVO nameVO = this.getMarCondVO(tranMap, marnameKey); + ConditionVO classVO = this.getMarCondVO(tranMap, marclassKey); + if (null == codeVO && null == nameVO && null == classVO) { + return ""; + } else { + StringBuilder wheresql = new StringBuilder(); + wheresql.append(btablealias + ".pk_material in ( select bd_material.pk_material from bd_material bd_material where bd_material.dr=0 "); + if (codeVO != null) { + wheresql.append(" and "); + this.setMarWhere(codeVO, "bd_material.code", wheresql); + } + + if (nameVO != null) { + String langseq = MultiLangUtil.getCurrentLangSeqSuffix(); + wheresql.append(" and "); + this.setMarWhere(nameVO, "bd_material.name" + langseq, wheresql); + } + + if (classVO != null) { + wheresql.append(" and "); + this.setMarWhere(classVO, "bd_material.pk_marbasclass", wheresql); + } + + wheresql.append(" ) "); + return wheresql.toString(); + } + } + + public ConditionVO updUFDateCondVO(ConditionVO condvo, String qryDlgWhereSql, String dateField) { + if (!qryDlgWhereSql.contains(dateField)) { + return null; + } else { + String[] conds = qryDlgWhereSql.split(dateField); + StringBuilder valueBuilder = new StringBuilder(); + String first = conds[1].split("'")[1]; + if (condvo.getOperaCode().equalsIgnoreCase("between")) { + if (condvo.getValue().toLowerCase().contains("isnull")) { + if (condvo.getValue().toLowerCase().startsWith("isnull")) { + valueBuilder.append(first); + condvo.setOperaCode("<="); + } else { + valueBuilder.append(first); + condvo.setOperaCode(">="); + } + + condvo.setValue(valueBuilder.toString()); + return condvo; + } + + String end = conds[2].split("'")[1]; + valueBuilder.append(first); + valueBuilder.append(","); + valueBuilder.append(end); + } else { + valueBuilder.append(first); + } + + condvo.setValue(valueBuilder.toString()); + return condvo; + } + } + + private ConditionVO getMarCondVO(PurpReportTransMap tranMap, String key) { + ConditionVO[] tempvos = tranMap.getConditionVOs(key); + return ArrayUtil.isEmpty(tempvos) ? null : tempvos[0]; + } + + private void setMarWhere(ConditionVO condvo, String field, StringBuilder wheresql) { + if (condvo.getOperaCode().equals("in")) { + wheresql.append(field + " in " + condvo.getValue()); + } else if (condvo.getOperaCode().equals("=")) { + wheresql.append(field + " = '" + SCMESAPI.sqlEncodeGeneral(condvo.getValue()) + "' "); + } else if (condvo.getOperaCode().equals("left like")) { + String value = condvo.getValue().replaceAll("\\(", "").replaceAll("\\)", ""); + wheresql.append(field + " like '" + SCMESAPI.sqlEncodeGeneral(value) + "%' "); + } + + } +}