package com.malk.chenyixun.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.common.base.Strings; import com.malk.chenyixun.service.ChenyixunService; import com.malk.server.aliwork.YDConf; import com.malk.server.aliwork.YDParam; import com.malk.server.dingtalk.DDR_New; import com.malk.service.aliwork.YDClient; import com.malk.utils.UtilMap; import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class ChenyixunServiceImpl implements ChenyixunService { @Autowired private YDClient ydClient; @Async @Override public void sync1(Map map) { String formInstId = UtilMap.getString(map, "formInstId"); Map formData = ydClient.queryData(YDParam.builder() .formInstId(formInstId) .build(), YDConf.FORM_QUERY.retrieve_id).getFormData(); List cwclr = UtilMap.getList(formData,"employeeField_mf0xew5w_id");//车务处理人 Object jhdhsj = formData.get("dateField_mb5wl2kv");//计划到货时间 List gys = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb5wl2kq_id"));//供应商 String gysbh = UtilMap.getString(formData,"textField_mb97iaeh");//供应商编号 String gysmc = UtilMap.getString(formData,"textField_mcu6kvlh");//供应商名称 List cghtdd = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb97iaei_id"));//采购合同订单关联表单 String cghtddbh = UtilMap.getString(formData,"serialNumberField_mb5wl2kl");//采购合同订单编号 List fqr = UtilMap.getList(formData,"employeeField_mb5wl2kj_id");//发起人 List carList = getYdInnerTableList("FORM-B940BDA5D34647E9B7923C9F9FB43B24S19P",formInstId,"tableField_mcn18skj");//采购合同订单车辆清单子表 for (Map car : carList) { Map carFormData = new HashMap(); carFormData.put("textField_mcn3vgm4",car.get("textField_mcn3vgm4"));//车辆编号 carFormData.put("associationFormField_mcn18skl",convertAssociationFormField(UtilMap.getString(car,"associationFormField_mcn18skl_id")));//车辆选择 carFormData.put("textField_mcn18sko",car.get("textField_mcn18sko"));//车架号 carFormData.put("textField_mcn18skn",car.get("textField_mcn18skn"));//车型配置 carFormData.put("dateField_mb5wl2kv",jhdhsj);//计划到货时间 carFormData.put("employeeField_mcn5ez9k",cwclr);//车务处理人 carFormData.put("employeeField_mb5wl2kj",fqr);//发起人 carFormData.put("associationFormField_mb97iaei",cghtdd);//采购合同订单关联表单 carFormData.put("associationFormField_mb5wl2kq",gys);//供应商 carFormData.put("textField_mb97iaeh",gysbh);//供应商编号 carFormData.put("textField_mbpvv7vc",cghtddbh);//采购合同订单编号 carFormData.put("textField_mcu4ue56",car.get("textField_mcu4ue56"));//车型编号 carFormData.put("textField_mcu6igax",gysmc);//供应商名称 ydClient.operateData(YDParam.builder() .formUuid("FORM-01B84B082A364F3AAE6FCB905B1860F0JL1H")//采购合同车辆清单中间表 .formDataJson(JSONObject.toJSONString(carFormData)) .build(), YDConf.FORM_OPERATION.create); } } @Async @Override public void sync2(Map map) { String formInstId = UtilMap.getString(map, "formInstId"); Map formData = ydClient.queryData(YDParam.builder() .formInstId(formInstId) .build(), YDConf.FORM_QUERY.retrieve_id).getFormData(); List kh = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb5uutk8_id"));//客户 String khbh = UtilMap.getString(formData,"textField_mb7jzz6z");//客户编号 List xshtdd = convertAssociationFormField(UtilMap.getString(formData,"associationFormField_mb8s60wl_id"));//销售合同订单关联表单 String xshtddbh = UtilMap.getString(formData,"serialNumberField_mb5uutk0");//销售合同订单编号 List khhtda = convertAssociationFormField(UtilMap.getString(formData, "associationFormField_mcmq5gec_id"));//客户合同档案关联表单 String khhtbh = UtilMap.getString(formData,"textField_mcmq5ged");//客户合同编号 List cw = UtilMap.getList(formData,"checkboxField_mcn18skp");//车务 List carList = getYdInnerTableList("FORM-A2BD5F465D16475FB0E95EAD25BBE6ABRYU2",formInstId,"tableField_mcn18skj");//销售合同订单车辆清单子表 for (Map car : carList) { Map carFormData = new HashMap(); carFormData.put("associationFormField_mcn18skl",convertAssociationFormField(UtilMap.getString(car,"associationFormField_mcn18skl_id")));//车辆选择 carFormData.put("textField_mcn18sko",car.get("textField_mcn18sko"));//车架号 carFormData.put("textField_mcn18skn",car.get("textField_mcn18skn"));//车型配置 carFormData.put("textField_mco7usdr",car.get("textField_mco7usdr"));//UUID carFormData.put("associationFormField_mb8s60wl",xshtdd);//销售合同订单关联表单 carFormData.put("textField_mcu7umpx",xshtddbh);//销售合同订单编号 carFormData.put("associationFormField_mcmq5gec",khhtda);//客户合同档案关联表单 carFormData.put("textField_mcmq5ged",khhtbh);//客户合同编号 carFormData.put("associationFormField_mb5uutk8",kh);//客户选择 carFormData.put("textField_mb7jzz6z",khbh);//客户编号 carFormData.put("checkboxField_mcn18skp",cw);//车务 ydClient.operateData(YDParam.builder() .formUuid("FORM-AC1FD7BF8F6C4FAF926B067EBD85B942PWOR")//销售合同车辆清单中间表 .formDataJson(JSONObject.toJSONString(carFormData)) .build(), YDConf.FORM_OPERATION.create); } } @Async @Override public void sync3(Map map) { String formInstId = UtilMap.getString(map, "formInstId"); Map formData = ydClient.queryData(YDParam.builder() .formInstId(formInstId) .build(), YDConf.FORM_QUERY.retrieve_id).getFormData(); List khhtda = convertAssociationFormField(UtilMap.getString(formData, "associationFormField_mbj0epft_id"));//客户合同档案关联表单 String khhdbh = UtilMap.getString(formData, "textField_mbhjyvev");//客户合同编号 String xshtddbh = UtilMap.getString(formData, "textField_mbhjyvee");//销售合同订单编号 Map updateFormData = new HashMap(); updateFormData.put("associationFormField_mbhn6ixw",khhtda); updateFormData.put("textField_mbj1dpay",khhdbh); List carList = getYdFormDataList("FORM-4B9A81B17E34471D8B3DA1ADC2C53A77U2EU", JSONObject.toJSONString(UtilMap.map("textField_mbj1dpaw", xshtddbh)), YDConf.FORM_QUERY.retrieve_list); for (Map car : carList) { String formInstanceId = UtilMap.getString(car, "formInstanceId"); Map carFormData = UtilMap.getMap(car, "formData"); String carkhhtbh = UtilMap.getString(carFormData, "textField_mbj1dpay"); if (Strings.isNullOrEmpty(carkhhtbh)){ ydClient.operateData(YDParam.builder() .formInstanceId(formInstanceId) .updateFormDataJson(JSONObject.toJSONString(updateFormData)) .build(), YDConf.FORM_OPERATION.update); } } } private List convertAssociationFormField(String jsonString) { String jsonString2 = StringEscapeUtils.unescapeJava(jsonString.substring(1, jsonString.length() - 1));//新供应商(关联表单) List associationFormField =(List) JSONArray.parse(jsonString2); return associationFormField; } private List getYdInnerTableList(String formUuid,String formInstId,String tableFieldId) { List list = new ArrayList<>(); DDR_New ddrNew; int pageNumber = 1; int pageSize = 50; do { ddrNew = ydClient.queryData(YDParam.builder() .formUuid(formUuid) .formInstanceId(formInstId) .tableFieldId(tableFieldId) .pageNumber(pageNumber) .pageSize(pageSize).build(), YDConf.FORM_QUERY.retrieve_details); list.addAll((List) ddrNew.getData()); pageNumber++; }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize); return list; } private List getYdFormDataList(String formUuid, String searchCondition, YDConf.FORM_QUERY formQuery) { List list = new ArrayList<>(); DDR_New ddrNew = new DDR_New(); int pageNumber = 1; int pageSize = 100; do { ddrNew = ydClient.queryData(YDParam.builder().formUuid(formUuid) .searchCondition(searchCondition) .pageNumber(pageNumber) .pageSize(pageSize).build(), formQuery); list.addAll((List) ddrNew.getData()); pageNumber++; }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize); return list; } }