From 1172444b5f2527c3e6bddce63b734fba35e5e57c Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期五, 10 十一月 2023 13:19:08 +0800
Subject: [PATCH] 自定义流水功能增加

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java |   34 ++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java      |   25 +++++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java  |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java    |   42 ++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java         |   19 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java |   62 ++++++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java               |   37 +++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java         |   23 ++++
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java             |   40 +++++++
 9 files changed, 284 insertions(+), 2 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
index 9375366..959255d 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
@@ -1,11 +1,13 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
+import com.vci.ubcs.starter.revision.model.BaseModel;
+
 /**
  * 娴佹按绠楁硶绫荤殑鏄剧ず淇℃伅
  * @author weidy
  * @date 2022-2-17
  */
-public class CodeSerialAlgorithmVO implements java.io.Serializable{
+public class CodeSerialAlgorithmVO extends BaseModel {
 
     /**
      * 绠楁硶缂栧彿
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
index e10a57c..0b415a0 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -1438,7 +1438,45 @@
 
 		return sb.toString();
 	}
-	public static String intToRomans(int num) {
+	public static String convertArabicToRoman(int num) {
+		int[] values={1000,900,500,400,100,90,50,40,10,9,5,4,1};
+		String[] romans={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
+		StringBuilder sb=new StringBuilder();
+		for(int i=0;i<values.length;i++){
+			while(num>=values[i]){
+				num=num-values[i];
+				sb.append(romans[i]);
+			}
+		}
+		return sb.toString();
+	}
+	/**
+	 * 鎶婄綏椹暟瀛楄浆鎹负闃挎媺浼暟瀛�
+	 * @param m
+	 * @return
+	 */
+	public static int convertRomanToArabic(String m) {
+		int graph[] = new int[400];
+		graph['I'] = 1;
+		graph['V'] = 5;
+		graph['X'] = 10;
+		graph['L'] = 50;
+		graph['C'] = 100;
+		graph['D'] = 500;
+		graph['M'] = 1000;
+		char[] num = m.toCharArray();
+		int sum = graph[num[0]];
+		for (int i = 0; i < num.length - 1; i++) {
+			if (graph[num[i]] >= graph[num[i + 1]]) {
+				sum += graph[num[i + 1]];
+			} else {
+				sum = sum + graph[num[i + 1]] - 2 * graph[num[i]];
+			}
+		}
+		return sum;
+	}
+
+	public static String intToRomanTwo(int num) {
 		String M[] = {"", "M", "MM", "MMM"};
 		String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
 		String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java
new file mode 100644
index 0000000..abe1dfa
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java
@@ -0,0 +1,34 @@
+package com.vci.ubcs.code.algorithm;
+
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+
+import java.util.List;
+
+/****
+ * 鑷畾涔夌綏椹祦姘寸畻娉曡嚜瀹氫箟绫�
+ */
+@MdmSerialAlgorithm(text = "鑷畾涔夌綏椹祦姘�",description = "鑷畾涔夌綏椹祦姘寸畻娉�")
+public class CustomRomanSerialAlgorithmExample {
+	/**
+	 * 鐢熸垚缃楅┈娴佹按鍙风殑鏂规硶
+	 * @return 娴佹按鍙风殑淇℃伅
+	 */
+	@MdmSerialAlgorithmMethod
+	public String serialGenerate(BaseModel data, CodeRuleVO codeRuleVO, List<CodeOrderSecDTO> secDTOList){
+
+		
+
+
+		//灏嗘暟瀛楁祦姘磋浆涓虹綏椹祦姘�
+		String romanValue=VciBaseUtil.convertArabicToRoman(5);
+		//灏嗙綏椹祦姘磋浆涓烘暟瀛楁祦姘�
+		int arabicValue=VciBaseUtil.convertRomanToArabic(romanValue);
+		return "";
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java
new file mode 100644
index 0000000..41b71b8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java
@@ -0,0 +1,25 @@
+package com.vci.ubcs.code.algorithm;
+
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+
+import java.util.List;
+
+/**
+ * 娴佹按绠楁硶鐨勭ず渚�
+ */
+@MdmSerialAlgorithm(text = "娴佹按绠楁硶鐨勭ず渚�",description = "璇蜂笉瑕佷娇鐢ㄨ繖涓被锛岃繖涓被鍙槸绀轰緥锛岀敤浜庢煡鐪嬪浣曠紪鍐欐祦姘寸畻娉�")
+public class CustomSerialAlgorithmExample {
+
+    /**
+     * 鐢熸垚娴佹按鍙风殑鏂规硶
+     * @return 娴佹按鍙风殑淇℃伅
+     */
+    @MdmSerialAlgorithmMethod
+    public String serialGenerate(BaseModel data, CodeRuleVO codeRuleVO, List<CodeOrderSecDTO> secDTOList){
+        return "";
+    }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java
new file mode 100644
index 0000000..dbab4dc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java
@@ -0,0 +1,37 @@
+package com.vci.ubcs.code.annotation;
+
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 鑷畾涔夋祦姘寸畻娉曠殑娉ㄨВ
+ *	@author xiejun
+  * @date 2023-11-09
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface MdmSerialAlgorithm {
+
+    /**
+     * 鍊硷紝瀹為檯灏辨槸杩欎釜娉ㄨВ鎵�鍦ㄧ殑绫荤殑鍏ㄨ矾寰�
+     * @return 鍊�
+     */
+    String value() default "";
+
+    /**
+     * 浜嬩欢鐨勫悕绉�
+     * @return 浜嬩欢鍚嶇О
+     */
+    String text();
+
+    /**
+     * 鎻忚堪
+     * @return 鎻忚堪
+     */
+    String description() default "";
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java
new file mode 100644
index 0000000..a241b99
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.code.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 鑷畾涔夋祦姘寸畻娉曞鐞嗘柟娉曠殑娉ㄨВ
+ * @author xiejun
+ * @date 2023-11-09
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MdmSerialAlgorithmMethod {
+
+    /**
+     * 鍊�
+     * @return 鍊�
+     */
+    String value() default "";
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java
new file mode 100644
index 0000000..c61ad4e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java
@@ -0,0 +1,42 @@
+package com.vci.ubcs.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.vo.pagemodel.CodeAllCodeVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.vci.ubcs.code.service.ICodeSerialAlgorithmService;
+
+/**
+ * 鍏ㄩ儴鐮佸�� 鎺у埗鍣�
+ *
+ * @author ludc
+ * @since 2023-04-03
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/codeSerialAlgorithmController")
+@Api(value = "鑷畾涔夋祦姘�", tags = "鑷畾涔夋祦姘寸畻娉�")
+public class CodeSerialAlgorithmController extends BladeController {
+	/**
+	 * 绠楁硶鏈嶅姟
+	 */
+	@Autowired
+	private ICodeSerialAlgorithmService algorithmService;
+
+	/**
+	 * 绠楁硶鐨勫垪琛�
+	 * @return 绠楁硶鐨勪俊鎭�
+	 */
+	@GetMapping("/gridCodeSerialAlgorithm")
+	public R<IPage<CodeSerialAlgorithmVO>> gridCodeSerialAlgorithm(){
+		IPage<CodeSerialAlgorithmVO> pages= algorithmService.gridSerialAlgorithm();
+		return R.data(pages);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java
new file mode 100644
index 0000000..f0bff32
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java
@@ -0,0 +1,19 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+import org.springblade.core.tool.api.R;
+
+/**
+ * 娴佹按绠楁硶绫�
+ * @author weidy
+ * @date 2022-2-17
+ */
+public interface ICodeSerialAlgorithmService {
+
+    /**
+     * 鑾峰彇娴佹按绠楁硶鐨勫垪琛�
+     * @return 娴佹按绠楁硶鐨勪俊鎭�
+     */
+	IPage<CodeSerialAlgorithmVO>  gridSerialAlgorithm();
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java
new file mode 100644
index 0000000..7775a0c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java
@@ -0,0 +1,62 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.service.ICodeSerialAlgorithmService;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+import com.vci.ubcs.starter.web.util.ApplicationContextProvider;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springframework.aop.framework.Advised;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 娴佹按绠楁硶鐨勬湇鍔�
+ * @author weidy
+ * @date 2022-2-17
+ */
+@Service
+public class CodeSerialAlgorithmServiceImpl implements ICodeSerialAlgorithmService {
+    /**
+     * 鑾峰彇娴佹按绠楁硶鐨勫垪琛�
+     *
+     * @return 娴佹按绠楁硶鐨勪俊鎭�
+     */
+    @Override
+    public IPage<CodeSerialAlgorithmVO> gridSerialAlgorithm() {
+        //浣跨敤涓婚敭鍘绘壂鎻�
+        String[] beanNames = ApplicationContextProvider.getApplicationContext().getBeanNamesForAnnotation(MdmSerialAlgorithm.class);
+        List<CodeSerialAlgorithmVO> voList = new ArrayList<>();
+        if(beanNames!=null && beanNames.length>0){
+            for(String beanName : beanNames){
+                Object bean = ApplicationContextProvider.getApplicationContext().getBean(beanName);
+                if(bean!=null){
+                    CodeSerialAlgorithmVO algorithmVO = new CodeSerialAlgorithmVO();
+                    Advised advised = (Advised)bean;
+                    Class<?> targetClass = advised.getTargetSource().getTargetClass();
+                    algorithmVO.setClassFullName(targetClass.getName());
+                    MdmSerialAlgorithm serialAlgorithm = targetClass.getDeclaredAnnotation(MdmSerialAlgorithm.class);
+                    if(serialAlgorithm==null){
+                        serialAlgorithm = targetClass.getAnnotation(MdmSerialAlgorithm.class);
+                    }
+                    if(serialAlgorithm !=null) {
+                        algorithmVO.setName(serialAlgorithm.text());
+                        algorithmVO.setDescription(serialAlgorithm.description());
+                        algorithmVO.setId(serialAlgorithm.value());
+                        if(StringUtils.isBlank(algorithmVO.getId())){
+                            algorithmVO.setId(beanName);
+                        }
+                        voList.add(algorithmVO);
+                    }
+                }
+            }
+        }
+		Query query=new Query();
+		IPage<CodeSerialAlgorithmVO> queryIPage =Condition.getPage(query);
+        return queryIPage;
+    }
+}

--
Gitblit v1.9.3