欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

钉钉开发之发起审批部分更新

程序员文章站 2024-03-13 12:44:51
...

记一些钉钉开发大坑,官网关于钉钉开发发起审批部分更新了!!!
总体说是API更加全面了,也有其他语言版本的DEMO提供出来
不过我没看过,也不记得链接了,你们可以当我吹B

这部是补充一些开发关于:发起审批部分的坑
补一个新更新的链接,这个链接更加详细的讲述了value对应的格式要长成什么样子
如果你有点基础应该挺好理解的。新发起审批链接

补充的内容时:日期和明细类型

一.日期类型

钉钉开发之发起审批部分更新

审批模板设置
钉钉开发之发起审批部分更新
新建一个日期类型,会默认勾选下面那个日期类型。
那么你在后台设置该日期类型的value时候就必须对应是‘yyyy-mm-dd’
这里有个大坑:上面那个选项是‘年-月-日 时:分’这个是没有秒的
那么你在后台设置该日期类型的value时候就必须对应是“yyyy-mm-dd hh:mm”
千万不要习惯性加上秒!

上代码:

			if (purchaseManagement.getExpecteddate()!=null&&purchaseManagement.getExpecteddate().toString()!="") {
				OapiProcessinstanceCreateRequest.FormComponentValueVo vo = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
				vo.setName("期望交付日期");
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
				String dealTime=sdf.format(purchaseManagement.getExpecteddate());
				vo.setValue(dealTime);
				formComponentValues.add(vo);
			}

二.明细类型

钉钉开发之发起审批部分更新
看到这个第一反应是有点像json,这里用JSON得思想去处理是最快的。
不懂的小伙伴在这里解释一下。
他这个格式其实就是用一个 list里面装N个list:list1,list2,,,,listN
前者这个最大的list其实就是一个明细类型。setName的时候就是审批模板的标题,setvalue的时候就是后面N个list处理过之后的数据;
后者这些list一个就代表一个明细对象,相对应填写的就是一个明细里面的信息。
先上审批模板部分
钉钉开发之发起审批部分更新
这个在实际审批当中是可以无限添加明细的。所以相对应的前端会比较难做一点。我用的vue的组件思路去实现无限增加,和取值的。在这个功能方面,VUE非常强大。

当然我说了你们可能也不懂,没关系。直接复制代码改一下就可以了
上代码(对应上述审批模板):

//表单明细:采购明细
			if (purchaseDetaileds.size()!=0) {
				//新建一个vo对象存储整个表单明细
				OapiProcessinstanceCreateRequest.FormComponentValueVo vo = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
				vo.setName("采购明细");
				//转格式:	[    [{"name":xx,"value":xx},{"name":xx,"value":xx}],[{"name":xx,"value":xx},{"name":xx,"value":xx}]      ]
				List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> list=new  ArrayList<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>>();
				for (int i = 0; i < purchaseDetaileds.size(); i++) {
					List<OapiProcessinstanceCreateRequest.FormComponentValueVo> detailList=new  ArrayList<OapiProcessinstanceCreateRequest.FormComponentValueVo>();
					OapiProcessinstanceCreateRequest.FormComponentValueVo detail1 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
					detail1.setName("名称");
					detail1.setValue(purchaseDetaileds.get(i).getGoodsname());
					detailList.add(detail1);
					
					OapiProcessinstanceCreateRequest.FormComponentValueVo detail2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
					detail2.setName("数量");
					detail2.setValue(purchaseDetaileds.get(i).getNumber().toString());
					detailList.add(detail2);
					
					OapiProcessinstanceCreateRequest.FormComponentValueVo detail3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
					detail3.setName("单位");
					detail3.setValue(purchaseDetaileds.get(i).getUnit());
					detailList.add(detail3);
					
					OapiProcessinstanceCreateRequest.FormComponentValueVo detail4 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
					detail4.setName("单价(元)");
					detail4.setValue(purchaseDetaileds.get(i).getPrice().toString());
					detailList.add(detail4);
					
					OapiProcessinstanceCreateRequest.FormComponentValueVo detail5 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
					detail5.setName("总金额(元)");
					detail5.setValue(purchaseDetaileds.get(i).getTotalprice().toString());
					detailList.add(detail5);
					
					if (purchaseDetaileds.get(i).getSpecs()!=null&&purchaseDetaileds.get(i).getSpecs()!="") {
						OapiProcessinstanceCreateRequest.FormComponentValueVo detail6 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
						detail6.setName("规格");
						detail6.setValue(purchaseManagement.getRemarks());
						detailList.add(detail6);
					}
					list.add(detailList);
				}
				String value=JSON.toJSONString(list);
				vo.setValue(value);
				formComponentValues.add(vo);
			}

purchaseDetaileds对象存储的是前端传过来的list<purchaseDetail>数组对象。因为vue的组件思想,直接就可以传上来了,不需要做封装的。剩下就是后台做处理就好了。