package com.ydtech.modules.inv.service.impl; import cn.hutool.core.date.DateTime; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.inv.dao.InvSourceMapper; import com.ydtech.modules.inv.model.excel.InvSourceExcel; import com.ydtech.modules.inv.model.po.InvSource; import com.ydtech.modules.inv.service.InvSourceService; import com.ydtech.modules.inv.utils.EasyExcelUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @author Administrator * @description 针对表【inv_source(来源表)】的数据库操作Service实现 * @createDate 2024-01-20 10:28:34 */ @Service public class InvSourceServiceImpl extends ServiceImpl implements InvSourceService { @Value("${upload.file.path}") String uploadFilePath; @Autowired InvSourceService invSourceService; @Override public HttpResult readExcel(String file) { List invSourceExcels = EasyExcelUtils.readInvSourceExcel(uploadFilePath + file, InvSourceExcel.class); List invSources = JSON.parseArray(JSONArray.toJSONString(invSourceExcels), InvSource.class); SysUser user = BaseController.getUser(); InvSource invSource = new InvSource(); invSource.setRevenueName(String.valueOf(user)); DateTime dateTime = new DateTime(); invSource.setRevenueTime(String.valueOf(dateTime)); boolean result = invSourceService.saveOrUpdateBatchWithConditions(invSources); return result ? HttpResult.ok("导入成功") : HttpResult.error("导入失败"); } @Override public boolean save(InvSource invSource) { return invSourceService.save(invSource); } /** * 导入InsSource 处理重复导入 * @param invSourceList * @return */ @Override @Transactional public boolean saveOrUpdateBatchWithConditions(List invSourceList) { for (InvSource invSource : invSourceList) { InvSource one = baseMapper.selectOne(new LambdaQueryWrapper() .eq(InvSource::getLicenseno, invSource.getLicenseno()) .eq(InvSource::getJqPolicyId, invSource.getJqPolicyId()) .eq(InvSource::getSyPolicyId, invSource.getSyPolicyId()) .eq(InvSource::getNonCarPolicyId, invSource.getNonCarPolicyId()) .eq(InvSource::getRevenueTime,invSource.getRevenueTime())); if (one != null) { invSource.setId(one.getId()); baseMapper.updateById(invSource); } else { baseMapper.insert(invSource); } } return true; } }