package doumeemes.core.utils.dingding;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.aliyun.dingtalkoauth2_1_0.Client;
|
import com.aliyun.dingtalkoauth2_1_0.models.CreateJsapiTicketHeaders;
|
import com.aliyun.dingtalkoauth2_1_0.models.CreateJsapiTicketResponse;
|
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
|
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
|
import com.aliyun.dingtalktodo_1_0.models.*;
|
import com.aliyun.dingtalkworkflow_1_0.models.StartProcessInstanceHeaders;
|
import com.aliyun.dingtalkworkflow_1_0.models.StartProcessInstanceRequest;
|
import com.aliyun.dingtalkworkflow_1_0.models.StartProcessInstanceResponse;
|
import com.aliyun.tea.TeaException;
|
import com.aliyun.teaopenapi.models.Config;
|
import com.aliyun.teautil.Common;
|
import com.aliyun.teautil.models.RuntimeOptions;
|
import com.dingtalk.api.DefaultDingTalkClient;
|
import com.dingtalk.api.DingTalkClient;
|
import com.dingtalk.api.request.*;
|
import com.dingtalk.api.response.*;
|
import com.taobao.api.ApiException;
|
import doumeemes.core.utils.Constants;
|
import doumeemes.core.utils.DateUtil;
|
import doumeemes.dao.business.model.BackOrderDetail;
|
import doumeemes.dao.business.model.Backorder;
|
import doumeemes.dao.business.model.CompanyUser;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
|
public class DingDingUtil {
|
//{"app_key":"dingn6zwdmiy5a9ur1rw","app_secret":"txf8odwb5Hga4E96EnniLtJSwaZSCq7R93ZRDTLhPj7pnmsc9dUr7P7FyZrxYobt","agentid":"1653751134"}
|
public static void main(String[] args) throws Exception {
|
// System.out.println(getInnerAppTokenNew("dingn6zwdmiy5a9ur1rw","txf8odwb5Hga4E96EnniLtJSwaZSCq7R93ZRDTLhPj7pnmsc9dUr7P7FyZrxYobt"));
|
// System.out.println(getInnerAppToken("dingn6zwdmiy5a9ur1rw","txf8odwb5Hga4E96EnniLtJSwaZSCq7R93ZRDTLhPj7pnmsc9dUr7P7FyZrxYobt"));
|
System.out.println(getJsTicketNew("39d76cacbd72335d82c3e3d735e247a4"));
|
}
|
/**
|
* 使用 Token 初始化账号Client
|
* @return Client
|
* @throws Exception
|
*/
|
public static Client createClient() throws Exception {
|
Config config = new Config();
|
config.protocol = "https";
|
config.regionId = "central";
|
return new Client(config);
|
}
|
|
/**
|
* 创建代办
|
* @param token
|
* @param createTodoTaskRequest
|
* @return
|
* @throws Exception
|
*/
|
public static boolean createTodoTask(String token, CreateTodoTaskRequest createTodoTaskRequest) throws Exception {
|
Config config = new Config();
|
config.protocol = "https";
|
config.regionId = "central";
|
com.aliyun.dingtalktodo_1_0.Client client = new com.aliyun.dingtalktodo_1_0.Client(config);
|
CreateTodoTaskHeaders createTodoTaskHeaders = new CreateTodoTaskHeaders();
|
createTodoTaskHeaders.xAcsDingtalkAccessToken = token;
|
try {
|
client.createTodoTaskWithOptions("", createTodoTaskRequest, createTodoTaskHeaders, new RuntimeOptions());
|
return true;
|
} catch (TeaException err) {
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
} catch (Exception _err) {
|
TeaException err = new TeaException(_err.getMessage(), _err);
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
}
|
return false;
|
}
|
/**
|
* 更新代办执行者状态
|
* @param token
|
* @param updateTodoTaskExecutorStatusRequest
|
* @return
|
* @throws Exception
|
*/
|
public static boolean updateTodoTaskStatus(String token, UpdateTodoTaskExecutorStatusRequest updateTodoTaskExecutorStatusRequest) throws Exception {
|
Config config = new Config();
|
config.protocol = "https";
|
config.regionId = "central";
|
com.aliyun.dingtalktodo_1_0.Client client = new com.aliyun.dingtalktodo_1_0.Client(config);
|
UpdateTodoTaskExecutorStatusHeaders updateTodoTaskExecutorStatusHeaders = new UpdateTodoTaskExecutorStatusHeaders();
|
updateTodoTaskExecutorStatusHeaders.xAcsDingtalkAccessToken = token;
|
try {
|
client.updateTodoTaskExecutorStatusWithOptions("", "", updateTodoTaskExecutorStatusRequest, updateTodoTaskExecutorStatusHeaders, new RuntimeOptions());
|
return true;
|
} catch (TeaException err) {
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
} catch (Exception _err) {
|
TeaException err = new TeaException(_err.getMessage(), _err);
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
}
|
return false;
|
}
|
/**
|
* 更新待办任务
|
* @param token
|
* @param updateTodoTaskRequest
|
* @return
|
* @throws Exception
|
*/
|
public static boolean updateTodoTaskInfo(String token, UpdateTodoTaskRequest updateTodoTaskRequest) throws Exception {
|
Config config = new Config();
|
config.protocol = "https";
|
config.regionId = "central";
|
com.aliyun.dingtalktodo_1_0.Client client = new com.aliyun.dingtalktodo_1_0.Client(config);
|
UpdateTodoTaskHeaders updateTodoTaskHeaders = new UpdateTodoTaskHeaders();
|
updateTodoTaskHeaders.xAcsDingtalkAccessToken = token;
|
try {
|
client.updateTodoTaskWithOptions("", "", updateTodoTaskRequest, updateTodoTaskHeaders, new RuntimeOptions());
|
return true;
|
} catch (TeaException err) {
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
} catch (Exception _err) {
|
TeaException err = new TeaException(_err.getMessage(), _err);
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
}
|
return false;
|
}
|
/**
|
* 更新待办任务
|
* @param token
|
* @param deleteTodoTaskRequest
|
* @return
|
* @throws Exception
|
*/
|
public static boolean deleteTodoTask(String token, DeleteTodoTaskRequest deleteTodoTaskRequest) throws Exception {
|
Config config = new Config();
|
config.protocol = "https";
|
config.regionId = "central";
|
com.aliyun.dingtalktodo_1_0.Client client = new com.aliyun.dingtalktodo_1_0.Client(config);
|
DeleteTodoTaskHeaders deleteTodoTaskHeaders = new DeleteTodoTaskHeaders();
|
deleteTodoTaskHeaders.xAcsDingtalkAccessToken = token;
|
try {
|
client.deleteTodoTaskWithOptions("", "", deleteTodoTaskRequest, deleteTodoTaskHeaders, new RuntimeOptions());
|
return true;
|
} catch (TeaException err) {
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
} catch (Exception _err) {
|
TeaException err = new TeaException(_err.getMessage(), _err);
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
}
|
return false;
|
}
|
public static String getInnerAppTokenNew(String appKey,String appSecret) throws Exception {
|
Client client = createClient();
|
GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest()
|
.setAppKey(appKey)
|
.setAppSecret(appSecret);
|
try {
|
GetAccessTokenResponse response = client.getAccessToken(getAccessTokenRequest);
|
if(response!=null && response.getBody()!=null){
|
return response.getBody().getAccessToken();
|
}
|
} catch (TeaException err) {
|
if (!Common.empty(err.code) && ! Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
} catch (Exception _err) {
|
TeaException err = new TeaException(_err.getMessage(), _err);
|
if (! Common.empty(err.code) && ! Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
}
|
return null;
|
}
|
public static String getInnerAppToken(String appKey,String appSecret){
|
try {
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
|
OapiGettokenRequest req = new OapiGettokenRequest();
|
req.setAppkey(appKey);
|
req.setAppsecret(appSecret);
|
req.setHttpMethod("GET");
|
OapiGettokenResponse rsp = client.execute(req);
|
System.out.println(rsp.getBody());
|
return rsp.getBody();
|
} catch (ApiException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
public static String getJsTicketNew(String token) throws Exception{
|
Client client = createClient();
|
CreateJsapiTicketHeaders createJsapiTicketHeaders = new CreateJsapiTicketHeaders();
|
createJsapiTicketHeaders.xAcsDingtalkAccessToken = token;
|
try {
|
CreateJsapiTicketResponse response = client.createJsapiTicketWithOptions(createJsapiTicketHeaders, new RuntimeOptions());
|
if(response!=null && response.getBody()!=null){
|
return response.getBody().getJsapiTicket();
|
}
|
} catch (TeaException err) {
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
} catch (Exception _err) {
|
TeaException err = new TeaException(_err.getMessage(), _err);
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
}
|
return null;
|
}
|
public static String sendActionCardNotice(String token,Long agentId,String userIds,String url,String title, String content) throws Exception{
|
try {
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
|
OapiMessageCorpconversationAsyncsendV2Request req = new OapiMessageCorpconversationAsyncsendV2Request();
|
req.setAgentId(agentId);
|
req.setUseridList(userIds);
|
req.setToAllUser(false);
|
OapiMessageCorpconversationAsyncsendV2Request.Msg obj1 = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
|
obj1.setMsgtype("action_card");
|
OapiMessageCorpconversationAsyncsendV2Request.Markdown obj5 = new OapiMessageCorpconversationAsyncsendV2Request.Markdown();
|
obj5.setTitle(title);
|
obj5.setText(content);
|
OapiMessageCorpconversationAsyncsendV2Request.ActionCard obj6 = new OapiMessageCorpconversationAsyncsendV2Request.ActionCard();
|
obj6.setSingleUrl(url);
|
obj6.setSingleTitle("查看详情");
|
obj6.setTitle(title);
|
obj6.setMarkdown(title+"\n# "+content);
|
obj1.setActionCard(obj6);
|
req.setMsg(obj1);
|
OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(req, token);
|
System.out.println(rsp.getBody());
|
return rsp.getBody();
|
} catch (ApiException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
/**
|
* 通过免登码获取用户userid(
|
* @param token
|
* @param code
|
* @return
|
* @throws Exception
|
*/
|
public static CompanyUser getUserInfoByCode(String token,String code) throws Exception{
|
try {
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo");
|
OapiV2UserGetuserinfoRequest req = new OapiV2UserGetuserinfoRequest();
|
req.setCode(code);
|
OapiV2UserGetuserinfoResponse rsp = client.execute(req, token);
|
JSONObject json =JSONObject.parseObject(rsp.getBody());
|
System.out.println(rsp.getBody());
|
CompanyUser user = new CompanyUser();
|
user.setDdUserid(json.getJSONObject("result").getString("userid"));
|
user.setDdUnionid(json.getJSONObject("result").getString("unionid"));
|
return user;
|
} catch (ApiException e) {
|
e.printStackTrace();
|
}catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
/**
|
* 通过userid获取用户手机号信息
|
* @param token
|
* @param userId
|
* @return
|
* @throws Exception
|
*/
|
public static String getUserMobileByUserId(String token,String userId) throws Exception{
|
try {
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
|
OapiV2UserGetRequest req = new OapiV2UserGetRequest();
|
req.setUserid(userId);
|
OapiV2UserGetResponse rsp = client.execute(req, token);
|
System.out.println(rsp.getBody());
|
JSONObject json =JSONObject.parseObject(rsp.getBody());
|
return json.getJSONObject("result").getString("mobile");
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return null;
|
}
|
/**
|
* 通过授权code获取用户手机号信息
|
* @param token
|
* @param code
|
* @return
|
* @throws Exception
|
*/
|
public static String getUserMobileByCode(String token, String code) throws Exception{
|
CompanyUser user = getUserInfoByCode(token,code);
|
return getUserMobileByUserId(token,user.getDdUserid()) ;
|
}
|
public static String getJsTicket(){
|
try {
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/get_jsapi_ticket");
|
OapiGetJsapiTicketRequest req = new OapiGetJsapiTicketRequest();
|
req.setHttpMethod("GET");
|
OapiGetJsapiTicketResponse rsp = client.execute(req, "");
|
System.out.println(rsp.getBody());
|
return rsp.getBody();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 自有OA审批
|
*/
|
public static String createJobTmpl(String token,Long agentId ) {
|
try {
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/process/save");
|
OapiProcessSaveRequest req = new OapiProcessSaveRequest();
|
OapiProcessSaveRequest.SaveProcessRequest obj1 = new OapiProcessSaveRequest.SaveProcessRequest();
|
obj1.setAgentid(agentId);
|
// obj1.setProcessCode(proCode);
|
obj1.setName("不良品返工审批模板");
|
List<OapiProcessSaveRequest.FormComponentVo> list3 = new ArrayList<>();
|
OapiProcessSaveRequest.FormComponentVo obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextField");
|
OapiProcessSaveRequest.FormComponentPropVo obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextField_code");
|
obj5.setLabel("申请编码");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("DDDateField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("DDDateField_date");
|
obj5.setLabel("申请日期");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextField_type");
|
obj5.setLabel("申请类型");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextField_info");
|
obj5.setLabel("产品信息");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextField_pro");
|
obj5.setLabel("产生工序");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextField_back");
|
obj5.setLabel("返工工序");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextareaField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextareaField_reason");
|
obj5.setLabel("不良原因");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextField_user");
|
obj5.setLabel("申请人");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj4 = new OapiProcessSaveRequest.FormComponentVo();
|
obj4.setComponentName("TextareaField");
|
obj5 = new OapiProcessSaveRequest.FormComponentPropVo();
|
obj5.setId("TextareaField_list");
|
obj5.setLabel("返工工装清单");
|
obj4.setProps(obj5);
|
list3.add(obj4);
|
|
obj1.setFormComponentList(list3);
|
req.setSaveProcessRequest(obj1);
|
OapiProcessSaveResponse rsp = client.execute(req, token);
|
System.out.println(rsp.getBody());
|
JSONObject json =JSONObject.parseObject(rsp.getBody());
|
return json.getJSONObject("result").getString("process_code");
|
} catch (ApiException e) {
|
e.printStackTrace();
|
}
|
|
return null;
|
}
|
|
/**
|
* 官方OA发起审批实例
|
* @param token
|
* @throws Exception
|
*/
|
public static String startProcessInstance(String token, String userid, String processCode, Backorder model) throws Exception {
|
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
|
OapiProcessinstanceCreateRequest req = new OapiProcessinstanceCreateRequest();
|
req.setProcessCode(processCode);
|
req.setOriginatorUserId(userid);
|
req.setDeptId(1L);
|
List<OapiProcessinstanceCreateRequest.FormComponentValueVo> list2 = new ArrayList<OapiProcessinstanceCreateRequest.FormComponentValueVo>();
|
OapiProcessinstanceCreateRequest.FormComponentValueVo obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3.setName("申请编码");
|
obj3.setValue(model.getCode());
|
list2.add(obj3);
|
|
String temp = "";
|
if(model.getDetailList()!=null){
|
for(BackOrderDetail d : model.getDetailList()){
|
if(Constants.equalsInteger(d.getUnitData(),Constants.ONE)){
|
temp+=d.getApplianceCode() +" "+Constants.formatBigdecimal4Float(d.getNum()) +d.getUnitName()+"\n";
|
// temp+="物料信息:"+d.getMaterialName() +" | "+Constants.formatBigdecimal4Float(d.getNum()) +d.getUnitName()+"\n";
|
temp+="物料信息:"+d.getMaterialName() +" | "+d.getMaterialCode()+"\n";
|
}else{
|
temp+=d.getApplianceCode() +" "+Constants.formatBigdecimal(d.getNum()).intValue()+d.getUnitName()+"\n";
|
// temp+="物料信息:"+d.getMaterialName() +" | "+Constants.formatBigdecimal(d.getNum()).intValue()+d.getUnitName()+"\n";
|
temp+="物料信息:"+d.getMaterialName() +" | "+d.getMaterialCode()+"\n";
|
}
|
temp+="批 次 号:"+d.getBatch() +"\n";
|
temp+="生产工序:"+d.getProcedureName() +"\n\n";
|
}
|
}
|
if(Constants.equalsInteger(model.getType(),Constants.BACKORDER_TYPE.scrap)){
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("入库仓库");
|
obj3 .setValue(model.getWarehouseName());
|
list2.add(obj3);
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("出库仓库");
|
obj3 .setValue(model.getWarehouseOutName());
|
list2.add(obj3);
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("报废原因");
|
obj3 .setValue(model.getContent());
|
list2.add(obj3);
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("报废工装清单");
|
obj3 .setValue(temp);
|
list2.add(obj3);
|
|
}else{
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("申请类型");
|
obj3 .setValue(Constants.BACKORDER_TYPE.getTitleByType(model.getType()));
|
list2.add(obj3);
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("返工返修工序");
|
obj3 .setValue(model.getBackProcedureName());
|
list2.add(obj3);
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("预计生产日期");
|
obj3 .setValue(DateUtil.getShortTime(model.getPlanDate()));
|
list2.add(obj3);
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("返工返修原因");
|
obj3 .setValue(model.getContent());
|
list2.add(obj3);
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("返工工装清单");
|
obj3 .setValue(temp);
|
list2.add(obj3);
|
|
}
|
|
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("当前工厂");
|
obj3 .setValue(model.getOrgName());
|
list2.add(obj3);
|
|
obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
obj3 .setName("申请人");
|
obj3 .setValue(model.getCreateUserName());
|
list2.add(obj3);
|
|
req.setFormComponentValues(list2);
|
OapiProcessinstanceCreateResponse rsp = client.execute(req, token);
|
if(rsp.getErrcode() == 0){
|
return rsp.getProcessInstanceId();
|
}
|
|
|
|
return null;
|
|
|
}
|
/**
|
* 官方OA发起审批实例
|
* @param token
|
* @throws Exception
|
*/
|
public static String startProcessInstanceOld(String token, String userid, String processCode, Backorder model) throws Exception {
|
Config config = new Config();
|
config.protocol = "https";
|
config.regionId = "central";
|
com.aliyun.dingtalkworkflow_1_0.Client client = new com.aliyun.dingtalkworkflow_1_0.Client(config);
|
StartProcessInstanceHeaders startProcessInstanceHeaders = new StartProcessInstanceHeaders();
|
startProcessInstanceHeaders.xAcsDingtalkAccessToken = token;
|
List<StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues > formList = new ArrayList<>();
|
|
StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("申请编码")
|
.setValue(model.getCode());
|
StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("申请编码")
|
.setValue(model.getCode())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
String temp = "";
|
if(model.getDetailList()!=null){
|
for(BackOrderDetail d : model.getDetailList()){
|
temp+=d.getApplianceCode() +" "+d.getNum()+d.getUnitName()+"\n";
|
temp+="物料信息:"+d.getMaterialName() +" | "+d.getNum()+d.getUnitName()+"\n";
|
temp+="批 次 号:"+d.getBatch() +"\n";
|
temp+="生产工序:"+d.getProcedureName() +"\n\n";
|
}
|
}
|
if(Constants.equalsInteger(model.getType(),Constants.BACKORDER_TYPE.scrap)){
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("出库仓库")
|
.setValue(model.getWarehouseOutName());
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("出库仓库")
|
.setValue(model.getWarehouseOutName())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("入库仓库")
|
.setValue(model.getWarehouseName());
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("入库仓库")
|
.setValue(model.getWarehouseName())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("报废原因")
|
.setValue(model.getContent());
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("报废原因")
|
.setValue(model.getContent())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("报废工装清单")
|
.setValue(temp);
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("报废工装清单")
|
.setValue(temp)
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
}else{
|
/* details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("申请日期")
|
.setValue(DateUtil.getShortTime(model.getCreateTime()));
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("申请日期")
|
.setValue(DateUtil.getShortTime(model.getCreateTime()))
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);*/
|
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("申请类型")
|
.setValue(Constants.BACKORDER_TYPE.getTitleByType(model.getType()));
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("申请类型")
|
.setValue(Constants.BACKORDER_TYPE.getTitleByType(model.getType()))
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("返工返修工序")
|
.setValue(model.getBackProcedureName());
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("返工返修工序")
|
.setValue(model.getBackProcedureName())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("预计生产日期")
|
.setValue(DateUtil.getShortTime(model.getPlanDate()));
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("预计生产日期")
|
.setValue(DateUtil.getShortTime(model.getPlanDate()))
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("返工返修原因")
|
.setValue(model.getContent());
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("返工返修原因")
|
.setValue(model.getContent())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("返工工装清单")
|
.setValue(temp);
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("返工工装清单")
|
.setValue(temp)
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
}
|
|
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("当前工厂")
|
.setValue(model.getOrgName());
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("当前工厂")
|
.setValue(model.getOrgName())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
details =
|
new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValuesDetails()
|
.setName("申请人")
|
.setValue(model.getCreateUserName());
|
formComponentValues0 = new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues()
|
.setName("申请人")
|
.setValue(model.getCreateUserName())
|
.setDetails(Arrays.asList(details));
|
formList.add(formComponentValues0);
|
|
StartProcessInstanceRequest.StartProcessInstanceRequestApprovers approvers0 = new StartProcessInstanceRequest.StartProcessInstanceRequestApprovers()
|
.setActionType("NONE")
|
.setUserIds(java.util.Arrays.asList(
|
userid
|
));
|
StartProcessInstanceRequest startProcessInstanceRequest = new StartProcessInstanceRequest()
|
.setOriginatorUserId(userid)
|
.setProcessCode(processCode)
|
.setFormComponentValues(formList);
|
// .setApprovers(Arrays.asList(approvers0));
|
|
|
try {
|
StartProcessInstanceResponse response = client.startProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions());
|
return response.getBody().getInstanceId();
|
} catch (TeaException err) {
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
} catch (Exception _err) {
|
TeaException err = new TeaException(_err.getMessage(), _err);
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
}
|
|
}
|
return null;
|
}
|
/**
|
* 官方OA发起审批实例
|
* @param token
|
* @throws Exception
|
* @return
|
*/
|
public static List<OapiProcessinstanceGetResponse.OperationRecordsVo> getProcessInstance(String token, String instanceid ) throws Exception {
|
try {
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
|
OapiProcessinstanceGetRequest req = new OapiProcessinstanceGetRequest();
|
req.setProcessInstanceId(instanceid);
|
OapiProcessinstanceGetResponse rsp = client.execute(req, token);
|
System.out.println(rsp.getBody());
|
if(rsp.getErrcode().compareTo(0l) ==0 && rsp.getProcessInstance()!=null){
|
return rsp.getProcessInstance().getOperationRecords();
|
}
|
} catch (ApiException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
}
|