| | |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.entity.u8.ReportU8Vo; |
| | | import com.zy.asrs.entity.u8.U8ResultVo; |
| | | import com.zy.asrs.mapper.OrderMapper; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.OrderDetlService; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/7/7 |
| | |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | |
| | | private static final String baseUrl = "127.0.0.1:8081/jsjwms/open/asrs"; |
| | | private static final Map<String, String> pathMap = new HashMap<String, String>() {{ |
| | | put("采购入库", "/purchasein_import"); |
| | | put("销售出库", "/saleout_import"); |
| | | put("产成品入库单", "/productin_import"); |
| | | put("材料出库单", "/materialout_import"); |
| | | put("其他入库单", "/otherin_import"); |
| | | put("其他出库单", "/otherout_import"); |
| | | }}; |
| | | @Resource |
| | | private OrderMapper orderMapper; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | |
| | | } |
| | | // 出库完成上报 |
| | | if (docType.getPakout() == 1) { |
| | | if (true) { |
| | | return SUCCESS; |
| | | } |
| | | MesPakoutParam pakoutParam = new MesPakoutParam(); |
| | | pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime())); // todo:luxiaotao |
| | | pakoutParam.setLgortFrom("5008"); // todo:luxiaotao |
| | | pakoutParam.setLgortTo("5006"); // todo:luxiaotao |
| | | pakoutParam.setTag(!order.getDocType$().equalsIgnoreCase("手动出库单")); |
| | | pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime())); |
| | | pakoutParam.setLgortFrom("5006"); |
| | | pakoutParam.setLgortTo("1111"); |
| | | if (!pakoutParam.isTag()) { |
| | | pakoutParam.setKunnr("C1000"); |
| | | } |
| | | pakoutParam.setOrderNo(order.getOrderNo()); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); |
| | | pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); |
| | |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(MesConstant.URL) |
| | | .setPath(MesConstant.PAKOUT_URL) // todo:luxiaotao |
| | | .setPath(MesConstant.PAKOUT_URL) |
| | | .setJson(JSON.toJSONString(pakoutParam)) |
| | | .build() |
| | | .doPost(); |
| | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | public void startNew(Map.Entry<String, List<Order>> orderMap) { |
| | | String docName = orderMap.getKey(); |
| | | List<Order> value = orderMap.getValue(); |
| | | String path = pathMap.get(docName); |
| | | if (path == null) { |
| | | log.info("单据类型不存在:{}", docName); |
| | | return; |
| | | } |
| | | // 构造请求体 |
| | | List<ReportU8Vo> requestBody = getRequestBody(docName, value); |
| | | String requestJson = JSONObject.toJSONString(requestBody); |
| | | String response = ""; |
| | | boolean success = false; |
| | | String errorMsg = null; |
| | | String url = baseUrl + path; |
| | | String nameSpaces = "单据上报"; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(baseUrl) |
| | | .setPath(path) |
| | | .setJson(requestJson) |
| | | .build() |
| | | .doPost(); |
| | | List<U8ResultVo> list = JSON.parseArray(response, U8ResultVo.class); |
| | | if (list != null && list.size() != 0) { |
| | | List<String> successReceiptNos = list.stream().filter(u8ResultVo -> "T".equals(u8ResultVo.getResult())).map(U8ResultVo::getReceiptNo).collect(Collectors.toList()); |
| | | if (!successReceiptNos.isEmpty()) { |
| | | orderMapper.batchUpdateSettleByOrderNos(successReceiptNos); |
| | | } |
| | | log.info("单据上报成功,单据编号:{}", successReceiptNos); |
| | | success = true; |
| | | } else { |
| | | errorMsg = response; |
| | | log.error(nameSpaces + "调用外部接口失败,url:{},request:{},response:{}", url, requestJson, response); |
| | | } |
| | | } catch (Exception e) { |
| | | errorMsg = e.getMessage(); |
| | | log.error(nameSpaces + "调用外部接口异常,url:{},request:{},response:{}", url, requestJson, response, e); |
| | | } finally { |
| | | try { |
| | | apiLogService.save( |
| | | nameSpaces, |
| | | url, |
| | | null, |
| | | "127.0.0.1", |
| | | requestJson, |
| | | response, |
| | | success, |
| | | errorMsg |
| | | ); |
| | | } catch (Exception e) { |
| | | log.error(nameSpaces + "保存接口日志失败", e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private List<ReportU8Vo> getRequestBody(String docName, List<Order> value) { |
| | | List<ReportU8Vo> list = new ArrayList<>(); |
| | | String now = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); |
| | | switch (docName) { |
| | | case "采购入库": |
| | | for (Order order : value) { |
| | | ReportU8Vo reportU8Vo = new ReportU8Vo(); |
| | | reportU8Vo.setCaccid("001"); |
| | | reportU8Vo.setCvouchcode(order.getOrderNo()); |
| | | reportU8Vo.setDdate(now); |
| | | reportU8Vo.setCgltype(order.getDocType$()); |
| | | reportU8Vo.setCwhcode("103"); |
| | | reportU8Vo.setCrdcode("101"); |
| | | reportU8Vo.setCmaker(order.getCreateBy$()); |
| | | reportU8Vo.setChandler(order.getUpdateBy$()); |
| | | List<ReportU8Vo.Item> itemList = new ArrayList<>(); |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | String docType$ = order.getDocType$(); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | ReportU8Vo.Item item = new ReportU8Vo.Item(); |
| | | item.setCinvcode(orderDetl.getMatnr()); |
| | | item.setIquantity(orderDetl.getQty()); |
| | | item.setAutoidPo(orderDetl.getSku()); |
| | | item.setPoautoidcol(docType$.equals("采购订单") ? "ID" : docType$.equals("采购到货单") || docType$.equals("委外到货单") ? "Autoid" : |
| | | docType$.equals("委外订单") ? "MODetailsID" : ""); |
| | | item.setCbatch(orderDetl.getBatch()); |
| | | itemList.add(item); |
| | | } |
| | | reportU8Vo.setDetailList(itemList); |
| | | list.add(reportU8Vo); |
| | | } |
| | | break; |
| | | case "销售出库": |
| | | for (Order order : value) { |
| | | ReportU8Vo reportU8Vo = new ReportU8Vo(); |
| | | reportU8Vo.setCaccid("001"); |
| | | reportU8Vo.setCvouchcode(order.getOrderNo()); |
| | | reportU8Vo.setDdate(now); |
| | | reportU8Vo.setCgltype(order.getDocType$()); |
| | | reportU8Vo.setCwhcode("101"); |
| | | reportU8Vo.setCrdcode("201"); |
| | | reportU8Vo.setCmaker(order.getCreateBy$()); |
| | | reportU8Vo.setChandler(order.getUpdateBy$()); |
| | | List<ReportU8Vo.Item> itemList = new ArrayList<>(); |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | String docType$ = order.getDocType$(); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | ReportU8Vo.Item item = new ReportU8Vo.Item(); |
| | | item.setCinvcode(orderDetl.getMatnr()); |
| | | item.setIquantity(orderDetl.getQty()); |
| | | item.setAutoidSo(orderDetl.getSku()); |
| | | item.setSoautoidcol(docType$.equals("发货单") ? "IDLSID" : ""); |
| | | item.setCbatch(orderDetl.getBatch()); |
| | | itemList.add(item); |
| | | } |
| | | reportU8Vo.setDetailList(itemList); |
| | | list.add(reportU8Vo); |
| | | } |
| | | break; |
| | | case "产成品入库单": |
| | | for (Order order : value) { |
| | | ReportU8Vo reportU8Vo = new ReportU8Vo(); |
| | | reportU8Vo.setCaccid("001"); |
| | | reportU8Vo.setCvouchcode(order.getOrderNo()); |
| | | reportU8Vo.setDdate(now); |
| | | reportU8Vo.setCgltype(order.getDocType$()); |
| | | reportU8Vo.setCwhcode("101"); |
| | | reportU8Vo.setCrdcode("201"); |
| | | reportU8Vo.setCmaker(order.getCreateBy$()); |
| | | reportU8Vo.setChandler(order.getUpdateBy$()); |
| | | List<ReportU8Vo.Item> itemList = new ArrayList<>(); |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | ReportU8Vo.Item item = new ReportU8Vo.Item(); |
| | | item.setCinvcode(orderDetl.getMatnr()); |
| | | item.setIquantity(orderDetl.getQty()); |
| | | item.setAutoidMo(orderDetl.getSku()); |
| | | item.setMoautoidcol("MODID"); |
| | | item.setCbatch(orderDetl.getBatch()); |
| | | itemList.add(item); |
| | | } |
| | | reportU8Vo.setDetailList(itemList); |
| | | list.add(reportU8Vo); |
| | | } |
| | | break; |
| | | case "材料出库单": |
| | | for (Order order : value) { |
| | | ReportU8Vo reportU8Vo = new ReportU8Vo(); |
| | | reportU8Vo.setCaccid("001"); |
| | | reportU8Vo.setCvouchcode(order.getOrderNo()); |
| | | reportU8Vo.setDdate(now); |
| | | reportU8Vo.setCgltype(order.getDocType$()); |
| | | reportU8Vo.setCwhcode("5"); |
| | | reportU8Vo.setCrdcode("202"); |
| | | reportU8Vo.setCmaker(order.getCreateBy$()); |
| | | reportU8Vo.setChandler(order.getUpdateBy$()); |
| | | List<ReportU8Vo.Item> itemList = new ArrayList<>(); |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | String docType$ = order.getDocType$(); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | ReportU8Vo.Item item = new ReportU8Vo.Item(); |
| | | item.setCinvcode(orderDetl.getMatnr()); |
| | | item.setIquantity(orderDetl.getQty()); |
| | | item.setAutoidAll(orderDetl.getSku()); |
| | | item.setAllcautoidcol(docType$.equals("生产订单") ? "AllocateId" : docType$.equals("委外订单") ? "MOMaterialsID" : |
| | | docType$.equals("领料申请单") ? "AutoID" : ""); |
| | | item.setCbatch(orderDetl.getBatch()); |
| | | itemList.add(item); |
| | | } |
| | | reportU8Vo.setDetailList(itemList); |
| | | list.add(reportU8Vo); |
| | | } |
| | | break; |
| | | case "其他入库单": |
| | | for (Order order : value) { |
| | | ReportU8Vo reportU8Vo = new ReportU8Vo(); |
| | | reportU8Vo.setCaccid("001"); |
| | | reportU8Vo.setCvouchcode(order.getOrderNo()); |
| | | reportU8Vo.setDdate(now); |
| | | reportU8Vo.setCgltype(order.getDocType$()); |
| | | reportU8Vo.setCwhcode("109"); |
| | | reportU8Vo.setCrdcode("199"); |
| | | reportU8Vo.setCmaker(order.getCreateBy$()); |
| | | reportU8Vo.setChandler(order.getUpdateBy$()); |
| | | List<ReportU8Vo.Item> itemList = new ArrayList<>(); |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | ReportU8Vo.Item item = new ReportU8Vo.Item(); |
| | | item.setCinvcode(orderDetl.getMatnr()); |
| | | item.setIquantity(orderDetl.getQty()); |
| | | item.setCbatch(orderDetl.getBatch()); |
| | | itemList.add(item); |
| | | } |
| | | reportU8Vo.setDetailList(itemList); |
| | | list.add(reportU8Vo); |
| | | } |
| | | break; |
| | | case "其他出库单": |
| | | for (Order order : value) { |
| | | ReportU8Vo reportU8Vo = new ReportU8Vo(); |
| | | reportU8Vo.setCaccid("001"); |
| | | reportU8Vo.setCvouchcode(order.getOrderNo()); |
| | | reportU8Vo.setDdate(now); |
| | | reportU8Vo.setCgltype(order.getDocType$()); |
| | | reportU8Vo.setCwhcode("109"); |
| | | reportU8Vo.setCrdcode("299"); |
| | | reportU8Vo.setCmaker(order.getCreateBy$()); |
| | | reportU8Vo.setChandler(order.getUpdateBy$()); |
| | | List<ReportU8Vo.Item> itemList = new ArrayList<>(); |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | ReportU8Vo.Item item = new ReportU8Vo.Item(); |
| | | item.setCinvcode(orderDetl.getMatnr()); |
| | | item.setIquantity(orderDetl.getQty()); |
| | | item.setCbatch(orderDetl.getBatch()); |
| | | itemList.add(item); |
| | | } |
| | | reportU8Vo.setDetailList(itemList); |
| | | list.add(reportU8Vo); |
| | | } |
| | | break; |
| | | default: |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | } |