收票登记导入去掉相关校验
This commit is contained in:
parent
56756e5aae
commit
c92a651666
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,344 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nccloud.impl.fbm.gather.excel;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import nc.bs.framework.common.InvocationInfoProxy;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
import nc.bs.sec.esapi.NCESAPI;
|
||||
import nc.itf.bd.bankdoc.IBankdocQueryService;
|
||||
import nc.md.persist.framework.IMDPersistenceQueryService;
|
||||
import nc.pubitf.bd.accessor.GeneralAccessorFactory;
|
||||
import nc.pubitf.bd.accessor.IGeneralAccessor;
|
||||
import nc.vo.bd.accessor.IBDData;
|
||||
import nc.vo.bd.accessor.bankaccsub.BankaccSubAccessorFactory;
|
||||
import nc.vo.bd.accessor.bankaccsub.BankaccSubGeneralAccessor;
|
||||
import nc.vo.bd.bankaccount.BankAccbasVO;
|
||||
import nc.vo.bd.bankdoc.BankdocVO;
|
||||
import nc.vo.bd.cust.CustSupplierVersionVO;
|
||||
import nc.vo.fbm.pub.action.ActionVO;
|
||||
import nc.vo.fbm.pub.util.FbmCommonTools;
|
||||
import nc.vo.fbm.pub.util.FbmPublicUtil;
|
||||
import nc.vo.fbm.register.AggRegisterVO;
|
||||
import nc.vo.fbm.register.RegisterVO;
|
||||
import nc.vo.ml.NCLangRes4VoTransl;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pub.CircularlyAccessibleValueObject;
|
||||
import nc.vo.pub.lang.UFBoolean;
|
||||
import nc.vo.pub.lang.UFDate;
|
||||
import nc.vo.pub.lang.UFDateTime;
|
||||
import nc.vo.pub.lang.UFDouble;
|
||||
import nc.vo.tmpub.util.StringUtil;
|
||||
import nc.vo.tmpub.util.TMCustSupUtil;
|
||||
import nc.vo.tmpub.validator.ExcelImportUtil;
|
||||
import nc.vo.trade.pub.HYBillVO;
|
||||
import nc.vo.uap.pf.PFBatchExceptionInfo;
|
||||
import nc.vo.uap.pf.PfProcessBatchRetObject;
|
||||
import nccloud.bs.excel.IXChangeContext;
|
||||
import nccloud.bs.excel.plugin.AbstractImportProceeWithContext;
|
||||
import nccloud.pubitf.riart.pflow.CloudPFlowContext;
|
||||
import nccloud.pubitf.riart.pflow.ICloudScriptPFlowService;
|
||||
|
||||
public class GatherExcelImport4NCCImpl extends AbstractImportProceeWithContext {
|
||||
public GatherExcelImport4NCCImpl() {
|
||||
}
|
||||
|
||||
protected void processBillWithContext(Object vo, IXChangeContext changcontext) throws BusinessException {
|
||||
CircularlyAccessibleValueObject regvo = ((HYBillVO) vo).getParentVO();
|
||||
AggRegisterVO aggvo = new AggRegisterVO();
|
||||
aggvo.setParentVO(regvo);
|
||||
this.check(aggvo);
|
||||
Object[] results = this.doSave(aggvo);
|
||||
Object[] var6 = results;
|
||||
int var7 = results.length;
|
||||
|
||||
for (int var8 = 0; var8 < var7; ++var8) {
|
||||
Object obj = var6[var8];
|
||||
if (obj instanceof PfProcessBatchRetObject batchObj) {
|
||||
PFBatchExceptionInfo exceptionInfo = batchObj.getExceptionInfo();
|
||||
throw new BusinessException(exceptionInfo.getErrorMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Object[] doSave(AggRegisterVO aggVO) throws BusinessException {
|
||||
this.doBeforeSave(aggVO);
|
||||
CloudPFlowContext context = new CloudPFlowContext();
|
||||
context.setActionName("SAVEBASE");
|
||||
context.setBillType("36H1");
|
||||
context.setBillVos(new AggRegisterVO[] { aggVO });
|
||||
Object[] objects = ((ICloudScriptPFlowService) NCLocator.getInstance().lookup(ICloudScriptPFlowService.class))
|
||||
.exeScriptPFlow(context);
|
||||
return objects;
|
||||
}
|
||||
|
||||
private void doBeforeSave(AggRegisterVO aggvo) throws BusinessException {
|
||||
RegisterVO pvo = aggvo.getparentVO();
|
||||
UFDateTime businessTime = new UFDateTime(InvocationInfoProxy.getInstance().getBizDateTime());
|
||||
pvo.setPk_group(InvocationInfoProxy.getInstance().getGroupId());
|
||||
pvo.setBillmaker(InvocationInfoProxy.getInstance().getUserId());
|
||||
pvo.setCreationtime(businessTime);
|
||||
pvo.setDoperatedate(new UFDate(InvocationInfoProxy.getInstance().getBizDateTime()));
|
||||
pvo.setCreationtime(businessTime);
|
||||
pvo.setCreator(InvocationInfoProxy.getInstance().getUserId());
|
||||
pvo.setPk_billtypecode("36H1");
|
||||
pvo.setGathertype("input");
|
||||
UFBoolean initflag = pvo.getInitflag();
|
||||
if (StringUtil.isNull(initflag)) {
|
||||
pvo.setInitflag(UFBoolean.FALSE);
|
||||
}
|
||||
|
||||
pvo.setSfflag(UFBoolean.FALSE);
|
||||
pvo.setRegisterstatus("on_gather");
|
||||
pvo.setVbillstatus(-1);
|
||||
pvo.setRelatedrecbill(UFBoolean.FALSE);
|
||||
UFBoolean disableflag = pvo.getDisableflag();
|
||||
if (disableflag == null || !disableflag.booleanValue()) {
|
||||
pvo.setDisableflag(UFBoolean.FALSE);
|
||||
}
|
||||
|
||||
pvo.setBookflag(UFBoolean.FALSE);
|
||||
pvo.setPlanflag(UFBoolean.FALSE);
|
||||
String pk_org = pvo.getPk_org();
|
||||
if (StringUtil.isNotNull(pvo.getReceiveaccount())) {
|
||||
BankAccbasVO accbasVO = this.getBankAccbasVOByReceiveaccount(pvo);
|
||||
String var10002;
|
||||
if (accbasVO.getEnablestate() != 2) {
|
||||
var10002 = pvo.getFbmbillno();
|
||||
throw new BusinessException(
|
||||
var10002 + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0078"));
|
||||
}
|
||||
//zhangxinah 去掉银行账户是否电票签约账户的校验
|
||||
// if (!accbasVO.getIsenableelecbill().booleanValue()) {
|
||||
// var10002 = pvo.getFbmbillno();
|
||||
// throw new BusinessException(
|
||||
// var10002 + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0079"));
|
||||
// }
|
||||
|
||||
BankdocVO bankdoc = this.getBanktypeByReceiveaccount(pvo.getReceiveaccount());
|
||||
pvo.setPk_banktype(bankdoc.getPk_banktype());
|
||||
pvo.setReceiveaccountname(bankdoc.getName());
|
||||
}
|
||||
|
||||
IGeneralAccessor bankdocAccessor = GeneralAccessorFactory.getAccessor("bf5aeed4-6b35-4a2e-b750-b9aabce59e21");
|
||||
BankaccSubGeneralAccessor bankaccsubAccessor = (BankaccSubGeneralAccessor) (new BankaccSubAccessorFactory())
|
||||
.getAccessor("9e10ef4a-0be9-482b-880f-871e5b0504b7");
|
||||
IGeneralAccessor assLineNumAccessor = GeneralAccessorFactory
|
||||
.getAccessor("7b6c7dc0-db78-4bef-9cca-f5af4008f893");
|
||||
TMCustSupUtil.setCustSupPk(aggvo, "paybillunit_v", "paybillunit", "hidepaybillunit");
|
||||
CustSupplierVersionVO custSupVO;
|
||||
if (StringUtil.isNotNull(pvo.getPayunit())) {
|
||||
custSupVO = TMCustSupUtil.getCustSupplierVersionVOByNameAndDate(pvo.getPayunit(), pvo.getGatherdate());
|
||||
if (custSupVO != null) {
|
||||
pvo.setHidepayunit(custSupVO.getPk_cust_sup());
|
||||
pvo.setHidepayunit_v(custSupVO.getPk_cust_sup_v());
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtil.isNotNull(pvo.getReceiveunit())) {
|
||||
custSupVO = TMCustSupUtil.getCustSupplierVersionVOByNameAndDate(pvo.getReceiveunit(), pvo.getGatherdate());
|
||||
if (custSupVO != null) {
|
||||
pvo.setHidereceiveunit(custSupVO.getPk_cust_sup());
|
||||
pvo.setHidereceiveunit_v(custSupVO.getPk_cust_sup_v());
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtil.isNotNull(pvo.getReceivebankacc())) {
|
||||
IBDData cussup = bankaccsubAccessor.getDocByAccnum(pvo.getReceivebankacc(), pvo.getPk_curr());
|
||||
if (cussup != null) {
|
||||
pvo.setHidereceivebankacc(cussup.getPk());
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtil.isNotNull(pvo.getReceivebank())) {
|
||||
IBDData cussup = bankdocAccessor.getDocByNameWithMainLang(pk_org, pvo.getReceivebank());
|
||||
if (cussup != null) {
|
||||
pvo.setHidereceivebank(cussup.getPk());
|
||||
}
|
||||
}
|
||||
|
||||
boolean busType = FbmPublicUtil.isBusType(pvo.getFbmbilltype());
|
||||
IBDData cussup = null;
|
||||
if (busType) {
|
||||
if (StringUtil.isNotNull(pvo.getAcceptorname())) {
|
||||
custSupVO = TMCustSupUtil.getCustSupplierVersionVOByNameAndDate(pvo.getAcceptorname(),
|
||||
pvo.getGatherdate());
|
||||
if (custSupVO != null) {
|
||||
pvo.setPk_signagrbank(custSupVO.getPk_cust_sup());
|
||||
pvo.setPk_signagrbank_v(custSupVO.getPk_cust_sup_v());
|
||||
}
|
||||
}
|
||||
} else if (StringUtil.isNotNull(pvo.getAcceptorname())) {
|
||||
cussup = bankdocAccessor.getDocByNameWithMainLang(pk_org, pvo.getAcceptorname());
|
||||
if (cussup != null) {
|
||||
pvo.setSignagrbank(cussup.getPk());
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtil.isNotNull(pvo.getSignagrbanknum())) {
|
||||
cussup = assLineNumAccessor.getDocByCode(pk_org, pvo.getSignagrbanknum());
|
||||
if (cussup != null) {
|
||||
pvo.setAcceptorbankaccount(cussup.getPk());
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtil.isNotNull(pvo.getSignagrbankname())) {
|
||||
cussup = bankdocAccessor.getDocByNameWithMainLang(pk_org, pvo.getSignagrbankname());
|
||||
if (cussup != null) {
|
||||
pvo.setAcceptorbank(cussup.getPk());
|
||||
}
|
||||
}
|
||||
|
||||
UFBoolean subcontractCirculation = pvo.getSubcontractcirculation();
|
||||
boolean ifBelongNewbillSys = FbmCommonTools.ifBelongNewBillSystem(pvo.getFbmbillno());
|
||||
if (ifBelongNewbillSys && subcontractCirculation != null && subcontractCirculation.booleanValue()) {
|
||||
String var10001 = pvo.getBillrangestart();
|
||||
pvo.setBillrange(var10001 + "-" + pvo.getBillrangeend());
|
||||
} else if (ifBelongNewbillSys) {
|
||||
if (!"0".equals(pvo.getBillrangestart()) || !"0".equals(pvo.getBillrangeend())) {
|
||||
throw new BusinessException("票据[" + pvo.getFbmbillno() + "]为新一代票且不可分包流转,子票区间开始和结束应为0!");
|
||||
}
|
||||
|
||||
pvo.setBillrange(String.valueOf("0"));
|
||||
} else {
|
||||
pvo.setBillrange((String) null);
|
||||
}
|
||||
|
||||
pvo.setBillsystype(FbmCommonTools.getBillSysTypeByFbmBillNo(pvo.getFbmbillno()));
|
||||
UFDouble availablemoney = pvo.getAvailablemoney();
|
||||
if (availablemoney == null) {
|
||||
pvo.setAvailablemoney(pvo.getMoney());
|
||||
}
|
||||
|
||||
HashMap<String, String> voFieldsMap = new HashMap();
|
||||
voFieldsMap.put("groupField", "pk_group");
|
||||
voFieldsMap.put("orgField", "pk_org");
|
||||
voFieldsMap.put("currField", "pk_curr");
|
||||
voFieldsMap.put("rateField", "olcrate");
|
||||
voFieldsMap.put("custsupField", "paybillunit");
|
||||
voFieldsMap.put("dateField", "gatherdate");
|
||||
FbmPublicUtil.setOlcRate4Import(aggvo, voFieldsMap);
|
||||
voFieldsMap.put("rateField", "glcrate");
|
||||
FbmPublicUtil.setGlcRate4Import(aggvo, voFieldsMap);
|
||||
voFieldsMap.put("rateField", "gllcrate");
|
||||
FbmPublicUtil.setGllcRate4Import(aggvo, voFieldsMap);
|
||||
GatherReCaculateMnyUtil.recaculate(false, new AggRegisterVO[] { aggvo });
|
||||
ExcelImportUtil.validateOlcratetype(pvo.getOlcratetype(), pvo.getOlcratecategory());
|
||||
}
|
||||
|
||||
private void check(AggRegisterVO aggvo) throws BusinessException {
|
||||
RegisterVO registerVO = aggvo.getparentVO();
|
||||
String fbmbillno = registerVO.getFbmbillno();
|
||||
UFBoolean cyberbankflag = registerVO.getCyberbankflag();
|
||||
if (cyberbankflag != null && !cyberbankflag.booleanValue()) {
|
||||
String pk_bankdoc = registerVO.getPk_bankdoc();
|
||||
if (!StringUtil.isNull(pk_bankdoc)) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0042"));
|
||||
}
|
||||
}
|
||||
|
||||
UFDate gatherdate = registerVO.getGatherdate();
|
||||
UFDate invoicedate = registerVO.getInvoicedate();
|
||||
if (gatherdate != null && invoicedate != null
|
||||
&& gatherdate.toStdString().compareTo(invoicedate.toStdString()) < 0) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0043"));
|
||||
} else {
|
||||
UFDouble money = registerVO.getMoney();
|
||||
if (money != null && money.doubleValue() < 0.0) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0080"));
|
||||
} else {
|
||||
UFDate enddate = registerVO.getEnddate();
|
||||
if (enddate != null && invoicedate != null
|
||||
&& enddate.toStdString().compareTo(invoicedate.toStdString()) < 0) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0046"));
|
||||
} else {
|
||||
String fbmbilltype = registerVO.getFbmbilltype();
|
||||
String receiveaccount = registerVO.getReceiveaccount();
|
||||
boolean isEbill = FbmCommonTools.isEBill(fbmbilltype);
|
||||
if (isEbill) {
|
||||
if (StringUtil.isNull(receiveaccount)) {
|
||||
throw new BusinessException(fbmbillno
|
||||
+ NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0051"));
|
||||
}
|
||||
} else {
|
||||
UFBoolean onlinebankflag = registerVO.getOnlinebankflag();
|
||||
if (onlinebankflag != null && onlinebankflag.booleanValue()) {
|
||||
throw new BusinessException(fbmbillno
|
||||
+ NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0072"));
|
||||
}
|
||||
}
|
||||
|
||||
FbmCommonTools.validBillRange(registerVO, isEbill);
|
||||
FbmCommonTools.billNoValication(fbmbillno);
|
||||
this.checkIsReturnedBill(registerVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkIsReturnedBill(RegisterVO registerVO) throws BusinessException {
|
||||
StringBuffer whereSql = new StringBuffer();
|
||||
whereSql.append(" pk_org = '").append(registerVO.getPk_org()).append("' ");
|
||||
whereSql.append(" and fbmbillno = '").append(registerVO.getFbmbillno()).append("' ");
|
||||
if (StringUtil.isNull(registerVO.getBillrangestart())) {
|
||||
whereSql.append(" and isnull(billrangestart, '0') = '0' ");
|
||||
} else {
|
||||
whereSql.append(" and billrangestart <= '").append(registerVO.getBillrangestart()).append("' ");
|
||||
}
|
||||
|
||||
if (StringUtil.isNull(registerVO.getBillrangeend())) {
|
||||
whereSql.append(" and isnull(billrangeend, '0') = '0' ");
|
||||
} else {
|
||||
whereSql.append(" and billrangeend >= '").append(registerVO.getBillrangeend()).append("' ");
|
||||
}
|
||||
|
||||
whereSql.append(" and ( endstatus = 'register' or endstatus = 'has_paybill' ) ");
|
||||
Collection<ActionVO> actionVOs = ((IMDPersistenceQueryService) NCLocator.getInstance()
|
||||
.lookup(IMDPersistenceQueryService.class))
|
||||
.queryBillOfVOByCond(ActionVO.class, whereSql.toString(), false);
|
||||
boolean returnedBill = false;
|
||||
if (null != actionVOs && actionVOs.size() > 0) {
|
||||
returnedBill = true;
|
||||
}
|
||||
registerVO.setReturnedbill(UFBoolean.valueOf(returnedBill));
|
||||
}
|
||||
|
||||
private BankAccbasVO getBankAccbasVOByReceiveaccount(RegisterVO pvo) throws BusinessException {
|
||||
StringBuffer whereSql = new StringBuffer();
|
||||
whereSql.append(" pk_bankaccbas = (select pk_bankaccbas from bd_bankaccsub where pk_bankaccsub = '");
|
||||
whereSql.append(NCESAPI.sqlEncode(pvo.getReceiveaccount()));
|
||||
whereSql.append("' ) ");
|
||||
IMDPersistenceQueryService service = (IMDPersistenceQueryService) NCLocator.getInstance()
|
||||
.lookup(IMDPersistenceQueryService.class);
|
||||
Collection<BankAccbasVO> accbasVOs = service.queryBillOfVOByCond(BankAccbasVO.class, whereSql.toString(),
|
||||
false);
|
||||
if (accbasVOs != null && accbasVOs.size() > 0
|
||||
&& ((BankAccbasVO[]) accbasVOs.toArray(new BankAccbasVO[0]))[0] != null) {
|
||||
return ((BankAccbasVO[]) accbasVOs.toArray(new BankAccbasVO[0]))[0];
|
||||
} else {
|
||||
String var10002 = pvo.getFbmbillno();
|
||||
throw new BusinessException(
|
||||
var10002 + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618ncc_0", "03618ncc-0077"));
|
||||
}
|
||||
}
|
||||
|
||||
private BankdocVO getBanktypeByReceiveaccount(String receiveaccount) throws BusinessException {
|
||||
StringBuffer whereSql = new StringBuffer();
|
||||
whereSql.append(" pk_bankdoc = (select pk_bankdoc from bd_bankaccbas where pk_bankaccbas = ");
|
||||
whereSql.append("(select pk_bankaccbas from bd_bankaccsub where pk_bankaccsub = '");
|
||||
whereSql.append(NCESAPI.sqlEncode(receiveaccount));
|
||||
whereSql.append("') ) ");
|
||||
BankdocVO[] bankdocVO = ((IBankdocQueryService) NCLocator.getInstance().lookup(IBankdocQueryService.class))
|
||||
.queryBankdocVOsByCon(whereSql.toString());
|
||||
return bankdocVO != null && bankdocVO.length != 0 ? bankdocVO[0] : null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,679 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.vo.fbm.pub.util;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Pattern;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
import nc.itf.fbm.gather.IGatherQueryService;
|
||||
import nc.md.model.MetaDataException;
|
||||
import nc.md.persist.framework.IMDPersistenceQueryService;
|
||||
import nc.pub.templet.converter.util.helper.ExceptionUtils;
|
||||
import nc.pubitf.uapbd.IRateTypePubService;
|
||||
import nc.vo.bd.notetype.NotetypeVO;
|
||||
import nc.vo.bd.ratetype.RateTypeVO;
|
||||
import nc.vo.fbm.register.AggRegisterVO;
|
||||
import nc.vo.fbm.register.RegisterVO;
|
||||
import nc.vo.fbm.util.BillRangeTools;
|
||||
import nc.vo.ml.NCLangRes4VoTransl;
|
||||
import nc.vo.pub.AggregatedValueObject;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pub.CircularlyAccessibleValueObject;
|
||||
import nc.vo.pub.ISuperVO;
|
||||
import nc.vo.pub.SuperVO;
|
||||
import nc.vo.pub.lang.UFBoolean;
|
||||
import nc.vo.pub.lang.UFDouble;
|
||||
import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill;
|
||||
import nc.vo.tmpub.util.StringUtil;
|
||||
import nc.vo.tmpub.util.TMCurrencyUtil;
|
||||
import nccloud.itf.fbm.gather.GatherConstant;
|
||||
import nccloud.itf.fbm.pub.IFBMCommonService4NCC;
|
||||
import nccloud.pubitf.tmpub.pub.ITMPrecisionServiceForNCC;
|
||||
import nccloud.vo.tmpub.precison.PrecisionField;
|
||||
import org.apache.commons.codec.binary.StringUtils;
|
||||
|
||||
public class FbmCommonTools {
|
||||
private static final IFBMCommonService4NCC commonService = (IFBMCommonService4NCC) NCLocator.getInstance()
|
||||
.lookup(IFBMCommonService4NCC.class);
|
||||
|
||||
public FbmCommonTools() {
|
||||
}
|
||||
|
||||
public static boolean isEBill(String pk_fbmBilltype) {
|
||||
return commonService.isEBill(pk_fbmBilltype);
|
||||
}
|
||||
|
||||
public static boolean isEBillByPk_register(String pk_register) {
|
||||
try {
|
||||
return commonService.isEcdNoteClass(pk_register);
|
||||
} catch (BusinessException var2) {
|
||||
BusinessException e = var2;
|
||||
ExceptionUtils.wrapException(e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isBankType(String pk_fbmBilltype) {
|
||||
return commonService.isBankType(pk_fbmBilltype);
|
||||
}
|
||||
|
||||
public static boolean isBusType(String pk_fbmBilltype) {
|
||||
return commonService.isBusType(pk_fbmBilltype);
|
||||
}
|
||||
|
||||
public static String getfbmbilltypeByNo(String fbmbillno) throws BusinessException {
|
||||
String flag = null;
|
||||
String type = null;
|
||||
boolean isEbill = true;
|
||||
if (fbmbillno.length() == 16) {
|
||||
flag = String.valueOf(fbmbillno.charAt(6));
|
||||
isEbill = false;
|
||||
} else if (fbmbillno.length() == 30) {
|
||||
flag = String.valueOf(fbmbillno.charAt(0));
|
||||
}
|
||||
|
||||
Objects.requireNonNull(flag);
|
||||
if (isEbill) {
|
||||
switch (flag) {
|
||||
case "5" -> type = "FBMTZ6E0000000000003";
|
||||
case "6" -> type = "FBMTZ6E0000000000004";
|
||||
case "1" -> type = "FBMTZ6E0000000000003";
|
||||
case "2" -> type = "FBMTZ6E0000000000004";
|
||||
}
|
||||
} else {
|
||||
switch (flag) {
|
||||
case "5" -> type = "FBMTZ6E0000000000001";
|
||||
case "6" -> type = "FBMTZ6E0000000000002";
|
||||
}
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
public static void setSubcontractcirculation(RegisterVO registerVO, String fbmbilltype) throws MetaDataException {
|
||||
if (!StringUtil.isNull(fbmbilltype)) {
|
||||
String condtion = "PK_NOTETYPE = '" + fbmbilltype + "'";
|
||||
Collection<NotetypeVO> collection = ((IMDPersistenceQueryService) NCLocator.getInstance()
|
||||
.lookup(IMDPersistenceQueryService.class)).queryBillOfVOByCond(NotetypeVO.class, condtion, false);
|
||||
if (collection != null && collection.size() > 0) {
|
||||
NotetypeVO notetypeVO = (NotetypeVO) collection.iterator().next();
|
||||
if (notetypeVO.getNoteclass() == 9) {
|
||||
registerVO.setSubcontractcirculation(UFBoolean.TRUE);
|
||||
registerVO.setBillrangestart("000000000000");
|
||||
registerVO.setBillrangeend("000000000000");
|
||||
} else if (notetypeVO.getNoteclass() == 2) {
|
||||
registerVO.setSubcontractcirculation(UFBoolean.FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static String getPKBilltypeByCode(String billtypeCode) throws Exception {
|
||||
return commonService.getPKBilltypeByCode(billtypeCode);
|
||||
}
|
||||
|
||||
public static String getCodeByPKBilltype(String pk_billtype) throws BusinessException {
|
||||
return commonService.getCodeByPKBilltype(pk_billtype);
|
||||
}
|
||||
|
||||
public static void billNoValication(String fbmbillno) throws BusinessException {
|
||||
if (fbmbillno != null && fbmbillno.length() != 0) {
|
||||
Pattern blankCheck = Pattern.compile("\\s*|\t|\r|\n");
|
||||
if (blankCheck.matcher(fbmbillno) == null) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--186"));
|
||||
} else {
|
||||
|
||||
// zhangxinah 去掉收票登记导入时票据长度校验
|
||||
// checkFbmbillnoLength(fbmbillno);
|
||||
if (fbmbillno.length() > 16) {
|
||||
eBillNoCheck(fbmbillno);
|
||||
} else {
|
||||
paperBillCheck(fbmbillno);
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--187"));
|
||||
}
|
||||
}
|
||||
|
||||
public static void checkFbmbillnoLength(String fbmbillno) throws BusinessException {
|
||||
if (fbmbillno.length() != 30 && fbmbillno.length() != 16) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--185"));
|
||||
}
|
||||
}
|
||||
|
||||
public static void checkFbmbillnoByIsEbill(String fbmbillno, boolean isEbill) throws BusinessException {
|
||||
if (isEbill) {
|
||||
if (fbmbillno != null && fbmbillno.length() != 30) {
|
||||
throw new BusinessException(
|
||||
NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--185"));
|
||||
}
|
||||
} else if (fbmbillno != null && fbmbillno.length() != 16) {
|
||||
throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--185"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void paperBillCheck(String fbmbillno) throws BusinessException {
|
||||
Pattern pattern = Pattern.compile("\\d{16}");
|
||||
Boolean ismatch = pattern.matcher(fbmbillno).matches();
|
||||
if (!ismatch) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--184"));
|
||||
} else {
|
||||
String bankCode = fbmbillno.substring(0, 3);
|
||||
String provinceCode = fbmbillno.substring(4, 6);
|
||||
String billtypeCode = fbmbillno.substring(6, 7);
|
||||
String printCode = fbmbillno.substring(7, 8);
|
||||
if (!"00".equals(provinceCode)) {
|
||||
throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--183",
|
||||
(String) null, new String[] { String.valueOf(fbmbillno) }));
|
||||
} else if (!"5".equals(billtypeCode) && !"6".equals(billtypeCode)) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--182"));
|
||||
} else if ("6".equals(billtypeCode) && !"001".equals(bankCode)) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--181"));
|
||||
} else if ("7".equals(printCode) || "8".equals(printCode) || "9".equals(printCode)) {
|
||||
throw new BusinessException(
|
||||
fbmbillno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--180"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void eBillNoCheck(String fbmno) throws BusinessException {
|
||||
Pattern pattern = Pattern.compile("\\d{30}");
|
||||
Boolean ismatch = pattern.matcher(fbmno).matches();
|
||||
// 电票不校验票据号长度
|
||||
ismatch = true;
|
||||
if (!ismatch) {
|
||||
throw new BusinessException(
|
||||
fbmno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--179"));
|
||||
} else {
|
||||
String firstNum = fbmno.substring(0, 1);
|
||||
if (!"2".equals(firstNum) && !"1".equals(firstNum) && !"5".equals(firstNum) && !"6".equals(firstNum)) {
|
||||
throw new BusinessException(
|
||||
fbmno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd--178"));
|
||||
} else {
|
||||
int year = Integer.parseInt(fbmno.substring(13, 17));
|
||||
int month = Integer.parseInt(fbmno.substring(17, 19));
|
||||
int day = Integer.parseInt(fbmno.substring(19, 21));
|
||||
if (month > 0 && month <= 12) {
|
||||
if (year % 4 == 0 && month == 2 && (day <= 0 || day > 29)) {
|
||||
throw new BusinessException(
|
||||
fbmno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd-0243"));
|
||||
} else if (year % 4 == 0 || month != 2 || day > 0 && day <= 28) {
|
||||
Integer[] bigMonthArray = new Integer[] { 1, 3, 5, 7, 8, 10, 12 };
|
||||
Integer[] smallMonthArray = new Integer[] { 4, 6, 9, 11 };
|
||||
List<Integer> bigMonth = Arrays.asList(bigMonthArray);
|
||||
List<Integer> smallMonth = Arrays.asList(smallMonthArray);
|
||||
if (!bigMonth.contains(month) || day > 0 && day <= 31) {
|
||||
if (smallMonth.contains(month) && (day <= 0 || day > 30)) {
|
||||
throw new BusinessException(fbmno
|
||||
+ NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd-0243"));
|
||||
}
|
||||
} else {
|
||||
throw new BusinessException(fbmno
|
||||
+ NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd-0243"));
|
||||
}
|
||||
} else {
|
||||
throw new BusinessException(
|
||||
fbmno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd-0243"));
|
||||
}
|
||||
} else {
|
||||
throw new BusinessException(
|
||||
fbmno + NCLangRes4VoTransl.getNCLangRes().getStrByID("3618nccd_0", "03618nccd-0243"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getBankdocPkByAccessorAndName(String pk_org, String name) throws BusinessException {
|
||||
return commonService.getBankdocPkByAccessorAndName(pk_org, name);
|
||||
}
|
||||
|
||||
public String getAssLineNumPkByAccessorAndName(String pk_org, String name) throws BusinessException {
|
||||
return commonService.getAssLineNumPkByAccessorAndName(pk_org, name);
|
||||
}
|
||||
|
||||
public String getBankaccsubPkByAccessorAndName(String name, String pk_curr) throws BusinessException {
|
||||
return commonService.getBankaccsubPkByAccessorAndName(name, pk_curr);
|
||||
}
|
||||
|
||||
public static AbstractBill resetProcessAmounts(AggregatedValueObject aggregvo, AbstractBill destAggvo,
|
||||
List<PrecisionField> headPrecisionFields,
|
||||
Map<Class<? extends ISuperVO>, List<PrecisionField>> bodyPrecisionFields, String errmsg)
|
||||
throws BusinessException {
|
||||
if (destAggvo == null) {
|
||||
return null;
|
||||
} else {
|
||||
new Object();
|
||||
new Object();
|
||||
new Object();
|
||||
new Object();
|
||||
SuperVO destHeadVO = (SuperVO) destAggvo.getParentVO();
|
||||
Object olcratecategoryObj;
|
||||
Object olcratedate;
|
||||
Object olcratetype;
|
||||
Object olcrate;
|
||||
if (aggregvo != null) {
|
||||
SuperVO srcHeadVO = (SuperVO) aggregvo.getParentVO();
|
||||
olcratecategoryObj = srcHeadVO.getAttributeValue("olcratecategory");
|
||||
olcratedate = srcHeadVO.getAttributeValue("olcratedate");
|
||||
olcratetype = srcHeadVO.getAttributeValue("olcratetype");
|
||||
olcrate = srcHeadVO.getAttributeValue("olcrate");
|
||||
} else {
|
||||
olcratecategoryObj = destHeadVO.getAttributeValue("olcratecategory");
|
||||
olcratedate = destHeadVO.getAttributeValue("olcratedate");
|
||||
olcratetype = destHeadVO.getAttributeValue("olcratetype");
|
||||
olcrate = destHeadVO.getAttributeValue("olcrate");
|
||||
}
|
||||
|
||||
String billtype = (String) destHeadVO.getAttributeValue("pk_billtypecode");
|
||||
Integer olcratecategory = null;
|
||||
if (olcratecategoryObj != null) {
|
||||
olcratecategory = (Integer) olcratecategoryObj;
|
||||
} else if (olcratecategoryObj == null && olcratetype != null) {
|
||||
IRateTypePubService service = (IRateTypePubService) NCLocator.getInstance()
|
||||
.lookup(IRateTypePubService.class);
|
||||
RateTypeVO[] rateTypeVOs = service.queryRateTypeByPKs(new String[] { (String) olcratetype });
|
||||
if (rateTypeVOs != null && rateTypeVOs.length != 0) {
|
||||
olcratecategory = rateTypeVOs[0].getRate_category();
|
||||
}
|
||||
}
|
||||
|
||||
destHeadVO.setAttributeValue("olcratetype", olcratetype);
|
||||
boolean isResetRate = true;
|
||||
if (olcratecategory != null && TMCurrencyUtil.judgeRatecategory(olcratecategory)) {
|
||||
destHeadVO.setAttributeValue("olcratedate", olcratedate);
|
||||
destHeadVO.setAttributeValue("olcratecategory", olcratecategoryObj);
|
||||
destHeadVO.setAttributeValue("olcrate", olcrate);
|
||||
if (!StringUtil.isNull(billtype) && (billtype.equals("36HA") || billtype.equals("36HK"))) {
|
||||
destHeadVO.setAttributeValue("olcbrate", olcrate);
|
||||
}
|
||||
|
||||
FbmPublicUtil.copyRateTyefieldsHead2Body(destAggvo);
|
||||
isResetRate = false;
|
||||
}
|
||||
|
||||
AbstractBill[] returnAggvos = ((ITMPrecisionServiceForNCC) NCLocator.getInstance()
|
||||
.lookup(ITMPrecisionServiceForNCC.class)).processAggVOPrecision(new AbstractBill[] { destAggvo },
|
||||
headPrecisionFields, bodyPrecisionFields, isResetRate, true);
|
||||
boolean notHasOlcrate = false;
|
||||
if (!StringUtil.isNull(billtype) && (billtype.equals("36HA") || billtype.equals("36HK"))) {
|
||||
if (StringUtil.isNull(destAggvo.getParent().getAttributeValue("olcbrate"))) {
|
||||
notHasOlcrate = true;
|
||||
}
|
||||
} else if (StringUtil.isNull(destAggvo.getParent().getAttributeValue("olcrate"))) {
|
||||
notHasOlcrate = true;
|
||||
}
|
||||
|
||||
if (notHasOlcrate) {
|
||||
throw new BusinessException(errmsg);
|
||||
} else {
|
||||
return returnAggvos[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void validRepeatBill(RegisterVO registerVO) throws BusinessException {
|
||||
String fbmBillNo = registerVO.getFbmbillno();
|
||||
if (registerVO.getSubcontractcirculation() != null
|
||||
&& !registerVO.getSubcontractcirculation().equals(UFBoolean.FALSE)
|
||||
&& registerVO.getPk_register() == null) {
|
||||
Integer billrangestart = BillRangeTools.handleBillRange(registerVO.getBillrangestart());
|
||||
Integer billrangeend = BillRangeTools.handleBillRange(registerVO.getBillrangeend());
|
||||
String condition = "FBMBILLNO = '" + fbmBillNo + "'";
|
||||
Collection<AggRegisterVO> collections = ((IMDPersistenceQueryService) NCLocator.getInstance()
|
||||
.lookup(IMDPersistenceQueryService.class))
|
||||
.queryBillOfVOByCond(AggRegisterVO.class, condition, false);
|
||||
if (collections != null && collections.size() > 0) {
|
||||
Iterator var6 = collections.iterator();
|
||||
|
||||
while (var6.hasNext()) {
|
||||
AggRegisterVO aggAllocateAgreeVO = (AggRegisterVO) var6.next();
|
||||
RegisterVO register = aggAllocateAgreeVO.getparentVO();
|
||||
if (billrangestart != null && billrangeend != null && register.getBillrangeend() != null
|
||||
&& register.getBillrangestart() != null
|
||||
&& (BillRangeTools.handleBillRange(register.getBillrangeend()) <= billrangeend
|
||||
&& BillRangeTools.handleBillRange(register.getBillrangeend()) >= billrangestart
|
||||
|| BillRangeTools.handleBillRange(register.getBillrangestart()) >= billrangestart
|
||||
&& BillRangeTools
|
||||
.handleBillRange(register.getBillrangestart()) <= billrangeend)) {
|
||||
throw new BusinessException(
|
||||
"票据号码" + fbmBillNo + "子票区间" + billrangestart + "-" + billrangeend + "已存在");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static void validateAmount(RegisterVO registerVO) throws BusinessException {
|
||||
if (registerVO.getSubcontractcirculation() != null
|
||||
&& !registerVO.getSubcontractcirculation().equals(UFBoolean.FALSE)) {
|
||||
Integer billrangestart = BillRangeTools.handleBillRange(registerVO.getBillrangestart());
|
||||
Integer billrangeend = BillRangeTools.handleBillRange(registerVO.getBillrangeend());
|
||||
UFDouble money = registerVO.getMoney();
|
||||
if (billrangestart != null && billrangeend != null) {
|
||||
Integer total = billrangeend - billrangestart + 1;
|
||||
UFDouble count = (new UFDouble("0.01")).multiply((double) total);
|
||||
if (count.compareTo(money) != 0) {
|
||||
throw new BusinessException("票据号码" + registerVO.getFbmbillno() + "子票区间" + billrangestart + "-"
|
||||
+ billrangeend + "的金额" + count.toString() + "与票据金额不相等,请修改");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static void setBillRange(RegisterVO registerVO) {
|
||||
Boolean isSplitAllowed = registerVO.getSubcontractcirculation() != null
|
||||
&& registerVO.getSubcontractcirculation().booleanValue();
|
||||
if (isSplitAllowed) {
|
||||
String var10001 = registerVO.getBillrangestart();
|
||||
registerVO.setBillrange(var10001 + "-" + registerVO.getBillrangeend());
|
||||
} else if (ifBelongNewBillSystem(registerVO.getFbmbillno())) {
|
||||
registerVO.setBillrange("0");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static ITMPrecisionServiceForNCC getPrecisionService() {
|
||||
return (ITMPrecisionServiceForNCC) NCLocator.getInstance().lookup(ITMPrecisionServiceForNCC.class);
|
||||
}
|
||||
|
||||
private static RegisterVO calcMoneyPrecision(RegisterVO registerVO, UFDouble money) throws BusinessException {
|
||||
RegisterVO newRegisterVO = new RegisterVO();
|
||||
newRegisterVO.setOlcmoney(registerVO.getOlcmoney());
|
||||
newRegisterVO.setOlcrate(registerVO.getOlcrate());
|
||||
newRegisterVO.setGlcmoney(registerVO.getGlcmoney());
|
||||
newRegisterVO.setGlcrate(registerVO.getGlcrate());
|
||||
newRegisterVO.setGllcmoney(registerVO.getGllcmoney());
|
||||
newRegisterVO.setGllcrate(registerVO.getGllcrate());
|
||||
newRegisterVO.setGatherdate(registerVO.getGatherdate());
|
||||
newRegisterVO.setPk_curr(registerVO.getPk_curr());
|
||||
newRegisterVO.setPaybillunit(registerVO.getPaybillunit());
|
||||
newRegisterVO.setMoney(money);
|
||||
getPrecisionService().processHeadPrecision(newRegisterVO,
|
||||
GatherConstant.getHeadPrecisionFieldsWithFieldRateType(), true);
|
||||
return newRegisterVO;
|
||||
}
|
||||
|
||||
public static void validBillRange(RegisterVO registerVO, boolean isEbill) throws BusinessException {
|
||||
UFBoolean subcontractCirculation = registerVO.getSubcontractcirculation();
|
||||
if (subcontractCirculation != null && subcontractCirculation.booleanValue()) {
|
||||
label101: {
|
||||
String billRangeStart = registerVO.getBillrangestart();
|
||||
String billRangeEnd = registerVO.getBillrangeend();
|
||||
String firstNum = registerVO.getFbmbillno().substring(0, 1);
|
||||
if (isEbill && !"5".equals(firstNum) && !"6".equals(firstNum)) {
|
||||
throw new BusinessException("票据" + registerVO.getFbmbillno() + "非新一代票据,不可进行分包流转!");
|
||||
}
|
||||
|
||||
if (StringUtil.isNull(billRangeStart) || StringUtil.isNull(billRangeEnd)) {
|
||||
throw new BusinessException("票据可分包流转状态下,票据子票区间开始和截止值不能为空!");
|
||||
}
|
||||
|
||||
if (Long.valueOf(billRangeStart) > 0L && Long.valueOf(billRangeEnd) > 0L) {
|
||||
if (billRangeStart.length() >= 12 && billRangeEnd.length() >= 12) {
|
||||
if (Long.parseLong(billRangeEnd) < Long.parseLong(billRangeStart)) {
|
||||
throw new BusinessException("子票区间截止值不能小于开始值!");
|
||||
}
|
||||
|
||||
checkMoneyFormatCorrect(registerVO.getMoney());
|
||||
Long rangeDiff = Long.parseLong(registerVO.getBillrangeend())
|
||||
- Long.parseLong(registerVO.getBillrangestart());
|
||||
UFDouble diffMoney = (new UFDouble(rangeDiff)).add(1.0).multiply(0.01);
|
||||
RegisterVO newRegisterVO = calcMoneyPrecision(registerVO, diffMoney);
|
||||
if (newRegisterVO.getMoney().doubleValue() != registerVO.getMoney().doubleValue()) {
|
||||
throw new BusinessException("票据号码" + registerVO.getFbmbillno() + ",子票区间" + billRangeStart
|
||||
+ "-" + billRangeEnd + "的金额" + newRegisterVO.getMoney().toString()
|
||||
+ "(根据公式自动计算出的金额)与票据金额不相等,请修改!");
|
||||
}
|
||||
|
||||
if (!isEbill) {
|
||||
throw new BusinessException("纸票不能进行分包流转!");
|
||||
}
|
||||
|
||||
if (Long.parseLong(billRangeEnd) < Long.parseLong(billRangeStart)) {
|
||||
throw new BusinessException("子票区间截止值不能小于开始值!");
|
||||
}
|
||||
break label101;
|
||||
}
|
||||
|
||||
throw new BusinessException("子票区间开始值和截止值长度都必须为12位!");
|
||||
}
|
||||
|
||||
throw new BusinessException("子票区间开始值和截止值都必须大于0!");
|
||||
}
|
||||
}
|
||||
|
||||
boolean isBelongNewBillSys = ifBelongNewBillSystem(registerVO.getFbmbillno());
|
||||
if (!isBelongNewBillSys || subcontractCirculation != null && subcontractCirculation.booleanValue()
|
||||
|| "0".equals(registerVO.getBillrangestart()) && "0".equals(registerVO.getBillrangeend())) {
|
||||
if (isBelongNewBillSys || !StringUtil.isNotNull(registerVO.getBillrangestart())
|
||||
&& !StringUtil.isNotNull(registerVO.getBillrangeend())) {
|
||||
AggRegisterVO[] registers = ((IGatherQueryService) NCLocator.getInstance()
|
||||
.lookup(IGatherQueryService.class))
|
||||
.queryRegisterByFbmBillnoAndPkorg(registerVO.getFbmbillno(), registerVO.getPk_org());
|
||||
if (null != registers && registers.length > 0) {
|
||||
checkBillRangeRepeat(registers, registerVO);
|
||||
}
|
||||
|
||||
} else {
|
||||
throw new BusinessException("非新一代票据不可进行分包流转,不可输入子票区间!");
|
||||
}
|
||||
} else {
|
||||
throw new BusinessException("票据[" + registerVO.getFbmbillno() + "]为新一代票且不可分包流转,子票区间开始和结束应为0!");
|
||||
}
|
||||
}
|
||||
|
||||
public static String checkBillRangeRepeat(AggRegisterVO[] registers, RegisterVO newRegisterVO)
|
||||
throws BusinessException {
|
||||
int var4;
|
||||
String var10002;
|
||||
if (StringUtil.isNull(newRegisterVO.getPrimaryKey())) {
|
||||
if (registers != null && registers.length == 1) {
|
||||
AggRegisterVO register = registers[0];
|
||||
RegisterVO vo = register.getparentVO();
|
||||
if (!StringUtil.isNull(vo.getBillrangestart()) && !StringUtil.isNull(vo.getBillrangeend())) {
|
||||
if (!StringUtil.isNull(newRegisterVO.getBillrangestart())
|
||||
&& !StringUtil.isNull(newRegisterVO.getBillrangeend())) {
|
||||
if (ifIncludesInterval(register, newRegisterVO)) {
|
||||
var10002 = register.getparentVO().getFbmbillno();
|
||||
throw new BusinessException(
|
||||
"票据号码" + var10002 + ",子票区间" + register.getparentVO().getBillrangestart() + "-"
|
||||
+ register.getparentVO().getBillrangeend()
|
||||
+ "已存在,请勿重复录入,请在票据台账节点查询该票据号对应单据是否处理完成!");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
throw new BusinessException("票据号[" + newRegisterVO.getFbmbillno() + "]已存在,且为等分票据,不可再登记非等分票据信息!");
|
||||
}
|
||||
|
||||
if (!StringUtil.isNull(newRegisterVO.getBillrangestart())
|
||||
&& !StringUtil.isNull(newRegisterVO.getBillrangeend())) {
|
||||
return "票据号[" + newRegisterVO.getFbmbillno() + "]已存在,且为非等分票据,不可再登记等分票据信息!";
|
||||
}
|
||||
|
||||
throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("3618fbm_0", "03618fbm-0598",
|
||||
(String) null, new String[] { newRegisterVO.getFbmbillno() }));
|
||||
} else if (registers != null && registers.length > 1) {
|
||||
if (StringUtil.isNull(newRegisterVO.getBillrangestart())
|
||||
|| StringUtil.isNull(newRegisterVO.getBillrangeend())) {
|
||||
throw new BusinessException("票据号[" + newRegisterVO.getFbmbillno() + "]已存在,且为等分票据,不可再登记非等分票据信息!");
|
||||
}
|
||||
|
||||
AggRegisterVO[] var7 = registers;
|
||||
int var9 = registers.length;
|
||||
|
||||
for (var4 = 0; var4 < var9; ++var4) {
|
||||
AggRegisterVO vo = var7[var4];
|
||||
if (ifIncludesInterval(vo, newRegisterVO)) {
|
||||
var10002 = vo.getparentVO().getFbmbillno();
|
||||
throw new BusinessException("票据号码" + var10002 + ",子票区间" + vo.getparentVO().getBillrangestart()
|
||||
+ "-" + vo.getparentVO().getBillrangeend() + "已存在,请勿重复录入,请在票据台账节点查询该票据号对应单据是否处理完成!");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (registers == null || registers.length == 0) {
|
||||
throw new BusinessException("修改失败,票据" + newRegisterVO.getFbmbillno() + "数据不存在!");
|
||||
}
|
||||
|
||||
if (registers != null && registers.length > 1) {
|
||||
if (newRegisterVO.getSubcontractcirculation() != null
|
||||
&& !newRegisterVO.getSubcontractcirculation().booleanValue()) {
|
||||
throw new BusinessException("票据号码 " + newRegisterVO.getFbmbillno() + "作为等分票据已拆包,无法再变更为非等分票据!");
|
||||
}
|
||||
|
||||
boolean intervalRepeat = false;
|
||||
AggRegisterVO[] var3 = registers;
|
||||
var4 = registers.length;
|
||||
|
||||
for (int var5 = 0; var5 < var4; ++var5) {
|
||||
AggRegisterVO vo = var3[var5];
|
||||
if (StringUtil.isNull(vo.getparentVO().getBillrangestart())
|
||||
|| StringUtil.isNull(vo.getparentVO().getBillrangeend())) {
|
||||
throw new BusinessException(
|
||||
"修改失败,票据 " + newRegisterVO.getFbmbillno() + "既存在等分票据数据,又存在非等分票据数据!");
|
||||
}
|
||||
|
||||
if (vo.getparentVO().getPk_register().equals(newRegisterVO.getPk_register())) {
|
||||
if (vo.getparentVO().getBillrangestart().equals(newRegisterVO.getBillrangestart())
|
||||
&& vo.getparentVO().getBillrangeend().equals(newRegisterVO.getBillrangeend())) {
|
||||
intervalRepeat = false;
|
||||
}
|
||||
} else if (ifIncludesInterval(vo, newRegisterVO)) {
|
||||
intervalRepeat = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (intervalRepeat) {
|
||||
var10002 = newRegisterVO.getFbmbillno();
|
||||
throw new BusinessException("票据号码" + var10002 + ",子票区间" + newRegisterVO.getBillrangestart() + "-"
|
||||
+ newRegisterVO.getBillrangeend() + "已存在,请勿重复录入,请在票据台账节点查询该票据号对应单据是否处理完成!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean ifIncludesInterval(AggRegisterVO aggRegisterVO, RegisterVO newRegisterVO) {
|
||||
boolean flag = false;
|
||||
if (Long.parseLong(aggRegisterVO.getparentVO().getBillrangestart()) <= Long
|
||||
.parseLong(newRegisterVO.getBillrangeend())
|
||||
&& Long.parseLong(aggRegisterVO.getparentVO().getBillrangeend()) >= Long
|
||||
.parseLong(newRegisterVO.getBillrangeend())) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (Long.parseLong(aggRegisterVO.getparentVO().getBillrangestart()) <= Long
|
||||
.parseLong(newRegisterVO.getBillrangestart())
|
||||
&& Long.parseLong(aggRegisterVO.getparentVO().getBillrangeend()) >= Long
|
||||
.parseLong(newRegisterVO.getBillrangestart())) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (Long.parseLong(newRegisterVO.getBillrangestart()) <= Long
|
||||
.parseLong(aggRegisterVO.getparentVO().getBillrangeend())
|
||||
&& Long.parseLong(newRegisterVO.getBillrangeend()) >= Long
|
||||
.parseLong(aggRegisterVO.getparentVO().getBillrangeend())) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (Long.parseLong(newRegisterVO.getBillrangestart()) <= Long
|
||||
.parseLong(aggRegisterVO.getparentVO().getBillrangestart())
|
||||
&& Long.parseLong(newRegisterVO.getBillrangeend()) >= Long
|
||||
.parseLong(aggRegisterVO.getparentVO().getBillrangestart())) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (Long.parseLong(aggRegisterVO.getparentVO().getBillrangestart()) >= Long
|
||||
.parseLong(newRegisterVO.getBillrangestart())
|
||||
&& Long.parseLong(aggRegisterVO.getparentVO().getBillrangeend()) <= Long
|
||||
.parseLong(newRegisterVO.getBillrangeend())) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (Long.parseLong(newRegisterVO.getBillrangestart()) >= Long
|
||||
.parseLong(aggRegisterVO.getparentVO().getBillrangestart())
|
||||
&& Long.parseLong(newRegisterVO.getBillrangeend()) <= Long
|
||||
.parseLong(aggRegisterVO.getparentVO().getBillrangeend())) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
public static Long checkMoneyFormatCorrect(UFDouble money) throws BusinessException {
|
||||
if (money == null) {
|
||||
return 0L;
|
||||
} else {
|
||||
UFDouble standardAmountMultiplier = money.multiply(100.0);
|
||||
long roundmum = standardAmountMultiplier.longValue();
|
||||
if (!(standardAmountMultiplier.sub(new UFDouble(roundmum)).doubleValue() > 0.0)
|
||||
&& !(standardAmountMultiplier.sub(new UFDouble(roundmum)).doubleValue() < 0.0)) {
|
||||
return roundmum;
|
||||
} else {
|
||||
throw new BusinessException("等分票据的票据金额要等于标准金额的整数倍,请修改!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static String formatBillRangeValue(String rangeValue) {
|
||||
if (StringUtil.isNull(rangeValue)) {
|
||||
return "000000000001";
|
||||
} else if (rangeValue.length() != 12 && rangeValue.length() <= 12) {
|
||||
long needSupplyCharacterLeng = (long) (12 - rangeValue.length());
|
||||
|
||||
StringBuilder builder;
|
||||
for (builder = new StringBuilder(); needSupplyCharacterLeng > 0L; --needSupplyCharacterLeng) {
|
||||
builder.append("0");
|
||||
}
|
||||
|
||||
builder.append(rangeValue);
|
||||
return builder.toString();
|
||||
} else {
|
||||
return rangeValue;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getBillSysTypeByFbmBillNo(String fbmBillNo) {
|
||||
if (StringUtil.isNull(fbmBillNo)) {
|
||||
return null;
|
||||
} else {
|
||||
String firstNum = fbmBillNo.substring(0, 1);
|
||||
return ("5".equals(firstNum) || "6".equals(firstNum)) && fbmBillNo.length() == 30 ? "CS02" : "CS01";
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean ifBelongNewBillSystem(String fbmBillNo) {
|
||||
String billsystype = getBillSysTypeByFbmBillNo(fbmBillNo);
|
||||
return "CS02".equals(billsystype);
|
||||
}
|
||||
|
||||
public static boolean ifRangeMatched(CircularlyAccessibleValueObject one, CircularlyAccessibleValueObject other) {
|
||||
String oneStart = (String) one.getAttributeValue("billrangestart");
|
||||
String oneEnd = (String) one.getAttributeValue("billrangeend");
|
||||
String otherStart = (String) other.getAttributeValue("billrangestart");
|
||||
String otherEnd = (String) other.getAttributeValue("billrangeend");
|
||||
return StringUtils.equals(oneStart, otherStart) && StringUtils.equals(oneEnd, otherEnd);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue