From 367c66e0ab339e15d6ad881ace683cec7e11f2f7 Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期二, 30 五月 2023 17:34:36 +0800
Subject: [PATCH] 1、主要完成传入业务类型与basemodel进行插入。 2、完成传入业务类型、oid进行查询返回list<basemodel>
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java | 4
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java | 69 ++++
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java | 84 ++++++
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java | 9
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java | 118 ++++++++
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java | 10
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java | 5
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java | 33 ++
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java | 45 +++
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 332 ++++++++++++++++++-----
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml | 14 +
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java | 13
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java | 58 +++
13 files changed, 693 insertions(+), 101 deletions(-)
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java
new file mode 100644
index 0000000..5b56de6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineClient.java
@@ -0,0 +1,69 @@
+/*
+ * 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.entity.CodeWupin;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.mp.support.BladePage;
+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.RequestParam;
+
+import java.beans.IntrospectionException;
+import java.lang.reflect.InvocationTargetException;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * 缂栫爜淇℃伅 Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-05-05
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_NAME_CODE,
+ fallback = IMdmEngineFallback.class
+)
+public interface IMdmEngineClient {
+
+ String API_PREFIX = "/mdmEngineClient";
+ String SELECT_BY_TYPE_OID = API_PREFIX + "/selectByTypeAndOid";
+ String INSERT_BATCH_BY_TYPE = API_PREFIX + "/insertBatchByType";
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param oids 闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑
+ * @return 鏌ヨ鍑虹殑鏁版嵁
+ */
+ @GetMapping(SELECT_BY_TYPE_OID)
+ R<List<BaseModel>> selectByTypeAndOid(@RequestParam("btmType") String btmType, @RequestParam("oids") String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException;
+
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param baseModels 澶勭悊鏁版嵁
+ * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟
+ */
+ @GetMapping(INSERT_BATCH_BY_TYPE)
+ R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java
new file mode 100644
index 0000000..490de26
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/feign/IMdmEngineFallback.java
@@ -0,0 +1,45 @@
+/*
+ * 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 java.beans.IntrospectionException;
+import java.lang.reflect.InvocationTargetException;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * Feign澶辫触閰嶇疆
+ *
+ * @author Chill
+ */
+@Component
+public class IMdmEngineFallback implements IMdmEngineClient {
+
+ @Override
+ public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+
+ @Override
+ public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception {
+ return R.fail("鑾峰彇鏁版嵁澶辫触");
+ }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
index 9252a9a..6384c7c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
@@ -26,6 +26,8 @@
private String id;
private String name;
+ //闆嗗洟鐮�
+ private String groupcode;
private String description;
@@ -340,6 +342,14 @@
this.lctid = lctid;
}
+ public String getGroupcode() {
+ return this.groupcode;
+ }
+
+ public void setGroupcode(String groupcode) {
+ this.groupcode = groupcode;
+ }
+
public Map<String, String> getData() {
return this.data;
}
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 a4e1111..7bf4b8b 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
@@ -7,6 +7,7 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
@@ -19,7 +20,9 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.ResourceUtils;
+import java.beans.BeanInfo;
import java.beans.IntrospectionException;
+import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.File;
import java.io.IOException;
@@ -32,6 +35,8 @@
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.NetworkInterface;
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -1244,5 +1249,118 @@
}
+ /**
+ * 灏� JavaBean瀵硅薄杞寲涓� Map
+ * @author wyply115
+ * @param bean 瑕佽浆鍖栫殑绫诲瀷
+ * @return Map瀵硅薄
+ * @version 2016骞�3鏈�20鏃� 11:03:01
+ */
+ public static Map convertBean2Map(Object bean) throws Exception {
+ Class type = bean.getClass();
+ Map returnMap = new HashMap();
+ BeanInfo beanInfo = Introspector.getBeanInfo(type);
+ PropertyDescriptor[] propertyDescriptors = beanInfo
+ .getPropertyDescriptors();
+ Field[] declaredFields = type.getDeclaredFields();
+ String existField = "";
+ for (Field declaredField : declaredFields) {
+ declaredField.setAccessible(true);
+
+ // 鑾峰彇瀛楁鐨勫��
+ boolean isTableField = declaredField.isAnnotationPresent(TableField.class);
+ if (isTableField) {
+ TableField tableField = declaredField.getAnnotation(TableField.class);
+ Boolean fieldValue = tableField.exist();
+ if(fieldValue == false){
+ existField += declaredField.getName().toLowerCase()+",";
+ }
+ }
+ }
+
+ for (int i = 0, n = propertyDescriptors.length; i <n ; i++) {
+ PropertyDescriptor descriptor = propertyDescriptors[i];
+ String propertyName = descriptor.getName();
+
+ if (!propertyName.equals("class") &&
+ ((!"".equals(existField) && !existField.contains(propertyName.toLowerCase()+","))||"data".equals(propertyName))) {
+ Method readMethod = descriptor.getReadMethod();
+ Object result = readMethod.invoke(bean, new Object[0]);
+
+ if (result != null) {
+ if ("data".equals(propertyName)){
+ returnMap.putAll((Map) result);
+ }else {
+ returnMap.put(propertyName, result);
+ }
+ } else {
+ returnMap.put(propertyName, "");
+ }
+ }
+ }
+ return returnMap;
+ }
+
+ public static <T> List<T> mapToBean(List<Map> maps, Class<T> tClass) {
+ List<T> beanList = new ArrayList<>();
+ try {
+ for (Map map : maps) {
+ T t = tClass.newInstance();
+ BeanInfo beanInfo = Introspector.getBeanInfo(tClass);
+ PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+
+ for (PropertyDescriptor property : propertyDescriptors) {
+
+ String key = property.getName();
+ if ("class".equals(key)) {
+ continue;
+ }
+
+// String sqlField = camelToUnderscore(key);
+
+
+ if (map.containsKey(key.toUpperCase())) {
+ try {
+ Object value = map.get(key.toUpperCase());
+ // 寰楀埌property瀵瑰簲鐨剆etter鏂规硶
+ Method setter = property.getWriteMethod();
+ Class<?> type = property.getPropertyType();
+ // 寮鸿浆涓哄瓧娈电殑绫诲瀷锛屼笉闇�瑕佹椂鍙互鍘婚櫎锛屼緷璧朿ommons-beanutilss-beanutils
+ //Object convert = ConvertUtils.convert(String.valueOf(value), type);
+ //setter.invoke(t, convert);
+ setter.invoke(t, value);
+ } catch (Exception e) {
+ throw new RuntimeException("銆愯祴鍊煎紓甯搞��", e);
+ }
+ }
+
+ }
+ beanList.add(t);
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("銆怣ap杞崲瀹炰綋寮傚父銆�", e);
+ }
+ return beanList;
+}
+
+ public static String camelToUnderscore(String name) {
+ if (name == null && name.length() <= 0) {
+ return name;
+ }
+ StringBuilder sb = new StringBuilder();
+ String lowerName = name.toLowerCase();
+ for (int i = 0; i < lowerName.length(); i++) {
+ String nameChar = name.substring(i, i + 1);
+ String lowerChar = lowerName.substring(i, i + 1);
+ if (!nameChar.equals(lowerChar)) {
+ sb.append("_").append(lowerChar);
+ } else {
+ sb.append(nameChar);
+ }
+ }
+
+ return sb.toString();
+ }
+
}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
index e99c9da..87aa4dd 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -11,6 +11,7 @@
import com.vci.ubcs.code.service.MdmIOService;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.starter.annotation.VciBusinessLog;
+import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
@@ -19,7 +20,6 @@
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
-import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.api.R;
@@ -31,6 +31,7 @@
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -148,7 +149,7 @@
*/
@PostMapping("/addSaveCode")
@VciBusinessLog(operateName = "鐢宠鍗曚釜缂栫爜")
- public R addSaveCode(@RequestBody CodeOrderDTO orderDTO){
+ public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception {
return R.success(engineService.addSaveCode(orderDTO));
}
@@ -469,4 +470,12 @@
public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid,String functionId){
return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
}
+
+
+ @GetMapping("/thisistest")
+ @ResponseBody
+ public List<BaseModel> thisistest(String codeClassifyOid, String functionId) throws Exception {
+ return engineService.selectByTypeAndOid("wupin", "b1511bb3-a773-43e2-ac85-a7fde7314a0f,3e08970024835e69f6c2b2ecd90c48c3,582ff205-0dfb-43e0-8223-e772ff1851ab,db0400fe-cc90-4d9d-8da7-1edf06b1481b");
+// return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
+ }
}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java
new file mode 100644
index 0000000..1695aca
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmEngineClient.java
@@ -0,0 +1,84 @@
+/*
+ * 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.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.beans.IntrospectionException;
+import java.lang.reflect.InvocationTargetException;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * 缂栫爜淇℃伅 Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-05-05
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class MdmEngineClient implements IMdmEngineClient {
+ private final MdmEngineService mdmEngineService;
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param oids 闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑
+ * @return 鏌ヨ鍑虹殑鏁版嵁
+ */
+ @Override
+ @GetMapping(SELECT_BY_TYPE_OID)
+ public R<List<BaseModel>> selectByTypeAndOid(String btmType, String oids) throws SQLException, IntrospectionException, NoSuchFieldException, InvocationTargetException, IllegalAccessException, InstantiationException {
+ return R.data(mdmEngineService.selectByTypeAndOid(btmType,oids));
+ }
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param baseModels 澶勭悊鏁版嵁
+ * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟
+ */
+ @Override
+ @GetMapping(INSERT_BATCH_BY_TYPE)
+ public R<Integer> insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception {
+ return R.data(mdmEngineService.insertBatchByType(btmType,baseModels));
+ }
+
+// private final CodeWupinMapper codeWupinMapper;
+
+// @Override
+// @GetMapping(TOP)
+// public BladePage<CodeWupin> top(Integer current, Integer size) {
+// Query query = new Query();
+// query.setCurrent(current);
+// query.setSize(size);
+// IPage<CodeWupin> page = codeWupinMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());//service.page(Condition.getPage(query));
+// return BladePage.of(page);
+// }
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
index e0354b9..039a162 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -21,4 +21,13 @@
List<Map> selectBySql(@Param("inSql") String inSql);
+ /**
+ * 浼犲叆琛ㄦ槑锛宮ap锛宭ist<map>瀹屾垚鎵归噺鏇存柊鎿嶄綔
+ * @param tableName 琛ㄥ悕
+ * @param columnMap 鍗曟潯map鐢ㄤ簬鑾峰彇key浣滀负瀛楁
+ * @param mapList 闇�瑕佹彃鍏ョ殑鎵�鏈夎褰�
+ * @return 鎻掑叆鎴愬姛鐨勬潯鏁�
+ */
+ Integer insertByBaseModel(String tableName,Map<String,String> columnMap,List<Map<String,String>> mapList);
+
}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
index 36a3acf..78843da 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -9,12 +9,18 @@
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
import com.vci.ubcs.code.entity.CodeWupin;
import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
-import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.web.pagemodel.*;
import org.springblade.core.tool.api.R;
-import java.util.*;
+import java.beans.IntrospectionException;
+import java.lang.reflect.InvocationTargetException;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
/**
* 涓绘暟鎹紩鎿庢湇鍔�
@@ -55,7 +61,7 @@
* @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
* @return 杩斿洖缂栫爜鐨勫唴瀹�
*/
- String addSaveCode(CodeOrderDTO orderDTO);
+ String addSaveCode(CodeOrderDTO orderDTO) throws Exception;
/**
* 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
@@ -84,9 +90,9 @@
* 鍒濆鍖栦笟鍔$被鍨�
* --鍒涘缓浜洪粯璁や负褰撳墠鐢ㄦ埛锛屽鏋滈渶瑕佷慨鏀癸紝鍙互鍦ㄨ幏鍙栧悗鑷澶勭悊
* @param btmName 涓氬姟绫诲瀷鐨勫悕绉帮紝浼氳嚜鍔ㄥ彉鎴愬皬鍐�
- * @return CodeWupinEntity
+ * @return BaseModel
*/
- CodeWupin createCBOByBtmName(String btmName);
+ BaseModel createCBOByBtmName(String btmName);
/**
* 淇濆瓨鍙緭鍙�夌殑淇℃伅
@@ -363,4 +369,21 @@
* @return UI鐩稿叧鐨勫唴瀹�
*/
MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId);
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param baseModels 澶勭悊鏁版嵁
+ * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟
+ */
+ Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception;
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param oids 闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑
+ * @return 鏌ヨ鍑虹殑鏁版嵁
+ */
+ List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException;
}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
index d912ffb..a3c91a0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
@@ -2,9 +2,9 @@
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
-import com.vci.ubcs.code.entity.CodeWupin;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.starter.revision.model.BaseModel;
import java.util.Collection;
import java.util.List;
@@ -19,7 +19,7 @@
* @param dataCBOList 涓氬姟鏁版嵁
*/
List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
- CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupin> dataCBOList);
+ CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception;
/**
* 鍥炴敹鐮佸��
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index f5be509..a71680d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -25,6 +25,9 @@
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.core.log.exception.ServiceException;
+import com.vci.ubcs.omd.feign.IBtmTypeClient;
+import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.bo.WriteExcelData;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.poi.bo.ReadExcelOption;
@@ -46,7 +49,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 2058eb7..61d5c0e 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -4,10 +4,10 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
-import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeDeleteBatchDTO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
@@ -18,13 +18,17 @@
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
-import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IEnumClient;
-import com.vci.ubcs.omd.feign.IEnumItemClient;
+import com.vci.ubcs.omd.feign.IRevisionRuleClient;
+import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.EnumVO;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
@@ -37,21 +41,32 @@
import com.vci.ubcs.starter.web.util.*;
import com.vci.ubcs.system.entity.DictBiz;
import com.vci.ubcs.system.feign.IDictBizClient;
-import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import oracle.sql.TIMESTAMP;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
-import org.springframework.beans.BeanUtils;
+import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
+import java.beans.BeanInfo;
import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@@ -120,6 +135,16 @@
*/
@Autowired
private ICodePhaseAttrService phaseAttrService;
+ /**
+ * 涓氬姟绫诲瀷鐨勬湇鍔�
+ */
+ @Autowired
+ private IBtmTypeClient btmTypeClient;
+ /**
+ * 鐗堟湰瑙勫垯鐨勬湇鍔�
+ */
+ @Resource
+ private IRevisionRuleClient revisionRuleClient;
//
/**
* 閫氱敤鏌ヨ
@@ -180,6 +205,14 @@
* 绌烘牸
*/
public static final String SPACE = " ";
+ /**
+ * 缂撳瓨锝嬶絽锝�
+ */
+ public static final String BTM_INIT_CACHE = "ubcs-code:btm";
+ /**
+ *
+ */
+ public static final String BTM_NAME = "btm:name";
/**
* 瀵嗙骇鐨勫瓧娈�
@@ -316,7 +349,7 @@
* @return 杩斿洖缂栫爜鐨勫唴瀹�
*/
@Override
- public String addSaveCode(CodeOrderDTO orderDTO) {
+ public String addSaveCode(CodeOrderDTO orderDTO) throws Exception {
VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
@@ -340,14 +373,14 @@
switchDateAttrOnOrder(templateVO, orderDTO);
//9.鐢熸垚缂栫爜鐨勪俊鎭�
// ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
- CodeWupin cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+ BaseModel cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
// //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
// //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
// //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
// //end -- modify by lihang @20220407
- List<CodeWupin> cboList = new ArrayList<>();
+ List<BaseModel> cboList = new ArrayList<>();
//澶囨敞
cbo.setDescription(orderDTO.getDescription());
@@ -358,8 +391,8 @@
List<String> charList = new ArrayList<>();
- for (CodeWupin wupinEntity : cboList) {
- charList.add(wupinEntity.getId());
+ for (BaseModel baseModel : cboList) {
+ charList.add(baseModel.getId());
}
batchSaveSelectChar(templateVO, charList);
return codeList.size() > 0 ? codeList.get(0) : "";
@@ -709,7 +742,7 @@
* @param templateVO 妯℃澘鐨勬樉绀哄璞�
* @param edit 鏄惁涓轰慨鏀�
*/
- private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupin cbo,
+ private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, BaseModel cbo,
CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
boolean edit) {
String fullPath = "";
@@ -738,14 +771,18 @@
try {
- BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(CodeWupin.class,orderDTO.getData()),cbo);
-
- cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
- cbo.setCodetemplateoid(templateVO.getOid());
- cbo.setCodeclsfpath(fullPath);
+ BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(BaseModel.class,orderDTO.getData()),cbo);
+ Map<String,String> data = new HashMap<>();
+ data.put(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
+ data.put(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
+ data.put(CODE_FULL_PATH_FILED,fullPath);
+ cbo.setData(data);
+// cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
+// cbo.setTemplateOid(templateVO.getOid());
+// cbo.setCodeclsfpath(fullPath);
cbo.setTs(new Date());
if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
- //鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝鎻掍釜鐐癸紝鐢熷懡鍛ㄦ湡鏄惁闇�瑕佸垱寤�
+ //鍏堝啓鍥哄畾锛屽悗闈㈢敓鍛藉懆鏈熷ソ浜嗗湪缂栧啓
if (StringUtils.isNotBlank(cbo.getLctid())) {
// OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid());
// if (lifeCycleVO != null) {
@@ -782,72 +819,65 @@
* @throws VciBaseException 鍒濆鍖栧嚭閿欑殑鏄細鎶涘嚭寮傚父
*/
@Override
- public CodeWupin createCBOByBtmName(String btmName)
+ public BaseModel createCBOByBtmName(String btmName)
throws VciBaseException {
if(btmName!=null){
btmName = btmName.trim().toLowerCase();
}
- String userid = AuthUtil.getUser().getUserName();
-// if(!hasCreatedCbos.containsKey(btmName)){
-// if(StringUtils.isEmpty(userid)){
-// throw new VciBaseException(msgCodePrefix +"noHasUserid");
-// }
-// try {
-// hasCreatedCbos.put(btmName, createBusinessObject(btmName));
-// } catch (Exception e) {
-// logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e);
-// throw new VciBaseException(msgCodePrefix + "initBoError",new String[]{btmName});
-// }
-// }
-// ClientBusinessObject cbo = cloneClientBusinessObject(hasCreatedCbos.get(btmName));
-
-// QueryWrapper<CodeOsbtmtypeEntity> btmWrapper = new QueryWrapper<>();
-// btmWrapper.eq("ID",btmName);
-// CodeOsbtmtypeEntity btmTypeVO = codeOsbtmtypeMapper.selectOne(btmWrapper);
-// OsBtmTypeVO btmTypeVO = btmService.getBtmById(boName);
- String userName = AuthUtil.getUser().getUserName();
- CodeWupin wupinEntity = new CodeWupin();
- wupinEntity.setOid(VciBaseUtil.getPk());
-// bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
-// bo.setNameoid((new ObjectUtility()).getNewObjectID36());
- wupinEntity.setBtmname(btmName);
- wupinEntity.setLastR(String.valueOf(1));
- wupinEntity.setFirstR(String.valueOf(1));
- wupinEntity.setFirstV(String.valueOf(1));
- wupinEntity.setLastV(String.valueOf(1));
- wupinEntity.setCreator(userName);
- wupinEntity.setCreateTime(new Date());
- wupinEntity.setLastModifier(userName);
- wupinEntity.setLastModifyTime(new Date());
- wupinEntity.setRevisionRule("numberversionrule");
- wupinEntity.setVersionRule("0");
-// if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
- //
-// OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
- wupinEntity.setRevisionValue("1");
-// }
-
- wupinEntity.setRevisionSeq(1);
- wupinEntity.setVersionSeq(1);
- //鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1
- wupinEntity.setVersionValue("1");
- wupinEntity.setLctid("wupinLC");
- wupinEntity.setLcStatus("Editing");
- wupinEntity.setId("");
- wupinEntity.setName("");
- wupinEntity.setDescription("");
- wupinEntity.setOwner(userName);
- wupinEntity.setCheckinby(userName);
- wupinEntity.setCopyFromVersion("");
- wupinEntity.setMaterialtype(1001);
- wupinEntity.setCaigouwl("true");
- wupinEntity.setShifoupihaoguanli("true");
- wupinEntity.setKucunwl("true");
- wupinEntity.setXiaoshouwl("false");
- wupinEntity.setPassing("true");
+ try {
+ String keyPrefix = BTM_NAME.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+ String finalBtmName = btmName;
+ return CacheUtil.get(BTM_INIT_CACHE, keyPrefix, btmName, () -> {
+ BaseModel baseModel = createBaseModel(finalBtmName);
+ return baseModel;
+ });
+ } catch (Exception e) {
+ logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e);
+ throw new VciBaseException("initBtmError",new String[]{btmName});
+ }
+// String userName = AuthUtil.getUser().getUserName();
+// CodeWupin wupinEntity = new CodeWupin();
+// wupinEntity.setOid(VciBaseUtil.getPk());
+//// bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
+//// bo.setNameoid((new ObjectUtility()).getNewObjectID36());
+// wupinEntity.setBtmname(btmName);
+// wupinEntity.setLastR(String.valueOf(1));
+// wupinEntity.setFirstR(String.valueOf(1));
+// wupinEntity.setFirstV(String.valueOf(1));
+// wupinEntity.setLastV(String.valueOf(1));
+// wupinEntity.setCreator(userName);
+// wupinEntity.setCreateTime(new Date());
+// wupinEntity.setLastModifier(userName);
+// wupinEntity.setLastModifyTime(new Date());
+// wupinEntity.setRevisionRule("numberversionrule");
+// wupinEntity.setVersionRule("0");
+//// if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
+// //
+//// OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
+// wupinEntity.setRevisionValue("1");
+//// }
+//
+// wupinEntity.setRevisionSeq(1);
+// wupinEntity.setVersionSeq(1);
+// //鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1
+// wupinEntity.setVersionValue("1");
+// wupinEntity.setLctid("wupinLC");
+// wupinEntity.setLcStatus("Editing");
+// wupinEntity.setId("");
+// wupinEntity.setName("");
+// wupinEntity.setDescription("");
+// wupinEntity.setOwner(userName);
+// wupinEntity.setCheckinby(userName);
+// wupinEntity.setCopyFromVersion("");
+// wupinEntity.setMaterialtype(1001);
+// wupinEntity.setCaigouwl("true");
+// wupinEntity.setShifoupihaoguanli("true");
+// wupinEntity.setKucunwl("true");
+// wupinEntity.setXiaoshouwl("false");
+// wupinEntity.setPassing("true");
// this.initTypeAttributeValue(wupinEntity,btmTypeVO);
- return wupinEntity;
+// return wupinEntity;
// return cbo;
@@ -1236,8 +1266,8 @@
//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
if (!CollectionUtils.isEmpty(conditionMap)) {
Map<String, String> andConditionMap = new HashMap<>();
- andConditionMap.put("islastr", "1");
- andConditionMap.put("islastv", "1");
+ andConditionMap.put("lastr", "1");
+ andConditionMap.put("lastv", "1");
if (StringUtils.isNotBlank(orderDTO.getOid())) {
andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
}
@@ -2883,4 +2913,146 @@
}
return buttonVOList;
}
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param baseModels 澶勭悊鏁版嵁
+ * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟
+ */
+ @Override
+ public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception {
+ //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+ if(listR.getData().size() == 0){
+ throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+ }
+ //灏哹ean杞负map,mybatis缁熶竴澶勭悊
+ List<Map<String,String>> maps = new ArrayList<>();
+ baseModels.stream().forEach(model-> {
+ try {
+ maps.add(VciBaseUtil.convertBean2Map(model));
+ } catch (Exception e) {
+ throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.toString());
+ }
+ });
+ return commonsMapper.insertByBaseModel(listR.getData().get(0).getTableName(), maps.get(0), maps);
+ }
+
+ /**
+ * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
+ *
+ * @param btmType 涓氬姟绫诲瀷
+ * @param oids 闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑
+ * @return 鏌ヨ鍑虹殑鏁版嵁
+ */
+ @Override
+ public List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException {
+
+ //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+ if(listR.getData().size() == 0){
+ throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+ }
+ //鏌ヨ鏁版嵁
+ List<Map> maps = commonsMapper.selectBySql("select * from " + listR.getData().get(0).getTableName() + " where oid in ("
+ + VciBaseUtil.toInSql(oids.toString()) + ")");
+
+ List<BaseModel> baseModels = new ArrayList<>();
+ //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑
+ for (Map map : maps) {
+ Object obj = BaseModel.class.newInstance();
+ BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
+ PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+ for (PropertyDescriptor property : propertyDescriptors) {
+ Method setter = property.getWriteMethod();
+ if (setter != null) {
+ //oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊
+ if(map.get(property.getName().toUpperCase()) instanceof TIMESTAMP){
+ LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
+ ZoneId zoneId = ZoneId.systemDefault();
+ ZonedDateTime zdt = localDateTime.atZone(zoneId);
+ Date date = Date.from(zdt.toInstant());
+ setter.invoke(obj,date);
+ map.remove(property.getName().toUpperCase());
+ } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊
+ else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal
+ && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())){
+ setter.invoke(obj, ((BigDecimal)map.get(property.getName().toUpperCase())).intValue());
+ map.remove(property.getName().toUpperCase());
+ }else if(map.get(property.getName().toUpperCase()) != null){
+ setter.invoke(obj, map.get(property.getName().toUpperCase()));
+ map.remove(property.getName().toUpperCase());
+ }
+ }
+ }
+ ((BaseModel) obj).setData(map);
+ baseModels.add((BaseModel) obj);
+ }
+ return baseModels;
+ }
+
+
+ /**
+ * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞�
+ * @param boName 涓氬姟绫诲瀷鍚嶇О
+ * @return 涓氬姟鏁版嵁瀵硅薄
+ */
+ public BaseModel createBaseModel(String boName) {
+ R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName));
+ String userName = AuthUtil.getUser().getUserName();
+ BaseModel bo = new BaseModel();
+ bo.setOid(VciBaseUtil.getPk());
+// bo.setRevisionid(VciBaseUtil.getPk());
+// bo.setNameoid(VciBaseUtil.getPk());
+ bo.setBtmname(boName);
+ bo.setLastR("1");
+ bo.setFirstR("1");
+ bo.setFirstV("1");
+ bo.setLastV("1");
+ bo.setCreator(userName);
+ bo.setCreateTime(new Date());
+ bo.setLastModifier(userName);
+ bo.setLastModifyTime(new Date());
+ bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId());
+ bo.setVersionRule(String.valueOf(listR.getData().get(0).getVersionRule()));
+ if(StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())){
+ R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient
+ .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId()));
+ bo.setRevisionValue(revisionRuleVO.getData().get(0).getStartCode());
+ }
+ bo.setRevisionSeq(1);
+ bo.setVersionSeq(1);
+ bo.setVersionValue(getVersionValue(WebUtil.getInt(listR.getData().get(0).getVersionRule())));
+ bo.setLctid(listR.getData().get(0).getLifeCycleId());
+// if(StringUtils.isNotBlank(listR.getData().get(0).getLifeCycleId())){
+// OsLifeCycleVO lifeCycleVO = lifeService.getLifeCycleById(listR.getData().get(0).getLifeCycleId());
+ bo.setLcStatus("Editing");
+// }
+ bo.setId("");
+ bo.setName("");
+ bo.setDescription("");
+ bo.setOwner(userName);
+// bo.setCheckinby(userName);
+ bo.setCopyFromVersion("");
+// this.initTypeAttributeValue(bo,btmTypeVO);
+ return bo;
+ }
+
+ /**
+ * 鑾峰彇鐗堟鐨勫��
+ * @param verRuleName 鐗堟鐨勮鍒�
+ * @return 鐗堟鐨勫�硷紝娌℃湁瑙勫垯鍒欎负绌�
+ */
+ private String getVersionValue(int verRuleName) {
+ if (verRuleName == 0) {
+ return "1";
+ } else if (verRuleName == 1) {
+ return "a";
+ } else if (verRuleName == 2) {
+ return "0";
+ }
+ return "";
+ }
}
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 6a785bc..f199450 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
@@ -2,11 +2,11 @@
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.entity.CodeSerialValue;
-import com.vci.ubcs.code.entity.CodeWupin;
import com.vci.ubcs.code.enumpack.CodeCutTypeEnum;
import com.vci.ubcs.code.enumpack.CodeGetValueTypeEnum;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
@@ -14,18 +14,22 @@
import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
import com.vci.ubcs.code.mapper.CodeSerialValueMapper;
import com.vci.ubcs.code.service.ICodeWupinService;
+import com.vci.ubcs.code.service.MdmEngineService;
import com.vci.ubcs.code.service.MdmProductCodeService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.constant.RegExpConstant;
import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -55,12 +59,24 @@
*/
@Resource
private ICodeWupinService iCodeWupinService;
+ /**
+ * 鎵�鏈夌殑缂栫爜鐨勫唴瀹�
+ */
+ @Resource
+ @Lazy
+ private MdmEngineService mdmEngineService;
+
+ /**
+ * 鍏紡鐨勬湇鍔�
+ */
+ @Autowired
+ private FormulaServiceImpl formulaService;
@Override
- public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupin> dataCBOList) {
+ 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());
+ dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
// batchCBO.getCreateCbos().addAll(dataCBOList);
List<String> codeList = new ArrayList<>();
@@ -82,7 +98,7 @@
// VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
String code = cbo.getId();
List<String> serialUnitList = new ArrayList<>();
- String[] secLengths = cbo.getCodeSecLengthField().split("#");
+ String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#");
List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
Map<String/**鐮佹鐨勪富閿�**/,String/**鐮佹鐨勫��**/> serialValueMap = new HashMap<>();
Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
@@ -266,7 +282,7 @@
Map<String/**鐮佹鐨勪富閿�**/, Map<String, CodeSerialValue>> maxSerialValueMap = new HashMap<>();
for (int i = 0; i < dataCBOList.size(); i++) {
- CodeWupin cbo = dataCBOList.get(i);
+ BaseModel cbo = dataCBOList.get(i);
List<String> thisSecValueList = new LinkedList<>();
for (int j = 0; j < secValueList.size(); j++) {
thisSecValueList.add(secValueList.get(j));
@@ -303,13 +319,17 @@
Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
s.setLcStatus(statusMap.get(s.getOid()));
-
});
+
+
allCodeDOList.stream().forEach(
allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
);
+
codeAllCodeService.saveBatch(allCodeDOList);
- iCodeWupinService.saveBatch(dataCBOList);
+// iCodeWupinService.saveBatch(dataCBOList);
+ mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
+
// batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
// s.setLcStatus(statusMap.get(s.getOid()));
// try {
@@ -332,7 +352,7 @@
* @param serialUnitList 娴佹按渚濇嵁鐨勫唴瀹�
* 杩橀渶瑕佸悗缁殑涓�涓Щ妞嶅皢浼氭秹鍙婂埌鍏朵粬鐨勬湇鍔�
*/
- private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList, CodeWupin cbo,
+ private void switchAttrSecValue(List<CodeBasicSecVO> attrSecVOList, BaseModel cbo,
List<String> thisSecValueList, boolean attrSevIsSerialDepend,
List<String> serialUnitList){
if (!CollectionUtils.isEmpty(attrSecVOList)) {
@@ -340,9 +360,9 @@
String value = "";
if (StringUtils.isNotBlank(attrSevVO.getGetValueClass())) {
//浣跨敤缁勫悎瑙勫垯鏉ュ鐞嗙殑
-// value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass());
+ value = getValueByFormulaForCBO(cbo, attrSevVO.getGetValueClass());
} else {
-// value = cbo.getAttributeValue(attrSevVO.getReferAttributeId());
+ value = cbo.getData().get(attrSevVO.getReferAttributeId());
}
if (value == null) {
value = "";
@@ -591,7 +611,7 @@
* @param allCodeDOList 鎵�鏈夌殑鐮佸�肩殑瀵硅薄鍒楄〃
*/
private void wrapperAllCode(CodeClassifyFullInfoBO classifyFullInfoBO, CodeRuleVO ruleVO,
- CodeWupin cbo, CodeClassifyTemplateVO templateVO,
+ BaseModel cbo, CodeClassifyTemplateVO templateVO,
List<CodeAllCode> allCodeDOList, String serialUnitString, String serialValueString){
CodeAllCode allCodeDO = new CodeAllCode();
allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
@@ -746,4 +766,20 @@
// WebUtil.setPersistence(oldPersistence);
return updateFlag.get();
}
+
+ /**
+ * 浣跨敤CBO澶勭悊缁勫悎瑙勫垯鐨勫唴瀹�
+ * @param cbo 鏁版嵁鐨勫唴瀹�
+ * @param rule 瑙勫垯鐨勫唴瀹�
+ * @return 杞崲鍚庣殑
+ */
+ private String getValueByFormulaForCBO(BaseModel cbo,String rule){
+ Map<String, Object> dataMap = BeanUtils.beanToMap(cbo);
+ Map<String, String> map = new HashMap<String, String>();
+ for (String i : dataMap.keySet()) {
+ map.put(i, String.valueOf(dataMap.get(i)));
+ }
+// WebUtil.copyValueToMapFromCbos(cbo,dataMap);
+ return formulaService.getValueByFormula(map,rule);
+ }
}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
index 4cbd321..7aee99d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -22,5 +22,19 @@
${inSql}
</select>
+ <insert id="insertByBaseModel" parameterType="java.util.Map">
+ insert into ${tableName}
+ (
+ <foreach collection="columnMap" item="value" index="key" separator=",">
+ ${key}
+ </foreach>
+ )
+ <foreach collection="mapList" item="columnMap" separator=" union all ">
+ select <foreach collection="columnMap" item="value" index="key" separator=",">
+ #{value}
+ </foreach>
+ from dual
+ </foreach>
+ </insert>
</mapper>
--
Gitblit v1.9.3