diff --git a/cm/src/private/nccloud/pubimpl/cm/cmreport/meascostcontrast/MeascostcontrastComServiceImpl.java b/cm/src/private/nccloud/pubimpl/cm/cmreport/meascostcontrast/MeascostcontrastComServiceImpl.java index 27a73dd..a5a09ec 100644 --- a/cm/src/private/nccloud/pubimpl/cm/cmreport/meascostcontrast/MeascostcontrastComServiceImpl.java +++ b/cm/src/private/nccloud/pubimpl/cm/cmreport/meascostcontrast/MeascostcontrastComServiceImpl.java @@ -1,29 +1,11 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) -// - package nccloud.pubimpl.cm.cmreport.meascostcontrast; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import nc.bd.framework.base.CMArrayUtil; import nc.bd.framework.base.CMNumberUtil2; import nc.bd.framework.base.CMStringUtil; import nc.bs.cm.meascostcontrast.MeasCostQueryVOConverter; import nc.cmpub.business.util.CMUtil; -import nc.vo.cm.meascostcontrast.CMCommonConst1614; -import nc.vo.cm.meascostcontrast.CMLangConst1614; -import nc.vo.cm.meascostcontrast.MeasCostItemVO; -import nc.vo.cm.meascostcontrast.MeasCostParamVO; -import nc.vo.cm.meascostcontrast.MeasCostQueryConditionVO; -import nc.vo.cm.meascostcontrast.MeasCostShowVO; -import nc.vo.cm.meascostcontrast.MeasCostUtil; +import nc.vo.cm.meascostcontrast.*; import nc.vo.cmpub.framework.report.CMConditionVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDouble; @@ -33,379 +15,557 @@ import nccloud.pubitf.cm.meascostcontrast.ColumnMultiHeadInfo; import nccloud.pubitf.cm.meascostcontrast.IColumnInfo; import nccloud.pubitf.cm.meascostcontrast.IMeascostcontrastComService; +import java.util.*; + +/** + * @author wangjwt + * @version 2019-4-29 上午11:02:23 + * @since v6.3 + */ public class MeascostcontrastComServiceImpl implements IMeascostcontrastComService { + /** + * 动态汇总列 + */ private List sumFieldCode = null; - public MeascostcontrastComServiceImpl() { - } - + @Override public Map queryMeascostcontrast(MeasCostShowVO showVO, MeasCostParamVO paramVO) throws BusinessException { - this.sumFieldCode = new ArrayList(); + this.sumFieldCode = new ArrayList(); + // 取得逻辑查询条件 Map conditionMap = paramVO.getConditionMap(); + // 获取动态处理完的列 List itemgroupMap = null; - List> data = new ArrayList(); - Map result = new HashMap(); + // 返回处理完整的列对应的数据 + List> data = new ArrayList>(); + // 返回总的结果 + Map result = new HashMap(); + // 调用方法进行具体处理 if (showVO != null) { - Map digitsMap = showVO.getDigitsMap(); + Map digitsMap = showVO.getDigitsMap();// 列表精度信息(单价、数量、金额) + // 过滤要素 FactorVO[] factorVOs = this.filteShowFactor(showVO.getFactorVOs(), showVO.getFactorMapShow(), paramVO); + // 初始化动态表头------动态列只显示有数据的列 if (factorVOs != null) { itemgroupMap = this.reBuildItem(conditionMap, factorVOs, digitsMap); } - + // 初始化数据 List itemVOList = showVO.getItemVOList(); if (itemVOList != null) { - MeasCostItemVO[] itemVOs = (MeasCostItemVO[])itemVOList.toArray(new MeasCostItemVO[itemVOList.size()]); + MeasCostItemVO[] itemVOs = itemVOList.toArray(new MeasCostItemVO[itemVOList.size()]); + // 组装列表数据 data = this.dealQueryResult(itemVOs, digitsMap); + // 合计行排序后不再最后一条,先注释掉排序 this.sortVOByCode2(data); } } - result.put("column", itemgroupMap); result.put("data", data); return result; } + /** + * 按照编码对VO进行排序。 + * + * @param data + */ private void sortVOByCode2(List> data) { if (data != null) { Collections.sort(data, new Comparator>() { + @Override public int compare(Map o1, Map o2) { - String code1 = (String)o1.get("bookname"); - String ortname = (String)o1.get("orgname"); + // 排序调整:增加利润中心,工厂 + int flag; + // 1.合计排最后 + String code1 = (String) o1.get("bookname"); + String ortname = (String) o1.get("orgname"); + String code2 = (String) o2.get("bookname"); + String ortname2 = (String) o2.get("orgname"); + // 英文环境下及繁体环境Total 需要排最后 只有账簿有合计值,其他都没有值,防止后边报错 if (CMStringUtil.isNotEmpty(code1) && CMStringUtil.isEmpty(ortname)) { - int flag = 1; + flag = 1; return flag; - } else { - code1 = o1.get("profitcentername") == null ? "" : (String)o1.get("profitcentername"); - String code2 = o2.get("profitcentername") == null ? "" : (String)o2.get("profitcentername"); - int flag = code1.compareTo(code2); - if (flag != 0) { - return flag; - } else { - code1 = (String)o1.get("orgname") == null ? "" : (String)o1.get("orgname"); - code2 = (String)o2.get("orgname") == null ? "" : (String)o2.get("orgname"); - flag = code1.compareTo(code2); - if (flag != 0) { - return flag; - } else { - code1 = (String)o1.get("cccode") == null ? "" : (String)o1.get("cccode"); - code2 = (String)o2.get("cccode") == null ? "" : (String)o2.get("cccode"); - flag = code1.compareTo(code2); - if (flag != 0) { - return flag; - } else { - code1 = (String)o1.get("vcostobjcode") == null ? "" : (String)o1.get("vcostobjcode"); - code2 = (String)o2.get("vcostobjcode") == null ? "" : (String)o2.get("vcostobjcode"); - flag = code1.compareTo(code2); - return flag; - } - } - } + } else if (CMStringUtil.isNotEmpty(code2) && CMStringUtil.isEmpty(ortname2)) { + return -1; } + /*if(code1.equals("Total")){ + flag = 1; + return flag; + }else if(code1.equals("合计")){ + flag = 1; + return flag; + + }*/ + // 2.利润中心 + code1 = o1.get("profitcentername") == null ? "" : (String) o1.get("profitcentername"); + code2 = o2.get("profitcentername") == null ? "" : (String) o2.get("profitcentername"); + flag = code1.compareTo(code2); + if (flag != 0) { + return flag; + } + // 3.工厂 + code1 = (String) o1.get("orgname") == null ? "" : (String) o1.get("orgname"); + code2 = (String) o2.get("orgname") == null ? "" : (String) o2.get("orgname"); + flag = code1.compareTo(code2); + if (flag != 0) { + return flag; + } + // 4.成本中心升序排序 + code1 = (String) o1.get("cccode") == null ? "" : (String) o1.get("cccode"); + code2 = (String) o2.get("cccode") == null ? "" : (String) o2.get("cccode"); + flag = code1.compareTo(code2); + if (flag != 0) { + return flag; + } + // 5.再按产品编码升序排序 + code1 = (String) o1.get("vcostobjcode") == null ? "" : (String) o1.get("vcostobjcode"); + code2 = (String) o2.get("vcostobjcode") == null ? "" : (String) o2.get("vcostobjcode"); + flag = code1.compareTo(code2); + return flag; } }); } - } + /** + * map中key为参数名,value为参数值 + * 将获取到的集合参数名和参数值拼装在一起 + * + * @param itemVOs + * @param digitsMap + * @return + */ private List> dealQueryResult(MeasCostItemVO[] itemVOs, Map digitsMap) { + /** + * "data":[ + * row { + * "nmeascostncost":"204.00", + * "1002ncost":"1000.000", + * "vcostobjcode":"001", + * "vcostobjname":"物料分类001", + * "nsumncost":"1020.000", + * "nnum":"5.00", + * "cccode":"", + * "ccname":"", + * "hx02ncost":"20.000" + * }, + */ if (CMArrayUtil.isEmpty(itemVOs)) { return null; - } else { - List> data = new ArrayList(); - MeasCostItemVO[] result = new MeasCostItemVO[itemVOs.length + 1]; - UFDouble nsumncost = UFDouble.ZERO_DBL; - UFDouble nnum = UFDouble.ZERO_DBL; - Map sumMap = new HashMap(); - - for(String field : this.sumFieldCode) { - sumMap.put(field, UFDouble.ZERO_DBL); - } - - int i = 0; - - for(MeasCostItemVO item : itemVOs) { - if (item.getNnum() != null) { - nnum = CMNumberUtil2.add(new UFDouble[]{nnum, item.getNnum()}); - } - - if (item.getAttributeValue("nsumncost") != null) { - nsumncost = CMNumberUtil2.add(new UFDouble[]{nsumncost, (UFDouble)item.getAttributeValue("nsumncost")}); - } - - for(String key : sumMap.keySet()) { - UFDouble oldVal = (UFDouble)sumMap.get(key); - if (item.getAttributeValue(key) != null) { - UFDouble newVal = CMNumberUtil2.add(new UFDouble[]{oldVal, (UFDouble)item.getAttributeValue(key)}); - sumMap.put(key, newVal); - } - } - - result[i] = item; - ++i; - } - - this.processNullBignumber(result); - Integer sumBignumber = this.getSumNumBignumber(result); - MeasCostItemVO newItem = new MeasCostItemVO(); - MeasCostItemVO tempMeasCostItemVO = itemVOs[0]; - newItem.setBookname(CMLangConst1614.GET_NSUM_NAME()); - newItem.setAttributeValue("nnum", nnum); - newItem.setAttributeValue("nsumncost", nsumncost); - - for(String key : sumMap.keySet()) { - newItem.setAttributeValue(key, sumMap.get(key)); - } - - result[itemVOs.length] = newItem; - - for(MeasCostItemVO measCostItemVO : result) { - Map row = new HashMap(); - row.put("bookname", measCostItemVO.getBookname()); - row.put("profitcentername", measCostItemVO.getProfitcentername()); - row.put("orgname", measCostItemVO.getOrgname()); - row.put("cccode", measCostItemVO.getCccode()); - row.put("ccname", measCostItemVO.getCcname()); - row.put("vcostobjcode", measCostItemVO.getVcostobjcode()); - row.put("vcostobjname", measCostItemVO.getVcostobjname()); - row.put("nnum", this.setColumnScale(measCostItemVO.getNnum(), measCostItemVO.getBitnumber())); - row.put("measdocname", measCostItemVO.getMeasdocname()); - row.put("materialspec", measCostItemVO.getMaterialspec()); - row.put("materialtype", measCostItemVO.getMaterialtype()); - row.put("projectcode", measCostItemVO.getProjectcode()); - row.put("projectname", measCostItemVO.getProjectname()); - if (measCostItemVO.getFactorMap() != null) { - for(String str : measCostItemVO.getFactorMap().keySet()) { - if (str.equals("nmeascostncost")) { - row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), (Integer)digitsMap.get("PriceDigitsKey"))); - } else if (str.equals("nsumncost")) { - row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), (Integer)digitsMap.get("MoneyDigitsKey"))); - } else if (str.equals("nnum")) { - row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), sumBignumber)); - } else { - row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), (Integer)digitsMap.get("MoneyDigitsKey"))); - } - } - } - - data.add(row); - } - - return data; } + List> data = new ArrayList>(); + MeasCostItemVO[] result = new MeasCostItemVO[itemVOs.length + 1]; + UFDouble nsumncost = UFDouble.ZERO_DBL;// 合计 + UFDouble nnum = UFDouble.ZERO_DBL;// 产量 + Map sumMap = new HashMap(); + for (String field : this.sumFieldCode) { + sumMap.put(field, UFDouble.ZERO_DBL); + } + + int i = 0; + for (MeasCostItemVO item : itemVOs) { + if (item.getNnum() != null) { + nnum = CMNumberUtil2.add(nnum, item.getNnum()); + } + if (item.getAttributeValue("nsumncost") != null) { + nsumncost = CMNumberUtil2.add(nsumncost, (UFDouble) item.getAttributeValue("nsumncost")); + } + for (String key : sumMap.keySet()) { + UFDouble oldVal = sumMap.get(key); + if (item.getAttributeValue(key) != null) { + UFDouble newVal = CMNumberUtil2.add(oldVal, (UFDouble) item.getAttributeValue(key)); + sumMap.put(key, newVal); + } + } + result[i] = item; + i++; + } + // 处理精度为空的数据,默认精度给2位,一定要在加入合计行之前处理 + this.processNullBignumber(result); + // 获取合计行数量的精度,获取每一行的精度,然后取最大的精度给合计行 + Integer sumBignumber = this.getSumNumBignumber(result); + + MeasCostItemVO newItem = new MeasCostItemVO(); + MeasCostItemVO tempMeasCostItemVO = itemVOs[0]; + + // 动态合计处理--将合计放在新增加的账簿上 + /*if (!CMStringUtil.isEmpty(tempMeasCostItemVO.getCccode())) { + newItem.setCccode(CMLangConst1614.GET_NSUM_NAME());// res:合计到成本中心 + }else{ + newItem.setCccode(""); + newItem.setVcostobjcode(CMLangConst1614.GET_NSUM_NAME());// res:合计到产品/成本对象 + }*/ + newItem.setBookname(CMLangConst1614.GET_NSUM_NAME()); + newItem.setAttributeValue("nnum", nnum); + newItem.setAttributeValue("nsumncost", nsumncost); + for (String key : sumMap.keySet()) { + newItem.setAttributeValue(key, sumMap.get(key)); + } + result[itemVOs.length] = newItem; + for (MeasCostItemVO measCostItemVO : result) { + Map row = new HashMap(); + // 核算账簿 + row.put(CMCommonConst1614.BOOKNAME, measCostItemVO.getBookname()); + // 利润中心 + row.put(CMCommonConst1614.PROFITCENTERNAME, measCostItemVO.getProfitcentername()); + // 工厂 + row.put(CMCommonConst1614.ORGNAME, measCostItemVO.getOrgname()); + row.put(CMCommonConst1614.CCCODE, measCostItemVO.getCccode()); + row.put(CMCommonConst1614.CCNAME, measCostItemVO.getCcname()); + row.put(CMCommonConst1614.VCOSTOBJCODE, measCostItemVO.getVcostobjcode()); + row.put(CMCommonConst1614.VCOSTOBJNAME, measCostItemVO.getVcostobjname()); + // digitsMap.get("NumDigitsKey")最小精度2位导致精度有问题,需要直接读计量单位精度 + row.put(CMCommonConst1614.NNUM, this.setColumnScale(measCostItemVO.getNnum(), measCostItemVO.getBitnumber()));// 产量 + + // 增加三个字段 型号 主计量单位 规格----将参数和值对应 + row.put(CMCommonConst1614.MEASDOCNAME, measCostItemVO.getMeasdocname()); + row.put(CMCommonConst1614.MATERIALSPEC, measCostItemVO.getMaterialspec()); + row.put(CMCommonConst1614.MATERIALTYPE, measCostItemVO.getMaterialtype()); + // 增加项目编码和项目名称 + row.put("projectcode", measCostItemVO.getProjectcode()); + row.put("projectname", measCostItemVO.getProjectname()); + if (measCostItemVO.getFactorMap() != null) { + for (String str : measCostItemVO.getFactorMap().keySet()) { + if (str.equals("nmeascostncost")) {// 单位成本 + row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), digitsMap.get("PriceDigitsKey"))); + } else if (str.equals("nsumncost")) {// 合计 + row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), digitsMap.get("MoneyDigitsKey"))); + } else if (str.equals("nnum")) {// 产量 + // digitsMap.get("NumDigitsKey")最小精度2位导致精度有问题,需要直接读计量单位精度 + row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), sumBignumber)); + } else {// 所有核算要素 + row.put(str, this.setColumnScale(measCostItemVO.getFactorMap().get(str), digitsMap.get("MoneyDigitsKey"))); + } + } + } + data.add(row); + } + return data; } + /** + * 获取合计行数量的精度,获取每一行的精度,然后取最大的精度给合计行 + * + * @param measCostItemVOS + * @return + */ public Integer getSumNumBignumber(MeasCostItemVO[] measCostItemVOS) { if (CMArrayUtil.isEmpty(measCostItemVOS)) { return 0; - } else { - Integer bignumber = 0; - - for(MeasCostItemVO measCostItemVO : measCostItemVOS) { - if (measCostItemVO != null && measCostItemVO.getBitnumber() != null && measCostItemVO.getBitnumber() > bignumber) { - bignumber = measCostItemVO.getBitnumber(); - } - } - - return bignumber; } + Integer bignumber = 0; + for (MeasCostItemVO measCostItemVO : measCostItemVOS) { + if (measCostItemVO != null && measCostItemVO.getBitnumber() != null && measCostItemVO.getBitnumber() > bignumber) { + bignumber = measCostItemVO.getBitnumber(); + } + } + return bignumber; } + /** + * 如果计量单位精度是null,按照物料产品分类、物料基本分类查询,拿不到计量单位,默认按照2位精度处理 + * + * @param measCostItemVOS + * @return + */ public void processNullBignumber(MeasCostItemVO[] measCostItemVOS) { - if (!CMArrayUtil.isEmpty(measCostItemVOS)) { - for(MeasCostItemVO measCostItemVO : measCostItemVOS) { - if (measCostItemVO != null && measCostItemVO.getBitnumber() == null) { - measCostItemVO.setBitnumber(2); - } + if (CMArrayUtil.isEmpty(measCostItemVOS)) { + return; + } + for (MeasCostItemVO measCostItemVO : measCostItemVOS) { + if (measCostItemVO != null && measCostItemVO.getBitnumber() == null) { + // 数量精度都按照计量单位获取,按照物料成本分类、物料基本分类读取数据时候拿不到精度,如果精度是null,则按照2位精度处理,修改时间:2023.08.23,修改人:xuluv + measCostItemVO.setBitnumber(2); } - } } + /** + * 精度处理 + * + * @param value 返回的数据 + * @param scale 精度类型 + */ private UFDouble setColumnScale(Object value, Integer scale) { - if (value != null && !((UFDouble)value).equals(UFDouble.ZERO_DBL)) { - UFDouble uf = (new UFDouble(Double.valueOf(value.toString()))).setScale(scale, 4); - return uf; - } else { + if (value == null || ((UFDouble) value).equals(UFDouble.ZERO_DBL)) { return null; - } - } - - private List reBuildItem(Map conditionMap, FactorVO[] factorVOs, Map digitsMap) { - String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); - Integer ishowtype = MeasCostQueryConditionVO.PRODUCT_VALUE; - if (conditionMap.containsKey("ishowtype") && ((CMConditionVO)conditionMap.get("ishowtype")).getSingleValue() != null) { - ishowtype = Integer.valueOf(((CMConditionVO)conditionMap.get("ishowtype")).getSingleValue()); - } - - List itemsList = new ArrayList(); - this.setCodeNameItems(itemsList, ishowtype, digitsMap, conditionMap); - List var7; - if (CMArrayUtil.isEquals(CMCommonConst1614.DEFAULT_ITEMS, showDetailDiff)) { - var7 = this.setSingleItems(itemsList, factorVOs, digitsMap); } else { - var7 = this.setDoubleItems(itemsList, factorVOs, showDetailDiff, digitsMap); + UFDouble uf = new UFDouble(Double.valueOf(value.toString())).setScale(scale, 4); + return uf; } - - return var7; } - private void setCodeNameItems(List itemsList, Integer ishowtype, Map digitsMap, Map conditionMap) { - String[] itemNames = this.getItemNameByShowType(ishowtype); - Integer isSumByCostcenter = conditionMap.containsKey("issumbycostcenter") ? Integer.valueOf(((CMConditionVO)conditionMap.get("issumbycostcenter")).getSingleValue()) : MeasCostQueryConditionVO.IS_COSTCENTER_VALUE; - itemsList.add(new ColumnInfo(CMLangConst1614.GET_ACCBOOK(), "bookname", ColumnInfo.LEFT)); - itemsList.add(new ColumnInfo(CMLangConst1614.GET_PROFITCENTER(), "profitcentername", ColumnInfo.LEFT)); - itemsList.add(new ColumnInfo(CMLangConst1614.GET_ORG(), "orgname", ColumnInfo.LEFT)); - if (MeasCostQueryConditionVO.IS_COSTCENTER_VALUE.equals(isSumByCostcenter)) { - itemsList.add(new ColumnInfo(itemNames[0], "cccode", ColumnInfo.LEFT)); - itemsList.add(new ColumnInfo(itemNames[1], "ccname", ColumnInfo.LEFT)); + /** + * 重构动态列表头 + * + * @param factorVOs "核算要素"动态列初始化所需数据 + * @param conditionMap 逻辑查询条件 + * @param digitsMap 列表精度----单价、数量、金额 + * @return 保存表头上下两层列的对应关系的map + */ + private List reBuildItem(Map conditionMap, FactorVO[] factorVOs, Map digitsMap) { + + // 取得列的显示明细区分(区分本下阶、显示标准成本、区分成本中心、默认) + String[] showDetailDiff = MeasCostUtil.getShowDetailDiff(conditionMap); + // 取得成本对象的显示方式(成本对象、产品、产品成本分类、产品基本分类) + Integer ishowtype = MeasCostQueryConditionVO.PRODUCT_VALUE; + if (conditionMap.containsKey(MeasCostQueryConditionVO.ISHOWTYPE) && conditionMap.get(MeasCostQueryConditionVO.ISHOWTYPE).getSingleValue() != null) { + ishowtype = Integer.valueOf(conditionMap.get(MeasCostQueryConditionVO.ISHOWTYPE).getSingleValue()); } - itemsList.add(new ColumnInfo(itemNames[2], "vcostobjcode", ColumnInfo.LEFT)); - itemsList.add(new ColumnInfo(itemNames[3], "vcostobjname", ColumnInfo.LEFT)); + // 保存列的list ----------getColumn + List itemsList = new ArrayList(); + // // 保存两层列的对应关系 + // MapList itemgroupMapList = new MapList(); + // 设置固定的前三列,保存到list + this.setCodeNameItems(itemsList, ishowtype, digitsMap, conditionMap); + // 如果显示样式为单层,单层列保存到list + if (CMArrayUtil.isEquals(CMCommonConst1614.DEFAULT_ITEMS, showDetailDiff)) { + itemsList = this.setSingleItems(itemsList, factorVOs, digitsMap); + } + // 如果显示样式为双层,子父关系形式保存到list + else { + itemsList = this.setDoubleItems(itemsList, factorVOs, showDetailDiff, digitsMap); + } + // + + return itemsList; + } + + /** + * 设置固定列(包括三个列:产品编码、产品名称、产量) + * + * @param ishowtype 显示方式(成本对象、产品、产品成本分类、产品基本分类) + */ + private void setCodeNameItems(List itemsList, Integer ishowtype, Map digitsMap, Map conditionMap) { + // 取得产品编码和产品名称这两列的列名{0:产品编码列名,1:产品名称列名} + String[] itemNames = this.getItemNameByShowType(ishowtype); + + // 是否有按成本中心汇总,有则直接汇总成本中心 + Integer isSumByCostcenter = conditionMap.containsKey(MeasCostQueryConditionVO.ISSUMBYCOSTCENTER) ? Integer.valueOf(conditionMap.get( + MeasCostQueryConditionVO.ISSUMBYCOSTCENTER).getSingleValue()) : MeasCostQueryConditionVO.IS_COSTCENTER_VALUE; + // 核算账簿 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_ACCBOOK(), CMCommonConst1614.BOOKNAME, ColumnInfo.LEFT)); + // 利润中心 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_PROFITCENTER(), CMCommonConst1614.PROFITCENTERNAME, ColumnInfo.LEFT)); + // 工厂 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_ORG(), CMCommonConst1614.ORGNAME, ColumnInfo.LEFT)); + // 按照成本中心计算 + if (MeasCostQueryConditionVO.IS_COSTCENTER_VALUE.equals(isSumByCostcenter)) { + itemsList.add(new ColumnInfo(itemNames[0], CMCommonConst1614.CCCODE, ColumnInfo.LEFT)); + // 设置"成本中心名称"列 + itemsList.add(new ColumnInfo(itemNames[1], CMCommonConst1614.CCNAME, ColumnInfo.LEFT)); + } + // 按照成本中心计算 + // 创建集合放列的 编码名称 + // 设置"成本中心编码"列 + // 设置"产品编码"列 + itemsList.add(new ColumnInfo(itemNames[2], CMCommonConst1614.VCOSTOBJCODE, ColumnInfo.LEFT)); + + // 设置"产品名称"列 + itemsList.add(new ColumnInfo(itemNames[3], CMCommonConst1614.VCOSTOBJNAME, ColumnInfo.LEFT)); + if (MeasCostQueryConditionVO.COSTOBJECT_VALUE.equals(ishowtype) || MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { - itemsList.add(new ColumnInfo(CMLangConst1614.GET_MATERIALSPEC(), "materialspec", ColumnInfo.LEFT)); - itemsList.add(new ColumnInfo(CMLangConst1614.GET_MATERIALTYPE(), "materialtype", ColumnInfo.LEFT)); - itemsList.add(new ColumnInfo(CMLangConst1614.GET_MEASDOCNAME(), "measdocname", ColumnInfo.LEFT)); + // 设置规格 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_MATERIALSPEC(), CMCommonConst1614.MATERIALSPEC, ColumnInfo.LEFT)); + // 设置型号 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_MATERIALTYPE(), CMCommonConst1614.MATERIALTYPE, ColumnInfo.LEFT)); + // 设置计量单位 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_MEASDOCNAME(), CMCommonConst1614.MEASDOCNAME, ColumnInfo.LEFT)); } // todo 客开增加项目相关的列 itemsList.add(new ColumnInfo("项目编码", "projectcode", ColumnInfo.LEFT)); itemsList.add(new ColumnInfo("项目名称", "projectname", ColumnInfo.LEFT)); - - itemsList.add(new ColumnInfo(CMLangConst1614.GET_NNUM_NAME(), "nnum", ColumnInfo.RIGTH)); + // 设置"产量"列 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_NNUM_NAME(), CMCommonConst1614.NNUM, ColumnInfo.RIGTH)); } + /** + * 根据显示方式不同,取前两列的列名 + * + * @param ishowtype 显示方式(成本对象、产品、产品成本分类、产品基本分类) + * @return 字符串数组:{0:产品编码列名,1:产品名称列名} + */ private String[] getItemNameByShowType(Integer ishowtype) { String[] itemName = new String[4]; itemName[0] = CMLangConst1614.GET_CENTERCODE_NAME(); itemName[1] = CMLangConst1614.GET_CENTERNAME_NAME(); + // 显示方式:成本对象 if (MeasCostQueryConditionVO.COSTOBJECT_VALUE.equals(ishowtype)) { itemName[2] = CMLangConst1614.GET_OBJECT_CODE_NAME(); itemName[3] = CMLangConst1614.GET_OBJECT_NAME(); - } else if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { + } + // 显示方式:产品 + else if (MeasCostQueryConditionVO.PRODUCT_VALUE.equals(ishowtype)) { itemName[2] = CMLangConst1614.GET_PRODUCT_CODE_NAME(); itemName[3] = CMLangConst1614.GET_PRODUCT_NAME(); - } else if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { + } + // 显示方式:产品成本分类 + else if (MeasCostQueryConditionVO.PRODUCT_COST_VALUE.equals(ishowtype)) { itemName[2] = CMLangConst1614.GET_PRODUCT_COST_CODE_NAME(); itemName[3] = CMLangConst1614.GET_PRODUCT_COST_NAME(); - } else if (MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE.equals(ishowtype)) { + } + // 显示方式:产品基本分类 + else if (MeasCostQueryConditionVO.PRODUCT_BASIC_VALUE.equals(ishowtype)) { itemName[2] = CMLangConst1614.GET_PRODUCT_BASIC_CODE_NAME(); itemName[3] = CMLangConst1614.GET_PRODUCT_BASIC_NAME(); } - return itemName; } + /** + * 过滤要素 + * + * @param vos + * @param factorMapShow + * @param paramVO + * @return + */ private FactorVO[] filteShowFactor(FactorVO[] vos, Map factorMapShow, MeasCostParamVO paramVO) { + // 查看前端条件,【显示所有要素】,默认为否,是则展示所有要素 Map conditionMap = paramVO.getConditionMap(); - Integer isshowallfactors = conditionMap.containsKey("isshowallfactors") ? Integer.valueOf(((CMConditionVO)conditionMap.get("isshowallfactors")).getSingleValue()) : MeasCostQueryConditionVO.NO_SHOW_FACTORS_VALUE; - FactorVO[] result = null; - if (!MeasCostQueryConditionVO.NO_SHOW_FACTORS_VALUE.equals(isshowallfactors)) { - result = (new MeasCostQueryVOConverter()).getShowFactorByParam(paramVO, Arrays.asList(vos), factorMapShow); - } else { - List tmp = new ArrayList(); - String[] factorcodes = (String[])factorMapShow.keySet().toArray(new String[0]); + Integer isshowallfactors = conditionMap.containsKey(MeasCostQueryConditionVO.ISSHOWALLFACTORS) ? Integer.valueOf(conditionMap.get( + MeasCostQueryConditionVO.ISSHOWALLFACTORS).getSingleValue()) : MeasCostQueryConditionVO.NO_SHOW_FACTORS_VALUE; - for(String code : factorcodes) { - for(FactorVO vo : vos) { + FactorVO[] result = null; + + // 当该值不为默认值时 + if (!MeasCostQueryConditionVO.NO_SHOW_FACTORS_VALUE.equals(isshowallfactors)) { + // 不再需要对比要素,只需要将所有要素根据查询条件过滤后全部展示即可 + result = new MeasCostQueryVOConverter().getShowFactorByParam(paramVO, Arrays.asList(vos), factorMapShow); + + } else { + List tmp = new ArrayList(); + String[] factorcodes = factorMapShow.keySet().toArray(new String[0]); + for (String code : factorcodes) { + for (FactorVO vo : vos) { if (vo.getFactorcode().equals(code)) { tmp.add(vo); break; } } } - - result = (FactorVO[])tmp.toArray(new FactorVO[0]); + result = tmp.toArray(new FactorVO[0]); } + // 对编码进行排序 this.sortVOByCode(result); return result; } + /** + * 按照编码对VO进行排序。 + * + * @param vos + */ private void sortVOByCode(FactorVO[] vos) { - if (vos != null && vos.length >= 2) { - Arrays.sort(vos, new Comparator() { - public int compare(FactorVO o1, FactorVO o2) { - String code1 = (String)o1.getAttributeValue("factorcode"); - String code2 = (String)o2.getAttributeValue("factorcode"); - return code1.compareTo(code2); - } - }); + if (vos == null || vos.length < 2) { + return; } + Arrays.sort(vos, new Comparator() { + + @Override + public int compare(FactorVO o1, FactorVO o2) { + String code1 = (String) o1.getAttributeValue(FactorVO.FACTORCODE); + String code2 = (String) o2.getAttributeValue(FactorVO.FACTORCODE); + return code1.compareTo(code2); + } + }); } + /** + * 单层列时,将列保存到list + * + * @param itemsList 保存基本列的list + * @param factorVOs "核算要素"动态列初始化所需数据 + */ private List setSingleItems(List itemsList, FactorVO[] factorVOs, Map digitsMap) { - itemsList.add(new ColumnInfo(CMLangConst1614.GET_NMEASCOST_NAME(), MeasCostUtil.getItemCodeByRule("nmeascost", "ncost"), ColumnInfo.RIGTH)); - itemsList.add(new ColumnInfo(CMLangConst1614.GET_NSUM_NAME(), MeasCostUtil.getItemCodeByRule("nsum", "ncost"), ColumnInfo.RIGTH)); - - for(FactorVO factorVO : factorVOs) { - String itemCode = MeasCostUtil.getItemCodeByRule(factorVO.getFactorcode(), "ncost"); - String var10000 = factorVO.getFactorcode(); - String itemName = var10000 + "-" + CMUtil.getNameByMultiLang(factorVO, "factorname"); + // 设置"单位成本"单列 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_NMEASCOST_NAME(), MeasCostUtil.getItemCodeByRule(CMCommonConst1614.NMEASCOST, CMCommonConst1614.NCOST), ColumnInfo.RIGTH)); + // 设置"合计"单列 + itemsList.add(new ColumnInfo(CMLangConst1614.GET_NSUM_NAME(), MeasCostUtil.getItemCodeByRule(CMCommonConst1614.NSUM, CMCommonConst1614.NCOST), ColumnInfo.RIGTH)); + // 设置"核算要素"列 + for (FactorVO factorVO : factorVOs) { + String itemCode = MeasCostUtil.getItemCodeByRule(factorVO.getFactorcode(), CMCommonConst1614.NCOST); + String itemName = factorVO.getFactorcode() + "-" + CMUtil.getNameByMultiLang(factorVO, FactorVO.FACTORNAME); + // 添加动态列 itemsList.add(new ColumnInfo(itemName, itemCode, ColumnInfo.RIGTH)); this.sumFieldCode.add(itemCode); } - return itemsList; } + /** + * 双层列时,将下层列保存到list,并返回保存表头上下两层列的对应关系Map + * + * @param itemsList 保存基本列的list + * @param factorVOs "核算要素"动态列初始化所需数据 + * @param showDetailDiff 列的显示样式(区分本下阶、显示标准成本、区分成本中心、默认) + * @return 保存两层列的对应关系的Map + */ private List setDoubleItems(List itemsList, FactorVO[] factorVOs, String[] showDetailDiff, Map digitsMap) { + // 存放多表头时的儿子信息 String[] childName = new String[showDetailDiff.length]; String[] childAlign = new String[showDetailDiff.length]; String[] childCode = new String[showDetailDiff.length]; - - for(int i = 0; i < showDetailDiff.length; ++i) { - String itemCode = MeasCostUtil.getItemCodeByRule("nmeascost", showDetailDiff[i]); + // 设置"单位成本"列 + for (int i = 0; i < showDetailDiff.length; i++) { + String itemCode = MeasCostUtil.getItemCodeByRule(CMCommonConst1614.NMEASCOST, showDetailDiff[i]); String itemName = MeasCostUtil.getItemNameByCode(showDetailDiff[i]); if (CMLangConst1614.GET_NCOST_NAME().equals(itemName)) { itemName = CMLangConst1614.GET_ALL_NMEASCOST_NAME(); } - childName[i] = itemName; childCode[i] = itemCode; childAlign[i] = ColumnInfo.RIGTH; + // itemsList.add(new ColumnInfo(itemName, itemCode, ColumnInfo.RIGTH)); } + // 多表头 时处理多表层的关系---单位成本 + itemsList.add(MeascostcontrastComServiceImpl.getMultHeadColum(CMLangConst1614.GET_NMEASCOST_NAME(), childName, childCode, childAlign)); - itemsList.add(getMultHeadColum(CMLangConst1614.GET_NMEASCOST_NAME(), childName, childCode, childAlign)); - - for(int i = 0; i < showDetailDiff.length; ++i) { - String itemCode = MeasCostUtil.getItemCodeByRule("nsum", showDetailDiff[i]); + // 设置"合计"列 + for (int i = 0; i < showDetailDiff.length; i++) { + String itemCode = MeasCostUtil.getItemCodeByRule(CMCommonConst1614.NSUM, showDetailDiff[i]); String itemName = MeasCostUtil.getItemNameByCode(showDetailDiff[i]); childName[i] = itemName; childCode[i] = itemCode; childAlign[i] = ColumnInfo.RIGTH; + // itemsList.add(new ColumnInfo(itemName, itemCode, ColumnInfo.RIGTH)); } + // 多表头 时处理多表层的关系---合计 + itemsList.add(MeascostcontrastComServiceImpl.getMultHeadColum(CMLangConst1614.GET_NSUM_NAME(), childName, childCode, childAlign)); - itemsList.add(getMultHeadColum(CMLangConst1614.GET_NSUM_NAME(), childName, childCode, childAlign)); - - for(FactorVO factorVO : factorVOs) { + // 设置"核算要素"列 + for (FactorVO factorVO : factorVOs) { String groupItemCode = factorVO.getFactorcode(); - String var10000 = factorVO.getFactorcode(); - String itemName = var10000 + "-" + CMUtil.getNameByMultiLang(factorVO, "factorname"); + String itemName = factorVO.getFactorcode() + "-" + CMUtil.getNameByMultiLang(factorVO, FactorVO.FACTORNAME); - for(int i = 0; i < showDetailDiff.length; ++i) { + for (int i = 0; i < showDetailDiff.length; i++) { String itemCode = MeasCostUtil.getItemCodeByRule(groupItemCode, showDetailDiff[i]); String itemName1 = MeasCostUtil.getItemNameByCode(showDetailDiff[i]); childName[i] = itemName1; childCode[i] = itemCode; childAlign[i] = ColumnInfo.RIGTH; + // itemsList.add(new ColumnInfo(itemName1, itemCode, ColumnInfo.RIGTH)); this.sumFieldCode.add(MeasCostUtil.getItemCodeByRule(groupItemCode, showDetailDiff[0])); } - - itemsList.add(getMultHeadColum(itemName, childName, childCode, childAlign)); + // 多表头 时处理多表层的关系---核算要素 + itemsList.add(MeascostcontrastComServiceImpl.getMultHeadColum(itemName, childName, childCode, childAlign)); } return itemsList; } + /** + * 构造子父关系 + */ public static ColumnMultiHeadInfo getMultHeadColum(String multStr, String[] childStr, String[] childKey, String[] childAlign) { ColumnMultiHeadInfo multiHead = new ColumnMultiHeadInfo(multStr); ColumnInfo[] children = new ColumnInfo[childStr.length]; - - for(int i = 0; i < children.length; ++i) { + for (int i = 0; i < children.length; i++) { children[i] = new ColumnInfo(childStr[i], childKey[i], childAlign[i]); } - multiHead.setChildren(children); return multiHead; } + } diff --git a/erm/src/private/nccloud/pubimpl/erm/billmanage/BillManageServiceImpl.java b/erm/src/private/nccloud/pubimpl/erm/billmanage/BillManageServiceImpl.java new file mode 100644 index 0000000..a634b8d --- /dev/null +++ b/erm/src/private/nccloud/pubimpl/erm/billmanage/BillManageServiceImpl.java @@ -0,0 +1,661 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nccloud.pubimpl.erm.billmanage; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import nc.bs.framework.common.InvocationInfoProxy; +import nc.bs.framework.common.NCLocator; +import nc.bs.logging.Logger; +import nc.itf.arap.prv.IBXBillPrivate; +import nc.itf.uap.IUAPQueryBS; +import nc.itf.uap.rbac.IUserManageQuery; +import nc.jdbc.framework.DataSourceCenter; +import nc.jdbc.framework.SQLParameter; +import nc.jdbc.framework.page.LimitSQLBuilder; +import nc.jdbc.framework.page.SQLBuilderFactory; +import nc.jdbc.framework.processor.ArrayListProcessor; +import nc.jdbc.framework.processor.ResultSetProcessor; +import nc.pubitf.rbac.IFunctionPermissionPubService; +import nc.ui.querytemplate.querytree.IQueryScheme; +import nc.vo.ep.bx.BXHeaderVO; +import nc.vo.ep.bx.BillManageTradeTypeVO; +import nc.vo.ep.bx.JKBXHeaderVO; +import nc.vo.fi.pub.SqlUtils; +import nc.vo.ml.MultiLangUtil; +import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFDate; +import nc.vo.pub.lang.UFDateTime; +import nc.vo.pub.lang.UFDouble; +import nc.vo.sm.UserVO; +import nccloud.dto.baseapp.querytree.dataformat.Condition; +import nccloud.dto.baseapp.querytree.dataformat.PageInfo; +import nccloud.dto.baseapp.querytree.dataformat.QueryCondition; +import nccloud.dto.baseapp.querytree.dataformat.QueryTreeFormatVO; +import nccloud.pubitf.erm.billmanage.IBillManageService; +import nccloud.pubitf.platform.query.INCCloudQueryService; +import org.apache.commons.lang3.StringUtils; + +public class BillManageServiceImpl implements IBillManageService { + private final String APPCODE_DJGL = "201104DJGL"; + private final String SQLKEY_JK = "JK"; + private final String SQLKEY_BX = "BX"; + private final String SQLKEY_HK = "HK"; + private final String SQLKEY_TZ = "TZ"; + private final String SQLKEY_SQ = "SQ"; + private final String SQLKEY_YT = "YT"; + private final String SQLKEY_JZ = "JZ"; + private final String SQLKEY_TX = "TX"; + + public BillManageServiceImpl() { + } + + public List queryBillInfoByPks(String[] pks) throws Exception { + if (pks != null && pks.length != 0) { + String whereSql = SqlUtils.getInStr("pk_jkbx", pks, true); + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("select *").append(" from (select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" red_status as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_jkzb where dr = 0 ").append(" union all").append(" select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" red_status as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_bxzb where dr = 0 ").append(" union all").append(" select pk_accrued_bill as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" pk_currtype as bzbm,").append(" org_amount as ybje,").append(" billstatus as djzt,").append(" apprstatus as spzt,").append(" operator_dept as deptid_v,").append(" operator as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" redflag as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvetime as shrq").append(" from er_accrued where dr=0 ").append(" union all").append(" select pk_mtapp_bill as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" pk_currtype as bzbm,").append(" orig_amount as ybje,").append(" billstatus as djzt,").append(" apprstatus as spzt,").append(" apply_dept as deptid_v,").append(" billmaker as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" null as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvetime as shrq").append(" from er_mtapp_bill where dr = 0 ").append(" union all").append(" select pk_costshare as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" billstatus as djzt,").append(" case when billstatus=2 or billstatus=3 then 1 else -1 end as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" null as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvedate as shrq").append(" from er_costshare").append(" where dr = 0 ").append(" union all").append(" select e.pk_jkbx as pk_jkbx,").append(" t.pk_billtypeid as pk_tradetypeid,").append(" e.bx_pk_billtype as djlxbm,").append(" t.parentbilltype as pk_billtype,").append(" e.bx_billno as djbh,").append(" e.bx_djrq as djrq,").append(" e.bzbm as bzbm,").append(" e.total_amount as ybje,").append(" 3 as djzt,").append(" \t\t\t\t 1\t\t as spzt,").append(" e.bx_deptid as deptid_v,").append(" e.bx_jkbxr as jkbxr,").append(" null as approver,").append(" e.pk_org as pk_org, ").append(" e.creator as creator, ").append(" null as red_status, ").append(" e.saga_frozen as saga_frozen, ").append(" e.saga_btxid as saga_btxid, ").append(" e.saga_gtxid as saga_gtxid, ").append(" e.saga_status as saga_status, ").append(" null as shrq").append(" from er_expamtinfo e").append(" left join bd_billtype t on t.PK_BILLTYPECODE=e.bx_pk_billtype and t.PK_GROUP=e.PK_GROUP").append(" where e.dr = 0 ").append(" ) temp where ").append(whereSql); + sqlBuilder.append(" order by temp.djrq desc"); + String sql = sqlBuilder.toString(); + SQLParameter sqlParam = new SQLParameter(); + IUAPQueryBS iuapQryService = (IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class); + List resultList = (List)iuapQryService.executeQuery(sql, sqlParam, new JKBXHeaderResultSetProcessor()); + return resultList; + } else { + return null; + } + } + + public List queryPermBillType(String userId, String currentDate, String pkGroup) { + List permBillTypeList = new ArrayList(); + + try { + String sql = " select distinct pub_publishapp.pk_billtypecode as pk_billtypecode,sm_appregister.code as apppcode,sm_apppage.pagecode as pagecode,sm_apppage.pageurl as url, bd_billtype.parentbilltype as parentbilltype, bd_billtype.pk_billtypeid as pk_billtypeid, bd_billtype.billtypename" + MultiLangUtil.getCurrentLangSeqSuffix() + " as billtypename from sm_appregister inner join pub_publishapp on sm_appregister.pk_appregister=pub_publishapp.publishappid inner join sm_apppage on sm_apppage.parent_id=sm_appregister.pk_appregister inner join bd_billtype on pub_publishapp.pk_billtypecode=bd_billtype.pk_billtypecode where sm_appregister.pk_appregister in ( select distinct ra.pk_app from sm_resp_app ra, sm_perm_func pf, sm_appregister app where ra.pk_responsibility = pf.ruleid and app.pk_appregister = ra.pk_app and exists ( select 1 from sm_user_role ur where pf.subjectid = ur.pk_role and cuserid = ? and enabledate <= ? and ( isnull(cast(disabledate as char),'~')='~' or disabledate > ?)) and app.isenable = 'Y' and ( isnull(app.pk_group,'~') = '~' or app.pk_group = ?) and pf.pk_group = ? and app.own_module='2011') and pub_publishapp.sence=10 and pub_publishapp.dr=0 and bd_billtype.parentbilltype in('261X','262X','263X','264X','265X','266X') and bd_billtype.pk_billtypecode != '264X-Cxx-SKBG' and sm_apppage.isdefault='Y' and bd_billtype.pk_group= ? "; + SQLParameter sqlParam = new SQLParameter(); + sqlParam.addParam(userId); + sqlParam.addParam(currentDate); + sqlParam.addParam(currentDate); + sqlParam.addParam(pkGroup); + sqlParam.addParam(pkGroup); + sqlParam.addParam(pkGroup); + IUAPQueryBS iuapQryService = (IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class); + permBillTypeList = (List)iuapQryService.executeQuery(sql, sqlParam, new ResultSetProcessor() { + private static final long serialVersionUID = 1L; + + public Object handleResultSet(ResultSet rs) throws SQLException { + List resultList; + BillManageTradeTypeVO billManageTradeTypeVO; + for(resultList = new ArrayList(); rs.next(); resultList.add(billManageTradeTypeVO)) { + billManageTradeTypeVO = new BillManageTradeTypeVO(); + String pk_billtypecode = rs.getString("pk_billtypecode"); + String appcode = rs.getString("apppcode"); + String pagecode = rs.getString("pagecode"); + String url = rs.getString("url"); + String parentbilltype = rs.getString("parentbilltype"); + billManageTradeTypeVO.setPk_billtypecode(pk_billtypecode); + billManageTradeTypeVO.setAppcode(appcode); + billManageTradeTypeVO.setPagecode(pagecode); + billManageTradeTypeVO.setUrl(url); + billManageTradeTypeVO.setParentbilltype(parentbilltype); + billManageTradeTypeVO.setPk_billtypeid(rs.getString("pk_billtypeid")); + billManageTradeTypeVO.setBilltypename(rs.getString("billtypename")); + if ("263X".equals(parentbilltype)) { + billManageTradeTypeVO.setJkbx("jk"); + } else if ("264X".equals(parentbilltype)) { + billManageTradeTypeVO.setJkbx("bx"); + } + } + + return resultList; + } + }); + } catch (BusinessException e) { + Logger.error(e.getMessage(), e); + } + + return permBillTypeList; + } + + private String[] queryPkPsndocByNameLike(String keyWord) throws Exception { + String sql = "select pk_psndoc from bd_psndoc where ( dr = 0 or dr is null ) and name like ? "; + SQLParameter sqlParam = new SQLParameter(); + sqlParam.addParam("%" + keyWord + "%"); + IUAPQueryBS iuapQryService = (IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class); + String[] resultPsndoc = (String[])iuapQryService.executeQuery(sql, sqlParam, new ResultSetProcessor() { + private static final long serialVersionUID = 1L; + + public Object handleResultSet(ResultSet rs) throws SQLException { + List resultList = new ArrayList(); + + while(rs.next()) { + String pkPsndoc = rs.getString("pk_psndoc"); + resultList.add(pkPsndoc); + } + + return resultList.size() == 0 ? new String[0] : resultList.toArray(new String[resultList.size()]); + } + }); + return resultPsndoc; + } + + private String[] queryPkDeptByNameLike(String keyWord) throws Exception { + String sql = "select pk_dept, name from org_dept where ( dr = 0 or dr is null ) and name like ? "; + SQLParameter sqlParam = new SQLParameter(); + sqlParam.addParam("%" + keyWord + "%"); + IUAPQueryBS iuapQryService = (IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class); + String[] resultPkDept = (String[])iuapQryService.executeQuery(sql, sqlParam, new ResultSetProcessor() { + private static final long serialVersionUID = 1L; + + public Object handleResultSet(ResultSet rs) throws SQLException { + List resultList = new ArrayList(); + + while(rs.next()) { + String pkDept = rs.getString("pk_dept"); + resultList.add(pkDept); + } + + return resultList.size() == 0 ? new String[0] : resultList.toArray(new String[resultList.size()]); + } + }); + return resultPkDept; + } + + private Map geConditionSqlByConditions(QueryTreeFormatVO queryTreeFormatVO) throws BusinessException { + Map whereSqlMap = new HashMap(); + QueryCondition queryCondition = queryTreeFormatVO.getQuerycondition(); + if (queryCondition != null) { + List conditions = queryCondition.getConditions(); + if (conditions != null && conditions.size() > 0) { + StringBuilder conditionBuilderJK = new StringBuilder(""); + StringBuilder conditionBuilderBX = new StringBuilder(" and djlxbm!='264a' and djlxbm!='2647' and djlxbm != '264X-Cxx-SKBG'"); + StringBuilder conditionBuilderHK = new StringBuilder(" and djlxbm='2647' "); + StringBuilder conditionBuilderTZ = new StringBuilder(" and djlxbm='264a' "); + StringBuilder conditionBuilderSQ = new StringBuilder(""); + StringBuilder conditionBuilderYT = new StringBuilder(""); + StringBuilder conditionBuilderJZ = new StringBuilder(""); + StringBuilder conditionBuilderTX = new StringBuilder(""); + String appCode = queryTreeFormatVO.getAppcode(); + if ("201104DJGL".equals(appCode)) { + String userId = InvocationInfoProxy.getInstance().getUserId(); + String pk_group = InvocationInfoProxy.getInstance().getGroupId(); + String jkbxr = ""; + String[] psnInfos = ((IBXBillPrivate)NCLocator.getInstance().lookup(IBXBillPrivate.class)).queryPsnidAndDeptid(userId, pk_group); + if (psnInfos != null && psnInfos.length > 0) { + jkbxr = psnInfos[0]; + } + + conditionBuilderJK.append(" and (creator='").append(userId).append("' or jkbxr='").append(jkbxr).append("' ) "); + conditionBuilderBX.append(" and (creator='").append(userId).append("' or jkbxr='").append(jkbxr).append("' ) "); + conditionBuilderHK.append(" and creator='").append(userId).append("' "); + conditionBuilderTZ.append(" and creator='").append(userId).append("' "); + conditionBuilderSQ.append(" and creator='").append(userId).append("' "); + conditionBuilderYT.append(" and creator='").append(userId).append("' "); + conditionBuilderJZ.append(" and (creator='").append(userId).append("' or jkbxr='").append(jkbxr).append("' ) "); + conditionBuilderTX.append(" and (e.creator='").append(userId).append("' or e.bx_jkbxr='").append(jkbxr).append("' ) "); + } + + boolean ifHasTradeType = false; + boolean filterByPkOrg = false; + String reconSQ = "1=2"; + String reconYT = "1=2"; + String reconJK = "1=2"; + String reconBX = "1=2"; + String reconHK = "1=2"; + String reconTZ = "1=2"; + String reconJZ = "1=2"; + String reconTX = "1=2"; + boolean hasRecon = false; + + for(Condition condition : conditions) { + if ("261X".equals(condition.getField())) { + reconSQ = SqlUtils.getInStr("pk_mtapp_bill", condition.getValue().getFirstvalue().split(","), true); + hasRecon = true; + } else if ("262X".equals(condition.getField())) { + reconYT = SqlUtils.getInStr("pk_accrued_bill", condition.getValue().getFirstvalue().split(","), true); + hasRecon = true; + } else if ("263X".equals(condition.getField())) { + reconJK = SqlUtils.getInStr("pk_jkbx", condition.getValue().getFirstvalue().split(","), true); + hasRecon = true; + } else if ("264X".equals(condition.getField())) { + reconBX = reconHK = reconTZ = SqlUtils.getInStr("pk_jkbx", condition.getValue().getFirstvalue().split(","), true); + hasRecon = true; + } else if ("265X".equals(condition.getField())) { + hasRecon = true; + reconJZ = SqlUtils.getInStr("pk_costshare", condition.getValue().getFirstvalue().split(","), true); + } else if ("266X".equals(condition.getField())) { + hasRecon = true; + reconTX = SqlUtils.getInStr("e.pk_expamtinfo", condition.getValue().getFirstvalue().split(","), true); + } else if ("isReconEmpty".equals(condition.getField())) { + hasRecon = true; + } else { + if ("pk_org".equals(condition.getField())) { + filterByPkOrg = true; + if (StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + String[] orgs = condition.getValue().getFirstvalue().split(","); + String inSql = SqlUtils.getInStr("pk_org", orgs, true); + conditionBuilderJK.append(" and ").append(inSql); + conditionBuilderBX.append(" and ").append(inSql); + conditionBuilderHK.append(" and ").append(inSql); + conditionBuilderTZ.append(" and ").append(inSql); + conditionBuilderSQ.append(" and ").append(inSql); + conditionBuilderYT.append(" and ").append(inSql); + conditionBuilderJZ.append(" and ").append(inSql); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("e.pk_org", orgs, true)); + } + } + if ("defitem11".equals(condition.getField())) { + filterByPkOrg = true; + if (StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + String[] orgs = condition.getValue().getFirstvalue().split(","); +// String inSql = SqlUtils.getInStr("pk_org", orgs, true); er_mtapp_bill assume_dept + conditionBuilderJK.append(" and ").append(SqlUtils.getInStr("fydeptid", orgs, true)); + conditionBuilderBX.append(" and ").append(SqlUtils.getInStr("fydeptid", orgs, true)); + conditionBuilderHK.append(" and ").append(SqlUtils.getInStr("fydeptid", orgs, true)); + conditionBuilderTZ.append(" and ").append(SqlUtils.getInStr("fydeptid", orgs, true)); + conditionBuilderSQ.append(" and ").append(SqlUtils.getInStr("assume_dept", orgs, true)); + conditionBuilderYT.append(" and ").append(SqlUtils.getInStr("operator_dept", orgs, true)); + conditionBuilderJZ.append(" and ").append(SqlUtils.getInStr("fydeptid", orgs, true)); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("e.bx_deptid", orgs, true)); + } + } + + if ("djrq".equals(condition.getField())) { + if (StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + conditionBuilderJK.append(" and djrq >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderBX.append(" and djrq >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderHK.append(" and djrq >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderTZ.append(" and djrq >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderSQ.append(" and billdate >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderYT.append(" and billdate >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderJZ.append(" and billdate >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderTX.append(" and e.bx_djrq >= '").append(condition.getValue().getFirstvalue()).append("' "); + } + + if (StringUtils.isNotEmpty(condition.getValue().getSecondvalue())) { + conditionBuilderJK.append(" and djrq <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderBX.append(" and djrq <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderHK.append(" and djrq <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderTZ.append(" and djrq <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderSQ.append(" and billdate <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderYT.append(" and billdate <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderJZ.append(" and billdate <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderTX.append(" and e.bx_djrq <= '").append(condition.getValue().getSecondvalue()).append("' "); + } + } + + + if ("paydate".equals(condition.getField())) { + if (StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + conditionBuilderJK.append(" and paydate >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderBX.append(" and paydate >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderHK.append(" and paydate >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderTZ.append(" and paydate >= '").append(condition.getValue().getFirstvalue()).append("' "); + } + + if (StringUtils.isNotEmpty(condition.getValue().getSecondvalue())) { + conditionBuilderJK.append(" and paydate <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderBX.append(" and paydate <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderHK.append(" and paydate <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderTZ.append(" and paydate <= '").append(condition.getValue().getSecondvalue()).append("' "); + } + } + + if ("djbh".equals(condition.getField()) && StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + conditionBuilderJK.append(" and djbh like '%").append(condition.getValue().getFirstvalue()).append("%' "); + conditionBuilderHK.append(" and djbh like '%").append(condition.getValue().getFirstvalue()).append("%' "); + conditionBuilderBX.append(" and djbh like '%").append(condition.getValue().getFirstvalue()).append("%' "); + conditionBuilderTZ.append(" and djbh like '%").append(condition.getValue().getFirstvalue()).append("%' "); + conditionBuilderSQ.append(" and billno like '%").append(condition.getValue().getFirstvalue()).append("%' "); + conditionBuilderYT.append(" and billno like '%").append(condition.getValue().getFirstvalue()).append("%' "); + conditionBuilderJZ.append(" and billno like '%").append(condition.getValue().getFirstvalue()).append("%' "); + conditionBuilderTX.append(" and e.bx_billno like '%").append(condition.getValue().getFirstvalue()).append("%' "); + } + + if ("pk_tradetypeid".equals(condition.getField()) && StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + ifHasTradeType = true; + String[] tradetypes = condition.getValue().getFirstvalue().split(","); + String inSql = SqlUtils.getInStr("pk_tradetypeid", tradetypes, true); + conditionBuilderJK.append(" and ").append(inSql); + conditionBuilderBX.append(" and ").append(inSql); + conditionBuilderHK.append(" and ").append(inSql); + conditionBuilderTZ.append(" and ").append(inSql); + conditionBuilderSQ.append(" and ").append(inSql); + conditionBuilderYT.append(" and ").append(inSql); + conditionBuilderJZ.append(" and ").append(inSql); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("t.pk_billtypeid", tradetypes, true)); + } + + if ("ybje".equals(condition.getField())) { + if (StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + conditionBuilderJK.append(" and ybje >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderBX.append(" and ybje >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderHK.append(" and hkybje >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderTZ.append(" and ybje >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderSQ.append(" and orig_amount\t >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderYT.append(" and org_amount >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderJZ.append(" and ybje >= '").append(condition.getValue().getFirstvalue()).append("' "); + conditionBuilderTX.append(" and e.total_amount >= '").append(condition.getValue().getFirstvalue()).append("' "); + } + + if (StringUtils.isNotEmpty(condition.getValue().getSecondvalue())) { + conditionBuilderJK.append(" and ybje <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderBX.append(" and ybje <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderHK.append(" and hkybje <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderTZ.append(" and ybje <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderSQ.append(" and orig_amount <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderYT.append(" and org_amount <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderJZ.append(" and ybje <= '").append(condition.getValue().getSecondvalue()).append("' "); + conditionBuilderTX.append(" and e.total_amount <= '").append(condition.getValue().getSecondvalue()).append("' "); + } + } + + if ("bzbm".equals(condition.getField()) && StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + String[] bzbms = condition.getValue().getFirstvalue().split(","); + conditionBuilderJK.append(" and ").append(SqlUtils.getInStr("bzbm", bzbms, true)); + conditionBuilderBX.append(" and ").append(SqlUtils.getInStr("bzbm", bzbms, true)); + conditionBuilderHK.append(" and ").append(SqlUtils.getInStr("bzbm", bzbms, true)); + conditionBuilderTZ.append(" and ").append(SqlUtils.getInStr("bzbm", bzbms, true)); + conditionBuilderSQ.append(" and ").append(SqlUtils.getInStr("pk_currtype", bzbms, true)); + conditionBuilderYT.append(" and ").append(SqlUtils.getInStr("pk_currtype", bzbms, true)); + conditionBuilderJZ.append(" and ").append(SqlUtils.getInStr("bzbm", bzbms, true)); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("e.bzbm", bzbms, true)); + } + + if ("djzt".equals(condition.getField()) && StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + List list = Arrays.asList(condition.getValue().getFirstvalue().split(",")); + conditionBuilderJK.append(" and ").append(SqlUtils.getInStr("djzt", list, true)); + conditionBuilderBX.append(" and ").append(SqlUtils.getInStr("djzt", list, true)); + conditionBuilderHK.append(" and ").append(SqlUtils.getInStr("djzt", list, true)); + conditionBuilderJZ.append(" and ").append(SqlUtils.getInStr("billstatus", list, true)); + list = new ArrayList(list); + if (list.contains("3")) { + list.remove("3"); + } + + if (list.contains("2")) { + Collections.replaceAll(list, "2", "3"); + } + + conditionBuilderTZ.append(" and ").append(SqlUtils.getInStr("djzt", list, true)); + conditionBuilderSQ.append(" and ").append(SqlUtils.getInStr("billstatus", list, true)); + conditionBuilderYT.append(" and ").append(SqlUtils.getInStr("billstatus", list, true)); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("3", list, true)); + } + + if ("spzt".equals(condition.getField()) && StringUtils.isNotEmpty(condition.getValue().getFirstvalue())) { + List list = Arrays.asList(condition.getValue().getFirstvalue().split(",")); + conditionBuilderJK.append(" and ").append(SqlUtils.getInStr("spzt", list, true)); + conditionBuilderBX.append(" and ").append(SqlUtils.getInStr("spzt", list, true)); + conditionBuilderHK.append(" and ").append(SqlUtils.getInStr("spzt", list, true)); + conditionBuilderTZ.append(" and ").append(SqlUtils.getInStr("spzt", list, true)); + conditionBuilderSQ.append(" and ").append(SqlUtils.getInStr("apprstatus", list, true)); + conditionBuilderYT.append(" and ").append(SqlUtils.getInStr("apprstatus", list, true)); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("1", list, true)); + } + } + } + + if (hasRecon) { + conditionBuilderJK.append(" and ").append(reconJK); + conditionBuilderBX.append(" and ").append(reconBX); + conditionBuilderHK.append(" and ").append(reconHK); + conditionBuilderTZ.append(" and ").append(reconTZ); + conditionBuilderSQ.append(" and ").append(reconSQ); + conditionBuilderYT.append(" and ").append(reconYT); + conditionBuilderJZ.append(" and ").append(reconJZ); + conditionBuilderTX.append(" and ").append(reconTX); + } else { + if (!ifHasTradeType) { + String groupPk = InvocationInfoProxy.getInstance().getGroupId(); + String userId = InvocationInfoProxy.getInstance().getUserId(); + String currentDate = (new UFDateTime()).toLocalString(); + List permBillTypeList = ((IBillManageService)NCLocator.getInstance().lookup(IBillManageService.class)).queryPermBillType(userId, currentDate, groupPk); + if (permBillTypeList != null && permBillTypeList.size() > 0) { + String[] hasPermissionTradeTypecode = new String[permBillTypeList.size()]; + + for(int i = 0; i < permBillTypeList.size(); ++i) { + hasPermissionTradeTypecode[i] = ((BillManageTradeTypeVO)permBillTypeList.get(i)).getPk_billtypeid(); + } + + String inSql = SqlUtils.getInStr("pk_tradetypeid", hasPermissionTradeTypecode, true); + conditionBuilderJK.append(" and ").append(inSql); + conditionBuilderBX.append(" and ").append(inSql); + conditionBuilderHK.append(" and ").append(inSql); + conditionBuilderTZ.append(" and ").append(inSql); + conditionBuilderSQ.append(" and ").append(inSql); + conditionBuilderYT.append(" and ").append(inSql); + conditionBuilderJZ.append(" and ").append(inSql); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("t.pk_billtypeid", hasPermissionTradeTypecode, true)); + } else { + conditionBuilderJK.append(" and ").append("1=2"); + conditionBuilderBX.append(" and ").append("1=2"); + conditionBuilderHK.append(" and ").append("1=2"); + conditionBuilderTZ.append(" and ").append("1=2"); + conditionBuilderSQ.append(" and ").append("1=2"); + conditionBuilderYT.append(" and ").append("1=2"); + conditionBuilderJZ.append(" and ").append("1=2"); + conditionBuilderTX.append(" and ").append("1=2"); + } + } + + if (!filterByPkOrg) { + IFunctionPermissionPubService service = (IFunctionPermissionPubService)NCLocator.getInstance().lookup(IFunctionPermissionPubService.class); + String[] orgByIDs = service.getUserPermissionPkOrgs(InvocationInfoProxy.getInstance().getUserId(), (String)null, InvocationInfoProxy.getInstance().getGroupId()); + String inSql = SqlUtils.getInStr("pk_org", orgByIDs, true); + conditionBuilderJK.append(" and ").append(inSql); + conditionBuilderBX.append(" and ").append(inSql); + conditionBuilderHK.append(" and ").append(inSql); + conditionBuilderTZ.append(" and ").append(inSql); + conditionBuilderSQ.append(" and ").append(inSql); + conditionBuilderYT.append(" and ").append(inSql); + conditionBuilderJZ.append(" and ").append(inSql); + conditionBuilderTX.append(" and ").append(SqlUtils.getInStr("e.pk_org", orgByIDs, true)); + } + } + + whereSqlMap.put("JK", conditionBuilderJK.toString()); + whereSqlMap.put("BX", conditionBuilderBX.toString()); + whereSqlMap.put("HK", conditionBuilderHK.toString()); + whereSqlMap.put("TZ", conditionBuilderTZ.toString()); + whereSqlMap.put("SQ", conditionBuilderSQ.toString()); + whereSqlMap.put("YT", conditionBuilderYT.toString()); + whereSqlMap.put("JZ", conditionBuilderJZ.toString()); + whereSqlMap.put("TX", conditionBuilderTX.toString()); + } + } + + return whereSqlMap; + } + + public List queryBillInfoByPage(QueryTreeFormatVO queryTreeFormatVO) throws Exception { + INCCloudQueryService ncCloudQueryService = (INCCloudQueryService)NCLocator.getInstance().lookup(INCCloudQueryService.class); + PageInfo pageInfo = null; + if (queryTreeFormatVO != null) { + pageInfo = queryTreeFormatVO.getPageInfo(); + } + + IQueryScheme queryscheme = ncCloudQueryService.convertCondition(queryTreeFormatVO); + if (queryscheme == null) { + return null; + } else { + SQLParameter sqlParam = new SQLParameter(); + StringBuilder conditionBuilder = new StringBuilder(); + String conditionSql = null; + QueryCondition queryCondition = queryTreeFormatVO.getQuerycondition(); + List conditions = queryCondition.getConditions(); + if (conditions != null && conditions.size() > 0) { + for(Condition condition : conditions) { + if (condition != null && condition.getValue() != null && "search".equals(condition.getField()) && !StringUtils.isEmpty(condition.getValue().getFirstvalue())) { + String keyWord = condition.getValue().getFirstvalue(); + conditionBuilder.append("and ( djbh like ? "); + sqlParam.addParam("%" + keyWord + "%"); + String[] pkDepts = this.queryPkDeptByNameLike(keyWord); + String[] pkPsndocs = this.queryPkPsndocByNameLike(keyWord); + if (pkDepts != null && pkDepts.length > 0) { + conditionBuilder.append(" or " + SqlUtils.getInStr("deptid_v", pkDepts, true)); + } + + if (pkPsndocs != null && pkPsndocs.length > 0) { + conditionBuilder.append(" or " + SqlUtils.getInStr("jkbxr", pkPsndocs, true)); + } + + conditionBuilder.append(")"); + } + } + } + + conditionSql = conditionBuilder.toString(); + Map sqlMap = this.geConditionSqlByConditions(queryTreeFormatVO); + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("select *").append(" from (select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" red_status as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_jkzb").append(" where dr = 0 ").append(null == sqlMap.get("JK") ? "" : (String)sqlMap.get("JK")).append(" union all").append(" select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" \t\t\t ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" red_status as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_bxzb").append(" where dr = 0 ").append(null == sqlMap.get("BX") ? "" : (String)sqlMap.get("BX")).append(" union all").append(" select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" hkybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" red_status as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_bxzb").append(" where dr = 0 ").append(null == sqlMap.get("HK") ? "" : (String)sqlMap.get("HK")).append(" union all").append(" select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" red_status as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_bxzb").append(" where dr = 0 ").append(null == sqlMap.get("TZ") ? "" : (String)sqlMap.get("TZ")).append(" union all").append(" select pk_accrued_bill as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" pk_currtype as bzbm,").append(" org_amount as ybje,").append(" billstatus as djzt,").append(" apprstatus as spzt,").append(" operator_dept as deptid_v,").append(" operator as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" redflag as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvetime as shrq").append(" from er_accrued").append(" where dr = 0 ").append(null == sqlMap.get("YT") ? "" : (String)sqlMap.get("YT")).append(" union all").append(" select pk_mtapp_bill as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" pk_currtype as bzbm,").append(" orig_amount as ybje,").append(" billstatus as djzt,").append(" apprstatus as spzt,").append(" apply_dept as deptid_v,").append(" billmaker as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" null as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvetime as shrq").append(" from er_mtapp_bill").append(" where dr = 0 ").append(null == sqlMap.get("SQ") ? "" : (String)sqlMap.get("SQ")).append(" union all").append(" select pk_costshare as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" billstatus as djzt,").append(" case when billstatus=2 or billstatus=3 then 1 else -1 end as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" null as red_status, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvedate as shrq").append(" from er_costshare").append(" where dr = 0 ").append(null == sqlMap.get("JZ") ? "" : (String)sqlMap.get("JZ")).append(" union all").append(" select e.pk_jkbx as pk_jkbx,").append(" t.pk_billtypeid as pk_tradetypeid,").append(" e.bx_pk_billtype as djlxbm,").append(" t.parentbilltype as pk_billtype,").append(" e.bx_billno as djbh,").append(" e.bx_djrq as djrq,").append(" e.bzbm as bzbm,").append(" e.total_amount as ybje,").append(" 3 as djzt,").append(" \t\t\t\t 1\t\t as spzt,").append(" e.bx_deptid as deptid_v,").append(" e.bx_jkbxr as jkbxr,").append(" null as approver,").append(" e.pk_org as pk_org, ").append(" e.creator as creator, ").append(" null as red_status, ").append(" e.saga_frozen as saga_frozen, ").append(" e.saga_btxid as saga_btxid, ").append(" e.saga_gtxid as saga_gtxid, ").append(" e.saga_status as saga_status, ").append(" null as shrq").append(" from er_expamtinfo e").append(" left join bd_billtype t on t.PK_BILLTYPECODE=e.bx_pk_billtype and t.PK_GROUP=e.PK_GROUP").append(" where e.dr = 0 ").append(null == sqlMap.get("TX") ? "" : (String)sqlMap.get("TX")).append(" ) temp where 1=1 "); + if (!conditionSql.isEmpty()) { + sqlBuilder.append(conditionSql); + } + + String sql = sqlBuilder.toString(); + if (pageInfo != null) { + if (pageInfo.getTotal() == 0) { + Integer total = this.countBillInfoByCondition(queryTreeFormatVO, conditionSql, sqlParam, sqlMap); + pageInfo.setTotal(total); + } + + Integer pageSize = Integer.valueOf(pageInfo.getPageSize()); + Integer totalPage = pageInfo.getTotal() % pageSize == 0 ? pageInfo.getTotal() / pageSize : pageInfo.getTotal() / pageSize + 1; + pageInfo.setTotalPage(totalPage); + int databaseType = DataSourceCenter.getInstance().getDatabaseType(); + LimitSQLBuilder sqlBuilderPage = SQLBuilderFactory.getInstance().createLimitSQLBuilder(databaseType); + int pageIndex = 0; + if (!StringUtils.isEmpty(pageInfo.getPageIndex())) { + pageIndex = Integer.valueOf(pageInfo.getPageIndex()); + } + + sql = sqlBuilderPage.build(sql + " order by temp.djrq desc", pageIndex + 1, Integer.valueOf(pageInfo.getPageSize())); + } else { + sql = sql + " order by temp.djrq desc"; + } + + IUAPQueryBS iuapQryService = (IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class); + List resultList = (List)iuapQryService.executeQuery(sql, sqlParam, new JKBXHeaderResultSetProcessor()); + return resultList; + } + } + + public int countBillInfoByCondition(QueryTreeFormatVO queryTreeFormatVO, String conditionSql, SQLParameter sqlParam, Map sqlMap) throws Exception { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("select count(1) as count from("); + sqlBuilder.append("select *").append(" from (select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_jkzb").append(" where dr = 0 ").append(null == sqlMap.get("JK") ? "" : (String)sqlMap.get("JK")).append(" union all").append(" select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_bxzb").append(" where dr = 0 ").append(null == sqlMap.get("BX") ? "" : (String)sqlMap.get("BX")).append(" union all").append(" select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" hkybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_bxzb").append(" where dr = 0 ").append(null == sqlMap.get("HK") ? "" : (String)sqlMap.get("HK")).append(" union all").append(" select pk_jkbx as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" djlxbm as djlxbm,").append(" pk_billtype as pk_billtype,").append(" djbh as djbh,").append(" djrq as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" djzt as djzt,").append(" spzt as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" shrq as shrq").append(" from er_bxzb").append(" where dr = 0 ").append(null == sqlMap.get("TZ") ? "" : (String)sqlMap.get("TZ")).append(" union all").append(" select pk_accrued_bill as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" pk_currtype as bzbm,").append(" org_amount as ybje,").append(" billstatus as djzt,").append(" apprstatus as spzt,").append(" operator_dept as deptid_v,").append(" operator as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvetime as shrq").append(" from er_accrued").append(" where dr = 0 ").append(null == sqlMap.get("YT") ? "" : (String)sqlMap.get("YT")).append(" union all").append(" select pk_mtapp_bill as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" pk_currtype as bzbm,").append(" orig_amount as ybje,").append(" billstatus as djzt,").append(" apprstatus as spzt,").append(" apply_dept as deptid_v,").append(" billmaker as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvetime as shrq").append(" from er_mtapp_bill").append(" where dr = 0 ").append(null == sqlMap.get("SQ") ? "" : (String)sqlMap.get("SQ")).append(" union all").append(" select pk_costshare as pk_jkbx,").append(" pk_tradetypeid as pk_tradetypeid,").append(" pk_tradetype as djlxbm,").append(" pk_billtype as pk_billtype,").append(" billno as djbh,").append(" billdate as djrq,").append(" bzbm as bzbm,").append(" ybje as ybje,").append(" billstatus as djzt,").append(" case when billstatus=2 or billstatus=3 then 1 else -1 end as spzt,").append(" deptid as deptid_v,").append(" jkbxr as jkbxr,").append(" approver as approver,").append(" pk_org as pk_org, ").append(" creator as creator, ").append(" saga_frozen as saga_frozen, ").append(" saga_btxid as saga_btxid, ").append(" saga_gtxid as saga_gtxid, ").append(" saga_status as saga_status, ").append(" approvedate as shrq").append(" from er_costshare").append(" where dr = 0 ").append(null == sqlMap.get("JZ") ? "" : (String)sqlMap.get("JZ")).append(" union all").append(" select e.pk_jkbx as pk_jkbx,").append(" t.pk_billtypeid as pk_tradetypeid,").append(" e.bx_pk_billtype as djlxbm,").append(" t.parentbilltype as pk_billtype,").append(" e.bx_billno as djbh,").append(" e.bx_djrq as djrq,").append(" e.bzbm as bzbm,").append(" e.total_amount as ybje,").append(" 3 as djzt,").append(" \t\t\t\t 1\t\t as spzt,").append(" e.bx_deptid as deptid_v,").append(" e.bx_jkbxr as jkbxr,").append(" null as approver,").append(" e.pk_org as pk_org, ").append(" e.creator as creator, ").append(" e.saga_frozen as saga_frozen, ").append(" e.saga_btxid as saga_btxid, ").append(" e.saga_gtxid as saga_gtxid, ").append(" e.saga_status as saga_status, ").append(" null as shrq").append(" from er_expamtinfo e").append(" left join bd_billtype t on t.PK_BILLTYPECODE=e.bx_pk_billtype and t.PK_GROUP=e.PK_GROUP").append(" where e.dr = 0 ").append(null == sqlMap.get("TX") ? "" : (String)sqlMap.get("TX")).append(" )temp where 1=1 "); + if (!conditionSql.isEmpty()) { + sqlBuilder.append(conditionSql); + } + + sqlBuilder.append(") a "); + String sql = sqlBuilder.toString(); + IUAPQueryBS iuapQryService = (IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class); + int count = (Integer)iuapQryService.executeQuery(sql, sqlParam, new ResultSetProcessor() { + private static final long serialVersionUID = 1L; + + public Object handleResultSet(ResultSet rs) throws SQLException { + int count; + for(count = 0; rs.next(); count = rs.getInt("count")) { + } + + return count; + } + }); + return count; + } + + public Map qryCurApproveman(List billIds) throws BusinessException { + StringBuilder sqlExe = new StringBuilder(); + sqlExe.append("select n.billid as billid, n.checkman as checkman, n.ischeck as ischeck"); + sqlExe.append(" from pub_wf_task t inner join pub_workflownote n on t.pk_wf_task=n.pk_wf_task"); + sqlExe.append(" where ").append(SqlUtils.getInStr("n.billid", billIds, true)); + sqlExe.append(" and t.taskstatus=0 "); + sqlExe.append(" and n.approvestatus =0 "); + IUAPQueryBS iuapQryService = (IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class); + SQLParameter sqlParam = new SQLParameter(); + List approveInfos = (List)iuapQryService.executeQuery(sqlExe.toString(), sqlParam, new ArrayListProcessor()); + List busiidUserList = new ArrayList(); + List userid = new ArrayList(); + + for(Object[] approveInfo : approveInfos) { + String[] busiidUser = new String[]{(String)approveInfo[0], (String)approveInfo[1]}; + busiidUserList.add(busiidUser); + userid.add((String)approveInfo[1]); + } + + IUserManageQuery userQry = (IUserManageQuery)NCLocator.getInstance().lookup(IUserManageQuery.class); + UserVO[] userVOs = userQry.queryUserByClause(SqlUtils.getInStr("cuserid", userid, true)); + Map userid_username = new HashMap(); + + for(UserVO vo : userVOs) { + userid_username.put(vo.getCuserid(), vo.getUser_name()); + } + + for(String[] busiidUser : busiidUserList) { + busiidUser[1] = (String)userid_username.get(busiidUser[1]); + } + + Map busiid_username = new HashMap(); + + for(String[] busiidUser : busiidUserList) { + if (!busiid_username.containsKey(busiidUser[0])) { + busiid_username.put(busiidUser[0], busiidUser[1]); + } else { + String var10000 = (String)busiid_username.get(busiidUser[0]); + String multiName = var10000 + ", " + busiidUser[1]; + busiid_username.put(busiidUser[0], multiName); + } + } + + return busiid_username; + } + + private class JKBXHeaderResultSetProcessor implements ResultSetProcessor { + private static final long serialVersionUID = 1L; + + private JKBXHeaderResultSetProcessor() { + } + + public Object handleResultSet(ResultSet rs) throws SQLException { + List resultList = new ArrayList(); + + while(rs.next()) { + JKBXHeaderVO tempHeader = new BXHeaderVO(); + tempHeader.setPk_jkbx(rs.getString("pk_jkbx")); + tempHeader.setPk_tradetypeid(rs.getString("pk_tradetypeid")); + tempHeader.setDjlxbm(rs.getString("djlxbm")); + tempHeader.setPk_billtype(rs.getString("pk_billtype")); + tempHeader.setDjbh(rs.getString("djbh")); + tempHeader.setDjrq(StringUtils.isEmpty(rs.getString("djrq")) ? null : new UFDate(rs.getString("djrq"))); + tempHeader.setBzbm(rs.getString("bzbm")); + tempHeader.setYbje(new UFDouble(rs.getDouble("ybje"))); + tempHeader.setDjzt(rs.getInt("djzt")); + tempHeader.setSpzt(rs.getInt("spzt")); + tempHeader.setDeptid_v(rs.getString("deptid_v")); + tempHeader.setJkbxr(rs.getString("jkbxr")); + tempHeader.setApprover(rs.getString("approver")); + tempHeader.setPk_org(rs.getString("pk_org")); + tempHeader.setCreator(rs.getString("creator")); + tempHeader.setRed_status(rs.getInt("red_status")); + tempHeader.setShrq(StringUtils.isEmpty(rs.getString("shrq")) ? null : new UFDateTime(rs.getString("shrq"))); + tempHeader.setSaga_frozen(rs.getInt("saga_frozen")); + tempHeader.setSaga_btxid(rs.getString("saga_btxid")); + tempHeader.setSaga_gtxid(rs.getString("saga_gtxid")); + tempHeader.setSaga_status(rs.getInt("saga_status")); + resultList.add(tempHeader); + } + + return resultList; + } + } +} diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java index d92f337..2a015f8 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java @@ -302,22 +302,7 @@ public class AfterApproveRuleSyncMes implements IRule { } // 通过自定义属性传 - JSONArray properties = new JSONArray(); - JSONObject SXZF16 = new JSONObject(); - JSONObject SXZF17 = new JSONObject(); - JSONObject SXZF18 = new JSONObject(); - - SXZF16.put("propertyFiled", "SXZF16"); - SXZF17.put("propertyFiled", "SXZF17"); - SXZF18.put("propertyFiled", "SXZF18"); - - SXZF16.put("propertyValue", item.getVparentbillcode()); - SXZF17.put("propertyValue", item.getVparentmorowno()); - SXZF18.put("propertyValue", head.getVtrantypecode()); - - properties.add(SXZF16); - properties.add(SXZF17); - properties.add(SXZF18); + JSONArray properties = buildProperties(head, item); data.put("properties", properties); JSONObject requestPayload = new JSONObject(); @@ -334,6 +319,51 @@ public class AfterApproveRuleSyncMes implements IRule { obmlog.info("生产订单 " + vbillcode + " 行 " + itemRow + " 已成功发送到MES系统或特定错误已被记录。"); } + /** + * 构建MES同步所需的properties数组 + * + * @param head 生产订单表头 + * @param item 生产订单明细 + * @return JSONArray properties数组 + */ + private JSONArray buildProperties(PMOHeadVO head, PMOItemVO item) { + JSONArray properties = new JSONArray(); + + // SXZF16 - 上级生产订单号 + addProperty(properties, "SXZF16", item.getVparentbillcode()); + + // SXZF17 - 上级生产订单行号 + addProperty(properties, "SXZF17", item.getVparentmorowno()); + + // SXZF18 - 生产订单交易类型编码 + addProperty(properties, "SXZF18", head.getVtrantypecode()); + + // SXZF22 - 生产订单交易类型编码 + addProperty(properties, "SXZF22", head.getVtrantypecode()); + + // SXZF23 - 生产订单主键 + addProperty(properties, "SXZF23", head.getCpmohid()); + + // SXZF24 - 生产订单明细主键 + addProperty(properties, "SXZF24", item.getCmoid()); + + return properties; + } + + /** + * 添加单个property到properties数组 + * + * @param properties JSONArray数组 + * @param propertyField 属性字段名 + * @param propertyValue 属性值 + */ + private void addProperty(JSONArray properties, String propertyField, String propertyValue) { + JSONObject property = new JSONObject(); + property.put("propertyFiled", propertyField); + property.put("propertyValue", propertyValue); + properties.add(property); + } + /** * 根据主键查询编码 diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java index b04036d..78756f3 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java @@ -2,7 +2,6 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.yonyou.iuap.bd.defdoc.dto.DefDoc; import nc.bs.dao.BaseDAO; import nc.bs.logging.Log; import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; @@ -10,22 +9,17 @@ import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; import nc.jdbc.framework.processor.ColumnProcessor; import nc.pubitf.para.SysInitQuery; -import nc.util.mmf.framework.base.MMMapUtil; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.bd.defdoc.DefdocVO; -import nc.vo.bd.material.MaterialVO; -import nc.vo.bd.stordoc.StordocVO; import nc.vo.cmp.util.StringUtils; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; -import nc.vo.org.DeptVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFBoolean; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.pub.SqlBuilder; -import nc.vo.rum.stocks.StocksVO; import nc.vo.scmpub.util.ArrayUtil; import java.util.ArrayList; diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index a5bf14b..30a7086 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -1056,6 +1056,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { UFDouble ntaxrate = BFPubTools.getUFDouble_NullAsZero(bodydata.get("ntaxrate")); newBvo.setAttributeValue("ntaxrate", ntaxrate); newBvo.setVbdef11(bodydata.getOrDefault("vbdef11", "") + ""); + newBvo.setVbdef14(bodydata.getOrDefault("vbdef14", "") + ""); newBvo.setCsaleorderbid(null); newBvo.setCcurrencyid(ybpk); newBvo.setFtaxtypeflag(1); diff --git a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java index 5787c17..3fb851b 100644 --- a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java +++ b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java @@ -407,9 +407,10 @@ public class IAPISaleInvMaitainImpl { } private String getTaxcode(String taxrateStr) throws BusinessException { + UFDouble taxrate = new UFDouble(taxrateStr==null?"0":taxrateStr).multiply(100).setScale(2, UFDouble.ROUND_HALF_UP); IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); - String sql = " select code FROM bd_taxrate tt inner join bd_taxcode tc on tt.pk_taxcode=tc.pk_taxcode where taxrate='" - + taxrateStr + "' AND ROWNUM = 1 "; + String sql = " select code FROM bd_taxrate tt inner join bd_taxcode tc on tt.pk_taxcode=tc.pk_taxcode where TO_NUMBER(taxrate)='" + + taxrate.toString() + "' AND ROWNUM = 1 "; String taxcodeStr = (String) queryBS.executeQuery(sql, new ColumnProcessor()); return taxcodeStr; } diff --git a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java index 30ccfcd..a443322 100644 --- a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java +++ b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java @@ -1558,7 +1558,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { try { // 查询组织编码 - String sql = "SELECT code FROM org_orgs WHERE pk_org = ?"; + String sql = "SELECT code FROM org_orgs WHERE dr = 0 and pk_org = ?"; SQLParameter param = new SQLParameter(); param.addParam(pk_org); String orgCode = (String) DAO.executeQuery(sql, param, new ColumnProcessor()); @@ -1588,7 +1588,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { StringBuilder sql = new StringBuilder(); sql.append("SELECT MAX(TO_NUMBER(hversion)) as max_version "); sql.append("FROM bd_bom "); - sql.append("WHERE pk_org = ? "); + sql.append("WHERE dr = 0 and pk_org = ? "); SQLParameter param = new SQLParameter(); param.addParam(pk_org);