diff --git a/com.awspaas.user.apps.gpt_interface/lib/com.awspaas.user.apps.gpt_interface.jar b/com.awspaas.user.apps.gpt_interface/lib/com.awspaas.user.apps.gpt_interface.jar new file mode 100644 index 00000000..418a4d2a Binary files /dev/null and b/com.awspaas.user.apps.gpt_interface/lib/com.awspaas.user.apps.gpt_interface.jar differ diff --git a/com.awspaas.user.apps.gpt_interface/manifest.xml b/com.awspaas.user.apps.gpt_interface/manifest.xml new file mode 100644 index 00000000..62e9fcf0 --- /dev/null +++ b/com.awspaas.user.apps.gpt_interface/manifest.xml @@ -0,0 +1,29 @@ + + + + 伊利GPT接口对接 + 1.0 + 12 + AWSPaaS-EndUser + true + +
+ + + + + + + true + + + true + true + com.actionsoft.apps.coe.pal + + 2024-09-30 15:25:40 + + + 2024-09-30 + 2024-09-29 12:00:57 +
diff --git a/com.awspaas.user.apps.gpt_interface/mobile/mobile-profile.xml b/com.awspaas.user.apps.gpt_interface/mobile/mobile-profile.xml new file mode 100644 index 00000000..a93e3e64 --- /dev/null +++ b/com.awspaas.user.apps.gpt_interface/mobile/mobile-profile.xml @@ -0,0 +1,15 @@ + + + + + universal + + 1.0 + common + + sid + false + true + false + + diff --git a/com.awspaas.user.apps.gpt_interface/repository/cc/_51d44dfa-b7c2-4422-9e51-fbd7b43e0218/51d44dfa-b7c2-4422-9e51-fbd7b43e0218.xml b/com.awspaas.user.apps.gpt_interface/repository/cc/_51d44dfa-b7c2-4422-9e51-fbd7b43e0218/51d44dfa-b7c2-4422-9e51-fbd7b43e0218.xml new file mode 100644 index 00000000..e1f4dd72 --- /dev/null +++ b/com.awspaas.user.apps.gpt_interface/repository/cc/_51d44dfa-b7c2-4422-9e51-fbd7b43e0218/51d44dfa-b7c2-4422-9e51-fbd7b43e0218.xml @@ -0,0 +1,16 @@ + + + 51d44dfa-b7c2-4422-9e51-fbd7b43e0218 + admin + 2024-09-23 15:23:09 + admin + 2024-09-23 15:23:52 + tGOmxiTgjT/77UoYpSlq8Vc+hHPRoJWHdZexXc7zEpYuMNdhvSICeJnlc/RzRHGrnAnDbDtRxYtOiGaYhu68Qpdguiwbwk9rZfmMRYUv7FwmvS8qgI5pTyPJabB/ltDF + false + GPT初始化接口 + httpApi + service + false + {"serviceId":"","serverType":"Java注解","ptype":"webapi","serviceImpl":"com.awspaas.user.apps.gpt_interface.restful.GPTRestFul","safetyCert":[],"flowControl":"","accessControl":"","desc":"","isSupportCors":true,"isAudit":true,"isLog":false,"apiData":[],"isSLA":false,"status.effect":true} + + diff --git a/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/controller/GPTController.java b/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/controller/GPTController.java index 84076ce1..159009a1 100644 --- a/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/controller/GPTController.java +++ b/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/controller/GPTController.java @@ -1,8 +1,15 @@ package com.awspaas.user.apps.gpt_interface.controller; +import com.actionsoft.apps.coe.pal.pal.repository.dao.CoeProcessLevelDaoFacotory; +import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel; import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate; +import com.actionsoft.bpms.commons.login.constant.LoginConst; +import com.actionsoft.bpms.org.model.UserModel; +import com.actionsoft.bpms.server.SSOUtil; import com.actionsoft.bpms.server.bind.annotation.Controller; import com.actionsoft.bpms.server.bind.annotation.Mapping; +import com.actionsoft.bpms.util.DBSql; +import com.actionsoft.sdk.local.SDK; import java.util.HashMap; import java.util.Map; @@ -20,6 +27,30 @@ public class GPTController { public String openRepositoryHome(String repositoryId){ Map map = new HashMap<>(); map.put("repositoryId", repositoryId); + + //获取用户会话ID + PALRepositoryModel plModel = CoeProcessLevelDaoFacotory.createCoeProcessLevel().getInstance(repositoryId); + String sid=""; + if(plModel!=null){ + String createUser = plModel.getCreateUser(); + UserModel userModel=SDK.getORGAPI().getUser(createUser); + if(userModel.isClosed()==false){ + sid = new SSOUtil().registerClientSessionNoPassword(userModel.getUID(), "cn", "", LoginConst.DEVICE_PC, null); + }else{ + String modifyUser = plModel.getModifyUser(); + UserModel modifyUserModel=SDK.getORGAPI().getUser(modifyUser); + if(modifyUserModel.isClosed()==false){ + sid = new SSOUtil().registerClientSessionNoPassword(modifyUserModel.getUID(), "cn", "", LoginConst.DEVICE_PC, null); + } + } + } + String url = SDK.getPortalAPI().getPortalUrl()+"/r/w?cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open&uuid="+repositoryId+"&sid="+sid+"&taskId="+getLastPublishTaskIdByModelId(repositoryId); + map.put("linkUrl",url); return HtmlPageTemplate.merge("com.awspaas.user.apps.gpt_interface", "repositoryHome.html", map); } + + public String getLastPublishTaskIdByModelId(String repositoryId) { + String sql = "SELECT pl.TASKID FROM APP_ACT_COE_PAL_PUBLISH p, APP_ACT_COE_PAL_PUBLISH_LIST pl WHERE pl.pid = p.id AND pl.palrepositoryid = ? ORDER BY publishdate DESC"; + return DBSql.getString(sql,new Object[]{repositoryId}); + } } diff --git a/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/restful/GPTRestFul.java b/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/restful/GPTRestFul.java index 4e505e73..16587be1 100644 --- a/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/restful/GPTRestFul.java +++ b/com.awspaas.user.apps.gpt_interface/src/com/awspaas/user/apps/gpt_interface/restful/GPTRestFul.java @@ -28,6 +28,8 @@ import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; import java.io.File; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.List; /** @@ -57,19 +59,22 @@ public class GPTRestFul { String queryListSql = ""; List maps = null; if(UtilString.isNotEmpty(repositoryId)){//如果查询Id参数不为空 - queryListSql= " SELECT ID,PLNAME,PLORDERINDEX FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = '1' AND ISUSE = '1' AND ID = ?"; + queryListSql= " SELECT ID,PLNAME,PLORDERINDEX FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = '1' AND ISUSE = '1' AND ID = ? AND PLMETHODID!='process.evc' AND PLMETHODID!='org.role' AND PLMETHODID!='control.kpi' "; maps = DBSql.getMaps(queryListSql, new Object[]{repositoryId}); }else{ - queryListSql= " SELECT ID,PLNAME,PLORDERINDEX FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = '1' AND ISUSE = '1'"; + queryListSql= " SELECT ID,PLNAME,PLORDERINDEX FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = '1' AND ISUSE = '1' AND PLMETHODID!='process.evc' AND PLMETHODID!='org.role' AND PLMETHODID!='control.kpi' "; queryListSql = SQLPagination.getPaginitionSQL(queryListSql, (page - 1) * pageSize, pageSize); maps = DBSql.getMaps(queryListSql, new Object[]{}); } for (RowMap map : maps) { JSONObject repositoryModel = new JSONObject(); String thisRepositoryId = map.getString("ID"); + System.out.println("thisRepositoryId=========="+thisRepositoryId); repositoryModel.put("id",thisRepositoryId); repositoryModel.put("palName",map.getString("PLNAME")); + System.out.println("palName============"+map.getString("PLNAME")); String taskId = getLastPublishTaskIdByModelId(thisRepositoryId); + System.out.println("taskId============"+taskId); //String downloadUrlData= CallASLPUtil.callTranslateDocASLP(thisRepositoryId,taskId); repositoryModel.put("fileDownLoadUrl",outputReportDownload(uc,taskId,thisRepositoryId)); repositoryModel.put("fileLinkText",map.getString("PLNAME")); @@ -152,8 +157,16 @@ public class GPTRestFul { } String filename = docFile.getName(); DCContext sourceDc = new DCContext(_uc, DCProfileManager.getDCProfile(sourceAppId, "output"), sourceAppId, model.getWsId(), taskId, filename); - String downUrl = SDK.getConfAPI().getPortalUrl() + "/r/" + sourceDc.getDownloadURL().replace("./", ""); - return downUrl; + String downUrl = SDK.getConfAPI().getPortalUrl() + "/r/" + sourceDc.getDownloadURL().replace("./", "").trim()+"&lastModified=0"; + + String downUrl2=SDK.getConfAPI().getPortalUrl() + "/r/df?groupValue="+sourceDc.getGroupValue()+"&fileValue="+ sourceDc.getFileValue().trim()+"&sid="+ _uc.getSessionId()+"&repositoryName=output&appId="+sourceAppId+"&attachment=true&fileNameShow="+sourceDc.getFileName()+"&fileName="+sourceDc.getFileName()+"&lastModified=0"; + + + System.out.println("1111111111"+URLEncoder.encode(downUrl2,"UTF-8")); + + //System.out.println("downUrl2====="+downUrl2); + + return downUrl2; } } @@ -168,4 +181,28 @@ public class GPTRestFul { return result.toString(); } + + + /** + * 对中文字符进行UTF-8编码 + * @param source 要转义的字符串 + * @return + * @throws UnsupportedEncodingException + */ + public static String tranformStyle(String source) throws UnsupportedEncodingException + { + char[] arr = source.toCharArray(); + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < arr.length; i++) + { + char temp = arr[i]; + sb.append(URLEncoder.encode("" + temp, "UTF-8")); + continue; + } + return sb.toString(); + } + + + + } diff --git a/com.awspaas.user.apps.gpt_interface/template/page/repositoryHome.html b/com.awspaas.user.apps.gpt_interface/template/page/repositoryHome.html new file mode 100644 index 00000000..9f967565 --- /dev/null +++ b/com.awspaas.user.apps.gpt_interface/template/page/repositoryHome.html @@ -0,0 +1,30 @@ + + + + + 模型文件 + + + + + + + + + + + + +
+ <#repositoryId> +
+ + + \ No newline at end of file diff --git a/com.awspaas.user.apps.gpt_interface/web/com.awspaas.user.apps.gpt_interface/css/gpt.css b/com.awspaas.user.apps.gpt_interface/web/com.awspaas.user.apps.gpt_interface/css/gpt.css new file mode 100644 index 00000000..2496885e --- /dev/null +++ b/com.awspaas.user.apps.gpt_interface/web/com.awspaas.user.apps.gpt_interface/css/gpt.css @@ -0,0 +1,42 @@ +/* style.css */ +#floatingChatIcon { + position: fixed; + bottom: 100px; + right: 20px; + cursor: pointer; + z-index: 1000; /* 确保图标在内容之上 */ +} + +#floatingChatIcon img { + width: 50px; /* 根据你的图标大小调整 */ + height: auto; +} + +#chatWindow { + position: fixed; + bottom: 100px; /* 根据需要调整 */ + right: 20px; + width: 300px; /* 聊天窗口的宽度 */ + background-color: white; + border: 1px solid #ccc; + padding: 20px; + box-shadow: 0 4px 8px rgba(0,0,0,0.1); + z-index: 1001; /* 确保聊天窗口在图标之上 */ +} + +.chatWindowContent { + /* 可以添加更多样式来美化聊天窗口 */ +} + +.sidebar { + position: fixed; + right: -300px; /* 初始位置在屏幕右侧之外 */ + top: 0; + width: 300px; + height: 100%; + background-color: #fff; + transition: right 0.3s ease; /* 平滑过渡效果 */ +} +.sidebar.visible { + right: 0; /* 滑入屏幕 */ +} \ No newline at end of file diff --git a/com.awspaas.user.apps.gpt_interface/web/com.awspaas.user.apps.gpt_interface/img/robot-icon.png b/com.awspaas.user.apps.gpt_interface/web/com.awspaas.user.apps.gpt_interface/img/robot-icon.png new file mode 100644 index 00000000..205ea30a Binary files /dev/null and b/com.awspaas.user.apps.gpt_interface/web/com.awspaas.user.apps.gpt_interface/img/robot-icon.png differ