前情回顾
记一些钉钉开发大坑,官网关于钉钉开发发起审批部分更新了!!!
总体说是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的组件思想,直接就可以传上来了,不需要做封装的。剩下就是后台做处理就好了。