|
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<ProgramOnMachineMapper, ProgramOnMachine> {
|
@Autowired
|
private MachineBackTaskService machineBackTaskService;
|
|
@Transactional(rollbackFor = Exception.class)
|
public int importData(MultipartFile file) {
|
List<ProgramOnMachineExcel> excelList = ExcelUtil.read(file, ProgramOnMachineExcel.class);
|
|
List<ProgramOnMachine> list = excelList.stream().map(excel -> {
|
ProgramOnMachine progMachine = new ProgramOnMachine();
|
BeanUtil.copyProperties(excel, progMachine);
|
return progMachine;
|
}).toList();
|
|
List<ProgramOnMachine> savedList = batchSaveData(list);
|
machineBackTaskService.saveBatch(parseMachineBackTask(savedList));
|
return list.size();
|
}
|
|
/**
|
* 将数据转换为机床回传任务
|
* @param list 现场编制任务
|
* @return 回传任务列表
|
*/
|
List<MachineBackTask> parseMachineBackTask(List<ProgramOnMachine> list){
|
List<MachineBackTask> 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<ProgramOnMachine> batchSaveData(List<ProgramOnMachine> list) {
|
List<ProgramOnMachine> 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<ProgramOnMachineVO> pageQuery(ProgramOnMachineRecordQueryVO queryVO) {
|
return baseMapper.pageQuery(Condition.getPage(queryVO),queryVO);//IPage<ProgramOnMachineExcel>,queryVO
|
}
|
}
|