package com.ruoyi.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.domain.MarryUser;
import com.ruoyi.domain.ZMarry;
import com.ruoyi.domain.dto.MarryInfoDto;
import com.ruoyi.mapper.ZMarryMapper;
import com.ruoyi.service.MarryUserService;
import com.ruoyi.service.ZMarryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
/**
*
* 服务实现类
*
*
* @author ojq
* @since 2023-03-14
*/
@Service
public class ZMarryServiceImpl extends ServiceImpl implements ZMarryService {
// @Resource
// MarryUserService marryUserService;
//
// @Autowired
// ZMarryServiceImpl zMarryService;
//
// @Override
// public AjaxResult getNow() {
// SysUser user = SecurityUtils.getLoginUser().getUser();
// Long userId = user.getUserId();
//
// //先查询个人信息
// LambdaQueryWrapper marryUserLambdaQueryWrapper1 = new LambdaQueryWrapper<>();
// marryUserLambdaQueryWrapper1.eq(MarryUser::getMyId, userId);
// MarryUser myself = marryUserService.getOne(marryUserLambdaQueryWrapper1);
//
// //再查询中间表信息
// if (myself == null) {
// throw new RuntimeException("您暂时还未在婚姻表中添加个人信息");
// }
// LambdaQueryWrapper zMarryLambdaQueryWrapper = new LambdaQueryWrapper<>();
// zMarryLambdaQueryWrapper.eq(ZMarry::getUserId, myself.getMyId())
// .eq(ZMarry::getDeleteStatus, 0);
// ZMarry myMarryInfo = getOne(zMarryLambdaQueryWrapper);//只能有一个配偶
//
// //根据中间表信息查询配偶信息
// if (myMarryInfo == null) {
// throw new RuntimeException("您暂时还未在婚姻表中添加婚姻信息");
// }
// String spouseId = myMarryInfo.getSpouseId();
// LambdaQueryWrapper marryUserLambdaQueryWrapper2 = new LambdaQueryWrapper<>();
// marryUserLambdaQueryWrapper2.eq(MarryUser::getId, spouseId);
// MarryUser spouse = marryUserService.getOne(marryUserLambdaQueryWrapper2);
// if (spouse == null) {
// throw new RuntimeException("您暂时还未在婚姻表中添加配偶信息");
// }
//
// //根据中间表信息查询前任信息
// LambdaQueryWrapper zMarryOldLQW = new LambdaQueryWrapper<>();
// zMarryOldLQW.eq(ZMarry::getUserId,myself.getMyId())
// .eq(ZMarry::getDeleteStatus,1);
// List oldList = list(zMarryOldLQW);
//
// //前任信息表
// List oldSpouseList = new ArrayList<>();
// for (ZMarry zMarry : oldList) {
// String spouseId1 = zMarry.getSpouseId();
// MarryUser oldSpouse = marryUserService.getById(spouseId1);
// oldSpouseList.add(oldSpouse);
// }
//
//// //统一封装返回
//// HashMap resultMap = new HashMap<>();
//// resultMap.put("myInfo",myself);
//// resultMap.put("spouseInfo",spouse);
//// resultMap.put("marryInfo",myMarryInfo);
//// resultMap.put("oldSpouseInfo",oldSpouseList);
//
// //转成DTO返回
// MarryInfoDto marryInfoDto = MarryInfoToDto(myMarryInfo, oldSpouseList, myself, spouse);
// return AjaxResult.success(marryInfoDto);
// }
//
// private MarryInfoDto MarryInfoToDto(ZMarry myMarryInfo,List oldSpouseList,MarryUser myself,MarryUser spouse){
// MarryInfoDto marryInfoDto = new MarryInfoDto();
// marryInfoDto.setId(myself.getId());
// marryInfoDto.setName(myself.getName());
// marryInfoDto.setBirthday(myself.getBirthday());
// marryInfoDto.setAddress(myself.getAddress());
// marryInfoDto.setIdNo(myself.getIdNo());
// marryInfoDto.setMarryStatus(myself.getMarryStatus());
// marryInfoDto.setSex(myself.getSex());
// marryInfoDto.setNation(myself.getNation());
// marryInfoDto.setPhone(myself.getPhone());
//
// marryInfoDto.setSpouseId(spouse.getId());
// marryInfoDto.setSpouseName(spouse.getName());
// marryInfoDto.setSpouseBirthday(spouse.getBirthday());
// marryInfoDto.setSpouseAddress(spouse.getAddress());
// marryInfoDto.setSpouseIdNo(spouse.getIdNo());
// marryInfoDto.setSpouseMarryStatus(spouse.getMarryStatus());
// marryInfoDto.setSpouseSex(spouse.getSex());
// marryInfoDto.setSpouseNation(spouse.getNation());
// marryInfoDto.setSpousePhone(spouse.getPhone());
//
// marryInfoDto.setMarryId(myMarryInfo.getId());
// marryInfoDto.setBearStatus(myMarryInfo.getBearStatus());
// marryInfoDto.setHandbookStatus(myMarryInfo.getHandbookStatus());
// marryInfoDto.setHandbookTime(myMarryInfo.getHandbookTime());
// marryInfoDto.setOneBorn(myMarryInfo.getOneBorn());
// marryInfoDto.setOneBornTime(myMarryInfo.getOneBornTime());
// marryInfoDto.setContent(myMarryInfo.getContent());
// marryInfoDto.setRemark(myMarryInfo.getRemark());
// marryInfoDto.setMarryTime(myMarryInfo.getMarryTime());
//
// marryInfoDto.setOldSpouseList(oldSpouseList);
// return marryInfoDto;
// }
//
//
//
//
// @Transactional
// public AjaxResult addInfo(MarryInfoDto marryInfoDto){
// SysUser user = SecurityUtils.getLoginUser().getUser();
// Long userId = user.getUserId();
//
// String meId= IdUtils.simpleUUID();
// String spouseId = IdUtils.simpleUUID();
//
// //添加自己的信息
// MarryUser myself = new MarryUser();
// myself.setId(meId);
// myself.setName(marryInfoDto.getName());
// myself.setBirthday(marryInfoDto.getBirthday());
// myself.setAddress(marryInfoDto.getAddress());
// myself.setIdNo(marryInfoDto.getIdNo());
// myself.setMarryStatus(marryInfoDto.getMarryStatus());
// myself.setSex(marryInfoDto.getSex());
// myself.setMyId(userId);
// myself.setNation(marryInfoDto.getNation());
// myself.setPhone(marryInfoDto.getPhone());
// marryUserService.save(myself);
//
// //添加配偶的信息
// MarryUser spouse = new MarryUser();
// spouse.setId(spouseId);
// spouse.setName(marryInfoDto.getSpouseName());
// spouse.setBirthday(marryInfoDto.getSpouseBirthday());
// spouse.setAddress(marryInfoDto.getSpouseAddress());
// spouse.setIdNo(marryInfoDto.getSpouseIdNo());
// spouse.setMarryStatus(marryInfoDto.getSpouseMarryStatus());
// spouse.setSex(marryInfoDto.getSpouseSex());
// spouse.setNation(marryInfoDto.getSpouseNation());
// spouse.setPhone(marryInfoDto.getSpousePhone());
// marryUserService.save(spouse);
//
// //添加生育情况(中间表)信息
// ZMarry zMarry = new ZMarry();
// zMarry.setUserId(userId);
// zMarry.setSpouseId(spouseId);
// zMarry.setMarryTime(marryInfoDto.getMarryTime());
// zMarry.setBearStatus(marryInfoDto.getBearStatus());
// zMarry.setHandbookStatus(marryInfoDto.getHandbookStatus());
// zMarry.setHandbookTime(marryInfoDto.getHandbookTime());
// zMarry.setOneBorn(marryInfoDto.getOneBorn());
// zMarry.setOneBornTime(marryInfoDto.getOneBornTime());
// zMarry.setContent(marryInfoDto.getContent());
// zMarry.setRemark(marryInfoDto.getRemark());
// zMarry.setDeleteStatus(0);
// zMarryService.save(zMarry);
//
//
// List oldSpouseList = marryInfoDto.getOldSpouseList();
//
// //添加前任的信息
// if(oldSpouseList!=null&&oldSpouseList.size()!=0){
// for (MarryUser marryUser : oldSpouseList) {
// //先添加配偶用户信息
// String spId = IdUtils.simpleUUID();
// marryUser.setId(spId);
// marryUserService.save(marryUser);
//
// //再添加中间表信息
// ZMarry oldMarry = new ZMarry();
// oldMarry.setUserId(userId);
// oldMarry.setSpouseId(spId);
// oldMarry.setDeleteStatus(1);
// zMarryService.save(oldMarry);
// }
// }
//
// return AjaxResult.success();
// }
//
// @Transactional
// public AjaxResult updateInfo(MarryInfoDto marryInfoDto){
//
// SysUser user = SecurityUtils.getLoginUser().getUser();
// Long userId = user.getUserId();
// //更新自己的信息
// MarryUser myself = new MarryUser();
// myself.setId(marryInfoDto.getId());
// myself.setName(marryInfoDto.getName());
// myself.setBirthday(marryInfoDto.getBirthday());
// myself.setAddress(marryInfoDto.getAddress());
// myself.setIdNo(marryInfoDto.getIdNo());
// myself.setMarryStatus(marryInfoDto.getMarryStatus());
// myself.setSex(marryInfoDto.getSex());
// myself.setNation(marryInfoDto.getNation());
// myself.setPhone(marryInfoDto.getPhone());
// marryUserService.updateById(myself);
//
// //更新配偶的信息
//
// //先查询是更新配偶信息还是换配偶,因为配偶只能有一个
// //这里暂时用名字来判断吧,如果有重名的人就会有bug
// //先查询
// String spouseName = marryInfoDto.getSpouseName();
// MarryUser marry = marryUserService.getById(marryInfoDto.getSpouseId());
// String marryName = marry.getName();
// if(!spouseName.equals(marryName)){
//
// //如果正妻子换人了,就新增而不是修改,同时删除旧纪录
// //将现在中间表的妻子改成前妻
// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();
// lqw.eq(ZMarry::getUserId,userId)
// .eq(ZMarry::getSpouseId,marryInfoDto.getSpouseId());
// ZMarry one = getOne(lqw);
// one.setDeleteStatus(1);
// zMarryService.updateById(one);
//
// //新增用户信息表
// String spouseId = IdUtils.simpleUUID();
// MarryUser spouse = new MarryUser();
// spouse.setId(spouseId);
// spouse.setName(marryInfoDto.getSpouseName());
// spouse.setBirthday(marryInfoDto.getSpouseBirthday());
// spouse.setAddress(marryInfoDto.getSpouseAddress());
// spouse.setIdNo(marryInfoDto.getSpouseIdNo());
// spouse.setMarryStatus(marryInfoDto.getSpouseMarryStatus());
// spouse.setSex(marryInfoDto.getSpouseSex());
// spouse.setNation(marryInfoDto.getSpouseNation());
// spouse.setPhone(marryInfoDto.getSpousePhone());
// marryUserService.save(spouse);
//
// //新增中间表
// //添加生育情况(中间表)信息
// ZMarry zMarry = new ZMarry();
// zMarry.setUserId(userId);
// zMarry.setSpouseId(spouseId);
// zMarry.setMarryTime(marryInfoDto.getMarryTime());
// zMarry.setBearStatus(marryInfoDto.getBearStatus());
// zMarry.setHandbookStatus(marryInfoDto.getHandbookStatus());
// zMarry.setHandbookTime(marryInfoDto.getHandbookTime());
// zMarry.setOneBorn(marryInfoDto.getOneBorn());
// zMarry.setOneBornTime(marryInfoDto.getOneBornTime());
// zMarry.setContent(marryInfoDto.getContent());
// zMarry.setRemark(marryInfoDto.getRemark());
// zMarry.setDeleteStatus(0);
// zMarryService.save(zMarry);
//
//
//
// }else {
//
// MarryUser spouse = new MarryUser();
// spouse.setId(marryInfoDto.getSpouseId());
// spouse.setName(marryInfoDto.getSpouseName());
// spouse.setBirthday(marryInfoDto.getSpouseBirthday());
// spouse.setAddress(marryInfoDto.getSpouseAddress());
// spouse.setIdNo(marryInfoDto.getSpouseIdNo());
// spouse.setMarryStatus(marryInfoDto.getSpouseMarryStatus());
// spouse.setSex(marryInfoDto.getSpouseSex());
// spouse.setNation(marryInfoDto.getSpouseNation());
// spouse.setPhone(marryInfoDto.getSpousePhone());
// marryUserService.updateById(spouse);
//
// //更新生育情况信息
// ZMarry zMarry = new ZMarry();
// zMarry.setId(marryInfoDto.getMarryId());
// zMarry.setMarryTime(marryInfoDto.getMarryTime());
// zMarry.setBearStatus(marryInfoDto.getBearStatus());
// zMarry.setHandbookStatus(marryInfoDto.getHandbookStatus());
// zMarry.setHandbookTime(marryInfoDto.getHandbookTime());
// zMarry.setOneBorn(marryInfoDto.getOneBorn());
// zMarry.setOneBornTime(marryInfoDto.getOneBornTime());
// zMarry.setContent(marryInfoDto.getContent());
// zMarry.setRemark(marryInfoDto.getRemark());
// zMarry.setDeleteStatus(0);
// zMarryService.updateById(zMarry);
// }
//
// //更新前任信息
// List oldSpouseList = marryInfoDto.getOldSpouseList();
// if(oldSpouseList!=null&&oldSpouseList.size()!=0){
// for (MarryUser marryUser : oldSpouseList) {
// //修改用户前任信息
// marryUserService.updateById(marryUser);
// //中间表不需要修改
// }
// }
// return AjaxResult.success();
// }
//
// public AjaxResult deleteOld(String spouseId){
// marryUserService.removeById(spouseId);
// return AjaxResult.success();
// }
}