package org.springblade.mdm.basesetting.machine.service; import io.jsonwebtoken.lang.Collections; import org.apache.commons.lang3.StringUtils; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.base.BizServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.StringUtil; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.basesetting.machine.mapper.MachineMapper; import org.springblade.mdm.basesetting.machine.vo.MachineExcel; import org.springblade.mdm.basesetting.producedivision.entity.MdmDept; import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService; import org.springblade.mdm.basesetting.producedivision.vo.ImportResult; import org.springblade.system.feign.IDictBizClient; import org.springblade.system.feign.ISysClient; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.List; import java.util.Optional; @Service public class MachineImportService extends BizServiceImpl { @Autowired private ISysClient sysClient; @Autowired private IDictBizClient dictBizClient; @Autowired private MdmDeptService mdmDeptService; @Autowired private MachineService machineService; @Transactional public ImportResult importMachines(MultipartFile file) { ImportResult res1 = new ImportResult(); if(file == null || file.isEmpty()){ res1.setMessage("文件为空"); return res1; } List list = ExcelUtil.read(file, MachineExcel.class); return transAndSave(list); } @Transactional ImportResult transAndSave(List list){ ImportResult result1= checkImport( list); if(result1.getFailure()>0){ return result1; } //machine_spec //machine_control_system //machine_control_system R> machineSpecListRes = dictBizClient.getList("machine_spec"); List machineSpecList = machineSpecListRes.isSuccess() ? machineSpecListRes.getData() : Collections.emptyList(); R> machineSystemRes = dictBizClient.getList("machine_control_system"); List machineSystemList = machineSystemRes.isSuccess() ? machineSystemRes.getData() : Collections.emptyList(); R> machineGroupRes = dictBizClient.getList("machine_group"); List machineGroupList = machineGroupRes.isSuccess() ? machineGroupRes.getData() : Collections.emptyList(); DictBiz emptyDit = new DictBiz(); List entityList = new ArrayList<>(); MdmDept ownerDept; ImportResult ir = new ImportResult(); int failCount = 0; int successCount = 0; StringBuilder msg = new StringBuilder(); for(MachineExcel excelVO : list){ Machine machine = new Machine(); BeanUtils.copyProperties(excelVO, machine); ownerDept = mdmDeptService.getByName(excelVO.getOwnerDeptName()); if(ownerDept != null){ machine.setOwnerDept(ownerDept.getId()); } //类型 Optional specOpt = machineSpecList.stream().filter(s -> StringUtils.equals(s.getDictValue(),excelVO.getMachineSpecName())).findFirst(); machine.setMachineSpec(specOpt.orElse(emptyDit).getDictKey()); //系统 Optional sysOpt = machineSystemList.stream().filter(s -> StringUtils.equals(s.getDictValue(),excelVO.getControlSystemName())).findFirst(); machine.setControlSystem(sysOpt.orElse(emptyDit).getDictKey()); //机床组 //key = FANUK, Optional groupOpt = machineGroupList.stream().filter(s -> StringUtils.equals(s.getDictValue(),excelVO.getMachineGroupName())).findFirst(); machine.setMachineGroupCode(groupOpt.orElse(emptyDit).getDictKey()); //entityList.add(machine); Machine oriMachine = machineService.getByCode(machine.getCode()); if(oriMachine != null){ msg.append(machine.getCode()).append("机床编码重复:").append(machine.getCode()); failCount ++; }else if(machine.getMachineGroupCode() == null){ msg.append(excelVO.getCode()+"机床组不匹配"+excelVO.getMachineGroupName()).append("
"); failCount ++; }else if(machine.getMachineSpec() == null){ msg.append(excelVO.getCode()+"机床类型不匹配"+excelVO.getMachineSpecName()).append("
"); failCount ++; }else { try { machineService.save(machine); successCount++; }catch(Exception e){ log.error("入库失败",e); failCount ++; msg.append(excelVO.getCode()+"入库失败"); } } } ir.setFailure(failCount); ir.setSuccess(successCount); if(ir.getFailure()==0){ ir.setMessage("导入成功"); }else{ ir.setMessage(msg.toString()); } return ir; } private ImportResult checkImport(List list) { StringBuffer msg = new StringBuffer();; int failCount = 0; MachineExcel excelVO; String temp; for(int i=0;i