package com.zy.asrs.wms.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.common.sys.entity.OperateLog; import com.zy.asrs.common.sys.service.OperateLogService; import com.zy.asrs.common.utils.HttpHandler; import com.zy.asrs.common.utils.Utils; import com.zy.asrs.common.web.BaseController; import com.zy.asrs.common.wms.entity.Order; import com.zy.asrs.common.wms.entity.OrderDetl; import com.zy.asrs.common.wms.entity.WrkDetl; import com.zy.asrs.common.wms.entity.WrkMast; import com.zy.asrs.common.wms.service.*; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.*; @RestController public class TestController extends BaseController { @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Autowired private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @Autowired private OperateLogService operateLogService; @Value("${erp.url}") private String ERP_URL; @Value("${erp.report}") private String ERP_REPORT; @Value("${erp.login}") private String ERP_LOGIN; @GetMapping("/test") public R test(@RequestParam Integer wrkNo) { WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper().eq(WrkMast::getWrkNo, wrkNo)); Long hostId = wrkMast.getHostId(); List wrkDetls = wrkDetlService.list(new LambdaQueryWrapper().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()).eq(WrkDetl::getHostId, hostId)); // 区分订单任务 List wrkDetlsKeyOrder = new ArrayList<>(); if (!Cools.isEmpty(wrkDetls)) { Iterator iterator = wrkDetls.iterator(); while (iterator.hasNext()) { WrkDetl wrkDetl = iterator.next(); if (!Cools.isEmpty(wrkDetl.getOrderNo())) { wrkDetlsKeyOrder.add(wrkDetl); iterator.remove(); } } } if (!wrkDetlsKeyOrder.isEmpty()) { //上报念初ERP 【 上报三方平台 】 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); String nowFormat = dateFormat.format(new Date()); ArrayList> mats = new ArrayList<>(); String orderNo = ""; for (WrkDetl wrkDetl : wrkDetlsKeyOrder) { orderNo = wrkDetl.getOrderNo(); LinkedHashMap mat = new LinkedHashMap<>(); mat.put("GoodsCode", wrkDetl.getMatnr()); mat.put("Num", wrkDetl.getAnfme()); if (!Cools.isEmpty(wrkDetl.getBatch())) { mat.put("BatchNo", wrkDetl.getBatch()); } if (!Cools.isEmpty(wrkDetl.getThreeCode())) { mat.put("DepotName", wrkDetl.getThreeCode()); } if (!Cools.isEmpty(wrkDetl.getSupp())) { mat.put("FromDanCode", wrkDetl.getSupp()); } if (!Cools.isEmpty(wrkDetl.getSuppCode())) { mat.put("FromNo", wrkDetl.getSuppCode()); } mats.add(mat); } Order order = orderService.selectByNo(orderNo, hostId); if (order != null) { LinkedHashMap param = new LinkedHashMap<>(); param.put("Login", ERP_LOGIN); param.put("DanType", order.getDocType$()); param.put("Date", nowFormat); param.put("FromDanCode", orderNo); param.put("Data", mats); String response = ""; try { response = new HttpHandler.Builder() .setUri(ERP_URL) .setPath(ERP_REPORT + Utils.ncErpDataEncode(param)) .build() .doGet(); JSONObject jsonObject = JSON.parseObject(response); JSONArray result = jsonObject.getJSONArray("result"); Object object = result.get(0); JSONObject data = JSON.parseObject(object.toString()); if (data.getBoolean("State")) { //上报成功 } else { //上报失败 } } catch (Exception e) { e.printStackTrace(); } finally { //记录上报数据 OperateLog operateLog = new OperateLog(); operateLog.setAction("上报ERP," + ERP_URL + ERP_REPORT); operateLog.setRequest(Utils.ncErpDataEncode(param)); operateLog.setResponse(response); operateLog.setCreateTime(new Date()); operateLog.setSystem("WMS"); operateLog.setUserId(9527L); operateLog.setIp("127.0.0.1"); operateLogService.save(operateLog); } } } return R.ok(); } @GetMapping("/test1") public R test1(@RequestParam String orderNo) { Order order = orderService.selectByNo(orderNo, 1L); List orderDetls = orderDetlService.list(new LambdaQueryWrapper().eq(OrderDetl::getOrderId, order.getId())); //上报念初ERP 【 上报三方平台 】 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); String nowFormat = dateFormat.format(new Date()); ArrayList> mats = new ArrayList<>(); for (OrderDetl orderDetl : orderDetls) { LinkedHashMap mat = new LinkedHashMap<>(); mat.put("GoodsCode", orderDetl.getMatnr()); mat.put("Num", orderDetl.getAnfme()); if (!Cools.isEmpty(orderDetl.getBatch())) { mat.put("BatchNo", orderDetl.getBatch()); } if (!Cools.isEmpty(orderDetl.getThreeCode())) { mat.put("DepotName", orderDetl.getThreeCode()); } if (!Cools.isEmpty(orderDetl.getSupp())) { mat.put("FromDanCode", orderDetl.getSupp()); } if (!Cools.isEmpty(orderDetl.getSuppCode())) { mat.put("FromNo", orderDetl.getSuppCode()); } mats.add(mat); } LinkedHashMap param = new LinkedHashMap<>(); param.put("Login", ERP_LOGIN); param.put("DanType", order.getDocType$()); param.put("Date", nowFormat); param.put("FromDanCode", orderNo); param.put("Data", mats); String response = ""; try { response = new HttpHandler.Builder() .setUri(ERP_URL) .setPath(ERP_REPORT + Utils.ncErpDataEncode(param)) .build() .doGet(); JSONObject jsonObject = JSON.parseObject(response); JSONArray result = jsonObject.getJSONArray("result"); Object object = result.get(0); JSONObject data = JSON.parseObject(object.toString()); if (data.getBoolean("State")) { //上报成功 } else { //上报失败 } } catch (Exception e) { e.printStackTrace(); } finally { //记录上报数据 OperateLog operateLog = new OperateLog(); operateLog.setAction("上报ERP," + ERP_URL + ERP_REPORT); operateLog.setRequest(Utils.ncErpDataEncode(param)); operateLog.setResponse(response); operateLog.setCreateTime(new Date()); operateLog.setSystem("WMS"); operateLog.setUserId(9527L); operateLog.setIp("127.0.0.1"); operateLogService.save(operateLog); } return R.ok(); } }