123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 |
- 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<YonyouPurchaseOrder> list) throws OpenAPIException {
- try {
- if (list.size()>0){
- for (YonyouPurchaseOrder yonyouPurchaseOrder:list){
- Map<String,Object> 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<YonyouPurchaseOrder> yonyouQueryPurchaseOrder(Map<String,String>map) 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<YonyouPurchaseOrder> 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 {
- Map<String,Object>map=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<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);
- }
- if (so!=null){
- List<OapiProcessinstanceCreateRequest.FormComponentValueVo> formComponentValueVoList = new ArrayList<OapiProcessinstanceCreateRequest.FormComponentValueVo>();
- 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<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>>ls=new ArrayList<>();
- for (YonyouPurchaseMaterial s:so.getEntry()){
- List<OapiProcessinstanceCreateRequest.FormComponentValueVo>mingxilist=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();
- List<YonyouPurchaseOrder>list=new ArrayList<>();
- YonyouPurchaseOrder yonyouPurchaseOrder=new YonyouPurchaseOrder();
- YonyouPurchaseMaterial yonyouPurchaseMaterial=new YonyouPurchaseMaterial();
- yonyouPurchaseMaterial.setInventorycode("0907");
- yonyouPurchaseMaterial.setQuantity("23");
- yonyouPurchaseOrder.setVendorcode("010003");
- List<YonyouPurchaseMaterial> entry = yonyouPurchaseOrder.getEntry();
- entry.add(yonyouPurchaseMaterial);
- yonyouPurchaseOrder.setEntry(entry);
- list.add(yonyouPurchaseOrder);
- purchaseOrderService.yonyouAddPurchaseOrder(list);
- }
- }
|