package org.springblade.mdm.program.service; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.base.BizServiceImpl; import org.springblade.core.mp.support.Condition; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.mdm.flow.vo.ProgramOnMachineExcel; import org.springblade.mdm.gkw.task.entity.MachineBackTask; import org.springblade.mdm.gkw.task.service.MachineBackTaskService; import org.springblade.mdm.program.entity.ProgramOnMachine; import org.springblade.mdm.program.mapper.ProgramOnMachineMapper; import org.springblade.mdm.program.vo.ProgramOnMachineRecordQueryVO; import org.springblade.mdm.program.vo.ProgramOnMachineVO; 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.*; /** * 现场编程记录处理服务 * * @author yangys */ @Slf4j @Service public class ProgramOnMachineService extends BizServiceImpl { @Autowired private MachineBackTaskService machineBackTaskService; @Transactional(rollbackFor = Exception.class) public int importData(MultipartFile file) { List excelList = ExcelUtil.read(file, ProgramOnMachineExcel.class); List list = excelList.stream().map(excel -> { ProgramOnMachine progMachine = new ProgramOnMachine(); BeanUtil.copyProperties(excel, progMachine); return progMachine; }).toList(); List savedList = batchSaveData(list); machineBackTaskService.saveBatch(parseMachineBackTask(savedList)); return list.size(); } /** * 将数据转换为机床回传任务 * @param list 现场编制任务 * @return 回传任务列表 */ List parseMachineBackTask(List list){ List tasks = new ArrayList<>(); for(ProgramOnMachine m : list) { MachineBackTask task = new MachineBackTask(); task.setProgramName(m.getDrawingNo()+"-"+m.getProcessNo()+"-"+m.getProcessEdition()); task.setMachineCode(m.getMachineCode()); task.setDeviation(m.getDeviation()); task.setTaskType(MachineBackTask.TASK_TYPE_ON_MACHINE); task.setSegCount(0);//现场编制为0 tasks.add(task); } return tasks; } /** * 批量保存 * @param list */ List batchSaveData(List list) { List savedList = new ArrayList<>(); for (ProgramOnMachine progOnMachine : list) { if(!existsByProcessInstanceId(progOnMachine.getProcessInstanceId())){ save(progOnMachine); savedList.add(progOnMachine); } } return savedList; } /** * 根据流程实例id判定是否存在 * @param processInstanceId 流程实例id * @return 是否存在 */ boolean existsByProcessInstanceId(String processInstanceId){ return this.lambdaQuery().eq(ProgramOnMachine::getProcessInstanceId,processInstanceId).count() > 0; } /** * 现场编程导入记录查询 * @param queryVO 查询树据 * @return 分页树据 */ public IPage pageQuery(ProgramOnMachineRecordQueryVO queryVO) { return baseMapper.pageQuery(Condition.getPage(queryVO),queryVO);//IPage,queryVO } }