From 431515e1fb84be19946604da11da2170ac5cd08d Mon Sep 17 00:00:00 2001 From: mzr <1562242162@qq.com> Date: Thu, 12 Dec 2024 17:52:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E4=BD=8D=E5=AF=B9=E6=AF=94=E6=88=90?= =?UTF-8?q?=E6=9C=AC=E5=A2=9E=E5=8A=A0=E9=A1=B9=E7=9B=AE=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 16 +- .../MeasCostQuerySQLBuilder.java | 1745 +++++++++++++++++ .../process/MeasCostCenterfrom.java | 111 ++ .../process/MeasCostDefault.java | 59 + .../process/MeasCostStdcost.java | 88 + .../process/MeasCostSubtype.java | 111 ++ 6 files changed, 2129 insertions(+), 1 deletion(-) create mode 100644 cm/src/private/nc/bs/cm/meascostcontrast/MeasCostQuerySQLBuilder.java create mode 100644 cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostCenterfrom.java create mode 100644 cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostDefault.java create mode 100644 cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostStdcost.java create mode 100644 cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostSubtype.java diff --git a/.classpath b/.classpath index d008acb..cc016f6 100644 --- a/.classpath +++ b/.classpath @@ -1,5 +1,15 @@ + + + + + + + + + + @@ -12,7 +22,11 @@ - + + + + + diff --git a/cm/src/private/nc/bs/cm/meascostcontrast/MeasCostQuerySQLBuilder.java b/cm/src/private/nc/bs/cm/meascostcontrast/MeasCostQuerySQLBuilder.java new file mode 100644 index 0000000..095b9e2 --- /dev/null +++ b/cm/src/private/nc/bs/cm/meascostcontrast/MeasCostQuerySQLBuilder.java @@ -0,0 +1,1745 @@ +package nc.bs.cm.meascostcontrast; + +import java.util.Map; + +import nc.bd.framework.base.CMArrayUtil; +import nc.bd.framework.db.CMSqlBuilder; +import nc.cmpub.business.util.CMUtil; +import nc.vo.bd.bdactivity.entity.BDActivityVO; +import nc.vo.bd.material.MaterialVersionVO; +import nc.vo.bd.material.marbasclass.MarBasClassVO; +import nc.vo.bd.material.marcostclass.MarCostClassVO; +import nc.vo.bd.material.measdoc.MeasdocVO; +import nc.vo.bd.material.prod.MaterialProdVO; +import nc.vo.cm.costobject.entity.CostObjectVO; +import nc.vo.cm.costrevert.CtRevertHeadVO; +import nc.vo.cm.costrevert.CtRevertItemVO; +import nc.vo.cm.inprocost.entity.InproCostHeadVO; +import nc.vo.cm.inprocost.entity.InproCostItemVO; +import nc.vo.cm.meascostcontrast.CMCommonConst1614; +import nc.vo.cm.meascostcontrast.MeasCostParamVO; +import nc.vo.cm.meascostcontrast.MeasCostQueryConditionVO; +import nc.vo.cm.meascostcontrast.MeasCostUtil; +import nc.vo.cm.pc.pc0410.ProdcostHeadVO; +import nc.vo.cm.pc.pc0410.ProdcostItemVO; +import nc.vo.cmpub.framework.report.CMConditionVO; +import nc.vo.ml.MultiLangUtil; +import nc.vo.pmpub.project.ProjectHeadVO; +import nc.vo.resa.costcenter.CostCenterVO; +import nc.vo.resa.factor.FactorAsoaVO; +import nc.vo.resa.factor.FactorVO; + +/** + * 单位成本对比表-主查询的sql构造类 + * + * @since 6.0 + * @version 2011-7-14 上午10:14:41 + * @author wanghjd + */ +public class MeasCostQuerySQLBuilder { + + public final String BD_MEASDOC = "bd_measdoc"; // 计量单位表 + + public final String MATERIALSPEC = "materialspec"; // 规格 + + public final String MATERIALTYPE = "materialtype"; // 规格 + + public final String PK_MEASDOC = "pk_measdoc"; // 计量单位 + + /** + * 根据查询条件加工得到主查询sql文(联合查询:包括成本对象统计查询、核算要素统计查询) + * + * @param paramVO 查询参数VO + * @return 主查询sql文 + */ + public String getSqlByQueryVOs(MeasCostParamVO paramVO) { + Map conditionMap = paramVO.getConditionMap(); + CMSqlBuilder sql = new CMSqlBuilder(); + // 联合查询的Select部分 + sql.append(this.getSelectSQL(conditionMap)); + sql.append(" from "); + sql.l(); + // 成本对象查询sql + sql.append(this.getVcostobjSQL(paramVO)); + sql.r(); + sql.append(CMCommonConst1614.CM_COSTOBJ); + sql.append(" inner join "); + sql.l(); + // 核算要素查询sql + sql.append(this.getFactorSQL(paramVO)); + sql.r(); + sql.append(CMCommonConst1614.COST_FACTOR); + sql.on(CMCommonConst1614.CM_COSTOBJ, CMCommonConst1614.VCOSTOBJCODE, CMCommonConst1614.COST_FACTOR, + CMCommonConst1614.VCOSTOBJCODE); + sql.and(); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.CCCODE + "=" + CMCommonConst1614.COST_FACTOR + + "." + CMCommonConst1614.CCCODE); + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.and(); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.BSUBTYPE); + sql.append("="); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.BSUBTYPE); + + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.and(); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.BFROMCOSTCENTER); + sql.append("="); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + + sql.append(" order by "); + sql.append(CMCommonConst1614.CM_COSTOBJ); + sql.append("."); + sql.append(CMCommonConst1614.VCOSTOBJCODE); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR); + sql.append("."); + sql.append(CMCommonConst1614.FACTORCODE); + return sql.toString(); + } + + /** + * 联合查询的Select部分 + * + * @param conditionMap 逻辑查询条件map + * @return 联合查询的Select部分 + */ + private String getSelectSQL(Map conditionMap) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.select(); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.CCCODE); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.CCNAME); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.VCOSTOBJCODE); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.VCOSTOBJNAME); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.VCOSTOBJNAME0); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.MATERIALSPEC); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.MATERIALTYPE); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.PK_MEASDOC); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.NNUM); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.NSUM); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.FACTORCODE); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.FACTORNAME); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.FACTORNAME0); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.FACTOR_NSUM); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.FACTORlEV); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.PK_FACTORASOA); + + // todo + sql.append(","); + sql.append("nvl(cost_factor.project_code,'--') projectcode"); + sql.append(","); + sql.append("nvl(cost_factor.project_name,'--') projectname"); + + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.STDCOST_ITEMS, showDetailDiff)) { // 显示标准成本 + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.NSTDCOST_NSUM); + sql.append(" nstdcostnsum "); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.NNUMDIFF_NSUM); + sql.append(" nnumdiffnsum "); + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.NPRICEDIFF_NSUM); + sql.append(" npricediffnsum "); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.NSTDCOST_FACTOR); + sql.append(" nstdcostfactor "); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.NNUMDIFF_FACTOR); + sql.append(" nnumdifffactor "); + sql.append(","); + sql.append(CMCommonConst1614.COST_FACTOR + "." + CMCommonConst1614.NPRICEDIFF_FACTOR); + sql.append(" npricedifffactor "); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append(CMCommonConst1614.CM_COSTOBJ + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + return sql.toString(); + } + + /** + * 成本对象统计查询sql + * + * @param paramVO 查询参数VO + * @return 成本对象统计查询sql + */ + private String getVcostobjSQL(MeasCostParamVO paramVO) { + Map conditionMap = paramVO.getConditionMap(); + CMSqlBuilder sql = new CMSqlBuilder(); + Integer ireportsource = MeasCostQueryConditionVO.REVERT_BEFORE_VALUE; + if (conditionMap.containsKey(MeasCostQueryConditionVO.IREPORTSOURCE) + && conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue() != null) { + ireportsource = Integer.valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + } + + Integer ishowtype = MeasCostQueryConditionVO.PRODUCT_VALUE; + if (conditionMap.containsKey(MeasCostQueryConditionVO.ISHOWTYPE) + && conditionMap.get(MeasCostQueryConditionVO.ISHOWTYPE).getSingleValue() != null) { + ishowtype = Integer.valueOf(conditionMap.get(MeasCostQueryConditionVO.ISHOWTYPE).getSingleValue()); + } + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + + sql.l(); + // 显示方式:成本对象 + if (MeasCostQueryConditionVO.COSTOBJECT_VALUE.equals(ishowtype) + && MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getVcostobjFromSQL(conditionMap, null)); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + } + // 显示方式:产品 + else if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { + sql.l(); + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getVcostobjFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + sql.r(); + sql.append(" union all "); + sql.l(); + // 报表来源:还原前 (当显示方式为产品,而成本对象为成本分类时,该成本分类成本对象仍显示为成本对象) + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getVcostobjFromSQL(conditionMap, null)); + sql.and(); + sql.append(CostObjectVO.getDefaultTableName() + "." + CostObjectVO.CMATERIALID); + sql.append(" ='~' "); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + } + // 报表来源:还原后 (当显示方式为产品,而还原后对象为成本分类时,该成本分类仍显示为成本分类) + else { + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getVcostobjFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + } + sql.r(); + } + // 显示方式:产品成本分类 + else if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { + sql.l(); + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getVcostobjFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.innerjoin(MaterialProdVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialProdVO.getDefaultTableName()); + sql.on(MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MATERIAL, + MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MATERIAL); + sql.and(); + sql.append(MaterialProdVO.getDefaultTableName() + "." + MaterialProdVO.PK_ORG); + sql.append("="); + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + "pk_org"); + + sql.innerjoin(MarCostClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarCostClassVO.getDefaultTableName()); + sql.on(MarCostClassVO.getDefaultTableName(), MarCostClassVO.PK_MARCOSTCLASS, + MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MARCOSTCLASS); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + sql.r(); + + sql.append(" union all "); + sql.l(); + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getVcostobjFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + sql.r(); + } + // 显示方式:产品基本分类 + else if (MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE.equals(ishowtype)) { + sql.l(); + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getVcostobjFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.innerjoin(MarBasClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarBasClassVO.getDefaultTableName()); + sql.on(MarBasClassVO.getDefaultTableName(), MarBasClassVO.PK_MARBASCLASS, + MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MARBASCLASS); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + sql.r(); + + sql.append(" union all "); + sql.l(); + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getVcostobjFromSQLFeature(conditionMap)); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + sql.r(); + + sql.append(" union all "); + sql.l(); + + sql.append(this.getVcostobjSelectSQLForNNum(conditionMap)); + sql.l(); + sql.append(this.getVcostobjSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getVcostobjFromSQLNoFeature(conditionMap)); + sql.append(this.getVcostobjWhereSQL(paramVO)); + sql.append(this.getVcostobjGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + sql.r(); + } + + sql.r(); + sql.append(" tt "); + sql.append(this.getVcostobjGroupSQLForNNum(conditionMap)); + + return sql.toString(); + } + + /** + * 查询分类特征物料sql的from部分 (当显示方式为产品基本分类,而查询对象为成本分类时使用) + * + * @param conditionMap 逻辑查询条件map + * @return 查询分类特征物料sql的from部分 + */ + private String getVcostobjFromSQLFeature(Map conditionMap) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getVcostobjFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.innerjoin(MaterialProdVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialProdVO.getDefaultTableName()); + sql.on(MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MARCOSTCLASS, + MarCostClassVO.getDefaultTableName(), MarCostClassVO.PK_MARCOSTCLASS); + + sql.and(); + sql.append(MaterialProdVO.getDefaultTableName() + "." + MaterialProdVO.PK_ORG); + sql.append("="); + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + "pk_org"); + + sql.innerjoin(MaterialVersionVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialVersionVO.getDefaultTableName()); + sql.on(MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MATERIAL, + MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MATERIAL); + sql.and(); + sql.append(MaterialProdVO.getDefaultTableName() + "." + MaterialProdVO.CLASSFEATURE); + sql.append("='"); + sql.append(MeasCostQueryConditionVO.TRUE_VALUE); + sql.append("'"); + + sql.innerjoin(MarBasClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarBasClassVO.getDefaultTableName()); + sql.on(MarBasClassVO.getDefaultTableName(), MarBasClassVO.PK_MARBASCLASS, + MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MARBASCLASS); + return sql.toString(); + } + + /** + * 查询编码最小物料sql的from部分 (当显示方式为产品基本分类,而查询对象为成本分类时使用) + * + * @param conditionMap 逻辑查询条件map + * @return 查询编码最小物料sql的from部分 + */ + private String getVcostobjFromSQLNoFeature(Map conditionMap) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getVcostobjFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.innerjoin(MaterialProdVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialProdVO.getDefaultTableName()); + sql.on(MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MARCOSTCLASS, + MarCostClassVO.getDefaultTableName(), MarCostClassVO.PK_MARCOSTCLASS); + + sql.and(); + sql.append(MaterialProdVO.getDefaultTableName() + "." + MaterialProdVO.PK_ORG); + sql.append("="); + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + "pk_org"); + // 注意:物料生产信息需要与工厂关联 + // 2012-2-15 + sql.innerjoin(MaterialVersionVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialVersionVO.getDefaultTableName()); + sql.on(MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MATERIAL, + MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MATERIAL); + sql.and(); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + MaterialVersionVO.PK_MATERIAL); + sql.in(); + sql.l(); + sql.select(); + sql.append(" min"); + sql.l(); + sql.append(MaterialProdVO.getDefaultTableName() + "." + MaterialProdVO.PK_MATERIAL); + sql.r(); + sql.from(MaterialProdVO.getDefaultTableName()); + sql.where(); + sql.append(MaterialProdVO.getDefaultTableName() + "." + MaterialProdVO.PK_MARCOSTCLASS); + sql.append("<> '~'"); + sql.and(); + sql.append(" not exists "); + sql.l(); + sql.select(); + sql.append(CMCommonConst1614.BD_MATERIALPROD_TEMP1 + "." + MaterialProdVO.PK_MATERIAL); + sql.from(MaterialProdVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.BD_MATERIALPROD_TEMP1); + sql.innerjoin(MaterialProdVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.BD_MATERIALPROD_TEMP2); + sql.on(CMCommonConst1614.BD_MATERIALPROD_TEMP1, MaterialProdVO.PK_MARCOSTCLASS, + CMCommonConst1614.BD_MATERIALPROD_TEMP2, MaterialProdVO.PK_MARCOSTCLASS); + + sql.and(); + sql.appendIDIsNotNull(CMCommonConst1614.BD_MATERIALPROD_TEMP1 + "." + MaterialProdVO.PK_MARCOSTCLASS); + sql.and(); + sql.appendIDIsNotNull(CMCommonConst1614.BD_MATERIALPROD_TEMP2 + "." + MaterialProdVO.PK_MARCOSTCLASS); + + sql.and(); + sql.append(CMCommonConst1614.BD_MATERIALPROD_TEMP2 + "." + MaterialProdVO.CLASSFEATURE); + sql.append("='"); + sql.append(MeasCostQueryConditionVO.TRUE_VALUE); + sql.append("'"); + // sql.and(CMCommonConst1614.BD_MATERIALPROD_TEMP2, MaterialProdVO.CLASSFEATURE, + // MeasCostQueryConditionVO.TRUE_VALUE); + sql.r(); + sql.groupBy(MaterialProdVO.getDefaultTableName(), new String[] { MaterialProdVO.PK_MARCOSTCLASS }); + sql.r(); + sql.innerjoin(MarBasClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarBasClassVO.getDefaultTableName()); + sql.on(MarBasClassVO.getDefaultTableName(), MarBasClassVO.PK_MARBASCLASS, + MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MARBASCLASS); + return sql.toString(); + } + + /** + * 核算要素统计查询sql + * + * @param paramVO 查询参数VO + * @return 核算要素统计查询sql文 + */ + private String getFactorSQL(MeasCostParamVO paramVO) { + Map conditionMap = paramVO.getConditionMap(); + CMSqlBuilder sql = new CMSqlBuilder(); + String baloneshowactivity = MeasCostQueryConditionVO.FALSE_VALUE; + if (conditionMap.containsKey(MeasCostQueryConditionVO.BALONESHOWACTIVITY) + && conditionMap.get(MeasCostQueryConditionVO.BALONESHOWACTIVITY).getSingleValue() != null) { + conditionMap.get(MeasCostQueryConditionVO.BALONESHOWACTIVITY).getSingleValue(); + } + // 单列作业成本 + if (MeasCostQueryConditionVO.TRUE_VALUE.equals(baloneshowactivity)) { + sql.l(); + // 与作业相关列 + sql.append(this.getFactorSubSQL(paramVO, MeasCostQueryConditionVO.ACT_VALUE)); + sql.r(); + sql.append(" union all "); + sql.l(); + // 与作业无关列 + sql.append(this.getFactorSubSQL(paramVO, MeasCostQueryConditionVO.NOACT_VALUE)); + sql.r(); + } + // 不单列作业成本 + else { + sql.append(this.getFactorSubSQL(paramVO, null)); + } + return sql.toString(); + } + + /** + * 核算要素统计查询,针对单列作业成本的拼sql方法 + * + * @param paramVO 查询参数VO + * @param iAct 是否与作业相关 + * @return 核算要素统计查询sql文 + */ + private String getFactorSubSQL(MeasCostParamVO paramVO, Integer iAct) { + Map conditionMap = paramVO.getConditionMap(); + Integer ishowtype = MeasCostQueryConditionVO.PRODUCT_VALUE; + if (conditionMap.containsKey(MeasCostQueryConditionVO.ISHOWTYPE) + && conditionMap.get(MeasCostQueryConditionVO.ISHOWTYPE).getSingleValue() != null) { + ishowtype = Integer.valueOf(conditionMap.get(MeasCostQueryConditionVO.ISHOWTYPE).getSingleValue()); + } + + CMSqlBuilder sql = new CMSqlBuilder(); + // 显示方式:成本对象 + if (MeasCostQueryConditionVO.COSTOBJECT_VALUE.equals(ishowtype)) { + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, null)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, null)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + } else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, null)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + } + } + // 显示方式:产品 + else if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { + sql.l(); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } + sql.r(); + sql.append(" union all "); + sql.l(); + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + // 报表来源:还原前 (当显示方式为产品,而成本对象为成本分类时,该成本分类成本对象仍显示为成本对象) + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, null)); + sql.and(); + sql.append(CostObjectVO.getDefaultTableName() + "." + CostObjectVO.CMATERIALID); + sql.append(" ='~' "); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, null)); + sql.and(); + sql.append(CostObjectVO.getDefaultTableName() + "." + CostObjectVO.CMATERIALID); + sql.append(" ='~' "); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + } else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, null)); + sql.and(); + sql.append(CostObjectVO.getDefaultTableName() + "." + CostObjectVO.CMATERIALID); + sql.append(" ='~' "); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.COSTOBJECT_VALUE)); + } + } + // 报表来源:还原后 (当显示方式为产品,而还原后对象为成本分类时,该成本分类仍显示为成本分类) + else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorFromSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorFromSQLNoAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } else { + sql.append(this.getFactorFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } + } + sql.r(); + } + // 显示方式:产品成本分类 + else if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { + sql.l(); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } + sql.innerjoin(MaterialProdVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialProdVO.getDefaultTableName()); + sql.on(MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MATERIAL, + MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MATERIAL); + + sql.and(); + sql.append(MaterialProdVO.getDefaultTableName() + "." + MaterialProdVO.PK_ORG); + sql.append("="); + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + "pk_org"); + + sql.innerjoin(MarCostClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarCostClassVO.getDefaultTableName()); + sql.on(MarCostClassVO.getDefaultTableName(), MarCostClassVO.PK_MARCOSTCLASS, + MaterialProdVO.getDefaultTableName(), MaterialProdVO.PK_MARCOSTCLASS); + sql.append(this.getFactorWhereSQL(paramVO)); + + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } else { + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } + + sql.r(); + sql.append(" union all "); + sql.l(); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_COST_VALUE)); + } + sql.r(); + } + // 显示方式:产品基本分类 + else if (MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE.equals(ishowtype)) { + sql.l(); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_VALUE)); + } + sql.innerjoin(MarBasClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarBasClassVO.getDefaultTableName()); + sql.on(MarBasClassVO.getDefaultTableName(), MarBasClassVO.PK_MARBASCLASS, + MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_MARBASCLASS); + sql.append(this.getFactorWhereSQL(paramVO)); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } else { + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } + + sql.r(); + sql.append(" union all "); + sql.l(); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, MeasCostQueryConditionVO.FEATURE_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, MeasCostQueryConditionVO.FEATURE_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } else { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, MeasCostQueryConditionVO.FEATURE_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } + sql.r(); + sql.append(" union all "); + sql.l(); + if (MeasCostQueryConditionVO.ACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQLAct(conditionMap, MeasCostQueryConditionVO.NOFEATURE_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQLAct(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } else if (MeasCostQueryConditionVO.NOACT_VALUE.equals(iAct)) { + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQLNoAct(conditionMap, MeasCostQueryConditionVO.NOFEATURE_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } else { + // todo + sql.append(this.getFactorSelectSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + sql.append(this.getFactorFromSQL(conditionMap, MeasCostQueryConditionVO.NOFEATURE_VALUE)); + sql.append(this.getFactorWhereSQL(paramVO)); + sql.append(this.getFactorGroupSQL(conditionMap, MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE)); + } + sql.r(); + } + return sql.toString(); + } + + /** + * 成本对象统计查询的select部分 + * + * @param conditionMap 逻辑查询条件map + * @param ishowtype 显示方式 + * @return + */ + private String getVcostobjSelectSQL(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getShowTypeSelectSQL(conditionMap, ishowtype)); + sql.append(","); + sql.append("max"); + sql.l(); + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + CMCommonConst1614.NNUM); // 产量 + sql.r(); + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + // Integer ireportcontent = Integer.valueOf(-1); + + // String content = conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT); + // if (content != null) { + // ireportcontent = Integer.valueOf(content); + // } + + sql.append(" "); + sql.append(CMCommonConst1614.NNUM); + sql.append(","); + + // 报表来源:还原前 + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NMONEY, CMCommonConst1614.NSUM); // 合计 + } + // 报表来源:还原后 + else if (MeasCostQueryConditionVO.REVERT_AFTER_VALUE.equals(ireportsource)) { + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CtRevertItemVO.AFTERCOST, CMCommonConst1614.NSUM); // 合计 + } + + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.STDCOST_ITEMS, showDetailDiff)) { // 显示标准成本 + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NSTDCOST, CMCommonConst1614.NSTDCOST_NSUM); // 合计-标准成本 + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NNUMDIFF, CMCommonConst1614.NNUMDIFF_NSUM); // 合计-耗量差异 + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NPRICEDIFF, CMCommonConst1614.NPRICEDIFF_NSUM); // 合计-价格差异 + } else if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + return sql.toString(); + } + + /** + * 由于区分显示方式而不同的select字段 + * + * @param conditionMap 逻辑查询条件map + * @param ishowtype 显示方式 + * @return + */ + private String getShowTypeSelectSQL(Map conditionMap, Integer ishowtype) { + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + Integer ireportcontent = Integer.valueOf(-1); + String content = null; + if (conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT) != null) { + content = conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT).getSingleValue(); + } + + if (content != null && MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + ireportcontent = Integer.valueOf(content); + } + + CMSqlBuilder sql = new CMSqlBuilder(); + sql.select(); + + // 报表内容:完工成本、废品成本 + if (MeasCostQueryConditionVO.PRODCOST_VALUE.equals(ireportcontent) + || MeasCostQueryConditionVO.WASTER_VALUE.equals(ireportcontent)) { + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + ProdcostHeadVO.CPRODCOSTID); + } + // 报表内容:在产成本 + else if (MeasCostQueryConditionVO.INPROCOST_VALUE.equals(ireportcontent)) { + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + InproCostHeadVO.CINPROCOSTID); + } + // // 报表内容:还原成本 + else if (ireportcontent == -1) { + sql.append(CMCommonConst1614.CM_COST_TABLE + "." + CtRevertHeadVO.PK_CTREVERT); + } + // 成本中心多语名称 + String ccname = CMUtil.getFiledNameByMultiLang(CostCenterVO.CCNAME); + sql.append(" "); + sql.append(CMCommonConst1614.PK); + sql.append(","); + sql.append(CostCenterVO.getDefaultTableName() + "." + CostCenterVO.CCCODE); + + sql.append(",isnull(" + CostCenterVO.getDefaultTableName() + "." + ccname + "," + + CostCenterVO.getDefaultTableName() + "." + CostCenterVO.CCNAME + ") " + CMCommonConst1614.CCNAME); + sql.append(","); + + // 区分显示方式 + if (MeasCostQueryConditionVO.COSTOBJECT_VALUE.equals(ishowtype) + && MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { // 成本对象 + sql.append(CostObjectVO.getDefaultTableName() + "." + CostObjectVO.VCOSTOBJCODE); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJCODE); + + sql.append(","); + sql.append(CostObjectVO.getDefaultTableName() + "." + CostObjectVO.VCOSTOBJNAME + + MultiLangUtil.getCurrentLangSeqSuffix()); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME); + + sql.append(","); + sql.append(CostObjectVO.getDefaultTableName() + "." + CostObjectVO.VCOSTOBJNAME); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME0); + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALSPEC); + sql.append(" "); + sql.append(CMCommonConst1614.MATERIALSPEC); + + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALTYPE); + sql.append(" "); + sql.append(CMCommonConst1614.MATERIALTYPE); + + sql.append(","); + sql.append(MeasdocVO.getDefaultTableName() + "." + MeasdocVO.NAME); + sql.append(" "); + sql.append(CMCommonConst1614.PK_MEASDOC); + } else if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { // 产品 + sql.append(MaterialVersionVO.getDefaultTableName() + "." + MaterialVersionVO.CODE); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJCODE); + + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + MaterialVersionVO.NAME + + MultiLangUtil.getCurrentLangSeqSuffix()); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME); + + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + MaterialVersionVO.NAME); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME0); + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALSPEC); + sql.append(" "); + sql.append(CMCommonConst1614.MATERIALSPEC); + + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALTYPE); + sql.append(" "); + sql.append(CMCommonConst1614.MATERIALTYPE); + + sql.append(","); + sql.append(MeasdocVO.getDefaultTableName() + "." + MeasdocVO.NAME); + sql.append(" "); + sql.append(CMCommonConst1614.PK_MEASDOC); + } else if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { // 产品成本分类 + sql.append(MarCostClassVO.getDefaultTableName() + "." + MarCostClassVO.CODE); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJCODE); + + sql.append(","); + sql.append(MarCostClassVO.getDefaultTableName() + "." + MarCostClassVO.NAME + + MultiLangUtil.getCurrentLangSeqSuffix()); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME); + sql.append(","); + sql.append(MarCostClassVO.getDefaultTableName() + "." + MarCostClassVO.NAME); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME0); + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALSPEC); + sql.append(" "); + sql.append(CMCommonConst1614.MATERIALSPEC); + + sql.append(","); + sql.append(MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALTYPE); + sql.append(" "); + sql.append(CMCommonConst1614.MATERIALTYPE); + + sql.append(","); + sql.append(MeasdocVO.getDefaultTableName() + "." + MeasdocVO.NAME); + sql.append(" "); + sql.append(CMCommonConst1614.PK_MEASDOC); + } else if (MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE.equals(ishowtype)) { // 产品基本分类 + sql.append(MarBasClassVO.getDefaultTableName() + "." + MarBasClassVO.CODE); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJCODE); + + sql.append(","); + sql.append(MarBasClassVO.getDefaultTableName() + "." + MarBasClassVO.NAME + + MultiLangUtil.getCurrentLangSeqSuffix()); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME); + + sql.append(","); + sql.append(MarBasClassVO.getDefaultTableName() + "." + MarBasClassVO.NAME); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME0); + + sql.append(","); + sql.append("'' "); + sql.append(CMCommonConst1614.MATERIALSPEC); + + sql.append(","); + sql.append("'' "); + sql.append(CMCommonConst1614.MATERIALTYPE); + + sql.append(","); + sql.append("'' "); + sql.append(CMCommonConst1614.PK_MEASDOC); + } + + return sql.toString(); + } + + /** + * 成本对象统计查询的from部分 + * + * @param conditionMap 逻辑查询条件map + * @return 成本对象统计查询的from部分 + */ + private String getVcostobjFromSQL(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + if (MeasCostQueryConditionVO.FEATURE_VALUE.equals(ishowtype)) { + sql.append(this.getVcostobjFromSQLFeature(conditionMap)); + return sql.toString(); + } else if (MeasCostQueryConditionVO.NOFEATURE_VALUE.equals(ishowtype)) { + sql.append(this.getVcostobjFromSQLNoFeature(conditionMap)); + return sql.toString(); + } + sql.append(" from "); + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + Integer ishowtypeTemp = Integer.valueOf(conditionMap.get(MeasCostQueryConditionVO.ISHOWTYPE).getSingleValue()); + // 报表来源:还原前 + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + Integer ireportcontent = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT).getSingleValue()); + // 报表内容:完工成本 废品成本 + if (MeasCostQueryConditionVO.PRODCOST_VALUE.equals(ireportcontent) + || MeasCostQueryConditionVO.WASTER_VALUE.equals(ireportcontent)) { + sql.append(ProdcostHeadVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE); + sql.innerjoin(ProdcostItemVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE_B); + sql.on(CMCommonConst1614.CM_COST_TABLE, ProdcostHeadVO.CPRODCOSTID, CMCommonConst1614.CM_COST_TABLE_B, + ProdcostItemVO.CPRODCOSTID); + } + // 报表内容:在产成本 + else if (MeasCostQueryConditionVO.INPROCOST_VALUE.equals(ireportcontent)) { + sql.append(InproCostHeadVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE); + sql.innerjoin(InproCostItemVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE_B); + sql.on(CMCommonConst1614.CM_COST_TABLE, InproCostHeadVO.CINPROCOSTID, CMCommonConst1614.CM_COST_TABLE_B, + InproCostItemVO.CINPROCOSTID); + } + + // + sql.innerjoin(CostObjectVO.getDefaultTableName()); + sql.append(" "); + sql.append(CostObjectVO.getDefaultTableName()); + sql.on(CostObjectVO.getDefaultTableName(), CostObjectVO.CCOSTOBJECTID, CMCommonConst1614.CM_COST_TABLE, + CMCommonConst1614.CCOSTOBJECTID); + + // 区分显示方式 + /* + * if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { // 产品 + * sql.innerjoin(MaterialVersionVO.getDefaultTableName()); sql.append(" "); + * sql.append(MaterialVersionVO.getDefaultTableName()); + * sql.on(MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_SOURCE, + * CostObjectVO.getDefaultTableName(), CostObjectVO.CMATERIALID); } else + */if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { // 产品成本分类 + sql.innerjoin(MarCostClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarCostClassVO.getDefaultTableName()); + sql.on(MarCostClassVO.getDefaultTableName(), MarCostClassVO.PK_MARCOSTCLASS, + CostObjectVO.getDefaultTableName(), CostObjectVO.CMARCOSTCLASSID); + } + + } + // 报表来源:还原后 + else if (MeasCostQueryConditionVO.REVERT_AFTER_VALUE.equals(ireportsource)) { + sql.append(CtRevertHeadVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE); + sql.innerjoin(CtRevertItemVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE_B); + sql.on(CMCommonConst1614.CM_COST_TABLE, CtRevertHeadVO.PK_CTREVERT, CMCommonConst1614.CM_COST_TABLE_B, + CtRevertItemVO.PK_CTREVERT); + // 区分显示方式 + if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { // 产品 + sql.innerjoin(MaterialVersionVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialVersionVO.getDefaultTableName()); + sql.on(MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_SOURCE, + CMCommonConst1614.CM_COST_TABLE, CtRevertHeadVO.CMATERIALID); + + sql.innerjoin(MeasdocVO.getDefaultTableName()); + sql.append(" "); + sql.append(MeasdocVO.getDefaultTableName()); + sql.on(MeasdocVO.getDefaultTableName(), MeasdocVO.PK_MEASDOC, MaterialVersionVO.getDefaultTableName(), + MaterialVersionVO.PK_MEASDOC); + } else if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { // 产品成本分类 + sql.innerjoin(MarCostClassVO.getDefaultTableName()); + sql.append(" "); + sql.append(MarCostClassVO.getDefaultTableName()); + sql.on(MarCostClassVO.getDefaultTableName(), MarCostClassVO.PK_MARCOSTCLASS, + CMCommonConst1614.CM_COST_TABLE, CtRevertHeadVO.CMARCOSTCLASSID); + + sql.innerjoin(MaterialVersionVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialVersionVO.getDefaultTableName()); + sql.on(MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_SOURCE, + CMCommonConst1614.CM_COST_TABLE, CtRevertHeadVO.CMATERIALID); + + sql.innerjoin(MeasdocVO.getDefaultTableName()); + sql.append(" "); + sql.append(MeasdocVO.getDefaultTableName()); + sql.on(MeasdocVO.getDefaultTableName(), MeasdocVO.PK_MEASDOC, MaterialVersionVO.getDefaultTableName(), + MaterialVersionVO.PK_MEASDOC); + } + } + + // INNER JOIN bd_project bd_project ON cm_costobject.cprojectid = bd_project.pk_project + // 联查项目表 + // todo + sql.innerjoin(ProjectHeadVO.getDefaultTableName()); + sql.append(" "); + sql.append(ProjectHeadVO.getDefaultTableName()); + sql.on(ProjectHeadVO.getDefaultTableName(), "pk_project", "cm_costobject", "cprojectid"); + + // 连接核算要素 表,便于过滤查询条件:核算要素、核算要素组、管控范围 + + sql.innerjoin(CostCenterVO.getDefaultTableName() + " " + CostCenterVO.getDefaultTableName()); + sql.on(CMCommonConst1614.CM_COST_TABLE, ProdcostHeadVO.CCOSTCENTERID, CostCenterVO.getDefaultTableName(), + CostCenterVO.PK_COSTCENTER); + sql.innerjoin(FactorAsoaVO.getDefaultTableName()); + sql.append(" "); + sql.append(FactorAsoaVO.getDefaultTableName()); + sql.on(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.CELEMENTID, FactorAsoaVO.getDefaultTableName(), + FactorAsoaVO.PK_FACTORASOA); + + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + sql.innerjoin(MaterialVersionVO.getDefaultTableName()); + sql.append(" "); + sql.append(MaterialVersionVO.getDefaultTableName()); + sql.on(MaterialVersionVO.getDefaultTableName(), MaterialVersionVO.PK_SOURCE, + CostObjectVO.getDefaultTableName(), CostObjectVO.CMATERIALID); + + sql.innerjoin(MeasdocVO.getDefaultTableName()); + sql.append(" "); + sql.append(MeasdocVO.getDefaultTableName()); + sql.on(MeasdocVO.getDefaultTableName(), MeasdocVO.PK_MEASDOC, MaterialVersionVO.getDefaultTableName(), + MaterialVersionVO.PK_MEASDOC); + } + return sql.toString(); + } + + /** + * 成本对象统计查询where部分 + * + * @param paramVO 查询参数VO + * @return 成本对象统计查询where部分 + */ + private String getVcostobjWhereSQL(MeasCostParamVO paramVO) { + + return paramVO.getWhereSql(); + + } + + /** + * 成本对象统计查询的groupby部分 + * + * @param conditionMap 逻辑查询条件map + * @return 成本对象统计查询的groupby部分 + */ + private String getVcostobjGroupSQL(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getShowTypeGroupSQL(conditionMap, ishowtype)); + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + return sql.toString(); + } + + /** + * 由于区分显示方式而不同的groupby字段 + * + * @param ishowtype + * @return groupby字段 + */ + private String getShowTypeGroupSQL(Map conditionMap, Integer ishowtype) { + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + Integer ireportcontent = Integer.valueOf(-1); + String content = null; + if (conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT) != null) { + content = conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT).getSingleValue(); + } + if (content != null && MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + ireportcontent = Integer.valueOf(content); + } + + CMSqlBuilder sqlTemp = new CMSqlBuilder(); + + // 报表内容:完工成本、废品成本 + if (MeasCostQueryConditionVO.PRODCOST_VALUE.equals(ireportcontent) + || MeasCostQueryConditionVO.WASTER_VALUE.equals(ireportcontent)) { + sqlTemp.append(CMCommonConst1614.CM_COST_TABLE + "." + ProdcostHeadVO.CPRODCOSTID); + } + // 报表内容:在产成本 + else if (MeasCostQueryConditionVO.INPROCOST_VALUE.equals(ireportcontent)) { + sqlTemp.append(CMCommonConst1614.CM_COST_TABLE + "." + InproCostHeadVO.CINPROCOSTID); + } + // // 报表内容:还原成本 + else if (ireportcontent == -1) { + sqlTemp.append(CMCommonConst1614.CM_COST_TABLE + "." + CtRevertHeadVO.PK_CTREVERT); + } + + CMSqlBuilder sql = new CMSqlBuilder(); + + // 区分显示方式 + if (MeasCostQueryConditionVO.COSTOBJECT_VALUE.equals(ishowtype) + && MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { // 成本对象 + sql.groupBy(CostObjectVO.getDefaultTableName(), new String[] { CostObjectVO.VCOSTOBJCODE, + CostObjectVO.VCOSTOBJNAME, CostObjectVO.VCOSTOBJNAME + MultiLangUtil.getCurrentLangSeqSuffix() }); + sql.append("," + MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALSPEC); + sql.append("," + MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALTYPE); + sql.append("," + MeasdocVO.getDefaultTableName() + "." + MeasdocVO.NAME); + } else if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { // 产品 + sql.groupBy(MaterialVersionVO.getDefaultTableName(), new String[] { MaterialVersionVO.CODE, + MaterialVersionVO.NAME, MaterialVersionVO.NAME + MultiLangUtil.getCurrentLangSeqSuffix() }); + sql.append("," + MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALSPEC); + sql.append("," + MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALTYPE); + sql.append("," + MeasdocVO.getDefaultTableName() + "." + MeasdocVO.NAME); + } else if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { // 产品成本分类 + sql.groupBy(MarCostClassVO.getDefaultTableName(), new String[] { MarCostClassVO.CODE, MarCostClassVO.NAME, + MarCostClassVO.NAME + MultiLangUtil.getCurrentLangSeqSuffix() }); + + sql.append("," + MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALSPEC); + sql.append("," + MaterialVersionVO.getDefaultTableName() + "." + this.MATERIALTYPE); + sql.append("," + MeasdocVO.getDefaultTableName() + "." + MeasdocVO.NAME); + } else if (MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE.equals(ishowtype)) { // 产品基本分类 + sql.groupBy(MarBasClassVO.getDefaultTableName(), new String[] { MarBasClassVO.CODE, MarBasClassVO.NAME, + MarBasClassVO.NAME + MultiLangUtil.getCurrentLangSeqSuffix() }); + } + // 成本中心多语名称 + String ccname = CMUtil.getFiledNameByMultiLang(CostCenterVO.CCNAME); + sql.append("," + CostCenterVO.getDefaultTableName() + "." + CostCenterVO.CCCODE); + sql.append(",isnull(" + CostCenterVO.getDefaultTableName() + "." + ccname + "," + + CostCenterVO.getDefaultTableName() + "." + CostCenterVO.CCNAME + ")"); + sql.append(","); + sql.append(sqlTemp); + + return sql.toString(); + } + + /** + * 核算要素统计查询Select部分 + * + * @param conditionMap 逻辑查询条件map + * @return 核算要素统计查询Select部分 + */ + private String getFactorSelectSQL(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getShowTypeSelectSQL(conditionMap, ishowtype)); + + sql.append(","); + sql.append( + FactorVO.getDefaultTableName() + "." + FactorVO.FACTORNAME + MultiLangUtil.getCurrentLangSeqSuffix()); + sql.append(" "); + sql.append(CMCommonConst1614.FACTORNAME); + + sql.append(","); + sql.append(FactorVO.getDefaultTableName() + "." + FactorVO.FACTORNAME); + sql.append(" "); + sql.append(CMCommonConst1614.FACTORNAME0); + + sql.append(","); + sql.append(FactorVO.getDefaultTableName() + "." + FactorVO.FACTORCODE); + + sql.append(","); + sql.append("max("); + sql.append(FactorVO.getDefaultTableName()); + sql.append("."); + sql.append(FactorVO.FACTORLEV); + sql.append(")"); + sql.append(" "); + sql.append(FactorVO.FACTORLEV); + sql.append(","); + sql.append("max("); + sql.append(FactorAsoaVO.getDefaultTableName()); + sql.append("."); + sql.append(FactorAsoaVO.PK_FACTORASOA); + sql.append(")"); + sql.append(" "); + sql.append(FactorAsoaVO.PK_FACTORASOA); + sql.append(","); + + // todo 增加项目字段 + sql.append("max("); + sql.append(ProjectHeadVO.getDefaultTableName()); + sql.append("."); + sql.append("project_code"); + sql.append(")"); + sql.append(" "); + sql.append("project_code"); + sql.append(","); + sql.append("max("); + sql.append(ProjectHeadVO.getDefaultTableName()); + sql.append("."); + sql.append("project_name"); + sql.append(")"); + sql.append(" "); + sql.append("project_name"); + sql.append(","); + + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + // 报表来源:还原前 + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NMONEY, CMCommonConst1614.FACTOR_NSUM); + } + // 报表来源:还原后 + else if (MeasCostQueryConditionVO.REVERT_AFTER_VALUE.equals(ireportsource)) { + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CtRevertItemVO.AFTERCOST, CMCommonConst1614.FACTOR_NSUM); + } + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.STDCOST_ITEMS, showDetailDiff)) { // 显示标准成本 + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NSTDCOST, CMCommonConst1614.NSTDCOST_FACTOR); + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NNUMDIFF, CMCommonConst1614.NNUMDIFF_FACTOR); + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NPRICEDIFF, + CMCommonConst1614.NPRICEDIFF_FACTOR); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + + return sql.toString(); + } + + /** + * 核算要素统计查询Select部分----- 查作业对应的核算要素时用 + * + * @param conditionMap 逻辑查询条件map + * @return 核算要素统计查询Select部分 + */ + private String getFactorSelectSQLAct(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getShowTypeSelectSQL(conditionMap, ishowtype)); + sql.append(","); + + // sql.append(FactorAsoaVO.getDefaultTableName() + "." + + // FactorAsoaVO.FACTORNAME); + // sql.append(","); + // sql.append(FactorAsoaVO.getDefaultTableName() + "." + + // FactorAsoaVO.FACTORCODE); + // 查作业对应的核算要素时用 + sql.append(FactorAsoaVO.getDefaultTableName() + "_activity." + FactorAsoaVO.FACTORNAME + + MultiLangUtil.getCurrentLangSeqSuffix()); + sql.append(" "); + sql.append(CMCommonConst1614.FACTORNAME); + sql.append(","); + + sql.append(FactorAsoaVO.getDefaultTableName() + "_activity." + FactorAsoaVO.FACTORNAME); + sql.append(" "); + sql.append(CMCommonConst1614.FACTORNAME0); + sql.append(","); + + sql.append(FactorAsoaVO.getDefaultTableName() + "_activity." + FactorAsoaVO.FACTORCODE); + + sql.append(","); + // sql.append("max("); + // sql.append(FactorVO.getDefaultTableName()); + // sql.append("."); + // sql.append(FactorVO.FACTORLEV); + // sql.append(")"); + sql.append(" 0 ");// 作业对应的核算要素,级次就定为0(末级),不用再根据查询条件中的核算要素级次去查上下级要素了! + sql.append(" "); + sql.append(FactorVO.FACTORLEV); + sql.append(","); + sql.append("max("); + sql.append(FactorAsoaVO.getDefaultTableName() + "_activity");// 查作业对应的核算要素时用 + sql.append("."); + sql.append(FactorAsoaVO.PK_FACTORASOA); + sql.append(")"); + sql.append(" "); + sql.append(FactorAsoaVO.PK_FACTORASOA); + sql.append(","); + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + // 报表来源:还原前 + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NMONEY, CMCommonConst1614.FACTOR_NSUM); + } + // 报表来源:还原后 + else if (MeasCostQueryConditionVO.REVERT_AFTER_VALUE.equals(ireportsource)) { + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CtRevertItemVO.AFTERCOST, CMCommonConst1614.FACTOR_NSUM); + } + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.STDCOST_ITEMS, showDetailDiff)) { // 显示标准成本 + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NSTDCOST, CMCommonConst1614.NSTDCOST_FACTOR); + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NNUMDIFF, CMCommonConst1614.NNUMDIFF_FACTOR); + sql.append(","); + sql.sum(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.NPRICEDIFF, + CMCommonConst1614.NPRICEDIFF_FACTOR); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + + return sql.toString(); + } + + /** + * 核算要素统计查询from部分(不单列作业成本时) + * + * @param conditionMap 逻辑查询条件map + * @return 核算要素统计查询from部分 + */ + private String getFactorFromSQL(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getVcostobjFromSQL(conditionMap, ishowtype)); + // sql.innerjoin(FactorAsoaVO.getDefaultTableName()); + // sql.append(" "); + // sql.append(FactorAsoaVO.getDefaultTableName()); + // sql.on(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.CELEMENTID, + // FactorAsoaVO.getDefaultTableName(), + // FactorAsoaVO.PK_FACTORASOA); + sql.append(MeasCostFactorSQLBuilder.getFactorCodeFromSQL()); + return sql.toString(); + } + + /** + * 核算要素统计查询from部分(单列作业成本时,取得与作业相关的核算要素) + * + * @param conditionMap 逻辑查询条件map + * @return 核算要素统计查询from部分 + */ + private String getFactorFromSQLAct(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getVcostobjFromSQL(conditionMap, ishowtype)); + sql.innerjoin(BDActivityVO.getDefaultTableName()); + sql.append(" "); + sql.append(BDActivityVO.getDefaultTableName()); + sql.on(BDActivityVO.getDefaultTableName(), BDActivityVO.CACTIVITYID, CMCommonConst1614.CM_COST_TABLE_B, + CMCommonConst1614.CACTIVITYID); + + return sql.toString(); + } + + /** + * 核算要素统计查询from部分(单列作业成本时,取得与作业无关的核算要素) + * + * @param conditionMap 逻辑查询条件map + * @return 核算要素统计查询from部分 + */ + private String getFactorFromSQLNoAct(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getVcostobjFromSQL(conditionMap, ishowtype)); + // sql.innerjoin(FactorAsoaVO.getDefaultTableName()); + // sql.append(" "); + // sql.append(FactorAsoaVO.getDefaultTableName()); + // sql.on(CMCommonConst1614.CM_COST_TABLE_B, CMCommonConst1614.CELEMENTID, + // FactorAsoaVO.getDefaultTableName(), + // FactorAsoaVO.PK_FACTORASOA); + sql.and(); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.CACTIVITYID); + sql.append(" ='~' "); + + sql.append(MeasCostFactorSQLBuilder.getFactorCodeFromSQL()); + return sql.toString(); + } + + /** + * 核算要素统计查询where部分 + * + * @param paramVO 查询参数VO + * @return 核算要素统计查询where部分 + */ + private String getFactorWhereSQL(MeasCostParamVO paramVO) { + // CMSqlBuilder sql = new CMSqlBuilder(); + // sql.append(MeasCostFactorSQLBuilder.getFactorCodeWhereSQL(paramVO)); + // // conditionVOs取得其他查询条件 + // return sql.toString(); + return paramVO.getWhereSql(); + } + + /** + * 核算要素统计查询group部分 + * + * @param conditionMap 逻辑查询条件map + * @return 核算要素统计查询group部分 + */ + private String getFactorGroupSQL(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getShowTypeGroupSQL(conditionMap, ishowtype)); + sql.append(","); + sql.append(FactorVO.getDefaultTableName() + "." + FactorVO.FACTORCODE); + + sql.append(","); + sql.append( + FactorVO.getDefaultTableName() + "." + FactorVO.FACTORNAME + MultiLangUtil.getCurrentLangSeqSuffix()); + + sql.append(","); + sql.append(FactorVO.getDefaultTableName() + "." + FactorVO.FACTORNAME); + + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + return sql.toString(); + } + + /** + * 核算要素统计查询group部分--------查询作业对应核算要素时用 + * + * @param conditionMap 逻辑查询条件map + * @return 核算要素统计查询group部分 + */ + private String getFactorGroupSQLAct(Map conditionMap, Integer ishowtype) { + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(this.getShowTypeGroupSQL(conditionMap, ishowtype)); + sql.append(","); + + // sql.append(FactorVO.getDefaultTableName() + "." + FactorVO.FACTORCODE); + // sql.append(","); + // sql.append(FactorVO.getDefaultTableName() + "." + FactorVO.FACTORNAME); + // 查询作业对应核算要素时用 + sql.append(FactorAsoaVO.getDefaultTableName() + "_activity." + FactorAsoaVO.FACTORCODE); + sql.append(","); + sql.append(FactorAsoaVO.getDefaultTableName() + "_activity." + FactorAsoaVO.FACTORNAME); + sql.append(","); + sql.append(FactorAsoaVO.getDefaultTableName() + "_activity." + FactorAsoaVO.FACTORNAME + + MultiLangUtil.getCurrentLangSeqSuffix()); + + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append(CMCommonConst1614.CM_COST_TABLE_B + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + return sql.toString(); + } + + /** + * 对getVcostobjSelectSQLFor 再次转义 + * + * @param conditionMap + * @return + */ + private String getVcostobjSelectSQLForNNum(Map conditionMap) { + + CMSqlBuilder sql = new CMSqlBuilder(); + sql.append(" select "); + sql.select("tt", new String[] { CMCommonConst1614.VCOSTOBJCODE, CMCommonConst1614.VCOSTOBJNAME }); + + sql.append(","); + sql.append(CMCommonConst1614.VCOSTOBJNAME0); + sql.append(" "); + sql.append(CMCommonConst1614.VCOSTOBJNAME0); + sql.append(",tt." + CMCommonConst1614.CCCODE); + sql.append(",tt." + CMCommonConst1614.CCNAME); + sql.append(","); + sql.append(CMCommonConst1614.MATERIALSPEC); + sql.append(","); + sql.append(CMCommonConst1614.MATERIALTYPE); + sql.append(","); + sql.append(CMCommonConst1614.PK_MEASDOC); + + sql.append(",sum(tt."); + sql.append(CMCommonConst1614.NNUM); + sql.append(") "); + sql.append(CMCommonConst1614.NNUM); + sql.append(",sum(tt."); + sql.append(CMCommonConst1614.NSUM); + sql.append(") "); + sql.append(CMCommonConst1614.NSUM); + + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.STDCOST_ITEMS, showDetailDiff)) { // 显示标准成本 + // 合计-标准成本 + sql.append(",sum(tt."); + sql.append(CMCommonConst1614.NSTDCOST_NSUM); + sql.append(") "); + sql.append(CMCommonConst1614.NSTDCOST_NSUM); + + // 合计-耗量差异 + sql.append(",sum(tt."); + sql.append(CMCommonConst1614.NNUMDIFF_NSUM); + sql.append(") "); + sql.append(CMCommonConst1614.NNUMDIFF_NSUM); + + // 合计-价格差异 + sql.append(",sum(tt."); + sql.append(CMCommonConst1614.NPRICEDIFF_NSUM); + sql.append(") "); + sql.append(CMCommonConst1614.NPRICEDIFF_NSUM); + + } else if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append("tt" + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append("tt" + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + + sql.append(" from "); + + return sql.toString(); + + } + + private String getVcostobjGroupSQLForNNum(Map conditionMap) { + + CMSqlBuilder sql = new CMSqlBuilder(); + + sql.groupBy("tt", + new String[] { CMCommonConst1614.VCOSTOBJCODE, CMCommonConst1614.VCOSTOBJNAME, + CMCommonConst1614.VCOSTOBJNAME0, CMCommonConst1614.CCCODE, CMCommonConst1614.CCNAME, + CMCommonConst1614.MATERIALSPEC, CMCommonConst1614.MATERIALTYPE, CMCommonConst1614.PK_MEASDOC }); + + // 显示明细区分 + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + if (CMArrayUtil.isEquals(CMCommonConst1614.SUBTYPE_ITEMS, showDetailDiff)) { // 区分本下阶 + sql.append(","); + sql.append("tt" + "." + CMCommonConst1614.BSUBTYPE); + } else if (CMArrayUtil.isEquals(CMCommonConst1614.CENTERFROM_ITEMS, showDetailDiff)) { // 区分成本中心 + sql.append(","); + sql.append("tt" + "." + CMCommonConst1614.BFROMCOSTCENTER); + } + return sql.toString(); + } + + public String getSQLMeasdocForNumDigits(MeasCostParamVO paramVO) { + Map conditionMap = paramVO.getConditionMap(); + Integer ireportsource = Integer + .valueOf(conditionMap.get(MeasCostQueryConditionVO.IREPORTSOURCE).getSingleValue()); + Integer ireportcontent = Integer.valueOf(-1); + + String content = null; + if (conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT) != null) { + content = conditionMap.get(MeasCostQueryConditionVO.IREPORTCONTENT).getSingleValue(); + } + if (content != null) { + ireportcontent = Integer.valueOf(content); + } + + // 报表来源:还原前 + if (MeasCostQueryConditionVO.REVERT_BEFORE_VALUE.equals(ireportsource)) { + // 报表内容:完工成本 废品成本 + if (MeasCostQueryConditionVO.PRODCOST_VALUE.equals(ireportcontent) + || MeasCostQueryConditionVO.WASTER_VALUE.equals(ireportcontent)) { + return this.getSQLMeasdocByProdcost(paramVO); + } + // 报表内容:在产成本 + else if (MeasCostQueryConditionVO.INPROCOST_VALUE.equals(ireportcontent)) { + return this.getSQLMeasdocByInProdcost(paramVO); + } + } + // 报表来源:还原后 + return this.getSQLMeasdocByCtrevProdcost(paramVO); + + } + + private String getSQLMeasdocByProdcost(MeasCostParamVO paramVO) { + CMSqlBuilder sql = new CMSqlBuilder(); + + sql.append(" select CM_COST_TABLE.cmeasdocid from "); + sql.append(ProdcostHeadVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE); + sql.innerjoin(ProdcostItemVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE_B); + sql.on(CMCommonConst1614.CM_COST_TABLE, ProdcostHeadVO.CPRODCOSTID, CMCommonConst1614.CM_COST_TABLE_B, + ProdcostItemVO.CPRODCOSTID); + + sql.innerjoin(FactorAsoaVO.getDefaultTableName()); + sql.on(CMCommonConst1614.CM_COST_TABLE_B, ProdcostItemVO.CELEMENTID, FactorAsoaVO.getDefaultTableName(), + FactorAsoaVO.PK_FACTORASOA); + sql.append(" "); + sql.innerjoin(CostObjectVO.getDefaultTableName()); + sql.on(CMCommonConst1614.CM_COST_TABLE, ProdcostHeadVO.CCOSTOBJECTID, CostObjectVO.getDefaultTableName(), + CostObjectVO.CCOSTOBJECTID); + sql.append(" "); + + sql.append(paramVO.getWhereSql()); + return sql.toString(); + } + + private String getSQLMeasdocByInProdcost(MeasCostParamVO paramVO) { + CMSqlBuilder sql = new CMSqlBuilder(); + + sql.append(" select CM_COST_TABLE.cmeasdocid from "); + sql.append(InproCostHeadVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE); + sql.innerjoin(InproCostItemVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE_B); + sql.on(CMCommonConst1614.CM_COST_TABLE, InproCostHeadVO.CINPROCOSTID, CMCommonConst1614.CM_COST_TABLE_B, + InproCostItemVO.CINPROCOSTID); + + sql.innerjoin(FactorAsoaVO.getDefaultTableName()); + sql.on(CMCommonConst1614.CM_COST_TABLE_B, InproCostItemVO.CELEMENTID, FactorAsoaVO.getDefaultTableName(), + FactorAsoaVO.PK_FACTORASOA); + sql.append(" "); + sql.innerjoin(CostObjectVO.getDefaultTableName()); + sql.on(CMCommonConst1614.CM_COST_TABLE, InproCostHeadVO.CCOSTOBJECTID, CostObjectVO.getDefaultTableName(), + CostObjectVO.CCOSTOBJECTID); + sql.append(" "); + + sql.append(paramVO.getWhereSql()); + return sql.toString(); + } + + private String getSQLMeasdocByCtrevProdcost(MeasCostParamVO paramVO) { + CMSqlBuilder sql = new CMSqlBuilder(); + + sql.append(" select CM_COST_TABLE.cmeasureid from "); + + sql.append(CtRevertHeadVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE); + sql.innerjoin(CtRevertItemVO.getDefaultTableName()); + sql.append(" "); + sql.append(CMCommonConst1614.CM_COST_TABLE_B); + sql.on(CMCommonConst1614.CM_COST_TABLE, CtRevertHeadVO.PK_CTREVERT, CMCommonConst1614.CM_COST_TABLE_B, + CtRevertItemVO.PK_CTREVERT); + + sql.innerjoin(FactorAsoaVO.getDefaultTableName()); + sql.on(CMCommonConst1614.CM_COST_TABLE_B, CtRevertItemVO.CELEMENTID, FactorAsoaVO.getDefaultTableName(), + FactorAsoaVO.PK_FACTORASOA); + sql.append(" "); + + sql.append(paramVO.getWhereSql()); + return sql.toString(); + } + +} diff --git a/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostCenterfrom.java b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostCenterfrom.java new file mode 100644 index 0000000..5b846d6 --- /dev/null +++ b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostCenterfrom.java @@ -0,0 +1,111 @@ +package nc.bs.cm.meascostcontrast.process; + +import java.util.List; +import nc.bd.framework.base.CMNumberUtil2; +import nc.bs.cm.meascostcontrast.strategy.IMeasCostStrategy; +import nc.cmpub.framework.util.CMValidateUtil; +import nc.vo.cm.meascostcontrast.MeasCostItemVO; +import nc.vo.cm.meascostcontrast.MeasCostQueryResultVO; +import nc.vo.pub.lang.UFDouble; + +public class MeasCostCenterfrom implements IMeasCostStrategy { + public void saveItem(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + itemVO.setCccode(((MeasCostQueryResultVO) factorList.get(0)).getCccode()); + + itemVO.setCcname(((MeasCostQueryResultVO) factorList.get(0)).getCcname()); + + itemVO.setVcostobjcode(((MeasCostQueryResultVO) factorList.get(0)).getVcostobjcode()); + + itemVO.setVcostobjname(((MeasCostQueryResultVO) factorList.get(0)).getVcostobjname()); + + itemVO.setProjectcode(((MeasCostQueryResultVO) factorList.get(0)).getProjectcode()); + itemVO.setProjectname(((MeasCostQueryResultVO) factorList.get(0)).getProjectname()); + + itemVO.setNnum(((MeasCostQueryResultVO) factorList.get(0)).getNnum()); + + UFDouble nmeascostN = UFDouble.ZERO_DBL; + + UFDouble nmeascostY = UFDouble.ZERO_DBL; + + UFDouble nsumN = UFDouble.ZERO_DBL; + + UFDouble nsumY = UFDouble.ZERO_DBL; + + for (MeasCostQueryResultVO resultVO : factorList) { + + String bfromcostcenter = resultVO.getBfromcostcenter(); + if ("N".equals(bfromcostcenter)) { + + nsumN = resultVO.getNsum(); + + nmeascostN = CMNumberUtil2.div(nsumN, + new UFDouble[] { ((MeasCostQueryResultVO) factorList.get(0)).getNnum() }); + + continue; + } + if ("Y".equals(bfromcostcenter)) { + + nsumY = resultVO.getNsum(); + + nmeascostY = CMNumberUtil2.div(nsumY, + new UFDouble[] { ((MeasCostQueryResultVO) factorList.get(0)).getNnum() }); + } + } + + itemVO.setAttrbuteByRule("nmeascost", "ncost", CMNumberUtil2.add(new UFDouble[] { nmeascostN, nmeascostY })); + + itemVO.setAttrbuteByRule("nmeascost", "thiscenter", nmeascostN); + + itemVO.setAttrbuteByRule("nmeascost", "othercenter", nmeascostY); + + itemVO.setAttrbuteByRule("nsum", "ncost", CMNumberUtil2.add(new UFDouble[] { nsumN, nsumY })); + + itemVO.setAttrbuteByRule("nsum", "thiscenter", nsumN); + + itemVO.setAttrbuteByRule("nsum", "othercenter", nsumY); + } + + public void saveFactor(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + String factorcode = ((MeasCostQueryResultVO) factorList.get(0)).getFactorcode(); + + UFDouble factornsumN = UFDouble.ZERO_DBL; + + UFDouble factornsumY = UFDouble.ZERO_DBL; + + for (MeasCostQueryResultVO resultVO : factorList) { + String bfromcostcenter = resultVO.getBfromcostcenter(); + + if ("N".equals(bfromcostcenter)) { + + factornsumN = CMNumberUtil2.add(new UFDouble[] { factornsumN, resultVO.getFactorNsum() }); + + continue; + } + if ("Y".equals(bfromcostcenter)) { + + factornsumY = CMNumberUtil2.add(new UFDouble[] { factornsumY, resultVO.getFactorNsum() }); + } + } + + itemVO.setAttrbuteByRule(factorcode, "ncost", CMNumberUtil2.add(new UFDouble[] { factornsumN, factornsumY })); + + itemVO.setAttrbuteByRule(factorcode, "thiscenter", factornsumN); + + itemVO.setAttrbuteByRule(factorcode, "othercenter", factornsumY); + } +} + +/* + * Location: + * E:\yongyou\tk_nchome\ncchome\modules\cm\META-INF\lib\cm_cmreport.jar!/nc/bs/ + * cm/meascostcontrast/process/MeasCostCenterfrom.class Java compiler version: 8 + * (52.0) JD-Core Version: 1.0.7 + */ \ No newline at end of file diff --git a/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostDefault.java b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostDefault.java new file mode 100644 index 0000000..dd5042a --- /dev/null +++ b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostDefault.java @@ -0,0 +1,59 @@ +package nc.bs.cm.meascostcontrast.process; + +import java.util.List; +import nc.bd.framework.base.CMNumberUtil2; +import nc.bs.cm.meascostcontrast.strategy.IMeasCostStrategy; +import nc.cmpub.framework.util.CMValidateUtil; +import nc.vo.cm.meascostcontrast.MeasCostItemVO; +import nc.vo.cm.meascostcontrast.MeasCostQueryResultVO; +import nc.vo.pub.lang.UFDouble; + +public class MeasCostDefault implements IMeasCostStrategy { + public void saveItem(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + MeasCostQueryResultVO resultVO = (MeasCostQueryResultVO) factorList.get(0); + + itemVO.setCccode(resultVO.getCccode()); + + itemVO.setCcname(resultVO.getCcname()); + + itemVO.setVcostobjcode(resultVO.getVcostobjcode()); + + itemVO.setVcostobjname(resultVO.getVcostobjname()); + + itemVO.setProjectcode(resultVO.getProjectcode()); + itemVO.setProjectname(resultVO.getProjectname()); + + itemVO.setNnum(resultVO.getNnum()); + + itemVO.setAttrbuteByRule("nsum", "ncost", resultVO.getNsum()); + + itemVO.setAttrbuteByRule("nmeascost", "ncost", + CMNumberUtil2.div(resultVO.getNsum(), new UFDouble[] { resultVO.getNnum() })); + } + + public void saveFactor(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + MeasCostQueryResultVO resultVO = (MeasCostQueryResultVO) factorList.get(0); + + UFDouble factorNsum = UFDouble.ZERO_DBL; + for (MeasCostQueryResultVO vo : factorList) { + factorNsum = CMNumberUtil2.add(new UFDouble[] { factorNsum, vo.getFactorNsum() }); + } + + itemVO.setAttrbuteByRule(resultVO.getFactorcode(), "ncost", factorNsum); + } +} + +/* + * Location: + * E:\yongyou\tk_nchome\ncchome\modules\cm\META-INF\lib\cm_cmreport.jar!/nc/bs/ + * cm/meascostcontrast/process/MeasCostDefault.class Java compiler version: 8 + * (52.0) JD-Core Version: 1.0.7 + */ \ No newline at end of file diff --git a/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostStdcost.java b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostStdcost.java new file mode 100644 index 0000000..185dba8 --- /dev/null +++ b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostStdcost.java @@ -0,0 +1,88 @@ +package nc.bs.cm.meascostcontrast.process; + +import java.util.List; +import nc.bd.framework.base.CMNumberUtil2; +import nc.bs.cm.meascostcontrast.strategy.IMeasCostStrategy; +import nc.cmpub.framework.util.CMValidateUtil; +import nc.vo.cm.meascostcontrast.MeasCostItemVO; +import nc.vo.cm.meascostcontrast.MeasCostQueryResultVO; +import nc.vo.pub.lang.UFDouble; + +public class MeasCostStdcost implements IMeasCostStrategy { + public void saveItem(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + MeasCostQueryResultVO resultVO = (MeasCostQueryResultVO) factorList.get(0); + + itemVO.setCccode(resultVO.getCccode()); + + itemVO.setCcname(resultVO.getCcname()); + + itemVO.setVcostobjcode(resultVO.getVcostobjcode()); + + itemVO.setVcostobjname(resultVO.getVcostobjname()); + + itemVO.setProjectcode(resultVO.getProjectcode()); + itemVO.setProjectname(resultVO.getProjectname()); + + itemVO.setNnum(resultVO.getNnum()); + + itemVO.setAttrbuteByRule("nmeascost", "ncost", + CMNumberUtil2.div(resultVO.getNsum(), new UFDouble[] { resultVO.getNnum() })); + + itemVO.setAttrbuteByRule("nmeascost", "nstdcost", + CMNumberUtil2.div(resultVO.getNstdcostNsum(), new UFDouble[] { resultVO.getNnum() })); + + itemVO.setAttrbuteByRule("nmeascost", "nnumdiff", + CMNumberUtil2.div(resultVO.getNnumdiffNsum(), new UFDouble[] { resultVO.getNnum() })); + + itemVO.setAttrbuteByRule("nmeascost", "npricediff", + CMNumberUtil2.div(resultVO.getNpricediffNsum(), new UFDouble[] { resultVO.getNnum() })); + + itemVO.setAttrbuteByRule("nsum", "ncost", resultVO.getNsum()); + + itemVO.setAttrbuteByRule("nsum", "nstdcost", resultVO.getNstdcostNsum()); + + itemVO.setAttrbuteByRule("nsum", "nnumdiff", resultVO.getNnumdiffNsum()); + + itemVO.setAttrbuteByRule("nsum", "npricediff", resultVO.getNpricediffNsum()); + } + + public void saveFactor(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + MeasCostQueryResultVO resultVO = (MeasCostQueryResultVO) factorList.get(0); + UFDouble factorNsum = UFDouble.ZERO_DBL; + UFDouble nstdcostFactor = UFDouble.ZERO_DBL; + UFDouble nnumdiffFactor = UFDouble.ZERO_DBL; + UFDouble npricediffFactor = UFDouble.ZERO_DBL; + + for (MeasCostQueryResultVO vo : factorList) { + factorNsum = CMNumberUtil2.add(new UFDouble[] { factorNsum, vo.getFactorNsum() }); + nstdcostFactor = CMNumberUtil2.add(new UFDouble[] { nstdcostFactor, vo.getNstdcostFactor() }); + nnumdiffFactor = CMNumberUtil2.add(new UFDouble[] { nnumdiffFactor, vo.getNnumdiffFactor() }); + npricediffFactor = CMNumberUtil2.add(new UFDouble[] { npricediffFactor, vo.getNpricediffFactor() }); + } + + String factorcode = resultVO.getFactorcode(); + + itemVO.setAttrbuteByRule(factorcode, "ncost", factorNsum); + + itemVO.setAttrbuteByRule(factorcode, "nstdcost", nstdcostFactor); + + itemVO.setAttrbuteByRule(factorcode, "nnumdiff", nnumdiffFactor); + + itemVO.setAttrbuteByRule(factorcode, "npricediff", npricediffFactor); + } +} + +/* + * Location: + * E:\yongyou\tk_nchome\ncchome\modules\cm\META-INF\lib\cm_cmreport.jar!/nc/bs/ + * cm/meascostcontrast/process/MeasCostStdcost.class Java compiler version: 8 + * (52.0) JD-Core Version: 1.0.7 + */ \ No newline at end of file diff --git a/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostSubtype.java b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostSubtype.java new file mode 100644 index 0000000..256d1d4 --- /dev/null +++ b/cm/src/private/nc/bs/cm/meascostcontrast/process/MeasCostSubtype.java @@ -0,0 +1,111 @@ +package nc.bs.cm.meascostcontrast.process; + +import java.util.List; +import nc.bd.framework.base.CMNumberUtil2; +import nc.bs.cm.meascostcontrast.strategy.IMeasCostStrategy; +import nc.cmpub.framework.util.CMValidateUtil; +import nc.vo.cm.meascostcontrast.MeasCostItemVO; +import nc.vo.cm.meascostcontrast.MeasCostQueryResultVO; +import nc.vo.pub.lang.UFDouble; + +public class MeasCostSubtype implements IMeasCostStrategy { + public void saveItem(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + itemVO.setCccode(((MeasCostQueryResultVO) factorList.get(0)).getCccode()); + + itemVO.setCcname(((MeasCostQueryResultVO) factorList.get(0)).getCcname()); + + itemVO.setVcostobjcode(((MeasCostQueryResultVO) factorList.get(0)).getVcostobjcode()); + + itemVO.setVcostobjname(((MeasCostQueryResultVO) factorList.get(0)).getVcostobjname()); + + itemVO.setProjectcode(((MeasCostQueryResultVO) factorList.get(0)).getProjectcode()); + itemVO.setProjectname(((MeasCostQueryResultVO) factorList.get(0)).getProjectname()); + + itemVO.setNnum(((MeasCostQueryResultVO) factorList.get(0)).getNnum()); + + UFDouble nmeascostN = UFDouble.ZERO_DBL; + + UFDouble nmeascostY = UFDouble.ZERO_DBL; + + UFDouble nsumN = UFDouble.ZERO_DBL; + + UFDouble nsumY = UFDouble.ZERO_DBL; + + for (MeasCostQueryResultVO resultVO : factorList) { + String bsubtype = resultVO.getBsubtype(); + + if ("N".equals(bsubtype)) { + + nsumN = resultVO.getNsum(); + + nmeascostN = CMNumberUtil2.div(nsumN, + new UFDouble[] { ((MeasCostQueryResultVO) factorList.get(0)).getNnum() }); + + continue; + } + if ("Y".equals(bsubtype)) { + + nsumY = resultVO.getNsum(); + + nmeascostY = CMNumberUtil2.div(nsumY, + new UFDouble[] { ((MeasCostQueryResultVO) factorList.get(0)).getNnum() }); + } + } + + itemVO.setAttrbuteByRule("nmeascost", "ncost", CMNumberUtil2.add(new UFDouble[] { nmeascostN, nmeascostY })); + + itemVO.setAttrbuteByRule("nmeascost", "thistype", nmeascostN); + + itemVO.setAttrbuteByRule("nmeascost", "subtype", nmeascostY); + + itemVO.setAttrbuteByRule("nsum", "ncost", CMNumberUtil2.add(new UFDouble[] { nsumN, nsumY })); + + itemVO.setAttrbuteByRule("nsum", "thistype", nsumN); + + itemVO.setAttrbuteByRule("nsum", "subtype", nsumY); + } + + public void saveFactor(List factorList, MeasCostItemVO itemVO) { + if (CMValidateUtil.isEmpty(factorList)) { + return; + } + + String factorcode = ((MeasCostQueryResultVO) factorList.get(0)).getFactorcode(); + + UFDouble factornsumN = UFDouble.ZERO_DBL; + + UFDouble factornsumY = UFDouble.ZERO_DBL; + + for (MeasCostQueryResultVO resultVO : factorList) { + String bsubtype = resultVO.getBsubtype(); + + if ("N".equals(bsubtype)) { + + factornsumN = CMNumberUtil2.add(new UFDouble[] { factornsumN, resultVO.getFactorNsum() }); + + continue; + } + if ("Y".equals(bsubtype)) { + + factornsumY = CMNumberUtil2.add(new UFDouble[] { factornsumY, resultVO.getFactorNsum() }); + } + } + + itemVO.setAttrbuteByRule(factorcode, "ncost", CMNumberUtil2.add(new UFDouble[] { factornsumN, factornsumY })); + + itemVO.setAttrbuteByRule(factorcode, "thistype", factornsumN); + + itemVO.setAttrbuteByRule(factorcode, "subtype", factornsumY); + } +} + +/* + * Location: + * E:\yongyou\tk_nchome\ncchome\modules\cm\META-INF\lib\cm_cmreport.jar!/nc/bs/ + * cm/meascostcontrast/process/MeasCostSubtype.class Java compiler version: 8 + * (52.0) JD-Core Version: 1.0.7 + */ \ No newline at end of file