付款单修改价税合计后校验不能超过上游销售订单
This commit is contained in:
		
							parent
							
								
									888d783366
								
							
						
					
					
						commit
						a46fd3a138
					
				|  | @ -13,6 +13,7 @@ import nc.bs.arap.validator.CrossRuleCheckValidator; | |||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseBillVO; | ||||
| import nc.vo.arap.gathering.GatheringBillItemVO; | ||||
| import nc.vo.arap.utils.StringUtil; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
|  | @ -54,10 +55,10 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction | |||
| 			UFDouble money = billVO.getMoney(); // 修改后的金额 | ||||
| 			UFDouble oriMoney = billOriVO.getMoney(); // 修改前的金额 | ||||
| 			String pk_tradetype = billVO.getPk_tradetype(); | ||||
| 			if (!"F2-Cxx-02".equals(pk_tradetype)) { | ||||
| 				continue; | ||||
| 			} | ||||
| 			String def3 = billVO.getDef3(); // 收款单对应的销售订单id | ||||
| //			if (!"F2-Cxx-02".equals(pk_tradetype)) { | ||||
| //				continue; | ||||
| //			} | ||||
| 			String def3 = ((GatheringBillItemVO)bill.getChildrenVO()[0]).getSrc_billid(); // 收款单对应的销售订单id | ||||
| 			if (StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)) { | ||||
| 				// 无绑定的销售订单则下一次循环 | ||||
| 				continue; | ||||
|  | @ -79,8 +80,9 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction | |||
| 				ntotalorigmny = new UFDouble( | ||||
| 						saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); | ||||
| 			} | ||||
| 			UFDouble moreMoney = nreceivedmny.add(changeMoney).sub(ntotalorigmny); | ||||
| 			if (nreceivedmny.add(changeMoney).compareTo(ntotalorigmny) > 0) { | ||||
| 
 | ||||
| 			if (money.compareTo(ntotalorigmny) > 0) { | ||||
| 				UFDouble moreMoney = money.sub(ntotalorigmny); | ||||
| 				throw new BusinessException("【该笔收款已超销售订单" + moreMoney + "元,无法传输!请检查订单累计收款金额!】"); | ||||
| 			} | ||||
| 		} | ||||
|  |  | |||
|  | @ -14,6 +14,7 @@ import nc.bs.arap.validator.CrossRuleCheckValidator; | |||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseBillVO; | ||||
| import nc.vo.arap.gathering.GatheringBillItemVO; | ||||
| import nc.vo.arap.utils.StringUtil; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
|  | @ -66,10 +67,10 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { | |||
|             BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单 | ||||
|             UFDouble money = billVO.getMoney(); //金额 | ||||
|             String pk_tradetype = billVO.getPk_tradetype(); | ||||
|             if(!"F2-Cxx-02".equals(pk_tradetype)){ | ||||
|                 continue; | ||||
|             } | ||||
|             String def3 = billVO.getDef3(); //收款单对应的销售订单id | ||||
| //            if(!"F2-Cxx-02".equals(pk_tradetype)){ | ||||
| //                continue; | ||||
| //            } | ||||
|             String def3 = ((GatheringBillItemVO)bill.getChildrenVO()[0]).getSrc_billid(); // 收款单对应的销售订单id | ||||
|             if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){ | ||||
|                 //无绑定的销售订单则下一次循环 | ||||
|                 continue; | ||||
|  | @ -78,6 +79,7 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { | |||
|             //根据销售订单id去查询销售订单 | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'"; | ||||
| 
 | ||||
|             Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor()); | ||||
|             //销售订单价税合计 | ||||
|             UFDouble ntotalorigmny = UFDouble.ZERO_DBL; | ||||
|  | @ -87,9 +89,9 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { | |||
|                 nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString()); | ||||
|                 ntotalorigmny = new UFDouble(saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); | ||||
|             } | ||||
|             UFDouble moreMoney = nreceivedmny.add(money).sub(ntotalorigmny); | ||||
|             if(nreceivedmny.add(money).compareTo(ntotalorigmny) > 0){ | ||||
|                 throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】"); | ||||
|             if (money.compareTo(ntotalorigmny) > 0) { | ||||
|                 UFDouble moreMoney = money.sub(ntotalorigmny); | ||||
|                 throw new BusinessException("【该笔收款已超销售订单" + moreMoney + "元,无法传输!请检查订单累计收款金额!】"); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -0,0 +1,530 @@ | |||
| // | ||||
| // Source code recreated from a .class file by IntelliJ IDEA | ||||
| // (powered by FernFlower decompiler) | ||||
| // | ||||
| 
 | ||||
| package nc.bs.arap.util; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Vector; | ||||
| import nc.bs.arap.bill.ArapBillPubUtil; | ||||
| import nc.bs.businessevent.BdUpdateEvent; | ||||
| import nc.bs.businessevent.BusinessEvent; | ||||
| import nc.bs.businessevent.IBusinessEvent; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.bs.dao.DAOException; | ||||
| import nc.bs.framework.common.NCLocator; | ||||
| import nc.bs.logging.Log; | ||||
| import nc.bs.logging.Logger; | ||||
| import nc.jdbc.framework.processor.ColumnListProcessor; | ||||
| import nc.pubitf.uapbd.IMaterialPubService; | ||||
| import nc.pubitf.uapbd.MeasdocUtil; | ||||
| import nc.ui.dbcache.DBCacheFacade; | ||||
| import nc.vo.arap.basebill.BaseAggVO; | ||||
| import nc.vo.arap.basebill.BaseBillVO; | ||||
| import nc.vo.arap.basebill.BaseItemVO; | ||||
| import nc.vo.arap.djlx.DjLXVO; | ||||
| import nc.vo.arap.global.ArapBillDealVOConsts; | ||||
| import nc.vo.arap.pub.ArapConstant; | ||||
| import nc.vo.arap.pub.BillEnumCollection.FromSystem; | ||||
| import nc.vo.arap.utils.ArrayUtil; | ||||
| import nc.vo.arap.utils.StringUtil; | ||||
| import nc.vo.arap.verify.AggverifyVO; | ||||
| import nc.vo.arap.verify.VerifyDetailVO; | ||||
| import nc.vo.bd.material.MaterialVO; | ||||
| import nc.vo.fipub.exception.ExceptionHandler; | ||||
| import nc.vo.ml.NCLangRes4VoTransl; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pub.lang.UFBoolean; | ||||
| import nc.vo.pub.lang.UFDouble; | ||||
| import nccloud.commons.lang.ArrayUtils; | ||||
| import nccloud.commons.lang.StringUtils; | ||||
| 
 | ||||
| public final class ArapVOUtils { | ||||
|     private static final String ZB = "zb."; | ||||
|     private static Map<Object, Integer> materialDecMap = new HashMap(); | ||||
| 
 | ||||
|     public ArapVOUtils() { | ||||
|     } | ||||
| 
 | ||||
|     public static Map<String, Integer> getDecimalFromSource(List<String> pks) { | ||||
|         Map<String, Integer> result = new HashMap(); | ||||
| 
 | ||||
|         for(String pk : pks) { | ||||
|             if (null != materialDecMap.get(pk)) { | ||||
|                 result.put(pk, (Integer)materialDecMap.get(pk)); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         try { | ||||
|             Map<String, MaterialVO> vo = ((IMaterialPubService)NCLocator.getInstance().lookup(IMaterialPubService.class)).queryMaterialBaseInfoByPks((String[])pks.toArray(new String[0]), new String[]{"pk_measdoc"}); | ||||
| 
 | ||||
|             for(String pk : vo.keySet()) { | ||||
|                 MaterialVO materialVO = (MaterialVO)vo.get(pk); | ||||
|                 Integer[] num = MeasdocUtil.getInstance().getPrecisionByPks(new String[]{materialVO.getPk_measdoc()}); | ||||
|                 if (!StringUtil.isEmptyArry(num)) { | ||||
|                     materialDecMap.put(pk, num[0]); | ||||
|                     result.put(pk, num[0]); | ||||
|                 } else { | ||||
|                     materialDecMap.put(pk, 2); | ||||
|                     result.put(pk, 2); | ||||
|                 } | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             Logger.debug(e.getMessage()); | ||||
|         } | ||||
| 
 | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     public static int getDecimalFromSource(Object pk_material) { | ||||
|         try { | ||||
|             if ("~".equals(pk_material) || null == pk_material) { | ||||
|                 return 2; | ||||
|             } | ||||
| 
 | ||||
|             if (null != materialDecMap.get(pk_material)) { | ||||
|                 return (Integer)materialDecMap.get(pk_material); | ||||
|             } | ||||
| 
 | ||||
|             String pkMeasdoc = ""; | ||||
| 
 | ||||
|             try { | ||||
|                 Vector<?> fromDBCache = DBCacheFacade.matchPK("select pk_measdoc from bd_material where pk_material in(?)", new String[]{pk_material.toString()}, "pk_measdoc"); | ||||
|                 pkMeasdoc = (String)((Vector)fromDBCache.get(0)).get(0); | ||||
|             } catch (Exception var5) { | ||||
|                 Map<String, MaterialVO> vo = ((IMaterialPubService)NCLocator.getInstance().lookup(IMaterialPubService.class)).queryMaterialBaseInfoByPks(new String[]{pk_material.toString()}, new String[]{"pk_measdoc"}); | ||||
|                 pkMeasdoc = ((MaterialVO)vo.get(pk_material.toString())).getPk_measdoc(); | ||||
|             } | ||||
| 
 | ||||
|             Integer[] num = MeasdocUtil.getInstance().getPrecisionByPks(new String[]{pkMeasdoc}); | ||||
|             if (!StringUtil.isEmptyArry(num)) { | ||||
|                 materialDecMap.put(pk_material, num[0]); | ||||
|                 return num[0]; | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             Logger.debug(e.getMessage()); | ||||
|         } | ||||
| 
 | ||||
|         return 0; | ||||
|     } | ||||
| 
 | ||||
|     public static void validateVoCopyRed(BaseAggVO vo) throws BusinessException { | ||||
|         CircularlyAccessibleValueObject[] childrenVOs = vo.getChildrenVO(); | ||||
|         BaseBillVO bill = (BaseBillVO)vo.getParentVO(); | ||||
| 
 | ||||
|         for(CircularlyAccessibleValueObject children : childrenVOs) { | ||||
|             BaseItemVO item = (BaseItemVO)children; | ||||
|             if (bill.getBillclass().equals(ArapConstant.ARAP_FK_BILLCLASS) && item.getObjtype() != null && item.getObjtype() == 0 && bill.getIsrefund() != null && bill.getIsrefund().booleanValue()) { | ||||
|                 throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0971")); | ||||
|             } | ||||
| 
 | ||||
|             if (bill.getBillclass().equals(ArapConstant.ARAP_AP_BILLCLASS) && item.getObjtype() != null && item.getObjtype() == 0 && bill.getIsrefund() != null && bill.getIsrefund().booleanValue()) { | ||||
|                 throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0972")); | ||||
|             } | ||||
| 
 | ||||
|             if (bill.getBillclass().equals(ArapConstant.ARAP_SK_BILLCLASS) && item.getObjtype() != null && item.getObjtype() == 1 && bill.getIsrefund() != null && bill.getIsrefund().booleanValue()) { | ||||
|                 throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0973")); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         checkBill(new BaseAggVO[]{vo}, "add"); | ||||
|     } | ||||
| 
 | ||||
|     public static ArapVOData[] getOtherSystemVerifyVOData(IBusinessEvent event, String top_billtype, String idfield, String[] valuefields, boolean srcBillIdMustNull, boolean srcItemIdMustNull) { | ||||
|         ArrayList<AggverifyVO> agglist = (ArrayList)((BusinessEvent)event).getObject(); | ||||
|         List<ArapVOData> billList = new ArrayList(); | ||||
|         if (agglist == null) { | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } else { | ||||
|             for(AggverifyVO agg : agglist) { | ||||
|                 VerifyDetailVO[] childrenVO = (VerifyDetailVO[])agg.getChildrenVO(); | ||||
|                 CircularlyAccessibleValueObject headVO = agg.getParentVO(); | ||||
| 
 | ||||
|                 for(VerifyDetailVO child : childrenVO) { | ||||
|                     if (!child.getBusiflag().equals(ArapBillDealVOConsts.BACKONVERIFY_FLAG) && StringUtils.isEmpty(child.getBusidata().getSrc_billid()) == srcBillIdMustNull && StringUtils.isEmpty(child.getBusidata().getSrc_itemid()) == srcItemIdMustNull && child.getBusidata().getTop_billtype() != null && child.getBusidata().getTop_billtype().trim().equals(top_billtype)) { | ||||
|                         ArapVOData vodata = new ArapVOData(); | ||||
|                         vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); | ||||
| 
 | ||||
|                         for(String valueField : valuefields) { | ||||
|                             if (valueField.startsWith("zb.")) { | ||||
|                                 vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                             } else { | ||||
|                                 vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); | ||||
|                             } | ||||
|                         } | ||||
| 
 | ||||
|                         billList.add(vodata); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static ArapVOData[] getOtherSystemVerifyVOData(IBusinessEvent event, String top_billtype, String idfield, String[] valuefields, String flag) { | ||||
|         ArrayList<AggverifyVO> agglist = (ArrayList)((BusinessEvent)event).getObject(); | ||||
|         List<ArapVOData> billList = new ArrayList(); | ||||
|         if (agglist == null) { | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } else { | ||||
|             for(AggverifyVO agg : agglist) { | ||||
|                 VerifyDetailVO[] childrenVO = (VerifyDetailVO[])agg.getChildrenVO(); | ||||
|                 CircularlyAccessibleValueObject headVO = agg.getParentVO(); | ||||
| 
 | ||||
|                 for(VerifyDetailVO child : childrenVO) { | ||||
|                     if (!child.getBusiflag().equals(ArapBillDealVOConsts.RBVERIFY_FLAG) && !child.getBusiflag().equals(ArapBillDealVOConsts.BACKONVERIFY_FLAG) && child.getBusidata().getTop_billtype() != null && top_billtype.trim().equals(child.getBusidata().getTop_billtype().trim())) { | ||||
|                         if ("0".equals(flag)) { | ||||
|                             if (child.getBusidata().getInsurance() != null && child.getBusidata().getInsurance().booleanValue()) { | ||||
|                                 ArapVOData vodata = new ArapVOData(); | ||||
|                                 vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); | ||||
| 
 | ||||
|                                 for(String valueField : valuefields) { | ||||
|                                     if (valueField.startsWith("zb.")) { | ||||
|                                         vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                                     } else { | ||||
|                                         vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); | ||||
|                                     } | ||||
|                                 } | ||||
| 
 | ||||
|                                 billList.add(vodata); | ||||
|                             } | ||||
|                         } else if ("1".equals(flag)) { | ||||
|                             if (child.getBusidata().getPrepay() != null && child.getBusidata().getPrepay() == 1) { | ||||
|                                 ArapVOData vodata = new ArapVOData(); | ||||
|                                 vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); | ||||
| 
 | ||||
|                                 for(String valueField : valuefields) { | ||||
|                                     if (valueField.startsWith("zb.")) { | ||||
|                                         vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                                     } else { | ||||
|                                         vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); | ||||
|                                     } | ||||
|                                 } | ||||
| 
 | ||||
|                                 billList.add(vodata); | ||||
|                             } | ||||
|                         } else if ("2".equals(flag) && child.getBusidata().getPrepay() != null && child.getBusidata().getPrepay() == 0 && child.getBusidata().getInsurance() != null && !child.getBusidata().getInsurance().booleanValue()) { | ||||
|                             ArapVOData vodata = new ArapVOData(); | ||||
|                             vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); | ||||
| 
 | ||||
|                             for(String valueField : valuefields) { | ||||
|                                 if (valueField.startsWith("zb.")) { | ||||
|                                     vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                                 } else { | ||||
|                                     vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); | ||||
|                                 } | ||||
|                             } | ||||
| 
 | ||||
|                             billList.add(vodata); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static ArapVOData[] getOtherSystemRBVerifyVOData(IBusinessEvent event, String top_billtype, String idfield, String[] valuefields, String flag) { | ||||
|         ArrayList<AggverifyVO> agglist = (ArrayList)((BusinessEvent)event).getObject(); | ||||
|         List<ArapVOData> billList = new ArrayList(); | ||||
|         if (agglist == null) { | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } else { | ||||
|             for(AggverifyVO agg : agglist) { | ||||
|                 VerifyDetailVO[] childrenVO = (VerifyDetailVO[])agg.getChildrenVO(); | ||||
|                 CircularlyAccessibleValueObject headVO = agg.getParentVO(); | ||||
| 
 | ||||
|                 for(VerifyDetailVO child : childrenVO) { | ||||
|                     if (!child.getBusiflag().equals(ArapBillDealVOConsts.BACKONVERIFY_FLAG) && child.getBusiflag().equals(ArapBillDealVOConsts.RBVERIFY_FLAG) && child.getBusidata().getTop_billtype() != null && top_billtype.trim().equals(child.getBusidata().getTop_billtype().trim())) { | ||||
|                         if ("0".equals(flag)) { | ||||
|                             if (child.getBusidata().getInsurance() != null && child.getBusidata().getInsurance().booleanValue()) { | ||||
|                                 ArapVOData vodata = new ArapVOData(); | ||||
|                                 vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); | ||||
| 
 | ||||
|                                 for(String valueField : valuefields) { | ||||
|                                     if (valueField.startsWith("zb.")) { | ||||
|                                         vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                                     } else { | ||||
|                                         vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); | ||||
|                                     } | ||||
|                                 } | ||||
| 
 | ||||
|                                 billList.add(vodata); | ||||
|                             } | ||||
|                         } else if ("1".equals(flag)) { | ||||
|                             if (child.getBusidata().getPrepay() == 1) { | ||||
|                                 ArapVOData vodata = new ArapVOData(); | ||||
|                                 vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); | ||||
| 
 | ||||
|                                 for(String valueField : valuefields) { | ||||
|                                     if (valueField.startsWith("zb.")) { | ||||
|                                         vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                                     } else { | ||||
|                                         vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); | ||||
|                                     } | ||||
|                                 } | ||||
| 
 | ||||
|                                 billList.add(vodata); | ||||
|                             } | ||||
|                         } else if ("2".equals(flag) && child.getBusidata().getPrepay() == 0 && child.getBusidata().getInsurance() != null && !child.getBusidata().getInsurance().booleanValue()) { | ||||
|                             ArapVOData vodata = new ArapVOData(); | ||||
|                             vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); | ||||
| 
 | ||||
|                             for(String valueField : valuefields) { | ||||
|                                 if (valueField.startsWith("zb.")) { | ||||
|                                     vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                                 } else { | ||||
|                                     vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); | ||||
|                                 } | ||||
|                             } | ||||
| 
 | ||||
|                             billList.add(vodata); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static ArapVOData[] getOtherSystemBillVOData(IBusinessEvent event, String src_syscode, String top_billtype, String idfield, String[] valuefields) { | ||||
|         BaseAggVO[] otherSystemBills = getOtherSystemBills(event, src_syscode, top_billtype); | ||||
|         List<ArapVOData> billList = new ArrayList(); | ||||
|         if (ArrayUtils.isEmpty(otherSystemBills)) { | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } else { | ||||
|             for(BaseAggVO agg : otherSystemBills) { | ||||
|                 BaseBillVO headVO = agg.getHeadVO(); | ||||
|                 BaseItemVO[] items = agg.getItems(); | ||||
| 
 | ||||
|                 for(BaseItemVO item : items) { | ||||
|                     if (StringUtils.isNotEmpty((String)item.getAttributeValue(idfield))) { | ||||
|                         ArapVOData vodata = new ArapVOData(); | ||||
|                         vodata.setSrcid((String)item.getAttributeValue(idfield)); | ||||
| 
 | ||||
|                         for(String valueField : valuefields) { | ||||
|                             if (valueField.startsWith("zb.")) { | ||||
|                                 vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); | ||||
|                             } else { | ||||
|                                 vodata.getHeadData().put(valueField, item.getAttributeValue(valueField)); | ||||
|                             } | ||||
|                         } | ||||
| 
 | ||||
|                         billList.add(vodata); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return (ArapVOData[])billList.toArray(new ArapVOData[0]); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static BaseAggVO[] getOtherSystemBills(IBusinessEvent event, String src_syscode, String top_billtype) { | ||||
|         Object value = null; | ||||
|         if (event instanceof BusinessEvent) { | ||||
|             value = ((BusinessEvent)event).getObject(); | ||||
|         } else if (event instanceof BdUpdateEvent) { | ||||
|             value = ((BdUpdateEvent)event).getNewObject(); | ||||
|         } | ||||
| 
 | ||||
|         List<BaseAggVO> billList = new ArrayList(); | ||||
|         BaseAggVO[] bills = new BaseAggVO[0]; | ||||
|         if (null != value) { | ||||
|             if (value.getClass().isArray()) { | ||||
|                 Object[] objs = (Object[]) value; | ||||
|                 bills = objs instanceof BaseAggVO[] ? (BaseAggVO[])objs : (BaseAggVO[])ArrayUtil.convertSupers2Subs((AggregatedValueObject[])objs, BaseAggVO.class); | ||||
|             } else { | ||||
|                 bills = new BaseAggVO[]{(BaseAggVO)value}; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         for(BaseAggVO vo : bills) { | ||||
|             BaseBillVO headVO = vo.getHeadVO(); | ||||
|             Integer billSrcSyscode = headVO.getSrc_syscode(); | ||||
|             if (src_syscode == null || billSrcSyscode != null && src_syscode.equals(billSrcSyscode == null ? "" : billSrcSyscode.toString())) { | ||||
|                 BaseItemVO[] items = vo.getItems(); | ||||
|                 boolean notMatch = false; | ||||
| 
 | ||||
|                 for(BaseItemVO item : items) { | ||||
|                     if (top_billtype != null) { | ||||
|                         String billTopBilltype = item.getTop_billtype(); | ||||
|                         if (billTopBilltype == null || !top_billtype.equals(billTopBilltype)) { | ||||
|                             notMatch = true; | ||||
|                             break; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 if (!notMatch) { | ||||
|                     billList.add(vo); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return (BaseAggVO[])billList.toArray(new BaseAggVO[0]); | ||||
|     } | ||||
| 
 | ||||
|     public static BaseAggVO[] getBills(IBusinessEvent event) { | ||||
|         Object value = null; | ||||
|         if (event instanceof BusinessEvent) { | ||||
|             value = ((BusinessEvent)event).getObject(); | ||||
|         } else if (event instanceof BdUpdateEvent) { | ||||
|             value = ((BdUpdateEvent)event).getNewObject(); | ||||
|         } | ||||
| 
 | ||||
|         BaseAggVO[] bills = new BaseAggVO[0]; | ||||
|         if (null != value) { | ||||
|             if (value.getClass().isArray()) { | ||||
|                 Object[] objs = (Object[]) value; | ||||
|                 bills = objs instanceof BaseAggVO[] ? (BaseAggVO[])objs : (BaseAggVO[])ArrayUtil.convertSupers2Subs((AggregatedValueObject[])objs, BaseAggVO.class); | ||||
|             } else { | ||||
|                 bills = new BaseAggVO[]{(BaseAggVO)value}; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return bills; | ||||
|     } | ||||
| 
 | ||||
|     public static boolean isOtherSystemPushBill(BaseBillVO billvo, String topBilltype) { | ||||
|         Integer srcSyscode = billvo.getSrc_syscode(); | ||||
|         UFBoolean isflowbill = billvo.getIsflowbill(); | ||||
|         if (isflowbill == null) { | ||||
|             isflowbill = UFBoolean.FALSE; | ||||
|         } | ||||
| 
 | ||||
|         if (srcSyscode == null) { | ||||
|             Log.getInstance("ArapVOUtils").error("srcSyscode is null"); | ||||
|             return false; | ||||
|         } else if (StringUtils.isNotEmpty(topBilltype) && topBilltype.trim().startsWith("4A")) { | ||||
|             return true; | ||||
|         } else if (StringUtils.isNotEmpty(topBilltype) && "36J3".equals(topBilltype)) { | ||||
|             return true; | ||||
|         } else if (isflowbill.booleanValue()) { | ||||
|             return false; | ||||
|         } else if (srcSyscode == FromSystem.SO.VALUE) { | ||||
|             return false; | ||||
|         } else if (srcSyscode != FromSystem.AR.VALUE && srcSyscode != FromSystem.AP.VALUE && srcSyscode != FromSystem.WBJHPT.VALUE && srcSyscode != FromSystem.XTDJ.VALUE && srcSyscode != FromSystem.FTS.VALUE) { | ||||
|             return true; | ||||
|         } else { | ||||
|             Log.getInstance("ArapVOUtils").error(srcSyscode); | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static boolean isArapRedBill(BaseBillVO billvo, String topBilltype) { | ||||
|         boolean isRed = false; | ||||
|         String pk_billtype = billvo.getPk_billtype(); | ||||
|         if (!StringUtil.isEmptyWithTrim(pk_billtype) && pk_billtype.equals(topBilltype)) { | ||||
|             isRed = true; | ||||
|         } | ||||
| 
 | ||||
|         return isRed; | ||||
|     } | ||||
| 
 | ||||
|     public static void resetMoneyBal(AggregatedValueObject[] bills) { | ||||
|         String pk_billtype = (String)bills[0].getParentVO().getAttributeValue("pk_billtype"); | ||||
|         if ("F2".equals(pk_billtype) || "F3".equals(pk_billtype)) { | ||||
|             List<String> result = null; | ||||
| 
 | ||||
|             try { | ||||
|                 result = (List)(new BaseDAO()).executeQuery("select pk_recpaytype from fi_recpaytype where dr=0 and isverification<>'Y'", new ColumnListProcessor()); | ||||
|             } catch (DAOException e) { | ||||
|                 ExceptionHandler.consume(e); | ||||
|             } | ||||
| 
 | ||||
|             for(AggregatedValueObject bill : bills) { | ||||
|                 CircularlyAccessibleValueObject[] bodyVOs = bill.getChildrenVO(); | ||||
| 
 | ||||
|                 for(CircularlyAccessibleValueObject obj : bodyVOs) { | ||||
|                     BaseItemVO bodyVO = (BaseItemVO)obj; | ||||
|                     if (result.contains(bodyVO.getPk_recpaytype())) { | ||||
|                         bodyVO.setOccupationmny(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setMoney_bal(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setLocal_money_bal(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setGroupbalance(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setGlobalbalance(UFDouble.ZERO_DBL); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public static void resetMoneyBal(AggregatedValueObject[] bills, AggregatedValueObject[] orginBills) { | ||||
|         String pk_billtype = (String)bills[0].getParentVO().getAttributeValue("pk_billtype"); | ||||
|         Map<String, BaseItemVO> orgingitemMap = new HashMap(); | ||||
|         BaseItemVO[] items = (BaseItemVO[])orginBills[0].getChildrenVO(); | ||||
| 
 | ||||
|         for(BaseItemVO item : items) { | ||||
|             orgingitemMap.put(item.getPrimaryKey(), item); | ||||
|         } | ||||
| 
 | ||||
|         if ("F2".equals(pk_billtype) || "F3".equals(pk_billtype)) { | ||||
|             List<String> result = null; | ||||
| 
 | ||||
|             try { | ||||
|                 result = (List)(new BaseDAO()).executeQuery("select pk_recpaytype from fi_recpaytype where dr=0 and isverification<>'Y'", new ColumnListProcessor()); | ||||
|             } catch (DAOException e) { | ||||
|                 ExceptionHandler.consume(e); | ||||
|             } | ||||
| 
 | ||||
|             for(AggregatedValueObject bill : bills) { | ||||
|                 CircularlyAccessibleValueObject[] bodyVOs = bill.getChildrenVO(); | ||||
| 
 | ||||
|                 for(CircularlyAccessibleValueObject obj : bodyVOs) { | ||||
|                     BaseItemVO bodyVO = (BaseItemVO)obj; | ||||
|                     if (result.contains(bodyVO.getPk_recpaytype())) { | ||||
|                         bodyVO.setOccupationmny(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setMoney_bal(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setLocal_money_bal(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setGroupbalance(UFDouble.ZERO_DBL); | ||||
|                         bodyVO.setGlobalbalance(UFDouble.ZERO_DBL); | ||||
|                     } else if (orgingitemMap.get(bodyVO.getPrimaryKey()) != null && result.contains(((BaseItemVO)orgingitemMap.get(bodyVO.getPrimaryKey())).getPk_recpaytype()) && !result.contains(bodyVO.getPk_recpaytype())) { | ||||
|                         if ("F2".equals(pk_billtype)) { | ||||
|                             bodyVO.setOccupationmny(bodyVO.getMoney_cr()); | ||||
|                             bodyVO.setMoney_bal(bodyVO.getMoney_cr()); | ||||
|                             bodyVO.setLocal_money_bal(bodyVO.getMoney_cr()); | ||||
|                             bodyVO.setGroupbalance(bodyVO.getMoney_cr()); | ||||
|                             bodyVO.setGlobalbalance(bodyVO.getMoney_cr()); | ||||
|                         } else if ("F3".equals(pk_billtype)) { | ||||
|                             bodyVO.setOccupationmny(bodyVO.getMoney_de()); | ||||
|                             bodyVO.setMoney_bal(bodyVO.getMoney_de()); | ||||
|                             bodyVO.setLocal_money_bal(bodyVO.getMoney_de()); | ||||
|                             bodyVO.setGroupbalance(bodyVO.getMoney_de()); | ||||
|                             bodyVO.setGlobalbalance(bodyVO.getMoney_de()); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public static void checkBill(BaseAggVO[] aggvos, String actionType) throws BusinessException { | ||||
|         if (aggvos != null && aggvos.length != 0) { | ||||
|             for(BaseAggVO aggvo : aggvos) { | ||||
|                 if (aggvo != null) { | ||||
|                     BaseBillVO bill = (BaseBillVO)aggvo.getParentVO(); | ||||
|                     String pk_tradetype = (String)bill.getAttributeValue("pk_tradetype"); | ||||
|                     String pk_billtype = (String)bill.getAttributeValue("pk_billtype"); | ||||
|                     if (bill.getBillclass().equals(ArapConstant.ARAP_ZF_BILLCLASS) && !StringUtil.isEmpty(pk_tradetype)) { | ||||
|                         DjLXVO[] vos = ArapBillPubUtil.queryTradetypeBycodes(pk_billtype, pk_tradetype); | ||||
|                         if ("add".equals(actionType) && (vos == null || vos.length == 0)) { | ||||
|                             throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-1555", (String)null, new String[]{pk_tradetype})); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -148,7 +148,9 @@ public class GatheringAddAfterListenerAction { | |||
|             } | ||||
| 
 | ||||
|             if (MathTool.isDiffSign(ntotalorigmny, data.getPayBillmny())) { | ||||
|                 throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0412")); | ||||
|                 if(!data.getFirstBillType().equals("30") ) {; | ||||
|                     throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0412")); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -175,7 +175,9 @@ public class GatheringUpdateBeforeListener implements IBusinessListener { | |||
|             } | ||||
| 
 | ||||
|             if (!((UFDouble)balancePaybillMap.get(data.getPayBillRowID())).equals(data.getPayBillmny())) { | ||||
|                 throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0612", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); | ||||
|                 if(!(data.getFirstBillType().equals("30")&&head.getMetaData().getEntityName().equals("so.so_balance")) ) { | ||||
|                     throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0612", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue