/*
 * Author: wangjian
 * 生成ServiceImpl
 */
package com.tofly.feesapi.znbgl.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tofly.feesapi.bjgl.entity.YhCbkxx;
import com.tofly.feesapi.cbgl.entity.ZnbZlLog;
import com.tofly.feesapi.cbgl.service.IZnbZlLogService;
import com.tofly.feesapi.common.core.dto.PageDto;
import com.tofly.feesapi.common.core.vo.PageResult;

import com.tofly.feesapi.security.util.SecurityUtils;
import com.tofly.feesapi.sfgl.entity.ZnbCsjsLog;
import com.tofly.feesapi.sfgl.entity.vo.ZnbCsjsSelect;
import com.tofly.feesapi.yhgl.entity.YhKhjbxx;
import com.tofly.feesapi.znbgl.entity.ZnbYhda;
import com.tofly.feesapi.znbgl.entity.dto.ZnbYhdaFilter;
import com.tofly.feesapi.znbgl.entity.vo.ZnbYhdaSelect;
import com.tofly.feesapi.znbgl.mapper.ZnbYhdaMapper;
import com.tofly.feesapi.znbgl.service.ZnbYhdaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 智能表用户档案
 *
 * @author sxb
 * @date Tue Apr 23 00:00:00 CST 2024
 */

@Service("znbYhdaService")
public class ZnbYhdaServiceImpl extends ServiceImpl<ZnbYhdaMapper, ZnbYhda> implements ZnbYhdaService {
    @Autowired
    private IZnbZlLogService iZnbZlLogService;



    @Override
    public PageResult<ZnbYhdaSelect> getPage(PageDto pageDto, ZnbYhdaFilter filter) {
        PageDto<ZnbYhdaSelect> page = this.baseMapper.getPage(pageDto, filter);
        PageResult<ZnbYhdaSelect> pageResult = page.toVo();
        return pageResult;
    }

    public boolean savaZnbYhda(YhKhjbxx yhKhjbxx, YhCbkxx yhCbkx) {
        return savaZnbYhda(yhKhjbxx, yhCbkx, "0");
    }

    @Override
    @Transactional(rollbackFor = Exception.class) //声明式事务管理
    public boolean savaZnbYhda(YhKhjbxx yhKhjbxx, YhCbkxx yhCbkxx, String jdlx) {
        ZnbYhda znbYhda = new ZnbYhda();

        znbYhda.setYhbh(yhKhjbxx.getYhbh());//用户编号
        znbYhda.setYhxm(yhKhjbxx.getYhxm());//用户姓名
        znbYhda.setYhdz(yhKhjbxx.getYhdz());//用户地址
        znbYhda.setLxdh(yhKhjbxx.getLxdh());//联系电话
        znbYhda.setSsgs(yhKhjbxx.getSsgs());//所属公司
        znbYhda.setSspq(yhKhjbxx.getSscbpq());//片区
        znbYhda.setSscbb(yhKhjbxx.getSscbb());//抄表本
        znbYhda.setJdrq(yhKhjbxx.getJdrq());//建档日期
        znbYhda.setJdpch(yhKhjbxx.getJdpcxlh());//建档批次号
        znbYhda.setYhzt(yhKhjbxx.getYhzt().getValue().toString());//用户状态

        znbYhda.setJgbm(yhCbkxx.getSjbm());//价格编码
        znbYhda.setBjcj(yhCbkxx.getSbsccj());//厂家
        znbYhda.setBjbh(yhCbkxx.getSbbh());//表具编号
        znbYhda.setBjxh(yhCbkxx.getSbxh());//表具型号
        znbYhda.setBjlb(yhCbkxx.getSblb());//水表类型
        znbYhda.setBjwz(yhCbkxx.getBjwz());//位置
        znbYhda.setBjkj(yhCbkxx.getSbkj());//口径
        znbYhda.setBjlc(yhCbkxx.getSblc());//表具量程
        znbYhda.setCbpl(yhCbkxx.getCbpl());//抄表频率
        znbYhda.setBjqd(BigDecimal.valueOf(Long.valueOf(yhCbkxx.getSbqs())));//表具起度
        znbYhda.setBjzd(BigDecimal.valueOf(Long.valueOf(yhCbkxx.getSbqs())));//表具止度
        znbYhda.setBjbh(yhCbkxx.getSbbh());//水表编号

        znbYhda.setFmzt("1");//阀门状态0关阀1开阀
        znbYhda.setBjzt("1");//表具状态0异常1正常
        znbYhda.setJdlx(jdlx);//建档类型（0：建档；1：变更；2：换表）
        znbYhda.setCzry(String.valueOf(SecurityUtils.getUserId()));//操作人员编码

        znbYhda.setCzrq(yhKhjbxx.getCzsj());//操作日期
        if (this.save(znbYhda)) {
            //添加智能表指令日志
            ZnbZlLog znbZlLog = new ZnbZlLog();
            znbZlLog.setYhbh(znbYhda.getYhbh());
            znbZlLog.setPch(yhKhjbxx.getJdpcxlh());
            znbZlLog.setSsgs(yhKhjbxx.getSsgs());
            znbZlLog.setCbkh(yhCbkxx.getCbkh());
            znbZlLog.setCbkid(yhCbkxx.getCbkid());
            znbZlLog.setSccj(yhCbkxx.getSbsccj());
            znbZlLog.setCzry(String.valueOf(SecurityUtils.getUserId()));
            znbZlLog.setCzsj(LocalDateTime.now());
            znbZlLog.setClLock("0");
            znbZlLog.setClCljg("0");
            znbZlLog.setZltype("0");
            return iZnbZlLogService.save(znbZlLog);
        }
        return false;
    }

