1951 lines
96 KiB
Java
1951 lines
96 KiB
Java
package nccloud.api.impl.so.m30;
|
||
|
||
import com.alibaba.fastjson.JSONArray;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.google.gson.Gson;
|
||
import nc.bd.itf.tools.BFPubTools;
|
||
import nc.bs.dao.BaseDAO;
|
||
import nc.bs.dao.DAOException;
|
||
import nc.bs.framework.common.NCLocator;
|
||
import nc.bs.logging.Logger;
|
||
import nc.bs.trade.business.HYPubBO;
|
||
import nc.bs.trade.business.HYSuperDMO;
|
||
import nc.impl.pubapp.pattern.data.bill.BillQuery;
|
||
import nc.itf.scmpub.reference.uap.bd.customer.CustomerPubService;
|
||
import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil;
|
||
import nc.itf.so.m30.self.ISaleOrderMaintain;
|
||
import nc.itf.so.m30.self.ISaleOrderScriptMaintain;
|
||
import nc.itf.uap.IUAPQueryBS;
|
||
import nc.itf.uap.pf.IPFBusiAction;
|
||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||
import nc.jdbc.framework.processor.MapProcessor;
|
||
import nc.pubimpl.so.m30.pub.SaleOrderSaveUtil;
|
||
import nc.pubitf.so.m30.api.ISaleOrderQueryAPI;
|
||
import nc.vo.arap.gathering.GatheringBillItemVO;
|
||
import nc.vo.arap.gathering.GatheringBillVO;
|
||
import nc.vo.arap.receivable.ReceivableBillItemVO;
|
||
import nc.vo.arap.receivable.ReceivableBillVO;
|
||
import nc.vo.bd.defdoc.DefdocVO;
|
||
import nc.vo.ml.NCLangRes4VoTransl;
|
||
import nc.vo.pub.BusinessException;
|
||
import nc.vo.pub.VOStatus;
|
||
import nc.vo.pub.billtype.BilltypeVO;
|
||
import nc.vo.pub.lang.UFBoolean;
|
||
import nc.vo.pub.lang.UFDate;
|
||
import nc.vo.pub.lang.UFDouble;
|
||
import nc.vo.pubapp.AppContext;
|
||
import nc.vo.pubapp.calculator.HslParseUtil;
|
||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||
import nc.vo.pubapp.pattern.pub.SqlBuilder;
|
||
import nc.vo.scmpub.check.billvalidate.BillVOsCheckRule;
|
||
import nc.vo.scmpub.fill.pricemny.INumPriceMnyCalculator;
|
||
import nc.vo.scmpub.res.billtype.SOBillType;
|
||
import nc.vo.scmpub.util.CollectionUtils;
|
||
import nc.vo.scmpub.util.StringUtil;
|
||
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||
import nc.vo.so.m30.entity.SaleOrderHVO;
|
||
import nc.vo.so.m30.entity.SaleOrderVO;
|
||
import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||
import nc.vo.so.m32.entity.SaleInvoiceHVO;
|
||
import nc.vo.so.pub.SOConstant;
|
||
import nc.vo.so.pub.enumeration.BillStatus;
|
||
import nc.vo.so.pub.keyvalue.IKeyValue;
|
||
import nc.vo.so.pub.keyvalue.VOKeyValue;
|
||
import nc.vo.so.pub.util.AggVOUtil;
|
||
import nccloud.api.impl.so.m30.check.SaleOrderValidator;
|
||
import nccloud.api.impl.so.m30.fill.SaleOrderNPriceMnyCal;
|
||
import nccloud.api.impl.so.m30.fill.SaleOrderSaveFillValue;
|
||
import nccloud.api.so.m30.IAPISaleOrderMaitain;
|
||
import nccloud.baseapp.core.log.NCCForUAPLogger;
|
||
import nccloud.commons.lang.StringUtils;
|
||
import nccloud.openapi.scmpub.pub.TransferCodeToPKTool;
|
||
import nccloud.openapi.scmpub.pub.TransferMapToVOTool;
|
||
import nccloud.putitf.riart.billtype.IBilltypeService;
|
||
import org.apache.commons.lang3.ArrayUtils;
|
||
|
||
import javax.crypto.Mac;
|
||
import javax.crypto.spec.SecretKeySpec;
|
||
import java.io.*;
|
||
import java.math.BigDecimal;
|
||
import java.net.HttpURLConnection;
|
||
import java.net.MalformedURLException;
|
||
import java.net.URL;
|
||
import java.net.URLEncoder;
|
||
import java.nio.charset.StandardCharsets;
|
||
import java.text.ParseException;
|
||
import java.text.SimpleDateFormat;
|
||
import java.time.LocalDate;
|
||
import java.time.ZoneId;
|
||
import java.time.format.DateTimeFormatter;
|
||
import java.util.*;
|
||
import java.util.zip.GZIPInputStream;
|
||
|
||
/**
|
||
* @Description: <20><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD>ά<EFBFBD><CEAC>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
||
* @author: yanghff
|
||
* @date: 2019-10-23 <20><><EFBFBD><EFBFBD>4:57:49
|
||
* @Copyright:
|
||
*/
|
||
public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
||
private static String BODYTABLE = "so_saleorder_b";
|
||
private static String HEADTABLE = "so_saleorder";
|
||
|
||
public BaseDAO dao;
|
||
|
||
public BaseDAO getDao() {
|
||
if (dao == null) {
|
||
dao = new BaseDAO();
|
||
}
|
||
return dao;
|
||
}
|
||
|
||
public SaleOrderVO[] save(SaleOrderVO[] vos) throws BusinessException {
|
||
|
||
SaleOrderVO[] fillvos = vos;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD>
|
||
for (SaleOrderVO vo : vos) {
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
UFDate dbilldate = hvo.getDbilldate();
|
||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||
String sql = " select bd_currtype.pk_currtype from bd_currtype where (code='" + hvo.getCorigcurrencyid()
|
||
+ "' or pk_currtype='" + hvo.getCorigcurrencyid() + "') and dr=0 ";
|
||
Object o = getDao().executeQuery(sql, new ColumnProcessor());
|
||
if (o != null) {
|
||
hvo.setCorigcurrencyid(BFPubTools.getString_TrimAsNull(o));
|
||
} else {
|
||
throw new BusinessException("<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
sql = " select bd_currtype.pk_currtype from bd_currtype where (code='" + bvos[0].getCcurrencyid()
|
||
+ "' or pk_currtype='" + bvos[0].getCcurrencyid() + "') and dr=0 ";
|
||
Object o1 = getDao().executeQuery(sql, new ColumnProcessor());
|
||
if (o1 == null) {
|
||
throw new BusinessException("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
// String csettleorgid = bvos[0].getCsettleorgid();
|
||
String ccurrencyorgid = o1.toString();
|
||
// UFDouble exchangerate = SOCurrencyUtil.getInCurrencyRateByOrg(csettleorgid, BFPubTools.getString_TrimAsNull(o), ccurrencyorgid, dbilldate);
|
||
for (SaleOrderBVO bvo : bvos) {
|
||
bvo.setCcurrencyid(BFPubTools.getString_TrimAsNull(o1));
|
||
if (!BFPubTools.getString_TrimAsNull(o).equals(ccurrencyorgid)) {
|
||
// bvo.setNexchangerate(exchangerate);
|
||
} else {
|
||
// bvo.setNexchangerate(UFDouble.ONE_DBL);
|
||
}
|
||
// <20>۱<EFBFBD><DBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D0BF><D5BC><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>λ<EFBFBD><CEBB>
|
||
UFDouble exchangerate1 = getUFDouble_NullAsOne(bvo.getNexchangerate()).setScale(2, UFDouble.ROUND_HALF_UP);
|
||
bvo.setNexchangerate(exchangerate1);
|
||
}
|
||
}
|
||
|
||
|
||
BillVOsCheckRule checker = new BillVOsCheckRule(new SaleOrderValidator());
|
||
checker.check(vos);
|
||
Map<String, String> origcurrencyMap = new HashMap<>();
|
||
for (SaleOrderVO vo : vos) {
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
String vbillcode = hvo.getVbillcode();
|
||
String corigcurrencyid = hvo.getCorigcurrencyid();
|
||
origcurrencyMap.put(vbillcode, corigcurrencyid);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ,<2C><>дsetDefValue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD>еļ۸<C4BC><DBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
new SaleOrderSaveFillValue().setDefValue1(vos);
|
||
// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5>ʱ<EFBFBD><CAB1>ԭ<EFBFBD>ҵ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD>¸<EFBFBD>ֵΪ<D6B5><CEAA>ͬƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
||
for (SaleOrderVO ordervo : vos) {
|
||
SaleOrderHVO hvo = ordervo.getParentVO();
|
||
String vbillcode = hvo.getVbillcode();
|
||
if (origcurrencyMap.get(vbillcode) != null && !"".equals(origcurrencyMap.get(vbillcode))) {
|
||
hvo.setCorigcurrencyid(origcurrencyMap.get(vbillcode));
|
||
}
|
||
calculatorPrice(ordervo);
|
||
}
|
||
// <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SaleOrderVO[] combinBillVOs = (SaleOrderVO[]) AggVOUtil.combinBillVO(fillvos, vos);
|
||
// <20><><EFBFBD><EFBFBD>
|
||
SaleOrderVO[] retvos = (SaleOrderVO[]) PfServiceScmUtil.processBatch(SOConstant.WRITE,
|
||
SOBillType.Order.getCode(), combinBillVOs, null, null);
|
||
|
||
SaleOrderVO[] billvos = ((ISaleOrderQueryAPI) NCLocator.getInstance().lookup(ISaleOrderQueryAPI.class))
|
||
.queryVOByIDs(new String[]{retvos[0].getParentVO().getPrimaryKey()});
|
||
if (billvos != null) {
|
||
((IPFBusiAction) NCLocator.getInstance().lookup(IPFBusiAction.class)).processAction("APPROVE",
|
||
billvos[0].getParentVO().getVtrantypecode(), null, billvos[0], null, null);
|
||
}
|
||
return retvos;
|
||
}
|
||
|
||
public void calculatorPrice(SaleOrderVO ordervo) throws BusinessException {
|
||
|
||
IKeyValue keyValue = new VOKeyValue<SaleOrderVO>(ordervo);
|
||
|
||
String ctrantypeid = keyValue.getHeadStringValue(SaleOrderHVO.CTRANTYPEID);
|
||
if (StringUtil.isEmptyTrimSpace(ctrantypeid)) {
|
||
ExceptionUtils.wrappBusinessException(
|
||
NCLangRes4VoTransl.getNCLangRes().getStrByID("4006013_0", "04006013-0024")/* @res "<22><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>" */);
|
||
}
|
||
|
||
SaleOrderBVO[] vbos = ordervo.getChildrenVO();
|
||
UFDouble sumnum = UFDouble.ZERO_DBL;
|
||
UFDouble sumnny = UFDouble.ZERO_DBL;
|
||
|
||
for (int i = 0; i < vbos.length; i++) {
|
||
SaleOrderBVO childrenVO = vbos[i];
|
||
childrenVO.setFtaxtypeflag(1);
|
||
UFDouble nexchangerate = getUFDouble_NullAsOne(childrenVO.getNexchangerate());
|
||
childrenVO.setNexchangerate(nexchangerate);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(4λ)<29>ͽ<EFBFBD><CDBD><EFBFBD>(2λ)
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigtaxprice = childrenVO.getNqtorigtaxprice();
|
||
nqtorigtaxprice = nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqtorigtaxprice(nqtorigtaxprice);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigprice = childrenVO.getNqtorigprice();
|
||
nqtorigprice = nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqtorigprice(nqtorigprice);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigtaxnetprc = childrenVO.getNqtorigtaxnetprc();
|
||
nqtorigtaxnetprc = nqtorigtaxnetprc.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqtorigtaxnetprc(nqtorigtaxnetprc);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorignetprice = childrenVO.getNqtorignetprice();
|
||
nqtorignetprice = nqtorignetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqtorignetprice(nqtorignetprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigtaxprice = childrenVO.getNorigtaxprice();
|
||
norigtaxprice = norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNorigtaxprice(norigtaxprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigprice = childrenVO.getNorigprice();
|
||
norigprice = norigprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNorigprice(norigprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigtaxnetprice = childrenVO.getNorigtaxnetprice();
|
||
norigtaxnetprice = norigtaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNorigtaxnetprice(norigtaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norignetprice = childrenVO.getNorignetprice();
|
||
norignetprice = norignetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNorignetprice(norignetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nmny = childrenVO.getNmny();
|
||
nmny = nmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNmny(nmny);
|
||
childrenVO.setNcaltaxmny(nmny);// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD>Ҽ<EFBFBD>˰<EFBFBD>ϼ<EFBFBD>
|
||
UFDouble ntaxmny = childrenVO.getNtaxmny();
|
||
ntaxmny = ntaxmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNtaxmny(ntaxmny);
|
||
// ˰<><CBB0>
|
||
UFDouble ntax = childrenVO.getNtax();
|
||
ntax = ntax.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNtax(ntax);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigmny = childrenVO.getNorigmny();
|
||
norigmny = norigmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNorigmny(norigmny);
|
||
// <20><>˰<EFBFBD>ϼ<EFBFBD>
|
||
UFDouble norigtaxmny = childrenVO.getNorigtaxmny();
|
||
norigtaxmny = norigtaxmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNorigtaxmny(norigtaxmny);
|
||
// <20><><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqttaxprice = childrenVO.getNqttaxprice();
|
||
nqttaxprice = nqttaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqttaxprice(nqttaxprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtprice = childrenVO.getNqtprice();
|
||
nqtprice = nqtprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqtprice(nqtprice);
|
||
// <20><><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqttaxnetprice = childrenVO.getNqttaxnetprice();
|
||
nqttaxnetprice = nqttaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqttaxnetprice(nqttaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtnetprice = childrenVO.getNqtnetprice();
|
||
nqtnetprice = nqtnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNqtnetprice(nqtnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble ntaxprice = childrenVO.getNtaxprice();
|
||
ntaxprice = ntaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNtaxprice(ntaxprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nprice = childrenVO.getNprice();
|
||
nprice = nprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNprice(nprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble ntaxnetprice = childrenVO.getNtaxnetprice();
|
||
ntaxnetprice = ntaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNtaxnetprice(ntaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nnetprice = childrenVO.getNnetprice();
|
||
nnetprice = nnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNnetprice(nnetprice);
|
||
Map<String, Object> goodsMap = getMaterlInfo(childrenVO.getCmaterialid());
|
||
String measrate = "1/1";
|
||
if (goodsMap != null && StringUtils.isEmpty(goodsMap.getOrDefault("measrate", "") + "")) {
|
||
measrate = goodsMap.get("measrate") + "";
|
||
}
|
||
childrenVO.setVchangerate(measrate);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
childrenVO.setVqtunitrate(measrate);// <20><><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble[] measrateNums = HslParseUtil.parseHsl(measrate);
|
||
UFDouble measrateNum = UFDouble.ONE_DBL;
|
||
if (null != measrateNums && measrateNums.length != 0) {
|
||
measrateNum = measrateNums[0].div(measrateNums[1]).setScale(2, 4);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble nnum = childrenVO.getNnum().setScale(2, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNnum(nnum);
|
||
UFDouble nastnum = nnum.multiply(measrateNum).setScale(2, UFDouble.ROUND_HALF_UP);
|
||
childrenVO.setNastnum(nastnum);// <20><><EFBFBD><EFBFBD>
|
||
childrenVO.setNqtunitnum(nastnum);// <20><><EFBFBD>۵<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||
sumnum = sumnum.add(nnum);
|
||
sumnny = sumnny.add(norigtaxmny);
|
||
|
||
}
|
||
ordervo.getParentVO().setNtotalnum(sumnum);
|
||
ordervo.getParentVO().setNtotalorigmny(sumnny.setScale(2, 4));
|
||
}
|
||
|
||
@Override
|
||
public SaleOrderVO[] save(List<Map<String, Object>> paramList) throws BusinessException {
|
||
try {
|
||
List<SaleOrderVO> aggVOList = TransferMapToVOTool.transferMapToAggVO(paramList, SaleOrderVO.class);
|
||
|
||
SaleOrderVO[] vos = (SaleOrderVO[]) aggVOList.toArray(new SaleOrderVO[aggVOList.size()]);
|
||
BillVOsCheckRule checker = new BillVOsCheckRule(new SaleOrderValidator());
|
||
checker.check(vos);
|
||
|
||
aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList);
|
||
|
||
SaleOrderSaveUtil saveUtil = new SaleOrderSaveUtil();
|
||
return saveUtil.processBill(vos);
|
||
} catch (Exception e) {
|
||
ExceptionUtils.marsh(e);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public SaleOrderVO[] update(List<Map<String, Object>> paramList) throws BusinessException {
|
||
List<SaleOrderVO> aggVOList = TransferMapToVOTool.transferMapToAggVO(paramList, SaleOrderVO.class);
|
||
|
||
// aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList);
|
||
SaleOrderVO[] vos = (SaleOrderVO[]) aggVOList.toArray(new SaleOrderVO[aggVOList.size()]);
|
||
setOtherId(vos);
|
||
|
||
Map<String, Set<String>> ids = getIds(vos);
|
||
if (ids.keySet() == null || ids.values() == null || ids.values().size() == 0) {
|
||
ExceptionUtils.wrappBusinessException("<EFBFBD>봫<EFBFBD>붩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
String[] hids = (String[]) ids.keySet().toArray(new String[ids.keySet().size()]);
|
||
|
||
ISaleOrderMaintain service = (ISaleOrderMaintain) NCLocator.getInstance().lookup(ISaleOrderMaintain.class);
|
||
SaleOrderVO[] originVos = service.querySaleorder(hids);
|
||
if (null == originVos || originVos.length == 0) {
|
||
ExceptionUtils.wrappBusinessException("<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δƥ<EFBFBD>䵽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
Map<String, List<String>> delBipMap = new HashMap<>();
|
||
for (Map<String, Object> objectMap : paramList) {
|
||
Map<String, Object> headdata = (Map<String, Object>) objectMap.get(HEADTABLE);
|
||
String csaleorderid = headdata.get("csaleorderid") + "";
|
||
List<Object> bodyArr = (List<Object>) objectMap.get(BODYTABLE);
|
||
List<String> delIds = new ArrayList<>();
|
||
for (Object body : bodyArr) {
|
||
Map<String, Object> bodydata = (Map<String, Object>) body;
|
||
if ((bodydata.getOrDefault("vbdef11", "") + "").isEmpty()) {
|
||
// <20><><EFBFBD><EFBFBD>vbdef11Ϊ<31><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
bodydata.put("status", "add");
|
||
}
|
||
if (!(bodydata.getOrDefault("csaleorderbid", "") + "").isEmpty()) {
|
||
delIds.add(bodydata.get("csaleorderbid") + "");
|
||
}
|
||
}
|
||
if (!delIds.isEmpty()) {
|
||
delBipMap.put(csaleorderid, delIds);
|
||
}
|
||
}
|
||
|
||
// SetUpdateData setData = new SetUpdateData();
|
||
// setData.setData(vos, originVos);
|
||
// SaleOrderVO[] combinBillVOs = (SaleOrderVO[]) AggVOUtil.combinBillVO(vos,
|
||
// originVos);
|
||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBFBD>
|
||
SaleOrderVO[] combinBillVOs = new SaleOrderVO[originVos.length];
|
||
for (int i = 0; i < originVos.length; i++) {
|
||
combinBillVOs[i] = (SaleOrderVO) originVos[i].clone();
|
||
}
|
||
// <20><> vos <20>е<EFBFBD>Ԫ<EFBFBD>ذ<EFBFBD><D8B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2> Map <20><>
|
||
Map<String, SaleOrderVO> vosMap = new HashMap<>();
|
||
for (SaleOrderVO vo : vos) {
|
||
vosMap.put(vo.getParentVO().getCsaleorderid(), vo);
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD> combinBillVOs <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||
for (SaleOrderVO vo : combinBillVOs) {
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
String primaryKey = hvo.getCsaleorderid();
|
||
SaleOrderVO bipVo = vosMap.get(primaryKey);
|
||
// <20><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>״̬
|
||
hvo.setStatus(VOStatus.UPDATED);
|
||
List<String> bipIds = delBipMap.get(primaryKey);
|
||
|
||
// <20>Ƚ<EFBFBD>combinBillVOs<4F>е<EFBFBD>BVO<56><4F>vos<6F>е<EFBFBD>BVO
|
||
for (SaleOrderBVO bvo : vo.getChildrenVO()) {
|
||
bvo.setStatus(VOStatus.DELETED);
|
||
String csaleorderbid = bvo.getCsaleorderbid();
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>״̬,<2C><>bip<69><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>
|
||
if (bipIds != null && !bipIds.isEmpty()) {
|
||
// <20><>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>״̬
|
||
if (bipIds.contains(csaleorderbid)) {
|
||
bvo.setStatus(VOStatus.UPDATED);
|
||
}
|
||
}
|
||
}
|
||
// <20><><EFBFBD><EFBFBD> combinBillVO <20>е<EFBFBD><D0B5>ֶ<EFBFBD>Ϊ vos <20>е<EFBFBD>ֵ
|
||
updateFields(vo, bipVo);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (paramList != null && !paramList.isEmpty()) {
|
||
addBvo(combinBillVOs, paramList);
|
||
}
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
INumPriceMnyCalculator cal = new SaleOrderNPriceMnyCal<SaleOrderVO>(combinBillVOs);
|
||
cal.calculate();
|
||
for (SaleOrderVO vo : combinBillVOs) {
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
SaleOrderHVO originHvo = null;
|
||
for (SaleOrderVO originVo : originVos) {
|
||
if (hvo.getCsaleorderid().equals(originVo.getParentVO().getCsaleorderid())) {
|
||
originHvo = originVo.getParentVO();
|
||
}
|
||
}
|
||
String new_ctrantypeid = hvo.getCtrantypeid();
|
||
boolean isChangedTranType = false;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>
|
||
if (originHvo != null && new_ctrantypeid != null && !new_ctrantypeid.equals(originHvo.getCtrantypeid())) {
|
||
isChangedTranType = true;
|
||
}
|
||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD>
|
||
boolean hasNewStatus = Arrays.stream(bvos).anyMatch(bvo -> bvo.getStatus() == VOStatus.NEW);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD>У<EFBFBD><D0A3><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
/*if (!hasNewStatus && !isChangedTranType) {
|
||
String countSql = "SELECT count(1) FROM so_saleinvoice_b a"
|
||
+ " LEFT JOIN so_saleinvoice b ON a.csaleinvoiceid = b.csaleinvoiceid"
|
||
+ " WHERE b.fopposeflag = 0 AND nvl(b.dr, 0) = 0 and csrcid = '[csrcid]' ";
|
||
countSql = countSql.replace("[csrcid]", hvo.getCsaleorderid());
|
||
Integer num = (Integer) getDao().executeQuery(countSql, new ColumnProcessor());
|
||
if (num > 0) {
|
||
// fopposeflag <20>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD> 0=<3D><><EFBFBD><EFBFBD> 1=<3D>ѱ<EFBFBD><D1B1>Գ<EFBFBD> 2=<3D>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD>
|
||
ExceptionUtils.wrappBusinessException("<22><><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD>۷<EFBFBD>Ʊ");
|
||
return null;
|
||
}
|
||
}*/
|
||
}
|
||
|
||
fillcustomervidbyoid(combinBillVOs);
|
||
checkSaleOrderChange(combinBillVOs[0], originVos[0]);
|
||
// <20><><EFBFBD><EFBFBD>
|
||
ISaleOrderScriptMaintain maintainsrv = NCLocator.getInstance().lookup(ISaleOrderScriptMaintain.class);
|
||
SaleOrderVO[] retvos = maintainsrv.saleOrderUpdate(combinBillVOs, null, originVos);
|
||
if (retvos != null) {
|
||
// ͬ<><CDAC><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>ڲɹ<DAB2><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
updateRelatedBill(retvos);
|
||
}
|
||
return retvos;
|
||
}
|
||
|
||
private Map<String, Set<String>> getIds(SaleOrderVO[] vos) {
|
||
Map<String, Set<String>> ids = new HashMap<String, Set<String>>();
|
||
for (SaleOrderVO vo : vos) {
|
||
String hid = vo.getParentVO().getCsaleorderid();
|
||
Set<String> bids = new HashSet<String>();
|
||
for (SaleOrderBVO bvo : vo.getChildrenVO()) {
|
||
bids.add(bvo.getCsaleorderbid());
|
||
}
|
||
ids.put(hid, bids);
|
||
}
|
||
return ids;
|
||
}
|
||
|
||
private void setOtherId(SaleOrderVO[] vos) {
|
||
for (SaleOrderVO vo : vos) {
|
||
// <20><><EFBFBD>š<EFBFBD>ҵ<EFBFBD><D2B5>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>Ʊ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>תid
|
||
SaleOrderHVO orderHVO = vo.getParentVO();
|
||
String csaleorderid = orderHVO.getCsaleorderid();
|
||
String cdeptvid = orderHVO.getCdeptvid();
|
||
String cemployeeid = orderHVO.getCemployeeid();
|
||
// <20><>Ʊ<EFBFBD>ͻ<EFBFBD>
|
||
String cinvoicecustid = orderHVO.getCinvoicecustid();
|
||
// <20>ͻ<EFBFBD>
|
||
String ccustomerid = orderHVO.getCcustomerid();
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// String ctrantypeid = orderHVO.getAttributeValue("ctrantypeid") + "";
|
||
String vtrantypecode = orderHVO.getVtrantypecode();
|
||
// NCCForUAPLogger.debug("setOtherId-ccustomerid:" + ccustomerid + ",vtrantypecode:" + vtrantypecode);
|
||
try {
|
||
String sql = "";
|
||
// <20><><EFBFBD><EFBFBD>
|
||
if (cdeptvid != null && !cdeptvid.isEmpty()) {
|
||
sql = " select pk_vid,pk_dept from org_dept where code = '[code]' ";
|
||
sql = sql.replace("[code]", cdeptvid);
|
||
Map deptMap = (Map) getDao().executeQuery(sql, new MapProcessor());
|
||
// NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-deptObj:" + deptMap);
|
||
if (deptMap != null && !deptMap.isEmpty()) {
|
||
if (!"".equals(deptMap.getOrDefault("pk_dept", "") + "")) {
|
||
orderHVO.setCdeptid(deptMap.getOrDefault("pk_dept", "") + "");
|
||
}
|
||
if (!"".equals(deptMap.getOrDefault("pk_vid", "") + "")) {
|
||
orderHVO.setCdeptvid(deptMap.getOrDefault("pk_vid", "") + "");
|
||
}
|
||
}
|
||
}
|
||
// ҵ<><D2B5>Ա
|
||
if (cemployeeid != null && !cemployeeid.isEmpty()) {
|
||
sql = " select pk_psndoc from bd_psndoc where code = '[code]' ";
|
||
sql = sql.replace("[code]", cemployeeid);
|
||
Object staffObj = getDao().executeQuery(sql, new ColumnProcessor("pk_psndoc"));
|
||
// NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-staffObj:" + staffObj);
|
||
if (staffObj != null) {
|
||
String id = BFPubTools.getString_TrimAsNull(staffObj);
|
||
if (!id.isEmpty()) {
|
||
orderHVO.setCemployeeid(id);
|
||
}
|
||
}
|
||
}
|
||
// <20><>Ʊ<EFBFBD>ͻ<EFBFBD>
|
||
if (cinvoicecustid != null && !cinvoicecustid.isEmpty()) {
|
||
sql = " select pk_customer from bd_customer where nvl(dr,0) = 0 and code = '[code]' ";
|
||
sql = sql.replace("[code]", cinvoicecustid);
|
||
Object invCustObj = getDao().executeQuery(sql, new ColumnProcessor("pk_customer"));
|
||
// NCCForUAPLogger.debug("setOtherId-invCustObj:" + invCustObj);
|
||
if (invCustObj != null) {
|
||
String id = BFPubTools.getString_TrimAsNull(invCustObj);
|
||
if (!id.isEmpty()) {
|
||
orderHVO.setCinvoicecustid(id);
|
||
}
|
||
}
|
||
}
|
||
// <20>ͻ<EFBFBD>
|
||
if (ccustomerid != null && !ccustomerid.isEmpty()) {
|
||
sql = " select pk_customer from bd_customer where nvl(dr,0) = 0 and code = '[code]' ";
|
||
sql = sql.replace("[code]", ccustomerid);
|
||
Object custObj = getDao().executeQuery(sql, new ColumnProcessor("pk_customer"));
|
||
// NCCForUAPLogger.debug("setOtherId-custObj:" + custObj);
|
||
if (custObj != null) {
|
||
String id = BFPubTools.getString_TrimAsNull(custObj);
|
||
if (!id.isEmpty()) {
|
||
orderHVO.setCcustomerid(id);
|
||
}
|
||
}
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (vtrantypecode != null && !vtrantypecode.isEmpty()) {
|
||
IBilltypeService billtypeService = NCLocator.getInstance().lookup(IBilltypeService.class);
|
||
BilltypeVO billtype = billtypeService.getBilltype(vtrantypecode);
|
||
if (billtype != null && billtype.getPk_billtypeid() != null) {
|
||
// NCCForUAPLogger.debug("setOtherId-pk_billtypeid:" + billtype.getPk_billtypeid());
|
||
orderHVO.setCtrantypeid(billtype.getPk_billtypeid());
|
||
}
|
||
}
|
||
} catch (Exception e) {
|
||
Logger.error("APISaleOrderMaitainImpl-setOtherId-exp:" + e.getMessage());
|
||
throw new RuntimeException(e);
|
||
}
|
||
}
|
||
}
|
||
|
||
private void updateFields(SaleOrderVO target, SaleOrderVO source) throws BusinessException {
|
||
// <20><><EFBFBD><EFBFBD> SaleOrderHVO <20>ֶ<EFBFBD>
|
||
SaleOrderHVO targetHVO = target.getParentVO();
|
||
SaleOrderHVO sourceHVO = source.getParentVO();
|
||
// <20><>ͷ<EFBFBD><EFBFBD><DEB8>ĵ<DEB8><C4B5>ֶ<EFBFBD>
|
||
String cdeptvid = sourceHVO.getCdeptvid();
|
||
String cdeptid = sourceHVO.getCdeptid();
|
||
if (cdeptvid != null && !cdeptvid.isEmpty()) {
|
||
targetHVO.setCdeptvid(cdeptvid);
|
||
targetHVO.setCdeptid(cdeptid);
|
||
}
|
||
|
||
String cemployeeid = sourceHVO.getCemployeeid();
|
||
if (cemployeeid != null && !cemployeeid.isEmpty()) {
|
||
targetHVO.setCemployeeid(cemployeeid);
|
||
}
|
||
String cinvoicecustid = sourceHVO.getCinvoicecustid();
|
||
if (cinvoicecustid != null && !cinvoicecustid.isEmpty()) {
|
||
targetHVO.setCinvoicecustid(cinvoicecustid);
|
||
targetHVO.setCinvoicecustvid(cinvoicecustid);
|
||
}
|
||
String ccustomerid = sourceHVO.getCcustomerid();
|
||
if (ccustomerid != null && !ccustomerid.isEmpty()) {
|
||
targetHVO.setCcustomerid(ccustomerid);
|
||
targetHVO.setCcustomervid(ccustomerid);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
|
||
String ctrantypeid = sourceHVO.getCtrantypeid();
|
||
if (ctrantypeid != null && !ctrantypeid.isEmpty()) {
|
||
targetHVO.setCtrantypeid(ctrantypeid);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>
|
||
String vtrantypecode = sourceHVO.getVtrantypecode();
|
||
if (vtrantypecode != null && !vtrantypecode.isEmpty()) {
|
||
targetHVO.setVtrantypecode(vtrantypecode);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
|
||
|
||
String vdef19 = sourceHVO.getVdef19();
|
||
if (vdef19 != null && !vdef19.isEmpty()) {
|
||
targetHVO.setVdef19(vdef19);
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
String vdef20 = sourceHVO.getVdef20();
|
||
if (vdef20 != null && !vdef20.isEmpty()) {
|
||
targetHVO.setVdef20(vdef20);
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD> SaleOrderBVO <20>ֶ<EFBFBD>
|
||
SaleOrderBVO[] targetBVOs = target.getChildrenVO();
|
||
SaleOrderBVO[] sourceBVOs = source.getChildrenVO();
|
||
|
||
// BVO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> csaleorderbid
|
||
Map<String, SaleOrderBVO> sourceBVOsMap = new HashMap<>();
|
||
for (SaleOrderBVO bvo : sourceBVOs) {
|
||
sourceBVOsMap.put(bvo.getCsaleorderbid(), bvo);
|
||
}
|
||
|
||
for (SaleOrderBVO targetBVO : targetBVOs) {
|
||
String bvoId = targetBVO.getCsaleorderbid();
|
||
SaleOrderBVO sourceBVO = sourceBVOsMap.get(bvoId);
|
||
if (sourceBVO != null) {
|
||
int status = targetBVO.getStatus();
|
||
if (VOStatus.UPDATED == status) {
|
||
// <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ʒ
|
||
targetBVO.setBlargessflag(sourceBVO.getBlargessflag());
|
||
// <20>۱<EFBFBD><DBB1><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble nexchangerate = getUFDouble_NullAsOne(sourceBVO.getNexchangerate());
|
||
targetBVO.setNexchangerate(nexchangerate);
|
||
// <20><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>
|
||
targetBVO.setCmaterialvid(sourceBVO.getCmaterialvid());
|
||
String cmaterialvid = sourceBVO.getCmaterialvid();
|
||
// <20><><EFBFBD>Ϲ<EFBFBD><CFB9><EFBFBD><EFBFBD>ֶθ<D6B6>ֵ
|
||
if (cmaterialvid != null && !cmaterialvid.isEmpty()) {
|
||
setMaterl(targetBVO);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(4λ)<29>ͽ<EFBFBD><CDBD><EFBFBD>(2λ)
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigtaxprice = sourceBVO.getNqtorigtaxprice();
|
||
nqtorigtaxprice = nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqtorigtaxprice(nqtorigtaxprice);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigprice = sourceBVO.getNqtorigprice();
|
||
nqtorigprice = nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqtorigprice(nqtorigprice);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigtaxnetprc = sourceBVO.getNqtorigtaxnetprc();
|
||
nqtorigtaxnetprc = nqtorigtaxnetprc.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqtorigtaxnetprc(nqtorigtaxnetprc);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorignetprice = sourceBVO.getNqtorignetprice();
|
||
nqtorignetprice = nqtorignetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqtorignetprice(nqtorignetprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigtaxprice = sourceBVO.getNorigtaxprice();
|
||
norigtaxprice = norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNorigtaxprice(norigtaxprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigprice = sourceBVO.getNorigprice();
|
||
norigprice = norigprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNorigprice(norigprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigtaxnetprice = sourceBVO.getNorigtaxnetprice();
|
||
norigtaxnetprice = norigtaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNorigtaxnetprice(norigtaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norignetprice = sourceBVO.getNorignetprice();
|
||
norignetprice = norignetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNorignetprice(norignetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nmny = sourceBVO.getNmny();
|
||
nmny = nmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNmny(nmny);
|
||
targetBVO.setNcaltaxmny(nmny);// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD>Ҽ<EFBFBD>˰<EFBFBD>ϼ<EFBFBD>
|
||
UFDouble ntaxmny = sourceBVO.getNtaxmny();
|
||
ntaxmny = ntaxmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNtaxmny(ntaxmny);
|
||
// ˰<><CBB0>
|
||
UFDouble ntax = sourceBVO.getNtax();
|
||
ntax = ntax.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNtax(ntax);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigmny = sourceBVO.getNorigmny();
|
||
norigmny = norigmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNorigmny(norigmny);
|
||
// <20><>˰<EFBFBD>ϼ<EFBFBD>
|
||
UFDouble norigtaxmny = sourceBVO.getNorigtaxmny();
|
||
norigtaxmny = norigtaxmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNorigtaxmny(norigtaxmny);
|
||
// <20><><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqttaxprice = sourceBVO.getNqttaxprice();
|
||
nqttaxprice = nqttaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqttaxprice(nqttaxprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtprice = sourceBVO.getNqtprice();
|
||
nqtprice = nqtprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqtprice(nqtprice);
|
||
// <20><><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqttaxnetprice = sourceBVO.getNqttaxnetprice();
|
||
nqttaxnetprice = nqttaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqttaxnetprice(nqttaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtnetprice = sourceBVO.getNqtnetprice();
|
||
nqtnetprice = nqtnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNqtnetprice(nqtnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble ntaxprice = sourceBVO.getNtaxprice();
|
||
ntaxprice = ntaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNtaxprice(ntaxprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nprice = sourceBVO.getNprice();
|
||
nprice = nprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNprice(nprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble ntaxnetprice = sourceBVO.getNtaxnetprice();
|
||
ntaxnetprice = ntaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNtaxnetprice(ntaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nnetprice = sourceBVO.getNnetprice();
|
||
nnetprice = nnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNnetprice(nnetprice);
|
||
String measrate = "1/1";
|
||
if (StringUtils.isNotEmpty(targetBVO.getVchangerate())) {
|
||
measrate = targetBVO.getVchangerate();
|
||
}
|
||
// targetBVO.setVchangerate(measrate);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// targetBVO.setVqtunitrate(measrate);// <20><><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble[] measrateNums = HslParseUtil.parseHsl(measrate);
|
||
UFDouble measrateNum = UFDouble.ONE_DBL;
|
||
if (null != measrateNums && measrateNums.length != 0) {
|
||
measrateNum = measrateNums[0].div(measrateNums[1]).setScale(2, 4);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble nnum = sourceBVO.getNnum().setScale(2, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNnum(nnum);
|
||
UFDouble nastnum = nnum.multiply(measrateNum).setScale(2, UFDouble.ROUND_HALF_UP);
|
||
targetBVO.setNastnum(nastnum);// <20><><EFBFBD><EFBFBD>
|
||
targetBVO.setNqtunitnum(nastnum);// <20><><EFBFBD>۵<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||
|
||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ֵ
|
||
String vbdef1 = sourceBVO.getVbdef1();// <20><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>
|
||
Map<String, String> defList = getDefList("zdy-001");
|
||
targetBVO.setVbdef1(defList.getOrDefault(vbdef1, ""));
|
||
String vbdef5 = sourceBVO.getVbdef5();// <20><>ͬ<EFBFBD><CDAC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD>
|
||
defList.clear();
|
||
defList = getDefList("BIP-ddh");
|
||
targetBVO.setVbdef5(defList.getOrDefault(vbdef5, ""));
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ֶε<D6B6>setter<65><72><EFBFBD><EFBFBD>
|
||
targetBVO.setVbdef10(sourceBVO.getVbdef10()); // <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
|
||
targetBVO.setVbdef13(sourceBVO.getVbdef13()); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
|
||
targetBVO.setVbdef14(sourceBVO.getVbdef14()); // <20><>ͬ<EFBFBD><CDAC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸid
|
||
targetBVO.setVbdef18(sourceBVO.getVbdef18()); // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||
targetBVO.setVbdef22(sourceBVO.getVbdef22()); // <20><><EFBFBD>ڲɹ<DAB2><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (StringUtils.isNotEmpty(sourceBVO.getCrowno())) {
|
||
targetBVO.setCrowno(sourceBVO.getCrowno()); // <20>к<EFBFBD>
|
||
}
|
||
if (StringUtils.isNotEmpty(sourceBVO.getVbdef19())) {
|
||
targetBVO.setVbdef19(sourceBVO.getVbdef19()); // <20>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
}
|
||
if (StringUtils.isNotEmpty(sourceBVO.getVbdef20())) {
|
||
targetBVO.setVbdef20(sourceBVO.getVbdef20()); // <20>ƻ<EFBFBD><C6BB>깤<EFBFBD><EAB9A4><EFBFBD><EFBFBD>
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* <20><>ȡ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||
*/
|
||
private Map<String, String> getDefList(String code) {
|
||
Map<String, String> map = new HashMap<String, String>();
|
||
String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='" + code
|
||
+ "' and dr=0 ) and dr = 0";
|
||
try {
|
||
DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere);
|
||
if (defdocVOs != null && defdocVOs.length > 0) {
|
||
for (DefdocVO defdocVO : defdocVOs) {
|
||
map.put(defdocVO.getCode().trim(), defdocVO.getPk_defdoc());
|
||
}
|
||
}
|
||
} catch (DAOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
return map;
|
||
|
||
}
|
||
|
||
@Override
|
||
public void delete(String[] hids) throws BusinessException {
|
||
BillQuery<SaleOrderVO> queryTool = new BillQuery<SaleOrderVO>(SaleOrderVO.class);
|
||
SaleOrderVO[] saleOrderVOs = (SaleOrderVO[]) queryTool.query(hids);
|
||
if (saleOrderVOs.length == 0) {
|
||
ExceptionUtils.wrappBusinessException("<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δƥ<EFBFBD>䵽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
|
||
PfServiceScmUtil.processBatch("DELETE", SOBillType.Order.getCode(), saleOrderVOs, null, null);
|
||
}
|
||
|
||
private void fillcustomervidbyoid(SaleOrderVO[] combinBillVOs) {
|
||
Set<String> customeridSet = new HashSet<String>();
|
||
Map<String, String> customeridMap = new HashMap<String, String>();
|
||
for (SaleOrderVO vo : combinBillVOs) {
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
|
||
if (!StringUtil.isSEmptyOrNull(hvo.getCcustomerid()) && StringUtil.isSEmptyOrNull(hvo.getCcustomervid())) {
|
||
customeridSet.add(hvo.getCcustomerid());
|
||
}
|
||
|
||
if (!StringUtil.isSEmptyOrNull(hvo.getCinvoicecustid())
|
||
&& StringUtil.isSEmptyOrNull(hvo.getCinvoicecustvid())) {
|
||
customeridSet.add(hvo.getCinvoicecustid());
|
||
}
|
||
|
||
if (!StringUtil.isSEmptyOrNull(hvo.getChreceivecustid())
|
||
&& StringUtil.isSEmptyOrNull(hvo.getChreceivecustvid())) {
|
||
customeridSet.add(hvo.getChreceivecustid());
|
||
}
|
||
|
||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||
for (SaleOrderBVO bvo : bvos) {
|
||
|
||
if (!StringUtil.isSEmptyOrNull(bvo.getCreceivecustid())
|
||
&& StringUtil.isSEmptyOrNull(bvo.getCreceivecustvid())) {
|
||
customeridSet.add(bvo.getCreceivecustid());
|
||
}
|
||
|
||
if (!StringUtil.isSEmptyOrNull(bvo.getCvendorid()) && StringUtil.isSEmptyOrNull(bvo.getCvendorvid())) {
|
||
customeridSet.add(bvo.getCvendorid());
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!customeridSet.isEmpty()) {
|
||
customeridMap = CustomerPubService
|
||
.queryCustomerVidsByOids((String[]) CollectionUtils.setToArray(customeridSet));
|
||
}
|
||
|
||
for (SaleOrderVO vo : combinBillVOs) {
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
|
||
if (!StringUtil.isSEmptyOrNull(hvo.getCcustomerid()) && StringUtil.isSEmptyOrNull(hvo.getCcustomervid())) {
|
||
if (null == customeridMap || customeridMap.size() == 0) {
|
||
hvo.setCcustomervid(hvo.getCcustomerid());
|
||
} else {
|
||
hvo.setCcustomervid((String) customeridMap.get(hvo.getCcustomerid()));
|
||
}
|
||
}
|
||
|
||
if (!StringUtil.isSEmptyOrNull(hvo.getCinvoicecustid())
|
||
&& StringUtil.isSEmptyOrNull(hvo.getCinvoicecustvid())) {
|
||
if (null == customeridMap || customeridMap.size() == 0) {
|
||
hvo.setCinvoicecustvid(hvo.getCinvoicecustid());
|
||
} else {
|
||
hvo.setCinvoicecustvid((String) customeridMap.get(hvo.getCinvoicecustid()));
|
||
}
|
||
}
|
||
|
||
if (!StringUtil.isSEmptyOrNull(hvo.getChreceivecustid())
|
||
&& StringUtil.isSEmptyOrNull(hvo.getChreceivecustvid())) {
|
||
if (null == customeridMap || customeridMap.size() == 0) {
|
||
hvo.setChreceivecustvid(hvo.getChreceivecustid());
|
||
} else {
|
||
hvo.setChreceivecustvid((String) customeridMap.get(hvo.getChreceivecustid()));
|
||
}
|
||
}
|
||
|
||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||
for (SaleOrderBVO bvo : bvos) {
|
||
|
||
if (!StringUtil.isSEmptyOrNull(bvo.getCreceivecustid())
|
||
&& StringUtil.isSEmptyOrNull(bvo.getCreceivecustvid())) {
|
||
if (null == customeridMap || customeridMap.size() == 0) {
|
||
bvo.setCreceivecustvid(bvo.getCreceivecustid());
|
||
} else {
|
||
bvo.setCreceivecustvid((String) customeridMap.get(bvo.getCreceivecustid()));
|
||
}
|
||
}
|
||
|
||
if (!StringUtil.isSEmptyOrNull(bvo.getCvendorid()) && StringUtil.isSEmptyOrNull(bvo.getCvendorvid())) {
|
||
if (null == customeridMap || customeridMap.size() == 0) {
|
||
bvo.setCvendorvid(bvo.getCvendorid());
|
||
} else {
|
||
bvo.setCvendorvid((String) customeridMap.get(bvo.getCvendorid()));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public SaleOrderVO[] sendApprove(String[] hids) throws BusinessException {
|
||
SaleOrderVO[] vos = querySaleOrder(hids);
|
||
try {
|
||
for (SaleOrderVO aggvo : vos) {
|
||
SaleOrderHVO parentVO = aggvo.getParentVO();
|
||
if (!BillStatus.FREE.equalsValue(parentVO.getFstatusflag())) {
|
||
ExceptionUtils.wrappBusinessException("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + parentVO.getVbillcode() + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ");
|
||
}
|
||
}
|
||
return (SaleOrderVO[]) PfServiceScmUtil.processBatch("SAVE", SOBillType.Order.getCode(), vos, null, null);
|
||
} catch (Exception e) {
|
||
ExceptionUtils.marsh(e);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public SaleOrderVO[] unSendApprove(String[] hids) throws BusinessException {
|
||
SaleOrderVO[] vos = querySaleOrder(hids);
|
||
try {
|
||
for (SaleOrderVO aggvo : vos) {
|
||
SaleOrderHVO parentVO = aggvo.getParentVO();
|
||
if (!BillStatus.AUDITING.equalsValue(parentVO.getFstatusflag())) {
|
||
ExceptionUtils.wrappBusinessException("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + parentVO.getVbillcode() + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>");
|
||
}
|
||
}
|
||
return (SaleOrderVO[]) PfServiceScmUtil.processBatch("UNSAVE", SOBillType.Order.getCode(), vos, null, null);
|
||
} catch (Exception e) {
|
||
ExceptionUtils.marsh(e);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public SaleOrderVO[] approve(String[] hids) throws BusinessException {
|
||
SaleOrderVO[] vos = querySaleOrder(hids);
|
||
try {
|
||
for (SaleOrderVO aggvo : vos) {
|
||
SaleOrderHVO parentVO = aggvo.getParentVO();
|
||
if (!BillStatus.FREE.equalsValue(parentVO.getFstatusflag())
|
||
&& !BillStatus.AUDIT.equalsValue(parentVO.getFstatusflag())
|
||
&& !BillStatus.AUDITING.equalsValue(parentVO.getFstatusflag())) {
|
||
ExceptionUtils.wrappBusinessException("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + parentVO.getVbillcode() + "״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
}
|
||
return (SaleOrderVO[]) PfServiceScmUtil.processBatch("APPROVE", SOBillType.Order.getCode(), vos, null,
|
||
null);
|
||
} catch (Exception e) {
|
||
ExceptionUtils.marsh(e);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public SaleOrderVO[] unApprove(String[] hids) throws BusinessException {
|
||
SaleOrderVO[] vos = querySaleOrder(hids);
|
||
try {
|
||
for (SaleOrderVO aggvo : vos) {
|
||
SaleOrderHVO parentVO = aggvo.getParentVO();
|
||
if (!BillStatus.AUDIT.equalsValue(parentVO.getFstatusflag())
|
||
&& !BillStatus.AUDITING.equalsValue(parentVO.getFstatusflag())) {
|
||
ExceptionUtils.wrappBusinessException("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + parentVO.getVbillcode() + "״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
}
|
||
return (SaleOrderVO[]) PfServiceScmUtil.processBatch("UNAPPROVE", SOBillType.Order.getCode(), vos, null,
|
||
null);
|
||
} catch (Exception e) {
|
||
ExceptionUtils.marsh(e);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
private SaleOrderVO[] querySaleOrder(String[] hids) throws BusinessException {
|
||
ISaleOrderQueryAPI service = (ISaleOrderQueryAPI) NCLocator.getInstance().lookup(ISaleOrderQueryAPI.class);
|
||
SaleOrderVO[] vos = service.queryVOByIDs(hids);
|
||
if (ArrayUtils.isEmpty(vos)) {
|
||
ExceptionUtils.wrappBusinessException("û<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
} else {
|
||
return vos;
|
||
}
|
||
return null;
|
||
}
|
||
|
||
/**
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||
*/
|
||
private void setMaterl(SaleOrderBVO bVO) {
|
||
String cmaterialvid = bVO.getCmaterialvid();
|
||
// UFDouble nnum = bVO.getNnum();
|
||
UFDouble ntaxrate = bVO.getNtaxrate();
|
||
try {
|
||
String sql = " select a.pk_material,a.pk_source, a.pk_measdoc cunitid,nvl(b.pk_measdoc,a.pk_measdoc) castunitid,nvl(b.measrate,'1/1') measrate "
|
||
+ "from bd_material a left join bd_materialconvert b on a.pk_material=b.pk_material "
|
||
+ "where a.code='" + cmaterialvid + "' ";
|
||
Map map = (Map) getDao().executeQuery(sql, new MapProcessor());
|
||
if (map == null) {
|
||
throw new BusinessException(cmaterialvid + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>鵽");
|
||
}
|
||
// NCCForUAPLogger.debug(String.format("setMaterl: cqtunitid = [%S], cunitid = [%S], castunitid = [%S]",
|
||
// map.get("cqtunitid"), map.get("cunitid"), map.get("castunitid")));
|
||
bVO.setAttributeValue("castunitid", map.get("castunitid"));
|
||
bVO.setAttributeValue("vchangerate", map.get("vchangerate"));
|
||
|
||
// <20><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
bVO.setAttributeValue("cqtunitid", map.get("cunitid"));
|
||
bVO.setAttributeValue("cunitid", map.get("cunitid"));
|
||
|
||
bVO.setAttributeValue("cmaterialid", map.get("pk_material"));
|
||
bVO.setAttributeValue("cmaterialvid", map.get("pk_material"));
|
||
bVO.setVchangerate(map.get("measrate") + "");// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
bVO.setVqtunitrate(map.get("measrate") + "");// <20><><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
// UFDouble nqtunitnum = BFPubTools.getUFDouble_NullAsZero(nnum)
|
||
// .div(BFPubTools.getUFDouble_NullAsZero(map.get("measrate").toString().split("/")[0]));
|
||
// bVO.setAttributeValue("nqtunitnum", nqtunitnum);
|
||
|
||
sql = "select sl.pk_taxcode from bd_taxrate sl inner join bd_taxcode sm on sl.pk_taxcode=sm.pk_taxcode where sl.taxrate="
|
||
+ ntaxrate + " and sm.pk_group<>'~' ";
|
||
|
||
String o_pk_project = (String) getDao().executeQuery(sql, new ColumnProcessor());
|
||
// ˰<><CBB0>
|
||
bVO.setAttributeValue("ctaxcodeid", o_pk_project);
|
||
} catch (BusinessException e) {
|
||
Logger.error("APISaleOrderMaitainImpl-setMaterl:" + e.getMessage());
|
||
throw new RuntimeException(e);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* <20><>ȡ<EFBFBD><C8A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>Ϣ
|
||
*
|
||
* @param pk_material
|
||
* @return
|
||
* @throws BusinessException
|
||
*/
|
||
private Map<String, Object> getMaterlInfo(String pk_material) throws BusinessException {
|
||
if (pk_material == null || pk_material.isEmpty()) {
|
||
return null;
|
||
}
|
||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||
String sql = " select nvl(measrate, '1/1') measrate" +
|
||
" from bd_materialconvert" +
|
||
" where pk_material='" + pk_material + "' ";
|
||
return (Map<String, Object>) queryBS.executeQuery(sql, new MapProcessor());
|
||
}
|
||
|
||
/**
|
||
* <20><EFBFBD><DEB6><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
private void addBvo(SaleOrderVO[] oldVOs, List<Map<String, Object>> paramList) {
|
||
try {
|
||
SaleOrderVO[] copyVOs = new SaleOrderVO[oldVOs.length];
|
||
for (int i = 0; i < oldVOs.length; i++) {
|
||
copyVOs[i] = (SaleOrderVO) oldVOs[i].clone();
|
||
}
|
||
// <20><> vos <20>е<EFBFBD>Ԫ<EFBFBD>ذ<EFBFBD><D8B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2> Map <20><>
|
||
Map<String, SaleOrderVO> vosMap = new HashMap<>();
|
||
for (SaleOrderVO vo : copyVOs) {
|
||
vosMap.put(vo.getParentVO().getCsaleorderid(), vo);
|
||
}
|
||
for (Map<String, Object> objectMap : paramList) {
|
||
Map<String, Object> headdata = (Map<String, Object>) objectMap.get("so_saleorder");
|
||
String primaryKey = headdata.getOrDefault("csaleorderid", "") + "";
|
||
SaleOrderVO vo = vosMap.get(primaryKey);
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
String csaleorderid = hvo.getCsaleorderid();
|
||
String ybpk = hvo.getCorigcurrencyid();
|
||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
||
SaleOrderBVO oneBvo = vo.getChildrenVO()[0];
|
||
|
||
List<Object> bodyArr = (List<Object>) objectMap.get("so_saleorder_b");
|
||
for (Object body : bodyArr) {
|
||
Map<String, Object> bodydata = (Map<String, Object>) body;
|
||
if ("add".equals(bodydata.get("status"))) {
|
||
String pk_group = AppContext.getInstance().getPkGroup();
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʵ<EFBFBD><CAB5>
|
||
SaleOrderBVO newBvo = new SaleOrderBVO();
|
||
newBvo.setStatus(VOStatus.NEW);
|
||
newBvo.setAttributeValue("pk_group", pk_group);
|
||
String cprojectid = bodydata.get("cprojectid") + "";
|
||
if (oneBvo != null && oneBvo.getCprojectid() != null && !"".equals(oneBvo.getCprojectid())) {
|
||
cprojectid = oneBvo.getCprojectid();
|
||
} else {
|
||
String sql = " select pk_project from bd_project where project_code='" + cprojectid
|
||
+ "' and nvl(dr,0)=0 ";
|
||
cprojectid = (String) getDao().executeQuery(sql, new ColumnProcessor());
|
||
}
|
||
newBvo.setAttributeValue("cprojectid", cprojectid);
|
||
|
||
newBvo.setAttributeValue("ctaxcountryid", "CN");
|
||
newBvo.setAttributeValue("crececountryid", "CN");
|
||
newBvo.setAttributeValue("csendcountryid", "CN");
|
||
|
||
newBvo.setAttributeValue("fbuysellflag", 1);
|
||
// <20>۱<EFBFBD><DBB1><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble nexchangerateBip = getUFDouble_NullAsOne(bodydata.get("nexchangerate"));
|
||
newBvo.setNexchangerate(nexchangerateBip);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĹ<CFB5><C4B9><EFBFBD><EFBFBD>ֶε<D6B6>ֵ
|
||
newBvo.setCmaterialvid(bodydata.get("cmaterialvid") + "");
|
||
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);
|
||
// <20>к<EFBFBD>
|
||
newBvo.setCrowno(bodydata.get("crowno") + "");
|
||
// <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ʒ
|
||
String blargessflag = bodydata.getOrDefault("blargessflag", "N") + "";
|
||
newBvo.setBlargessflag(UFBoolean.valueOf(blargessflag));
|
||
|
||
setMaterl(newBvo);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(4λ)<29>ͽ<EFBFBD><CDBD><EFBFBD>(2λ)
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigtaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtorigtaxprice"));
|
||
nqtorigtaxprice = nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqtorigtaxprice(nqtorigtaxprice);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtorigprice"));
|
||
nqtorigprice = nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqtorigprice(nqtorigprice);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorigtaxnetprc = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtorigtaxnetprc"));
|
||
nqtorigtaxnetprc = nqtorigtaxnetprc.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqtorigtaxnetprc(nqtorigtaxnetprc);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtorignetprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtorignetprice"));
|
||
nqtorignetprice = nqtorignetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqtorignetprice(nqtorignetprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigtaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigtaxprice"));
|
||
norigtaxprice = norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNorigtaxprice(norigtaxprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigprice"));
|
||
norigprice = norigprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNorigprice(norigprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigtaxnetprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigtaxnetprice"));
|
||
norigtaxnetprice = norigtaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNorigtaxnetprice(norigtaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norignetprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norignetprice"));
|
||
norignetprice = norignetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNorignetprice(norignetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nmny = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nmny"));
|
||
nmny = nmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNmny(nmny);
|
||
newBvo.setNcaltaxmny(nmny);// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD>Ҽ<EFBFBD>˰<EFBFBD>ϼ<EFBFBD>
|
||
UFDouble ntaxmny = BFPubTools.getUFDouble_NullAsZero(bodydata.get("ntaxmny"));
|
||
ntaxmny = ntaxmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNtaxmny(ntaxmny);
|
||
// ˰<><CBB0>
|
||
UFDouble ntax = BFPubTools.getUFDouble_NullAsZero(bodydata.get("ntax"));
|
||
ntax = ntax.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNtax(ntax);
|
||
// <20><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble norigmny = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigmny"));
|
||
norigmny = norigmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNorigmny(norigmny);
|
||
// <20><>˰<EFBFBD>ϼ<EFBFBD>
|
||
UFDouble norigtaxmny = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigtaxmny"));
|
||
norigtaxmny = norigtaxmny.setScale(2, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNorigtaxmny(norigtaxmny);
|
||
// <20><><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqttaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqttaxprice"));
|
||
nqttaxprice = nqttaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqttaxprice(nqttaxprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtprice"));
|
||
nqtprice = nqtprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqtprice(nqtprice);
|
||
// <20><><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqttaxnetprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqttaxnetprice"));
|
||
nqttaxnetprice = nqttaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqttaxnetprice(nqttaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nqtnetprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtnetprice"));
|
||
nqtnetprice = nqtnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNqtnetprice(nqtnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble ntaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("ntaxprice"));
|
||
ntaxprice = ntaxprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNtaxprice(ntaxprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nprice"));
|
||
nprice = nprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNprice(nprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble ntaxnetprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("ntaxnetprice"));
|
||
ntaxnetprice = ntaxnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNtaxnetprice(ntaxnetprice);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
|
||
UFDouble nnetprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nnetprice"));
|
||
nnetprice = nnetprice.setScale(4, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNnetprice(nnetprice);
|
||
String measrate = "1/1";
|
||
if (StringUtils.isNotEmpty(newBvo.getVchangerate())) {
|
||
measrate = newBvo.getVchangerate();
|
||
}
|
||
// newBvo.setVchangerate(measrate);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// newBvo.setVqtunitrate(measrate);// <20><><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble[] measrateNums = HslParseUtil.parseHsl(measrate);
|
||
UFDouble measrateNum = UFDouble.ONE_DBL;
|
||
if (null != measrateNums && measrateNums.length != 0) {
|
||
measrateNum = measrateNums[0].div(measrateNums[1]).setScale(2, 4);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble nnum = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nnum")).setScale(2, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNnum(nnum);
|
||
UFDouble nastnum = nnum.multiply(measrateNum).setScale(2, UFDouble.ROUND_HALF_UP);
|
||
newBvo.setNastnum(nastnum);// <20><><EFBFBD><EFBFBD>
|
||
newBvo.setNqtunitnum(nastnum);// <20><><EFBFBD>۵<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||
|
||
// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ֵ
|
||
String vbdef1 = bodydata.getOrDefault("vbdef1", "") + "";// <20><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>
|
||
Map<String, String> defList = getDefList("zdy-001");
|
||
newBvo.setVbdef1(defList.getOrDefault(vbdef1, ""));
|
||
String vbdef5 = bodydata.getOrDefault("vbdef5", "") + "";// <20><>ͬ<EFBFBD><CDAC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD>
|
||
defList.clear();
|
||
defList = getDefList("BIP-ddh");
|
||
newBvo.setVbdef5(defList.getOrDefault(vbdef5, ""));
|
||
newBvo.setVbdef10(bodydata.getOrDefault("vbdef10", "") + "");// <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
|
||
newBvo.setVbdef13(bodydata.getOrDefault("vbdef13", "") + "");// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
|
||
newBvo.setVbdef22(bodydata.getOrDefault("vbdef22", "") + "");// <20><><EFBFBD>ڲɹ<DAB2><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
bvoList.add(newBvo);
|
||
}
|
||
}
|
||
|
||
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
||
vo.setChildrenVO(array);
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
||
new SaleOrderSaveFillValue().setDefValue1(copyVOs);
|
||
Map<String, List<SaleOrderBVO>> listMap = new HashMap<>();
|
||
for (SaleOrderVO copyVO : copyVOs) {
|
||
List<SaleOrderBVO> newBvoList = new ArrayList<>();
|
||
for (SaleOrderBVO saleOrderBVO : copyVO.getChildrenVO()) {
|
||
if (VOStatus.NEW == saleOrderBVO.getStatus()) {
|
||
SaleOrderBVO newBvo = (SaleOrderBVO) saleOrderBVO.clone();
|
||
newBvoList.add(newBvo);
|
||
}
|
||
}
|
||
listMap.put(copyVO.getParentVO().getCsaleorderid(), newBvoList);
|
||
}
|
||
if (!listMap.isEmpty()) {
|
||
for (SaleOrderVO oldVO : oldVOs) {
|
||
String csaleorderid = oldVO.getParentVO().getCsaleorderid();
|
||
SaleOrderBVO oneBvo = oldVO.getChildrenVO()[0];
|
||
// <20>۱<EFBFBD><DBB1><EFBFBD><EFBFBD><EFBFBD>
|
||
UFDouble nexchangerate = oneBvo.getNexchangerate();
|
||
nexchangerate = getUFDouble_NullAsOne(nexchangerate);
|
||
List<SaleOrderBVO> newBvoList = listMap.get(csaleorderid);
|
||
if (newBvoList != null && !newBvoList.isEmpty()) {
|
||
// <20>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5>ʱ<EFBFBD><CAB1>ȡ<EFBFBD><C8A1>ϵͳ<CFB5><CDB3>Ĭ<EFBFBD>ϻ<EFBFBD><CFBB>ʣ<EFBFBD><CAA3><EFBFBD>Ҫ<EFBFBD><D2AA>BIP<49><50><EFBFBD><EFBFBD>
|
||
for (SaleOrderBVO saleOrderBVO : newBvoList) {
|
||
saleOrderBVO.setNexchangerate(nexchangerate);
|
||
}
|
||
SaleOrderBVO[] bvos = oldVO.getChildrenVO();
|
||
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
bvoList.addAll(newBvoList);
|
||
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
||
oldVO.setChildrenVO(array);
|
||
}
|
||
|
||
}
|
||
}
|
||
/*
|
||
* for (SaleOrderVO combinBillVO : copyVOs) { for (SaleOrderBVO saleOrderBVO :
|
||
* combinBillVO.getChildrenVO()) { // <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪJSON<4F>ַ<EFBFBD><D6B7><EFBFBD> String jsonString =
|
||
* JSON.toJSONString(saleOrderBVO); NCCForUAPLogger.debug("jsonString:" +
|
||
* jsonString); } }
|
||
*/
|
||
|
||
} catch (Exception e) {
|
||
Logger.error("APISaleOrderMaitainImpl-addBvo:" + e.getMessage());
|
||
throw new RuntimeException(e);
|
||
}
|
||
}
|
||
|
||
private UFDouble getUFDouble_NullAsOne(Object value) {
|
||
if ((value == null) || (value.toString().trim().equals("")) || (value.toString().trim().equals("~")))
|
||
return UFDouble.ONE_DBL;
|
||
if ((value instanceof UFDouble))
|
||
return (UFDouble) value;
|
||
if ((value instanceof BigDecimal)) {
|
||
return new UFDouble((BigDecimal) value);
|
||
}
|
||
return new UFDouble(value.toString().trim());
|
||
}
|
||
|
||
/**
|
||
* <20><>дBIP<49>콢<EFBFBD><ECBDA2><EFBFBD>ĺ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD>
|
||
*
|
||
* @author mzr
|
||
* @date 2025/5/23
|
||
*/
|
||
@Override
|
||
public void updateBipFlagSo(Map<String, Object> paramMap) throws Exception {
|
||
String csaleorderbid = (String) paramMap.get("csaleorderbid");
|
||
Map<String, Object> soMap = getSaleOrderInfo(csaleorderbid);
|
||
if (soMap == null) {
|
||
return;
|
||
}
|
||
// <20><EFBFBD><DEB8><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD> vdef8 MES<45><53><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
||
if (paramMap.containsKey("vdef8")) {
|
||
String orderSql = "update so_saleorder set vdef8 = '[vdef8]' where csaleorderid = '[csaleorderid]'";
|
||
orderSql = orderSql.replace("[vdef8]", paramMap.getOrDefault("vdef8", "") + "");
|
||
orderSql = orderSql.replace("[csaleorderid]", soMap.getOrDefault("csaleorderid", "") + "");
|
||
int num1 = getDao().executeUpdate(orderSql);
|
||
NCCForUAPLogger.debug("updateDef-num1:" + num1);
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BOM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䡢<EFBFBD><E4A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
|
||
if (!paramMap.containsKey("vbdef16") && !paramMap.containsKey("vbdef17")) {
|
||
return;
|
||
}
|
||
// <20><><EFBFBD><EFBFBD>û<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>д
|
||
if (soMap.get("vbdef11") == null || soMap.get("vdef9") == null) {
|
||
return;
|
||
}
|
||
Map<String, String> bipParamMap = checkBipParam();
|
||
if (bipParamMap.isEmpty()) {
|
||
return;
|
||
}
|
||
String baseUrl = bipParamMap.get("baseUrl");
|
||
String soUpdateUrl = bipParamMap.get("contractSaleOrder");
|
||
if (StringUtils.isEmpty(soUpdateUrl)) {
|
||
return;
|
||
}
|
||
String accessToken = getAccessToken(baseUrl, bipParamMap);
|
||
Map<String, String> tokenParam = new HashMap<>();
|
||
tokenParam.put("access_token", accessToken);
|
||
Map<String, String> headers = new HashMap<>();
|
||
headers.put("Content-Type", "application/json");
|
||
String updateUrl = baseUrl + soUpdateUrl;
|
||
JSONObject bodyJson = new JSONObject();
|
||
JSONObject updateJson = new JSONObject();
|
||
List<Map<String, Object>> l_map_f = new ArrayList<>();
|
||
Map<String, Object> map = new HashMap<>();
|
||
// bomConfigureFinishDate BOM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
String vbdef16 = convertDateString(paramMap.get("vbdef16") + "");
|
||
map.put("bomConfigureFinishDate", vbdef16);
|
||
// craftConfigureFinishDate <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
String vbdef17 = convertDateString(paramMap.get("vbdef17") + "");
|
||
map.put("craftConfigureFinishDate", vbdef17);
|
||
// BIP<49><50>ͬ<EFBFBD><CDAC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӱ<EFBFBD>id
|
||
map.put("id", soMap.get("vbdef11"));
|
||
l_map_f.add(map);
|
||
updateJson.put("contractOrdersList", l_map_f);
|
||
// BIP<49><50>ͬ<EFBFBD><CDAC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>id
|
||
updateJson.put("id", soMap.get("vdef9"));
|
||
JSONArray array = new JSONArray();
|
||
array.add(updateJson);
|
||
bodyJson.put("HTXSDD", array);
|
||
NCCForUAPLogger.debug("updateBipFlagSo-bodyJson:" + bodyJson);
|
||
Logger.error("updateBipFlagSo-bodyJson:" + bodyJson);
|
||
String resultString = doSendHttp(updateUrl, "POST", tokenParam, "", headers, bodyJson.toJSONString());
|
||
NCCForUAPLogger.debug("updateBipFlagSo-resultString:" + resultString);
|
||
Logger.error("updateBipFlagSo-resultString:" + resultString);
|
||
}
|
||
|
||
private Map<String, Object> getSaleOrderInfo(String csaleorderbid) throws BusinessException {
|
||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||
String sql = " select s.vdef9,s.csaleorderid," +
|
||
" sb.csaleorderbid,sb.vbdef11" +
|
||
" from so_saleorder_b sb" +
|
||
" inner join so_saleorder s on sb.csaleorderid=s.csaleorderid" +
|
||
" where sb.csaleorderbid='" + csaleorderbid + "' ";
|
||
return (Map<String, Object>) queryBS.executeQuery(sql, new MapProcessor());
|
||
}
|
||
|
||
private Map<String, String> checkBipParam() {
|
||
Map<String, String> map = new HashMap<String, String>();
|
||
String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='BIP-sq' and dr=0 ) and dr=0";
|
||
try {
|
||
DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere);
|
||
if (defdocVOs != null && defdocVOs.length > 0) {
|
||
for (DefdocVO defdocVO : defdocVOs) {
|
||
map.put(defdocVO.getCode().trim(), defdocVO.getName());
|
||
}
|
||
}
|
||
} catch (DAOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
return map;
|
||
|
||
}
|
||
|
||
private String getAccessToken(String baseUrl, Map<String, String> bipParamMap) throws Exception {
|
||
String tokenUrl = baseUrl + "/iuap-api-auth/open-auth/selfAppAuth/getAccessToken";
|
||
// String appKey = "f10c4bf17b1d4e1fb08eb82bf8540eab";
|
||
String appKey = bipParamMap.get("appKey");
|
||
|
||
// String appSecret = "71dc2a58ca378c1a1143231a62e73e75a60e9236";
|
||
String appSecret = bipParamMap.get("appSecret");
|
||
String accessToken = "";
|
||
Map<String, String> params = new HashMap<>();
|
||
|
||
|
||
params.put("appKey", appKey);
|
||
String timestamp = String.valueOf(System.currentTimeMillis());
|
||
params.put("timestamp", timestamp);
|
||
// <20><><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>
|
||
Map<String, String> treeMap;
|
||
if (params instanceof TreeMap) {
|
||
treeMap = params;
|
||
} else {
|
||
treeMap = new TreeMap<>(params);
|
||
}
|
||
StringBuilder stringBuilder = new StringBuilder();
|
||
for (Map.Entry<String, String> entry : treeMap.entrySet()) {
|
||
stringBuilder.append(entry.getKey()).append(entry.getValue());
|
||
}
|
||
Mac mac = Mac.getInstance("HmacSHA256");
|
||
|
||
mac.init(new SecretKeySpec(appSecret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
|
||
byte[] signData = mac.doFinal(stringBuilder.toString().getBytes(StandardCharsets.UTF_8));
|
||
String base64String = Base64.getEncoder().encodeToString(signData);
|
||
String signature = URLEncoder.encode(base64String, "UTF-8");
|
||
params.put("signature", signature);
|
||
|
||
String responseString = doGet(tokenUrl, params);
|
||
|
||
Gson gson = new Gson();
|
||
Map result = gson.fromJson(responseString, Map.class);
|
||
if (com.yonyou.cloud.utils.StringUtils.equals("00000", result.get("code").toString())) {
|
||
Map<String, Object> tokenInfo = (Map<String, Object>) result.get("data");
|
||
accessToken = (String) tokenInfo.get("access_token");
|
||
|
||
}
|
||
return accessToken;
|
||
}
|
||
|
||
public static String doSendHttp(String baseUrl, String method, Map<String, String> paramMap, String mediaType, Map<String, String> headers, String json) {
|
||
HttpURLConnection urlConnection = null;
|
||
InputStream in = null;
|
||
OutputStream out = null;
|
||
BufferedReader bufferedReader = null;
|
||
String result = null;
|
||
try {
|
||
StringBuilder sb = new StringBuilder();
|
||
sb.append(baseUrl);
|
||
if (paramMap != null) {
|
||
sb.append("?");
|
||
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
|
||
String key = entry.getKey();
|
||
String value = entry.getValue();
|
||
sb.append(key).append("=").append(value).append("&");
|
||
baseUrl = sb.substring(0, sb.toString().length() - 1);
|
||
}
|
||
}
|
||
URL urlobj = new URL(baseUrl);
|
||
if ("https".equalsIgnoreCase(urlobj.getProtocol())) {// <20>ж<EFBFBD><D0B6><EFBFBD>ַ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD><CEB9><EFBFBD><EFBFBD><EFBFBD>SslUtil
|
||
IgnoreSslUtil.ignoreSsl();
|
||
}
|
||
urlConnection = (HttpURLConnection) urlobj.openConnection();
|
||
urlConnection.setConnectTimeout(50000);
|
||
urlConnection.setRequestMethod(method);
|
||
urlConnection.setDoInput(true);
|
||
urlConnection.setUseCaches(false);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||
if (headers != null && !headers.isEmpty()) {
|
||
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
||
urlConnection.addRequestProperty(entry.getKey(), entry.getValue());
|
||
// log.error("Request Header: " + entry.getKey() + ": " + entry.getValue());
|
||
}
|
||
}
|
||
if (json != null && !json.isEmpty()) {
|
||
// log.error("Request Body: " + json);
|
||
urlConnection.setDoInput(true);
|
||
urlConnection.setDoOutput(true);
|
||
out = urlConnection.getOutputStream();
|
||
out.write(json.getBytes(StandardCharsets.UTF_8));
|
||
out.flush();
|
||
}
|
||
int resCode = urlConnection.getResponseCode();
|
||
String ecod = urlConnection.getContentEncoding();
|
||
if (resCode == HttpURLConnection.HTTP_OK || resCode == HttpURLConnection.HTTP_CREATED
|
||
|| resCode == HttpURLConnection.HTTP_ACCEPTED) {
|
||
if (com.yonyou.cloud.utils.StringUtils.isNotEmpty(ecod) && ecod.equals("gzip")) {
|
||
in = new GZIPInputStream(urlConnection.getInputStream());
|
||
} else {
|
||
in = urlConnection.getInputStream();
|
||
}
|
||
} else {
|
||
in = urlConnection.getErrorStream();
|
||
}
|
||
bufferedReader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
|
||
StringBuilder temp = new StringBuilder();
|
||
String line = bufferedReader.readLine();
|
||
while (line != null) {
|
||
temp.append(line).append("\r\n");
|
||
line = bufferedReader.readLine();
|
||
}
|
||
if (ecod == null || ecod.equals("gzip")) {
|
||
ecod = StandardCharsets.UTF_8.name();
|
||
}
|
||
result = new String(temp.toString().getBytes(StandardCharsets.UTF_8), ecod);
|
||
} catch (Exception e) {
|
||
JSONObject js = new JSONObject();
|
||
js.put("", -1);
|
||
js.put("message", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD>ӿ<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>" + e.getMessage());
|
||
result = js.toString();
|
||
e.printStackTrace();
|
||
} finally {
|
||
if (null != bufferedReader) {
|
||
try {
|
||
bufferedReader.close();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
if (null != out) {
|
||
try {
|
||
out.close();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
if (null != in) {
|
||
try {
|
||
in.close();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
urlConnection.disconnect();
|
||
}
|
||
return result;
|
||
}
|
||
|
||
private static String doGet(String path, Map<String, String> params) throws Exception {
|
||
HttpURLConnection conn = null;
|
||
InputStream is = null;
|
||
BufferedReader br = null;
|
||
StringBuilder result = new StringBuilder();
|
||
try {
|
||
if (params != null) {
|
||
String paramStr = "";
|
||
for (String key : params.keySet()) {
|
||
if (!paramStr.isEmpty()) {
|
||
paramStr += '&';
|
||
}
|
||
paramStr += key + '=' + params.get(key);
|
||
}
|
||
|
||
if (path.indexOf('?') > 0) {
|
||
path += '&' + paramStr;
|
||
} else {
|
||
path += '?' + paramStr;
|
||
}
|
||
}
|
||
// <20><><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>url<72><6C><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
|
||
URL url = new URL(path);
|
||
if ("https".equalsIgnoreCase(url.getProtocol())) {// <20>ж<EFBFBD><D0B6><EFBFBD>ַ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD><CEB9><EFBFBD><EFBFBD><EFBFBD>SslUtil
|
||
IgnoreSslUtil.ignoreSsl();
|
||
}
|
||
// ͨ<><CDA8>Զ<EFBFBD><D4B6>url<72><6C><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>ǿת<C7BF><D7AA>HTTPURLConnection<6F><6E>
|
||
conn = (HttpURLConnection) url.openConnection();
|
||
conn.setRequestMethod("GET");
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD>Ͷ<EFBFBD>ȡ<EFBFBD><C8A1>ʱʱ<CAB1><CAB1>
|
||
conn.setConnectTimeout(120000);
|
||
conn.setReadTimeout(120000);
|
||
conn.setRequestProperty("Accept", "application/json");
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
conn.connect();
|
||
// ͨ<><CDA8>connȡ<6E><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Reader<65><72>ȡ
|
||
if (200 == conn.getResponseCode()) {
|
||
is = conn.getInputStream();
|
||
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
||
String line;
|
||
while ((line = br.readLine()) != null) {
|
||
result.append(line);
|
||
System.out.println(line);
|
||
}
|
||
} else {
|
||
System.out.println("ResponseCode is an error code:" + conn.getResponseCode());
|
||
}
|
||
} catch (MalformedURLException e) {
|
||
e.printStackTrace();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return result.toString();
|
||
}
|
||
|
||
/**
|
||
* ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||
* yyyy-MM-dd HH:mm:ss to yyyy-MM-dd
|
||
*
|
||
* @param input <20><><EFBFBD><EFBFBD>
|
||
* @return {@link String}
|
||
*/
|
||
public String convertDateString(String input) throws BusinessException {
|
||
if (com.yonyou.cloud.utils.StringUtils.isEmpty(input) || "null".equals(input)) {
|
||
return input;
|
||
}
|
||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||
try {
|
||
Date date = formatter.parse(input);
|
||
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||
return localDate.format(dtf);
|
||
} catch (ParseException e) {
|
||
throw new BusinessException("Invalid date format", e);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶεı仯
|
||
*
|
||
* @param newVO
|
||
* @param oldVO
|
||
* @throws BusinessException
|
||
*/
|
||
private void checkSaleOrderChange(SaleOrderVO newVO, SaleOrderVO oldVO) throws BusinessException {
|
||
/**
|
||
* 1.ʵ<><CAB5><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD> >0
|
||
* <20><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,У<><D0A3> <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EEB2BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD>
|
||
* 2.<2E>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & <20>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD> >0
|
||
* <20><EFBFBD><DEB8>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EEB2BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EEA3AC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ѿ<EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>ж<EFBFBD><D0B6>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>0);
|
||
* 3.ʵ<><CAB5><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD> >0
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EEB2BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EEA3AC><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||
* 4.<2E>ۼƳ<DBBC><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> or <20>ۼư<DBBC><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> or <20>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >0
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD>滻<EFBFBD><E6BBBB><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>(ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ӱ<EFBFBD>VO<56><4F>dr<64><72>ֵ1,0<><30>ʾδɾ<CEB4><C9BE>);
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>С<EFBFBD><D0A1> <20>ۼƳ<DBBC><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ۼư<DBBC><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ۼ<EFBFBD><DBBC>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* <20>н<EFBFBD><D0BD><EFBFBD><EEB2BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
|
||
* 5.<2E>ۼư<DBBC><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & <20>ۼ<EFBFBD><DBBC>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >0
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>С<EFBFBD><D0A1> <20>ۼ<EFBFBD><DBBC>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
/**
|
||
* <20>ֶν<D6B6><CEBD><EFBFBD>:
|
||
* <20>к<EFBFBD> crowno
|
||
* <20><><EFBFBD><EFBFBD>id cmaterialvid
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> nnum
|
||
* <20>н<EFBFBD><D0BD><EFBFBD> norigtaxmny
|
||
* <20><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD> ntotalorigmny
|
||
* ʵ<><CAB5><EFBFBD>տ<EFBFBD>/<2F><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD> nreceivedmny
|
||
* <20>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ntotalinvoicenum
|
||
* <20>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD> ntotalarmny
|
||
* <20>ۼƳ<DBBC><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ntotaloutnum
|
||
* <20>ۼư<DBBC><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> narrangemonum
|
||
* <20>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ntotalsendnum
|
||
* <20>ۼ<EFBFBD><DBBC>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vbdef12
|
||
*/
|
||
if (newVO == null || oldVO == null) return;
|
||
|
||
SaleOrderHVO newHead = newVO.getParentVO();
|
||
SaleOrderHVO oldHead = oldVO.getParentVO();
|
||
SaleOrderBVO[] newBodies = newVO.getChildrenVO();
|
||
SaleOrderBVO[] oldBodies = oldVO.getChildrenVO();
|
||
|
||
// 1. <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||
UFDouble newNtotalorigmny = newHead.getNtotalorigmny();
|
||
UFDouble newNreceivedmny = newHead.getNreceivedmny();
|
||
if (newNreceivedmny != null && newNreceivedmny.doubleValue() > 0) {
|
||
if (newNtotalorigmny == null || newNtotalorigmny.doubleValue() < newNreceivedmny.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
}
|
||
|
||
// <20>¾ɱ<C2BE><C9B1><EFBFBD>ӳ<EFBFBD><D3B3>
|
||
Map<String, SaleOrderBVO> oldBodyMap = new HashMap<>();
|
||
for (SaleOrderBVO oldBody : oldBodies) {
|
||
oldBodyMap.put(oldBody.getCsaleorderbid(), oldBody);
|
||
}
|
||
|
||
for (SaleOrderBVO newBody : newBodies) {
|
||
String bid = newBody.getCsaleorderbid();
|
||
SaleOrderBVO oldBody = oldBodyMap.get(bid);
|
||
if (oldBody == null) continue; // <20><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>У<EFBFBD><D0A3>
|
||
|
||
// У<><D0A3><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||
String newCmaterialvid = newBody.getCmaterialvid();
|
||
String oldCmaterialvid = oldBody.getCmaterialvid();
|
||
UFDouble newNnum = newBody.getNnum();
|
||
UFDouble oldNnum = oldBody.getNnum();
|
||
UFDouble newNorigtaxmny = newBody.getNorigtaxmny();
|
||
UFDouble oldNorigtaxmny = oldBody.getNorigtaxmny();
|
||
|
||
UFDouble ntotalinvoicenum = BFPubTools.getUFDouble_NullAsZero(newBody.getNtotalinvoicenum());
|
||
UFDouble ntotalarmny = BFPubTools.getUFDouble_NullAsZero(newBody.getNtotalarmny());
|
||
UFDouble ntotaloutnum = BFPubTools.getUFDouble_NullAsZero(newBody.getNtotaloutnum());
|
||
UFDouble narrangemonum = BFPubTools.getUFDouble_NullAsZero(newBody.getNarrangemonum());
|
||
UFDouble ntotalsendnum = BFPubTools.getUFDouble_NullAsZero(newBody.getNtotalsendnum());
|
||
UFDouble vbdef12 = BFPubTools.getUFDouble_NullAsZero(newBody.getVbdef12());
|
||
String crowno = newBody.getCrowno();
|
||
|
||
// 1. <20><EFBFBD><DEB8><EFBFBD>У<EFBFBD><D0A3>
|
||
if (VOStatus.UPDATED == newBody.getStatus()) {
|
||
// 1.1 <20>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & <20>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD> >0
|
||
if ((ntotalinvoicenum != null && ntotalinvoicenum.doubleValue() > 0) ||
|
||
(ntotalarmny != null && ntotalarmny.doubleValue() > 0)) {
|
||
if (ntotalinvoicenum != null && ntotalinvoicenum.doubleValue() > 0) {
|
||
if (newNnum == null || newNnum.doubleValue() < ntotalinvoicenum.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + newNnum + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ۼƿ<DBBC>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + ntotalinvoicenum + ")");
|
||
}
|
||
}
|
||
if (ntotalarmny != null && ntotalarmny.doubleValue() > 0) {
|
||
if (newNorigtaxmny == null || newNorigtaxmny.doubleValue() < ntotalarmny.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>(" + newNorigtaxmny + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD>(" + ntotalarmny + ")");
|
||
}
|
||
}
|
||
}
|
||
|
||
// 1.2 <20>ۼƳ<DBBC><C6B3><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||
boolean hasOutOrArrange = (ntotaloutnum != null && ntotaloutnum.doubleValue() > 0) ||
|
||
(narrangemonum != null && narrangemonum.doubleValue() > 0) ||
|
||
(ntotalsendnum != null && ntotalsendnum.doubleValue() > 0);
|
||
if (hasOutOrArrange) {
|
||
if (newNnum != null && oldNnum != null && newNnum.doubleValue() < oldNnum.doubleValue()) {
|
||
if (ntotaloutnum != null && ntotaloutnum.doubleValue() > 0 && newNnum.doubleValue() < ntotaloutnum.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + newNnum + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ۼƳ<DBBC><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + ntotaloutnum + ")");
|
||
}
|
||
if (narrangemonum != null && narrangemonum.doubleValue() > 0 && newNnum.doubleValue() < narrangemonum.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + newNnum + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ۼư<DBBC><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + narrangemonum + ")");
|
||
}
|
||
if (ntotalsendnum != null && ntotalsendnum.doubleValue() > 0 && newNnum.doubleValue() < ntotalsendnum.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + newNnum + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + ntotalsendnum + ")");
|
||
}
|
||
/*if (vbdef12 != null && vbdef12.doubleValue() > 0 && newNnum.doubleValue() < vbdef12.doubleValue()) {
|
||
throw new BusinessException("<22>к<EFBFBD>:" + crowno + ", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + newNnum + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ۼ<EFBFBD><DBBC>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + vbdef12 + ")");
|
||
}*/
|
||
}
|
||
// <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||
if (ntotalarmny != null && ntotalarmny.doubleValue() > 0) {
|
||
UFDouble minAmount = ntotalarmny;
|
||
if (newNreceivedmny != null && newNreceivedmny.doubleValue() > 0) {
|
||
minAmount = ntotalarmny.doubleValue() < newNreceivedmny.doubleValue() ? ntotalarmny : newNreceivedmny;
|
||
}
|
||
if (newNorigtaxmny == null || newNorigtaxmny.doubleValue() < minAmount.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20>н<EFBFBD><D0BD><EFBFBD>(" + newNorigtaxmny + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ(" + minAmount + ")");
|
||
}
|
||
}
|
||
// 1.4 <20><><EFBFBD><EFBFBD><EFBFBD>滻У<E6BBBB><D0A3>
|
||
if (StringUtils.isNotEmpty(oldCmaterialvid) && !newCmaterialvid.equals(oldCmaterialvid)) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ",<2C><><EFBFBD><EFBFBD><EFBFBD>ۼƳ<DBBC><C6B3><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
}
|
||
// 1.3 <20>ۼư<DBBC><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> & <20>ۼ<EFBFBD><DBBC>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >0
|
||
if ((narrangemonum != null && narrangemonum.doubleValue() > 0) &&
|
||
(vbdef12 != null && vbdef12.doubleValue() > 0)) {
|
||
if (newNnum != null && oldNnum != null && newNnum.doubleValue() < oldNnum.doubleValue()) {
|
||
if (newNnum.doubleValue() < vbdef12.doubleValue()) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD>ֵ(" + newNnum + ")<29><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ۼ<EFBFBD><DBBC>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(" + vbdef12 + ")");
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
// 2. ɾ<><C9BE><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||
if (VOStatus.DELETED == newBody.getStatus()) {
|
||
if (ntotalinvoicenum != null && ntotalinvoicenum.doubleValue() > 0) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ѿ<EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
if ((ntotaloutnum != null && ntotaloutnum.doubleValue() > 0) ||
|
||
(narrangemonum != null && narrangemonum.doubleValue() > 0) ||
|
||
(ntotalsendnum != null && ntotalsendnum.doubleValue() > 0)
|
||
) {
|
||
throw new BusinessException("<EFBFBD>к<EFBFBD>:" + crowno + ", <20><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼƳ<DBBC><C6B3>⡢<EFBFBD><E2A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>");
|
||
}
|
||
}
|
||
// 3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||
if (VOStatus.NEW == newBody.getStatus()) {
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* <20><><EFBFBD>¹<EFBFBD><C2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>
|
||
*
|
||
* @param vos <20><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
private void updateRelatedBill(SaleOrderVO[] vos) throws BusinessException {
|
||
HYPubBO hypub = new HYPubBO();
|
||
for (SaleOrderVO vo : vos) {
|
||
SaleOrderHVO hvo = vo.getParentVO();
|
||
String csaleorderid = hvo.getCsaleorderid();// <20><><EFBFBD>۶<EFBFBD><DBB6><EFBFBD>ID
|
||
String ccustomerid = hvo.getCcustomerid();
|
||
String ccustomervid = hvo.getCcustomervid();
|
||
String cemployeeid = hvo.getCemployeeid();
|
||
String cdeptid = hvo.getCdeptid();
|
||
String cdeptvid = hvo.getCdeptvid();
|
||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||
// ͬ<><CDAC><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD>ڲɹ<DAB2><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for (SaleOrderBVO bvo : bvos) {
|
||
String csaleorderbid = bvo.getCsaleorderbid();
|
||
// Դͷ<D4B4><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸID<49><44>vfirstbid<69><64>
|
||
if (csaleorderbid == null || csaleorderbid.isEmpty()) {
|
||
continue; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD>µ<EFBFBD><C2B5>ֶ<EFBFBD>
|
||
String vbdef13 = bvo.getVbdef13(); // vbdef13 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
|
||
String vbdef22 = bvo.getVbdef22(); // vbdef22 <20><><EFBFBD>ڲɹ<DAB2><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (StringUtils.isEmpty(vbdef13) && StringUtils.isEmpty(vbdef22)) {
|
||
continue;
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>и<EFBFBD><D0B8><EFBFBD>SQL
|
||
String updateSql = "UPDATE mm_mo SET vdef8 = '[vdef8]', vdef14 = '[vdef14]' WHERE vfirstbid = '[bid]'";
|
||
if (StringUtils.isEmpty(vbdef13)) {
|
||
vbdef13 = "~";
|
||
}
|
||
if (StringUtils.isEmpty(vbdef22)) {
|
||
vbdef22 = "~";
|
||
}
|
||
updateSql = updateSql.replace("[vdef8]", vbdef13);
|
||
updateSql = updateSql.replace("[vdef14]", vbdef22);
|
||
updateSql = updateSql.replace("[bid]", csaleorderbid);
|
||
try {
|
||
getDao().executeUpdate(updateSql);
|
||
} catch (Exception e) {
|
||
ExceptionUtils.wrappBusinessException("so-updateRelatedBill-exp: " + e.getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* <20>տδ<EEB5A5><CEB4><EFBFBD><EFBFBD>ƾ֤ʱ,ͬ<><CDAC><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<D5BF>IJ<EFBFBD><C4B2>š<EFBFBD><C5A1><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ͻ<EFBFBD>
|
||
* <20><><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD>Դͷ<D4B4><CDB7><EFBFBD><EFBFBD>id<69><64>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>տ<D5BF><EEB5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ƾ֤<C6BE><D6A4>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֵΪ<D6B5><CEAA><EFBFBD>۶<EFBFBD><DBB6><EFBFBD>ͬ<EFBFBD>ֶε<D6B6>ֵ
|
||
* <20>տ<D5BF><EEB5A5>ƾ֤<C6BE>Ĺ<EFBFBD>ϵ<EFBFBD><CFB5>ѯ<EFBFBD><D1AF>
|
||
* <20><><EFBFBD>ݺ<EFBFBD>ƾ֤<C6BE>Ĺ<EFBFBD><C4B9><EFBFBD> <20><>ѯ`fip_relation`<60><><EFBFBD><EFBFBD>֪<EFBFBD><D6AA>src_relationid <20><><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
SqlBuilder strWhere = new SqlBuilder();
|
||
strWhere.append("src_billid", csaleorderid);
|
||
GatheringBillItemVO[] payItemVOS = (GatheringBillItemVO[]) hypub.queryByCondition(GatheringBillItemVO.class, strWhere.toString());
|
||
if (null != payItemVOS) {
|
||
Set<String> billIds = new HashSet<>();
|
||
for (GatheringBillItemVO itemVO : payItemVOS) {
|
||
// <20><>ѯ<EFBFBD>տ<D5BF>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƾ֤
|
||
String countSql = "SELECT count(1) FROM fip_relation "
|
||
+ " WHERE dr = 0 and src_relationid = '[billId]' ";
|
||
countSql = countSql.replace("[billId]", itemVO.getPk_gatherbill());
|
||
Integer num = (Integer) getDao().executeQuery(countSql, new ColumnProcessor());
|
||
if (num > 0) {
|
||
continue;
|
||
}
|
||
// <20><EFBFBD><DEB8>տ<D5BF>ӱ<EFBFBD>
|
||
itemVO.setPk_psndoc(cemployeeid);
|
||
itemVO.setCustomer(ccustomerid);
|
||
itemVO.setPk_deptid(cdeptid);
|
||
itemVO.setPk_deptid_v(cdeptvid);
|
||
itemVO.setStatus(VOStatus.UPDATED);
|
||
hypub.update(itemVO);
|
||
billIds.add(itemVO.getPk_gatherbill());
|
||
}
|
||
if (!billIds.isEmpty()) {
|
||
// <20><EFBFBD><DEB8>տ
|
||
for (String billId : billIds) {
|
||
GatheringBillVO billVO = (GatheringBillVO) hypub.queryByPrimaryKey(GatheringBillVO.class, billId);
|
||
billVO.setPk_psndoc(cemployeeid);
|
||
billVO.setCustomer(ccustomerid);
|
||
billVO.setPk_deptid(cdeptid);
|
||
billVO.setPk_deptid_v(cdeptvid);
|
||
billVO.setStatus(VOStatus.UPDATED);
|
||
hypub.update(billVO);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Ӧ<>յ<EFBFBD>δ<EFBFBD><CEB4>Чʱ,ͬ<><CDAC><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۷<EFBFBD>Ʊ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>(<28><><EFBFBD>ۺ<EFBFBD><DBBA><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ա<EFBFBD><D4B1><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ͻ<EFBFBD>
|
||
* <20><><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD>Դͷ<D4B4><CDB7><EFBFBD><EFBFBD>id<69><64>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۷<EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD>յ<EFBFBD><D5B5>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>δ<EFBFBD><CEB4>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֵΪ<D6B5><CEAA><EFBFBD>۶<EFBFBD><DBB6><EFBFBD>ͬ<EFBFBD>ֶε<D6B6>ֵ
|
||
*/
|
||
SqlBuilder strWhereInv = new SqlBuilder();
|
||
strWhereInv.append("cfirstid", csaleorderid);
|
||
SaleInvoiceBVO[] invoiceBVOS = (SaleInvoiceBVO[]) hypub.queryByCondition(SaleInvoiceBVO.class, strWhereInv.toString());
|
||
if (null != invoiceBVOS) {
|
||
Set<String> billIds = new HashSet<>();
|
||
for (SaleInvoiceBVO invoiceBVO : invoiceBVOS) {
|
||
// <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD>
|
||
String csrcbid = invoiceBVO.getCsrcbid() != null ? invoiceBVO.getCsrcbid() : "~";
|
||
// ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD><DBB6><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>vo
|
||
SaleOrderBVO soBvo = Arrays.stream(bvos)
|
||
.filter(bvo -> csrcbid.equals(bvo.getCsaleorderbid()))
|
||
.findFirst()
|
||
.orElse(null);
|
||
invoiceBVO.setCordercustid(ccustomerid);
|
||
invoiceBVO.setCordercustvid(ccustomervid);
|
||
invoiceBVO.setCdeptid(cdeptid);
|
||
invoiceBVO.setCdeptvid(cdeptvid);
|
||
invoiceBVO.setCemployeeid(cemployeeid);
|
||
if (soBvo != null) {
|
||
invoiceBVO.setCmaterialid(soBvo.getCmaterialid());
|
||
invoiceBVO.setCmaterialvid(soBvo.getCmaterialvid());
|
||
invoiceBVO.setCastunitid(soBvo.getCastunitid());
|
||
invoiceBVO.setCunitid(soBvo.getCunitid());
|
||
invoiceBVO.setVchangerate(soBvo.getVchangerate());
|
||
invoiceBVO.setCqtunitid(soBvo.getCqtunitid());
|
||
invoiceBVO.setVqtunitrate(soBvo.getVqtunitrate());
|
||
}
|
||
invoiceBVO.setStatus(VOStatus.UPDATED);
|
||
hypub.update(invoiceBVO);
|
||
billIds.add(invoiceBVO.getCsaleinvoiceid());
|
||
}
|
||
if (!billIds.isEmpty()) {
|
||
// <20><EFBFBD><DEB8><EFBFBD><EFBFBD>۷<EFBFBD>Ʊ<EFBFBD><C6B1>
|
||
for (String billId : billIds) {
|
||
SaleInvoiceHVO invoiceHVO = (SaleInvoiceHVO) hypub.queryByPrimaryKey(SaleInvoiceHVO.class, billId);
|
||
invoiceHVO.setCsaleinvoiceid(billId);
|
||
invoiceHVO.setCinvoicecustid(ccustomerid);
|
||
invoiceHVO.setCinvoicecustvid(ccustomervid);
|
||
invoiceHVO.setStatus(VOStatus.UPDATED);
|
||
hypub.update(invoiceHVO);
|
||
}
|
||
}
|
||
}
|
||
// ͬ<><CDAC><EFBFBD><EFBFBD>Ӧ<EFBFBD>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2>š<EFBFBD>ҵ<EFBFBD><D2B5>Ա<EFBFBD><D4B1><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ͻ<EFBFBD>
|
||
for (SaleOrderBVO saleOrderBVO : bvos) {
|
||
SqlBuilder recWhere = new SqlBuilder();
|
||
recWhere.append("src_itemid", saleOrderBVO.getCsaleorderbid());
|
||
ReceivableBillItemVO[] receivableBillItemVOS = (ReceivableBillItemVO[]) hypub.queryByCondition(ReceivableBillItemVO.class, recWhere.toString());
|
||
if (null != receivableBillItemVOS) {
|
||
for (ReceivableBillItemVO itemVO : receivableBillItemVOS) {
|
||
String pkRecbill = itemVO.getPk_recbill();// Ӧ<>յ<EFBFBD>id
|
||
ReceivableBillVO billVO = (ReceivableBillVO) hypub.queryByPrimaryKey(ReceivableBillVO.class, pkRecbill);
|
||
if (billVO != null) {
|
||
// Ӧ<>յ<EFBFBD>δ<EFBFBD><CEB4>Ч<EFBFBD><D0A7>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>
|
||
if (billVO.getEffectstatus() != 10) {
|
||
itemVO.setPk_deptid(cdeptid);
|
||
itemVO.setPk_deptid_v(cdeptvid);
|
||
itemVO.setPk_psndoc(cemployeeid);
|
||
itemVO.setCustomer(ccustomerid);
|
||
itemVO.setCustomer_v(ccustomervid);
|
||
itemVO.setMaterial(saleOrderBVO.getCmaterialid());
|
||
itemVO.setMaterial_src(saleOrderBVO.getCmaterialid());
|
||
itemVO.setStatus(VOStatus.UPDATED);
|
||
hypub.update(itemVO);
|
||
// <20><EFBFBD>Ӧ<EFBFBD>յ<EFBFBD>
|
||
billVO.setPk_deptid(cdeptid);
|
||
billVO.setPk_deptid_v(cdeptvid);
|
||
billVO.setPk_psndoc(cemployeeid);
|
||
billVO.setCustomer(ccustomerid);
|
||
billVO.setCustomer_v(ccustomervid);
|
||
billVO.setStatus(VOStatus.UPDATED);
|
||
hypub.update(billVO);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
}
|