package nc.bs.mmpac.pmo.pac0002.rule;

import nc.bs.framework.common.NCLocator;
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.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.pub.BusinessException;

import java.util.ArrayList;

public class PMOToFinishPickMRule
        extends Object
        implements IRule<PMOAggVO>{
    public void process(PMOAggVO[] vos) {
        if (MMValueCheck.isEmpty(vos)) {
            return;
        }
        /**
         *  业务逻辑：
         *			1.循环生产订单明细表
         *			2.查看生产订单明细行的状态是否为完工（2）
         *			3.若为完工状态，则根据生产订单明细表中生产订单行查询备料计划
         *			4.修改备料计划为完成状态（3）
         */
        //20250514弃用
//        for(int i = 0; i < vos.length; i++) {
//            PMOAggVO vo = vos[i];
//            PMOItemVO[] items =  vo.getChildrenVO();
//            //循环生产订单明细
//            for(int j = 0; j < items.length; j++) {
//                PMOItemVO item = items[j];
//                //查看生产订单行状态是否为完工（2）
//                int fitemStatus = item.getFitemstatus();
//                if(fitemStatus != 2) {
//                    continue;
//                }
//                //根据生产订单行查询备料计划
//                String cmoid = item.getCmoid();
//                String whereSql = "nvl(mm_pickm.dr,0) = 0 and mm_pickm.vsourcemorowid = '" + cmoid + "'";
//                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();
//                }
//
//            }
//        }
    }
}