    @Override
    @Transactional(rollbackFor = Exception.class) //声明式事务管理
    public boolean updateZnbYhda(YhKhjbxx yhKhjbxx, YhCbkxx yhCbkxx, String jdlx) {
        ZnbYhda znbYhda = this.getOne(new QueryWrapper<ZnbYhda>().lambda()
                .eq(ZnbYhda::getYhbh, yhKhjbxx.getYhbh())
        );
        if (znbYhda == null) {
            return false;
        }
        znbYhda.setYhbh(yhKhjbxx.getYhbh());//用户编号
        znbYhda.setYhxm(yhKhjbxx.getYhxm());//用户姓名
        znbYhda.setYhdz(yhKhjbxx.getYhdz());//用户地址
        znbYhda.setLxdh(yhKhjbxx.getLxdh());//联系电话
        znbYhda.setSsgs(yhKhjbxx.getSsgs());//所属公司
        znbYhda.setSspq(yhKhjbxx.getSscbpq());//片区
        znbYhda.setSscbb(yhKhjbxx.getSscbb());//抄表本
        znbYhda.setJdrq(yhKhjbxx.getJdrq());//建档日期
        znbYhda.setJdpch(yhKhjbxx.getJdpcxlh());//建档批次号
        znbYhda.setYhzt(yhKhjbxx.getYhzt().getValue().toString());//用户状态

        znbYhda.setJgbm(yhCbkxx.getSjbm());//价格编码
        znbYhda.setBjcj(yhCbkxx.getSbsccj());//厂家
        znbYhda.setBjbh(yhCbkxx.getSbbh());//表具编号
        znbYhda.setBjxh(yhCbkxx.getSbxh());//表具型号
        znbYhda.setBjlb(yhCbkxx.getSblb());//水表类型
        znbYhda.setBjwz(yhCbkxx.getBjwz());//位置
        znbYhda.setBjkj(yhCbkxx.getSbkj());//口径
        znbYhda.setBjlc(yhCbkxx.getSblc());//表具量程
        znbYhda.setCbpl(yhCbkxx.getCbpl());//抄表频率
        znbYhda.setBjqd(BigDecimal.valueOf(Long.valueOf(yhCbkxx.getSbqs())));//表具起度
        znbYhda.setBjzd(BigDecimal.valueOf(Long.valueOf(yhCbkxx.getSbqs())));//表具止度
        znbYhda.setBjbh(yhCbkxx.getSbbh());//水表编号

//        znbYhda.setFmzt("1");//阀门状态0关阀1开阀
//        znbYhda.setBjzt("1");//表具状态0异常1正常
        znbYhda.setJdlx(jdlx);//建档类型（0：建档；1：变更；2：换表）
        znbYhda.setCzry(String.valueOf(SecurityUtils.getUserId()));//操作人员编码
        znbYhda.setCzrq(yhKhjbxx.getCzsj());//操作日期
        if (this.updateById(znbYhda)) {
            //添加智能表指令日志
            ZnbZlLog znbZlLog = new ZnbZlLog();
            znbZlLog.setYhbh(znbYhda.getYhbh());
            znbZlLog.setPch(yhKhjbxx.getJdpcxlh());
            znbZlLog.setSsgs(yhKhjbxx.getSsgs());
            znbZlLog.setCbkh(yhCbkxx.getCbkh());
            znbZlLog.setCbkid(yhCbkxx.getCbkid());
            znbZlLog.setSccj(yhCbkxx.getSbsccj());
            znbZlLog.setCzry(String.valueOf(SecurityUtils.getUserId()));
            znbZlLog.setCzsj(LocalDateTime.now());
            znbZlLog.setClLock("0");
            znbZlLog.setClCljg("0");
            znbZlLog.setZltype("0");
            return iZnbZlLogService.save(znbZlLog);
        }
        return false;
    }



}
