package com.ruoyi.project.zjsgfa.service.impl;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.domain.BaseEntity;
import com.ruoyi.project.zjsgfa.domain.*;
import com.ruoyi.project.zjsgfa.mapper.*;
import com.ruoyi.project.zt.domain.*;
import com.ruoyi.project.zt.domain.vo.SjInfo;
import com.ruoyi.project.zt.mapper.JsaaMapper;
import com.ruoyi.project.zt.service.DjdcService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.zjsgfa.service.ISjDjjcService;

/**
 * 设计信息-井基础信息Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-06-23
 */
@Service
public class SjDjjcServiceImpl implements ISjDjjcService 
{
    @Autowired
    private SjDjjcMapper sjDjjcMapper;

    @Autowired
    private DjdcService djdcService;
    @Autowired
    private SjLjjwMapper sjLjjwMapper;

    @Autowired
    private SjZqfxMapper sjZqfxMapper;
    @Autowired
    private SjZtgjsjMapper sjZtgjsjMapper;
    @Autowired
    private SjQkztfxMapper sjQkztfxMapper;
    @Autowired
    private SjJsjgMapper sjJsjgMapper;
    @Autowired
    private SjSzfxjgMapper sjSzfxjgMapper;

    @Autowired
    private SjLjtjztMapper sjLjtjztMapper;

    @Autowired
    private SjZtxxMapper sjZtxxMapper;

    @Autowired
    private SjZjcsxxMapper sjZjcsxxMapper;

    @Autowired
    private JsaaMapper jsaaMapper;

    @Autowired
    private SjFdsgcsMapper sjFdsgcsMapper;

    @Autowired
    private SjSggyZjzhcsMapper sjSggyZjzhcsMapper;


    /**
     * 查询设计信息-井基础信息
     * 
     * @param id 设计信息-井基础信息主键
     * @return 设计信息-井基础信息
     */
    @Override
    public SjDjjc selectSjDjjcById(Long id)
    {
        return sjDjjcMapper.selectSjDjjcById(id);
    }

    /**
     * 查询设计信息-井基础信息列表
     * 
     * @param sjDjjc 设计信息-井基础信息
     * @return 设计信息-井基础信息
     */
    @Override
    public List<SjDjjc> selectSjDjjcList(SjDjjc sjDjjc)
    {
        return sjDjjcMapper.selectSjDjjcList(sjDjjc);
    }

    /**
     * 新增设计信息-井基础信息
     * 
     * @param sjDjjc 设计信息-井基础信息
     * @return 结果
     */
    @Override
    public int insertSjDjjc(SjDjjc sjDjjc)
    {
        SjDjjc sjDjjc1 =sjDjjcMapper.selectSjDjjcByJh(sjDjjc.getJh());
        if(sjDjjc1!=null){
            return 3;
        }

        sjDjjc.setCreatedBy(SecurityUtils.getUsername());
        return sjDjjcMapper.insertSjDjjc(sjDjjc);
    }

    /**
     * 修改设计信息-井基础信息
     * 
     * @param sjDjjc 设计信息-井基础信息
     * @return 结果
     */
    @Override
    public int updateSjDjjc(SjDjjc sjDjjc)
    {
        sjDjjc.setUpdateTime(DateUtils.getNowDate());
        sjDjjc.setUpdateBy(SecurityUtils.getUsername());
        return sjDjjcMapper.updateSjDjjc(sjDjjc);
    }

    /**
     * 批量删除设计信息-井基础信息
     * 
     * @param ids 需要删除的设计信息-井基础信息主键
     * @return 结果
     */
    @Override
    public int deleteSjDjjcByIds(Long[] ids)
    {
        return sjDjjcMapper.deleteSjDjjcByIds(ids);
    }

    /**
     * 删除设计信息-井基础信息信息
     * 
     * @param id 设计信息-井基础信息主键
     * @return 结果
     */
    @Override
    public int deleteSjDjjcById(Long id)
    {
        return sjDjjcMapper.deleteSjDjjcById(id);
    }

