PurchaseOrderService.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  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.exception.OpenAPIException;
  11. import net.chenlin.dp.common.openapi4j.platform.ResultService;
  12. import net.chenlin.dp.common.openapi4j.util.PropUtil;
  13. import net.chenlin.dp.modules.api.controller.DingdingOpenInterface;
  14. import net.chenlin.dp.modules.api.vo.SaleOrderRest;
  15. import net.chenlin.dp.modules.api.vo.YonyouPurchaseMaterial;
  16. import net.chenlin.dp.modules.api.vo.YonyouPurchaseOrder;
  17. import net.chenlin.dp.modules.api.vo.YonyouSaleOrder;
  18. import java.math.BigDecimal;
  19. import java.util.*;
  20. public class PurchaseOrderService {
  21. private net.chenlin.dp.common.openapi4j.service.PurchaseOrderService purchaseOrderService=new net.chenlin.dp.common.openapi4j.service.PurchaseOrderService();
  22. private DingdingOpenInterface dingdingOpenInterface=new DingdingOpenInterface();
  23. private Properties prop = PropUtil.getProperties("/config.properties");
  24. private static String getToaccount="";
  25. /**
  26. * 采购订单新增
  27. * @param list
  28. */
  29. public void yonyouAddPurchaseOrder(List<YonyouPurchaseOrder> list) throws OpenAPIException {
  30. try {
  31. if (list.size()>0){
  32. for (YonyouPurchaseOrder yonyouPurchaseOrder:list){
  33. Map<String,Object> map=new HashMap<>();
  34. map.put("purchaseorder",yonyouPurchaseOrder);
  35. String s = JSONObject.toJSONString(map);
  36. JSONObject add = purchaseOrderService.add(s, getToaccount);
  37. HashMap hashMap = JSONObject.parseObject(add.toString(), HashMap.class);
  38. if (!hashMap.get("tradeid").equals("")&&hashMap.get("tradeid")!=null){
  39. String result = ResultService.getResult(hashMap.get("tradeid").toString());
  40. System.out.println(result);
  41. }
  42. }
  43. }
  44. }catch (Exception e){
  45. throw new OpenAPIException(e.getMessage(), e);
  46. }
  47. }
  48. /**
  49. * 批量获取采购订单
  50. * @param map
  51. * @return
  52. * @throws OpenAPIException
  53. */
  54. public List<YonyouPurchaseOrder> yonyouQueryPurchaseOrder(Map<String,String>map) throws OpenAPIException {
  55. map.put("to_account", getToaccount);
  56. map.put("state","开立");
  57. try {
  58. JSONObject jsonObject = purchaseOrderService.batchGet(map);
  59. HashMap hashMap = JSONObject.parseObject(jsonObject.toString(), HashMap.class);
  60. Object errcode = hashMap.get("errcode");
  61. if (errcode.equals("0")){
  62. Object row_count = hashMap.get("row_count");
  63. map.put("rows_per_page",row_count.toString());
  64. JSONObject jsonObjects = purchaseOrderService.batchGet(map);
  65. HashMap hashMaps = JSONObject.parseObject(jsonObjects.toString(), HashMap.class);
  66. if (hashMaps.get("errcode").equals("0")){
  67. Object saleorderlist = hashMaps.get("purchaseorderlist");
  68. List<YonyouPurchaseOrder> list= JSON.parseArray(JSON.toJSONString(saleorderlist), YonyouPurchaseOrder.class);
  69. return list;
  70. }else {
  71. return null;
  72. }
  73. }else {
  74. return null;
  75. }
  76. }catch (Exception e){
  77. throw new OpenAPIException(e.getMessage(), e);
  78. }
  79. }
  80. /**
  81. * 获取单张采购订单
  82. * @param id
  83. * @return
  84. * @throws OpenAPIException
  85. */
  86. public YonyouPurchaseOrder yonyouGetPurchaseOrder(String id,String dataid) throws OpenAPIException {
  87. try {
  88. JSONObject jsonObject = purchaseOrderService.get(id, getToaccount,dataid);
  89. HashMap hashMap = JSONObject.parseObject(jsonObject.toString(), HashMap.class);
  90. if (hashMap.get("errcode").equals("0")){
  91. Object purchaseorder = hashMap.get("purchaseorder");
  92. ObjectMapper objectMapper = new ObjectMapper();
  93. YonyouPurchaseOrder zfsp = objectMapper.convertValue(purchaseorder, YonyouPurchaseOrder.class);
  94. return zfsp;
  95. }else {
  96. return null;
  97. }
  98. }catch (Exception e){
  99. throw new OpenAPIException(e.getMessage(), e);
  100. }
  101. }
  102. /**
  103. * 采购订单审核
  104. */
  105. public void yonyouShenhePurchaseOrder(SaleOrderRest saleOrderRest) throws OpenAPIException {
  106. Map<String,Object>map=new HashMap<>();
  107. map.put("purchaseorder",saleOrderRest);
  108. try {
  109. String s = JSONObject.toJSONString(map);
  110. JSONObject shenghe = purchaseOrderService.shenghe(s, getToaccount);
  111. }catch (Exception e){
  112. throw new OpenAPIException(e.getMessage(), e);
  113. }
  114. }
  115. public void getToaccount(){
  116. Properties prop = PropUtil.getProperties("/config.properties");
  117. getToaccount= prop.getProperty("to_account");
  118. }
  119. /**
  120. * 钉钉创建采购订单审批实列
  121. * @param processCode
  122. * @param agentid
  123. * @param userid 发起人
  124. * @param deptid 部门
  125. * @param map 数据
  126. * @throws ApiException
  127. */
  128. public Object createPurchaseOrder(String processCode, Long agentid, String userid, Long deptid, YonyouPurchaseOrder so,String data) throws ApiException {
  129. DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
  130. OapiProcessinstanceCreateRequest req = new OapiProcessinstanceCreateRequest();
  131. req.setAgentId(agentid);
  132. req.setProcessCode(processCode);
  133. req.setOriginatorUserId(userid);
  134. req.setDeptId(deptid);
  135. req.setCcPosition("START");
  136. String useridshenh = prop.getProperty("shenhe_userid");
  137. if (!useridshenh.equals("")){
  138. List<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo> processInstanceApproverVoList = new ArrayList<OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo>();
  139. OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo processInstanceApproverVo = new OapiProcessinstanceCreateRequest.ProcessInstanceApproverVo();
  140. processInstanceApproverVoList.add(processInstanceApproverVo);
  141. processInstanceApproverVo.setTaskActionType("NONE");
  142. processInstanceApproverVo.setUserIds(Arrays.asList(useridshenh));
  143. req.setApproversV2(processInstanceApproverVoList);
  144. }
  145. if (so!=null){
  146. List<OapiProcessinstanceCreateRequest.FormComponentValueVo> formComponentValueVoList = new ArrayList<OapiProcessinstanceCreateRequest.FormComponentValueVo>();
  147. OapiProcessinstanceCreateRequest.FormComponentValueVo formComponentValueVo = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  148. formComponentValueVo.setName("业务类型");
  149. if (so.getOperation_type_code()!=null&&!so.getOperation_type_code().equals("")){
  150. formComponentValueVo.setValue(so.getOperation_type_code());
  151. }else {
  152. formComponentValueVo.setValue("暂无");
  153. }
  154. formComponentValueVoList.add(formComponentValueVo);
  155. OapiProcessinstanceCreateRequest.FormComponentValueVo fc2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  156. fc2.setName("单据编号");
  157. fc2.setValue(so.getCode());
  158. fc2.setExtValue(data);
  159. formComponentValueVoList.add(fc2);
  160. OapiProcessinstanceCreateRequest.FormComponentValueVo fc = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  161. fc.setName("单据日期");
  162. fc.setValue(so.getDate());
  163. formComponentValueVoList.add(fc);
  164. OapiProcessinstanceCreateRequest.FormComponentValueVo fc3 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  165. fc3.setName("供应商名称");
  166. if (so.getVendorname()!=null&&!so.getVendorname().equals("")){
  167. fc3.setValue(so.getVendorname());
  168. }else {
  169. fc3.setValue("暂无");
  170. }
  171. formComponentValueVoList.add(fc3);
  172. OapiProcessinstanceCreateRequest.FormComponentValueVo fv = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  173. fv.setName("收货地址");
  174. if (so.getDefine11()!=null&&!so.getDefine11().equals("")){
  175. fv.setValue(so.getDefine11());
  176. }else {
  177. fv.setValue("暂无");
  178. }
  179. formComponentValueVoList.add(fv);
  180. OapiProcessinstanceCreateRequest.FormComponentValueVo fc4 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  181. fc4.setName("部门");
  182. if (so.getDeptname()!=null&&!so.getDeptname().equals("")){
  183. fc4.setValue(so.getDeptname());
  184. }else {
  185. fc4.setValue("暂无");
  186. }
  187. formComponentValueVoList.add(fc4);
  188. OapiProcessinstanceCreateRequest.FormComponentValueVo fc5 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  189. fc5.setName("业务员");
  190. if (so.getPersonname()!=null&&!so.getPersonname().equals("")){
  191. fc5.setValue(so.getPersonname());
  192. }else {
  193. fc5.setValue("暂无");
  194. }
  195. formComponentValueVoList.add(fc5);
  196. OapiProcessinstanceCreateRequest.FormComponentValueVo fc6 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  197. fc6.setName("币种");
  198. fc6.setValue("人民币");
  199. formComponentValueVoList.add(fc6);
  200. OapiProcessinstanceCreateRequest.FormComponentValueVo f= new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  201. f.setName("制单人");
  202. if (so.getMaker()!=null&&!so.getMaker().equals("")){
  203. f.setValue(so.getMaker());
  204. }else {
  205. f.setValue("暂无");
  206. }
  207. formComponentValueVoList.add(f);
  208. List<List<OapiProcessinstanceCreateRequest.FormComponentValueVo>>ls=new ArrayList<>();
  209. for (YonyouPurchaseMaterial s:so.getEntry()){
  210. List<OapiProcessinstanceCreateRequest.FormComponentValueVo>mingxilist=new ArrayList<>();
  211. OapiProcessinstanceCreateRequest.FormComponentValueVo mingxi2 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  212. mingxi2.setName("存货名称");
  213. if (s.getInventoryname()!=null&&!s.getInventoryname().equals("")){
  214. mingxi2.setValue(s.getInventoryname());
  215. }else {
  216. mingxi2.setValue("暂无");
  217. }
  218. mingxilist.add(mingxi2);
  219. OapiProcessinstanceCreateRequest.FormComponentValueVo fo = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  220. fo.setName("数量");
  221. if (s.getQuantity()!=null&&!s.getQuantity().equals("0E-10")){
  222. fo.setValue(s.getQuantity());
  223. }else {
  224. fo.setValue("0");
  225. }
  226. mingxilist.add(fo);
  227. OapiProcessinstanceCreateRequest.FormComponentValueVo fc7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  228. fc7.setName("含税单价");
  229. if (s.getTax()!=null&&!s.getTax().equals("0E-10")){
  230. fc7.setValue(s.getTax());
  231. }else {
  232. fc7.setValue("0");
  233. }
  234. mingxilist.add(fc7);
  235. OapiProcessinstanceCreateRequest.FormComponentValueVo fc8 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  236. fc8.setName("无税单价");
  237. if (s.getPrice()!=null&&!s.getPrice().equals("0E-10")){
  238. fc8.setValue(s.getPrice());
  239. }else {
  240. fc8.setValue("0");
  241. }
  242. mingxilist.add(fc8);
  243. OapiProcessinstanceCreateRequest.FormComponentValueVo fc9 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  244. fc9.setName("税率");
  245. if (s.getTaxrate()!=null&&!s.getTaxrate().equals("0E-10")){
  246. fc9.setValue(s.getTaxrate());
  247. }else {
  248. fc9.setValue("暂无");
  249. }
  250. mingxilist.add(fc9);
  251. OapiProcessinstanceCreateRequest.FormComponentValueVo fc10= new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  252. fc10.setName("无税金额");
  253. if (s.getMoney()!=null&&!s.getMoney().equals("0E-10")){
  254. fc10.setValue(s.getMoney());
  255. }else {
  256. fc10.setValue("0");
  257. }
  258. mingxilist.add(fc10);
  259. OapiProcessinstanceCreateRequest.FormComponentValueVo fc11= new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  260. fc11.setName("税额");
  261. if (s.getMoney()!=null&&!s.getMoney().equals("0E-10")){
  262. BigDecimal sum=new BigDecimal(s.getSum());
  263. BigDecimal money=new BigDecimal(s.getMoney());
  264. BigDecimal subtract = sum.subtract(money);
  265. fc11.setValue(subtract.toString());
  266. }else {
  267. fc11.setValue("0");
  268. }
  269. // fc11.setValue(s.getTax());
  270. mingxilist.add(fc11);
  271. OapiProcessinstanceCreateRequest.FormComponentValueVo fc12= new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  272. fc12.setName("价税合计");
  273. if (s.getSum()!=null&&!s.getSum().equals("0E-10")){
  274. fc12.setValue(s.getSum());
  275. }else {
  276. fc12.setValue("0");
  277. }
  278. mingxilist.add(fc12);
  279. if (s.getArrivedate()!=null&&!s.getArrivedate().equals("")){
  280. OapiProcessinstanceCreateRequest.FormComponentValueVo fc13= new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  281. fc13.setName("交期");
  282. fc13.setValue(s.getArrivedate());
  283. mingxilist.add(fc13);
  284. }
  285. ls.add(mingxilist);
  286. }
  287. OapiProcessinstanceCreateRequest.FormComponentValueVo obj7 = new OapiProcessinstanceCreateRequest.FormComponentValueVo();
  288. obj7.setName("表格");
  289. obj7.setValue(JSON.toJSONString(ls));
  290. formComponentValueVoList.add(obj7);
  291. req.setFormComponentValues(formComponentValueVoList);
  292. dingdingOpenInterface.getToken();
  293. OapiProcessinstanceCreateResponse rsp = client.execute(req, dingdingOpenInterface.gettoken);
  294. System.out.println(rsp.getBody());
  295. String code = rsp.getErrorCode();
  296. if (code.equals("0")||code.equals(0)){
  297. return rsp.getProcessInstanceId();
  298. }else {
  299. return null;
  300. }
  301. }else {
  302. return null;
  303. }
  304. }
  305. public static void main(String[] args) throws OpenAPIException {
  306. PurchaseOrderService purchaseOrderService=new PurchaseOrderService();
  307. purchaseOrderService.getToaccount();
  308. List<YonyouPurchaseOrder>list=new ArrayList<>();
  309. YonyouPurchaseOrder yonyouPurchaseOrder=new YonyouPurchaseOrder();
  310. YonyouPurchaseMaterial yonyouPurchaseMaterial=new YonyouPurchaseMaterial();
  311. yonyouPurchaseMaterial.setInventorycode("0907");
  312. yonyouPurchaseMaterial.setQuantity("23");
  313. yonyouPurchaseOrder.setVendorcode("010003");
  314. List<YonyouPurchaseMaterial> entry = yonyouPurchaseOrder.getEntry();
  315. entry.add(yonyouPurchaseMaterial);
  316. yonyouPurchaseOrder.setEntry(entry);
  317. list.add(yonyouPurchaseOrder);
  318. purchaseOrderService.yonyouAddPurchaseOrder(list);
  319. }
  320. }