package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.report;


import cn.estsh.i3plus.ext.mes.pcn.api.report.IMesYfReportService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @Description : 报表-业务方法实现
 * @Reference :
 * @Author : logic
 * @CreateDate : 2024/6/15 11:31
 * @Modify:
 **/
@Service
@Slf4j
public class MesYfReportServiceImpl implements IMesYfReportService {


    @Autowired
    private MesProduceSnRepository mesProduceSnRDao;


    @Override
    public ListPager<MesProduceSn> queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager) {
        DdlPackBean packBean = getMesProduceSnPackBean(mesProduceSn);
        if (Objects.isNull(pager)) {
            DdlPreparedPack.getOrderBy(mesProduceSn.getOrderByParam(), mesProduceSn.getAscOrDesc(), packBean);
            return new ListPager<>(mesProduceSnRDao.findByHqlWhere(packBean), pager);
        }
        pager = PagerHelper.getPager(pager, mesProduceSnRDao.findByHqlWhereCount(packBean));
        DdlPreparedPack.getOrderBy(mesProduceSn.getOrderByParam(), mesProduceSn.getAscOrDesc(), packBean);
        return new ListPager<>(mesProduceSnRDao.findByHqlWherePage(packBean, pager), pager);
    }

    private DdlPackBean getMesProduceSnPackBean(MesProduceSn mesProduceSn) {
        DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode());
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getProductSn(), "productSn", packBean);
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getCustSn(), "custSn", packBean);
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getWorkOrderNo(), "workOrderNo", packBean);
        DdlPreparedPack.getStringBiggerPack(mesProduceSn.getCreateDateTimeStart(), "createDatetime", packBean);
        DdlPreparedPack.getStringSmallerPack(mesProduceSn.getCreateDateTimeEnd(), "createDatetime", packBean);
        DdlPreparedPack.getNumEqualPack(mesProduceSn.getSnStatus(), "snStatus", packBean);
        DdlPreparedPack.getNumEqualPack(mesProduceSn.getQcStatus(), "qcStatus", packBean);
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getPartNo(), "partNo", packBean);
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getPartName(), "partName", packBean);
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getWorkCenterCode(), "workCenterCode", packBean);
        DdlPreparedPack.getNumEqualPack(mesProduceSn.getPrintCount(), "printCount", packBean);
        DdlPreparedPack.getNumEqualPack(mesProduceSn.getPrintStatus(), "printStatus", packBean);
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getWorkCellCode(), "workCellCode", packBean);
        DdlPreparedPack.getStringLikerPack(mesProduceSn.getCreateUser(), "createUser", packBean);
        return packBean;
    }

}
