package com.simuwang.manage.service.impl; import com.simuwang.base.common.conts.NavParseStatusConst; import com.simuwang.base.common.enums.NavReviewStatus; import com.simuwang.base.common.support.MybatisPage; import com.simuwang.base.common.util.DateUtils; import com.simuwang.base.common.util.StringUtil; import com.simuwang.base.mapper.daq.*; import com.simuwang.base.pojo.dos.*; import com.simuwang.base.pojo.dto.query.ParseDetailPageQuery; import com.simuwang.base.pojo.vo.*; import com.simuwang.manage.service.ParseEmailDetailService; import com.simuwang.shiro.utils.UserUtils; import com.smppw.common.pojo.ResultVo; import com.smppw.common.pojo.enums.status.ResultCode; import com.smppw.utils.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * FileName: ParseEmailDetailServiceImpl * Author: chenjianhua * Date: 2024/9/12 23:08 * Description: ${DESCRIPTION} */ @Service public class ParseEmailDetailServiceImpl implements ParseEmailDetailService { @Autowired private EmailFundNavMapper emailFundNavMapper; @Autowired private EmailFundAssetMapper emailFundAssetMapper; @Autowired private NavMapper navMapper; @Override public MybatisPage searchNavDetail(ParseDetailPageQuery parseDetailPageQuery) { if(StringUtil.isNotEmpty(parseDetailPageQuery.getUpdateEndDate())){ parseDetailPageQuery.setUpdateEndDate(DateUtil.getAroundDate(DateUtils.parse(parseDetailPageQuery.getUpdateEndDate(),DateUtils.YYYY_MM_DD),1)); } List dataList = emailFundNavMapper.searchNavDetail(parseDetailPageQuery); List voList = dataList.stream().map(EmailFundNavDO::toVo).collect(Collectors.toList()); long total = emailFundNavMapper.countNavDetail(parseDetailPageQuery); return MybatisPage.of(total,voList); } @Override public MybatisPage searchAssetDetail(ParseDetailPageQuery parseDetailPageQuery) { if(StringUtil.isNotEmpty(parseDetailPageQuery.getUpdateEndDate())){ parseDetailPageQuery.setUpdateEndDate(DateUtil.getAroundDate(DateUtils.parse(parseDetailPageQuery.getUpdateEndDate(),DateUtils.YYYY_MM_DD),1)); } List dataList = emailFundAssetMapper.searchAssetDetail(parseDetailPageQuery); List voList = dataList.stream().map(EmailFundAssetDO::toVo).collect(Collectors.toList()); long total = emailFundAssetMapper.countAssetDetail(parseDetailPageQuery); return MybatisPage.of(total,voList); } @Override public ResultVo reviewEmailNav(NavReviewVO navReviewVO) { ResultVo vo = new ResultVo(ResultCode.SUCCESS.getCode()); try{ if(navReviewVO.getReviewStatus().equals(NavReviewStatus.PASS.getCode())){ //审核通过的情况,需要修改解析状态以及入库数据 EmailFundNavDO emailFundNavDO = emailFundNavMapper.selectFundNavById(navReviewVO.getId()); emailFundNavDO.setRemark(navReviewVO.getRemark()); emailFundNavDO.setIsStored(1); emailFundNavDO.setExceptionStatus(NavParseStatusConst.SUCCESS); emailFundNavDO.setUpdateTime(new Date()); Integer userId = UserUtils.getLoginUser().getUserId(); emailFundNavDO.setUpdaterId(userId); emailFundNavMapper.updateEmailNav(emailFundNavDO); //将净值入库 NavDO navDO = navMapper.queryNavByFundIdDate(emailFundNavDO.getFundId(),DateUtils.format(emailFundNavDO.getPriceDate(),DateUtils.YYYY_MM_DD),emailFundNavDO.getChannelId()); if(navDO == null){ navDO = new NavDO(); navDO.setNav(emailFundNavDO.getNav()); navDO.setCumulativeNavWithdrawal(emailFundNavDO.getCumulativeNavWithdrawal()); navDO.setFundId(emailFundNavDO.getFundId()); navDO.setPriceDate(emailFundNavDO.getPriceDate()); navDO.setUpdaterId(userId); navDO.setCreatorId(userId); navDO.setIsvalid(1); navDO.setUpdateTime(new Date()); navDO.setCreateTime(new Date()); navMapper.saveNav(navDO); }else{ navDO.setNav(emailFundNavDO.getNav()); navDO.setCumulativeNavWithdrawal(emailFundNavDO.getCumulativeNavWithdrawal()); navDO.setUpdaterId(userId); navDO.setUpdateTime(new Date()); navMapper.updateNav(navDO); } } //保存审核备注 emailFundNavMapper.updateRemark(navReviewVO.getId(),navReviewVO.getRemark()); }catch (Exception e){ vo = new ResultVo(ResultCode.SAVE_FAILED.getCode()); } return vo; } }