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.OapiProcessinstanceCreateRequest; import com.dingtalk.api.response.OapiProcessinstanceCreateResponse; import com.fasterxml.jackson.databind.ObjectMapper; import com.taobao.api.ApiException; import net.chenlin.dp.common.openapi4j.exception.OpenAPIException; import net.chenlin.dp.common.openapi4j.platform.ResultService; import net.chenlin.dp.common.openapi4j.util.PropUtil; import net.chenlin.dp.modules.api.controller.DingdingOpenInterface; import net.chenlin.dp.modules.api.vo.SaleOrderRest; import net.chenlin.dp.modules.api.vo.YonyouPurchaseMaterial; import net.chenlin.dp.modules.api.vo.YonyouPurchaseOrder; import net.chenlin.dp.modules.api.vo.YonyouSaleOrder; import java.math.BigDecimal; import java.util.*; public class PurchaseOrderService { private net.chenlin.dp.common.openapi4j.service.PurchaseOrderService purchaseOrderService=new net.chenlin.dp.common.openapi4j.service.PurchaseOrderService(); private DingdingOpenInterface dingdingOpenInterface=new DingdingOpenInterface(); private Properties prop = PropUtil.getProperties("/config.properties"); private static String getToaccount=""; /** * 采购订单新增 * @param list */ public void yonyouAddPurchaseOrder(List list) throws OpenAPIException { try { if (list.size()>0){ for (YonyouPurchaseOrder yonyouPurchaseOrder:list){ Map map=new HashMap<>(); map.put("purchaseorder",yonyouPurchaseOrder); String s = JSONObject.toJSONString(map); JSONObject add = purchaseOrderService.add(s, getToaccount); HashMap hashMap = JSONObject.parseObject(add.toString(), HashMap.class); if (!hashMap.get("tradeid").equals("")&&hashMap.get("tradeid")!=null){ String result = ResultService.getResult(hashMap.get("tradeid").toString()); System.out.println(result); } } } }catch (Exception e){ throw new OpenAPIException(e.getMessage(), e); } } /** * 批量获取采购订单 * @param map * @return * @throws OpenAPIException */ public List yonyouQueryPurchaseOrder(Mapmap) throws OpenAPIException { map.put("to_account", getToaccount); map.put("state","开立"); try { JSONObject jsonObject = purchaseOrderService.batchGet(map); HashMap hashMap = JSONObject.parseObject(jsonObject.toString(), HashMap.class); Object errcode = hashMap.get("errcode"); if (errcode.equals("0")){ Object row_count = hashMap.get("row_count"); map.put("rows_per_page",row_count.toString()); JSONObject jsonObjects = purchaseOrderService.batchGet(map); HashMap hashMaps = JSONObject.parseObject(jsonObjects.toString(), HashMap.class); if (hashMaps.get("errcode").equals("0")){ Object saleorderlist = hashMaps.get("purchaseorderlist"); List list= JSON.parseArray(JSON.toJSONString(saleorderlist), YonyouPurchaseOrder.class); return list; }else { return null; } }else { return null; } }catch (Exception e){ throw new OpenAPIException(e.getMessage(), e); } } /** * 获取单张采购订单 * @param id * @return * @throws OpenAPIException */ public YonyouPurchaseOrder yonyouGetPurchaseOrder(String id,String dataid) throws OpenAPIException { try { JSONObject jsonObject = purchaseOrderService.get(id, getToaccount,dataid); HashMap hashMap = JSONObject.parseObject(jsonObject.toString(), HashMap.class); if (hashMap.get("errcode").equals("0")){ Object purchaseorder = hashMap.get("purchaseorder"); ObjectMapper objectMapper = new ObjectMapper(); YonyouPurchaseOrder zfsp = objectMapper.convertValue(purchaseorder, YonyouPurchaseOrder.class); return zfsp; }else { return null; } }catch (Exception e){ throw new OpenAPIException(e.getMessage(), e); } } /** * 采购订单审核 */ public void yonyouShenhePurchaseOrder(SaleOrderRest saleOrderRest) throws OpenAPIException { Mapmap=new HashMap<>(); map.put("purchaseorder",saleOrderRest); try { String s = JSONObject.toJSONString(map); JSONObject shenghe = purchaseOrderService.shenghe(s, getToaccount); }catch (Exception e){ throw new OpenAPIException(e.getMessage(), e); } } public void getToaccount(){ Properties prop = PropUtil.getProperties("/config.properties"); getToaccount= prop.getProperty("to_account"); } /** * 钉钉创建采购订单审批实列 * @param processCode * @param agentid * @param userid 发起人 * @param deptid 部门 * @param map 数据 * @throws ApiException */ public Object createPurchaseOrder(String processCode, Long agentid, String userid, Long deptid, YonyouPurchaseOrder so,String data) throws ApiException { DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create"); OapiProcessinstanceCreateRequest req = new OapiProcessinstanceCreateRequest(); req.setAgentId(agentid); req.setProcessCode(processCode); req.setOriginatorUserId(userid); req.setDeptId(deptid); req.setCcPosition("START"); String useridshenh = prop.getProperty("shenhe_userid"); if (!useridshenh.equals("")){ List processInstanceApproverVoList = new ArrayList(); OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo processInstanceApproverVo = new OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo(); processInstanceApproverVoList.add(processInstanceApproverVo); processInstanceApproverVo.setTaskActionType("NONE"); processInstanceApproverVo.setUserIds(Arrays.asList(useridshenh)); req.setApproversV2(processInstanceApproverVoList); } if (so!=null){ List formComponentValueVoList = new ArrayList(); OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); formComponentValueVo.setName("业务类型"); if (so.getOperation_type_code()!=null&&!so.getOperation_type_code().equals("")){ formComponentValueVo.setValue(so.getOperation_type_code()); }else { formComponentValueVo.setValue("暂无"); } formComponentValueVoList.add(formComponentValueVo); OapiProcessinstanceCreateRequest.FormComponentValueVo fc2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc2.setName("单据编号"); fc2.setValue(so.getCode()); fc2.setExtValue(data); formComponentValueVoList.add(fc2); OapiProcessinstanceCreateRequest.FormComponentValueVo fc = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc.setName("单据日期"); fc.setValue(so.getDate()); formComponentValueVoList.add(fc); OapiProcessinstanceCreateRequest.FormComponentValueVo fc3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc3.setName("供应商名称"); if (so.getVendorname()!=null&&!so.getVendorname().equals("")){ fc3.setValue(so.getVendorname()); }else { fc3.setValue("暂无"); } formComponentValueVoList.add(fc3); OapiProcessinstanceCreateRequest.FormComponentValueVo fv = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fv.setName("收货地址"); if (so.getDefine11()!=null&&!so.getDefine11().equals("")){ fv.setValue(so.getDefine11()); }else { fv.setValue("暂无"); } formComponentValueVoList.add(fv); OapiProcessinstanceCreateRequest.FormComponentValueVo fc4 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc4.setName("部门"); if (so.getDeptname()!=null&&!so.getDeptname().equals("")){ fc4.setValue(so.getDeptname()); }else { fc4.setValue("暂无"); } formComponentValueVoList.add(fc4); OapiProcessinstanceCreateRequest.FormComponentValueVo fc5 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc5.setName("业务员"); if (so.getPersonname()!=null&&!so.getPersonname().equals("")){ fc5.setValue(so.getPersonname()); }else { fc5.setValue("暂无"); } formComponentValueVoList.add(fc5); OapiProcessinstanceCreateRequest.FormComponentValueVo fc6 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc6.setName("币种"); fc6.setValue("人民币"); formComponentValueVoList.add(fc6); OapiProcessinstanceCreateRequest.FormComponentValueVo f= new OapiProcessinstanceCreateRequest.FormComponentValueVo(); f.setName("制单人"); if (so.getMaker()!=null&&!so.getMaker().equals("")){ f.setValue(so.getMaker()); }else { f.setValue("暂无"); } formComponentValueVoList.add(f); List>ls=new ArrayList<>(); for (YonyouPurchaseMaterial s:so.getEntry()){ Listmingxilist=new ArrayList<>(); OapiProcessinstanceCreateRequest.FormComponentValueVo mingxi2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); mingxi2.setName("存货名称"); if (s.getInventoryname()!=null&&!s.getInventoryname().equals("")){ mingxi2.setValue(s.getInventoryname()); }else { mingxi2.setValue("暂无"); } mingxilist.add(mingxi2); OapiProcessinstanceCreateRequest.FormComponentValueVo fo = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fo.setName("数量"); if (s.getQuantity()!=null&&!s.getQuantity().equals("0E-10")){ fo.setValue(s.getQuantity()); }else { fo.setValue("0"); } mingxilist.add(fo); OapiProcessinstanceCreateRequest.FormComponentValueVo fc7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc7.setName("含税单价"); if (s.getTax()!=null&&!s.getTax().equals("0E-10")){ fc7.setValue(s.getTax()); }else { fc7.setValue("0"); } mingxilist.add(fc7); OapiProcessinstanceCreateRequest.FormComponentValueVo fc8 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc8.setName("无税单价"); if (s.getPrice()!=null&&!s.getPrice().equals("0E-10")){ fc8.setValue(s.getPrice()); }else { fc8.setValue("0"); } mingxilist.add(fc8); OapiProcessinstanceCreateRequest.FormComponentValueVo fc9 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc9.setName("税率"); if (s.getTaxrate()!=null&&!s.getTaxrate().equals("0E-10")){ fc9.setValue(s.getTaxrate()); }else { fc9.setValue("暂无"); } mingxilist.add(fc9); OapiProcessinstanceCreateRequest.FormComponentValueVo fc10= new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc10.setName("无税金额"); if (s.getMoney()!=null&&!s.getMoney().equals("0E-10")){ fc10.setValue(s.getMoney()); }else { fc10.setValue("0"); } mingxilist.add(fc10); OapiProcessinstanceCreateRequest.FormComponentValueVo fc11= new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc11.setName("税额"); if (s.getMoney()!=null&&!s.getMoney().equals("0E-10")){ BigDecimal sum=new BigDecimal(s.getSum()); BigDecimal money=new BigDecimal(s.getMoney()); BigDecimal subtract = sum.subtract(money); fc11.setValue(subtract.toString()); }else { fc11.setValue("0"); } // fc11.setValue(s.getTax()); mingxilist.add(fc11); OapiProcessinstanceCreateRequest.FormComponentValueVo fc12= new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc12.setName("价税合计"); if (s.getSum()!=null&&!s.getSum().equals("0E-10")){ fc12.setValue(s.getSum()); }else { fc12.setValue("0"); } mingxilist.add(fc12); if (s.getArrivedate()!=null&&!s.getArrivedate().equals("")){ OapiProcessinstanceCreateRequest.FormComponentValueVo fc13= new OapiProcessinstanceCreateRequest.FormComponentValueVo(); fc13.setName("交期"); fc13.setValue(s.getArrivedate()); mingxilist.add(fc13); } ls.add(mingxilist); } OapiProcessinstanceCreateRequest.FormComponentValueVo obj7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo(); obj7.setName("表格"); obj7.setValue(JSON.toJSONString(ls)); formComponentValueVoList.add(obj7); req.setFormComponentValues(formComponentValueVoList); dingdingOpenInterface.getToken(); OapiProcessinstanceCreateResponse rsp = client.execute(req, dingdingOpenInterface.gettoken); System.out.println(rsp.getBody()); String code = rsp.getErrorCode(); if (code.equals("0")||code.equals(0)){ return rsp.getProcessInstanceId(); }else { return null; } }else { return null; } } public static void main(String[] args) throws OpenAPIException { PurchaseOrderService purchaseOrderService=new PurchaseOrderService(); purchaseOrderService.getToaccount(); Listlist=new ArrayList<>(); YonyouPurchaseOrder yonyouPurchaseOrder=new YonyouPurchaseOrder(); YonyouPurchaseMaterial yonyouPurchaseMaterial=new YonyouPurchaseMaterial(); yonyouPurchaseMaterial.setInventorycode("0907"); yonyouPurchaseMaterial.setQuantity("23"); yonyouPurchaseOrder.setVendorcode("010003"); List entry = yonyouPurchaseOrder.getEntry(); entry.add(yonyouPurchaseMaterial); yonyouPurchaseOrder.setEntry(entry); list.add(yonyouPurchaseOrder); purchaseOrderService.yonyouAddPurchaseOrder(list); } }