package org.springblade.mdm.basesetting.machine.service; import com.baomidou.mybatisplus.core.metadata.IPage; import io.jsonwebtoken.lang.Collections; import org.apache.commons.lang3.StringUtils; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BizServiceImpl; import org.springblade.core.mp.support.Condition; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.machine.MachineService; 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.machine.vo.MachineQueryVO; import org.springblade.mdm.basesetting.machine.vo.MachineSaveVO; import org.springblade.mdm.basesetting.machine.vo.MachineVO; import org.springblade.mdm.basesetting.producedivision.entity.MdmDept; import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision; 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.Dept; 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.io.IOException; import java.nio.file.Files; import java.nio.file.InvalidPathException; import java.nio.file.Path; import java.nio.file.Paths; 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 String importMachines(MultipartFile file) { List list = ExcelUtil.read(file, MachineExcel.class); return "";//导入成功,给空串,部分不成功给提示 } @Transactional ImportResult transAndSave(List list){ //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()); //机床组 Optional groupOpt = machineGroupList.stream().filter(s -> StringUtils.equals(s.getDictValue(),excelVO.getMachineGroupName())).findFirst(); machine.setControlSystem(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 ++; } machineService.save(machine); successCount ++; } ir.setFailure(failCount); ir.setSuccess(successCount); if(ir.getFailure()==0){ ir.setMessage("导入成功"); }else{ ir.setMessage(msg.toString()); } return ir; } }