|
@@ -16,6 +16,7 @@ import com.malk.kabeiyi.util.RecognizeAllText;
|
|
|
import com.malk.kabeiyi.util.U8Util;
|
|
|
import com.malk.server.aliwork.YDConf;
|
|
|
import com.malk.server.aliwork.YDParam;
|
|
|
+import com.malk.server.common.McException;
|
|
|
import com.malk.server.common.McR;
|
|
|
import com.malk.server.dingtalk.DDConf;
|
|
|
import com.malk.server.dingtalk.DDR;
|
|
@@ -25,6 +26,7 @@ import com.malk.service.aliwork.YDService;
|
|
|
import com.malk.service.dingtalk.DDClient;
|
|
|
import com.malk.service.dingtalk.DDClient_Workflow;
|
|
|
import com.malk.utils.UtilHttp;
|
|
|
+import com.malk.utils.UtilMap;
|
|
|
import com.malk.utils.UtilToken;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -32,6 +34,7 @@ import org.apache.commons.lang3.time.DateUtils;
|
|
|
import org.slf4j.MDC;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.FileOutputStream;
|
|
@@ -90,27 +93,43 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
@Value("${u8.appSecret}")
|
|
|
private String u8AppSecret;
|
|
|
|
|
|
- //u8数据源库序号
|
|
|
- private static final int[] DS_SEQUENCES = {2,3,5,8,9,10,12,14};
|
|
|
-
|
|
|
//审批实例url前缀(卡倍亿)
|
|
|
private static final String PROC_INST_PREFIX_URL = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=dingc3a744cb591a7346f2c783f7214b6d69#/plainapproval?procInstId=";
|
|
|
+
|
|
|
//宜搭-关联数据(卡倍亿)
|
|
|
private static final String RELATION = "FORM-230C40137ED94524B4D4C94F8B23A8D2F8PF";
|
|
|
|
|
|
//审批实例url前缀(特充)
|
|
|
private static final String PROC_INST_PREFIX_URL2 = "https://aflow.dingtalk.com/dingtalk/web/query/pchomepage.htm?from=oflow&op=true&corpid=ding3ea249a3b5b466d0f2c783f7214b6d69#/plainapproval?procInstId=";
|
|
|
+
|
|
|
//宜搭-关联数据(特充)
|
|
|
private static final String RELATION2 = "FORM-51E17EFB52C14C9CB9E00168FED2BC18LQ6H";
|
|
|
+
|
|
|
//问题整改表
|
|
|
private static final String QUESTION = "FORM-89F515967FF94C62A9031F28EF6000B1YV5Q";
|
|
|
+
|
|
|
//问题整改表流程code
|
|
|
private static final String QUESTION_PROC_CODE = "TPROC--DP5660A1LEXNP1S37P7KU9GCHD5U3HB6C360M5";
|
|
|
+
|
|
|
//审核表
|
|
|
private static final String CHECK = "FORM-F4ED246EADD8427381BC13C4F0FEF7FDYMKJ";
|
|
|
+
|
|
|
//审核表流程code
|
|
|
private static final String CHECK_PROC_CODE = "TPROC--4XC66Y61XWWNZNJKBZD4VAB5BQAJ2YANX160M5";
|
|
|
- //关联表单(卡倍亿)
|
|
|
+
|
|
|
+ //审核计划
|
|
|
+ private static final String CHECK_PLAN = "FORM-A9A7991EEB7D41FDAADADB9B1E1750FE0K5K";
|
|
|
+
|
|
|
+ //产品实发
|
|
|
+ private static final String PRODUCT_REAL = "FORM-809458EB6D524CF5AE1A91A3492D8B1BZIMN";
|
|
|
+
|
|
|
+ //内部交易客户
|
|
|
+ private static final String INTERNAL_CUSTOMER = "FORM-14782CE27EA54D2C94CC5BEF90554E5ALYP7";
|
|
|
+
|
|
|
+ //内部工厂
|
|
|
+ private static final String INTERNAL_FACTORY = "FORM-6CD7A1EDE1134AC8B2EE833769595C2EIWQ6";
|
|
|
+
|
|
|
+ //关联表单(卡倍亿)
|
|
|
private static final Map<String,String> SCHEMA_MAP = new HashMap<>();
|
|
|
static{
|
|
|
SCHEMA_MAP.put("工厂用章流程","1.1、工厂用章流程(除采购营销人事)");
|
|
@@ -351,9 +370,7 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
Map formData = ddrNew.getFormData();
|
|
|
|
|
|
List<String> reviewerUserIds = (List<String>) formData.get("employeeField_m061zye5_id");//审核人
|
|
|
- List<String> deptManagerUserIds = (List<String>) formData.get("employeeField_m10d5uqj_id");//部门经理
|
|
|
- String area = formData.get("selectField_m0w4kilf").toString();//审核区域
|
|
|
-
|
|
|
+ String area = formData.get("selectField_m0w4kilf").toString();
|
|
|
List<Map> details = (List<Map>) formData.get("tableField_m0kqtqoy");
|
|
|
String[] yida = McProject.getYida("1009");
|
|
|
for (Map detail : details) {
|
|
@@ -366,23 +383,9 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
question.put("attachmentField_m061zyep",detail.get("attachmentField_m061zyep"));//问题证据
|
|
|
question.put("textareaField_m063drgz",detail.get("textareaField_m063drgz"));//问题描述
|
|
|
question.put("dateField_m061zyev",detail.get("dateField_m061zyev"));//整改截止时间
|
|
|
- question.put("employeeField_m10dns9c",deptManagerUserIds);//部门经理
|
|
|
-
|
|
|
- //根据userId获取部门id
|
|
|
- List<String> rectificationUserIds = (List<String>) detail.get("employeeField_m061zyeq_id");
|
|
|
- question.put("employeeField_m061zyeq",rectificationUserIds);//责任整改人
|
|
|
+ question.put("employeeField_m10dns9c",detail.get("employeeField_m10d5uqj_id"));//部门经理
|
|
|
question.put("selectField_m0w4kilf",area);//审核区域
|
|
|
|
|
|
- Map body2 = new HashMap<>();
|
|
|
- body2.put("userid", rectificationUserIds.get(0));
|
|
|
-
|
|
|
- DDR_New ddrNew1 = (DDR_New) UtilHttp.doPost("https://oapi.dingtalk.com/topapi/v2/department/listparentbyuser", null, ddClient.initTokenParams(), body2, DDR_New.class);
|
|
|
- Map result2 = (Map) ddrNew1.getResult();
|
|
|
- List<Map> parentList = (List<Map>) result2.get("parent_list");
|
|
|
- List<Long> parentDeptIdList = (List<Long>) parentList.get(0).get("parent_dept_id_list");
|
|
|
- String deptId = parentDeptIdList.get(0) + "";
|
|
|
- question.put("departmentSelectField_m0p0tbyo",new String[]{deptId});//部门
|
|
|
-
|
|
|
Map<String,Object> body = new HashMap<>();
|
|
|
body.put("appType",yida[0]);
|
|
|
body.put("systemToken",yida[1]);
|
|
@@ -400,11 +403,11 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
|
|
|
@Override
|
|
|
public McR ocr(String downloadUrl,String name,String type) {
|
|
|
- MDC.put("MDC_KEY_PID","1009");
|
|
|
+ MDC.put("MDC_KEY_PID","1020");
|
|
|
|
|
|
//下载宜搭附件
|
|
|
try {
|
|
|
- String[] yida = McProject.getYida("1009");
|
|
|
+ String[] yida = McProject.getYida("1020");
|
|
|
downloadFile(downloadUrl,filePath + name,yida[0],yida[1]);
|
|
|
log.info("文件下载成功!");
|
|
|
} catch (IOException e) {
|
|
@@ -506,7 +509,9 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
break;
|
|
|
default:break;
|
|
|
}
|
|
|
-
|
|
|
+ //获取所有子表明细(大于50条)
|
|
|
+ List<Map> details = getInnerTable(CHECK_PLAN,formInstId,"tableField_m0kqtqoy",1,50);
|
|
|
+ formData.put("tableField_m0kqtqoy",details);
|
|
|
//每个审批人发起审批
|
|
|
for (String reviewerUserId : reviewerUserIds) {
|
|
|
//根据userId获取部门id
|
|
@@ -547,15 +552,71 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
return McR.success();
|
|
|
}
|
|
|
|
|
|
+ private List<Map> getInnerTable(String formUuid, String formInstId, String tableField, int pageNumber, int pageSize) {
|
|
|
+ List<Map> details = new ArrayList<>();
|
|
|
+ DDR_New ddrNew = new DDR_New();
|
|
|
+
|
|
|
+ do {
|
|
|
+ ddrNew = ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid(formUuid)
|
|
|
+ .formInstId(formInstId)
|
|
|
+ .tableFieldId(tableField)
|
|
|
+ .pageNumber(pageNumber)
|
|
|
+ .pageSize(pageSize)
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_details);
|
|
|
+ details.addAll((List<Map>)ddrNew.getData());
|
|
|
+ pageNumber++;
|
|
|
+ }while (ddrNew.getTotalCount() > pageSize * ddrNew.getPageNumber());
|
|
|
+
|
|
|
+ return details;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
+ @Async
|
|
|
public McR getDeliveryInfo() {
|
|
|
- MDC.put("MDC_KEY_PID","1009");
|
|
|
+ //现在时间戳
|
|
|
+ long beginTime = System.currentTimeMillis();
|
|
|
+
|
|
|
+ MDC.put("MDC_KEY_PID","1019");
|
|
|
|
|
|
- for (int dsSequence : DS_SEQUENCES) {
|
|
|
- //获取昨天所有发货单
|
|
|
- DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
|
|
|
- String yesterday = dateTime.toString("yyyy-MM-dd");
|
|
|
-// String yesterday = dateTime.toString("2024-07-01");
|
|
|
+ //内部交易客户
|
|
|
+ DDR_New ddrNew = ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid(INTERNAL_CUSTOMER)
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list);
|
|
|
+ List<Map> data = (List<Map>) ddrNew.getData();
|
|
|
+
|
|
|
+ Set<String> cusCodes = new HashSet<>();
|
|
|
+ for (Map map : data) {
|
|
|
+ Map formData = (Map) map.get("formData");
|
|
|
+ cusCodes.add(getString(formData.get("textField_m1g1tp7i")));
|
|
|
+ }
|
|
|
+
|
|
|
+ //数据源对应工厂
|
|
|
+ Map<Integer,String> factory = new HashMap<>();
|
|
|
+ DDR_New ddrNew2 = ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid(INTERNAL_FACTORY)
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list);
|
|
|
+ List<Map> data2 = (List<Map>) ddrNew2.getData();
|
|
|
+ for (Map map : data2) {
|
|
|
+ Map formData = (Map) map.get("formData");
|
|
|
+ int dqNumber = (int) formData.get("numberField_m1fvucmc");//数据源序号
|
|
|
+ String factoryName = getString(formData.get("textField_m1fvucmd"));//工厂名称
|
|
|
+ factory.put(dqNumber,factoryName);
|
|
|
+ }
|
|
|
+ List<Map> errorList = new ArrayList<>();
|
|
|
+
|
|
|
+ //同步当月内的数据 upsert
|
|
|
+ DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
|
|
|
+ String yesterday = dateTime.toString("yyyy-MM-dd");
|
|
|
+
|
|
|
+ DateTime beginOfMonth = DateUtil.beginOfMonth(DateUtil.lastMonth());
|
|
|
+ String beginOfMonthString = beginOfMonth.toString("yyyy-MM-dd");
|
|
|
+
|
|
|
+/* String beginOfMonthString = "2024-10-09";
|
|
|
+
|
|
|
+ String yesterday = "2024-10-09";*/
|
|
|
+ for (Integer dsSequence : factory.keySet()) {
|
|
|
+ List<String> errorCodes = new ArrayList<>();
|
|
|
|
|
|
Map<String,Object> param = new HashMap<>();
|
|
|
param.put("from_account",fromAccount);
|
|
@@ -565,16 +626,21 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
param.put("page_index", 1);
|
|
|
param.put("rows_per_page", 50);
|
|
|
param.put("ds_sequence", dsSequence);
|
|
|
- param.put("date_begin", yesterday);
|
|
|
+ param.put("date_begin", beginOfMonthString);
|
|
|
param.put("date_end", yesterday);
|
|
|
|
|
|
Map<String, Object> map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
|
|
|
+ if (!getString(map.get("errcode")).equals("0")){
|
|
|
+ log.error("获取发货单列表失败:{}",map.get("errmsg"));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (!map.get("page_count").equals("1")){
|
|
|
Integer rowCount = Integer.valueOf(map.get("row_count").toString());
|
|
|
param.put("rows_per_page",rowCount);
|
|
|
map = get("https://api.yonyouup.com/api/consignmentlist/batch_get", param, null);
|
|
|
}
|
|
|
List<Map> consignmentList = (List<Map>) map.get("consignmentlist");
|
|
|
+
|
|
|
for (Map consignment : consignmentList) {
|
|
|
//查询单个发货单详情
|
|
|
String id = getString(consignment.get("code"));
|
|
@@ -587,27 +653,59 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
param2.put("id", id);
|
|
|
param2.put("ds_sequence", dsSequence);
|
|
|
|
|
|
- Map<String, Object> map2 = get("https://api.yonyouup.com/api/consignment/get", param2, null);
|
|
|
+ Map<String, Object> map2 = new HashMap<>();
|
|
|
+
|
|
|
+ int i1 =1 ;
|
|
|
+ boolean flag1 = false;
|
|
|
+ while (i1<=5 && !flag1) {
|
|
|
+ try {
|
|
|
+ map2 = get("https://api.yonyouup.com/api/consignment/get", param2, null);
|
|
|
+ flag1 = true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("获取发货单详情失败:{}, 重试次数:{}",e.getMessage(),i1);
|
|
|
+ try {
|
|
|
+ Thread.sleep(3000);
|
|
|
+ } catch (InterruptedException ex) {
|
|
|
+ throw new RuntimeException(ex);
|
|
|
+ }
|
|
|
+ i1++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (i1 > 5){
|
|
|
+ log.error("获取发货单详情失败");
|
|
|
+ errorCodes.add(id);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
Map consignment2 = (Map) map2.get("consignment");
|
|
|
|
|
|
Map formData = new HashMap();
|
|
|
+ //若为内部交易客户,则不同步
|
|
|
+ String cusCode = getString(consignment2.get("custcode"));
|
|
|
+ if (cusCodes.contains(cusCode)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ formData.put("textField_m18nvp7y",getString(consignment2.get("cusname")));//客户名称
|
|
|
+ formData.put("textField_m219zpzf",getString(consignment2.get("cusabbname")));//客户码
|
|
|
formData.put("textField_m18qfuiz",getString(consignment2.get("operation_type")));//操作类型
|
|
|
formData.put("textField_m18qfuj0",getString(consignment2.get("saletypename")));//销售类型
|
|
|
formData.put("textField_m18nvp87",getString(consignment2.get("code")));//发货单code
|
|
|
- formData.put("dateField_m18nvp7x",DateUtil.parseDate(yesterday).getTime());//发货日期
|
|
|
- formData.put("textField_m18nvp7y",getString(consignment2.get("cusname")));//客户名称
|
|
|
+ formData.put("dateField_m18nvp7x",DateUtil.parseDate(getString(consignment.get("date"))).getTime());//发货日期
|
|
|
formData.put("textField_m18nvp7z",getString(consignment2.get("deptname")));//部门
|
|
|
formData.put("textField_m18nvp81",getString(consignment2.get("maker")));//生产员
|
|
|
- formData.put("textField_m18nvp80",getString(consignment2.get("verifier")));//生产员
|
|
|
- formData.put("numberField_m18wkih7",dsSequence);//生产员
|
|
|
+ formData.put("textField_m18nvp80",getString(consignment2.get("verifier")));//质检员
|
|
|
+ formData.put("numberField_m18wkih7",dsSequence);//数据源序号
|
|
|
+ formData.put("textField_m1er3scl",factory.get(dsSequence));//工厂名称
|
|
|
|
|
|
List<Map> entry = (List<Map>) consignment2.get("entry");
|
|
|
List<Map> collect = entry.stream().map(item -> {
|
|
|
Map detail = new HashMap();
|
|
|
detail.put("textField_m18nvp8c", getString(item.get("socode")));//销售订单号
|
|
|
detail.put("textField_m18nvp8d", getString(item.get("warehouse_name")));//仓库名称
|
|
|
- detail.put("textField_m18nvp8e", getString(item.get("inventory_name")));//库存名称
|
|
|
+ detail.put("textField_m18nvp8e", getString(item.get("inventory_name")));//存货名称
|
|
|
+ detail.put("textField_m22mkwzk", getString(item.get("define29")));//客户存货码
|
|
|
detail.put("textField_m18nvp8f", getString(item.get("cinvm_unit")));//单位
|
|
|
detail.put("numberField_m18nvp8h", getString(item.get("quantity")));//发货长度
|
|
|
detail.put("numberField_m18nvp8j", getString(item.get("price")));//未税单价
|
|
@@ -616,21 +714,88 @@ public class KabeiyiServiceImpl implements KabeiyiService {
|
|
|
detail.put("numberField_m18nvp8m", getString(item.get("sum")));//含税总价
|
|
|
detail.put("numberField_m18nvp8n", getString(item.get("taxrate")));//税率
|
|
|
detail.put("numberField_m18nvp8o", getString(item.get("tax")));//总税价
|
|
|
- detail.put("dateField_m18yzlob", DateUtil.parseDate(yesterday).getTime());//发货日期
|
|
|
+ detail.put("dateField_m18yzlob", DateUtil.parseDate(getString(consignment.get("date"))).getTime());//发货日期
|
|
|
detail.put("textField_m18z3yn8", getString(consignment2.get("cusname")));//客户名称
|
|
|
+ detail.put("textField_m219zpzg", getString(item.get("free1")));//客户码
|
|
|
+ detail.put("textField_m21b1bhg", getString(item.get("free2")));//产品颜色
|
|
|
+
|
|
|
+ detail.put("textField_m1odluob", factory.get(dsSequence));//工厂名称
|
|
|
|
|
|
return detail;
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
formData.put("tableField_m18nvp82",collect);//发货明细
|
|
|
-
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
- .formUuid("FORM-BE542784AAC04206BD46AF3D9CD1F12DYSKF")
|
|
|
- .formDataJson(JSON.toJSONString(formData))
|
|
|
- .build(), YDConf.FORM_OPERATION.create);
|
|
|
+ int i=1;
|
|
|
+ boolean flag = false;
|
|
|
+ while (i<=5 && !flag){
|
|
|
+ try{
|
|
|
+ List<Map> jsonString = new ArrayList<>();
|
|
|
+ jsonString.add(UtilMap.map("key, value, type, operator, componentName", "textField_m18nvp87",getString(consignment2.get("code")),"TEXT","eq","TextField"));
|
|
|
+ jsonString.add(UtilMap.map("key, value, type, operator, componentName", "numberField_m18wkih7",new int[]{dsSequence,dsSequence},"DOUBLE","between","NumberField"));
|
|
|
+
|
|
|
+ String searchCondition = JSONObject.toJSONString(jsonString);
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid(PRODUCT_REAL)
|
|
|
+// .searchCondition(JSON.toJSONString(UtilMap.map("textField_m18nvp87, numberField_m18wkih7",getString(consignment2.get("code")),dsSequence)))//模糊查询
|
|
|
+ .searchCondition(searchCondition)//精准查询
|
|
|
+ .formDataJson(JSON.toJSONString(formData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+ flag = true;
|
|
|
+ }catch (McException e){
|
|
|
+ if (e.getMessage().contains("The request has failed due to a temporary failure of the server.")){
|
|
|
+ log.error("upsert失败,尝试次数:{}",i);
|
|
|
+ i++;
|
|
|
+ try {
|
|
|
+ Thread.sleep(3000);
|
|
|
+ } catch (InterruptedException ex) {
|
|
|
+ throw new RuntimeException(ex);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ log.error("upsert,失败原因:{}" , e.getMessage());
|
|
|
+ errorCodes.add(id);
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , e.getMessage());
|
|
|
+ errorCodes.add(id);
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (i>5){
|
|
|
+ errorCodes.add(id);
|
|
|
+ log.error("发货单:{} 同步失败 失败原因:{}",getString(consignment2.get("code")) , "重试次数过多");
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
+ Map error = new HashMap();
|
|
|
+ error.put("ds_sequence",dsSequence);
|
|
|
+ error.put("error_count",errorCodes.size());
|
|
|
+ //errorCodes逗号分隔
|
|
|
+ error.put("error_codes",errorCodes.stream().collect(Collectors.joining(",")));
|
|
|
+ errorList.add(error);
|
|
|
+
|
|
|
+ }
|
|
|
+ long endTime = System.currentTimeMillis();
|
|
|
+ double time = (endTime - beginTime) / 1000.0;
|
|
|
+ log.info("同步完成,耗时:{}秒", time);
|
|
|
+ log.info("同步失败列表: {}", errorList);
|
|
|
+
|
|
|
+ //记录失败日志
|
|
|
+ Map<String,Object> formData = new HashMap<>();
|
|
|
+ formData.put("dateField_m21oifwi",beginTime);
|
|
|
+ formData.put("dateField_m21oifwp",endTime);
|
|
|
+ formData.put("numberField_m21oifwo",time);
|
|
|
+ //换行分隔errorList
|
|
|
+ String errorStr = errorList.stream().map(item -> {
|
|
|
+ String s = "数据源序号:" + item.get("ds_sequence") + ",错误数量:" + item.get("error_count") + ",发货单codes:" + item.get("error_codes");
|
|
|
+ return s;
|
|
|
+ }).collect(Collectors.joining("\n"));
|
|
|
+ formData.put("textareaField_m21oifwj",errorStr);
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-F297D439FFF747ACB26DEA940850CD9B13LM")
|
|
|
+ .formDataJson(JSON.toJSONString(formData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
|
return McR.success();
|
|
|
}
|
|
|
|