天天看點

釘釘開發之發起審批部分更新

前情回顧

記一些釘釘開發大坑,官網關于釘釘開發發起審批部分更新了!!!

總體說是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的元件思想,直接就可以傳上來了,不需要做封裝的。剩下就是背景做處理就好了。