From 0bdd636d2639f16816dbb0368ce9f055ffd781a8 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期二, 11 七月 2023 14:30:00 +0800
Subject: [PATCH] 接口管理模块添加

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java    |   91 ++++++++++++++++++
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java               |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java               |   15 ++
 Source/UBCS/ubcs-service/ubcs-code/pom.xml                                                                          |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java      |   96 +++++++++++++++---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDokingSysManaentService.java            |   39 +++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingTaskWrapper.java                  |    4 
 8 files changed, 224 insertions(+), 28 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java
index 3ed42a7..0e819d8 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java
@@ -321,7 +321,6 @@
 					throw new VciBaseException(LangBaseUtil.getErrorMsg(var13), new String[0], var13);
 				} finally {
 					IOUtils.closeQuietly(os);
-
 					try {
 						wb.close();
 					} catch (Throwable var12) {
diff --git a/Source/UBCS/ubcs-service/ubcs-code/pom.xml b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
index a6f8417..b7db59f 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/pom.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -123,10 +123,10 @@
                     <groupId>javax.servlet</groupId>
                     <artifactId>servlet-api</artifactId>
                 </exclusion>
-                <exclusion>
+                <!--<exclusion>
                     <artifactId>commons-io</artifactId>
                     <groupId>commons-io</groupId>
-                </exclusion>
+                </exclusion>-->
                 <exclusion>
                     <artifactId>geronimo-activation_1.1_spec</artifactId>
                     <groupId>org.apache.geronimo.specs</groupId>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
index c24f718..f47815a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
@@ -4,19 +4,14 @@
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.vci.ubcs.code.dto.DockingSystemConfigDTO;
 import com.vci.ubcs.code.dto.DockingSystemDTO;
+import com.vci.ubcs.code.dto.DockingTaskDTO;
 import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO;
-import com.vci.ubcs.code.entity.DockingData;
-import com.vci.ubcs.code.entity.DockingSystem;
-import com.vci.ubcs.code.entity.DockingSystemConfig;
-import com.vci.ubcs.code.service.IDockingDataService;
-import com.vci.ubcs.code.service.IDockingSystemConfigService;
-import com.vci.ubcs.code.service.IDockingSystemService;
-import com.vci.ubcs.code.vo.pagemodel.DockingDataVO;
-import com.vci.ubcs.code.vo.pagemodel.DockingSystemConfigVO;
-import com.vci.ubcs.code.vo.pagemodel.DockingSystemVO;
-import com.vci.ubcs.code.wrapper.DockingDataWrapper;
-import com.vci.ubcs.code.wrapper.DockingSystemWrapper;
+import com.vci.ubcs.code.entity.*;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.code.wrapper.*;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -24,6 +19,8 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
 
 /**
  * 鐮佹鍩虹淇℃伅鎺у埗鍣�
@@ -45,13 +42,10 @@
 	 * 闆嗘垚鎺ュ彛閰嶇疆鏈嶅姟
 	 */
 	private  final IDockingSystemConfigService dockingSystemConfigService;
-
-
 	/***
-	 * 寰呴泦鎴愭暟鎹湇鍔�
+	 * 寰呴泦绠$悊閰嶇疆鏈嶅姟
 	 */
-	private final IDockingDataService dockingDataService;
-
+	private final IDokingSysManaentService dokingSysManaentService;
 
 	/**绯荤粺闆嗘垚鐨勭郴缁熶俊鎭垪琛�
 	 * @param dockingSystem 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
@@ -188,7 +182,73 @@
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鍒嗛〉", notes = "DockingDataVO")
 	public R<IPage<DockingDataVO>> gridDockingData(DockingData dockingData, Query query){
-		IPage<DockingData> pages = dockingDataService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingData));
-		return R.data(DockingDataWrapper.build().pageVO(pages));
+		IPage<DockingDataVO> pages = dokingSysManaentService.gridDockingData(dockingData,query);
+		return R.data(pages);
 	}
+
+
+	/**
+	 * data鍒楄〃
+	 * @param dockingTask 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛�
+	 */
+	@GetMapping("/gridDockingTask")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "DockingTaskVO")
+	public R<IPage<DockingTaskVO>> gridDockingTask(DockingTask dockingTask, Query query){
+		IPage<DockingTaskVO> pages = dokingSysManaentService.gridDockingTask(dockingTask,query);
+		return R.data(pages);
+	}
+
+	/**
+	 * 鎺ㄩ�佹暟鎹泦鎴愭棩蹇楀垪琛�
+	 * @param dockingLog 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	@GetMapping("/gridLoge")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "DockingLogeVO")
+	public R<IPage<DockingLogeVO>> gridLoge(DockingLog dockingLog, Query query){
+		IPage<DockingLogeVO> pages = dokingSysManaentService.gridLoge(dockingLog,query);
+		return R.data(pages);
+	}
+
+	/**
+	 * 鎺ュ彛param鍒楄〃
+	 * @param dockingSysIntParam 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	@GetMapping("/gridParam")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "dockingSysIntParam")
+	public R<IPage<DockingSysIntParamVO>>gridParam(DockingSysIntParam dockingSysIntParam, Query query){
+		IPage<DockingSysIntParamVO> pages = dokingSysManaentService.gridParam(dockingSysIntParam,query);
+		return R.data(pages);
+	}
+
+	/**
+	 * 鎺ュ彛param鍒楄〃
+	 * @param dockingSysIntHeader 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	@GetMapping("/gridHeader")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "DockingSysIntHeaderVO")
+	public R<IPage<DockingSysIntHeaderVO>>gridHeader(DockingSysIntHeader dockingSysIntHeader, Query query){
+		IPage<DockingSysIntHeaderVO>  pages=dokingSysManaentService.gridHeader(dockingSysIntHeader,query);
+		return R.data(pages);
+
+
+	}
+
+//	/**
+//	 *鎵归噺澶勭悊
+//	 * 蹇呴』瑕佹湁鍒嗙被oid鍜宒ataoid
+//	 * @return
+//	 */
+//	@PostMapping("/sendData")
+//	public  R sendData(String oid){
+//
+//		return codeDuckingSyncServiceI.sendData(oid);
+//	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDokingSysManaentService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDokingSysManaentService.java
index 3539281..aed6f9d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDokingSysManaentService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDokingSysManaentService.java
@@ -1,10 +1,49 @@
 package com.vci.ubcs.code.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.entity.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import org.springblade.core.mp.support.Query;
+
 /***
  * 绯荤当绠$悊鐩稿叧鏈嶅姟
  */
 public interface IDokingSysManaentService {
+	/**
+	 * data鍒楄〃
+	 * @param dockingTask 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛�
+	 */
+	IPage<DockingTaskVO>gridDockingTask(DockingTask dockingTask, Query query);
+	/**
+	 * 寰呴泦鎴愭暟鎹�
+	 * @param dockingData 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 绯荤粺闆嗘垚鍩虹淇℃伅鏄剧ず瀵硅薄鍒楄〃
+	 */
+	IPage<DockingDataVO>gridDockingData(DockingData dockingData, Query query);
 
 
 
+	/**
+	 * 鎺ㄩ�佹暟鎹泦鎴愭棩蹇楀垪琛�
+	 * @param dockingLog 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	IPage<DockingLogeVO>gridLoge(DockingLog dockingLog, Query query);
+
+	/**
+	 * 鎺ュ彛param鍒楄〃
+	 * @param dockingSysIntParam 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	IPage<DockingSysIntParamVO>gridParam(DockingSysIntParam dockingSysIntParam, Query query);
+
+
+	/**
+	 * 鎺ュ彛param鍒楄〃
+	 * @param dockingSysIntHeader 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	IPage<DockingSysIntHeaderVO>gridHeader(DockingSysIntHeader dockingSysIntHeader, Query query);
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
index db243fa..2c282f1 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -98,7 +98,7 @@
 	/***
 	 * 浠诲姟鐢熸垚鏈嶅姟
 	 */
-	@Autowired(required = false)
+	@Autowired( required = false)
 	private IDockingTaskService dockingTaskService;
 
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java
new file mode 100644
index 0000000..299711d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java
@@ -0,0 +1,91 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.*;
+import com.vci.ubcs.code.mapper.DockingSystemConfigMapper;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.code.wrapper.*;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DokingSysManaentServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDokingSysManaentService {
+
+
+	/***
+	 * 浠诲姟鐢熸垚鏈嶅姟
+	 */
+	@Autowired( required = false)
+	private IDockingTaskService dockingTaskService;
+
+
+	/***
+	 * 鏃ュ織鐢熸垚鏈嶅姟
+	 */
+	@Autowired( required = false)
+	private IDockingLogeService dockingLogeService;
+
+	/***
+	 * 闆嗘垚鎺ュ彛澶村崗璁湇鍔�
+	 */
+	@Autowired( required = false)
+	private  IDockingSysIntHeaderService dockingSysIntHeaderService;
+	/***
+	 * 闆嗘垚鎺ュ彛鍙傛暟鏈嶅姟
+	 */
+	@Autowired( required = false)
+	private IDockingSysIntParamService dockingSysIntParamService;
+
+	/***
+	 * 寰呴泦鎴愭暟鎹湇鍔�
+	 */
+	@Autowired( required = false)
+	private  IDockingDataService dockingDataService;
+	/**
+	 * data鍒楄〃
+	 * @param dockingTask 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭樉绀哄璞″垪琛�
+	 */
+	@Override
+	public IPage<DockingTaskVO> gridDockingTask(DockingTask dockingTask, Query query) {
+		IPage<DockingTask> pages=dockingTaskService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingTask));
+		return DockingTaskWrapper.build().pageVO(pages);
+	}
+
+	@Override
+	public IPage<DockingDataVO> gridDockingData(DockingData dockingData, Query query) {
+		IPage<DockingData> pages=dockingDataService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingData));
+		return DockingDataWrapper.build().pageVO(pages);
+	}
+
+	/**
+	 * 鎺ㄩ�佹暟鎹泦鎴愭棩蹇楀垪琛�
+	 * @param dockingLog 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	@Override
+	public IPage<DockingLogeVO> gridLoge(DockingLog dockingLog, Query query) {
+		IPage<DockingLog> pages=dockingLogeService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingLog));
+		return DockingLogeWrapper.build().pageVO(pages);
+	}
+
+	@Override
+	public IPage<DockingSysIntParamVO> gridParam(DockingSysIntParam dockingSysIntParam, Query query) {
+		IPage<DockingSysIntParam> pages=dockingSysIntParamService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingSysIntParam));
+		return DockingSysIntParamWrapper.build().pageVO(pages);
+	}
+	/**
+	 * 鎺ュ彛param鍒楄〃
+	 * @param dockingSysIntHeader 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 闆嗘垚鏃ュ織鏄剧ず瀵硅薄鍒楄〃
+	 */
+	@Override
+	public IPage<DockingSysIntHeaderVO> gridHeader(DockingSysIntHeader dockingSysIntHeader , Query query) {
+		IPage<DockingSysIntHeader> pages = dockingSysIntHeaderService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingSysIntHeader));
+		return DockingSysIntHeaderWrapper.build().pageVO(pages);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index eae24b4..a2c6424 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -361,16 +361,23 @@
 			//鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
 			//鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
 			//缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
