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