| | |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.service.ReportToThirdService; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.nc.SendUtil; |
| | | import com.zy.nc.entity.NccCgCgdhdWms; |
| | | import com.zy.nc.entity.NccSaleXsfhmxWms; |
| | | import com.zy.nc.util.NcResultMessage; |
| | | import com.zy.nc.vo.*; |
| | | 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 java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | @Slf4j |
| | |
| | | |
| | | @Override |
| | | public void report(Order order, List<OrderDetl> orderDetls, DocType docType) { |
| | | Boolean http = false; |
| | | switch (order.getDocType().toString()) { |
| | | case "销售发货": |
| | | http = http("", docType.getDocName(), nyncIp + port, saveRefDelivery); |
| | | if (Cools.isEmpty(order.getShipCode()) || order.getShipCode().equalsIgnoreCase("1")) { |
| | | |
| | | } |
| | | break; |
| | | case "产成品入库": |
| | | break; |
| | | case "辅料采购入库": |
| | | break; |
| | | case "辅料及成品转库": |
| | | break; |
| | | case "自动包装入库": |
| | | break; |
| | | case "内部调拨": |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | if (http) { |
| | | // 修改订单状态 4.完成 ===>> 6.已上报 |
| | | if (!orderService.updateSettle(order.getId(), 6L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | int step = (Cools.isEmpty(order.getStep()) || order.getStep() == 0) ? 0 : order.getStep(); |
| | | NcResultMessage response = null; |
| | | Object process1 = null; |
| | | Object process2 = null; |
| | | Object process3 = null; |
| | | try { |
| | | switch (order.getDocType$().toString()) { |
| | | case "销售发货": |
| | | process1 = processXSFH(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 10; |
| | | } |
| | | break; |
| | | case "转库": |
| | | process1 = processQTRK(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 10; |
| | | } |
| | | break; |
| | | case "采购到货": |
| | | process1 = processCGDH(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 10; |
| | | } |
| | | break; |
| | | case "产成品入库单": |
| | | if (step == 2) { |
| | | process3 = processQTRK(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 10; |
| | | } |
| | | } else if (step == 1) { |
| | | process2 = processGENERALOUT(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 2; |
| | | } |
| | | process3 = processQTRK(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 10; |
| | | } |
| | | } else if (step == 0) { |
| | | process1 = processZK(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 1; |
| | | } |
| | | process2 = processGENERALOUT(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 2; |
| | | } |
| | | process3 = processQTRK(orderDetls); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("response:{}", response); |
| | | step = 10; |
| | | } |
| | | } |
| | | break; |
| | | // case "内部调拨": |
| | | // break; |
| | | default: |
| | | throw new CoolException("不能识别的单据类型"); |
| | | } |
| | | if (step == 10) { |
| | | // 修改订单状态 4.完成 ===>> 6.已上报 |
| | | if (!orderService.updateSettle(order.getId(), 6L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | } else if (step != 0) { |
| | | // 修改订单状态 做标记 |
| | | if (!orderService.updateSettleStep(order.getId(), 6L, null, step)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new CoolException("调用接口报错,请联系管理员"); |
| | | } finally { |
| | | reportApiLog(response, order.getDocType$(), nyncIp, saveRefDelivery); |
| | | } |
| | | |
| | | } |
| | | |
| | | private Boolean http(Object data, String docType, String url, String path) { |
| | | |
| | | private Object processXSFH(List<OrderDetl> orderDetls) { |
| | | //组装对象数据 |
| | | Map<String, Object> data = new HashMap<String, Object>(); |
| | | SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO(); |
| | | saleOutHeadVO.setPk_org("FYT"); |
| | | saleOutHeadVO.setCwarehouseid("6101"); |
| | | SaleOutBodyVO saleOutBodyVO = null; |
| | | List<SaleOutBodyVO> saleOutBodyVOList = new ArrayList<>(); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | saleOutBodyVO = new SaleOutBodyVO(); |
| | | String remark = orderDetl.getRemark(); |
| | | if (!Cools.isEmpty(remark)) { |
| | | NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); |
| | | saleOutBodyVO.setCsourcetype("4331"); |
| | | saleOutBodyVO.setClocationid("610101"); |
| | | saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid()); |
| | | saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid()); |
| | | saleOutHeadVO.setVdef2(nccSaleXsfhmxWms.getVdef2()); |
| | | saleOutHeadVO.setVdef3(nccSaleXsfhmxWms.getVdef3()); |
| | | saleOutHeadVO.setVdef4(nccSaleXsfhmxWms.getVdef4()); |
| | | saleOutHeadVO.setVdef7(nccSaleXsfhmxWms.getVdef7()); |
| | | saleOutHeadVO.setVdef8(nccSaleXsfhmxWms.getVdef8()); |
| | | saleOutHeadVO.setVdef13(nccSaleXsfhmxWms.getVdef13()); |
| | | saleOutHeadVO.setVdef14(nccSaleXsfhmxWms.getVdef14()); |
| | | } |
| | | saleOutBodyVO.setVbatchcode(orderDetl.getBatch()); |
| | | saleOutBodyVO.setNshouldnum(orderDetl.getAnfme()); |
| | | saleOutBodyVO.setNnum(orderDetl.getQty()); |
| | | saleOutBodyVOList.add(saleOutBodyVO); |
| | | } |
| | | data.put("SaleOutHeadVO", saleOutHeadVO); |
| | | data.put("SaleOutBodyVO", saleOutBodyVOList); |
| | | return data; |
| | | } |
| | | |
| | | |
| | | private Object processQTRK(List<OrderDetl> orderDetls) { |
| | | //组装对象数据 |
| | | Map<String, Object> data = new HashMap<String, Object>(); |
| | | GeneralInHeadVO generalInHeadVO = new GeneralInHeadVO(); |
| | | generalInHeadVO.setPk_org("FYT"); |
| | | generalInHeadVO.setCwarehouseid("6101"); |
| | | GeneralInBodyVO generalInBodyVO = null; |
| | | List<GeneralInBodyVO> generalInBodyVOS = new ArrayList<>(); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | generalInBodyVO = new GeneralInBodyVO(); |
| | | String remark = orderDetl.getRemark(); |
| | | if (!Cools.isEmpty(remark)) { |
| | | NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); |
| | | generalInBodyVO.setCsourcetype("4331"); |
| | | generalInBodyVO.setClocationid("610101"); |
| | | generalInBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid()); |
| | | generalInBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid()); |
| | | generalInBodyVO.setNnum(orderDetl.getQty()); |
| | | generalInBodyVO.setVbatchcode(orderDetl.getBatch()); |
| | | generalInBodyVO.setCmaterialoid(orderDetl.getMatnr()); |
| | | } |
| | | generalInBodyVOS.add(generalInBodyVO); |
| | | } |
| | | data.put("GeneralInHeadVO", generalInHeadVO); |
| | | data.put("GeneralInBodyVO", generalInBodyVOS); |
| | | return data; |
| | | } |
| | | |
| | | |
| | | private Object processZK(List<OrderDetl> orderDetls) { |
| | | //组装对象数据 |
| | | Map<String, Object> data = new HashMap<String, Object>(); |
| | | WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO(); |
| | | whsTransBillHeaderVO.setPk_org("FYT"); |
| | | whsTransBillHeaderVO.setCwarehouseid("6101"); |
| | | WhsTransBillBodyVO whsTransBillBodyVO = null; |
| | | List<WhsTransBillBodyVO> whsTransBillBodyVOS = new ArrayList<>(); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | whsTransBillBodyVO = new WhsTransBillBodyVO(); |
| | | String remark = orderDetl.getRemark(); |
| | | if (!Cools.isEmpty(remark)) { |
| | | NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); |
| | | whsTransBillBodyVO.setCsourcetype("4331"); |
| | | whsTransBillBodyVO.setClocationid("610101"); |
| | | whsTransBillBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid()); |
| | | whsTransBillBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid()); |
| | | whsTransBillBodyVO.setNnum(orderDetl.getQty()); |
| | | whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch()); |
| | | whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr()); |
| | | } |
| | | whsTransBillBodyVOS.add(whsTransBillBodyVO); |
| | | } |
| | | data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO); |
| | | data.put("WhsTransBillBodyVO", whsTransBillBodyVOS); |
| | | return data; |
| | | } |
| | | |
| | | private Object processCGDH(List<OrderDetl> orderDetls) { |
| | | //组装对象数据 |
| | | Map<String, Object> data = new HashMap<String, Object>(); |
| | | ic_purchasein_h ic_purchasein_h = new ic_purchasein_h(); |
| | | ic_purchasein_h.setPk_org("FYT"); |
| | | ic_purchasein_h.setCwarehouseid("6101"); |
| | | ic_purchasein_b ic_purchasein_b = null; |
| | | List<ic_purchasein_b> ic_purchasein_bs = new ArrayList<>(); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | ic_purchasein_b = new ic_purchasein_b(); |
| | | String remark = orderDetl.getRemark(); |
| | | if (!Cools.isEmpty(remark)) { |
| | | NccCgCgdhdWms nccCgCgdhdWms = JSONObject.parseObject(remark, NccCgCgdhdWms.class); |
| | | ic_purchasein_b.setCsourcebillbid(nccCgCgdhdWms.getPkArriveorderB()); |
| | | ic_purchasein_b.setCsourcebillhid(nccCgCgdhdWms.getPkArriveorder()); |
| | | ic_purchasein_b.setCmaterialvid(orderDetl.getMaktx()); |
| | | ic_purchasein_b.setNnum(orderDetl.getQty()); |
| | | ic_purchasein_b.setNshouldassistnum(orderDetl.getQty()); |
| | | //ic_purchasein_b.setNorigprice(nccSaleXsfhmxWms.getNorigprice().doubleValue()); |
| | | } |
| | | ic_purchasein_bs.add(ic_purchasein_b); |
| | | } |
| | | data.put("ic_purchasein_h", ic_purchasein_h); |
| | | data.put("ic_purchasein_b", ic_purchasein_b); |
| | | return data; |
| | | } |
| | | |
| | | /** |
| | | * @param orderDetls |
| | | * @return |
| | | */ |
| | | private Object processGENERALOUT(List<OrderDetl> orderDetls) { |
| | | //组装对象数据 |
| | | Map<String, Object> data = new HashMap<String, Object>(); |
| | | ic_purchasein_h ic_purchasein_h = new ic_purchasein_h(); |
| | | ic_purchasein_h.setPk_org("FYT"); |
| | | ic_purchasein_h.setCwarehouseid("6101"); |
| | | ic_purchasein_b ic_purchasein_b = null; |
| | | List<ic_purchasein_b> ic_purchasein_bs = new ArrayList<>(); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | ic_purchasein_b = new ic_purchasein_b(); |
| | | String remark = orderDetl.getRemark(); |
| | | if (!Cools.isEmpty(remark)) { |
| | | NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); |
| | | |
| | | } |
| | | ic_purchasein_bs.add(ic_purchasein_b); |
| | | } |
| | | data.put("ic_purchasein_h", ic_purchasein_h); |
| | | data.put("ic_purchasein_b", ic_purchasein_b); |
| | | return data; |
| | | } |
| | | |
| | | |
| | | private Boolean reportApiLog(Object data, String docType, String url, String path) { |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(url) |
| | | .setPath(path) |
| | | .setJson(JSON.toJSONString(data)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(1)) { |
| | | return true; |
| | | } |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", url + path, JSON.toJSONString(data), response); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | apiLogService.save( |
| | | docType, |
| | | url + path, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(data), |
| | | response, |
| | | success |
| | | ); |
| | | } |
| | | apiLogService.save( |
| | | docType, |
| | | url + path, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(data), |
| | | response, |
| | | success |
| | | ); |
| | | return false; |
| | | } |
| | | } |