From b0da1daebd1a50eea777e9524eb7bb485efd55ab Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 20 七月 2023 18:51:43 +0800
Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs

---
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventClient.java         |   57 ++++++++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java          |   20 +++--
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/FlowEventClient.java                  |   57 ++++++++++++++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java          |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   39 ++++-----
 Source/UBCS/ubcs-ops/ubcs-flow/pom.xml                                                                         |    6 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventFallback.java       |   42 ++++++++++
 7 files changed, 194 insertions(+), 33 deletions(-)

diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/pom.xml b/Source/UBCS/ubcs-ops/ubcs-flow/pom.xml
index 709c45e..3906de0 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/pom.xml
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/pom.xml
@@ -82,6 +82,12 @@
             <artifactId>orai18n</artifactId>
             <version>${orai18n.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.vci.ubcs</groupId>
+            <artifactId>ubcs-code-api</artifactId>
+            <version>3.0.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java
index 4dd340d..8f8ff61 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeExportAttrDTO.java
@@ -46,7 +46,7 @@
     /**
      * 鏌ヨ鏉′欢
      */
-    private Map<String,Object> conditionMap;
+    private Map<String,String> conditionMap;
 
     /**
      * 鍒嗙被鐨勪富閿�
@@ -101,11 +101,11 @@
         this.order = order;
     }
 
-    public Map<String, Object> getConditionMap() {
+    public Map<String, String> getConditionMap() {
         return conditionMap;
     }
 
-    public void setConditionMap(Map<String, Object> conditionMap) {
+    public void setConditionMap(Map<String, String> conditionMap) {
         this.conditionMap = conditionMap;
     }
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventClient.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventClient.java
new file mode 100644
index 0000000..c2b8e24
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventClient.java
@@ -0,0 +1,57 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 宸ヤ綔娴佷簨浠惰皟鐢� Feign鎺ュ彛绫�
+ *
+ * @author wang1
+ * @since 2023-05-05
+ */
+@FeignClient(
+	value = AppConstant.APPLICATION_NAME_CODE,
+	fallback = IMdmEngineFallback.class
+)
+public interface IFlowEventClient {
+
+    String API_PREFIX = "/flowEventClient";
+    String FLOW_START = API_PREFIX + "/flowStart";
+    String FLOW_TASK_COMPLATE = API_PREFIX + "/flowTaskComplate";
+    String FLOW_END = API_PREFIX + "/flowEnd";
+
+	/**
+	 * 娴佺▼鍚姩鍚庤皟鐢�
+	 *
+	 * @param var 娴佺▼甯搁噺
+	 * @return 鏌ヨ鍑虹殑鏁版嵁
+	 */
+    @PostMapping(FLOW_START)
+	R<Map> flowStart(@RequestParam("var") Map var);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventFallback.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventFallback.java
new file mode 100644
index 0000000..20ba323
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IFlowEventFallback.java
@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Feign澶辫触閰嶇疆
+ *
+ * @author wang1
+ */
+@Component
+public class IFlowEventFallback implements IFlowEventClient {
+
+	@Override
+	@PostMapping(FLOW_START)
+	public R<Map> flowStart(Map var){
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/FlowEventClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/FlowEventClient.java
new file mode 100644
index 0000000..313be95
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/FlowEventClient.java
@@ -0,0 +1,57 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+
+import com.vci.ubcs.code.service.MdmEngineService;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.ubcs.code.feign.IMdmEngineClient.SELECT_BY_TYPE_OID;
+
+/**
+ * 宸ヤ綔娴佷簨浠惰皟鐢� Feign瀹炵幇绫�
+ *
+ * @author wang1
+ * @since 2023-05-05
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class FlowEventClient implements IFlowEventClient {
+	/**
+	 * 娴佺▼鍚姩鍚庤皟鐢�
+	 *
+	 * @param var 娴佺▼甯搁噺
+	 * @return 鏌ヨ鍑虹殑鏁版嵁
+	 */
+	@PostMapping(FLOW_START)
+	public R<Map> flowStart(@RequestParam("var") Map var){
+		System.out.println(var.toString());
+		return R.success("璋冪敤鎴愬姛");
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 7e0986d..c112d85 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -34,7 +34,6 @@
 import com.vci.ubcs.starter.revision.model.BaseModel;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
 import com.vci.ubcs.starter.util.LocalFileUtil;
-import com.vci.ubcs.starter.util.UBCSSqlKeyword;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
 import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
 import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
@@ -1474,7 +1473,7 @@
 		CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(exportAttrDTO.getCodeClassifyOid());
 		//鍏堟煡璇㈡暟鎹�
 		String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId();
-		Map<String, Object> conditionMap = exportAttrDTO.getConditionMap();
+		Map<String, String> conditionMap = exportAttrDTO.getConditionMap();
 		if(conditionMap == null){
 			conditionMap = new HashMap<>();
 		}
@@ -1490,7 +1489,15 @@
 		conditionMap.put("codeclsfpath","*" + exportAttrDTO.getCodeClassifyOid() + "*");
 		conditionMap.put("lastr", "1");
 		conditionMap.put("lastv", "1");
-		UBCSSqlKeyword.buildSqlwhere(conditionMap);
+
+		// 鏌ヨ鍑鸿〃鍚�
+
+
+		String countSql = "select count(*) from " + VciBaseUtil.getTableName(btmTypeId) +" where 1=1" +
+			" and lastr = '1'" +
+			" and lastv='1'" +
+			" and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
+
 		//鍏堟煡璇㈡�绘暟
 		int total = 0;
 		if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0
@@ -1504,11 +1511,11 @@
 				thisPage.setOrder(exportAttrDTO.getOrder());
 				thisPage.addDefaultDesc("createTime");
 
-				total += boService.queryCount(btmTypeId, conditionMap);
+				total += commonsMapper.queryCountBySql(countSql);
 			}
 		}else{
 
-			total=boService.queryCount(btmTypeId, conditionMap);
+			total = commonsMapper.queryCountBySql(countSql);
 		}
 		List<String> selectFieldList = new ArrayList<>();
 		if(!CollectionUtils.isEmpty(exportAttrDTO.getAttrIdIndexMap())){
@@ -1581,9 +1588,6 @@
 		LocalFileUtil.deleteTempFile(file,true);
 		return zipFileName;
 	}
-
-	private
-
 
 	/**
 	 * 鏌ヨ鏁版嵁骞跺鍑哄埌excel
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
index 519f132..f1b5117 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -86,10 +86,7 @@
 	@Override
 	@Transactional(rollbackFor = VciBaseException.class)
 	public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception {
-//		BatchCBO batchCBO = new BatchCBO();
-//		WebUtil.setPersistence(false);
 		dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
-//		batchCBO.getCreateCbos().addAll(dataCBOList);
 		List<String> codeList = new ArrayList<>();
 
 		/*****
@@ -179,18 +176,13 @@
 			List<CodeSerialValue> editSerialValueList = new ArrayList<>();
 			maxSerialMap.forEach((serialUnit,secOidMaxMap)->{
 				secOidMaxMap.forEach((secOid,maxSerial)->{
-//					Map<String, String> conditionMap = new HashMap<>();
-//					conditionMap.put("codeRuleOid", ruleVO.getOid());
-//					conditionMap.put("serialUnit", serialUnit);
-//					//杩欎釜瀛楁鏄负浜嗚В鍐冲涓祦姘寸殑闂
-//					conditionMap.put("codeSecOid", secOid);
 					QueryWrapper<CodeSerialValue> queryWrapper = new QueryWrapper<>();
 					queryWrapper.eq("codeRuleOid", ruleVO.getOid());
 					queryWrapper.eq("serialUnit", serialUnit);
+					//杩欎釜瀛楁鏄负浜嗚В鍐冲涓祦姘寸殑闂
 					queryWrapper.eq("codeSecOid", secOid);
 
 					List<CodeSerialValue> serialValueDOS = serialValueMapper.selectList(queryWrapper);
-//					.selectByCondition(conditionMap, new PageHelper(-1));
 					if (!CollectionUtils.isEmpty(serialValueDOS)) {
 						CodeSerialValue serialValueDO = serialValueDOS.get(0);
 						if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<maxSerial){
@@ -209,19 +201,14 @@
 				});
 			});
 			if(!CollectionUtils.isEmpty(addSerialValueList)){
-//				batchCBO.copyFromOther(serialValueMapper.batchInsert(addSerialValueList));
 				for (CodeSerialValue codeSerialValue : addSerialValueList) {
 					serialValueMapper.insert(codeSerialValue);
 				}
-//				serialValueMapper.ba
-
 			}
 			if(!CollectionUtils.isEmpty(editSerialValueList)){
 				for (CodeSerialValue codeSerialValue : editSerialValueList) {
 					serialValueMapper.updateById(codeSerialValue);
 				}
-
-//				batchCBO.copyFromOther(serialValueMapper.batchUpdate(editSerialValueList));
 			}
 			//澶勭悊allCode
 			if(!CollectionUtils.isEmpty(allCodeDOList)){
@@ -231,9 +218,6 @@
 				List<CodeAllCode> editCodeDOs = new ArrayList<>();
 				ruleGroup.forEach((ruleOid,allCodeDOS)->{
 					VciBaseUtil.switchCollectionForOracleIn(allCodeDOS).stream().forEach(codeDOs->{
-//						Map<String,String> conditionMap = new HashMap<>();
-//						conditionMap.put("coderuleoid",ruleOid);
-//						conditionMap.put("id",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDOs.stream().map(s->s.getId()).collect(Collectors.toList()).toArray(new String[0])) + ")");
 						QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>();
 						allCodeWrapper.eq("coderuleoid",ruleOid);
 						allCodeWrapper.in("id", QueryOptionConstant.IN + "(" +
@@ -264,21 +248,25 @@
 					addCodeDOs = allCodeDOList;
 				}
 				if(!CollectionUtils.isEmpty(editCodeDOs)){
-//					batchCBO.copyFromOther(allCodeMapper.batchUpdate(editCodeDOs));
 					codeAllCodeService.updateBatchById(editCodeDOs);
 				}
 				if(!CollectionUtils.isEmpty(addCodeDOs)){
-					//batchCBO.copyFromOther(allCodeMapper.batchInsert(addCodeDOs));
 					Map<String, String> statusMap = addCodeDOs.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
 					addCodeDOs.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
 						s.setLcStatus(statusMap.get(s.getOid()));
 					});
+					//閫氳繃ID鏉ヨ繘琛屽幓閲�
+					List<CodeAllCode> distinctCodeAllCOdes = addCodeDOs.stream().collect(Collectors
+						.collectingAndThen(
+							Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))),
+							ArrayList::new));
+					if( distinctCodeAllCOdes.size() != addCodeDOs.size() ){
+						throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
+					}
 					codeAllCodeService.saveBatch(addCodeDOs);
 				}
 				mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
 			}
-//			WebUtil.setPersistence(true);
-//			boService.persistenceBatch(batchCBO);
 			return codeList;
 		}else {
 			List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
@@ -347,7 +335,14 @@
 			});
 
 
-
+			//閫氳繃ID鏉ヨ繘琛屽幓閲�
+			List<CodeAllCode> distinctCodeAllCOdes = allCodeDOList.stream().collect(Collectors
+				.collectingAndThen(
+					Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))),
+					ArrayList::new));
+			if( distinctCodeAllCOdes.size() != allCodeDOList.size() ){
+				throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
+			}
 			codeAllCodeService.saveBatch(allCodeDOList);
 //			iCodeWupinService.saveBatch(dataCBOList);
 			mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);

--
Gitblit v1.9.3