From 3b55234db1169826e52bd540e4f3cef9dc58e23b Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 21 八月 2025 18:56:07 +0800
Subject: [PATCH] 增加勤哲导入接口

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/QinzheFgb.java               |    5 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/controller/QinzheFgbController.java |   11 +++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java                         |    8 +++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/vo/QinzheFgbExcel.java              |   25 ++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/QinzheFgbService.java       |   53 ++++++++++++++++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java                               |    6 ++-
 6 files changed, 105 insertions(+), 3 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/controller/QinzheFgbController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/controller/QinzheFgbController.java
index 5ca9460..984434d 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/controller/QinzheFgbController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/controller/QinzheFgbController.java
@@ -43,4 +43,15 @@
 		return R.data(qinzheFgbService.lambdaQuery().like(StringUtils.isNotBlank(ljh), QinzheFgb::getLjh,ljh).like(StringUtils.isNotBlank(zggy), QinzheFgb::getZggy,zggy).page(Condition.getPage(query)));
 	}
 
+	@Operation(summary = "瀵煎叆鍕ゅ摬鍒嗗伐琛�", description = "瀵煎叆鍕ゅ摬鍒嗗伐琛�")
+	@PostMapping("/import-qinzhe")
+	public R<ImportResult> importQinzheFgb(@RequestParam MultipartFile file) {
+		try {
+			qinzheFgbService.importFgb(file);
+			return R.success("瀵煎叆鎴愬姛");
+		}catch(Exception e) {
+			log.error("瀵煎叆寮傚父",e);
+			return R.fail(e.getMessage());
+		}
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/QinzheFgb.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/QinzheFgb.java
index f13c73d..67c246b 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/QinzheFgb.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/QinzheFgb.java
@@ -25,4 +25,9 @@
 	 */
 	private String zggy;
 
+	/**
+	 * 鏁版嵁鏉ユ簮: QZ/MDM
+	 */
+	private String source;
+
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/QinzheFgbService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/QinzheFgbService.java
index f7591aa..756d582 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/QinzheFgbService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/QinzheFgbService.java
@@ -2,10 +2,19 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
 import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb;
 import org.springblade.mdm.basesetting.producedivision.mapper.QinzheFgbMapper;
+import org.springblade.mdm.basesetting.producedivision.vo.DivisionExcel;
+import org.springblade.mdm.basesetting.producedivision.vo.ImportResult;
+import org.springblade.mdm.basesetting.producedivision.vo.QinzheFgbExcel;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -34,4 +43,48 @@
 		return this.baseMapper.seletDropList(ljh);
 
 	}
+
+	/**
+	 * 瀵煎叆鍕ゅ摬鍒嗗伐琛�
+	 * @param file excel鏂囦欢
+	 * @return 瀵煎叆缁撴灉
+	 */
+	@Transactional
+	public void importFgb(MultipartFile file) {
+
+		List<QinzheFgbExcel> list = ExcelUtil.read(file, QinzheFgbExcel.class);
+		List<QinzheFgb> entityList = new ArrayList<>();
+
+		for(QinzheFgbExcel qzExcel: list){
+			QinzheFgb fgb = new QinzheFgb();
+			BeanUtils.copyProperties(qzExcel,fgb);
+			fgb.setSource("QZ");
+			entityList.add(fgb);
+		}
+
+		saveIfNotExists(entityList);
+	}
+
+	/**
+	 * 涓嶅瓨鍦ㄥ垯淇濆瓨
+	 * @param entityList 鏁版嵁鍒楄〃
+	 */
+	@Transactional
+	private void saveIfNotExists(List<QinzheFgb> entityList) {
+
+		List<QinzheFgb> willSaveList = entityList.stream().filter(e -> !exists(e)).toList();
+		this.saveBatch(willSaveList);
+
+	}
+
+	/**
+	 * 鍒ゆ柇鏁版嵁鏄惁瀛樺湪
+	 * @param entity 瀹炰綋
+	 * @return 鏄惁瀛樺湪
+	 */
+	boolean exists(QinzheFgb entity){
+		return lambdaQuery().eq(QinzheFgb::getLjh, entity.getLjh())
+			.eq(QinzheFgb::getCph, entity.getCph()).eq(QinzheFgb::getZggy, entity.getZggy()).count() > 0;
+	}
+
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/vo/QinzheFgbExcel.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/vo/QinzheFgbExcel.java
new file mode 100644
index 0000000..094bd72
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/vo/QinzheFgbExcel.java
@@ -0,0 +1,25 @@
+package org.springblade.mdm.basesetting.producedivision.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Data;
+
+/**
+ * 鍕ゅ摬鍒嗗伐琛╡xcel鏍煎紡
+ */
+@Data
+public class QinzheFgbExcel {
+	@ColumnWidth(20)
+	@ExcelProperty("浜у搧鍙�")
+	private String cph;
+
+	@ColumnWidth(15)
+	@ExcelProperty("涓荤宸ヨ壓")
+	private String zggy;
+
+
+	@ColumnWidth(10)
+	@ExcelProperty("闆剁粍浠跺彿")
+	private String ljh;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java
index a235061..47a0d67 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java
@@ -4,6 +4,7 @@
 import org.flowable.engine.IdentityService;
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.runtime.ProcessInstance;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.mdm.basesetting.machine.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
@@ -28,9 +29,7 @@
 	private final NcNodeService nodeService;
 	private final RuntimeService runtimeService;
 	private final IdentityService identityService;
-	private final MachineService machineService;
 	private final ProduceDivisionService produceDivisionService;
-	private final NodeDeptQueryService nodeDeptQueryService;
 	private final FlowCommonService flowCommonService;
 	private final FlowProgramFileService flowProgramFileService;
 	/**
@@ -39,6 +38,9 @@
 	@Transactional
 	public void startUnlock(Long nodeId){
 		NcNode programPackage = nodeService.getById(nodeId);
+		if(flowCommonService.isProcessInstanceActive(programPackage.getProcessInstanceId())){
+			throw new ServiceException("娴佺▼姝e湪杩涜");
+		}
 		Map<String, Object> vars = new HashMap<>();
 		flowCommonService.putFlowVariablesByNode(vars,programPackage);
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
index 72b56cd..e5c132e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -263,7 +263,13 @@
 			//鏍规嵁鍐呴儴鏂囦欢锛岃鍙栧拰鍒嗘瀽绋嬪簭鍖呭拰绋嬪簭鏂囦欢鏁版嵁
 			List<String> dirList = entryNameList.stream().filter(s -> s.endsWith("/")).toList();
 			for(String dir : dirList){
-				String programPackageName = StringUtils.removeEnd(dir,"/");
+				String programPackageName1 = StringUtils.removeEnd(dir,"/");
+				String folderName = StringUtils.removeEnd(dir,"/");
+
+				PackageAndProcessEdition pkgAndEdition = parseProgramPackageFromFolderName(folderName);
+				String programPackageName = pkgAndEdition.getProgramPackageName();
+				//111
+
 				Optional<NcNode> optPackageNode = allAcceptPackages.stream().filter(node -> StringUtils.equals(node.getName(),programPackageName)).findFirst();
 
 				if(optPackageNode.isEmpty()){

--
Gitblit v1.9.3