123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- 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.commons.TokenManager;
- import net.chenlin.dp.common.openapi4j.exception.OpenAPIException;
- import net.chenlin.dp.common.openapi4j.model.Record;
- import net.chenlin.dp.common.openapi4j.platform.TradeService;
- import net.chenlin.dp.common.openapi4j.service.BaseService;
- import net.chenlin.dp.common.openapi4j.service.CustomerService;
- import net.chenlin.dp.common.openapi4j.service.UserService;
- import net.chenlin.dp.common.openapi4j.util.HttpUtil;
- import net.chenlin.dp.common.openapi4j.util.PropUtil;
- import net.chenlin.dp.modules.api.controller.DingdingOpenInterface;
- import net.chenlin.dp.modules.api.vo.*;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.math.BigDecimal;
- import java.util.*;
- public class PayrequestService extends BaseService {
- final static Logger logger = LoggerFactory.getLogger(PayrequestService.class);
- private Properties prop = PropUtil.getProperties("/config.properties");
- public PayrequestService() {
- this.access_token = TokenManager.getToKenId();
- }
- public PayrequestService(String token) {
- this.access_token = token;
- }
- private DingdingOpenInterface dingdingOpenInterface=new DingdingOpenInterface();
- //
- public static String getToaccount="";
- /**
- * 获取单个付款申请单
- * @param id
- * @param to_account
- * @return
- * @throws OpenAPIException
- */
- public JSONObject get(String id,String dataid) throws OpenAPIException {
- JSONObject record;
- try {
- Map<String, String> paramMap = new HashMap();
- paramMap.put("to_account", getToaccount);
- paramMap.put("id", id);
- paramMap.put("ds_sequence",dataid);
- String url = this.createURL("payrequest/get", paramMap);
- logger.info(url);
- record = JSONObject.parseObject(HttpUtil.get(url));
- } catch (Exception e) {
- throw new OpenAPIException(e.getMessage(), e);
- }
- return record;
- }
- /**
- * 申请单
- * @param paramMap
- * @return
- * @throws OpenAPIException
- */
- public JSONObject batchGet(Map<String, String> paramMap) throws OpenAPIException {
- JSONObject record;
- try {
- paramMap.put("to_account",getToaccount);
- String url = this.createURL("payrequestlist/batch_get", paramMap);
- logger.info(url);
- record = JSONObject.parseObject(HttpUtil.get(url));
- } catch (Exception e) {
- // TODO Auto-generated catch block
- throw new OpenAPIException(e.getMessage(), e);
- }
- return record;
- }
- /**
- * 批量获取付款申请单
- * @param map
- * @return
- * @throws OpenAPIException
- */
- public List<Payrequest> yonyouQueryPayrequest(Map<String,String>map) throws OpenAPIException {
- map.put("to_account", getToaccount);
- // map.put("iverifystate", "0");
- try {
- JSONObject jsonObject = 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 = batchGet(map);
- HashMap hashMaps = JSONObject.parseObject(jsonObjects.toString(), HashMap.class);
- if (hashMaps.get("errcode").equals("0")){
- Object saleorderlist = hashMaps.get("payrequestlist");
- List<Payrequest> list= JSON.parseArray(JSON.toJSONString(saleorderlist), Payrequest.class);
- return list;
- }else {
- return null;
- }
- }else {
- return null;
- }
- }catch (Exception e){
- throw new OpenAPIException(e.getMessage(), e);
- }
- }
- /**
- * 获取单张付款申请订单
- * @param id
- * @return
- * @throws OpenAPIException
- */
- public Payrequest yonyouGetPayrequest(String id,String dataid) throws OpenAPIException {
- try {
- JSONObject jsonObject = get(id,dataid);
- HashMap hashMap = JSONObject.parseObject(jsonObject.toString(), HashMap.class);
- if (hashMap.get("errcode").equals("0")){
- Object payrequest = hashMap.get("payrequest");
- ObjectMapper objectMapper = new ObjectMapper();
- Payrequest zfsp = objectMapper.convertValue(payrequest, Payrequest.class);
- return zfsp;
- }else {
- return null;
- }
- }catch (Exception e){
- throw new OpenAPIException(e.getMessage(), e);
- }
- }
- /**
- * 付款申请单审核
- * @param jsonboy
- * @param to_account
- * @return
- * @throws OpenAPIException
- */
- public JSONObject shenghe() throws OpenAPIException {
- JSONObject record;
- try {
- Map<String, String> paramMap = new HashMap();
- String s = "{\n" +
- "\t\"payrequest\":{\n" +
- "\t\t\"voucher_code\":\"0000000001\",\n" +
- "\t\t\"user_id\":\"00001\",\n" +
- "\t\t\"opinion\":\"同意\",\n" +
- "\t\t\"agree\":\"1\"\n" +
- "\t}\n" +
- "}";
- paramMap.put("to_account", getToaccount);
- String url = this.createURL("payrequest/audit", paramMap);
- logger.debug(url);
- String resultStr = HttpUtil.post(url, s);
- logger.debug(resultStr);
- JSONObject resultRecord = Record.parseObject(resultStr);
- Thread.sleep(3000);
- record = Record.parseObject(HttpUtil.get(resultRecord.getString("url")));
- } catch (Exception e) {
- throw new OpenAPIException(e.getMessage(), e);
- }
- return record;
- }
- /**
- * 钉钉创建付款申请单审批实列
- * @param processCode
- * @param agentid
- * @param userid 发起人
- * @param deptid 部门
- * @param map 数据
- * @throws ApiException
- */
- public Object createPayrequest(String processCode, Long agentid, String userid, Long deptid, Payrequest so,String data) throws ApiException {
- String msg="";
- try {
- 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("单据日期");
- formComponentValueVo.setValue(so.getDvouchdate());
- formComponentValueVo.setExtValue(data);
- formComponentValueVoList.add(formComponentValueVo);
- OapiProcessinstanceCreateRequest.FormComponentValueVo code = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- code.setName("单据编号");
- if (so.getCvouchid() != null && !so.getCvouchid().equals("")) {
- code.setValue(so.getCvouchid());
- code.setExtValue(data);
- } else {
- code.setValue("暂无");
- }
- formComponentValueVoList.add(code);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cdwname= new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cdwname.setName("供应商名称");
- if (so.getCvenname()!= null && !so.getCvenname().equals("")) {
- cdwname.setValue(so.getCvenname());
- } else {
- cdwname.setValue("暂无");
- }
- formComponentValueVoList.add(cdwname);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cdwcode = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cdwcode.setName("供应商编码");
- if (so.getCdwcode() != null && !so.getCdwcode().equals("")) {
- cdwcode.setValue(so.getCdwcode());
- } else {
- cdwcode.setValue("暂无");
- }
- formComponentValueVoList.add(cdwcode);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cvenabbname = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cvenabbname.setName("供应商简称");
- if (so.getCvenabbname() != null && !so.getCvenabbname().equals("")) {
- cvenabbname.setValue(so.getCvenabbname());
- } else {
- cvenabbname.setValue("暂无");
- }
- formComponentValueVoList.add(cvenabbname);
- OapiProcessinstanceCreateRequest.FormComponentValueVo fc = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- fc.setName("部门名称");
- if (so.getCdepname() != null && !so.getCdepname().equals("")) {
- fc.setValue(so.getCdepname());
- } else {
- fc.setValue("暂无");
- }
- formComponentValueVoList.add(fc);
- OapiProcessinstanceCreateRequest.FormComponentValueVo fcode = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- fcode.setName("部门编码");
- if (so.getCdepcode() != null && !so.getCdepcode().equals("")) {
- fcode.setValue(so.getCdepcode());
- } else {
- fcode.setValue("暂无");
- }
- formComponentValueVoList.add(fcode);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cperson = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cperson.setName("业务员编码");
- if (so.getCperson() != null && !so.getCperson().equals("")) {
- cperson.setValue(so.getCperson());
- } else {
- cperson.setValue("暂无");
- }
- formComponentValueVoList.add(cperson);
- OapiProcessinstanceCreateRequest.FormComponentValueVo fc4 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- fc4.setName("业务员名称");
- if (so.getCpersonname() != null && !so.getCpersonname().equals("")) {
- fc4.setValue(so.getCpersonname());
- } else {
- fc4.setValue("暂无");
- }
- formComponentValueVoList.add(fc4);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cexchname = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cexchname.setName("币种名称");
- if (so.getCexch_name() != null && !so.getCexch_name().equals("")) {
- cexchname.setValue(so.getCexch_name());
- } else {
- cexchname.setValue("暂无");
- }
- formComponentValueVoList.add(cexchname);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cdigest = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cdigest.setName("备注");
- if (so.getCdigest() != null && !so.getCdigest().equals("")) {
- cdigest.setValue(so.getCdigest());
- } else {
- cdigest.setValue("暂无");
- }
- formComponentValueVoList.add(cdigest);
- OapiProcessinstanceCreateRequest.FormComponentValueVo iexchrate = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- iexchrate.setName("汇率");
- if (so.getIexchrate() != null && !so.getIexchrate().equals("")) {
- iexchrate.setValue(so.getIexchrate());
- } else {
- iexchrate.setValue("暂无");
- }
- formComponentValueVoList.add(iexchrate);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cop = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cop.setName("制单人");
- if (so.getCoperator() != null && !so.getCoperator().equals("")) {
- cop.setValue(so.getCoperator());
- } else {
- cop.setValue("暂无");
- }
- formComponentValueVoList.add(cop);
- OapiProcessinstanceCreateRequest.FormComponentValueVo ccode = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- ccode.setName("结算科目编码");
- if (so.getCcode() != null && !so.getCcode().equals("")) {
- ccode.setValue(so.getCcode());
- } else {
- ccode.setValue("暂无");
- }
- formComponentValueVoList.add(ccode);
- OapiProcessinstanceCreateRequest.FormComponentValueVo csscode = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- csscode.setName("结算方式编码");
- if (so.getCsscode() != null && !so.getCsscode().equals("")) {
- csscode.setValue(so.getCsscode());
- } else {
- csscode.setValue("暂无");
- }
- formComponentValueVoList.add(csscode);
- OapiProcessinstanceCreateRequest.FormComponentValueVo fc3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- fc3.setName("结算方式名称");
- if (so.getCssname() != null && !so.getCssname().equals("0E-10")) {
- fc3.setValue(so.getCssname());
- } else {
- fc3.setValue("暂无");
- }
- formComponentValueVoList.add(fc3);
- List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>> ls = new ArrayList<>();
- BigDecimal a = new BigDecimal("0");
- for (PayrequestMin s : so.getEntry()) {
- List<OapiProcessinstanceCreateRequest.FormComponentValueVo> mingxilist = new ArrayList<>();
- OapiProcessinstanceCreateRequest.FormComponentValueVo mingxi2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- mingxi2.setName("存货编码");
- if (s.getCinvcode() != null && !s.getCinvcode().equals("")) {
- mingxi2.setValue(s.getCinvcode());
- } else {
- mingxi2.setValue("暂无");
- }
- mingxilist.add(mingxi2);
- OapiProcessinstanceCreateRequest.FormComponentValueVo fc7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- fc7.setName("存货名称");
- if (s.getCinvname() != null && !s.getCinvname().equals("")) {
- fc7.setValue(s.getCinvname());
- } else {
- fc7.setValue("暂无");
- }
- mingxilist.add(fc7);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cinvstd = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cinvstd.setName("规格型号");
- if (s.getCinvstd() != null && !s.getCinvstd().equals("")) {
- cinvstd.setValue(s.getCinvstd());
- } else {
- cinvstd.setValue("暂无");
- }
- mingxilist.add(cinvstd);
- OapiProcessinstanceCreateRequest.FormComponentValueVo dpdate = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- dpdate.setName("预付款时间");
- dpdate.setValue(s.getDprepaydate());
- mingxilist.add(dpdate);
- OapiProcessinstanceCreateRequest.FormComponentValueVo csname = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- csname.setName("币种名称");
- if (s.getCsrcexchname() != null && !s.getCsrcexchname().equals("")) {
- csname.setValue(s.getCsrcexchname());
- } else {
- csname.setValue("暂无");
- }
- mingxilist.add(csname);
- OapiProcessinstanceCreateRequest.FormComponentValueVo depname = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- depname.setName("部门名称");
- if (s.getCdepname() != null && !s.getCdepname().equals("")) {
- depname.setValue(s.getCdepname());
- } else {
- depname.setValue("暂无");
- }
- mingxilist.add(depname);
- OapiProcessinstanceCreateRequest.FormComponentValueVo cpersonname = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- cpersonname.setName("业务员名称");
- if (s.getCpersonname() != null && !s.getCpersonname().equals("")) {
- cpersonname.setValue(s.getCpersonname());
- } else {
- cpersonname.setValue("暂无");
- }
- mingxilist.add(cpersonname);
- OapiProcessinstanceCreateRequest.FormComponentValueVo iappf = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- iappf.setName("原币申请金额");
- if (s.getIapplyamt_f() != null && !s.getIapplyamt_f().equals("0E-10")) {
- iappf.setValue(new BigDecimal(s.getIapplyamt_f()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- iappf.setValue("0");
- }
- mingxilist.add(iappf);
- OapiProcessinstanceCreateRequest.FormComponentValueVo iapp = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- iapp.setName("本币申请金额");
- if (s.getIapplyamt() != null && !s.getIapplyamt().equals("0E-10")) {
- iapp.setValue(new BigDecimal(s.getIapplyamt()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- iapp.setValue("0");
- }
- mingxilist.add(iapp);
- OapiProcessinstanceCreateRequest.FormComponentValueVo fc8 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- fc8.setName("数量");
- if (s.getIapplyamt_s() != null && !s.getIapplyamt_s().equals("0E-10")) {
- fc8.setValue(new BigDecimal(s.getIapplyamt_s()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- fc8.setValue("0");
- }
- mingxilist.add(fc8);
- OapiProcessinstanceCreateRequest.FormComponentValueVo fc9 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- fc9.setName("原单原币申请金额");
- if (s.getIsrcapplyamt_f() != null && !s.getIsrcapplyamt_f().equals("0E-10")) {
- fc9.setValue(new BigDecimal(s.getIsrcapplyamt_f()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- fc9.setValue("0");
- }
- mingxilist.add(fc9);
- OapiProcessinstanceCreateRequest.FormComponentValueVo israpp = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- israpp.setName("原单本币申请金额");
- if (s.getIsrcapplyamt() != null && !s.getIsrcapplyamt().equals("0E-10")) {
- israpp.setValue(new BigDecimal(s.getIsrcapplyamt()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- israpp.setValue("0");
- }
- mingxilist.add(israpp);
- OapiProcessinstanceCreateRequest.FormComponentValueVo isum = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- isum.setName("原单本币金额");
- if (s.getIsum() != null && !s.getIsum().equals("0E-10")) {
- isum.setValue(new BigDecimal(s.getIsum()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- isum.setValue("0");
- }
- mingxilist.add(isum);
- OapiProcessinstanceCreateRequest.FormComponentValueVo iorisum = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- iorisum.setName("原单原币金额");
- if (s.getIorisum() != null && !s.getIorisum().equals("0E-10")) {
- iorisum.setValue(new BigDecimal(s.getIorisum()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- iorisum.setValue("0");
- }
- mingxilist.add(iorisum);
- OapiProcessinstanceCreateRequest.FormComponentValueVo iortax = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- iortax.setName("原币单价");
- if (s.getIoritaxcost() != null && !s.getIoritaxcost().equals("0E-10")) {
- iortax.setValue(new BigDecimal(s.getIoritaxcost()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- iortax.setValue("0");
- }
- mingxilist.add(iortax);
- OapiProcessinstanceCreateRequest.FormComponentValueVo inatt = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- inatt.setName("本币单价");
- if (s.getInattaxprice() != null && !s.getInattaxprice().equals("0E-10")) {
- inatt.setValue(new BigDecimal(s.getInattaxprice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
- } else {
- inatt.setValue("0");
- }
- mingxilist.add(inatt);
- ls.add(mingxilist);
- }
- OapiProcessinstanceCreateRequest.FormComponentValueVo obj7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
- obj7.setName("表格");
- obj7.setValue(JSON.toJSONString(ls));
- formComponentValueVoList.add(obj7);
- req.setFormComponentValues(formComponentValueVoList);
- OapiProcessinstanceCreateResponse rsp = client.execute(req, dingdingOpenInterface.gettoken);
- System.out.println(rsp.getBody());
- String codes = rsp.getErrorCode();
- if (codes.equals("0") || codes.equals(0)) {
- return codes;
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- StringWriter sw = new StringWriter();
- e.printStackTrace(new PrintWriter(sw, true));
- msg=sw.toString();
- }
- return msg;
- }
- //获取to_account
- public void getToaccount(){
- Properties prop = PropUtil.getProperties("/config.properties");
- getToaccount= prop.getProperty("to_account");
- }
- public static void main(String[] args) throws OpenAPIException {
- PayrequestService payrequestService=new PayrequestService();
- payrequestService.getToaccount();
- SaleOrderRest saleOrderRest=new SaleOrderRest();
- UserService userService=new UserService();
- JSONObject login = userService.login("demo", "", PayrequestService.getToaccount);
- saleOrderRest.setUser_id("demo");
- saleOrderRest.setVoucher_code("0000000001");
- saleOrderRest.setAgree("1");
- payrequestService.shenghe();
- }
- }
|