From d882aebbf8db1527172ac7fcf189f8b8204c0a5c Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 02 七月 2024 17:18:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java |   84 ++++++++++++++++++++++++++++++-----------
 1 files changed, 61 insertions(+), 23 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..a9e66f5 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
@@ -2,10 +2,7 @@
 
 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.omd.data.*;
 import com.vci.corba.omd.lcm.LifeCycle;
 import com.vci.file.pagemodel.VciFileObjectVO;
 import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
@@ -1243,7 +1240,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);
         }
@@ -1429,7 +1426,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 +1437,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);
         }
@@ -2454,4 +2463,33 @@
         }
         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;
+            }
+//            cbo.revisionid = hisAttrValList.
+            boolean b = platformClientUtil.getBOFService().deleteBusinessObject(cbo,type);
+            if(!b){
+                throw new PLException("500", new String[]{"鏁版嵁鍒犻櫎澶辫触锛侊紒"});
+            }
+        }
+        return BaseResult.success();
+    }
 }

--
Gitblit v1.9.3