PayrequestService.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. package net.chenlin.dp.modules.api.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.dingtalk.api.DefaultDingTalkClient;
  5. import com.dingtalk.api.DingTalkClient;
  6. import com.dingtalk.api.request.OapiProcessinstanceCreateRequest;
  7. import com.dingtalk.api.response.OapiProcessinstanceCreateResponse;
  8. import com.fasterxml.jackson.databind.ObjectMapper;
  9. import com.taobao.api.ApiException;
  10. import net.chenlin.dp.common.openapi4j.commons.TokenManager;
  11. import net.chenlin.dp.common.openapi4j.exception.OpenAPIException;
  12. import net.chenlin.dp.common.openapi4j.model.Record;
  13. import net.chenlin.dp.common.openapi4j.platform.TradeService;
  14. import net.chenlin.dp.common.openapi4j.service.BaseService;
  15. import net.chenlin.dp.common.openapi4j.service.CustomerService;
  16. import net.chenlin.dp.common.openapi4j.service.UserService;
  17. import net.chenlin.dp.common.openapi4j.util.HttpUtil;
  18. import net.chenlin.dp.common.openapi4j.util.PropUtil;
  19. import net.chenlin.dp.modules.api.controller.DingdingOpenInterface;
  20. import net.chenlin.dp.modules.api.vo.*;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import java.math.BigDecimal;
  24. import java.util.*;
  25. public class PayrequestService extends BaseService {
  26. final static Logger logger = LoggerFactory.getLogger(PayrequestService.class);
  27. private Properties prop = PropUtil.getProperties("/config.properties");
  28. public PayrequestService() {
  29. this.access_token = TokenManager.getToKenId();
  30. }
  31. public PayrequestService(String token) {
  32. this.access_token = token;
  33. }
  34. private DingdingOpenInterface dingdingOpenInterface=new DingdingOpenInterface();
  35. //
  36. public static String getToaccount="";
  37. /**
  38. * 获取单个付款申请单
  39. * @param id
  40. * @param to_account
  41. * @return
  42. * @throws OpenAPIException
  43. */
  44. public JSONObject get(String id) throws OpenAPIException {
  45. JSONObject record;
  46. try {
  47. Map<String, String> paramMap = new HashMap();
  48. paramMap.put("to_account", getToaccount);
  49. paramMap.put("id", id);
  50. String url = this.createURL("payrequest/get", paramMap);
  51. logger.info(url);
  52. record = JSONObject.parseObject(HttpUtil.get(url));
  53. } catch (Exception e) {
  54. throw new OpenAPIException(e.getMessage(), e);
  55. }
  56. return record;
  57. }
  58. /**
  59. * 申请单
  60. * @param paramMap
  61. * @return
  62. * @throws OpenAPIException
  63. */
  64. public JSONObject batchGet(Map<String, String> paramMap) throws OpenAPIException {
  65. JSONObject record;
  66. try {
  67. paramMap.put("to_account",getToaccount);
  68. String url = this.createURL("payrequestlist/batch_get", paramMap);
  69. logger.info(url);
  70. record = JSONObject.parseObject(HttpUtil.get(url));
  71. } catch (Exception e) {
  72. // TODO Auto-generated catch block
  73. throw new OpenAPIException(e.getMessage(), e);
  74. }
  75. return record;
  76. }
  77. /**
  78. * 批量获取付款申请单
  79. * @param map
  80. * @return
  81. * @throws OpenAPIException
  82. */
  83. public List<Payrequest> yonyouQueryPayrequest(Map<String,String>map) throws OpenAPIException {
  84. map.put("to_account", getToaccount);
  85. // map.put("iverifystate", "0");
  86. try {
  87. JSONObject jsonObject = batchGet(map);
  88. HashMap hashMap = JSONObject.parseObject(jsonObject.toString(), HashMap.class);
  89. Object errcode = hashMap.get("errcode");
  90. if (errcode.equals("0")){
  91. Object row_count = hashMap.get("row_count");
  92. map.put("rows_per_page",row_count.toString());
  93. JSONObject jsonObjects = batchGet(map);
  94. HashMap hashMaps = JSONObject.parseObject(jsonObjects.toString(), HashMap.class);
  95. if (hashMaps.get("errcode").equals("0")){
  96. Object saleorderlist = hashMaps.get("payrequestlist");
  97. List<Payrequest> list= JSON.parseArray(JSON.toJSONString(saleorderlist), Payrequest.class);
  98. return list;
  99. }else {
  100. return null;
  101. }
  102. }else {
  103. return null;
  104. }
  105. }catch (Exception e){
  106. throw new OpenAPIException(e.getMessage(), e);
  107. }
  108. }
  109. /**
  110. * 获取单张付款申请订单
  111. * @param id
  112. * @return
  113. * @throws OpenAPIException
  114. */
  115. public Payrequest yonyouGetPayrequest(String id) throws OpenAPIException {
  116. try {
  117. JSONObject jsonObject = get(id);
  118. HashMap hashMap = JSONObject.parseObject(jsonObject.toString(), HashMap.class);
  119. if (hashMap.get("errcode").equals("0")){
  120. Object payrequest = hashMap.get("payrequest");
  121. ObjectMapper objectMapper = new ObjectMapper();
  122. Payrequest zfsp = objectMapper.convertValue(payrequest, Payrequest.class);
  123. return zfsp;
  124. }else {
  125. return null;
  126. }
  127. }catch (Exception e){
  128. throw new OpenAPIException(e.getMessage(), e);
  129. }
  130. }
  131. /**
  132. * 付款申请单审核
  133. * @param jsonboy
  134. * @param to_account
  135. * @return
  136. * @throws OpenAPIException
  137. */
  138. public JSONObject shenghe() throws OpenAPIException {
  139. JSONObject record;
  140. try {
  141. Map<String, String> paramMap = new HashMap();
  142. String s = "{\n" +
  143. "\t\"payrequest\":{\n" +
  144. "\t\t\"voucher_code\":\"0000000001\",\n" +
  145. "\t\t\"user_id\":\"00001\",\n" +
  146. "\t\t\"opinion\":\"同意\",\n" +
  147. "\t\t\"agree\":\"1\"\n" +
  148. "\t}\n" +
  149. "}";
  150. paramMap.put("to_account", getToaccount);
  151. String url = this.createURL("payrequest/audit", paramMap);
  152. logger.debug(url);
  153. String resultStr = HttpUtil.post(url, s);
  154. logger.debug(resultStr);
  155. JSONObject resultRecord = Record.parseObject(resultStr);
  156. Thread.sleep(3000);
  157. record = Record.parseObject(HttpUtil.get(resultRecord.getString("url")));
  158. } catch (Exception e) {
  159. throw new OpenAPIException(e.getMessage(), e);
  160. }
  161. return record;
  162. }
  163. /**
  164. * 钉钉创建付款申请单审批实列
  165. * @param processCode
  166. * @param agentid
  167. * @param userid 发起人
  168. * @param deptid 部门
  169. * @param map 数据
  170. * @throws ApiException
  171. */
  172. public void createPayrequest(String processCode, Long agentid, String userid, Long deptid, Payrequest so) throws ApiException {
  173. DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
  174. OapiProcessinstanceCreateRequest req = new OapiProcessinstanceCreateRequest();
  175. req.setAgentId(agentid);
  176. req.setProcessCode(processCode);
  177. req.setOriginatorUserId(userid);
  178. req.setDeptId(deptid);
  179. req.setCcPosition("START");
  180. String useridshenh = prop.getProperty("shenhe_userid");
  181. List<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo> processInstanceApproverVoList = new ArrayList<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo>();
  182. OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo processInstanceApproverVo = new OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo();
  183. processInstanceApproverVoList.add(processInstanceApproverVo);
  184. processInstanceApproverVo.setTaskActionType("NONE");
  185. processInstanceApproverVo.setUserIds(Arrays.asList(useridshenh));
  186. req.setApproversV2(processInstanceApproverVoList);
  187. if (so!=null){
  188. List<OapiProcessinstanceCreateRequest.FormComponentValueVo> formComponentValueVoList = new ArrayList<OapiProcessinstanceCreateRequest.FormComponentValueVo>();
  189. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  190. formComponentValueVo.setName("日期");
  191. formComponentValueVo.setValue(so.getDvouchdate());
  192. formComponentValueVoList.add(formComponentValueVo);
  193. OapiProcessinstanceCreateRequest.FormComponentValueVo fc = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  194. fc.setName("部门");
  195. if (so.getCdepname()!=null&&!so.getCdepname().equals("")){
  196. fc.setValue(so.getCdepname());
  197. }else {
  198. fc.setValue("暂无");
  199. }
  200. formComponentValueVoList.add(fc);
  201. OapiProcessinstanceCreateRequest.FormComponentValueVo fc2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  202. fc2.setName("供应商");
  203. if (so.getCvenname()!=null&&!so.getCvenname().equals("")){
  204. fc2.setValue(so.getCvenname());
  205. }else {
  206. fc2.setValue("暂无");
  207. }
  208. formComponentValueVoList.add(fc2);
  209. OapiProcessinstanceCreateRequest.FormComponentValueVo fc3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  210. fc3.setName("结算方式");
  211. if (so.getCssname()!=null&&!so.getCssname().equals("0E-10")){
  212. fc3.setValue(so.getCssname());
  213. }else {
  214. fc3.setValue("暂无");
  215. }
  216. formComponentValueVoList.add(fc3);
  217. OapiProcessinstanceCreateRequest.FormComponentValueVo fc4 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  218. fc4.setName("申请人");
  219. if (so.getCpersonname()!=null&&!so.getCpersonname().equals("")){
  220. fc4.setValue(so.getCpersonname());
  221. }else {
  222. fc4.setValue("暂无");
  223. }
  224. formComponentValueVoList.add(fc4);
  225. OapiProcessinstanceCreateRequest.FormComponentValueVo fc6 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  226. fc6.setName("付款日期");
  227. if (so.getDgatheringdate()!=null&&!so.getDgatheringdate().equals("")){
  228. fc6.setValue(so.getDgatheringdate());
  229. }else {
  230. fc6.setValue(so.getDvouchdate());
  231. }
  232. formComponentValueVoList.add(fc6);
  233. List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>>ls=new ArrayList<>();
  234. BigDecimal a =new BigDecimal("0");
  235. for (PayrequestMin s:so.getEntry()){
  236. List<OapiProcessinstanceCreateRequest.FormComponentValueVo>mingxilist=new ArrayList<>();
  237. OapiProcessinstanceCreateRequest.FormComponentValueVo mingxi2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  238. mingxi2.setName("来源单据号");
  239. mingxi2.setValue(so.getCvouchid());
  240. mingxilist.add(mingxi2);
  241. OapiProcessinstanceCreateRequest.FormComponentValueVo fc7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  242. fc7.setName("存货名称");
  243. if (s.getCinvname()!=null&&!s.getCinvname().equals("")){
  244. fc7.setValue(s.getCinvname());
  245. }else {
  246. fc7.setValue("暂无");
  247. }
  248. mingxilist.add(fc7);
  249. OapiProcessinstanceCreateRequest.FormComponentValueVo fc8 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  250. fc8.setName("存货数量");
  251. if (s.getIapplyamt_s()!=null&&!s.getIapplyamt_s().equals("0E-10")){
  252. fc8.setValue(s.getIapplyamt_s());
  253. }else {
  254. fc8.setValue("0");
  255. }
  256. mingxilist.add(fc8);
  257. OapiProcessinstanceCreateRequest.FormComponentValueVo fc9 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  258. fc9.setName("单价");
  259. if (s.getInattaxprice()!=null&&!s.getInattaxprice().equals("0E-10")){
  260. fc9.setValue(s.getInattaxprice());
  261. }else {
  262. fc9.setValue("0");
  263. }
  264. mingxilist.add(fc9);
  265. OapiProcessinstanceCreateRequest.FormComponentValueVo fc10= new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  266. fc10.setName("金额");
  267. if (s.getIapplyamt()!=null&&!s.getIapplyamt().equals("0E-10")){
  268. fc10.setValue(s.getIapplyamt());
  269. BigDecimal b=new BigDecimal(s.getIapplyamt());
  270. BigDecimal add = a.add(b);
  271. a=add;
  272. }else {
  273. fc10.setValue("0");
  274. }
  275. mingxilist.add(fc10);
  276. ls.add(mingxilist);
  277. }
  278. OapiProcessinstanceCreateRequest.FormComponentValueVo fc5 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  279. fc5.setName("申请金额(元)");
  280. fc5.setValue(a.toString());
  281. // fc5.setValue(so.getPersonname());
  282. formComponentValueVoList.add(fc5);
  283. OapiProcessinstanceCreateRequest.FormComponentValueVo obj7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  284. obj7.setName("表格");
  285. obj7.setValue(JSON.toJSONString(ls));
  286. formComponentValueVoList.add(obj7);
  287. req.setFormComponentValues(formComponentValueVoList);
  288. dingdingOpenInterface.getToken();
  289. OapiProcessinstanceCreateResponse rsp = client.execute(req, dingdingOpenInterface.gettoken);
  290. System.out.println(rsp.getBody());
  291. }
  292. }
  293. //获取to_account
  294. public void getToaccount(){
  295. Properties prop = PropUtil.getProperties("/config.properties");
  296. getToaccount= prop.getProperty("to_account");
  297. }
  298. public static void main(String[] args) throws OpenAPIException {
  299. PayrequestService payrequestService=new PayrequestService();
  300. payrequestService.getToaccount();
  301. SaleOrderRest saleOrderRest=new SaleOrderRest();
  302. UserService userService=new UserService();
  303. JSONObject login = userService.login("demo", "", PayrequestService.getToaccount);
  304. saleOrderRest.setUser_id("demo");
  305. saleOrderRest.setVoucher_code("0000000001");
  306. saleOrderRest.setAgree("1");
  307. payrequestService.shenghe();
  308. }
  309. }