package org.springblade.mdm.basesetting.machine;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import org.springblade.core.mp.base.BizServiceImpl;
|
import org.springblade.core.mp.support.Condition;
|
import org.springblade.core.tool.utils.BeanUtil;
|
import org.springblade.core.tool.utils.Func;
|
import org.springblade.mdm.basesetting.machine.entity.Machine;
|
import org.springblade.mdm.basesetting.machine.entity.MachineSpec;
|
import org.springblade.mdm.basesetting.machine.mapper.MachineMapper;
|
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.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.FileSystemUtils;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.nio.file.Files;
|
import java.nio.file.InvalidPathException;
|
import java.nio.file.Path;
|
import java.nio.file.Paths;
|
|
@Service
|
public class MachineService extends BizServiceImpl<MachineMapper, Machine> {
|
|
@Transactional
|
public void saveMachine(MachineSaveVO vo){
|
//TODO
|
Machine machine = new Machine();
|
BeanUtil.copyProperties(vo, machine);
|
this.save(machine);
|
}
|
|
public boolean updateMachine(MachineSaveVO vo) {
|
Machine machine = this.getById(vo.getId());
|
|
machine.setMachineSpec(vo.getMachineSpec());
|
machine.setName(vo.getName());
|
machine.setMachineGroupCode(vo.getMachineGroupCode());
|
machine.setManufacturer(vo.getManufacturer());
|
machine.setOperator(vo.getOperator());
|
machine.setControlSystem(vo.getControlSystem());
|
machine.setOwnerDept(vo.getOwnerDept());
|
machine.setPollingHours(vo.getPollingHours());
|
machine.setProgSendDir(vo.getProgSendDir());
|
machine.setProgReceiveDir(vo.getProgReceiveDir());
|
machine.setRemark(vo.getRemark());
|
|
return this.updateById(machine);
|
}
|
|
|
|
|
/**
|
* 查询分页
|
* @param query 查询参数
|
* @return 分页数据
|
*/
|
public IPage<MachineVO> pageQuery(MachineQueryVO query) {
|
|
LambdaQueryWrapper<Machine> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(query.getMachineGroupCode()!=null, Machine::getMachineGroupCode, query.getMachineGroupCode());
|
IPage<MachineVO> page = this.getBaseMapper().pageQuery(Condition.getPage(query),queryWrapper);
|
|
//MachineSpec.valueOf()
|
for (MachineVO record : page.getRecords()) {
|
if(record.getMachineSpec() != null){
|
MachineSpec spec = MachineSpec.valueOf(record.getMachineSpec());
|
record.setMachineSpecName(spec.getText());
|
}
|
|
}
|
return page;
|
}
|
|
/**
|
* 查询详情
|
* @param id 机床id
|
* @return
|
*/
|
public MachineVO detail(long id) {
|
Machine machine = this.getById(id);
|
|
MachineVO vo = new MachineVO();
|
BeanUtil.copyProperties(machine, vo);
|
|
return vo;
|
}
|
|
/**
|
* 产生机床回传结构数据
|
* @param id
|
*/
|
public void genMachineFileBackDirs(Long id) throws IOException {
|
Machine machine = this.getById(id);
|
if(Func.isNotBlank(machine.getProgReceiveDir())){
|
if(isLegalDirectoryPath(machine.getProgReceiveDir())) {
|
Path path = Paths.get(machine.getProgReceiveDir());
|
Files.createDirectories(path);
|
}else{
|
throw new RuntimeException("非法的目录格式");
|
}
|
}
|
}
|
|
/**
|
* 判断是否是合法的目录格式
|
* @param path
|
* @return
|
*/
|
static boolean isLegalDirectoryPath(String path) {
|
// 基础检查
|
if (path == null || path.trim().isEmpty()) {
|
return false;
|
}
|
|
// 使用NIO检查路径格式
|
Path nioPath;
|
try {
|
nioPath = Paths.get(path);
|
if (!nioPath.normalize().toString().equals(path)) {
|
return false; // 路径不规范
|
}
|
} catch (InvalidPathException ex) {
|
return false;
|
}
|
|
return true;
|
|
}
|
|
/**
|
* 根据机床编码获取机床
|
* @param machineCode 机床编码
|
* @return
|
*/
|
public Machine getByCode(String machineCode) {
|
|
return this.getOne(this.lambdaQuery().eq(Machine::getCode, machineCode));
|
}
|
}
|