解决跟进采购订单生成到货单校验问题-张鑫0408
This commit is contained in:
parent
5e9839b804
commit
5030af533f
|
@ -0,0 +1,158 @@
|
||||||
|
package nccloud.api.impl.pu.m23;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.bs.pf.pub.PfDataCache;
|
||||||
|
import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil;
|
||||||
|
import nc.itf.uap.pf.IPfExchangeService;
|
||||||
|
import nc.pubimpl.pu.m23.api.ProduceDateSetForArrival;
|
||||||
|
import nc.ui.pub.print.version55.util.DeepClone;
|
||||||
|
import nc.vo.pu.m21.entity.OrderItemVO;
|
||||||
|
import nc.vo.pu.m21.entity.OrderVO;
|
||||||
|
import nc.vo.pu.m23.entity.ArriveHeaderVO;
|
||||||
|
import nc.vo.pu.m23.entity.ArriveItemVO;
|
||||||
|
import nc.vo.pu.m23.entity.ArriveVO;
|
||||||
|
import nc.vo.pu.m23.rule.api.check.PUArriveVONullValidate;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.pub.billtype.BilltypeVO;
|
||||||
|
import nc.vo.pubapp.AppContext;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
import nc.vo.pubapp.pattern.pub.MathTool;
|
||||||
|
import nc.vo.scmpub.check.billvalidate.BillVOsCheckRule;
|
||||||
|
import nccloud.api.impl.pu.m23.fill.ArriveSaveFromOrder;
|
||||||
|
import nccloud.api.impl.pu.m23.util.queryFromOrder;
|
||||||
|
import nccloud.api.pu.m23.IAPIPuArriveMaitain;
|
||||||
|
import nccloud.openapi.scmpub.pub.TransferCodeToPKTool;
|
||||||
|
import nccloud.openapi.scmpub.pub.TransferMapToVOTool;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* zhangxinah 解决参照采购订单生成到货单校验过早的问题
|
||||||
|
* 2312
|
||||||
|
*/
|
||||||
|
public class APIPuArriveMaitainImpl implements IAPIPuArriveMaitain {
|
||||||
|
public ArriveVO[] saveFromOrder(List<Map<String, Object>> paramList) throws BusinessException {
|
||||||
|
ArriveVO[] arriveVOs = null;
|
||||||
|
ArriveVO[] saveVOs = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<ArriveVO> aggVOList = TransferMapToVOTool.transferMapToAggVO(paramList, ArriveVO.class);
|
||||||
|
|
||||||
|
ArriveVO[] vos = (ArriveVO[]) aggVOList.toArray(new ArriveVO[aggVOList.size()]);
|
||||||
|
|
||||||
|
aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList);
|
||||||
|
|
||||||
|
HashSet<String> pk_order = new HashSet<String>();
|
||||||
|
for (ArriveVO vo : vos) {
|
||||||
|
for (ArriveItemVO itemVO : vo.getBVO()) {
|
||||||
|
pk_order.add(itemVO.getCsourceid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OrderVO[] orderVOs = (new queryFromOrder()).query((String[]) pk_order.toArray(new String[0]));
|
||||||
|
calNumAndMny(orderVOs);
|
||||||
|
|
||||||
|
IPfExchangeService service = (IPfExchangeService) NCLocator.getInstance().lookup(IPfExchangeService.class);
|
||||||
|
arriveVOs = (ArriveVO[]) service.runChangeDataAry("21", "23", orderVOs, null);
|
||||||
|
|
||||||
|
BillVOsCheckRule checker = new BillVOsCheckRule(new PUArriveVONullValidate());
|
||||||
|
checker.check(arriveVOs);
|
||||||
|
|
||||||
|
Map<String, ArriveHeaderVO> destiHMap = new HashMap<String, ArriveHeaderVO>();
|
||||||
|
for (ArriveVO arriveVO : arriveVOs) {
|
||||||
|
destiHMap.put(arriveVO.getBVO()[0].getCsourceid(), arriveVO.getHVO());
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, ArriveItemVO> destiItemMap = new HashMap<String, ArriveItemVO>();
|
||||||
|
for (ArriveVO arriveVO : arriveVOs) {
|
||||||
|
for (ArriveItemVO arriveItemVO : arriveVO.getBVO()) {
|
||||||
|
destiItemMap.put(arriveItemVO.getCsourcebid(), arriveItemVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveVOs = new ArriveVO[vos.length];
|
||||||
|
for (int i = 0; i < saveVOs.length; i++) {
|
||||||
|
saveVOs[i] = new ArriveVO();
|
||||||
|
|
||||||
|
saveVOs[i].setHVO((ArriveHeaderVO) destiHMap.get(vos[i].getBVO()[0].getCsourceid()));
|
||||||
|
ArriveItemVO[] itemvos = new ArriveItemVO[vos[i].getBVO().length];
|
||||||
|
for (int j = 0; j < itemvos.length; j++) {
|
||||||
|
|
||||||
|
itemvos[j] = (ArriveItemVO) DeepClone.clone(destiItemMap.get(vos[i].getBVO()[j].getCsourcebid()));
|
||||||
|
}
|
||||||
|
saveVOs[i].setBVO(itemvos);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < vos.length; i++) {
|
||||||
|
|
||||||
|
ArriveHeaderVO HVO = vos[i].getHVO();
|
||||||
|
|
||||||
|
ArriveItemVO[] BVO = vos[i].getBVO();
|
||||||
|
|
||||||
|
for (String key : HVO.getAttributeNames()) {
|
||||||
|
|
||||||
|
if (null != HVO.getAttributeValue(key)) {
|
||||||
|
saveVOs[i].getHVO().setAttributeValue(key, HVO.getAttributeValue(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 0; j < BVO.length; j++) {
|
||||||
|
for (String key : BVO[j].getAttributeNames()) {
|
||||||
|
|
||||||
|
if (null != BVO[j].getAttributeValue(key)) {
|
||||||
|
saveVOs[i].getBVO()[j].setAttributeValue(key, BVO[j].getAttributeValue(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ArriveVO saveVO : saveVOs) {
|
||||||
|
|
||||||
|
int rowNum = 0;
|
||||||
|
ArriveItemVO[] bvos = saveVO.getBVO();
|
||||||
|
for (int i = 0; i < bvos.length; i++) {
|
||||||
|
rowNum++;
|
||||||
|
bvos[i].setCrowno("" + rowNum * 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
BilltypeVO trantypeVO = PfDataCache.getBillTypeInfo(AppContext.getInstance().getPkGroup(),
|
||||||
|
saveVO.getHVO().getVtrantypecode());
|
||||||
|
saveVO.getHVO().setCtrantypeid(trantypeVO.getPk_billtypeid());
|
||||||
|
}
|
||||||
|
|
||||||
|
(new ArriveSaveFromOrder()).setDefaultValue(saveVOs);
|
||||||
|
|
||||||
|
(new ProduceDateSetForArrival()).setProduceDate(saveVOs);
|
||||||
|
|
||||||
|
saveVOs = (ArriveVO[]) PfServiceScmUtil.processBatch("SAVEBASE", "23", saveVOs, null, null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
return saveVOs;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void calNumAndMny(OrderVO[] vos) {
|
||||||
|
for (OrderVO vo : vos) {
|
||||||
|
OrderItemVO[] bvos = vo.getBVO();
|
||||||
|
for (OrderItemVO bvo : bvos) {
|
||||||
|
|
||||||
|
if (bvo.getNnopayorgmny() == null) {
|
||||||
|
bvo.setNnopayorgmny(MathTool.sub(bvo.getNtaxmny(), bvo.getNacccancelinvmny()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bvo.getNcanarrivenum() == null) {
|
||||||
|
bvo.setNcanarrivenum(MathTool.sub(bvo.getNnum(), bvo.getNaccumarrvnum()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bvo.getNcaninnum() == null) {
|
||||||
|
bvo.setNcaninnum(MathTool.sub(bvo.getNnum(), bvo.getNaccumstorenum()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bvo.getNcaninvoicenum() == null)
|
||||||
|
bvo.setNcaninvoicenum(MathTool.sub(bvo.getNnum(), bvo.getNaccuminvoicenum()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue