package com.sw.mes.yb.pc.service.impl;

import com.sw.mes.core.base.BaseServiceImpl;
import com.sw.mes.third.dao.SapMaterialGIDao;
import com.sw.mes.yb.pc.dao.StoreMixInfoItemDao;
import com.sw.mes.yb.pc.entity.StoreMixInfoItem;
import com.sw.mes.yb.pc.service.StoreMixInfoItemService;
import com.sw.mes.yb.plan.dao.ProductionScheduleDao;
import com.sw.mes.yb.plan.service.ProductionOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

/**
 * @Author liru
 * @Description：
 * @Date: Create in
 * @Modified By:
 */
@Service
@Transactional
public class StoreMixInfoItemServiceImpl extends BaseServiceImpl<StoreMixInfoItem> implements StoreMixInfoItemService {

	StoreMixInfoItemDao storeMixInfoItemDao;
    @Autowired
    SapMaterialGIDao sapMaterialGIDao;

//    @Autowired
//    MobileChargeItemDAO mobileChargeItemDAO;

    @Autowired
    ProductionScheduleDao sapProductionScheduleDao;

    @Autowired
    ProductionOrderService sapProductionOrderService;

	@Autowired
    public void setDao(StoreMixInfoItemDao storeMixInfoItemDao) {
        this.storeMixInfoItemDao = storeMixInfoItemDao;
        super.setBaseDao(storeMixInfoItemDao);
    }

    @Override
    public List<StoreMixInfoItem> findByStoreMixInfo_Id(Integer storeMixInfoId) {
        return storeMixInfoItemDao.findByStoreMixInfo_Id(storeMixInfoId);
    }

    @Override
    public void deleteByStoreMixInfo_Id(Integer storeMixInfoId) {
        storeMixInfoItemDao.deleteByStoreMixInfo_Id(storeMixInfoId);
    }

//    @Autowired
//    private StoreInputBillService storeInputBillService;

    /**
     * todo 退料
     * @param ids
     * @throws Exception
     */
    @Override
    public void backOff(Integer[] ids) throws Exception {

//        StoreInputBillDto inputBill = new StoreInputBillDto();
//        inputBill.setCode("GLTL-" + DateUtil.formatDate(new Date(), "yyyyMMdd") + (int) ((Math.random() * 9 + 1) * 100000));
//        inputBill.setInputTypeDictId(null);
//        inputBill.setInputTypeDictName("退料入库");
//        inputBill.setCreateUserId(BaseContextHandler.getUserID());
//        inputBill.setCreateUserName(BaseContextHandler.getUsername());
//
//        List<StoreInputItemDto> itemDtos = new ArrayList<>();
//
//        List<StoreMixInfoItem> infoItems = findByIds(Arrays.asList(ids));
//        for (StoreMixInfoItem id : infoItems) {
//
//            StoreInputItemDto item = new StoreInputItemDto();
//            item.setCount(id.getCount());
//            item.setGoodsCode(id.getGoodsCode());
//            MaterialModel model = id.getMaterialModel();
//            if (model != null) {
//                item.setMaterialModelId(model.getId());
//            } else {
//                item.setMaterialModelId(0);
//            }
//            item.setRemark(id.getRemark());
//            item.setGoodsNo(DateUtil.formatDate(new Date(), "yyyyMMddHHmmssSSS"));
//            StoreLocation location = id.getStoreLocation();
//            if (location != null) {
//                item.setStoreLocationId(id.getStoreLocation().getId());
//            } else {
//                item.setStoreLocationId(0);
//            }
//
//            item.setProperties("");
//
//            itemDtos.add(item);
//        }
//
//        inputBill.setStoreInputItemDtoDtos(itemDtos);
//
//        // 入库
//        storeInputBillService.backOff(inputBill);

    }

    private List<StoreMixInfoItem> findByIds(List<Integer> ids) {
	    return storeMixInfoItemDao.findByIds(ids);
    }

    @Override
    public List<StoreMixInfoItem> getByLotNo(String lotNo){
        return  storeMixInfoItemDao.getByLotNo(lotNo);
    }


//
//    // todo 初始化料
//    @Override
//    public void handleGi(String lotNo) {
//        Date nowTime = new Date();
//        // 初始化料
//        List<StoreMixInfoItem> list =  storeMixInfoItemDao.getByLotNo(lotNo);
//        String sapDate = SapUtil.getDateNowForSap(540);
//        ProductionOrder sapProductionOrder = null;
//        sapProductionOrder = sapProductionOrderService.getByLotNoAndDate(lotNo,sapDate);
//        List<SapMaterialGi> sapMaterialGiList = new ArrayList<>();
//        if (!list.isEmpty()){
//            for(StoreMixInfoItem storeMixInfoItem:list){
//                if(StringUtils.isNotBlank(storeMixInfoItem.getGoodsCode())
//                        &&(storeMixInfoItem.getGoodsCode().startsWith("A01")
//                        ||storeMixInfoItem.getGoodsCode().startsWith("A03")
//                        ||storeMixInfoItem.getGoodsCode().startsWith("A99")) && sapProductionOrder!= null){
//                    SapMaterialGi sapMaterialGi = new SapMaterialGi();
//                    sapMaterialGi.setZmesid(UUID.randomUUID().toString());
//                    sapMaterialGi.setWerks(SapStaticEnum.SapFactoryId.三期工厂ID.getValue());
//                    sapMaterialGi.setAufnr(sapProductionOrder.getAufnr());
//                    sapMaterialGi.setBty("1");//新增
//                    sapMaterialGi.setCharg(SapStaticEnum.SapStaticValue.GI固定批次号.getValue());//批次号 虚拟
//                    sapMaterialGi.setLgort(SapStaticEnum.SapStaticValue.圆棒原料GI固定库存地点.getValue());//原料GI固定库存地点 虚拟
//                    sapMaterialGi.setIssuedate(WbServiceUtils.getSapDate(nowTime));//日期 yyyymmdd
//                    sapMaterialGi.setIssuetime(WbServiceUtils.getSapTime(nowTime));//时间 HHmmss
//                    sapMaterialGi.setMatnr(sapProductionOrder.getMatnr());//新物料号
//                    sapMaterialGi.setMatnrmat(storeMixInfoItem.getGoodsCode());//旧物料号
//                    sapMaterialGi.setMeins("KG");//单位
//                    sapMaterialGi.setMenge(storeMixInfoItem.getCount());//数量
//                    sapMaterialGi.setSource("");
//                    sapMaterialGi.setLotno(lotNo);
//                    sapMaterialGiList.add(sapMaterialGi);
//                }
//
//            }
//        }
//
//        if(sapMaterialGiList.size()>0){
//            //批量保存
//            this.sapMaterialGIDao.saveAll(sapMaterialGiList);
//        }
//        //list 根据ID 更新IS_GI=1
//        for (StoreMixInfoItem storeMixInfoItem : list) {
//            storeMixInfoItem.setIsGi(1);
//            this.storeMixInfoItemDao.save(storeMixInfoItem);
//        }
//
//    }


//
//   todo沾渣
//    @Override
//    public void handleZZ(String lotNo) {
//        Date nowTime = new Date();
//        String sapDate = SapUtil.getDateNowForSap(540);
//        ProductionOrder sapProductionOrder = null;
//        sapProductionOrder = sapProductionOrderService.getByLotNoAndDate(lotNo,sapDate);
//        List<SapMaterialGi> sapMaterialGiList = new ArrayList<>();
//        List<MobileChargeItem> byLotNo = this.mobileChargeItemDAO.getByLotNo(lotNo);
//        if (!byLotNo.isEmpty()){
//            for (MobileChargeItem mobileChargeItem : byLotNo) {
//                if(StringUtils.isNotBlank(mobileChargeItem.getMaterialCode())
//                        &&(mobileChargeItem.getMaterialCode().startsWith("A01")
//                        ||mobileChargeItem.getMaterialCode().startsWith("A03")
//                        ||mobileChargeItem.getMaterialCode().startsWith("A99")) && sapProductionOrder!= null){
//                    SapMaterialGi sapMaterialGi = new SapMaterialGi();
//                    sapMaterialGi.setZmesid(UUID.randomUUID().toString());
//                    sapMaterialGi.setWerks(SapStaticEnum.SapFactoryId.三期工厂ID.getValue());
//                    sapMaterialGi.setAufnr(sapProductionOrder.getAufnr());
//                    sapMaterialGi.setBty("1");//新增
//                    sapMaterialGi.setCharg(SapStaticEnum.SapStaticValue.GI固定批次号.getValue());//批次号 虚拟
//                    sapMaterialGi.setLgort(SapStaticEnum.SapStaticValue.圆棒原料GI固定库存地点.getValue());//原料GI固定库存地点 虚拟
//                    sapMaterialGi.setIssuedate(WbServiceUtils.getSapDate(nowTime));//日期 yyyymmdd
//                    sapMaterialGi.setIssuetime(WbServiceUtils.getSapTime(nowTime));//时间 HHmmss
//                    sapMaterialGi.setMatnr(sapProductionOrder.getMatnr());//新物料号
//                    sapMaterialGi.setMatnrmat(mobileChargeItem.getMaterialCode());//旧物料号
//                    sapMaterialGi.setMeins("KG");//单位
//                    if (mobileChargeItem.getCount() != null){
//                        sapMaterialGi.setMenge(BigDecimal.valueOf(mobileChargeItem.getCount()));//数量
//                    }
//                    sapMaterialGi.setSource("");
//                    sapMaterialGi.setLotno(lotNo);
//                    sapMaterialGiList.add(sapMaterialGi);
//                }
//            }
//        }
//
//        if(sapMaterialGiList.size()>0){
//            //批量保存
//            this.sapMaterialGIDao.saveAll(sapMaterialGiList);
//        }
//
//        //list 根据ID 更新IS_GI=1
//        for (MobileChargeItem mobileChargeItem : byLotNo) {
//            mobileChargeItem.setIsGi(1);
//            this.mobileChargeItemDAO.save(mobileChargeItem);
//        }
//    }

}
