diff --git a/resource/commons-jexl3-3.2.1.jar b/resource/commons-jexl3-3.2.1.jar new file mode 100644 index 000000000..4a3b9269d Binary files /dev/null and b/resource/commons-jexl3-3.2.1.jar differ diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index 3ee703c3d..177bce13c 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -1,9 +1,7 @@ package com.engine.salary.wrapper; -import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.component.SalaryWeaTable; import com.engine.salary.component.WeaFormOption; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; @@ -69,42 +67,6 @@ public class SalaryItemWrapper extends Service { * @param searchParam 查询参数 * @return */ - public Map listPage(SalaryItemSearchParam searchParam) { - - SalaryWeaTable table = new SalaryWeaTable(user, SalaryItemListDTO.class); - - String fields = " t.id" + - " , t.name" + - " , t.code" + - " , t.system_type" + - " , t.sys_salary_item_id" + - " , t.use_default as useDefault" + - " , t.use_in_employee_salary as useInEmployeeSalary" + - " , t.rounding_mode as roundingMode" + - " , t.pattern" + - " , t.value_type as valueType" + - " , t.formula_id" + - " , t.description" + - " , t.can_edit" + - " , t.data_type as dataType" + - " , t.can_delete"; - - String from = "from hrsa_salary_item t"; - - table.setBackfields(fields); - table.setSqlform(from); - table.setSqlwhere(SalaryItemSearchParam.makeSqlWhere(searchParam)); - table.setSqlorderby("t.id DESC"); - table.setSqlprimarykey("t.id"); - table.setSqlisdistinct("false"); - - WeaResultMsg result = new WeaResultMsg(false); - result.putAll(table.makeDataResult()); - result.success(); - return result.getResultMap(); - - } - public PageInfo listPageV2(SalaryItemSearchParam searchParam) { // 1、查询薪资项目 @@ -175,24 +137,11 @@ public class SalaryItemWrapper extends Service { } // 查询公式详情 Set formulaIds = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getFormulaId); -// todo List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); + List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); // 转换成薪资项目列表dto - return SalaryItemBO.convert2ListDTO(salaryItemPOS, null); + return SalaryItemBO.convert2ListDTO(salaryItemPOS, expressFormulas); } -// /** -// * 薪资项目列表的高级搜索 -// * -// * @return -// */ -// public WeaSearchCondition getSearchCondition() { -// WeaSearchCondition searchCondition = SalaryFormatUtil.getInstance() -// .buildCondition(SalaryItemSearchConditionDTO.class, new SalaryItemSearchConditionDTO(), "salaryItemCondition"); -// // "其他条件"不要 -// searchCondition.getGroups().remove(1); -// return searchCondition; -// } - /** * 薪资项目详情 * @@ -211,17 +160,16 @@ public class SalaryItemWrapper extends Service { if (Objects.isNull(salaryItemPO) && Objects.isNull(sysSalaryItemPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除")); } - //todo 公式详情 -// ExpressFormula expressFormula; + ExpressFormula expressFormula; // // 转换成薪资项目详情dto if (Objects.isNull(salaryItemPO)) { salaryItemFormDTO = SysSalaryItemBO.convert2FormDTO(sysSalaryItemPO); -// expressFormula = getSalaryFormulaService(user).getExpressFormula(sysSalaryItemPO.getFormulaId()); + expressFormula = getSalaryFormulaService(user).getExpressFormula(sysSalaryItemPO.getFormulaId()); } else { salaryItemFormDTO = SalaryItemBO.convert2FormDTO(salaryItemPO); -// expressFormula = getSalaryFormulaService(user).getExpressFormula(salaryItemPO.getFormulaId()); + expressFormula = getSalaryFormulaService(user).getExpressFormula(salaryItemPO.getFormulaId()); } -// salaryItemFormDTO.setFormulaContent(Optional.ofNullable(expressFormula).map(ExpressFormula::getFormula).orElse("")); + salaryItemFormDTO.setFormulaContent(Optional.ofNullable(expressFormula).map(ExpressFormula::getFormula).orElse("")); } return salaryItemFormDTO; } diff --git a/src/com/engine/workflow/cmd/requestForm/remind/GetEmailRemindUrlCmd.java b/src/com/engine/workflow/cmd/requestForm/remind/GetEmailRemindUrlCmd.java new file mode 100644 index 000000000..d339f52ba --- /dev/null +++ b/src/com/engine/workflow/cmd/requestForm/remind/GetEmailRemindUrlCmd.java @@ -0,0 +1,160 @@ +package com.engine.workflow.cmd.requestForm.remind; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.google.common.base.Strings; +import com.google.common.collect.Maps; +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.GCONST; +import weaver.general.Util; +import weaver.hrm.User; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 邮件提醒候取链接 + * Created by wcc on 2019/7/2. + */ +public class GetEmailRemindUrlCmd extends AbstractCommonCommand> { + + protected String requestName; + protected String requestId; + + public GetEmailRemindUrlCmd(User user, Map params, String requestId, String requestName) throws UnsupportedEncodingException { + this.user = user; + this.params = params; + this.requestId = requestId; + this.requestName = requestName; + } + + @Override + public Map execute(CommandContext commandContext) { + BaseBean baseBean = new BaseBean(); + + RecordSet rs = new RecordSet(); + if (Strings.isNullOrEmpty(requestName)) { + rs.executeQuery("select requestNameNew from workflow_requestbase where requestid = ?", requestId); + rs.next(); + requestName = rs.getString(1); + } + String emailLink = "(" + requestName + ")"; + +// 从数据库中取得OAaddress数据作为host + rs.executeQuery("select oaaddress from systemset"); + rs.next(); + String host = Util.null2String(rs.getString("oaaddress")); + baseBean.writeLog("qc1602252---static_host=" + host); + +// String domain = (String) Util_DataCache.getObjVal("qc1602252"+this.user.getUID()); +// baseBean.writeLog("qc1602252---key="+"qc1602252"+this.user.getUID()); +// baseBean.writeLog("qc1602252---domain="+domain); +// if(StringUtils.isNotBlank(domain)){ +// host = domain; +// }else{ +// //找不到人与域名映射的情况,获取requestId映射的域名 +// String requestIdDomain = (String) Util_DataCache.getObjVal("domain"+requestId); +// baseBean.writeLog("domain---key="+"domain"+requestId); +// baseBean.writeLog("requestIdDomain="+requestIdDomain); +// if(StringUtils.isNotBlank(requestIdDomain)){ +// host = requestIdDomain; +// } +// } + + + //为适配移动端,将流程创建人的分部与域名绑定 + if (StringUtils.isNotBlank(requestId) && !"-1".equals(requestId)) { + baseBean.writeLog("qc1602252---requestId=" + requestId); + baseBean.writeLog("qc1602252---config=" + SubCompanyName + "--" + Domain + "--" + XXFWSubCompanyName + "--" + XXFWDomain); + baseBean.writeLog("qc1602252---requestId=" + requestId); + rs.executeQuery("select creater from workflow_requestbase where requestid = ?", requestId); + if (rs.next()) { + String creater = rs.getString("creater"); + baseBean.writeLog("qc1602252---requestId creater= " + requestId + "---" + creater); + rs.executeQuery("select subcompanyid1 from hrmresource where id = ?", creater); + if (rs.next()) { + String subcompanyid1 = rs.getString("subcompanyid1"); + baseBean.writeLog("qc1602252---requestId creater subcompanyid1=" + requestId + "---" + creater + "---" + subcompanyid1); + Map map = new HashMap<>(); + map.put("subcompanyid1", subcompanyid1); + Map subcompany = getSubcompany(map); + String targetUrl = subcompany.get("targetUrl"); + host = targetUrl; + baseBean.writeLog("qc1602252---" + "---requestId creater lastsubcompanyid1=" + requestId + "---" + creater + "---" + subcompany.get("subcompanyid1")); + baseBean.writeLog("qc1602252---requestId creater subcompanyname=" + requestId + "---" + creater + "---" + subcompany.get("subcompanyname")); + baseBean.writeLog("qc1602252---requestId creater targetUrl=" + requestId + "---" + creater + "---" + subcompany.get("targetUrl")); + } + } + } + + if (!Strings.isNullOrEmpty(host)) { + String loginPage = "/login/LoginMail.jsp"; + String gotoPage = "/common/chatResource/view.html?resourcetype=0&resourceid=" + requestId; + if (GCONST.getMailReminderSet()) { + loginPage = Strings.isNullOrEmpty(GCONST.getMailLoginPage()) ? loginPage : GCONST.getMailLoginPage(); + gotoPage = Strings.isNullOrEmpty(GCONST.getMailGotoPage()) ? gotoPage : GCONST.getMailGotoPage(); + } + try { + gotoPage = URLEncoder.encode(gotoPage, "utf-8"); + //需要编码两次 + gotoPage = URLEncoder.encode(gotoPage, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + String url = String.format("%s?gopage=%s&target=2", loginPage, gotoPage); + emailLink = "(" + requestName + ")"; + } + baseBean.writeLog("qc1602252---requestId=" + requestId); + baseBean.writeLog("qc1602252---emailLink=" + emailLink); + Map result = new HashMap<>(); + result.put("url", emailLink); + return result; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + BaseBean baseBean = new BaseBean(); + String SubCompanyName = Util.null2String(new String(Util.null2String(baseBean.getPropValue("SZSM_subcompany_domain_config", "SubCompanyName")).getBytes("ISO-8859-1"), "utf-8")).trim(); + String Domain = Util.null2String(new String(Util.null2String(baseBean.getPropValue("SZSM_subcompany_domain_config", "Domain")).getBytes("ISO-8859-1"), "utf-8")).trim(); + String XXFWSubCompanyName = Util.null2String(new String(Util.null2String(baseBean.getPropValue("SZSM_subcompany_domain_config", "XXFWSubCompanyName")).getBytes("ISO-8859-1"), "utf-8")).trim(); + String XXFWDomain = Util.null2String(new String(Util.null2String(baseBean.getPropValue("SZSM_subcompany_domain_config", "XXFWDomain")).getBytes("ISO-8859-1"), "utf-8")).trim(); + + private List SubCompanyNameList = Arrays.stream(SubCompanyName.split(",")).collect(Collectors.toList()); + private List XXFWSubCompanyNameList = Arrays.stream(XXFWSubCompanyName.split(",")).collect(Collectors.toList()); + + private Map getSubcompany(Map map) { + + Map hashMap = Maps.newHashMap(); + RecordSet rs = new RecordSet(); + rs.executeQuery("select SUPSUBCOMID,SUBCOMPANYNAME from hrmsubcompany where id = ? ", map.get("subcompanyid1")); + if (rs.next()) { + String subcompanyid1 = rs.getString("SUPSUBCOMID"); + String subcompanyname = rs.getString("SUBCOMPANYNAME"); + hashMap.put("subcompanyid1", subcompanyid1); + hashMap.put("subcompanyname", subcompanyname); + if (SubCompanyNameList.contains(subcompanyname)) { + hashMap.put("targetUrl", Domain); + return hashMap; + } else if (XXFWSubCompanyNameList.contains(subcompanyname)) { + hashMap.put("targetUrl", XXFWDomain); + return hashMap; + } else { + if (!map.get("subcompanyid1").equals(hashMap.get("subcompanyid1"))) { + return getSubcompany(hashMap); + } else { + return hashMap; + } + } + } + return hashMap; + } +} diff --git a/src/com/engine/workflow/web/RequestFormAction.java b/src/com/engine/workflow/web/RequestFormAction.java new file mode 100644 index 000000000..9dc6f0eb0 --- /dev/null +++ b/src/com/engine/workflow/web/RequestFormAction.java @@ -0,0 +1,1167 @@ +package com.engine.workflow.web; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.api.browser.bean.SearchConditionOption; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.workflow.biz.freeNode.FreeNodeAsyncSubmitBiz; +import com.engine.workflow.biz.requestForm.DetailTemplateDownloadBiz; +import com.engine.workflow.biz.requestForm.RequestFormBiz; +import com.engine.workflow.biz.requestForm.RequestRemindBiz; +import com.engine.workflow.biz.requestList.RequestListBiz; +import com.engine.workflow.biz.requestSubmit.RequestBatchForwardBiz; +import com.engine.workflow.biz.requestSubmit.RequestBatchSubmitThread; +import com.engine.workflow.biz.requestSubmit.RequestSubmitThread; +import com.engine.workflow.constant.RemindTypeEnum; +import com.engine.workflow.constant.requestForm.RequestExecuteType; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import com.engine.workflow.service.*; +import com.engine.workflow.service.impl.*; +import com.google.common.base.Strings; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import weaver.filter.WeaverRequest; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.workflow.request.WFAutoApproveThreadPoolUtil; +import weaver.workflow.workflow.WorkflowConfigComInfo; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by jhy on 2018/2/23. + */ +public class RequestFormAction { + + private RequestFormService getLoadFormService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, true); + return (RequestFormService) ServiceUtil.getService(RequestFormServiceImpl.class, user); + } + + private RequestFormServiceImpl getFormService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (RequestFormServiceImpl) ServiceUtil.getService(RequestFormServiceImpl.class, user); + } + + private RequestLogService getLogService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (RequestLogService) ServiceUtil.getService(RequestLogServiceImpl.class, user); + } + + private SignInputService getSignInputService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (SignInputService) ServiceUtil.getService(SignInputServiceImpl.class, user); + } + + + private WorkflowTransferSetService getWfTransferSetService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (WorkflowTransferSetService) ServiceUtil.getService(WorkflowTransferSetServiceImpl.class, user); + } + + private HtmlToPdfService getHtmlToPdfService(HttpServletRequest request, HttpServletResponse response){ + User user = RequestFormBiz.getFormUser(request, response, false); + return (HtmlToPdfService)ServiceUtil.getService(HtmlToPdfServiceImpl.class, user); + } + + /** + * 流程测试选择人员后判断用户是否有创建权限 + **/ + @POST + @Path("/judgeCreateRight") + @Produces(MediaType.TEXT_PLAIN) + public String judgeCreateRight(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getLoadFormService(request, response).judgeCreateRight(request); + return JSON.toJSONString(apidatas); + } + + /** + * 表单加载基础信息接口 + **/ + @POST + @Path("/loadForm") + @Produces(MediaType.TEXT_PLAIN) + public String loadForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { +// response.setCharacterEncoding("utf-8"); + long start = System.currentTimeMillis(); + String result = getLoadFormService(request, response).loadForm(request); + long duration = System.currentTimeMillis() - start; + if (result.endsWith("}")) + result = result.substring(0, result.length() - 1) + ",\"durationTime\":" + duration + "}"; + return result; + } + + /** + * 模板预览接口 + **/ + @POST + @Path("/loadPreView") + @Produces(MediaType.TEXT_PLAIN) + public String loadPreView(@Context HttpServletRequest request, @Context HttpServletResponse response) { +// response.setCharacterEncoding("utf-8"); + String result = getFormService(request, response).loadPreView(ParamUtil.request2Map(request)); + return result; + } + + /** + * 加载明细数据接口 + **/ + @POST + @Path("/detailData") + @Produces(MediaType.TEXT_PLAIN) + public String detailData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).loadDetailData(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + + /** 保存明细分页信息 **/ + @POST + @Path("/saveDetailPaging") + @Produces(MediaType.TEXT_PLAIN) + public String saveDetailPaging(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).saveDetailPaging(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/updateReqInfo") + @Produces(MediaType.TEXT_PLAIN) + public String updateReqInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + RequestFormServiceImpl formService = getFormService(request, response); + Map apidatas = formService.updateReqInfo(request); + FreeNodeAsyncSubmitBiz.execute(request,formService); + return JSON.toJSONString(apidatas); + } + + /** + * 右键菜单接口 + **/ + @POST + @Path("/rightMenu") + @Produces(MediaType.TEXT_PLAIN) + public String rightMenu(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getRightMenu(request,ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流程状态接口 + **/ + @POST + @Path("/wfstatusnew") + @Produces(MediaType.TEXT_PLAIN) + public String getStatusData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request",request); + Map apidatas = getFormService(request, response).getStatusData(reqParams); + return JSONObject.toJSONString(apidatas); + } + + /** + * 流程状态计数接口 + **/ + @POST + @Path("/wfstatuscount") + @Produces(MediaType.TEXT_PLAIN) + public String getStatusCount(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request",request); + Map apidatas = getFormService(request, response).getStatusCount(reqParams); + return JSONObject.toJSONString(apidatas); + } + + /** + * 相关资源接口 + **/ + @GET + @Path("/resources") + @Produces(MediaType.TEXT_PLAIN) + public String getResourcesKey(@Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception { + Map apidatas = getFormService(request, response).getResourcesKey(ParamUtil.request2Map(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 表单修改日志接口 + **/ + @POST + @Path("/getModifyLog") + @Produces(MediaType.TEXT_PLAIN) + public String getModifyLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { +// response.setCharacterEncoding("utf-8"); + Map apidatas = getFormService(request, response).getModifyLog(request); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/requestBatchSubmit") + @Produces(MediaType.TEXT_PLAIN) + public String requestBatchSubmit(@Context HttpServletRequest request, @Context HttpServletResponse response) { + RequestFormServiceImpl formService = getFormService(request, response); + Map apidatas = new HashMap (); + User user = formService.getUser(); + + WorkflowConfigComInfo configComInfo = new WorkflowConfigComInfo(); + boolean defaultAsyncSubmit = "1".equals(Util.null2String(configComInfo.getValue("request_batchsubmit_async"))); + //需要异步提交 + boolean needBatchSubmit = "1".equals(request.getParameter("needBatchSubmit")); + if (needBatchSubmit && defaultAsyncSubmit) { + WeaverRequest weaverRequest = new WeaverRequest(request); + weaverRequest.setSession(request.getSession()); + RequestBatchSubmitThread batchSubmitThread = new RequestBatchSubmitThread(weaverRequest, formService); + //更新流程状态, 从“待办”更新为“处理中”, 处理中的流程在待办、已办中均不显示(可通过查询流程进行查询到) + batchSubmitThread.executeSubmitBefore(); + //异步执行提交,在提交成功后, 将流程状态改为“已处理”,如发生异常,则更新为“待办”, 并发送错误提交消息到消息中心 + WFAutoApproveThreadPoolUtil.getFixedThreadPool().execute(batchSubmitThread); + } else { + apidatas = formService.requestBatchSubmit(request); + } + + String submitReqIds = Util.null2String(request.getParameter("multiSubIds")); + if(submitReqIds.endsWith(",")) + submitReqIds = submitReqIds.substring(0,submitReqIds.length()-1); + apidatas.put("submitReqIds",submitReqIds);//返回本次提交请求的requestid,用于reload走微搜时数据处理 + + return JSON.toJSONString(apidatas); + } + + /** + * loglist + **/ + @POST + @Path("/getRequestLogBaseInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestLogBaseInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).getRequestLogBaseInfo(ParamUtil.request2Map(request))); + } + + @POST + @Path("/getRequestLogList") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestLogList(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).getRequestLogList(request, ParamUtil.request2Map(request))); + } + + @POST + @Path("/updateUserTxStatus") + @Produces(MediaType.TEXT_PLAIN) + public String updateSignTXStatus(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).updateUserTxStatus(ParamUtil.request2Map(request))); + } + + @POST + @Path("/updateRequestLogPageSize") + @Produces(MediaType.TEXT_PLAIN) + public String updateRequestLogPageSize(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).updateRequestLogPageSize(ParamUtil.request2Map(request))); + } + + @GET + @Path("/addDocReadTag") + @Produces(MediaType.TEXT_PLAIN) + public String addDocReadTag(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).addDocReadLog(ParamUtil.request2Map(request))); + } + + /** + * 签字意见输入框 + **/ + @POST + @Path("/signInput") + @Produces(MediaType.TEXT_PLAIN) + public String signInput(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request",request); + return JSON.toJSONString(getSignInputService(request, response).getSignInputInfo(reqParams)); + } + + /** + * 判断退回方式 + **/ + @POST + @Path("/judgeRejectWay") + @Produces(MediaType.TEXT_PLAIN) + public String judgeRejectWay(@Context HttpServletRequest request, @Context HttpServletResponse response) { + RequestFormServiceImpl service = getFormService(request, response); + Map apidatas = service.judgeRejectWay(request); + int rejecttype = Util.getIntValue(apidatas.get("rejecttype")+""); + if(rejecttype == 2){ //选择退回节点时,直接算出弹窗所需信息 + Map params = (Map)apidatas.get("params"); + Map chooseInfo = service.getRejectOption(params); + List> rejectNodeList = (List>)chooseInfo.get("rejectNodeList"); + List> remindNodeList = (List>)chooseInfo.get("remindNodeList"); + List submitDirectNodeOptions = (List)chooseInfo.get("submitDirectNodeOptions"); + //当选择退回信息只有一个退回节点可选时,不弹窗直接退回 + if(rejectNodeList != null && remindNodeList !=null && submitDirectNodeOptions != null && rejectNodeList.size() == 1 && remindNodeList.size() == 0 && submitDirectNodeOptions.size() == 0){ + String nodeKey = Util.null2String(rejectNodeList.get(0).get("key")); + int isrejectremind = Util.getIntValue(Util.null2String(params.get("isrejectremind"))); + String directRejectNodeid = nodeKey.substring(0, nodeKey.indexOf("_")); + String directRemindNodeid = isrejectremind == 1 ? directRejectNodeid : ""; + apidatas.put("rejecttype", 1); + params.put("RejectNodes", directRemindNodeid); + params.put("RejectToNodeid", directRejectNodeid); + }else{ + apidatas.put("chooseInfo", chooseInfo); + } + } + return JSON.toJSONString(apidatas); + } + + /** + * 流程提交 + **/ + @POST + @Path("/requestOperation") + @Produces(MediaType.TEXT_PLAIN) + public String requestOperation(@Context HttpServletRequest request, @Context HttpServletResponse response) { + saveDomainCache(request, response); + + Map apidatas = null; + + RequestFormServiceImpl formService = getFormService(request, response); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + boolean isThrowThread = RequestSubmitThread.isThrowThread(request); + if (isThrowThread) { + WeaverRequest weaverRequest = new WeaverRequest(request); + weaverRequest.setSession(request.getSession()); + RequestSubmitThread submitThread = new RequestSubmitThread(formService, weaverRequest); + submitThread.initSubmitLog(); + WFAutoApproveThreadPoolUtil.getFixedThreadPool().execute(submitThread); + apidatas = new HashMap(); + RequestOperationResultBean resultBean = new RequestOperationResultBean(); + resultBean.setType(RequestExecuteType.ASYNC_SUBMIT); + apidatas.put("data", resultBean); + } else { + apidatas = formService.requestSubmit(request); + } + if("1".equals(openByDefaultBrowser)){//钉钉、企业微信pc客户端以默认浏览器打开流程,提交时保存客户端和浏览器交互数据 + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + if(isThrowThread || requestid.equals(new RequestListBiz().removeDoingReqId(requestid,user))){//抛线程处理流程,或者提交流程后状态变更,做记录保存 + RequestListBiz.putRecord(user,requestid); + } + RequestOperationResultBean resultBean = (RequestOperationResultBean) apidatas.get("data"); + if(resultBean != null){ + Map resultInfo = resultBean.getResultInfo(); + resultInfo.put("openByDefaultBrowser",openByDefaultBrowser);//下一个节点还是自己,防止参数丢失 + } + } + return JSON.toJSONString(apidatas); + } + + /** + * 缓存用户域名 qc1602252 + * @param request + * @param response + */ + private void saveDomainCache(HttpServletRequest request, HttpServletResponse response) { +// BaseBean baseBean = new BaseBean(); +// try{ +// User cuser = HrmUserVarify.getUser(request, response); +// String scheme = request.getScheme(); +// String serverName= request.getServerName(); +// String domain = scheme +"://"+ serverName ; +// int port= request.getServerPort(); +// if(port != 80){ +// domain = domain +":" + port; +// } +// Util_DataCache.setObjVal("qc1602252"+cuser.getUID() , domain); +// +// //解决自动审批时,当前处理人获取不到,故将requestid与域名映射 +// String requestid = request.getParameter("requestid"); +// if(StringUtils.isNotBlank(requestid)&&!"-1".equals(requestid)){ +// Util_DataCache.setObjVal("domain"+requestid , domain); +// } +// +// }catch (Exception e){ +// baseBean.writeLog("qc1602252---saveDomainCache---error"); +// baseBean.writeLog(e); +// } + } + + + + + /** + * 转发、转办、意见征询等提交 + **/ + @POST + @Path("/remarkOperate") + @Produces(MediaType.TEXT_PLAIN) + public String remarkOperate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + saveDomainCache(request, response); + Map apidatas = getFormService(request, response).forwardSubmit(request); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + int forwardflag = Util.getIntValue(request.getParameter("forwardflag")); + if((forwardflag == 2 || forwardflag == 3 || forwardflag == 5) && "1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 流程撤回 + **/ + @POST + @Path("/requestWithdraw") + @Produces(MediaType.TEXT_PLAIN) + public String requestWithdraw(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).requestWithdraw(request); + return JSON.toJSONString(apidatas); + } + + /** + * 批注回复提交 + **/ + @POST + @Path("/remarkOperation") + @Produces(MediaType.TEXT_PLAIN) + public String remarkOperation(@Context HttpServletRequest request, @Context HttpServletResponse response) { + saveDomainCache(request, response); + Map apidatas = getFormService(request, response).remarkSubmit(request); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + if("1".equals(openByDefaultBrowser)){//钉钉、企业微信pc客户端以默认浏览器打开流程,提交时保存客户端和浏览器交互数据 + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 功能管理相关 + **/ + @POST + @Path("/functionLink") + @Produces(MediaType.TEXT_PLAIN) + public String functionLink(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).functionManage(request, response); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + String flag = Util.null2String(request.getParameter("flag")); + if(("ov".equals(flag) || "rb".equals(flag) || "cancel".equals(flag) || "stop".equals(flag) || "restart".equals(flag)) && "1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 触发子流程 + **/ + @POST + @Path("/triggerSubWf") + @Produces(MediaType.TEXT_PLAIN) + public String triggerSubWf(@Context HttpServletRequest request, @Context HttpServletResponse response) { + saveDomainCache(request, response); + Map apidatas = getFormService(request, response).triggerSubWf(request); + return JSON.toJSONString(apidatas); + } + + /** + * 附件上传 + **/ + @POST + @Path("/docUpload") + @Produces(MediaType.TEXT_PLAIN) + public String docUpload(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).uploadFile(request, response); + return JSONObject.toJSONString(apidatas); + } + + /** + * 获取附件字段信息 + **/ + @POST + @Path("/getUploadFileInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getUploadFileInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getFileFieldObj(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 创建流程编号 + **/ + @POST + @Path("/createWfCode") + @Produces(MediaType.TEXT_PLAIN) + public String createWfCode(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).createWfCode(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取流程编号字段值 + **/ + @POST + @Path("/loadWfCodeFieldValueInfo") + @Produces(MediaType.TEXT_PLAIN) + public String loadWfCodeFieldValueInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getWfCodeFieldValue(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 添加常用批示语 + **/ + @POST + @Path("/addWfPhrase") + @Produces(MediaType.TEXT_PLAIN) + public String addWfPhrase(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getSignInputService(request, response).addWfPhrase(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取常用批示语 + **/ + @POST + @Path("/getPhrases") + @Produces(MediaType.TEXT_PLAIN) + public String getPhrases(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getSignInputService(request, response).getPhrases(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流程导入 + **/ + @POST + @Path("/requestImport") + @Produces(MediaType.TEXT_PLAIN) + public String requestImport(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).requestImport(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流程明细导入 + **/ + @POST + @Path("/doImportDetail") + @Produces(MediaType.TEXT_PLAIN) + public String requestDetailImport(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).requestDetailImport(request); + return JSON.toJSONString(apidatas); + } + + /** + * 明细导入触发字段联动 + **/ + @POST + @Path("/riggerFieldLinkageCfg") + @Produces(MediaType.TEXT_PLAIN) + public String importFieldLinkageCfg(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).importFieldLinkageCfg(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 明细导入导出excel模板可包含只读字段 + **/ + @POST + @Path("/exportFieldSet") + @Produces(MediaType.TEXT_PLAIN) + public String exportFieldSet(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).exportFieldSet(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 明细导入执行公式 + **/ + @POST + @Path("/riggerFormulaCfg") + @Produces(MediaType.TEXT_PLAIN) + public String importFormulaCfg(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).importFormulaCfg(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 异常处理选人 + **/ + @POST + @Path("/chooseExceptionOperator") + @Produces(MediaType.TEXT_PLAIN) + public String chooseExceptionOperator(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).chooseExceptionOperator(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 超时设置 + **/ + @POST + @Path("/overTimeSetting") + @Produces(MediaType.TEXT_PLAIN) + public String overTimeSetting(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).overTimeSetting(request); + return JSON.toJSONString(apidatas); + } + + /** + * 打印日志基础信息 + **/ + @POST + @Path("/getPrintLogBase") + @Produces(MediaType.TEXT_PLAIN) + public String getPrintLogBase(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getPrintLogBase(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 打印日志数据信息 + **/ + @POST + @Path("/getPrintLogData") + @Produces(MediaType.TEXT_PLAIN) + public String getPrintLogData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getPrintLogData(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 自由流转读取数据 + **/ + @POST + @Path("/freeFlowRead") + @Produces(MediaType.TEXT_PLAIN) + public String freeFlowRead(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).freeFlowRead(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 自由流转保存数据 + **/ + @POST + @Path("/freeFlowSave") + @Produces(MediaType.TEXT_PLAIN) + public String freeFlowSave(@Context HttpServletRequest request, @Context HttpServletResponse response) { + saveDomainCache(request, response); + Map apidatas = getFormService(request, response).freeFlowSave(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流转设定按钮-返回数据 + * add by jym + **/ + @POST + @Path("/getTransferCondition") + @Produces(MediaType.TEXT_PLAIN) + public String getTransferCondition(@Context HttpServletRequest request,@Context HttpServletResponse response){ + Map apidatas = new HashMap(); + apidatas = getWfTransferSetService(request, response).getTransferCondition(ParamUtil.request2Map(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 流程编辑锁定相关操作 + **/ + @POST + @Path("/editLockOper") + @Produces(MediaType.TEXT_PLAIN) + public String editLockOper(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).editLockOper(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取节点打印模板信息 + **/ + @POST + @Path("/loadPrintTemplates") + @Produces(MediaType.TEXT_PLAIN) + public String loadPrintTemplates(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = null; + try { + User user = HrmUserVarify.getUser(request, response); + /*E9打印登录超时报错(QC:527424)*/ + if(user == null) { + response.sendRedirect("/wui/index.html"); + return null; + } + apidatas = getFormService(request, response).loadPrintTemplates(ParamUtil.request2Map(request)); + } catch (IOException e) { + e.printStackTrace(); + } + return JSON.toJSONString(apidatas); + } + + /** + * 运算表达式 + **/ + @POST + @Path("/doEvalExpression") + @Produces(MediaType.TEXT_PLAIN) + public String doEvalExpression(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).doEvalExpression(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 生成打印日志 + **/ + @POST + @Path("/generatePrintLog") + @Produces(MediaType.TEXT_PLAIN) + public String generatePrintLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + /*E9打印登录超时报错(QC:527424)*/ + if(user == null) { + try { + response.sendRedirect("/wui/index.html"); + return null; + } catch (IOException e) { + e.printStackTrace(); + } + } + Map apidatas = getFormService(request, response).generatePrintLog(request); + return JSON.toJSONString(apidatas); + } + + /** + * 流程中当前操作者已转发信息 + * @param request + * @param response + * @return + */ + @GET + @Path("/getForwardDatas") + @Produces(MediaType.TEXT_PLAIN) + public String getForwardDatas(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getForwardDatas(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 转发收回 + * @param request + * @param response + * @return + */ + @POST + @Path("/doBack") + @Produces(MediaType.TEXT_PLAIN) + public String doBack(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).doBack(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * form tab 扩展 + * @param request + * @param response + * @return + */ + @POST + @Path("/getFormTab") + @Produces("text/plain;charset=utf-8") + public String loadFormTab(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getFormTab(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @GET + @Path("/dowloadTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM)//返回方式为流 + public Response exportExcel(@Context HttpServletRequest request, @Context HttpServletResponse response) { + ByteArrayOutputStream os = null; + InputStream input = null; + try { + User user = RequestFormBiz.getFormUser(request, response, false); + DetailTemplateDownloadBiz dtdBiz = new DetailTemplateDownloadBiz(user); + + os = new ByteArrayOutputStream(); + + HSSFWorkbook wb =dtdBiz.templateDownload(request, response); + wb.write(os); + input = new ByteArrayInputStream(os.toByteArray()); + + String filename = dtdBiz.getFilename(); + //filename = java.net.URLEncoder.encode(filename, "UTF-8"); + filename = StringUtils.replace(filename, "/", ""); + filename = StringUtils.replace(filename, "%2F", ""); + filename = StringUtils.replace(filename, "+", "%20"); + filename = Util.formatMultiLang(filename, "7"); + + return Response + .ok(input) + .header("Content-disposition", "attachment;filename=" + filename) + .header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try{ + input.close(); + os.close(); + }catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + + @POST + @Path("/saveMobileSignAnnex") + @Produces("text/plain;charset=utf-8") + public String saveMobileSignAnnex(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getSignInputService(request, response).saveMobileSignAnnexCmd(request); + return JSON.toJSONString(apidatas); + } + + /** + * 获取指定下一节点流转condition + * @param request + * @param response + * @return + */ + @POST + @Path("/getSelectNextFlowCondition") + @Produces("text/plain;charset=utf-8") + public String getSelectNextFlowCondition(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getSelectNextFlowCondition(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取指定下一节点流转节点信息 + * @param request + * @param response + * @return + */ + @POST + @Path("/getSelectFlowNodeInfo") + @Produces("text/plain;charset=utf-8") + public String getSelectFlowNodeInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getSelectNextFlowNodes(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取流程默认提醒方式及当前节点操作者 + * @param request + * @param response + * @return + */ + @GET + @Path("/getRemindData") + @Produces("text/plain;charset=utf-8") + public String getRemindData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getRemindData(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 提醒 + * @param request + * @param response + * @return + */ + @POST + @Path("/doRemind") + @Produces("text/plain;charset=utf-8") + public String requestRemind(@Context HttpServletRequest request, @Context HttpServletResponse response) { + saveDomainCache(request, response); + Map apidatas = new HashMap<>(); + + User user = RequestFormBiz.getFormUser(request, response, false); + RequestRemindService requestRemindService = (RequestRemindService) ServiceUtil.getService(RequestRemindServiceImpl.class, user); + + Map params = ParamUtil.request2Map(request); + String remindType = Util.null2String(params.get("remindTypes")); //提醒方式 + int requestId = Util.getIntValue(Util.null2String(params.get("requestId"))); + if(Strings.isNullOrEmpty(remindType)){ + return JSON.toJSONString(apidatas); + } + String[] remindTypeArr = remindType.split(","); + for(String t : remindTypeArr){ + if(RemindTypeEnum.SMS.getCode().equals(t)){ + apidatas = requestRemindService.remindBySMS(params); + } + if(RemindTypeEnum.EMAIL.getCode().equals(t)){ + apidatas = requestRemindService.remindByEmail(params); + } + if(RemindTypeEnum.WECHAT.getCode().equals(t)){ + apidatas = requestRemindService.remindByWeChat(params); + } + } + + RequestRemindBiz.updateRemindTypes("",requestId); + return JSON.toJSONString(apidatas); + } + + /** 判断当前流程状态 */ + @POST + @Path("/judgeRequestIsValid") + @Produces("text/plain;charset=utf-8") + public String judgeRequestIsValid(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).judgeRequestIsValid(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** 意见征询收回 */ + @POST + @Path("/doTakeBack") + @Produces("text/plain;charset=utf-8") + public String doTakeBack(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).takeBack(ParamUtil.request2Map(request)); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + if("1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 获取自定义菜单设置 + **/ + @POST + @Path("/getCustomOperation") + @Produces("text/plain;charset=utf-8") + public String getCustomOperation(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getCustomOperation(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 指定自定义动作 + **/ + @GET + @Path("/runCustomOperationAction") + @Produces("text/plain;charset=utf-8") + public String runCustomOperationAction(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).runCustomOperationAction(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 结束意见征询 + **/ + @POST + @Path("/doTakEnd") + @Produces("text/plain;charset=utf-8") + public String doTakEnd(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).doTakEnd(request, ParamUtil.request2Map(request)); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + if("1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + + /** + * 获取意见所有接收人 + **/ + @GET + @Path("/getLogAllReceiveUser") + @Produces("text/plain;charset=utf-8") + public String getLogAllReceiveUser(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getLogService(request, response).getLogAllReceiveUser(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + + /** + * 获取节点意见设置 + **/ + @GET + @Path("/getNodeSignSet") + @Produces("text/plain;charset=utf-8") + public String getNodeSignSet(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request", request); + + Map apidatas = getSignInputService(request, response).getNodeSignSet(reqParams); + return JSON.toJSONString(apidatas); + } + + /** + * 后台html转pdf + **/ + @GET + @Path("/getHtmlToPdf") + @Produces("text/plain;charset=utf-8") + public String gethtmltopdf(@Context HttpServletRequest request, @Context HttpServletResponse response) { +// response.setCharacterEncoding("utf-8"); + Map params = ParamUtil.request2Map(request); + Map apidatas = getHtmlToPdfService(request, response).getFormDatas(params); + return JSON.toJSONString(apidatas); + } + + /** + * 获取明细数据的keyid + **/ + @POST + @Path("/detailDataKeyId") + @Produces("text/plain;charset=utf-8") + public String getDetailDataKeyId(@Context HttpServletRequest request, @Context HttpServletResponse response) { +// response.setCharacterEncoding("utf-8"); + Map params = ParamUtil.request2Map(request); + Map apidatas = getFormService(request, response).getDetailDataKeyId(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + //获取套红预览地址 + @POST + @Path("/getThPreviewUrl") + @Produces("text/plain;charset=utf-8") + public String getThPreviewUrl(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getThPreviewUrl(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + //获取套红模板地址 + @POST + @Path("/getThMouldList") + @Produces("text/plain;charset=utf-8") + public String getThModuleList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getThMouldList(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * Detail Export Settings + * 明细表导出设置。 + */ + @GET + @Path("/getDetailExpSet") + @Produces("text/plain;charset=utf-8") + public String getDetailExpSet(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getDetailExpSet(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/saveDetailExpSet") + @Produces("text/plain;charset=utf-8") + public String saveDetailExpSet(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).saveDetailExpSet(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 批量转发 + * @param request + * @param response + * @return + */ + @POST + @Path("/batchForward") + @Produces("text/plain;charset=utf-8") + public String batchForward(@Context HttpServletRequest request, @Context HttpServletResponse response){ + saveDomainCache(request, response); + User user = RequestFormBiz.getFormUser(request, response, false); + RequestBatchForwardBiz batchForwardBiz = new RequestBatchForwardBiz(); + WeaverRequest weaverRequest = new WeaverRequest(request); + weaverRequest.setSession(request.getSession()); + Map apidatas = batchForwardBiz.executeForward(weaverRequest,user); + return JSON.toJSONString(apidatas); + } + + /** + * 获取自动批准后的下一节点 + * @param request + * @param response + * @return + */ + @POST + @Path("/getNextNodeContent") + @Produces("text/plain;charset=utf-8") + public String getNextNodeContent(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getNextNodeContent(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + + /** + * 流程删除验证 + * @param request + * @param response + * @return + */ + @POST + @Path("/delRequestVerify") + @Produces("text/plain;charset=utf-8") + public String delRequestVerify(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).delRequestVerify(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + + + /** + * 获取自由流程新建流程选择表单按钮 + * @param request + * @param response + * @return + */ + @GET + @Path("/getFreeNodeBrowserItem") + @Produces("text/plain;charset=utf-8") + public String getFreeNodeBrowserItem(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getFreeNodeBrowserItem(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取自由流程新建流程选择表单按钮 + * @param request + * @param response + * @return + */ + @POST + @Path("/saveFreeNodeFormConfig") + @Produces("text/plain;charset=utf-8") + public String saveFreeNodeFormConfig(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).saveFreeNodeFormConfig(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/conformCheck") + @Produces("text/plain;charset=utf-8") + public String conformCheck(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).conformCheck(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/getDetailByRequestId") + @Produces("text/plain;charset=utf-8") + public String getDetailByRequestId(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getDetailByRequestId(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + +}