| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.entity.StoreType; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.service.ReportToThirdService; |
| | | import com.zy.asrs.service.StoreTypeService; |
| | | import com.zy.nc.SendUtil; |
| | | import com.zy.nc.entity.NccCgCgdhdWms; |
| | | import com.zy.nc.entity.NccSaleDbddWms; |
| | | import com.zy.nc.entity.NccSaleXsfhmxWms; |
| | | import com.zy.nc.entity.NccScZkmxbWms; |
| | | import com.zy.nc.entity.*; |
| | | import com.zy.nc.service.NccScPcdaWmsService; |
| | | import com.zy.nc.util.NcResultMessage; |
| | | import com.zy.nc.vo.*; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | |
| | | @Autowired |
| | | private StoreTypeService storeTypeService; |
| | | |
| | | @Autowired |
| | | private NccScPcdaWmsService nccScPcdaWmsService; |
| | | |
| | | @Value("${NYNC.ip}") |
| | | private String nyncIp; |
| | |
| | | NcResultMessage response = null; |
| | | Object process1 = null; |
| | | Object process2 = null; |
| | | String memo = order.getMemo(); |
| | | String remark = ""; |
| | | try { |
| | | switch (order.getDocType$().toString()) { |
| | | case "销售发货": |
| | | process1 = processXSFH(orderDetls); |
| | | case "销售退货": |
| | | process1 = processXSFH(orderDetls, true); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("销售发货response:{}", response); |
| | | step = 10; |
| | | } else { |
| | | remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); |
| | | } |
| | | break; |
| | | case "销售发货": |
| | | process1 = processXSFH(orderDetls, false); |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("销售发货response:{}", response); |
| | | step = 10; |
| | | } else { |
| | | remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); |
| | | } |
| | | break; |
| | | case "转库-入库": |
| | |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("转库-入库response:{}", response); |
| | | step = 10; |
| | | } else { |
| | | remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); |
| | | } |
| | | break; |
| | | case "采购到货": |
| | |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("采购到货response:{}", response); |
| | | step = 10; |
| | | } else { |
| | | remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); |
| | | } |
| | | break; |
| | | case "转库-出库": |
| | | if (step == 1) { |
| | | process2 = processGENERALOUT2(orderDetls); |
| | | process2 = processGENERALOUT2(orderDetls, order.getOperMemb(), order.getItemId(), memo); |
| | | List<Object> zkck2 = new ArrayList<>(); |
| | | zkck2.add(process2); |
| | | //发送请求 |
| | |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("转库-出库2response:{}", response); |
| | | step = 10; |
| | | } else { |
| | | remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); |
| | | } |
| | | } else { |
| | | process1 = processZKCK(order, orderDetls); |
| | |
| | | //发送请求 |
| | | response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, whstrans, JSONObject.toJSONString(zkck1)); |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | step = 1; |
| | | log.info("转库-出库1response:{}", response); |
| | | memo = response.getData().toString(); |
| | | |
| | | process2 = processGENERALOUT2(orderDetls); |
| | | process2 = processGENERALOUT2(orderDetls, order.getOperMemb(), order.getItemId(), memo); |
| | | List<Object> zkck2 = new ArrayList<>(); |
| | | zkck2.add(process2); |
| | | //发送请求 |
| | |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("转库-出库2response:{}", response); |
| | | step = 10; |
| | | } else { |
| | | remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); |
| | | } |
| | | } else { |
| | | step = 1; |
| | | } |
| | | } |
| | | break; |
| | |
| | | if (!Cools.isEmpty(response) && response.isSuccess()) { |
| | | log.info("集团内部调拨response:{}", response); |
| | | step = 10; |
| | | } else { |
| | | remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); |
| | | } |
| | | break; |
| | | default: |
| | |
| | | } |
| | | } else if (step != 0) { |
| | | // 修改订单状态 做标记 |
| | | if (!orderService.updateSettleStep(order.getId(), 4L, null, step)) { |
| | | if (!orderService.updateSettleStep(order.getId(), 4L, null, step, memo, remark)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | private Object processXSFH(List<OrderDetl> orderDetls) { |
| | | private Object processXSFH(List<OrderDetl> orderDetls, Boolean flag) { |
| | | //组装对象数据 |
| | | 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) { |
| | | if (orderDetl.getQty() <= 0) { |
| | | continue; |
| | | } |
| | | 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.setClocationid("610101"); |
| | | saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid()); |
| | | saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid()); |
| | | saleOutHeadVO.setVdef2(nccSaleXsfhmxWms.getVdef2()); |
| | |
| | | saleOutHeadVO.setVdef13(nccSaleXsfhmxWms.getVdef13()); |
| | | saleOutHeadVO.setVdef14(nccSaleXsfhmxWms.getVdef14()); |
| | | } |
| | | saleOutHeadVO.setCwarehouseid(orderDetl.getStandby1()); |
| | | |
| | | saleOutBodyVO.setVbatchcode(orderDetl.getBatch()); |
| | | saleOutBodyVO.setNshouldnum(orderDetl.getAnfme()); |
| | | saleOutBodyVO.setNnum(orderDetl.getQty()); |
| | | saleOutBodyVO.setNshouldnum(flag ? -orderDetl.getQty() : orderDetl.getQty()); |
| | | saleOutBodyVO.setNnum(flag ? -orderDetl.getQty() : orderDetl.getQty()); |
| | | saleOutBodyVOList.add(saleOutBodyVO); |
| | | } |
| | | data.put("SaleOutHeadVO", saleOutHeadVO); |
| | |
| | | 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.setNnum(orderDetl.getQty()); |
| | | generalInBodyVO.setNshouldnum(orderDetl.getAnfme()); |
| | | generalInBodyVO.setCsourcetype(nccScZkmxbWms.getZklxbm()); |
| | | |
| | | } |
| | | generalInHeadVO.setCwarehouseid(orderDetl.getStandby1()); |
| | | generalInBodyVOS.add(generalInBodyVO); |
| | | } |
| | | data.put("GeneralInHeadVO", generalInHeadVO); |
| | |
| | | Map<String, Object> data = new HashMap<String, Object>(); |
| | | WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO(); |
| | | whsTransBillHeaderVO.setPk_org("FYT"); |
| | | whsTransBillHeaderVO.setCwarehouseid(order.getItemId()); |
| | | whsTransBillHeaderVO.setCotherwhid(order.getItemId()); |
| | | whsTransBillHeaderVO.setCtrantypeid("4K-01"); |
| | | WhsTransBillBodyVO whsTransBillBodyVO = null; |
| | | List<WhsTransBillBodyVO> whsTransBillBodyVOS = new ArrayList<>(); |
| | |
| | | whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr()); |
| | | whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch()); |
| | | //} |
| | | whsTransBillHeaderVO.setCotherbizid(orderDetl.getStandby1()); |
| | | whsTransBillHeaderVO.setCwarehouseid(orderDetl.getStandby1()); |
| | | whsTransBillBodyVOS.add(whsTransBillBodyVO); |
| | | } |
| | | data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO); |
| | |
| | | NccCgCgdhdWms nccCgCgdhdWms = JSONObject.parseObject(remark, NccCgCgdhdWms.class); |
| | | ic_purchasein_h.setCvendorid(nccCgCgdhdWms.getGysbm()); |
| | | ic_purchasein_h.setCtrantypeid(nccCgCgdhdWms.getDhlxbm()); |
| | | |
| | | |
| | | ic_purchasein_b.setCsourcebillbid(nccCgCgdhdWms.getPkArriveorderB()); |
| | | ic_purchasein_b.setCsourcebillhid(nccCgCgdhdWms.getPkArriveorder()); |
| | |
| | | String remark = orderDetl.getRemark(); |
| | | if (!Cools.isEmpty(remark)) { |
| | | NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); |
| | | generalout_b.setMaterialvid(orderDetl.getMatnr()); |
| | | generalout_b.setCmaterialvid(orderDetl.getMatnr()); |
| | | generalout_b.setNshouldassistnum(orderDetl.getQty()); |
| | | generalout_b.setVbatchcode(orderDetl.getBatch()); |
| | | } |
| | |
| | | * @param orderDetls |
| | | * @return |
| | | */ |
| | | private Object processGENERALOUT2(List<OrderDetl> orderDetls) { |
| | | private Object processGENERALOUT2(List<OrderDetl> orderDetls, String renyuan, String rukucangku, String memo) { |
| | | Object o = JSONObject.parseArray(memo).get(0); |
| | | JSONObject jsonObject = JSONObject.parseObject(o.toString()); |
| | | String cspecialhid = JSONObject.parseObject(jsonObject.getString("ic.WhsTransBillHeaderVO")).getString("cspecialhid"); |
| | | List<String> s = new ArrayList<>(); |
| | | JSONArray objects = JSONObject.parseArray(jsonObject.getString("ic.WhsTransBillBodyVO")); |
| | | for (int i = 0; i < objects.size(); i++) { |
| | | s.add(objects.getJSONObject(i).getString("cspecialbid")); |
| | | } |
| | | |
| | | //组装对象数据 |
| | | Map<String, Object> data = new HashMap<String, Object>(); |
| | | ic_generalout_h generalout_h = new ic_generalout_h(); |
| | |
| | | generalout_h.setCwarehouseid("6101"); |
| | | ic_generalout_b generalout_b = null; |
| | | List<ic_generalout_b> ic_purchasein_bs = new ArrayList<>(); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | generalout_b = new ic_generalout_b(); |
| | | String remark = orderDetl.getRemark(); |
| | | if (!Cools.isEmpty(remark)) { |
| | | NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); |
| | | generalout_b.setMaterialvid(orderDetl.getMatnr()); |
| | | generalout_b.setNshouldassistnum(orderDetl.getQty()); |
| | | generalout_b.setVbatchcode(orderDetl.getBatch()); |
| | | for (int i = 0; i < orderDetls.size(); i++) { |
| | | NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", orderDetls.get(i).getBatch()).eq("wlbm", orderDetls.get(i).getMatnr())); |
| | | if (nccScPcdaWms == null) { |
| | | throw new CoolException("批次[{}]物料[{}]未找到" + orderDetls.get(i).getBatch() + orderDetls.get(i).getMatnr()); |
| | | } |
| | | OrderDetl orderDetl = orderDetls.get(i); |
| | | generalout_b = new ic_generalout_b(); |
| | | generalout_b.setCsourcebillbid(s.get(i)); |
| | | generalout_b.setCsourcetype("4K-01"); |
| | | generalout_b.setCsourcebillhid(cspecialhid); |
| | | generalout_b.setCmaterialvid(orderDetl.getMatnr()); |
| | | generalout_b.setCstateid(nccScPcdaWms.getVcode()); |
| | | StoreType storeType = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", orderDetl.getStandby1())); |
| | | generalout_b.setCdptvid(storeType.getDepartmentId()); |
| | | generalout_b.setBillmaker(renyuan); |
| | | StoreType storeType2 = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", rukucangku)); |
| | | generalout_b.setCotherwhid(rukucangku); |
| | | generalout_b.setCothercalbodyvid(storeType2.getDepartmentId()); |
| | | generalout_b.setNshouldassistnum(orderDetl.getQty()); |
| | | generalout_b.setVbatchcode(orderDetl.getBatch()); |
| | | ic_purchasein_bs.add(generalout_b); |
| | | } |
| | | data.put("ic_generalout_h", generalout_h); |