-			List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s ->
+			List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList=codeClassifyTemplateVO.getAttributes();
+			if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
+				if (CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
+					throw new VciBaseException("妯℃澘娌℃湁閰嶇疆灞炴��");
+				}
+			}
+			List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateAttrVOList.stream().filter(s ->
 				!DEFAULT_ATTR_LIST.contains(s.getId())
 					&& StringUtils.isBlank(s.getComponentRule())
 					&& StringUtils.isBlank(s.getClassifyInvokeAttr())
 					&& (isHistory || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
 			).collect(Collectors.toList());
 
-			if(CollectionUtils.isEmpty(templateAttrVOS)){
-				throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
-			}
+				if (CollectionUtils.isEmpty(templateAttrVOS)) {
+					throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
+				}
+
 			List<CodeClassifyTemplateAttrVO> idAttrVOList = codeClassifyTemplateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
 			LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
 			Workbook workbook = new HSSFWorkbook();
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingTaskWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingTaskWrapper.java
index 377a698..eabea3a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingTaskWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingTaskWrapper.java
@@ -12,8 +12,8 @@
 import java.util.Objects;
 
 public class DockingTaskWrapper extends BaseEntityWrapper<DockingTask, DockingTaskVO> {
-	public static DockingSystemWrapper build() {
-		return new DockingSystemWrapper();
+	public static DockingTaskWrapper build() {
+		return new DockingTaskWrapper();
 	}
 	@Override
 	public DockingTaskVO entityVO(DockingTask entity) {

--
Gitblit v1.9.3