解决跟进采购订单生成到货单校验问题-张鑫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