From 4e811ec71dba161e13592828a6035e9316b1548e Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 30 八月 2024 17:15:29 +0800
Subject: [PATCH] 链接类型查询模板
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java | 168 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 124 insertions(+), 44 deletions(-)
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
index 93c7710..5d53a0d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
@@ -1,16 +1,14 @@
package com.vci.web.service.impl;
-import com.vci.client.common.providers.ClientServiceProvider;
import com.vci.corba.common.PLException;
-import com.vci.corba.omd.data.BusinessObject;
-import com.vci.corba.omd.data.LinkObject;
-import com.vci.corba.omd.data.RevisionDataInfo;
-import com.vci.corba.omd.data.VersionDataInfo;
+import com.vci.corba.framework.data.UserInfo;
+import com.vci.corba.omd.data.*;
import com.vci.corba.omd.lcm.LifeCycle;
-import com.vci.file.pagemodel.VciFileObjectVO;
+import com.vci.dto.*;
import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
import com.vci.frameworkcore.lcstatuspck.ReleaseDataLCStatus;
import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.*;
import com.vci.starter.revision.bo.TreeWrapperOptions;
import com.vci.starter.web.annotation.bus.VciChangeDataAfter;
import com.vci.starter.web.annotation.bus.VciChangeDataBefore;
@@ -23,10 +21,9 @@
import com.vci.starter.web.pagemodel.*;
import com.vci.starter.web.util.*;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.dto.*;
+import com.vci.web.enumpck.DeleteTypeEnum;
import com.vci.web.enumpck.UIFieldTypeEnum;
import com.vci.web.enumpck.UITreeLoadTypeEnum;
-import com.vci.web.pageModel.*;
import com.vci.web.query.UIDataGridQuery;
import com.vci.web.query.UIFormQuery;
import com.vci.web.query.UILinkTypeDataQuery;
@@ -37,13 +34,15 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Method;
import java.util.*;
import java.util.stream.Collectors;
-import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
/**
* UI涓婄殑鏁版嵁鏌ヨ
@@ -763,7 +762,7 @@
* @throws VciBaseException 閰嶇疆鎴栬�呮槸璋冪敤涓嶆垚鍔熺殑鏃跺�欙紝浼氭姏鍑哄紓甯�
*/
@Override
- public BaseResult callPreEvent(BaseModelDTOList baseModelDTOList,BaseLinkModelDTOList baseLinkModelDTOList, String preEvent, VciChangeDocumentTypeEnum businessType) throws VciBaseException{
+ public BaseResult callPreEvent(BaseModelDTOList baseModelDTOList, BaseLinkModelDTOList baseLinkModelDTOList, String preEvent, VciChangeDocumentTypeEnum businessType) throws VciBaseException{
if((baseModelDTOList == null || CollectionUtils.isEmpty(baseModelDTOList.getDataList())) && (baseLinkModelDTOList == null || CollectionUtils.isEmpty(baseLinkModelDTOList.getDataList()))){
return BaseResult.success();
}
@@ -1243,7 +1242,7 @@
if(baseModel.getRevisionValue() == null){
baseModel.setRevisionValue("");
}
- return changeRevisionValueInfoToObject(platformClientUtil.getBOFactoryService().getNextRevisionValueObject(WebUtil.getTableName(btmTypeVO.getId()),baseModel.getNameOid(),btmTypeVO.getRevisionRuleId(),btmTypeVO.isInputRevisionFlag(),baseModel.getRevisionValue()));
+ return changeRevisionValueInfoToObject(platformClientUtil.getBOFactoryService().getNextRevisionValueObject(btmTypeVO.getId(),baseModel.getNameOid(),btmTypeVO.getRevisionRuleId(),btmTypeVO.isInputRevisionFlag(),baseModel.getRevisionValue()));
} catch (PLException vciError) {
throw WebUtil.getVciBaseException(vciError);
}
@@ -1365,7 +1364,7 @@
}catch (Throwable e){
//璇存槑鍚庣疆浜嬩欢鍑虹幇浜嗛敊璇紝閭d箞灏遍渶瑕佸垹闄や互鍓嶇殑杩欐潯鏁版嵁
try {
- platformClientUtil.getBOFactoryService().batchDeleteBusinessObject(afterBOs.toArray(new BusinessObject[0]),1);
+ platformClientUtil.getBOFactoryService().batchDeleteBusinessObject(afterBOs.toArray(new BusinessObject[0]),DeleteTypeEnum.OID_AND_TS.getValue());
} catch (PLException vciError) {
throw WebUtil.getVciBaseException(vciError);
}
@@ -1429,7 +1428,7 @@
* @throws VciBaseException 淇濆瓨鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
*/
@Override
- public BaseResult<Map<String, Object>> upRevision(FormDataDTO formDataDTO) throws VciBaseException {
+ public BaseResult<Map<String, Object>> upRevision(FormDataDTO formDataDTO) throws VciBaseException, PLException {
//棣栧厛鍒ゆ柇瀵硅薄鏄惁涓虹┖
VciBaseUtil.alertNotNull(formDataDTO,"淇敼鐨勬暟鎹璞�",formDataDTO.getBtmname(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�",formDataDTO.getCopyFromVersion(),"鑰佺増鏈殑涓婚敭");
UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmname(), formDataDTO.getFormDefineId());
@@ -1440,28 +1439,40 @@
//璇存槑鍓嶇疆浜嬩欢娌℃湁鎵ц鎴愬姛
return beforeResult;
}
- //灏佽鏁版嵁
- BaseResult<BusinessObject> resultCbo = wrapperCbo(formDataDTO,formDefineVO,false,formDataDTO.isUpVersion()?false:true,formDataDTO.isUpVersion());
- if(!resultCbo.isSuccess()){
- return BaseResult.fail(resultCbo.getMsg(),resultCbo.getMsgObjs());
+ List<BusinessObject> businessObjects = null;
+ Date ts = formDataDTO.getTs();
+ Map<String,String> conditionMap = WebUtil.getOidQuery(formDataDTO.getCopyFromVersion());
+ conditionMap.put("ts", VciDateUtil.date2Str(ts,VciDateUtil.DateTimeMillFormat));
+ conditionMap.put("oid",formDataDTO.getCopyFromVersion());
+ businessObjects = boService.queryCBO(formDataDTO.getBtmname(), conditionMap);
+ if(businessObjects.size() ==0){
+ throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽缓璁偍鍒锋柊鍚庨噸鏂版搷浣�");
}
+ //鎵╁睍灞炴�х殑鍊�
+ Map<String, String> data = formDataDTO.getData();
+ Map<String,String> dataLow = new HashMap<>();
+ data.forEach((key,value)->{
+ dataLow.put(key.toLowerCase(),value);
+ });
+
+ Map<String,String> baseDataMap = formDataDTO2MapLow(formDataDTO);
+ Map<String,String> allDataMapLow = new HashMap<>();
+ allDataMapLow.putAll(dataLow);
+ allDataMapLow.putAll(baseDataMap);
+ //鍒ゆ柇鍞竴椤�
+ BaseResult baseResult = checkUnique(formDefineVO, null, allDataMapLow, true);
+ if(!baseResult.isSuccess()){
+ return baseResult;
+ }
+ BusinessObject businessObject = platformClientUtil.getBOFService()
+ .revisionBusinessObject(businessObjects.get(0), null, !formDataDTO.isUpVersion(),true, false, false);
//鎵ц淇濆瓨
- BaseResult<Map<String,Object>> result = BaseResult.success();
- try {
- BusinessObject bo = platformClientUtil.getBOFService().createBusinessObject(resultCbo.getObj(),formDataDTO.isUpVersion()?false:true,formDataDTO.isUpVersion());
- BusinessObject afterCbo = new BusinessObject();
- afterCbo = bo;
- result.setObj(boService.cbo2Map(afterCbo));
- } catch (PLException vciError) {
- throw WebUtil.getVciBaseException(vciError);
- }
- if(!CollectionUtils.isEmpty(formDataDTO.getReleaseFileOids())){
- fileObjectService.releasedFile(resultCbo.getObj().btName,resultCbo.getObj().oid,formDataDTO.getReleaseFileOids());
- }
+ BaseResult<Map<String, Object>> result = BaseResult.success();
+ result.setObj(boService.cbo2Map(businessObject));
//鍚庣疆浜嬩欢
String afterEvent = formDataDTO.getPostEvent();
try {
- callPostEvent(Arrays.stream(new BusinessObject[]{resultCbo.getObj()}).collect(Collectors.toList()), null,afterEvent, VciChangeDocumentTypeEnum.EDIT);
+ callPostEvent(Arrays.stream(new BusinessObject[]{businessObject}).collect(Collectors.toList()), null,afterEvent, VciChangeDocumentTypeEnum.EDIT);
}catch (Throwable e){
throw new VciBaseException(LangBaseUtil.getErrorMsg(e),new String[]{},e);
}
@@ -1673,13 +1684,6 @@
throw new VciBaseException(formLinkDataDTO.isDirection()?"from绔�":"to绔�" + "鐨勪笟鍔$被鍨嬩负绌�");
}
- //鏌ヨfrom绔殑
- BusinessObject fromCbo = new BusinessObject();
- try {
- fromCbo = platformClientUtil.getBOFService().readBusinessObject(fromOid,fromBtmName);
- } catch (PLException vciError) {
- throw WebUtil.getVciBaseException(vciError);
- }
String finalPrefix = prefix;
formLinkDataDTO.getData().forEach((key, value)->{
if(key.toLowerCase().startsWith(finalPrefix)){
@@ -1700,10 +1704,12 @@
return BaseResult.fail(resultClo.getMsg(),resultClo.getMsgObjs());
}
clo = resultClo.getObj();
+ if(StringUtils.isBlank(clo.toOid)){
+ clo.toOid = toCbo.oid;
+ }
//鎵ц淇濆瓨
BusinessObject[] bos = new BusinessObject[1];
ObjectTool.dealBusinessObjectNullValue(toCbo);
- ObjectTool.dealLinkObjectNullValue(clo);
bos[0] = toCbo;
try {
platformClientUtil.getBOFService().createBusinessObjectWithLink(bos,clo);
@@ -1758,7 +1764,6 @@
if(editFlag){
try {
LinkObject linkObject = platformClientUtil.getBOFService().readLinkObjectById(formLinkDataDTO.getOid(), formLinkDataDTO.getLinkType());
- clo = new LinkObject();
clo = linkObject;
} catch (PLException vciError) {
throw WebUtil.getVciBaseException(vciError);
@@ -1771,6 +1776,14 @@
clo.createTime = System.currentTimeMillis();
clo.ts = System.currentTimeMillis();
clo.ltName = formLinkDataDTO.getLinkType();
+ clo.toOid = formLinkDataDTO.getToid();
+ clo.toNameOid = formLinkDataDTO.getTnameoid();
+ clo.toRevOid = formLinkDataDTO.getTrevisionoid();
+ clo.toBTName = formLinkDataDTO.getTbtmname();
+ clo.fromOid = formLinkDataDTO.getFoid();
+ clo.fromBTName = formLinkDataDTO.getFbtmname();
+ clo.fromNameOid = formLinkDataDTO.getFnameoid();
+ clo.fromRevOid = formLinkDataDTO.getFrevisionoid();
}
//
LinkObject finalClo = clo;
@@ -2029,7 +2042,7 @@
if (ruleVO == null || StringUtils.isBlank(ruleVO.getOid())) {
throw new VciBaseException("{0}閲岀殑鐗堟湰瑙勫垯璁剧疆寰椾笉姝g‘锛屽湪绯荤粺涓病鏈夋壘鍒皗1}杩欎釜鐗堟湰瑙勫垯", new String[]{btmTypeVO.getName(), btmTypeVO.getRevisionRuleId()});
}
- cbo.revisionValue = ruleVO.getStartCode();
+ cbo.revisionValue = ruleVO.getInitialValue();
}
if (StringUtils.isBlank(cbo.nameoid)) {
cbo.nameoid = VciBaseUtil.getPk();
@@ -2147,8 +2160,6 @@
String prefix = formLinkDataDTO.isDirection()?LO_FROM_PREFIX:LO_TO_PREFIX;
String toOid = formLinkDataDTO.isDirection()?formLinkDataDTO.getFoid():formLinkDataDTO.getToid();
String toBtmName = formLinkDataDTO.isDirection()?formLinkDataDTO.getFbtmname():formLinkDataDTO.getTbtmname();
- String fromOid = formLinkDataDTO.isDirection()?formLinkDataDTO.getToid():formLinkDataDTO.getFoid();
- String fromBtmName = formLinkDataDTO.isDirection()?formLinkDataDTO.getTbtmname():formLinkDataDTO.getFbtmname();
Map<String,String> boData = new HashMap<>();
Map<String,String> loData = new HashMap<>();
@@ -2285,7 +2296,7 @@
if(deleteLinkDataDTO.isDeleteFromData()){
fromBtmDataGroups.forEach((btm,cbos)->{
try{
- platformClientUtil.getBOFactoryService().batchDeleteBusinessObject(cbos.toArray(new BusinessObject[0]),1);
+ platformClientUtil.getBOFactoryService().batchDeleteBusinessObject(cbos.toArray(new BusinessObject[0]), DeleteTypeEnum.OID_AND_TS.getValue());
}catch (PLException vciError) {
throw WebUtil.getVciBaseException(vciError);
}
@@ -2294,7 +2305,7 @@
if(deleteLinkDataDTO.isDeleteToData()){
toBtmDataGroups.forEach((btm,cbos)->{
try{
- platformClientUtil.getBOFactoryService().batchDeleteBusinessObject(cbos.toArray(new BusinessObject[0]),1);
+ platformClientUtil.getBOFactoryService().batchDeleteBusinessObject(cbos.toArray(new BusinessObject[0]),DeleteTypeEnum.OID_AND_TS.getValue());
}catch (PLException vciError) {
throw WebUtil.getVciBaseException(vciError);
}
@@ -2454,4 +2465,73 @@
}
return dataMap;
}
+
+ /**
+ * 鏁版嵁鍗囩増鏈�/娆★紝鍓嶇浣跨敤JSON鎻愪氦
+ * @param btmname 涓氬姟绫诲瀷鐨勪俊鎭�
+ * @param oid 涓氬姟鏁版嵁鐨勪富閿�
+ * @param type 1:鐗堟瀵硅薄锛�2锛氱増鏈璞★紱3锛氫富瀵硅薄
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public BaseResult deleteBusinessObject(String btmname, String oid, int type) throws PLException {
+ List<BusinessObject> cbos = boService.queryCBO(btmname,WebUtil.getOidQuery(oid));
+ BaseResult<Object> objectBaseResult = new BaseResult<>();
+ if(cbos.size() == 0){
+ objectBaseResult.setSuccess(false);
+ throw new PLException("500", new String[]{"娌℃湁鑾峰彇鍒版暟鎹殑涓婚敭"});
+ }
+ for (BusinessObject cbo : cbos) {
+ if(StringUtils.isBlank(cbo.revisionid)){
+ String revisionoid = Arrays.stream(cbo.hisAttrValList).filter(e -> e.attrName.equals("REVISIONOID")).findFirst().map(e -> e.attrVal).orElse("");
+ cbo.revisionid = revisionoid;
+ }
+ boolean b = platformClientUtil.getBOFService().deleteBusinessObject(cbo,type);
+ if(!b){
+ throw new PLException("500", new String[]{"鏁版嵁鍒犻櫎澶辫触锛侊紒"});
+ }
+ }
+ return BaseResult.success();
+ }
+ /**
+ * 鍙樻洿鎵�鏈夎��
+ * @param btmname 涓氬姟绫诲瀷
+ * @param oid 涓婚敭
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ public BaseResult changeBusinessObjectOwner(String btmname, String oid) throws PLException {
+ List<BusinessObject> cbos = boService.queryCBO(btmname,WebUtil.getOidQuery(oid));
+ BaseResult<Object> objectBaseResult = new BaseResult<>();
+ if(cbos.size() == 0){
+ objectBaseResult.setSuccess(false);
+ throw new PLException("500", new String[]{"娌℃湁鑾峰彇鍒版暟鎹殑涓婚敭"});
+ }
+ UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(WebUtil.getCurrentUserId());
+ for (BusinessObject cbo : cbos) {
+ platformClientUtil.getBOFService().changeBusinessObjectOwner(cbo,userInfo);
+ }
+ return BaseResult.success();
+ }
+ /**
+ * 鍙樻洿鎵�鏈夎��
+ * @param btmname 涓氬姟绫诲瀷
+ * @param oid 涓婚敭
+ * @param releaseStatus 鍙戝竷鐘舵��
+ * @return 鎵ц鐨勭粨鏋�
+ */
+ @Override
+ @Transactional
+ public BaseResult transferBusinessObject(String btmname, String oid, String toStatus,String releaseStatus) throws PLException {
+ List<BusinessObject> cbos = boService.queryCBO(btmname,WebUtil.getOidQuery(oid));
+ BaseResult<Object> objectBaseResult = new BaseResult<>();
+ if(cbos.size() == 0){
+ objectBaseResult.setSuccess(false);
+ throw new PLException("500", new String[]{"娌℃湁鑾峰彇鍒版暟鎹殑涓婚敭"});
+ }
+ for (BusinessObject cbo : cbos) {
+ platformClientUtil.getBOFService().transferBusinessObjectAndRelease(cbo, toStatus, releaseStatus);
+ }
+ return BaseResult.success();
+ }
}
--
Gitblit v1.9.3