|
@@ -1,25 +1,40 @@
|
|
|
package net.chenlin.dp.modules.api.service;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.dingtalk.api.DefaultDingTalkClient;
|
|
|
+import com.dingtalk.api.DingTalkClient;
|
|
|
+import com.dingtalk.api.request.OapiGettokenRequest;
|
|
|
+import com.dingtalk.api.request.OapiProcessinstanceCreateRequest;
|
|
|
+import com.dingtalk.api.response.OapiGettokenResponse;
|
|
|
+import com.dingtalk.api.response.OapiProcessinstanceCreateResponse;
|
|
|
import com.mysql.cj.util.StringUtils;
|
|
|
+import com.taobao.api.ApiException;
|
|
|
import net.chenlin.dp.common.openapi4j.examples.voucher.VoucherAdd;
|
|
|
import net.chenlin.dp.common.openapi4j.exception.OpenAPIException;
|
|
|
import net.chenlin.dp.common.openapi4j.service.PersonService;
|
|
|
import net.chenlin.dp.common.openapi4j.util.PropUtil;
|
|
|
+import net.chenlin.dp.common.utils.JSONUtils;
|
|
|
import net.chenlin.dp.common.utils.SpringContextUtils;
|
|
|
import net.chenlin.dp.modules.api.controller.DingdingOpenInterface;
|
|
|
import net.chenlin.dp.modules.sys.entity.SyViewEntity;
|
|
|
-import net.chenlin.dp.modules.sys.service.SysUserService;
|
|
|
import net.chenlin.dp.modules.sys.service.testU8Service;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import net.sf.json.JSONArray;
|
|
|
+import org.springframework.boot.configurationprocessor.json.JSONException;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
|
|
|
public class ReimbursementService {
|
|
|
|
|
|
private testU8Service u8Service= SpringContextUtils.getBean("testU8Service",testU8Service.class);
|
|
|
+ public static String gettoken = "";
|
|
|
|
|
|
- public void autoReimbursement() throws Exception {
|
|
|
+ /**
|
|
|
+ * (不再使用)
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public static void autoReimbursement() throws Exception {
|
|
|
|
|
|
DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
|
|
|
Properties prop = PropUtil.getProperties("/config.properties");
|
|
@@ -31,26 +46,29 @@ public class ReimbursementService {
|
|
|
String account_code = ""; //科目编码
|
|
|
String type = ""; //数据源账套 1昆山,3潍坊
|
|
|
|
|
|
- List<SyViewEntity> listId = u8Service.selectView("报销单");
|
|
|
+// List<SyViewEntity> listId = u8Service.selectView("报销单");
|
|
|
|
|
|
if(list.size() > 0){
|
|
|
outCycle:for(String o:list){
|
|
|
|
|
|
- if(listId.size() > 0){
|
|
|
- for(SyViewEntity en:listId){
|
|
|
- if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
|
|
|
- continue outCycle;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+// if(listId.size() > 0){
|
|
|
+// for(SyViewEntity en:listId){
|
|
|
+// if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
|
|
|
+// continue outCycle;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
-// Map<String,Object> map = dingdingOpenInterface.getOrderDetails("90325515-a5a5-4af8-abf9-2d4ef1eb7c23");
|
|
|
- Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);
|
|
|
+ Map<String,Object> map = dingdingOpenInterface.getOrderDetails("01dc1264-85ab-41a5-8e15-a0905268e1b3");
|
|
|
+// Map<String,Object> map = dingdingOpenInterface.getOrderDetails("435bfa21-2366-43e3-b71a-041485d51a31");
|
|
|
+// Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);
|
|
|
if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
|
|
|
continue;
|
|
|
}
|
|
|
// System.out.println(map);
|
|
|
Map<String,Object> map1 = tableToMap2(map);
|
|
|
+ // System.out.println(map1);
|
|
|
+
|
|
|
Map<String,Object> mapPerson = dingdingOpenInterface.getViewByUserId(map.get("originator_userid").toString());
|
|
|
|
|
|
if(mapPerson !=null ){
|
|
@@ -102,7 +120,7 @@ public class ReimbursementService {
|
|
|
// System.out.println("============================差旅报销"+account_code);
|
|
|
// System.out.println(map1);
|
|
|
try {
|
|
|
- mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"差旅",type);
|
|
|
+// mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"差旅",type);
|
|
|
}catch (Exception e){
|
|
|
mess = e.getMessage();
|
|
|
}
|
|
@@ -123,7 +141,7 @@ public class ReimbursementService {
|
|
|
// System.out.println(map1);
|
|
|
// System.out.println("============================私车公用报销"+account_code);
|
|
|
try {
|
|
|
- mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"私车公用",type);
|
|
|
+// mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"私车公用",type);
|
|
|
}catch (Exception e){
|
|
|
mess = e.getMessage();
|
|
|
}
|
|
@@ -158,7 +176,7 @@ public class ReimbursementService {
|
|
|
entity.setTableType("报销单");
|
|
|
entity.setSyMessage(mess);
|
|
|
try {
|
|
|
- u8Service.saveSyView(entity);
|
|
|
+// u8Service.saveSyView(entity);
|
|
|
}catch (Exception e){
|
|
|
System.out.println("异常1");
|
|
|
}
|
|
@@ -170,12 +188,856 @@ public class ReimbursementService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- public static Map<String,Object> tableToMap2(Map<String,Object> map1){
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步银行回单至u8凭证
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public void autoReimbursementNew() throws Exception {
|
|
|
+
|
|
|
+ DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
|
|
|
+ Properties prop = PropUtil.getProperties("/config.properties");
|
|
|
+ String PROC = prop.getProperty("yhhd_process_code");
|
|
|
+// List<String> list = dingdingOpenInterface.getOrderIdList(PROC);
|
|
|
+// List<String> list = dingdingOpenInterface.getOrderIdList2("PROC-C1EBBC4A-AA0D-4101-BEE8-8BFA5FEFABD8",-5);
|
|
|
+ List<String> list = dingdingOpenInterface.getOrderIdList2(PROC,-31);
|
|
|
+// System.out.println(list);
|
|
|
+ String job_number = "";//工号
|
|
|
+ String work_place = "";//办公地(潍坊对03账套 昆山对01账套)
|
|
|
+ String dept_code = ""; //部门编码
|
|
|
+ String type = ""; //数据源账套 1昆山,3潍坊
|
|
|
+// List<SyViewEntity> listId = u8Service.selectView("银行凭证至U8");
|
|
|
+ if(list.size() > 0){
|
|
|
+ outCycle:for(String o:list){
|
|
|
+
|
|
|
+// if(listId.size() > 0){
|
|
|
+// for(SyViewEntity en:listId){
|
|
|
+// if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
|
|
|
+// continue outCycle;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// Map<String,Object> map = dingdingOpenInterface.getOrderDetails("24715cdf-4389-44b3-a634-5c30871a095b");//
|
|
|
+ Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);//
|
|
|
+
|
|
|
+ if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,Object> map1 = tableToMap4(map);
|
|
|
+
|
|
|
+ Map<String,Object> mapPerson = dingdingOpenInterface.getViewByUserId((String) map1.get("申请人编码"));
|
|
|
+
|
|
|
+ if(mapPerson !=null ){
|
|
|
+ job_number = mapPerson.get("job_number").toString();//"CHK2019002";
|
|
|
+ work_place = mapPerson.get("work_place").toString();
|
|
|
+ if(StringUtils.isNullOrEmpty(work_place)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (work_place.equals("昆山")){
|
|
|
+ dept_code = getPerson(job_number,"1");
|
|
|
+ type = "1";
|
|
|
+ }else if(work_place.equals("潍坊")){
|
|
|
+ dept_code = getPerson(job_number,"3");
|
|
|
+ type = "3";
|
|
|
+ }else{
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(map1.get("申请人所属部门") == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //如果是以下部门,则需要填写项目大类和项目名称
|
|
|
+ if(map1.get("申请人所属部门").toString().equals("营销设计中心-设计部") ||
|
|
|
+ map1.get("申请人所属部门").toString().equals("营销设计中心-项目部") ||
|
|
|
+ map1.get("申请人所属部门").toString().equals("营销设计中心-市场部")){
|
|
|
+
|
|
|
+ map1.put("item_class","00");//项目大类 --研发项目
|
|
|
+ map1.put("item_id","YFYYYY00001");//项目名称 --项目研发-公共
|
|
|
+ }
|
|
|
+
|
|
|
+ if(map1.get("单据类型") == null){//备用金申请、报销申请
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String mess = null;
|
|
|
+
|
|
|
+ map1.put("dept_code",dept_code);//部门编码
|
|
|
+ map1.put("job_number",job_number);//人员编码
|
|
|
+
|
|
|
+ SyViewEntity entity = new SyViewEntity();
|
|
|
+ entity.setOaId(o);
|
|
|
+ entity.setDeptName(map1.get("申请人所属部门").toString());
|
|
|
+ entity.setJobNumber(job_number);
|
|
|
+ entity.setTableType("银行凭证至U8");
|
|
|
+
|
|
|
+ if(map1.get("单据类型").toString().equals("备用金申请")){
|
|
|
+ entity.setParType("备用金至U8凭证");
|
|
|
+ map1.put("account_code_jf","122102");//科目编码(借方)
|
|
|
+ map1.put("account_code_df","10020101");//科目编码(贷方)
|
|
|
+
|
|
|
+ JSONArray jsonArray2 = JSONArray.fromObject(map1.get("备用金申请").toString());
|
|
|
+ if(jsonArray2.size() == 0){
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray2.getJSONObject(0);
|
|
|
+ map1.put("abstract",object1.get("申请事由"));
|
|
|
+ map1.put("naturalCurrency",object1.get("申请金额"));
|
|
|
+
|
|
|
+ try {
|
|
|
+ mess = VoucherAdd.addVoucher(map1,map.get("business_id").toString()+"备用金",type);
|
|
|
+ }catch (Exception e){
|
|
|
+ mess = e.getMessage();
|
|
|
+ }
|
|
|
+// System.out.println(mess);
|
|
|
+
|
|
|
+ }else if(map1.get("单据类型").toString().equals("报销申请")){
|
|
|
+ entity.setParType("报销申请至U8");
|
|
|
+ try {
|
|
|
+ mess = VoucherAdd.addVoucherNew(map1,map.get("business_id").toString()+"报销申请",type);
|
|
|
+ }catch (Exception e){
|
|
|
+ mess = e.getMessage();
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ entity.setSyMessage(mess);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步报销单至银行凭证
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public void autoOABankReceipt() throws Exception {
|
|
|
+
|
|
|
+ DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
|
|
|
+ Properties prop = PropUtil.getProperties("/config.properties");
|
|
|
+ String PROC = prop.getProperty("bx_process_code");//报销单
|
|
|
+ String YHHD = prop.getProperty("yhhd_process_code");//银行回单
|
|
|
+ String agentid = prop.getProperty("agentid");
|
|
|
+ String deptid = prop.getProperty("deptid");
|
|
|
+ String userid = prop.getProperty("userid");
|
|
|
+ List<String> list = dingdingOpenInterface.getOrderIdList2(PROC,-7);
|
|
|
+// List<String> list = dingdingOpenInterface.getOrderIdList("PROC-DD8FF68E-B90E-4885-8C17-F69E53BE5C81");
|
|
|
+ System.out.println("报销申请:"+list);
|
|
|
+ List<SyViewEntity> listIdError = u8Service.selectViewByError("报销单至银行凭证");
|
|
|
+ List<SyViewEntity> listIdTrue = u8Service.selectViewByTrue("报销单至银行凭证");
|
|
|
+
|
|
|
+ if(list.size() > 0){
|
|
|
+ getToken();
|
|
|
+ outCycle:for(String o:list){
|
|
|
+ //获取当日同步失败的单据,控制当日不再同步
|
|
|
+ if(listIdError.size() > 0){
|
|
|
+ for(SyViewEntity en:listIdError){
|
|
|
+ if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
|
|
|
+ continue outCycle;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取10天内同步成功的数据,控制不再同步
|
|
|
+ if(listIdTrue.size() > 0){
|
|
|
+ for(SyViewEntity en:listIdTrue){
|
|
|
+ if(!StringUtils.isNullOrEmpty(en.getOaId()) && en.getOaId().equals(o)){
|
|
|
+ continue outCycle;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// Map<String,Object> map = dingdingOpenInterface.getOrderDetails("e12ca8e8-e783-4652-b68e-e12648ed00c3");
|
|
|
+ Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);
|
|
|
+ if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ SyViewEntity entity = new SyViewEntity();
|
|
|
+ Map<String,Object> newMap = tableToMap2(map);
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
|
|
|
+ OapiProcessinstanceCreateRequest req = new OapiProcessinstanceCreateRequest();
|
|
|
+ req.setAgentId(Long.valueOf(agentid));
|
|
|
+// req.setProcessCode("PROC-C1EBBC4A-AA0D-4101-BEE8-8BFA5FEFABD8");//银行回单TEST
|
|
|
+ req.setProcessCode(YHHD);//银行回单
|
|
|
+ req.setOriginatorUserId(userid);
|
|
|
+ req.setDeptId(Long.valueOf(deptid));
|
|
|
+
|
|
|
+ List<OapiProcessinstanceCreateRequest.FormComponentValueVo> formComponentValueVoList = new ArrayList<OapiProcessinstanceCreateRequest.FormComponentValueVo>();
|
|
|
+
|
|
|
+ //申请人编码
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV5 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ formComponentValueV5.setName("申请人编码");
|
|
|
+ formComponentValueV5.setValue(map.get("originator_userid").toString());
|
|
|
+ formComponentValueVoList.add(formComponentValueV5);
|
|
|
+
|
|
|
+ //申请人名称
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV6 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ formComponentValueV6.setName("申请人");
|
|
|
+ formComponentValueV6.setValue(map.get("title").toString());
|
|
|
+ formComponentValueVoList.add(formComponentValueV6);
|
|
|
+
|
|
|
+ //所属部门
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ formComponentValueV7.setName("申请人所属部门");
|
|
|
+ formComponentValueV7.setValue(map.get("originator_dept_name").toString());
|
|
|
+ formComponentValueVoList.add(formComponentValueV7);
|
|
|
+
|
|
|
+ //单据类型(报销申请、备用金申请)
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV8 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ formComponentValueV8.setName("单据类型");
|
|
|
+ formComponentValueV8.setValue("报销申请");
|
|
|
+ formComponentValueVoList.add(formComponentValueV8);
|
|
|
+
|
|
|
+ //申请时间
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueV9 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ formComponentValueV9.setName("申请时间");//create_time
|
|
|
+ formComponentValueV9.setValue(map.get("create_time").toString());
|
|
|
+ formComponentValueVoList.add(formComponentValueV9);
|
|
|
+
|
|
|
+ //联系人明细
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo1 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item1 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item1.setName("户名");
|
|
|
+ if(newMap.get("户名") == null){
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ Item1.setValue(newMap.get("户名").toString());
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item2.setName("账号");
|
|
|
+ if(newMap.get("账号") != null){
|
|
|
+ Item2.setValue(newMap.get("账号").toString());
|
|
|
+ }else{
|
|
|
+ Item2.setValue("空");
|
|
|
+ }
|
|
|
+
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item3.setName("开户银行");
|
|
|
+ if(newMap.get("开户银行") != null){
|
|
|
+ Item3.setValue(newMap.get("开户银行").toString());
|
|
|
+ }else{
|
|
|
+ Item3.setValue("空");
|
|
|
+ }
|
|
|
+
|
|
|
+ formComponentValueVo1.setName("收款人");
|
|
|
+ formComponentValueVo1.setValue(JSON.toJSONString(Arrays.asList(Arrays.asList(Item1, Item2, Item3))));
|
|
|
+ formComponentValueVoList.add(formComponentValueVo1);
|
|
|
+
|
|
|
+ //差旅报销明细
|
|
|
+ if(newMap.get("差旅报销") != null && JSONArray.fromObject(newMap.get("差旅报销").toString()).size() > 0){
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> viewList2 = new ArrayList<>();
|
|
|
+
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(newMap.get("差旅报销").toString());
|
|
|
+ for (int j = 0; j < jsonArray1.size(); j++) {
|
|
|
+ List<OapiProcessinstanceCreateRequest.FormComponentValueVo> view = new ArrayList<>();
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+
|
|
|
+ if(object1.get("发生日期") != null && object1.get("结束日期") != null && object1.get("发生日期") != "" && object1.get("结束日期") != ""){
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item21 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ jsonArray.add(object1.get("发生日期").toString());
|
|
|
+ jsonArray.add(object1.get("结束日期").toString());
|
|
|
+ Item21.setName("[\"发生日期\",\"结束日期\"]");
|
|
|
+ Item21.setValue(jsonArray.toString());
|
|
|
+// Item21.setValue("[\"2019-02-19\",\"2019-02-25\"]");
|
|
|
+ view.add(Item21);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("报销科目") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item22 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item22.setName("报销科目");
|
|
|
+ Item22.setValue(object1.get("报销科目").toString());
|
|
|
+ view.add(Item22);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("名称") != null && object1.get("名称") != "") {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item23 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item23.setName("名称");
|
|
|
+ Item23.setValue(object1.get("名称").toString());
|
|
|
+ view.add(Item23);
|
|
|
+ }
|
|
|
+ if(object1.get("次数") != null && object1.get("次数") != "") {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item24 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item24.setName("次数");
|
|
|
+ Item24.setValue(object1.get("次数").toString());
|
|
|
+ view.add(Item24);
|
|
|
+ }
|
|
|
+ if(object1.get("未税金额") != null && object1.get("未税金额") != "") {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item25 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item25.setName("未税金额");
|
|
|
+ Item25.setValue(object1.get("未税金额").toString());
|
|
|
+ view.add(Item25);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("税额") != null && object1.get("税额") != "") {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item26 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item26.setName("税额");
|
|
|
+ Item26.setValue(object1.get("税额").toString());
|
|
|
+ view.add(Item26);
|
|
|
+ }
|
|
|
+ if(object1.get("费用说明") != null && object1.get("费用说明") != "") {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item27 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item27.setName("费用说明");
|
|
|
+ Item27.setValue(object1.get("费用说明").toString());
|
|
|
+ view.add(Item27);
|
|
|
+ }
|
|
|
+ viewList2.add(view);
|
|
|
+ }
|
|
|
+ formComponentValueVo2.setName("差旅报销");
|
|
|
+ formComponentValueVo2.setValue(JSON.toJSONString(viewList2));
|
|
|
+ formComponentValueVoList.add(formComponentValueVo2);
|
|
|
+ }
|
|
|
+
|
|
|
+ //私车公用报销明细
|
|
|
+ if(newMap.get("私车公用报销") != null && JSONArray.fromObject(newMap.get("私车公用报销").toString()).size() > 0) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> viewList3 = new ArrayList<>();
|
|
|
+
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(newMap.get("私车公用报销").toString());
|
|
|
+ for (int j = 0; j < jsonArray1.size(); j++) {
|
|
|
+ List<OapiProcessinstanceCreateRequest.FormComponentValueVo> view = new ArrayList<>();
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("发生日期") != null && object1.get("结束日期") != null && object1.get("发生日期") != "" && object1.get("结束日期") != ""){
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item31 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+// Item31.setName("[\"发生日期\",\"结束日期\"]");
|
|
|
+// Item31.setValue("[\"2019-02-19\",\"2019-02-25\"]");
|
|
|
+// view.add(Item31);
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ jsonArray.add(object1.get("发生日期").toString());
|
|
|
+ jsonArray.add(object1.get("结束日期").toString());
|
|
|
+ Item31.setName("[\"发生日期\",\"结束日期\"]");
|
|
|
+ Item31.setValue(jsonArray.toString());
|
|
|
+ view.add(Item31);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("报销科目") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item32 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item32.setName("报销科目");
|
|
|
+ Item32.setValue(object1.get("报销科目").toString());
|
|
|
+ view.add(Item32);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("行程") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item33 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item33.setName("行程");
|
|
|
+ Item33.setValue(object1.get("行程").toString());
|
|
|
+ view.add(Item33);
|
|
|
+ }
|
|
|
+ if(object1.get("次数") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item34 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item34.setName("次数");
|
|
|
+ Item34.setValue(object1.get("次数").toString());
|
|
|
+ view.add(Item34);
|
|
|
+ }
|
|
|
+ if(object1.get("未税金额") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item35 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item35.setName("未税金额");
|
|
|
+ Item35.setValue(object1.get("未税金额").toString());
|
|
|
+ view.add(Item35);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("税额") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item36 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item36.setName("税额");
|
|
|
+ Item36.setValue(object1.get("税额").toString());
|
|
|
+ view.add(Item36);
|
|
|
+ }
|
|
|
+ if(object1.get("费用说明") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item37 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item37.setName("费用说明");
|
|
|
+ Item37.setValue(object1.get("费用说明").toString());
|
|
|
+ view.add(Item37);
|
|
|
+ }
|
|
|
+// viewList3.add(Arrays.asList(Item31, Item32, Item33, Item34, Item35, Item36, Item37));
|
|
|
+ viewList3.add(view);
|
|
|
+ }
|
|
|
+ formComponentValueVo3.setName("私车公用报销");
|
|
|
+ formComponentValueVo3.setValue(JSON.toJSONString(viewList3));
|
|
|
+ formComponentValueVoList.add(formComponentValueVo3);
|
|
|
+ }
|
|
|
+
|
|
|
+ //其他报销科目明细
|
|
|
+ if(newMap.get("其他报销科目") != null && JSONArray.fromObject(newMap.get("其他报销科目").toString()).size() > 0) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo4 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> viewList4 = new ArrayList<>();
|
|
|
+
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(newMap.get("其他报销科目").toString());
|
|
|
+ for (int j = 0; j < jsonArray1.size(); j++) {
|
|
|
+
|
|
|
+ List<OapiProcessinstanceCreateRequest.FormComponentValueVo> view = new ArrayList<>();
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("发生日期") != null && object1.get("结束日期") != null && object1.get("发生日期") != "" && object1.get("结束日期") != ""){
|
|
|
+
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item41 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+// Item41.setName("[\"发生日期\",\"结束日期\"]");
|
|
|
+// Item41.setValue("[\"2019-02-19\"");
|
|
|
+// view.add(Item41);
|
|
|
+
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ jsonArray.add(object1.get("发生日期").toString());
|
|
|
+ jsonArray.add(object1.get("结束日期").toString());
|
|
|
+ Item41.setName("[\"发生日期\",\"结束日期\"]");
|
|
|
+ Item41.setValue(jsonArray.toString());
|
|
|
+ view.add(Item41);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("报销科目") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item42 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item42.setName("报销科目");
|
|
|
+ Item42.setValue(object1.get("报销科目").toString());
|
|
|
+ view.add(Item42);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("名称") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item43 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item43.setName("名称");
|
|
|
+ Item43.setValue(object1.get("名称").toString());
|
|
|
+ view.add(Item43);
|
|
|
+ }
|
|
|
+ if(object1.get("单位") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item44 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item44.setName("单位");
|
|
|
+ Item44.setValue(object1.get("单位").toString());
|
|
|
+ view.add(Item44);
|
|
|
+ }
|
|
|
+ if(object1.get("数量") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item48 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item48.setName("数量");
|
|
|
+ Item48.setValue(object1.get("数量").toString());
|
|
|
+ view.add(Item48);
|
|
|
+ }
|
|
|
+ if(object1.get("未税金额") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item45 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item45.setName("未税金额");
|
|
|
+ Item45.setValue(object1.get("未税金额").toString());
|
|
|
+ view.add(Item45);
|
|
|
+ }else{
|
|
|
+ continue ;
|
|
|
+ }
|
|
|
+ if(object1.get("税额") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item46 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item46.setName("税额");
|
|
|
+ Item46.setValue(object1.get("税额").toString());
|
|
|
+ view.add(Item46);
|
|
|
+ }
|
|
|
+ if(object1.get("费用说明") != null) {
|
|
|
+ OapiProcessinstanceCreateRequest.FormComponentValueVo Item47 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
|
|
|
+ Item47.setName("费用说明");
|
|
|
+ Item47.setValue(object1.get("费用说明").toString());
|
|
|
+ view.add(Item47);
|
|
|
+ }
|
|
|
+// viewList4.add(Arrays.asList(Item41, Item42, Item43, Item44, Item48, Item45, Item46, Item47));
|
|
|
+ viewList4.add(view);
|
|
|
+ }
|
|
|
+ if(viewList4.size() > 0){
|
|
|
+ formComponentValueVo4.setName("其他报销科目");
|
|
|
+ formComponentValueVo4.setValue(JSON.toJSONString(viewList4));
|
|
|
+ formComponentValueVoList.add(formComponentValueVo4);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ req.setFormComponentValues(formComponentValueVoList);
|
|
|
+
|
|
|
+ String useridshenh = prop.getProperty("shenhe_userid");
|
|
|
+ if (!useridshenh.equals("")){
|
|
|
+ List<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo> processInstanceApproverVoList = new ArrayList<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo>();
|
|
|
+ OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo processInstanceApproverVo = new OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo();
|
|
|
+ processInstanceApproverVoList.add(processInstanceApproverVo);
|
|
|
+ processInstanceApproverVo.setTaskActionType("NONE");
|
|
|
+ processInstanceApproverVo.setUserIds(Arrays.asList(useridshenh));
|
|
|
+ req.setApproversV2(processInstanceApproverVoList);
|
|
|
+ }
|
|
|
+
|
|
|
+ OapiProcessinstanceCreateResponse rsp = client.execute(req, gettoken);
|
|
|
+
|
|
|
+ entity.setOaId(o);
|
|
|
+ entity.setOaNid(rsp.getProcessInstanceId());
|
|
|
+ entity.setDeptName(map.get("originator_dept_name").toString());
|
|
|
+ entity.setJobNumber(map.get("title").toString());
|
|
|
+ entity.setTableType("报销单至银行凭证");
|
|
|
+ entity.setSyMessage(rsp.getErrmsg());
|
|
|
+ if(rsp.isSuccess()){
|
|
|
+ entity.setSyState("true");
|
|
|
+ }else{
|
|
|
+ entity.setSyState("false");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ u8Service.saveSyView(entity);
|
|
|
+ }catch (Exception e){
|
|
|
+ System.out.println("异常2");
|
|
|
+ }
|
|
|
+// System.out.println("============"+JSON.toJSONString(rsp));
|
|
|
+// System.out.println("============"+JSON.toJSONString(rsp.getErrmsg()));
|
|
|
+// System.out.println("============"+JSON.toJSONString(rsp.isSuccess()));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Map<String,Object> tableToMap4(Map<String,Object> map1) throws Exception {
|
|
|
+
|
|
|
+ List<Map<String,Object>> listMap = (List<Map<String, Object>>) map1.get("form_component_values");
|
|
|
+ Map<String,Object> newMap = new HashMap<String,Object>();
|
|
|
+// System.out.println(map1);
|
|
|
+ for(Map<String, Object> o:listMap){
|
|
|
+
|
|
|
+ if(o.get("name")==null || StringUtils.isNullOrEmpty(o.get("name").toString())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(o.get("name").equals("申请人编码") && o.get("value") != null){
|
|
|
+ newMap.put("申请人编码",o.get("value"));
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("申请人所属部门") && o.get("value") != null){
|
|
|
+ newMap.put("申请人所属部门",o.get("value"));
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("申请人") && o.get("value") != null){
|
|
|
+ newMap.put("申请人",o.get("value"));
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("单据类型") && o.get("value") != null){
|
|
|
+ newMap.put("单据类型",o.get("value"));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(o.get("name").equals("收款人") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ if(object.get("rowValue") == null || object.get("rowValue") == ""){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("收款人",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(o.get("name").equals("备用金申请") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ if(object.get("rowValue") == null || object.get("rowValue") == ""){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("label").toString().equals("[\"使用日期\",\"归还日期\"]")){
|
|
|
+ JSONArray aa = JSONArray.fromObject(object1.get("value"));
|
|
|
+ if(aa.size() > 1){
|
|
|
+ map.put("使用日期",aa.get(0));
|
|
|
+ map.put("归还日期",aa.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("备用金申请",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(o.get("name").equals("差旅报销") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ if(object.get("rowValue") == null || object.get("rowValue") == ""){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
|
|
|
+ JSONArray aa = JSONArray.fromObject(object1.get("value"));
|
|
|
+ if(aa.size() > 1){
|
|
|
+ map.put("发生日期",aa.get(0));
|
|
|
+ map.put("结束日期",aa.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("差旅报销",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("私车公用报销") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ if(object.get("rowValue") == null || object.get("rowValue") == ""){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
|
|
|
+ JSONArray aa = JSONArray.fromObject(object1.get("value"));
|
|
|
+ if(aa.size() > 1){
|
|
|
+ map.put("发生日期",aa.get(0));
|
|
|
+ map.put("结束日期",aa.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("私车公用报销",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("其他报销科目") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ if(object.get("rowValue") == null || object.get("rowValue") == ""){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
|
|
|
+ JSONArray aa = JSONArray.fromObject(object1.get("value"));
|
|
|
+ if(aa.size() > 1){
|
|
|
+ map.put("发生日期",aa.get(0));
|
|
|
+ map.put("结束日期",aa.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("其他报销科目",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return newMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Map<String,Object> tableToMap2(Map<String,Object> map1) throws Exception {
|
|
|
|
|
|
List<Map<String,Object>> listMap = (List<Map<String, Object>>) map1.get("form_component_values");
|
|
|
+ Map<String,Object> newMap = new HashMap<String,Object>();
|
|
|
+
|
|
|
+ for(Map<String, Object> o:listMap){
|
|
|
+ if(o.get("component_type").equals("RecipientAccountField")){
|
|
|
+ Map<String,Object> mapValue = JSONUtils.jsonToMap((String) o.get("ext_value"));
|
|
|
+ newMap.put("户名",mapValue.get("name"));
|
|
|
+ newMap.put("账号",mapValue.get("cardNo"));
|
|
|
+ newMap.put("开户银行",mapValue.get("instName"));
|
|
|
+ }
|
|
|
+
|
|
|
+ if(o.get("name")==null || StringUtils.isNullOrEmpty(o.get("name").toString())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(o.get("name").equals("收款账号") && o.get("value") != null && newMap.get("账号") == null){
|
|
|
+ newMap.put("账号",o.get("value"));
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("差旅报销") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+// Map<String,Object> map = new HashMap<>();
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
|
|
|
+ List<String> aa = (List<String>) object1.get("value");
|
|
|
+ if(aa.size() > 1){
|
|
|
+ map.put("发生日期",aa.get(0));
|
|
|
+ map.put("结束日期",aa.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else if(object1.get("label").toString().equals("报销科目")){
|
|
|
+
|
|
|
+ List<String> aa = (List<String>) object1.get("value");
|
|
|
+ if(aa.size() > 0){
|
|
|
+ map.put("报销科目",aa.get(0));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("差旅报销",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("私车公用报销") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+// Map<String,Object> map = new HashMap<>();
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
|
|
|
+ List<String> aa = (List<String>) object1.get("value");
|
|
|
+ if(aa.size() > 1){
|
|
|
+ map.put("发生日期",aa.get(0));
|
|
|
+ map.put("结束日期",aa.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else if(object1.get("label").toString().equals("报销科目")){
|
|
|
+
|
|
|
+ List<String> aa = (List<String>) object1.get("value");
|
|
|
+ if(aa.size() > 0){
|
|
|
+ map.put("报销科目",aa.get(0));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("私车公用报销",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(o.get("name").equals("其他报销科目") && o.get("value") != null){
|
|
|
+ JSONArray jsonArray = JSONArray.fromObject(o.get("value").toString());
|
|
|
+ if(jsonArray.size() > 0){
|
|
|
+ List<Map<String,Object>> listView = new ArrayList<>();
|
|
|
+
|
|
|
+ for(int i=0;i<jsonArray.size();i++){
|
|
|
+ net.sf.json.JSONObject object = jsonArray.getJSONObject(i);
|
|
|
+ JSONArray jsonArray1 = JSONArray.fromObject(object.get("rowValue").toString());
|
|
|
+// Map<String,Object> map = new HashMap<>();
|
|
|
+ JSONObject map = new JSONObject();
|
|
|
+ if(jsonArray1.size() > 0){
|
|
|
+ for(int j=0;j<jsonArray1.size();j++){
|
|
|
+ net.sf.json.JSONObject object1 = jsonArray1.getJSONObject(j);
|
|
|
+ if(object1.get("label").toString().equals("[\"发生日期\",\"结束日期\"]")){
|
|
|
+ List<String> aa = (List<String>) object1.get("value");
|
|
|
+ if(aa.size() > 1){
|
|
|
+ map.put("发生日期",aa.get(0));
|
|
|
+ map.put("结束日期",aa.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ }else if(object1.get("label").toString().equals("报销科目")){
|
|
|
+
|
|
|
+ List<String> aa = (List<String>) object1.get("value");
|
|
|
+ if(aa.size() > 0){
|
|
|
+ map.put("报销科目",aa.get(0));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ map.put(object1.get("label").toString(),object1.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listView.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newMap.put("其他报销科目",listView);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// System.out.println("=========================");
|
|
|
+// System.out.println("=========================");
|
|
|
+
|
|
|
+ return newMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Map<String,Object> tableToMap3(Map<String,Object> map1){
|
|
|
+
|
|
|
+ List<Map<String,Object>> listMap = (List<Map<String, Object>>) map1.get("form_component_values");
|
|
|
+// System.out.println(listMap);
|
|
|
Map<String,Object> newMap = new HashMap<>();
|
|
|
int st = 0;
|
|
|
for(Map<String, Object> o:listMap){
|
|
|
+
|
|
|
+// System.out.println(o);
|
|
|
+// System.out.println("=========================");
|
|
|
if(o.get("name")==null || StringUtils.isNullOrEmpty(o.get("name").toString())){
|
|
|
continue;
|
|
|
}
|
|
@@ -285,10 +1147,87 @@ public class ReimbursementService {
|
|
|
return code;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取钉钉企业内部应用的access_token
|
|
|
+ */
|
|
|
+ public static void getToken(){
|
|
|
+
|
|
|
+ try {
|
|
|
+ Properties prop = PropUtil.getProperties("/config.properties");
|
|
|
+ String appkey = prop.getProperty("ding_appkey");
|
|
|
+ String appsecret = prop.getProperty("ding_appsecret");
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
|
|
|
+ OapiGettokenRequest req = new OapiGettokenRequest();
|
|
|
+ req.setHttpMethod("GET");
|
|
|
+ req.setAppkey(appkey);
|
|
|
+ req.setAppsecret(appsecret);
|
|
|
+ OapiGettokenResponse rsp = client.execute(req);
|
|
|
+
|
|
|
+ Map<String,String> map;
|
|
|
+ map = toMap(rsp.getBody());
|
|
|
+ if(map.get("errcode").equals("0")){
|
|
|
+ gettoken = map.get("access_token");
|
|
|
+ }else{
|
|
|
+ gettoken = "error";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } catch (ApiException | JSONException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Map toMap(String jsonString) throws JSONException {
|
|
|
+ org.springframework.boot.configurationprocessor.json.JSONObject jsonObject = new org.springframework.boot.configurationprocessor.json.JSONObject(jsonString);
|
|
|
+ Map result = new HashMap();
|
|
|
+ Iterator iterator = jsonObject.keys();
|
|
|
+ String key = null;
|
|
|
+ String value = null;
|
|
|
+
|
|
|
+ while (iterator.hasNext()) {
|
|
|
+
|
|
|
+ key = (String) iterator.next();
|
|
|
+ value = jsonObject.getString(key);
|
|
|
+ result.put(key, value);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
+// autoOABankReceipt();
|
|
|
// autoReimbursement();
|
|
|
+// autoReimbursementNew();
|
|
|
+
|
|
|
+// String aa = "";
|
|
|
+// if("12334".contains("1")){
|
|
|
+// System.out.println("sssssssssss");
|
|
|
+// }
|
|
|
+// BigDecimal aa = new BigDecimal("10");
|
|
|
+// BigDecimal multiply = aa.multiply(BigDecimal.valueOf(0.09)).multiply(aa);
|
|
|
+// System.out.println(multiply);
|
|
|
+// DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
|
|
|
+// Properties prop = PropUtil.getProperties("/config.properties");
|
|
|
+// String PROC = prop.getProperty("bx_process_code");
|
|
|
+// String PROC1 = prop.getProperty("byj_process_code");
|
|
|
+// List<String> list = dingdingOpenInterface.getOrderIdList2(PROC,-2);
|
|
|
+// List<String> list1 = dingdingOpenInterface.getOrderIdList2(PROC1,-7);
|
|
|
+// System.out.println(list);
|
|
|
+ System.out.println("========1======");
|
|
|
+ Thread.currentThread().sleep(5000);//延迟5秒
|
|
|
+ Thread.sleep(3000);//与上行代码无区别
|
|
|
+ System.out.println("========2======");
|
|
|
+// System.out.println(list1);
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
}
|