package restcontroller.webmanage.sale.contracttask; import beans.attachment.Attachment; import beans.datacontrllog.DataContrlLog; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.tencentcloudapi.essbasic.v20210526.models.FlowApproverInfo; import com.tencentcloudapi.essbasic.v20210526.models.Recipient; import common.Controller; import common.YosException; import common.annotation.API; import common.data.*; import common.data.db.SQLList; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import restcontroller.R; import java.io.InputStream; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; /** * 电子签合同任务明细 */ public class EsignContractTaskMX extends Controller { public EsignContractTaskMX(JSONObject content) throws YosException { super(content); } @API(title = "电子签合同任务明细-添加经销商", apiversion = R.ID2026041315394702.v1.class) public String addAgents() throws YosException { Long sa_esign_contract_taskid = content.getLongValue("sa_esign_contract_taskid"); JSONArray sa_agentsids = content.getJSONArray("sa_agentsids"); SQLList sqlList = new SQLList(); for (Object obj : sa_agentsids) { Long sa_agentsid = Long.parseLong(obj.toString()); Rows mxRows = dbConnect.runSqlQuery("SELECT * FROM sa_esign_contract_taskmx WHERE sa_agentsid=" + sa_agentsid + " and sa_esign_contract_taskid=" + sa_esign_contract_taskid); if (mxRows.isNotEmpty()) { continue; } Rows agentRows = dbConnect.runSqlQuery("SELECT * FROM sa_agents WHERE sa_agentsid=" + sa_agentsid); if (agentRows.isEmpty()) { continue; } Row agentRow = agentRows.getRow(0); Long sys_enterpriseid = agentRow.getLong("sys_enterpriseid"); Rows enterpriseRows = dbConnect.runSqlQuery("SELECT * FROM sys_enterprise WHERE sys_enterpriseid=" + sys_enterpriseid); if (enterpriseRows.isEmpty()) { continue; } Row enterpriseRow = enterpriseRows.getRow(0); String enterprisename = enterpriseRow.getString("enterprisename"); InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_esign_contract_taskmx"); insertSQL.setSiteid(siteid); insertSQL.setUniqueid(createTableID("sa_esign_contract_taskmx")); insertSQL.setValue("sa_agentsid", sa_agentsid); insertSQL.setValue("sys_enterpriseid", agentRow.getLong("sys_enterpriseid")); insertSQL.setValue("sa_esign_contract_taskid", sa_esign_contract_taskid); insertSQL.setValue("paymans", agentRow.getString("paymans")); insertSQL.setValue("aftersalesphonenumber", agentRow.getString("aftersalesphonenumber")); insertSQL.setValue("presalesphonenumber", agentRow.getString("presalesphonenumber")); insertSQL.setValue("taxno", enterpriseRow.getString("taxno")); insertSQL.setValue("phonenumber", enterpriseRow.getString("phonenumber")); insertSQL.setValue("license_name", enterpriseRow.getString("enterprisename")); insertSQL.setValue("license_address", enterpriseRow.getString("address")); insertSQL.setValue("legal_rep", enterpriseRow.getString("contact")); insertSQL.setValue("mobile", enterpriseRow.getString("telephone")); insertSQL.setValue("idcard", enterpriseRow.getString("idcard")); insertSQL.setValue("sa_esign_contract_taskid", sa_esign_contract_taskid); sqlList.add(insertSQL.getSQL()); sqlList.add(DataContrlLog.createLog(this, "sa_esign_contract_task", sa_esign_contract_taskid, "添加", "添加经销商【" + enterprisename + "】成功").getSQL()); } dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "电子签合同任务明细-选择经销商列表", apiversion = R.ID2026041315545602.v1.class) public String chooseAgents() throws YosException { Long sa_esign_contract_taskid = content.getLongValue("sa_esign_contract_taskid"); Rows templaterows = dbConnect.runSqlQuery("SELECT is_deposit_required from sa_esign_contract_template t1 " + "INNER JOIN sa_esign_contract_task t2 ON t2.sa_esign_contract_templateid=t1.sa_esign_contract_templateid " + "WHERE t2.sa_esign_contract_taskid=" + sa_esign_contract_taskid); //验证是否需要保证金 boolean is_deposit_required = true; if (templaterows.isNotEmpty()) { is_deposit_required = templaterows.getRow(0).getBoolean("is_deposit_required"); } QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents", "*").setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise", "t2", "t1.sys_enterpriseid=t2.sys_enterpriseid" , "enterprisename", "abbreviation"); if (is_deposit_required) { querySQL.addJoinTable(JOINTYPE.inner, "sa_accountbalance", "t3", "t1.sys_enterpriseid=t3.sys_enterpriseid"); querySQL.addJoinTable(JOINTYPE.inner, "sa_accountclass", "t4", "t3.sa_accountclassid=t4.sa_accountclassid"); querySQL.setWhere("t3.balance>0"); querySQL.setWhere("t4.accountno='02'"); } if (getDepartment(userid).getString("depname").equals("区域经理")) { querySQL.setWhere("t1.sys_enterpriseid in (SELECT sys_enterpriseid FROM sys_enterprise_tradefield WHERE hrid=" + hrid + ")"); } querySQL.setWhere("NOT EXISTS (SELECT 1 from sa_esign_contract_taskmx WHERE sa_agentsid=t1.sa_agentsid and sa_esign_contract_taskid='" + sa_esign_contract_taskid + "' )"); querySQL.setSiteid(siteid); querySQL.setOrderBy("t1.createdate desc"); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); return getSucReturnObject().setData(rows).toString(); } @API(title = "电子签合同任务明细-删除明细", apiversion = R.ID2026041315414702.v1.class) public String delete() throws YosException { JSONArray sa_esign_contract_taskmxids = content.getJSONArray("sa_esign_contract_taskmxids"); SQLList sqlList = new SQLList(); DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sa_esign_contract_taskmx"); deleteSQL.setSiteid(siteid); deleteSQL.setWhere("sa_esign_contract_taskmxid", sa_esign_contract_taskmxids); sqlList.add(deleteSQL.getSQL()); for (Object obj : sa_esign_contract_taskmxids) { Long sa_esign_contract_taskmxid = Long.parseLong(obj.toString()); Rows rows = dbConnect.runSqlQuery("SELECT * FROM sa_esign_contract_taskmx WHERE sa_esign_contract_taskmxid=" + sa_esign_contract_taskmxid); if (rows.isNotEmpty()) { Long sa_agentsid = rows.get(0).getLong("sa_agentsid"); Long sa_esign_contract_taskid = rows.get(0).getLong("sa_esign_contract_taskid"); Rows agentRows = dbConnect.runSqlQuery("SELECT * FROM sv_agents WHERE sa_agentsid=" + sa_agentsid); String enterprisename = agentRows.get(0).getString("enterprisename"); sqlList.add(DataContrlLog.createLog(this, "sa_esign_contract_task", sa_esign_contract_taskid, "删除", "删除经销商【" + enterprisename + "】成功").getSQL()); } } dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "电子签合同任务明细-修改期限", apiversion = R.ID2026041415245302.v1.class) public String updateDate() throws YosException { JSONArray items = content.getJSONArray("items"); ArrayList sqlList = new ArrayList<>(); for (Object obj : items) { JSONObject jsonObject = (JSONObject) obj; Long sa_esign_contract_taskmxid = jsonObject.getLong("sa_esign_contract_taskmxid"); String begindate = jsonObject.getStringValue("begindate"); String enddate = jsonObject.getStringValue("enddate"); UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_esign_contract_taskmx"); updateSQL.setSiteid(siteid); updateSQL.setWhere("sa_esign_contract_taskmxid", sa_esign_contract_taskmxid); updateSQL.setValue("begindate", begindate); updateSQL.setValue("enddate", enddate); sqlList.add(updateSQL.getSQL()); Rows rows = dbConnect.runSqlQuery("SELECT * FROM sa_esign_contract_taskmx WHERE sa_esign_contract_taskmxid=" + sa_esign_contract_taskmxid); if (rows.isNotEmpty()) { Long sa_agentsid = rows.get(0).getLong("sa_agentsid"); Long sa_esign_contract_taskid = rows.get(0).getLong("sa_esign_contract_taskid"); Rows agentRows = dbConnect.runSqlQuery("SELECT * FROM sv_agents WHERE sa_agentsid=" + sa_agentsid); String enterprisename = agentRows.get(0).getString("enterprisename"); sqlList.add(DataContrlLog.createLog(this, "sa_esign_contract_task", sa_esign_contract_taskid, "修改期限", "修改经销商【" + enterprisename + "】期限为:" + begindate + "~" + enddate).getSQL()); } } dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "电子签合同任务明细-修改季度任务金额", apiversion = R.ID2026042113202402.v1.class) public String changeTaskMoney() throws YosException { JSONArray items = content.getJSONArray("items"); ArrayList sqlList = new ArrayList<>(); for (Object obj : items) { JSONObject jsonObject = (JSONObject) obj; Long sa_esign_contract_taskmxid = jsonObject.getLong("sa_esign_contract_taskmxid"); BigDecimal s1 = content.getBigDecimal("s1"); BigDecimal s2 = content.getBigDecimal("s2"); BigDecimal s3 = content.getBigDecimal("s3"); BigDecimal s4 = content.getBigDecimal("s4"); BigDecimal y1 = s1.add(s2).add(s3).add(s4); UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_esign_contract_taskmx"); updateSQL.setSiteid(siteid); updateSQL.setWhere("sa_esign_contract_taskmxid", sa_esign_contract_taskmxid); updateSQL.setValue("s1", s1); updateSQL.setValue("s2", s2); updateSQL.setValue("s3", s3); updateSQL.setValue("s4", s4); updateSQL.setValue("y1", y1); sqlList.add(updateSQL.getSQL()); Rows rows = dbConnect.runSqlQuery("SELECT * FROM sa_esign_contract_taskmx WHERE sa_esign_contract_taskmxid=" + sa_esign_contract_taskmxid); if (rows.isNotEmpty()) { Long sa_agentsid = rows.get(0).getLong("sa_agentsid"); Long sa_esign_contract_taskid = rows.get(0).getLong("sa_esign_contract_taskid"); Rows agentRows = dbConnect.runSqlQuery("SELECT * FROM sv_agents WHERE sa_agentsid=" + sa_agentsid); String enterprisename = agentRows.get(0).getString("enterprisename"); sqlList.add(DataContrlLog.createLog(this, "sa_esign_contract_task", sa_esign_contract_taskid, "修改季度任务金额", "修改经销商【" + enterprisename + "】季度任务金为:第一季度(万元):" + s1 + ",第二季度(万元):" + s2 + ",第三季度(万元):" + s3 + ",第四季度(万元):" + s4).getSQL()); } } dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "电子签合同任务明细-明细列表", apiversion = R.ID2026041315403802.v1.class) public String list() throws YosException { Long sa_esign_contract_taskid = content.getLongValue("sa_esign_contract_taskid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_esign_contract_taskmx", "sa_esign_contract_taskmxid", "status", "approvestatus", "license_address", "phonenumber", "legal_rep", "begindate", "enddate", "flowid", "s1", "s2", "s3", "s4", "y1").setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.inner, "sa_agents", "t2", "t1.siteid = t2.siteid and t1.sa_agentsid=t2.sa_agentsid", "sys_enterpriseid", "agentnum"); querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise", "t3", "t3.siteid = t2.siteid and t3.sys_enterpriseid = t2.sys_enterpriseid", "enterprisename", "abbreviation", "province", "city", "county"); querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_tradefield", "t4", "t4.siteid = t2.siteid and t4.sys_enterpriseid = t2.sys_enterpriseid"); querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t5", "t5.sa_saleareaid = t4.sa_saleareaid and t5.siteid = t4 .siteid", "areaname"); querySQL.setWhere("t1.sa_esign_contract_taskid=" + sa_esign_contract_taskid); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); for (Row row : rows) { Long sa_esign_contract_taskmxid = row.getLong("sa_esign_contract_taskmxid"); Rows attachments = Attachment.get(this, "sa_esign_contract_taskmx", sa_esign_contract_taskmxid); row.put("attinfos", attachments); String flowid = row.getString("flowid"); if (!StringUtils.isBlank(flowid)) { row.put("downloadurl", WeChatContractUtil.describeFileUrls(flowid)); } row.putIfAbsent("downloadurl", ""); row.putIfAbsent("s1", 0); row.putIfAbsent("s2", 0); row.putIfAbsent("s3", 0); row.putIfAbsent("s4", 0); row.putIfAbsent("y1", 0); } return getSucReturnObject().setData(rows).toString(); } @API(title = "电子签合同任务明细-明细详情", apiversion = R.ID2026041516335302.v1.class) public String detail() throws YosException { Long sa_esign_contract_taskmxid = content.getLongValue("sa_esign_contract_taskmxid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_esign_contract_taskmx", "*").setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_task", "t2", "t2.sa_esign_contract_taskid=t1.sa_esign_contract_taskid", "taskname", "year", "senddate", "remarks"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_template", "t3", "t3.sa_esign_contract_templateid=t2.sa_esign_contract_templateid", "name", "type"); querySQL.addJoinTable(JOINTYPE.inner, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid"); querySQL.setSiteid(siteid); querySQL.setWhere("t1.sa_esign_contract_taskmxid", sa_esign_contract_taskmxid); Rows rows = querySQL.query(); Row row = rows.isNotEmpty() ? rows.get(0) : new Row(); String flowid = row.getString("flowid"); if (!StringUtils.isBlank(flowid)) { row.put("downloadurl", WeChatContractUtil.describeFileUrls(flowid)); } row.putIfAbsent("downloadurl", ""); Rows attachments = Attachment.get(this, "sa_esign_contract_taskmx", sa_esign_contract_taskmxid); row.put("attinfos", attachments); return getSucReturnObject().setData(row).toString(); } @API(title = "电子签合同任务明细-编辑任务明细", apiversion = R.ID2026041315410702.v1.class) public String edit() throws YosException { Long sa_esign_contract_taskmxid = content.getLongValue("sa_esign_contract_taskmxid"); Rows taskmxrows = dbConnect.runSqlQuery("SELECT * FROM sa_esign_contract_taskmx WHERE sa_esign_contract_taskmxid=" + sa_esign_contract_taskmxid); if (taskmxrows.isEmpty()) { return getErrReturnObject().setErrMsg("合同不存在").toString(); } Row taskmxrow = taskmxrows.get(0); Long sa_agentsid = taskmxrow.getLong("sa_agentsid"); Long sys_enterpriseid = taskmxrow.getLong("sys_enterpriseid"); String status = taskmxrow.getString("status"); Long sa_esign_contract_taskid = taskmxrow.getLong("sa_esign_contract_taskid"); String[] statuslist = new String[]{"合同创建", "合同签署中", "合同签署完成", "合同即将过期"}; if (ArrayUtils.contains(statuslist, status)) { return getErrReturnObject().setErrMsg("当前状态不支持确认合同内容").toString(); } QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_esign_contract_template", "*").setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.left, "sa_esign_contract_task", "t2", "t1.sa_esign_contract_templateid=t2.sa_esign_contract_templateid", "year"); querySQL.setWhere("t2.sa_esign_contract_taskid", sa_esign_contract_taskid); Rows templaterows = querySQL.query(); if (templaterows.isEmpty()) { return getErrReturnObject().setErrMsg("合同模板不存在").toString(); } Long year = templaterows.get(0).getLong("year"); Row agentRow = ContractTaskUtil.getAgentRow(this, sa_agentsid); Row enterpriseRow = ContractTaskUtil.getEnterpriseRow(this, sys_enterpriseid); //校验参数 ContractTaskUtil.check(this, agentRow, enterpriseRow, taskmxrow); BigDecimal securitydeposit = ContractTaskUtil.getSecurityDeposit(this, sys_enterpriseid); String license_name = content.getStringValue("license_name"); String legal_rep = content.getStringValue("legal_rep"); String phonenumber = content.getStringValue("phonenumber"); //构建需要上传的模板传递的数据 CompanyInfo companyInfo = ContractTaskUtil.getCompanyInfo(this, enterpriseRow, agentRow, taskmxrow, year, securitydeposit); UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_esign_contract_taskmx"); updateSQL.setSiteid(siteid); updateSQL.setUniqueid(sa_esign_contract_taskmxid); updateSQL.setValue("license_name", license_name); updateSQL.setValue("legal_rep", legal_rep); updateSQL.setValue("phonenumber", phonenumber); updateSQL.setValue("taxno", content.getStringValue("taxno")); updateSQL.setValue("license_address", content.getStringValue("license_address")); updateSQL.setValue("mobile", content.getStringValue("mobile")); updateSQL.setValue("presalesphonenumber", content.getStringValue("presalesphonenumber")); updateSQL.setValue("aftersalesphonenumber", content.getStringValue("aftersalesphonenumber")); updateSQL.setValue("paymans", content.getStringValue("paymans")); updateSQL.setValue("idcard", content.getStringValue("idcard")); updateSQL.setValue("companyinfo", JSON.toJSON(companyInfo)); updateSQL.update(); DataContrlLog.createLog(this, "sa_esign_contract_task", sa_esign_contract_taskid, "合同确认", "合同内容确认成功").insert(); //创建签署流程 WeChatContractUtil wccUtil = new WeChatContractUtil(); String flowName = templaterows.get(0).getString("name"); String templateId = templaterows.get(0).getString("templateid"); // 获取模板里面的参与方RecipientId Recipient[] recipients = WeChatByTemplate.GetRecipients(templateId); if (recipients == null) { throw new NullPointerException("签署人不能为空"); } //构造签署人信息 FlowApproverInfo[] flowApproverInfos = WeChatByTemplate.BuildApprovers(Arrays.asList(recipients), license_name, legal_rep, phonenumber); // String organizationOpenId = DigestUtils.sha256Hex(license_name); ArrayList fileBase64List = new ArrayList<>(); Rows attachmentRows = Attachment.get(this, "sa_esign_contract_taskmx", sa_esign_contract_taskmxid); for (Row attachmentRow : attachmentRows) { Long attachmentid = attachmentRow.getLong("attachmentid"); InputStream inputStream = getAttachmentFileInputStream(attachmentid); String fileBase64 = WeChatContractUtil.convertImageFileToBase64(inputStream); fileBase64List.add(fileBase64); } // 发起合同 样例为BtoC Map resp = wccUtil.createFlowByTemplateDirectly(flowName , templateId, flowApproverInfos, WeChatConfig.SuperProxyOperatorOpenId, companyInfo, fileBase64List); int count = WeChatConfig.COUNT; for (int i = 0; i < count; i++) { // // 返回合同Id // System.out.println("您创建的合同id为:"); // System.out.println(resp.get("FlowIds")[i]); // // 返回签署的链接 // System.out.println("签署链接为:"); // System.out.println(resp.get("Urls")[i]); // // Step 3 下载合同 // // 返回合同下载链接 // String url = WeChatContractUtil.describeFileUrls(resp.get("FlowIds")[i]); // System.out.println("请访问以下地址下载您的合同:"); // System.out.println(url); updateSQL = SQLFactory.createUpdateSQL(this, "sa_esign_contract_taskmx"); updateSQL.setSiteid(siteid); updateSQL.setUniqueid(sa_esign_contract_taskmxid); updateSQL.setValue("flowid", resp.get("FlowIds")[i]); updateSQL.setValue("signurl", resp.get("Urls")[i]); updateSQL.setValue("status", "合同创建"); updateSQL.setValue("approvestatus", "待签署"); updateSQL.update(); } return detail(); } @API(title = "经销商的合同列表", apiversion = R.ID2026041315425102.v1.class) public String agentsList() throws YosException { QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_esign_contract_taskmx", "*").setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_task", "t2", "t2.sa_esign_contract_taskid=t1.sa_esign_contract_taskid", "taskname", "year", "senddate", "remarks"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_template", "t3", "t3.sa_esign_contract_templateid=t2.sa_esign_contract_templateid", "name", "type"); querySQL.addJoinTable(JOINTYPE.inner, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid"); querySQL.setSiteid(siteid); querySQL.setWhere("t4.sys_enterpriseid", sys_enterpriseid); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); for (Row row : rows) { String flowid = row.getString("flowid"); if (!StringUtils.isBlank(flowid)) { row.put("downloadurl", WeChatContractUtil.describeFileUrls(flowid)); } row.putIfAbsent("downloadurl", ""); } return getSucReturnObject().setData(rows).toString(); } @API(title = "区域经理查询自己管辖的经销商合同", apiversion = R.ID2026041715520802.v1.class) public String agentsList2() throws YosException { QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_esign_contract_taskmx", "*").setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_task", "t2", "t2.sa_esign_contract_taskid=t1.sa_esign_contract_taskid", "taskname", "year", "senddate", "remarks"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_template", "t3", "t3.sa_esign_contract_templateid=t2.sa_esign_contract_templateid", "name", "type"); querySQL.addJoinTable(JOINTYPE.inner, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid", "agentnum"); querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid", "enterprisename", "abbreviation"); if (getDepartment(userid).getString("depname").equals("区域经理")) { querySQL.setWhere(" exists(select 1 from sys_enterprise_tradefield where sa_agentsid=t1.sa_agentsid and hrid=" + hrid + " )"); } querySQL.setSiteid(siteid); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); RowsMap attachmentsMap = Attachment.get(this, "sa_esign_contract_taskmx", rows.toArrayList("sa_esign_contract_taskmxid", new ArrayList<>())); for (Row row : rows) { String flowid = row.getString("flowid"); if (!StringUtils.isBlank(flowid)) { row.put("downloadurl", WeChatContractUtil.describeFileUrls(flowid)); } row.putIfAbsent("downloadurl", ""); Long sa_esign_contract_taskmxid = row.getLong("sa_esign_contract_taskmxid"); row.put("attinfos", attachmentsMap.getOrDefault(sa_esign_contract_taskmxid, new Rows())); } return getSucReturnObject().setData(rows).toString(); } @API(title = "经销商档案详情中的合同查询列表", apiversion = R.ID2026041810335702.v1.class) public String agentsList3() throws YosException { Long sa_agentsid = content.getLongValue("sa_agentsid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_esign_contract_taskmx", "sa_esign_contract_taskmxid", "archiveddate").setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_task", "t2", "t2.sa_esign_contract_taskid=t1.sa_esign_contract_taskid", "taskname", "year", "senddate", "remarks"); querySQL.addJoinTable(JOINTYPE.inner, "sa_esign_contract_template", "t3", "t3.sa_esign_contract_templateid=t2.sa_esign_contract_templateid", "name", "type"); querySQL.setWhere("t1.sa_agentsid", sa_agentsid); querySQL.setSiteid(siteid); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); RowsMap attachmentsMap = Attachment.get(this, "sa_esign_contract_taskmx", rows.toArrayList("sa_esign_contract_taskmxid", new ArrayList<>())); for (Row row : rows) { Long sa_esign_contract_taskmxid = row.getLong("sa_esign_contract_taskmxid"); row.put("attinfos", attachmentsMap.getOrDefault(sa_esign_contract_taskmxid, new Rows())); row.putIfAbsent("archiveddate", ""); } return getSucReturnObject().setData(rows).toString(); } }