package nc.bs.mmpac.wr.rule.serialno;

import nc.bs.framework.common.NCLocator;
import nc.bs.mmpac.pmo.pac0002.bp.query.PMOItemVOQueryBP;
import nc.bs.mmpac.wr.rule.serialno.doc.WrSerialNoDocInsertControl;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.mmpac.pickm.IPickmMaintainService;
import nc.md.persist.framework.IMDPersistenceQueryService;
import nc.util.mmf.framework.base.MMValueCheck;
import nc.util.mmpac.wr.vochange.WrBusiVOToChangeVO;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.mmpac.wr.entity.AggWrChangeVO;
import nc.vo.mmpac.wr.entity.AggWrVO;
import nc.vo.mmpac.wr.entity.WrItemVO;
import nc.vo.pub.BusinessException;

import java.util.ArrayList;

public class PickMFinishRule extends Object implements IRule<AggWrVO> {
	public void process(AggWrVO[] vos) {
		if (MMValueCheck.isEmpty(vos)) {
			return;
		}
		/**
		 * 业务逻辑： 1.根据生产报告子表中生产订单行查看生产订单明细表 2.查看生产订单明细行的状态是否为完工（2）
		 * 3.若为完工状态，则根据生成报告子表中生产订单行查询备料计划 4.修改备料计划为完成状态（3）
		 */
//		for (int i = 0; i < vos.length; i++) {
//			AggWrVO vo = vos[i];
//			WrItemVO[] items = vo.getChildrenVO();
//			// 循环生产报告子表
//			for (int j = 0; j < items.length; j++) {
//				WrItemVO item = items[j];
//				String cbmobid = item.getCbmobid();
//				String[] keys = { cbmobid };
//				// 生产订单行查询
//				PMOItemVO[] pmoItemvos = (new PMOItemVOQueryBP()).getPMOItemVOsByids(keys);
//				// 查看生产订单行状态是否为完工（2）
//				if (pmoItemvos.length > 0) {
//					PMOItemVO pmoItem = pmoItemvos[0];
//					int fitemStatus = pmoItem.getFitemstatus();
//					if (fitemStatus != 2) {
//						continue;
//					}
//					// 根据生产订单行查询备料计划
////         		BillQuery<AggPickmVO> query = new BillQuery<AggPickmVO>(AggPickmVO.class);
////         		AggPickmVO[] aggVOs = (AggPickmVO[])query.query(keys);
//
//					String whereSql = "nvl(mm_pickm.dr,0) = 0 and mm_pickm.vsourcemorowid = '" + cbmobid + "'";
//					IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance()
//							.lookup(IMDPersistenceQueryService.class);
//					// 根据主键查询得到aggvo
//					try {
//						@SuppressWarnings("unchecked")
//						ArrayList<AggPickmVO> aggVOs = (ArrayList<AggPickmVO>) aggvoQueryService
//								.queryBillOfVOByCond(AggPickmVO.class, whereSql, true, false);
//						if (aggVOs.size() <= 0) {
//							continue;
//						}
//						// 数组转换
//						AggPickmVO[] aggVOsArr = new AggPickmVO[aggVOs.size()];
//						boolean flag = false;
//						for (int z = 0; z < aggVOs.size(); z++) {
//							AggPickmVO aggPickmVO = aggVOs.get(z);
//							PickmHeadVO pickmHeadVO = aggPickmVO.getParentVO();
//							Integer fbillstatus = pickmHeadVO.getFbillstatus();
//							if (fbillstatus != 2) {
//								aggVOsArr[z] = aggVOs.get(z);
//								flag = true;
//							}
//
//						}
//						if (flag) {
//							// 备料计划完工
//							IPickmMaintainService ipickmMaintainService = NCLocator.getInstance()
//									.lookup(IPickmMaintainService.class);
//							ipickmMaintainService.finishPickm(aggVOsArr);
//						}
//					} catch (BusinessException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					}
//
//				}
//
//			}
//		}
//		AggWrChangeVO[] aggChangeVOs = WrBusiVOToChangeVO.changeOnlySerialNoVO(vos);
//
//		WrSerialNoDocInsertControl inSertControl = new WrSerialNoDocInsertControl();
//		inSertControl.process(aggChangeVOs);
	}
}
