|
|
@@ -2,6 +2,7 @@ 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;
|
|
|
@@ -16,6 +17,7 @@ import org.apache.commons.lang.StringUtils;
|
|
|
import org.camunda.bpm.container.impl.deployment.Attachments;
|
|
|
import restcontroller.R;
|
|
|
|
|
|
+import java.io.InputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
@@ -69,6 +71,7 @@ public class EsignContractTaskMX extends Controller {
|
|
|
insertSQL.setValue("license_address", license_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());
|
|
|
@@ -173,19 +176,56 @@ public class EsignContractTaskMX extends Controller {
|
|
|
return getSucReturnObject().toString();
|
|
|
}
|
|
|
|
|
|
+ @API(title = "电子签合同任务明细-修改季度任务金额", apiversion = R.ID2026042113202402.v1.class)
|
|
|
+ public String changeTaskMoney() throws YosException {
|
|
|
+
|
|
|
+ JSONArray sa_esign_contract_taskmxids = content.getJSONArray("sa_esign_contract_taskmxids");
|
|
|
+ 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);
|
|
|
+
|
|
|
+ ArrayList<String> sqlList = new ArrayList<>();
|
|
|
+
|
|
|
+ UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_esign_contract_taskmx");
|
|
|
+ updateSQL.setSiteid(siteid);
|
|
|
+ updateSQL.setWhere("sa_esign_contract_taskmxid", sa_esign_contract_taskmxids);
|
|
|
+ updateSQL.setValue("s1", s1);
|
|
|
+ updateSQL.setValue("s2", s2);
|
|
|
+ updateSQL.setValue("s3", s3);
|
|
|
+ updateSQL.setValue("s4", s4);
|
|
|
+ updateSQL.setValue("y1", y1);
|
|
|
+ sqlList.add(updateSQL.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 + "】季度任务金为:第一季度(万元):" + 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");
|
|
|
- Long year = 0L;
|
|
|
- Rows taskrows = dbConnect.runSqlQuery("SELECT * FROM sa_esign_contract_task WHERE sa_esign_contract_taskid=" + sa_esign_contract_taskid);
|
|
|
- if (taskrows.isNotEmpty()) {
|
|
|
- year = taskrows.get(0).getLong("year");
|
|
|
- }
|
|
|
|
|
|
QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_esign_contract_taskmx",
|
|
|
- "sa_esign_contract_taskmxid", "status", "approvestatus", "license_address", "phonenumber", "legal_rep", "begindate", "enddate", "flowid").setTableAlias("t1");
|
|
|
+ "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",
|
|
|
@@ -197,48 +237,12 @@ public class EsignContractTaskMX extends Controller {
|
|
|
querySQL.setPage(pageSize, pageNumber);
|
|
|
Rows rows = querySQL.query();
|
|
|
|
|
|
- QuerySQL targetQuerySQL = SQLFactory.createQuerySQL(this, "sa_salestarget",
|
|
|
- "sys_enterpriseid", "point", "target_l");
|
|
|
- targetQuerySQL.setWhere("year", year);
|
|
|
- targetQuerySQL.setWhere("type='季'");
|
|
|
- targetQuerySQL.setWhere("sys_enterpriseid", rows.toArrayList("sys_enterpriseid"));
|
|
|
-
|
|
|
- RowsMap targetRowsMap = targetQuerySQL.query().toRowsMap("sys_enterpriseid");
|
|
|
for (Row row : rows) {
|
|
|
- Long sys_enterpriseid = row.getLong("sys_enterpriseid");
|
|
|
- if (targetRowsMap.containsKey(sys_enterpriseid)) {
|
|
|
- Rows targetRows = targetRowsMap.get(sys_enterpriseid);
|
|
|
- BigDecimal y1 = BigDecimal.ZERO;
|
|
|
- for (Row targetRow : targetRows) {
|
|
|
- int point = targetRow.getInteger("point");
|
|
|
- y1 = y1.add(targetRow.getBigDecimal("target_l"));
|
|
|
- switch (point) {
|
|
|
- case 1:
|
|
|
- row.put("s1", targetRow.getBigDecimal("target_l"));
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- row.put("s2", targetRow.getBigDecimal("target_l"));
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- row.put("s3", targetRow.getBigDecimal("target_l"));
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- row.put("s4", targetRow.getBigDecimal("target_l"));
|
|
|
- break;
|
|
|
- }
|
|
|
- row.put("y1", y1);
|
|
|
- }
|
|
|
- }
|
|
|
row.putIfAbsent("s1", 0);
|
|
|
row.putIfAbsent("s2", 0);
|
|
|
row.putIfAbsent("s3", 0);
|
|
|
row.putIfAbsent("s4", 0);
|
|
|
row.putIfAbsent("y1", 0);
|
|
|
- String flowid = row.getString("flowid");
|
|
|
- if (!StringUtils.isBlank(flowid)) {
|
|
|
- row.put("downloadurl", WeChatContractUtil.describeFileUrls(flowid));
|
|
|
- }
|
|
|
- row.putIfAbsent("downloadurl", "");
|
|
|
}
|
|
|
|
|
|
return getSucReturnObject().setData(rows).toString();
|
|
|
@@ -277,55 +281,57 @@ public class EsignContractTaskMX extends Controller {
|
|
|
public String edit() throws YosException {
|
|
|
|
|
|
Long sa_esign_contract_taskmxid = content.getLongValue("sa_esign_contract_taskmxid");
|
|
|
- Rows rows = dbConnect.runSqlQuery("SELECT * FROM sa_esign_contract_taskmx WHERE sa_esign_contract_taskmxid=" + sa_esign_contract_taskmxid);
|
|
|
-
|
|
|
- if (rows.isEmpty()) {
|
|
|
+ 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();
|
|
|
}
|
|
|
- String status = rows.get(0).getString("status");
|
|
|
+ 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();
|
|
|
}
|
|
|
- Long sa_esign_contract_taskid = rows.get(0).getLong("sa_esign_contract_taskid");
|
|
|
|
|
|
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");
|
|
|
+ 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 mobile = content.getStringValue("mobile");
|
|
|
String phonenumber = content.getStringValue("phonenumber");
|
|
|
- String taxno = content.getStringValue("taxno");
|
|
|
- String license_address = content.getStringValue("license_address");
|
|
|
|
|
|
//构建需要上传的模板传递的数据
|
|
|
- CompanyInfo companyInfo = new CompanyInfo();
|
|
|
- companyInfo.setBillno("");
|
|
|
- companyInfo.setLicensename(license_name);
|
|
|
- companyInfo.setTaxno(taxno);
|
|
|
- companyInfo.setLicenseaddress(license_address);
|
|
|
- companyInfo.setLegalrep(legal_rep);
|
|
|
- companyInfo.setMobile(mobile);
|
|
|
- companyInfo.setPhonenumber(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("taxno", taxno);
|
|
|
- updateSQL.setValue("license_address", license_address);
|
|
|
- updateSQL.setValue("legal_rep", license_address);
|
|
|
- updateSQL.setValue("mobile", mobile);
|
|
|
+ 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();
|
|
|
|
|
|
@@ -340,26 +346,36 @@ public class EsignContractTaskMX extends Controller {
|
|
|
throw new NullPointerException("签署人不能为空");
|
|
|
}
|
|
|
//构造签署人信息
|
|
|
- FlowApproverInfo[] flowApproverInfos = WeChatByTemplate.BuildApprovers(Arrays.asList(recipients), license_name, legal_rep,phonenumber);
|
|
|
+ FlowApproverInfo[] flowApproverInfos = WeChatByTemplate.BuildApprovers(Arrays.asList(recipients), license_name, legal_rep, phonenumber);
|
|
|
// String organizationOpenId = DigestUtils.sha256Hex(license_name);
|
|
|
|
|
|
+ ArrayList<String> 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<String, String[]> resp = wccUtil.createFlowByTemplateDirectly(flowName
|
|
|
- , templateId, flowApproverInfos,WeChatConfig.SuperProxyOperatorOpenId,companyInfo);
|
|
|
+ , 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);
|
|
|
+// // 返回合同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);
|