| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.entity.param.OpenOrderPakoutParam; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.OrderDetlService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.ErpAccessTokenScheduler; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Service |
| | | @Transactional |
| | | public class OrderSendHandler extends AbstractHandler<String> { |
| | | private static final String erpIp = "10.100.221.19:81"; |
| | | private static final String inPath = "/ierp/kapi/app/im/PurinbillApiPlugin"; |
| | | private static final String outPath = "/ierp/kapi/app/im/SaloutbillApiPlugin"; |
| | | |
| | | @Value("${u8.url}") |
| | | private String url; |
| | | |
| | | |
| | | @Value("${u8.path}") |
| | | private String orderReportPath; |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | |
| | | public void start(Order order) { |
| | | String accessToken = ErpAccessTokenScheduler.accessToken; |
| | | if (accessToken.equals("")) { |
| | | return; |
| | | |
| | | List<OpenOrderPakoutParam> paramList = new ArrayList<>(); |
| | | OpenOrderPakoutParam param = new OpenOrderPakoutParam(); |
| | | // paramList.add(param); |
| | | |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | param.setcCode(order.getOrderNo()); |
| | | param.setcMaker(order.getOperMemb()); |
| | | param.setcCusName(order.getCstmrName()); |
| | | param.setcAccount(order.getNumber()); |
| | | param.setcMemo(order.getMemo()); |
| | | param.setType(Cools.isEmpty(order.getDocType$()) ? "" : order.getDocType$()); |
| | | param.setdDate(Utils.getDateStr(new Date())); |
| | | param.setAllocation(order.getItemName()); |
| | | |
| | | |
| | | List<OpenOrderPakoutParam.Body> bodyList = new ArrayList<>(); |
| | | param.setaDDBody(bodyList); |
| | | |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | OpenOrderPakoutParam.Body body = new OpenOrderPakoutParam.Body(); |
| | | body.setiQuantity(orderDetl.getQty()); |
| | | body.setcInvCode(orderDetl.getMatnr()); |
| | | body.setCbMemo(orderDetl.getMemo()); |
| | | bodyList.add(body); |
| | | } |
| | | |
| | | HashMap<String, Object> header = new HashMap<>(); |
| | | header.put("accessToken",accessToken); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("orderNo",order.getOrderNo()); |
| | | HttpHandler.Builder prepBuilder = new HttpHandler.Builder() |
| | | .setUri(erpIp) |
| | | .setHeaders(header) |
| | | .setJson(jsonObject.toJSONString()); |
| | | JSONObject respJson; |
| | | doHttpRequest(param, "上报ERP出库单据", url, orderReportPath, null, "127.0.0.1"); |
| | | |
| | | orderService.updateSettle(order.getId(), 6L, 0L); |
| | | |
| | | |
| | | //入库单据 |
| | | if (docTypeService.selectOne(new EntityWrapper<DocType>() |
| | | .eq("doc_id",order.getDocType())).getPakin() == 1) { |
| | | try { |
| | | respJson = JSON.parseObject( |
| | | prepBuilder.setPath(inPath) |
| | | .build() |
| | | .doPost()); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip) { |
| | | String response = ""; |
| | | boolean success = false; |
| | | log.info(JSONObject.toJSONString(requestParam)); |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(url) |
| | | .setPath(path) |
| | | .setJson(JSONObject.toJSONString(requestParam)) |
| | | .build() |
| | | .doPost(); |
| | | log.info("上报ERP出库单据请求返回报文:{}", response); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (Cools.isEmpty(jsonObject.get("ErrorCode"))) { |
| | | throw new CoolException(jsonObject.get("ErrorMsg").toString()); |
| | | } |
| | | }else { |
| | | //出库单据 |
| | | try { |
| | | respJson = JSON.parseObject( |
| | | prepBuilder.setPath(outPath) |
| | | .build() |
| | | .doPost()); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | if ((boolean)respJson.get("success")) { |
| | | orderService.updateSettle(order.getId(),6L,1L); |
| | | log.info("单据:" + order.getOrderNo() + "回传成功,已更新单据状态"); |
| | | }else { |
| | | |
| | | order.setItemId(order.getItemId() + 1); |
| | | orderService.updateById(order); |
| | | log.info("单据:"+ order.getOrderNo()+" 回传失败,这是第" + order.getItemId() + "次回传"); |
| | | log.info(respJson.toJSONString()); |
| | | int code = Integer.parseInt(jsonObject.get("ErrorCode").toString()); |
| | | if (code == 0) { |
| | | throw new CoolException(jsonObject.get("ErrorMsg").toString()); |
| | | } |
| | | success = true; |
| | | return code; |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | throw new CoolException("调用接口响应错误"); |
| | | } finally { |
| | | apiLogService.save( |
| | | namespace, |
| | | url + path, |
| | | appkey, |
| | | ip, |
| | | JSON.toJSONString(JSONObject.toJSONString(requestParam)), |
| | | response, |
| | | success |
| | | ); |
| | | } |
| | | |
| | | } |
| | | } |