    @Override
    public AjaxResult saveLjzl(CommonParam param) throws Exception {
        String jh = param.getSjjh();
        String ljjh = param.getJh();
        SjDjjc sjDjjc = sjDjjcMapper.selectSjDjjcByJh(jh);
        param.setQk(sjDjjc.getQk());
        param.setJkhzb(sjDjjc.getJkhzb());
        param.setJkzzb(sjDjjc.getJkzzb());
        param.setJdhzb(sjDjjc.getJdhzb());
        param.setJdzzb(sjDjjc.getJdzzb());
        param.setJh(null);

        //保存邻井
//        List<Ljjw> ljjwList = djdcService.getLjjwList(param);
//        List<SjLjjw> sjLjjwList=new ArrayList<>();
//        ljjwList.forEach(item->{
//            SjLjjw sjLjjw=new SjLjjw();
//            BeanUtils.copyProperties(item,sjLjjw);
//            sjLjjw.setJh(jh);
//            sjLjjw.setLjjh(item.getJh());
//            sjLjjwList.add(sjLjjw);
//        });
//        if(sjLjjwList.size()>0){
//            sjLjjwMapper.deleteSjLjjwByJh(jh);
//            sjLjjwMapper.insertSjLjjwBatch(sjLjjwList);
//
//        }
        param.setJkhzb(null);
        param.setJkzzb(null);
        param.setJdhzb(null);
        param.setJdzzb(null);
        param.setJh(ljjh);
        //周期分析
        List<DjZqsjfx> zqshfxList = djdcService.getZqshfxList(param);
        List<SjZqfx> sjZqfxList=new ArrayList<>();
        zqshfxList.forEach(item->{
            SjZqfx sjZqfx=new SjZqfx();
            BeanUtils.copyProperties(item,sjZqfx);
            sjZqfx.setJh(jh);
            sjZqfx.setLjjh(item.getJh());
            sjZqfx.setCw(item.getCw());
            sjZqfx.setZjzq(item.getZjzq());
            sjZqfx.setZjycsl(item.getZjycsl());
            sjZqfx.setZjsczq(item.getZjsczq());
            sjZqfx.setZjsl(item.getZjsl());
            sjZqfx.setZwzq(item.getZwzq());
            sjZqfx.setWjycsl(item.getWjycsl());
            sjZqfx.setWjsczq(item.getWjsczq());
            sjZqfx.setZjycms(item.getZjycms());
            sjZqfx.setWjycms(item.getWjycms());
            sjZqfxList.add(sjZqfx);
        });
        if(sjZqfxList.size()>0){
            sjZqfxMapper.deleteSjZqfxByJh(jh);
            sjZqfxMapper.insertSjZqfxBatch(sjZqfxList);
        }
        //钻头关键数据
        List<Djjc> djjcList = djdcService.getDjjcList(param);
        List<SjZtgjsj> sjZtgjsjList=new ArrayList<>();

        djjcList.forEach(item->{
            SjZtgjsj sjZtgjsj=new SjZtgjsj();
            BeanUtils.copyProperties(item,sjZtgjsj);
            sjZtgjsj.setJh(jh);
            sjZtgjsj.setLjjh(item.getJh());
            sjZtgjsjList.add(sjZtgjsj);
        });
        if(sjZtgjsjList.size()>0){
            sjZtgjsjMapper.deleteSjZtgjsjByJh(jh);
            sjZtgjsjMapper.insertSjZtgjsjBatch(sjZtgjsjList);
        }
        //区块钻头分析
        List<DjZtfx> djZtfxList = djdcService.getDjZtfxList(param);
        List<SjQkztfx> sjQkztfxList=new ArrayList<>();
        djZtfxList.forEach(item->{
            SjQkztfx sjQkztfx=new SjQkztfx();
            BeanUtils.copyProperties(item,sjQkztfx);
            sjQkztfx.setJh(jh);
            sjQkztfxList.add(sjQkztfx);
        });
        if(sjQkztfxList.size()>0){
            sjQkztfxMapper.deleteSjQkztfxByJh(jh);
            sjQkztfxMapper.insertSjQkztfxBatch(sjQkztfxList);
        }

        //实钻分析结果
        SjJsjg sjJsjg =new SjJsjg();
        sjJsjg.setJh(jh);
        List<SjJsjg> sjJsjgList = sjJsjgMapper.selectSjJsjgList(sjJsjg);
        List<SjInfo> sjInfoList=new ArrayList<>();
        for(int i=0;i<sjJsjgList.size();i++){
            SjInfo sjInfo =new SjInfo();
            sjInfo.setKc((i+1)+"");
            sjInfo.setZtcc(sjJsjgList.get(i).getZtzj());
            sjInfoList.add(sjInfo);
        }
        param.setSj(sjInfoList);
        List<LjSzfxjg> ljSzfxjgList=djdcService.getSztfxjgList(djZtfxList,djjcList,param);
        List<SjSzfxjg> sjSzfxjgList=new ArrayList<>();
        ljSzfxjgList.forEach(item->{
            SjSzfxjg sjSzfxjg=new SjSzfxjg();
            BeanUtils.copyProperties(item,sjSzfxjg);
            sjSzfxjg.setJh(jh);
            sjSzfxjgList.add(sjSzfxjg);
        });
        if(sjSzfxjgList.size()>0){
            sjSzfxjgMapper.deleteSjSzfxjgByJh(jh);
            sjSzfxjgMapper.insertSjSzfxjgBatch(sjSzfxjgList);
        }
        return AjaxResult.success();
    }

