taikai2312/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java

1951 lines
96 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}
}
}
}
}
}