| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- package com.ydtech.modules.inv.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- 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.ydtech.core.page.BasePageVO;
- import com.ydtech.core.page.PageResult;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.admin.model.SysUser;
- import com.ydtech.modules.esm.model.EsmInsCompany;
- import com.ydtech.modules.esm.service.EsmInsCompanyService;
- import com.ydtech.modules.inv.dao.InvChannelsExternalBillsDetailsMapper;
- import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
- import com.ydtech.modules.inv.model.InvExternalBills;
- import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
- import com.ydtech.modules.inv.model.dto.InvInsChannelExcelDto;
- import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
- import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
- import com.ydtech.modules.inv.model.vo.res.InvChannelMatchInsResVO;
- import com.ydtech.modules.inv.model.vo.res.InvCompanyResVO;
- import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsService;
- import com.ydtech.modules.inv.service.InvExternalBillsService;
- import com.ydtech.utils.StringUtils;
- import com.ydtech.utils.excel.ExcelUtils2;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import java.io.IOException;
- import java.math.BigDecimal;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.function.Function;
- import java.util.stream.Collectors;
- @Service
- public class InvChannelsExternalBillsDetailsServiceImpl extends ServiceImpl<InvChannelsExternalBillsDetailsMapper, InvChannelsExternalBillsDetails>
- implements InvChannelsExternalBillsDetailsService {
- @Resource
- InvExternalBillsService invExternalBillsService;
- @Resource
- private EsmInsCompanyService esmInsCompanyService;
- @Override
- public PageResult<InvBaseChannelMatchInsResVO> gainChannelMatchIns(InvChannelExternalBillsDetailsReqVO reqVo) {
- //获取总数量
- int total = super.baseMapper.gainChannelMatchInsCount(reqVo);
- // //计算mysql分页起索引
- // int firstIndex = reqVo.getPageNum()==1?0:(reqVo.getPageNum()-1) * reqVo.getPageSize() +1;
- // //计算mysql分页总页数
- // int totalPages = total % reqVo.getPageSize() == 0?total / reqVo.getPageSize():total / reqVo.getPageSize() +1;
- // PageResult pr = new PageResult();
- // pr.setPageNum(reqVo.getPageNum());
- // pr.setPageSize(reqVo.getPageSize());
- // pr.setTotalSize(total);
- // pr.setTotalPages(totalPages);
- //请求替换分页开始索引
- reqVo.setPageNum(PageResult.buildPageLimitStart(reqVo));
- List<InvBaseChannelMatchInsResVO> resVOList = super.baseMapper.gainChannelMatchIns(reqVo);
- return PageResult.buildPageResult(reqVo, total, resVOList);
- }
- @Override
- public boolean deleteByBatchNum(String batchNum) {
- LambdaQueryWrapper<InvChannelsExternalBillsDetails> lqw = new LambdaQueryWrapper();
- lqw.eq(InvChannelsExternalBillsDetails::getBatchNum, batchNum);
- return remove(lqw);
- }
- @Override
- public InvExternalBills importData(MultipartFile file, InvExternalBills iieb) {
- String errorMsg = "";
- List<InvChannelsExternalBillsDetails> list = null;
- try {
- List<InvInsChannelExcelDto> dtoList = ExcelUtils2.importExcel(file, InvInsChannelExcelDto.class, 0, 1, 1);
- dtoList = dtoList.stream().filter(l -> l.getPlateNum() != null).collect(Collectors.toList());
- if(null == dtoList || dtoList.size() < 1){
- errorMsg = "导入失败!匹配数据 0 条";
- }
- Map<String, InvChannelsExternalBillsDetails> m = new HashMap();
- dtoList.stream().forEach(a ->{
- InvChannelsExternalBillsDetails icebd = new InvChannelsExternalBillsDetails();
- if (m.containsKey(a.getPlateNum())) {
- icebd = m.get(a.getPlateNum());
- } else {
- BeanUtil.copyProperties(a, icebd);
- //对应保险公司
- EsmInsCompany insCompany = esmInsCompanyService.findInsCompanyByName(a.getInsCompany());
- if(null == insCompany)throw new SystemException("保险公司:" + a.getInsCompany() + "不匹配");
- icebd.setInsCompanyId(insCompany.getId());
- icebd.setInsCompany(insCompany.getName());
- icebd.setMliftaCost(a.getMliftaCost());
- icebd.setStatus("1");
- }
- m.put(a.getPlateNum(), icebd);
- });
- //获取车牌号list
- List<String> listKey = m.keySet().stream().collect(Collectors.toList());
- //获取车牌号重复的list 渠道
- List<String> longs = gainPlateNumRepetitionList(listKey);
- if(longs.size() > 0){
- errorMsg = "车牌号已经存在:"+longs;
- // throw new SystemException("车牌号已经存在:"+longs);
- }else{
- list = new ArrayList<>(m.values());
- }
- } catch (IOException e) {
- errorMsg = "导入失败!" + e.getMessage();
- }
- if (StringUtils.isNotEmpty(errorMsg)) {
- iieb.setImportStatus("0");
- iieb.setErrorMsg(errorMsg);
- } else {
- BigDecimal totalMlifta = BigDecimal.ZERO;
- BigDecimal totalVavt = BigDecimal.ZERO;
- BigDecimal totalCip = BigDecimal.ZERO;
- for (int i = 0; i < list.size(); i++) {
- list.get(i).setBatchNum(iieb.getId());
- totalMlifta = totalMlifta.add(list.get(i).getMlifta());
- }
- boolean boo = saveBatch(list);
- iieb.setInventoryQuantity(list.size());
- iieb = InvExternalBills.buildImportInvExternalBills(iieb, boo, totalMlifta, totalVavt, totalCip);
- }
- return iieb;
- // invExternalBillsService.updateById(iieb);
- }
- @Override
- public void pay(List<String> ids, SysUser user) {
- //更新批次号状态
- LambdaUpdateWrapper<InvChannelsExternalBillsDetails> luw = new LambdaUpdateWrapper<>();
- luw.set(InvChannelsExternalBillsDetails::getStatus,"2");
- luw.set(InvChannelsExternalBillsDetails::getPayOperatorId,user.getId());
- luw.set(InvChannelsExternalBillsDetails::getPayOperator,user.getName());
- luw.in(InvChannelsExternalBillsDetails::getId,ids);
- update(luw);
- }
- /**
- * 获取车牌号重复的list 渠道
- *
- * @author: lig
- * @date: 2023年07月07日 0007
- */
- private List<String> gainPlateNumRepetitionList(List<String> listKey){
- LambdaQueryWrapper<InvChannelsExternalBillsDetails> lqw = new LambdaQueryWrapper();
- lqw.select(InvChannelsExternalBillsDetails::getPlateNum);
- lqw.in(InvChannelsExternalBillsDetails::getPlateNum,listKey);
- //查询获取对象具体字段的集合
- List<String> longs = listObjs(lqw, new Function<Object, String>() {
- @Override
- public String apply(Object id) {
- return id.toString();
- }
- });
- return longs;
- }
- }
|