From 43b6b4b905fb272e2d7d9c0738610c4204c958ce Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 22 八月 2025 01:07:24 +0800
Subject: [PATCH] 增加首页搜索接口参数调整
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java | 354 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 352 insertions(+), 2 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
index cee231b..d275a46 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -5,13 +5,20 @@
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.MachineService;
+import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.mapper.NcNodeMapper;
-import org.springblade.mdm.program.vo.NcNodeVO;
+import org.springblade.mdm.program.vo.*;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
/**
* 绋嬪簭鑺傜偣
@@ -23,16 +30,31 @@
@AllArgsConstructor
public class NcNodeService extends BizServiceImpl<NcNodeMapper, NcNode> {
+ private final MachineService machineService;
public void saveNcCode(NcNodeVO vo) {
NcNode ncNode = new NcNode();
BeanUtils.copyProperties(vo, ncNode);
ncNode.setId(null);
+ ncNode.setParentIds(buildParentIds(vo.getParentId()));
this.save(ncNode);
}
+ /**
+ * 鏋勫缓鐖秈d鑺傜偣
+ * @param nodeId 鑺傜偣id
+ * @return
+ */
+ String buildParentIds(long nodeId){
+ if(nodeId == 0L){
+ return "0";
+ }
+ NcNode pNode = this.baseMapper.selectById(nodeId);
+
+ return pNode.getParentIds()+","+pNode.getId();
+ }
/**
* 鏇存柊鑺傜偣
* @param vo
@@ -43,6 +65,9 @@
ncNode.setNodeType(vo.getNodeType());
ncNode.setDescription(vo.getDescription());
ncNode.setRemark(vo.getRemark());
+ ncNode.setMachineCode(vo.getMachineCode());
+ ncNode.setParentIds(buildParentIds(vo.getParentId()));
+
this.updateById(ncNode);
}
@@ -52,11 +77,336 @@
* @return
*/
public List<NcNodeVO> lazyList(Long parentId) {
-// 鍒ゆ柇鐐瑰嚮鎼滅储浣嗘槸娌℃湁鏌ヨ鏉′欢鐨勬儏鍐�
+ // 鍒ゆ柇鐐瑰嚮鎼滅储浣嗘槸娌℃湁鏌ヨ鏉′欢鐨勬儏鍐�
if (Func.isEmpty(parentId)) {
parentId = 0L;
}
return baseMapper.lazyList(parentId);
}
+
+
+ /**
+ * 鏌ヨ鐜版湁鍥哄寲鐨勭▼搴忥紝鏆傚畾鏉′欢锛氶浂缁勪欢鍙风浉鍚岋紝涓旀槸鍚屼竴鏈哄簥缁�
+ * * @param name 绋嬪簭鍚嶇О
+ * @param name
+ * @return
+ */
+ public NcNode getLastProgramNode(String name) {
+ return this.getBaseMapper().getLastProgramNode(name);
+ }
+
+
+ /**
+ * 杞﹁鑺傜偣
+ * @param queryVO
+ * @return
+ */
+ /*
+ public List<Long> searchDrawing(NcNodeQueryVO queryVO) {
+ List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_DRAWING_NO)
+ .eq(NcNode::getIsLastEdition,1)
+ .eq(NcNode::getName,queryVO.getDrawingNo())
+ .ge(queryVO.getCreateTimeBegin()!=null,NcNode::getCreateTime,queryVO.getCreateTimeBegin())
+ .le(queryVO.getCreateTimeEnd()!=null,NcNode::getCreateTime,queryVO.getCreateTimeEnd())
+ .and(i->{
+
+ i.or().likeRight(queryVO.getProgramStatus().contains("1"),NcNode::getParentIds,"0,1,");
+ i.or().likeRight(queryVO.getProgramStatus().contains("2"),NcNode::getParentIds,"0,2,");
+ i.or().likeRight(queryVO.getProgramStatus().contains("3"),NcNode::getParentIds,"0,3,");
+ }).list();
+
+ return nodes.stream().map(NcNode::getId).toList();
+ }*/
+ /**
+ * 棣栭〉鏍戞煡璇�
+ * @param queryVO
+ * @return
+ */
+ public List<NcNodeVO> searchList(NcNodeOldQueryVO queryVO) {
+ //1.鏍规嵁鍏宠繘瀛楀拰鑺傜偣绫诲瀷鏌ヨ鍒濆鍒楄〃,鏌ヨ鐨勫師濮嬪垪琛紝闇�瑕乭asChild瀛楁锛屾墍浠ヤ娇鐢╩apper.xml
+ List<NcNodeVO> oriList = this.getBaseMapper().searchList(queryVO);
+ if ("10".equals(queryVO.getNodeType())) {
+ //鎼滅储鐨勬牴绾у埆锛岀洿鎺ヨ繑鍥�
+ return oriList;
+ }
+
+ List<NcNodeVO> allVos = new ArrayList<NcNodeVO>();//宸茬粡鍔犲叆杩囩殑鑺傜偣锛岀敤浜庡幓閲�
+ List<NcNodeVO> rootVos = new ArrayList<NcNodeVO>();
+
+ for(NcNodeVO vo : oriList){
+ allVos.add(vo);
+ //涓婄骇鍚勭骇鐨勮妭鐐�
+ List<NcNodeVO> parents = this.getBaseMapper().searchListInIds(Func.toLongList(vo.getParentIds()));
+
+ for(NcNodeVO pvo : parents){
+ if(pvo.getParentId() == 0L){
+ rootVos.add(pvo);
+ }
+ allVos.add(pvo);
+ }
+ }
+ for(NcNodeVO root : rootVos){
+ addNodeChildren(root, allVos);
+
+ }
+ return rootVos;
+ }
+
+ /**
+ * 棣栭〉鎼滅储 鏂扮殑
+ * @param queryVO 鏌ヨ鍙傛暟
+ * @return
+ */
+ public List<NcNodeVO> searchList2(NcNodeQueryVO queryVO) {
+ //1.鏍规嵁闆剁粍浠跺彿鍜屽垱寤烘椂闂存煡璇㈠垵濮嬪垪琛�,鏌ヨ鐨勫師濮嬪垪琛紝闇�瑕乭asChild瀛楁锛屾墍浠ヤ娇鐢╩apper.xml
+ if(queryVO.getCreateTimeEnd()!=null){
+ queryVO.setCreateTimeEnd(queryVO.getCreateTimeEnd().plusDays(1));
+ }
+ List<NcNodeVO> oriList = this.getBaseMapper().searchList2(queryVO);
+
+
+ List<NcNodeVO> allVos = new ArrayList<>();//宸茬粡鍔犲叆杩囩殑鑺傜偣锛岀敤浜庡幓閲�
+ List<NcNodeVO> rootVos = new ArrayList<>();
+
+ for(NcNodeVO vo : oriList){
+ allVos.add(vo);
+ //涓婄骇鍚勭骇鐨勮妭鐐�
+ List<NcNodeVO> parents = this.getBaseMapper().searchListInIds(Func.toLongList(vo.getParentIds()));
+
+ for(NcNodeVO pvo : parents){
+ if(pvo.getParentId() == 0L){
+ rootVos.add(pvo);
+ }
+ allVos.add(pvo);
+ }
+ }
+ for(NcNodeVO root : rootVos){
+ addNodeChildren(root, allVos);
+ }
+ return rootVos;
+ }
+
+ void addNodeChildren(NcNodeVO node, List<NcNodeVO> allNodes) {
+ for(NcNodeVO vo : allNodes){
+ if(Objects.equals(vo.getParentId(), node.getId())){
+ node.addChildren(vo);
+ }
+ }
+
+ if(node.getChildren()!=null && !node.getChildren().isEmpty()){
+ for(NcNodeVO child : node.getChildren()){
+ addNodeChildren(child, allNodes);
+ }
+ }
+ }
+
+ NcNodeVO toNodeVO(NcNode node){
+ NcNodeVO vo = new NcNodeVO();
+
+ BeanUtils.copyProperties(node, vo);
+
+ return vo;
+ }
+
+ /**
+ * 鑾峰彇绋嬪簭鍖呭悕鐨勬暟鎹�
+ * @param programName 绋嬪簭鍚嶇О锛堢▼搴忓寘鍚嶏級
+ * @return 绋嬪簭鎶ュ寘鍚嶇殑鑺傜偣
+ */
+ public NcNode getProgramPackageByName(String programName) {
+ List<NcNode> pkgs = this.lambdaQuery().eq(NcNode::getName, programName)
+ .eq(NcNode::getIsLastEdition,1)
+ .eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).list();
+ if(pkgs.isEmpty()){
+ return null;
+ }else{
+ return pkgs.get(0);
+ }
+
+ }
+
+ /**
+ * 鏌ヨ鑺傜偣鐨勫巻鍙插垪琛紙鑺傜偣鐨勪笂绾ц妭鐐光�濈▼搴忓寘鍚嶁�滃洜涓哄瓨鍦ㄥ涓増鏈紝鎵�浠ュ巻鍙茶褰曚篃闇�瑕佹牴鎹笉鍚岀増鏈▼搴忓寘鍚嶈繘琛屾煡璇級
+ * @param id
+ * @return
+ */
+ @Transactional(readOnly = true)
+ public List<NcNodeVO> historyByNodeId(Long id) {
+ NcNode node = this.getById(id);
+ NcNode parentNode = this.getById(node.getParentId());
+ return this.baseMapper.historyByParentIdAndName(node.getName(),parentNode);
+ }
+
+ /**
+ * 鑾峰彇鈥滅▼搴忓寘鍚嶁�濊瘯鍒囩殑鏈�鏂扮増鏈�
+ * @param name 鑺傜偣鍚嶇О
+ * @return 鏈�鏂扮増鏈▼搴忔姤鍚嶈妭鐐�
+ */
+ public NcNode getLastEditionTryingProgramPackage(String name,String processEdition){
+ //.or(NcNode::getIsCured,0)
+ List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
+ .eq(NcNode::getName, name).and(i->{
+ i.eq(NcNode::getIsCured, 0).or().isNull(NcNode::getIsCured);
+ }).likeRight(NcNode::getParentIds,"0,1,")
+ .eq(NcNode::getIsLastEdition,1).eq(NcNode::getProcessEdition,processEdition).orderByDesc(NcNode::getCreateTime).list();
+
+ if(pkgList.isEmpty()){
+ return null;
+ }else{
+ return pkgList.get(0);
+ }
+ }
+
+ /**
+ * 鏍规嵁鐖惰妭鐐瑰拰鍚嶇О锛屾煡璇㈡枃浠剁晫鑺傜偣鍒楄〃
+ * @param name 鑺傜偣/鏂囦欢鍚嶇О
+ * @param parentId 鐖惰妭鐐筰d
+ */
+ public NcNode getLastEditionProgramFile(String name,Long parentId) {
+ List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_FILE)
+ .eq(NcNode::getName, name).eq(NcNode::getParentId,parentId)
+ .eq(NcNode::getIsLastEdition,1).list();
+ if(nodes.isEmpty()){
+ return null;
+ }else {
+ return nodes.get(0);
+ }
+ }
+
+ /**
+ * 鑾峰彇node鐨勫巻鍙插垪琛�(鍚屼竴涓埗鑺傜偣涓嬶紝鍚屽悕鐨勬墍鏈夎妭鐐癸級
+ * @param pkgNode node
+ * @return 鍘嗗彶鍒楄〃锛屾姤閿欒妭鐐规湰韬�
+ */
+ public List<NcNode> getNodeHistory(NcNode pkgNode) {
+ return this.lambdaQuery().eq(NcNode::getParentId,pkgNode.getParentId())
+ .eq(NcNode::getName,pkgNode.getName()).list();//.ne(NcNode::getId,pkgNode.getId())
+ }
+
+ /**
+ * 鐢熸垚绋嬪簭鍖呭悕/绋嬪簭鍚嶇О
+ * @param drawingNo 闆剁粍浠跺彿
+ * @param processNo 宸ュ簭鐗堟
+ * @return 绋嬪簭鍖呭悕/绋嬪簭鍚嶇О
+ */
+ public static String genProgramName(String drawingNo,String processNo){
+ return drawingNo+"-"+processNo;
+ }
+
+ /**
+ * 鑾峰彇鏈�鏂扮増鏈殑 宸插浐鍖栬妭鐐�
+ * @param programPkgName
+ * @return
+ */
+ public NcNode getLastEditionCuredProgramPackage(String programPkgName,String processEdition) {
+ List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
+ .eq(NcNode::getName, programPkgName).likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1)
+ .eq(NcNode::getProcessEdition, processEdition)
+ .eq(NcNode::getIsLastEdition,1).list();
+
+ if(nodes.isEmpty()){
+ return null;
+ }else {
+ return nodes.get(0);
+ }
+ }
+
+ /**
+ * 鑾峰彇鏈�鏂扮増鏈殑 宸插浐鍖栬妭鐐�
+ * @param programPkgName 绋嬪簭鍖呭悕
+ * @param machineCode 鏈哄簥缂栧彿
+ * @return
+ */
+ public NcNode getCuredProgramPackage(String programPkgName,String machineCode) {
+ Machine machine = machineService.getByCode(machineCode);
+ List<Machine> sameGroupMachines = machineService.lambdaQuery().eq(Machine::getMachineGroupCode,machine.getMachineGroupCode()).list();
+ List<String> machineCodesInGroup = sameGroupMachines.stream().map(Machine::getCode).toList();
+ List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
+ .eq(NcNode::getName, programPkgName).likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1)
+ .in(!machineCodesInGroup.isEmpty(),NcNode::getMachineCode,machineCodesInGroup)
+ .eq(NcNode::getIsLastEdition,1).list();
+
+ if(nodes.isEmpty()){
+ return null;
+ }else {
+ return nodes.get(0);
+ }
+ }
+
+ /**
+ * 鑾峰彇鏈�鏂扮増鏈殑 鍋忕鑺傜偣
+ * @param programPkgName 绋嬪簭鍖呭悕
+ * @return 鍋忕鐨勭▼搴忚妭鐐�
+ */
+ public NcNode getLastEditionDeviationProgramPackage(String programPkgName,String processEdition) {
+ List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
+ .eq(NcNode::getName, programPkgName)
+ .eq(NcNode::getProcessEdition, processEdition)
+ .likeRight(NcNode::getParentIds,"0,3,")
+ .eq(NcNode::getIsLastEdition,1).list();
+
+ if(nodes.isEmpty()){
+ return null;
+ }else {
+ return nodes.get(0);
+ }
+ }
+
+ /**
+ * 鏍规嵁娴佺▼瀹炰緥id鑾峰彇node鑺傜偣锛岄兘鏄▼搴忓寘鑺傜偣
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @return 瀵瑰簲棰濈郴娆镐絾閭�
+ */
+ public NcNode getByProcessInstanceId(String processInstanceId) {
+ Optional<NcNode> nodeOpt = this.lambdaQuery().eq(NcNode::getProcessInstanceId,processInstanceId).oneOpt();
+ return nodeOpt.orElse(null);
+ }
+
+ /**
+ * 鐗╃悊鍒犻櫎鑺傜偣id涓嬬殑瀛愯妭鐐癸紙鎬ц兘鑰冭檻锛屽惁鍒欐暟鎹お澶氾級
+ * @param nodeId 鑺傜偣id
+ */
+ public void deleteSubNodes(Long nodeId) {
+ this.baseMapper.deleteSubNodes(nodeId);
+ }
+
+ /**
+ * 鑾峰彇绋嬪簭鍖呬笅鎵�鏈夊眰搴忔枃浠惰妭鐐�
+ * @param packageNodeId 绋嬪簭鍖呭悕 鑺傜偣id
+ * @return 鍖呬笅灞炵殑绋嬪簭鏂囦欢
+ */
+ public List<NcNode> getProgramFilesByPackageId(Long packageNodeId) {
+ return this.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_FILE)
+ .eq(NcNode::getParentId,packageNodeId).eq(NcNode::getIsLastEdition,1).list();
+ }
+
+ /**
+ * 鍗囩骇鐗堟湰鍙凤紙+1锛�
+ * @param nodeId 鑺傜偣id
+ */
+ @Transactional
+ public void upgradeVersionNumber(Long nodeId) {
+ NcNode node = this.getById(nodeId);
+ node.upgradeVersionNumber();
+ this.updateById(node);
+
+ }
+
+ /**
+ * 閿佸畾鑺傜偣
+ * @param id 绋嬪簭鍖呰妭鐐筰d
+ */
+ @Transactional
+ public void lock(Long id) {
+ NcNode node = this.getById(id);
+ node.lock();
+ this.updateById(node);
+ }
+ @Transactional
+ public void unlock(Long id) {
+ NcNode node = this.getById(id);
+ node.unlock();
+ this.updateById(node);
+ }
}
--
Gitblit v1.9.3