package org.springblade.mdm.program.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BizServiceImpl; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.basesetting.machine.service.MachineService; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.entity.NcNodeHis; import org.springblade.mdm.program.mapper.NcNodeHisMapper; import org.springblade.mdm.program.vo.NcNodeQueryVO; import org.springblade.mdm.program.vo.NcNodeVO; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.*; /** * 程序节点 * * @author yangys */ @Slf4j @Service @AllArgsConstructor public class NcNodeHisService extends BizServiceImpl { public final NcNodeService ncNodeService; /** * 将指定时间时候的节点合并到历史节点数据中,其他数据从node表中删除(只包含不程序包名和程序节点) * @param time */ public void mergeNodeToHisGeTime(Date time) { List nodes = ncNodeService.lambdaQuery().ge(NcNode::getUpdateTime,time) .in(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE).list(); for(NcNode node : nodes){ NcNodeHis nodeHis = new NcNodeHis(); BeanUtils.copyProperties(node,nodeHis); if(baseMapper.countById(nodeHis.getId())>0){ this.updateById(nodeHis); }else{ this.save(nodeHis); } } ncNodeService.deleteOldEditionNodeData(); } /** * 查询偏离单的序号 * @param programPkgNode 偏离单的程序包名节点 * @return 序号 */ public long getDeviationSerialForNode(NcNodeHis programPkgNode) { return lambdaQuery().eq(NcNodeHis::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE) .eq(NcNodeHis::getName,programPkgNode.getName()) .eq(NcNodeHis::getDrawingNo,programPkgNode.getDrawingNo()) .eq(NcNodeHis::getProcessNo,programPkgNode.getProcessNo()) .eq(NcNodeHis::getProcessEdition,programPkgNode.getProcessEdition()) .isNotNull(NcNodeHis::getDeviation) .le(NcNodeHis::getCreateTime,programPkgNode.getCreateTime()) //时间小于等于当前节点 .count(); } /** * 查询节点的历史列表(节点的上级节点”程序包名“因为存在多个版本,所以历史记录也需要根据不同版本程序包名进行查询) * @param id * @return */ @Transactional(readOnly = true) public List historyByNodeId(Long id) { NcNodeHis node = this.getById(id); /* List nodes = lambdaQuery().eq(NcNodeHis::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE) .eq(NcNodeHis::getHisSerial, node.getHisSerial()).orderByDesc(NcNodeHis::getCreateTime).list(); List voList = new ArrayList<>(); nodes.forEach(ncNode -> { NcNodeVO vo = new NcNodeVO(); BeanUtils.copyProperties(ncNode, vo); vo.setCreateUserName(); voList.add(vo); });*/ return this.baseMapper.packageHistoryBySerial(node.getHisSerial()); //return voList; } }