| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- 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.extension.service.impl.ServiceImpl;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.inv.dao.InvInsExternalBillsDetailsMapper;
- import com.ydtech.modules.inv.model.InvExternalBills;
- import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
- import com.ydtech.modules.inv.model.dto.InvInsChinaCoalExcelDto;
- import com.ydtech.modules.inv.model.dto.InvInsImportDto;
- import com.ydtech.modules.inv.model.dto.InvInsSimpleSysExcelDto;
- import com.ydtech.modules.inv.model.dto.InvInsStandardExcelDto;
- import com.ydtech.modules.inv.service.InvExternalBillsService;
- import com.ydtech.modules.inv.service.InvInsExternalBillsDetailsService;
- import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
- import com.ydtech.modules.protocol.service.PtlAgreementProductCostsService;
- import com.ydtech.utils.BigDecimalUtils;
- import com.ydtech.utils.StringUtils;
- import com.ydtech.utils.excel.ExcelUtils2;
- import org.springframework.beans.BeanUtils;
- 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;
- /**
- * @author Administrator
- * @description 针对表【inv_ins_external_bills_details(财务 - 保险公司 - 外部票据 - 详情)】的数据库操作Service实现
- * @createDate 2023-06-06 11:08:53
- */
- @Service
- public class InvInsExternalBillsDetailsServiceImpl extends ServiceImpl<InvInsExternalBillsDetailsMapper, InvInsExternalBillsDetails>
- implements InvInsExternalBillsDetailsService {
- @Resource
- InvExternalBillsService invExternalBillsService;
- @Resource
- PtlAgreementProductCostsService ptlAgreementProductCostsService;
- @Override
- public boolean deleteByBatchNum(String batchNum) {
- LambdaQueryWrapper<InvInsExternalBillsDetails> lqw = new LambdaQueryWrapper();
- lqw.eq(InvInsExternalBillsDetails::getBatchNum, batchNum);
- return remove(lqw);
- }
- @Override
- public InvExternalBills importData(InvInsImportDto importDto, MultipartFile file, InvExternalBills iieb) throws Exception {
- List<InvInsExternalBillsDetails> list = buildImportExcel(importDto, file, iieb);
- iieb = InvExternalBills.buildImportInvExternalBills(iieb, list);
- boolean boo = saveBatch(list);
- if (!boo) {
- iieb.setImportStatus("0");
- iieb.setErrorMsg("保存数据出错");
- }
- return iieb;
- }
- /**
- * 构造导入excel数据
- *
- * @author: lig
- * @date: 2023年07月06日 0006
- */
- private List<InvInsExternalBillsDetails> buildImportExcel(InvInsImportDto importDto, MultipartFile file, InvExternalBills iieb) throws Exception {
- List<InvInsExternalBillsDetails> list;
- Map<String, InvInsExternalBillsDetails> m = new HashMap();
- List<InvInsStandardExcelDto> standardList = ExcelUtils2.importExcel(file, InvInsStandardExcelDto.class, 0, 1, 1);
- standardList.stream().forEach(a -> {
- List<String> filedList = new ArrayList<>();
- filedList.add(a.getInsuranceCompanyUser());
- //获取费用
- List<PtlAgreementProductCosts> costList = ptlAgreementProductCostsService.selectByCompanyId(iieb.getInsCompanyId(),filedList);
- Map<String,String> costMap = new HashMap();
- costList.stream().forEach(cost ->{
- costMap.put(cost.getProductName(),cost.getCostsProportion());
- });
- InvInsExternalBillsDetails iiebd = new InvInsExternalBillsDetails();
- if (m.containsKey(a.getPlateNum())) {
- iiebd = m.get(a.getPlateNum());
- } else {
- BeanUtil.copyProperties(a, iiebd);
- }
- //产品匹配 添加费用
- if(costMap.containsKey(a.getProductName())){
- if(a.getProductName().equals("单交")){
- iiebd.setMliftaCost(new BigDecimal(costMap.get(a.getProductName())));
- }
- }
- buildStandardDtoParam(a, iiebd);
- m.put(a.getPlateNum(), iiebd);
- });
- // //标准模板
- // if (importDto.isStandard()) {
- // List<InvInsStandardExcelDto> standardList = ExcelUtils2.importExcel(file, InvInsStandardExcelDto.class, 0, 1, 1);
- // standardList.stream().forEach(a -> {
- //
- //
- // List<String> filedList = new ArrayList<>();
- // filedList.add(a.getInsuranceCompanyUser());
- // //获取费用
- // List<PtlAgreementProductCosts> costList = ptlAgreementProductCostsService.selectByCompanyId(iieb.getInsCompanyId(),filedList);
- // Map<String,String> costMap = new HashMap();
- // costList.stream().forEach(cost ->{
- // costMap.put(cost.getProductName(),cost.getCostsProportion());
- // });
- //
- // InvInsExternalBillsDetails iiebd = new InvInsExternalBillsDetails();
- // if (m.containsKey(a.getPlateNum())) {
- // iiebd = m.get(a.getPlateNum());
- //
- // } else {
- // BeanUtil.copyProperties(a, iiebd);
- // }
- //
- //
- // //产品匹配 添加费用
- // if(costMap.containsKey(a.getProductName())){
- // if(a.getProductName().equals("单交")){
- // iiebd.setMliftaCost(new BigDecimal(costMap.get(a.getProductName())));
- // }
- //
- // }
- //
- // buildStandardDtoParam(a, iiebd);
- // m.put(a.getPlateNum(), iiebd);
- // });
- //
- // } else if (iieb.getInsCompanyId().equals("000019")) {
- // //中煤
- // List<InvInsChinaCoalExcelDto> zmlist = ExcelUtils2.importExcel(file, InvInsChinaCoalExcelDto.class, 0, 1, 1);
- // zmlist.stream().forEach(a -> {
- //
- // InvInsExternalBillsDetails iiebd = new InvInsExternalBillsDetails();
- // if (m.containsKey(a.getPlateNum())) {
- // iiebd = m.get(a.getPlateNum());
- //
- // } else {
- // BeanUtil.copyProperties(a, iiebd);
- // }
- // buildChinaCoalDtoParam(a, iiebd);
- // m.put(a.getPlateNum(), iiebd);
- // });
- //
- // } else {
- // //万家模板
- // List<InvInsSimpleSysExcelDto> wjlist = ExcelUtils2.importExcel(file, InvInsSimpleSysExcelDto.class, 0, 1, 1);
- // wjlist.stream().forEach(b -> {
- //
- // InvInsExternalBillsDetails iiebd = new InvInsExternalBillsDetails();
- // if (m.containsKey(b.getPlateNum())) {
- // iiebd = m.get(b.getPlateNum());
- //
- // } else {
- // BeanUtil.copyProperties(b, iiebd);
- // }
- //
- // buildSimpleSysDtoParam(b, iiebd);
- //
- //
- // m.put(b.getPlateNum(), iiebd);
- //
- //
- // });
- // }
- //判断车牌号是否存在 保司
- List<String> listKey = m.keySet().stream().collect(Collectors.toList());
- LambdaQueryWrapper<InvInsExternalBillsDetails> lqw = new LambdaQueryWrapper();
- lqw.select(InvInsExternalBillsDetails::getPlateNum);
- lqw.in(InvInsExternalBillsDetails::getPlateNum, listKey);
- //查询获取对象具体字段的集合
- List<String> longs = listObjs(lqw, new Function<Object, String>() {
- @Override
- public String apply(Object id) {
- return id.toString();
- }
- });
- List<InvInsExternalBillsDetails> plateNumRepetitionList = list(lqw);
- if (plateNumRepetitionList.size() > 0 && plateNumRepetitionList.size() < 5) {
- throw new SystemException("车牌号已经存在:" + longs);
- } else if (plateNumRepetitionList.size() > 5) {
- throw new SystemException("大量车牌号已经存在");
- }
- list = new ArrayList<>(m.values());
- return list;
- }
- /**
- * 构造 中煤 dto参数
- *
- * @author: lig
- * @date: 2023年07月10日 0010
- */
- void buildChinaCoalDtoParam(InvInsChinaCoalExcelDto dto, InvInsExternalBillsDetails iiebd) {
- iiebd.setStatus("0");
- if (dto.getInsKindName().equals("机动车交通事故责任强制保险")) {
- iiebd.setMlifta(dto.getPremium());
- iiebd.setVavt(dto.getVavt());
- } else {
- //商业保费
- iiebd.setCip(dto.getPremium());
- //三者保额
- iiebd.setTpi(dto.getTpi());
- //三者保费
- iiebd.setTpiCost(dto.getTpiPremium());
- }
- }
- /**
- * 构造 简易系统(万家) dto参数
- *
- * @author: lig
- * @date: 2023年07月10日 0010
- */
- void buildSimpleSysDtoParam(InvInsSimpleSysExcelDto simpleSysDto, InvInsExternalBillsDetails iiebd) {
- iiebd.setStatus("0");
- if (StringUtils.isNotEmpty(simpleSysDto.getInsKindName()) && simpleSysDto.getInsKindName().equals("交强险")) {
- iiebd.setMlifta(simpleSysDto.getPremium());
- iiebd.setVavt(simpleSysDto.getVavt());
- } else {
- //商业保费
- iiebd.setCip(simpleSysDto.getPremium());
- // //三者保额
- // iiebd.setTpi(simpleSysDto.getTpi());
- // //三者保费
- // iiebd.setTpiCost(simpleSysDto.getTpiPremium());
- }
- }
- /**
- * 构造 标准模板 dto参数
- *
- * @author: lig
- * @date: 2023-07-10
- */
- void buildStandardDtoParam(InvInsStandardExcelDto simpleSysDto, InvInsExternalBillsDetails iiebd) {
- iiebd.setInsHabit(simpleSysDto.getProductName());
- iiebd.setStatus("0");
- }
- }
|