前情回顧
記一些釘釘開發大坑,官網關于釘釘開發發起審批部分更新了!!!
總體說是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的元件思想,直接就可以傳上來了,不需要做封裝的。剩下就是背景做處理就好了。