| | |
| | | //端口 |
| | | private String URL; |
| | | |
| | | @Value("${erp.address.inaddressSave}") |
| | | //上报入库地址 |
| | | private String inaddressSave; |
| | | // @Value("${erp.address.inaddressSave}") |
| | | // //上报入库地址 |
| | | // private String inaddressSave; |
| | | @Value("${erp.address.outaddressSave}") |
| | | //上报出库地址 |
| | | //上报出入库地址 |
| | | private String outaddressSave; |
| | | @Autowired |
| | | private OrderService orderService; |
| | |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | |
| | | public ReturnT<String> startPakIn() { |
| | | // 先查出 memo 为 null 的所有数据入库单 |
| | | // 查出所有数据入库单 |
| | | List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 34)); |
| | | for(Order order : orderList){ |
| | | List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>() |
| | | .isNull("memo") |
| | | .eq("order_No", order.getOrderNo())); |
| | | .eq("order_No", order.getOrderNo()));//memo为空表示仍未上报 |
| | | |
| | | List<OrderDetl> toReportList = new ArrayList<>(); |
| | | |
| | | // 循环判断 anfme 和 qty 是否相等 |
| | | // 循环判断 anfme 和 qty 是否相等,相等则表示已完成入库 |
| | | for (OrderDetl orderDetl : orderMemoList) { |
| | | if (orderDetl.getAnfme() != null && orderDetl.getQty() != null |
| | | && orderDetl.getAnfme().doubleValue() == orderDetl.getQty().doubleValue()) { |
| | |
| | | |
| | | // 如果有符合条件的数据,执行上报 |
| | | if (!toReportList.isEmpty()) { |
| | | reportPakIn(toReportList); |
| | | |
| | | for (OrderDetl detl : toReportList) { |
| | | detl.setMemo("1"); |
| | | orderDetlService.updateById(detl); |
| | | log.info("已完成单据上报 =====> " + detl); |
| | | boolean flag = reportPakIn(toReportList); |
| | | if(flag){ |
| | | for (OrderDetl detl : toReportList) { |
| | | detl.setMemo("1"); |
| | | orderDetlService.updateById(detl); |
| | | log.info("已完成单据上报 =====> " + detl); |
| | | } |
| | | } else { |
| | | log.warn("入库上报失败,未更新明细 memo 标志"); |
| | | } |
| | | } |
| | | } |
| | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | private void reportPakIn(List<OrderDetl> orderDetls) { |
| | | private boolean reportPakIn(List<OrderDetl> orderDetls) { |
| | | |
| | | ReturnT<String> start = loginAuthenticationHandler.start(); |
| | | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get("入库单"); |
| | | Date now = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | |
| | | JSONObject requestBody = new JSONObject(); |
| | | requestBody.put("billType", "入库单"); |
| | | |
| | | // 从第一个明细中提取订单号等信息(你可以根据实际情况调整) |
| | | // 从第一个明细中提取订单号等信息 |
| | | if (!orderDetls.isEmpty()) { |
| | | OrderDetl first = orderDetls.get(0); |
| | | requestBody.put("orderNo", first.getOrderNo()); |
| | |
| | | boolean success = false; |
| | | try { |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | // 假设你已经提前登录并获取了 cookie |
| | | // cookie |
| | | headers.put("Cookie", loginAuthenticationHandler.start().getContent()); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(inaddressSave) // 设置你的接口路径 |
| | | .setPath(outaddressSave) // 设置你的接口路径 |
| | | .setJson(requestBody.toJSONString()) |
| | | .build() |
| | | .doPost(); |
| | |
| | | try { |
| | | apiLogService.save( |
| | | "入库上报", |
| | | URL + inaddressSave, |
| | | URL + outaddressSave, |
| | | null, |
| | | "127.0.0.1", |
| | | requestBody.toJSONString(), |
| | |
| | | log.error("日志保存失败", e); |
| | | } |
| | | } |
| | | return success; |
| | | } |
| | | |
| | | public ReturnT<String> startPakOut() { |
| | | // 先查出 memo 为 null 的所有数据出库单 |
| | | // 所有数据出库单 |
| | | List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 33)); |
| | | for(Order order : orderList){ |
| | | List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>() |
| | |
| | | |
| | | // 如果有符合条件的数据,执行上报 |
| | | if (!toReportList.isEmpty()) { |
| | | reportPakOut(toReportList); |
| | | |
| | | for (OrderDetl detl : toReportList) { |
| | | detl.setMemo("1"); |
| | | orderDetlService.updateById(detl); |
| | | log.info("已完成单据上报 =====> " + detl); |
| | | boolean flag = reportPakOut(toReportList); |
| | | if(flag){ |
| | | for (OrderDetl detl : toReportList) { |
| | | detl.setMemo("1"); |
| | | orderDetlService.updateById(detl); |
| | | log.info("已完成单据上报 =====> " + detl); |
| | | } |
| | | } else { |
| | | log.warn("出库上报失败,未更新明细 memo 标志"); |
| | | } |
| | | } |
| | | } |
| | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | private void reportPakOut(List<OrderDetl> orderDetls) { |
| | | private boolean reportPakOut(List<OrderDetl> orderDetls) { |
| | | |
| | | ReturnT<String> start = loginAuthenticationHandler.start(); |
| | | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get("出库单"); |
| | | Date now = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | |
| | | JSONObject requestBody = new JSONObject(); |
| | | requestBody.put("billType", "出库单"); |
| | | |
| | | // 从第一个明细中提取订单号等信息(你可以根据实际情况调整) |
| | | // 从第一个明细中提取订单号等信息 |
| | | if (!orderDetls.isEmpty()) { |
| | | OrderDetl first = orderDetls.get(0); |
| | | requestBody.put("orderNo", first.getOrderNo()); |
| | |
| | | boolean success = false; |
| | | try { |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | // 假设你已经提前登录并获取了 cookie |
| | | //cookie |
| | | headers.put("Cookie", loginAuthenticationHandler.start().getContent()); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(inaddressSave) // 设置你的接口路径 |
| | | .setPath(outaddressSave) // 设置你的接口路径 |
| | | .setJson(requestBody.toJSONString()) |
| | | .build() |
| | | .doPost(); |
| | |
| | | log.error("日志保存失败", e); |
| | | } |
| | | } |
| | | return success; |
| | | } |
| | | |
| | | public static Object findValueByKey(JSONObject json, String key) { |