    @Override
    public AjaxResult saveZtxh(CommonParam param) {
        String jh = param.getSjjh();
        SjZtgjsj sjZtgjsj = new SjZtgjsj();
        sjZtgjsj.setJh(jh);
        List<SjZtgjsj> sjZtgjsjList = sjZtgjsjMapper.selectSjZtgjsjList(sjZtgjsj);
        SjJsjg sjJsjg = new SjJsjg();
        sjJsjg.setJh(jh);
        List<SjJsjg> sjJsjgList = sjJsjgMapper.selectSjJsjgList(sjJsjg);
        List<SjLjtjzt> sjLjtjztList=new ArrayList<>();
        double ksjs=0;
        for(int i=0;i<sjJsjgList.size();i++){
            SjJsjg sjJsjg1 = sjJsjgList.get(i);
            if(i==0){
                ksjs=0;;
            }else {
                ksjs=sjJsjgList.get(i-1).getJs();
            }
            final int kc=i+1;
            //查询钻头关键数据
            List<SjZtgjsj> collect = sjZtgjsjList.stream()
                    .filter(it -> String.valueOf(kc).equals(it.getKc()))
                    .sorted(Comparator.comparing(SjZtgjsj::getJxzs).reversed()) // 倒序
                    .collect(Collectors.toList());
            if(collect.size()>3){
                collect=collect.subList(0,3);
            }
            SjZtxx sjZtxx =new SjZtxx();
            collect.forEach(it->{
                SjLjtjzt sjLjtjzt=new SjLjtjzt();
                sjLjtjzt.setJh(jh);
                sjLjtjzt.setLjjh(it.getLjjh());
                sjLjtjzt.setKc(sjJsjg1.getKc());
                sjLjtjzt.setCc(it.getZtcc());
                sjLjtjzt.setZtxh(it.getZtxh());
                sjLjtjzt.setSy(it.getPz());
                sjLjtjzt.setZjjd(it.getJd());
                sjLjtjzt.setCw(it.getCw());
                sjLjtjzt.setJxzs(it.getJxzs());
                //查询厂家
                Djjc djjc = new Djjc();
                djjc.setJh(it.getLjjh());
                djjc.setKc(kc+"");
                djjc.setJd(it.getJd());
                djjc.setJxzs(it.getJxzs());
                Djjc djjc1=djdcService.selectZtsj(djjc);
                if(djjc1!=null){
                    sjLjtjzt.setCj(djjc1.getCj());
                }
                sjLjtjztList.add(sjLjtjzt);
            });
            if(collect.size()>0){
                SjZtgjsj sjZtgjsj1 = collect.get(0);
                sjZtxx.setJh(jh);
                sjZtxx.setLb("邻井推荐");
                sjZtxx.setKc(sjJsjg1.getKc());
                sjZtxx.setZtxh(collect.get(0).getZtxh());
                sjZtxxMapper.deleteSjZtxxByZtxx(sjZtxx);
                sjZtxxMapper.insertSjZtxx(sjZtxx);
                //施工参数
                SjZjcsxx sjZjcsxx =new SjZjcsxx();
                sjZjcsxx.setJh(jh);
                sjZjcsxx.setKc(sjJsjg1.getKc());
                sjZjcsxx.setJd(ksjs+"-"+sjJsjg1.getJs());
                sjZjcsxx.setZtxh(sjZtgjsj1.getZtxh());
                sjZjcsxx.setCc(sjZtgjsj1.getZtcc()+"");
                sjZjcsxx.setSy(sjZtgjsj1.getPz()+"");
                sjZjcsxx.setZjymd(sjZtgjsj1.getZjymd()+"");
                sjZjcsxx.setZjpl(sjZtgjsj1.getPl()+"");
                sjZjcsxx.setZjby(sjZtgjsj1.getLgby()+"");
                //查询厂家
                Djjc djjc = new Djjc();
                djjc.setJh(sjZtgjsj1.getLjjh());
                djjc.setKc(kc+"");
                djjc.setJd(sjZtgjsj1.getJd());
                djjc.setJxzs(sjZtgjsj1.getJxzs());
                Djjc djjc1=djdcService.selectZtsj(djjc);
                if(djjc1!=null){
                    sjZjcsxx.setCj(djjc1.getCj());
                    sjZjcsxx.setYj(djjc1.getZtyj()+"");
                    sjZjcsxx.setZjzy(djjc1.getZy());
                    sjZjcsxx.setZjzs(djjc1.getZs()+"");
                }
                sjZjcsxxMapper.deleteSjZjcsxxByZjcsxx(sjZjcsxx);
                sjZjcsxxMapper.insertSjZjcsxx(sjZjcsxx);
                Jsfa jsfa =new Jsfa();
                jsfa.setJh(sjZtgjsj1.getLjjh());
                jsfa.setZjjd(sjZtgjsj1.getJd());
                Jsfa jsfa1=jsaaMapper.selectJsfa(jsfa);
                String zjzh="";
                if(jsfa1!=null){
                    zjzh = jsfa1.getZjzh();
                }
                SjFdsgcs sjFdsgcs =new SjFdsgcs();
                sjFdsgcs.setJh(jh);
                sjFdsgcs.setKc(sjJsjg1.getKc());
                SjFdsgcs sjFdsgcs1 = sjFdsgcsMapper.selectSjFdsgcsByJhAndKc(sjFdsgcs);
                if(sjFdsgcs1!=null){
                    sjFdsgcs1.setZjzh(zjzh);
                    sjFdsgcsMapper.updateSjFdsgcs(sjFdsgcs1);
                }else {
                    sjFdsgcs1=new SjFdsgcs();
                    sjFdsgcs1.setJh(jh);
                    sjFdsgcs1.setKc(sjJsjg1.getKc());
                    sjFdsgcs1.setZjzh(zjzh);
                    sjFdsgcsMapper.insertSjFdsgcs(sjFdsgcs1);
                }
                //概要施工参数
                SjSggyZjzhcs sjSggyZjzhcs=new SjSggyZjzhcs();
                sjSggyZjzhcs.setJh(jh);
                sjSggyZjzhcs.setKc(sjJsjg1.getKc());
                sjSggyZjzhcs.setJd(ksjs+"-"+sjJsjg1.getJs());
                sjSggyZjzhcs.setZtxh(sjZtgjsj1.getZtxh());
                sjSggyZjzhcs.setCc(sjZtgjsj1.getZtcc()+"");
                sjSggyZjzhcs.setSy(sjZtgjsj1.getPz()+"");
                sjSggyZjzhcs.setZjymd(sjZtgjsj1.getZjymd()+"");
                sjSggyZjzhcs.setZjpl(sjZtgjsj1.getPl()+"");
                sjSggyZjzhcs.setZjby(sjZtgjsj1.getLgby()+"");
                sjSggyZjzhcs.setZjjg(zjzh);
                if(djjc1!=null){
                    sjSggyZjzhcs.setCj(djjc1.getCj());
                    sjSggyZjzhcs.setYj(djjc1.getZtyj()+"");
                    sjSggyZjzhcs.setZjzy(djjc1.getZy());
                    sjSggyZjzhcs.setZjzs(djjc1.getZs()+"");
                }
                sjSggyZjzhcsMapper.deleteSjSggyZjzhcsByZjzhcs(sjSggyZjzhcs);
                sjSggyZjzhcsMapper.insertSjSggyZjzhcs(sjSggyZjzhcs);
            }
        }
        if(sjLjtjztList.size()>0){
            sjLjtjztMapper.deleteSjLjtjztByJh(jh);
            sjLjtjztMapper.insertSjLjtjztBatch(sjLjtjztList);
        }

        return AjaxResult.success("计算成功");
    }


}
