| 9 天以前 | IZCD4L12RTSW0VZ\Administrator | ![]() |
| 9 天以前 | IZCD4L12RTSW0VZ\Administrator | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | IZCD4L12RTSW0VZ\Administrator | ![]() |
| 9 天以前 | IZCD4L12RTSW0VZ\Administrator | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | skyouc | ![]() |
| 9 天以前 | skyouc | ![]() |
| 2025-12-25 | IZCD4L12RTSW0VZ\Administrator | ![]() |
| src/main/java/com/zy/api/controller/KopenApiController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/enums/OrderWkType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/KopenApiService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/Order.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/enums/OrderTypeEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/utils/HttpHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/application-dev.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/api/controller/KopenApiController.java
@@ -86,7 +86,7 @@ // if (Objects.isNull(params.getKopen_id()) && Objects.isNull(params.getInv_no()) && Objects.isNull(params.getDispatch_no())) { // return XSR.error("取消条件不能为空!!"); // } return kopenApiService.getInDispatchResult(params); return kopenApiService.getInDispatchResult(params, null); } /** src/main/java/com/zy/api/enums/OrderWkType.java
@@ -1,5 +1,7 @@ package com.zy.api.enums; import com.zy.asrs.enums.OrderTypeEnum; public enum OrderWkType { // 订单类型 @@ -37,8 +39,28 @@ } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT_EO.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT_SO.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) { return OrderType.ORDER_OUT.type; } else { return OrderType.ORDER_OUT.type; return null; } } public static Integer getDocType(String val) { if (val.equals(OrderWkType.ORDER_WK_PUR_IN.val) || val.equals(OrderWkType.ORDER_WK_SUPLUS_IN.val) || val.equals(OrderWkType.ORDER_WK_MEGER_IN.val) || val.equals(OrderWkType.ORDER_WK_PRO_UPDATE_IN.val)) { return OrderTypeEnum.PICKING.type; } else if (val.equals(OrderWkType.ORDER_WK_TRANSFER_IN.val)) { return OrderTypeEnum.PICKING.type; } else if (val.equals(OrderWkType.ORDER_WK_SALE_IN.val)) { return OrderTypeEnum.PICKING.type; } else if (val.equals(OrderWkType.ORDER_WK_BAG_IN.val)) { return OrderTypeEnum.PICKING.type; } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT_EO.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT_SO.val)) { return OrderTypeEnum.TRANSFER.type; } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) { return OrderTypeEnum.STOCK.type; }else { return null; } } } src/main/java/com/zy/api/service/KopenApiService.java
@@ -9,6 +9,7 @@ import com.zy.api.entity.StockUpOrderParams; import com.zy.api.entity.SyncMatParmas; import com.zy.api.entity.dto.XSR; import com.zy.asrs.entity.Order; public interface KopenApiService { @@ -41,10 +42,12 @@ /** * 上架派工单反馈 * * @param params * @param order * @return */ XSR getInDispatchResult(List<ReportOrderParam> params); XSR getInDispatchResult(List<ReportOrderParam> params, Order order); /** * 备货指示派工单下发 src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -37,17 +37,17 @@ import com.zy.asrs.utils.Utils; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; 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.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.*; @Slf4j @Service("kopenApiServiceImpl") public class KopenApiServiceImpl implements KopenApiService { @@ -65,6 +65,13 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private CheckOrderDetlService checkOrderDetlService; @Value("${kopen.url}") private String url; @Value("${kopen.port}") private String port; @Value("${kopen.prefix}") private String prefix; /** * 接收下发订单信息 @@ -94,15 +101,16 @@ */ @Override @Transactional(rollbackFor = Exception.class) public XSR getInDispatchResult(List<ReportOrderParam> params) { public XSR getInDispatchResult(List<ReportOrderParam> params, Order order) { if (Objects.isNull(params)) { return XSR.error("参数不能为空!!"); } String response = null; try { response = new HttpHandler.Builder() .setUri("127.0.0.1:8081") .setPath("/wms/order/getInDispatchResult") .setUri(url + ":" + port) .setPath(prefix + "/getInDispatchResult") .setJson(JSONObject.toJSONString(params)) .build() .doPost(); @@ -111,15 +119,52 @@ } JSONObject jsonObject = JSONObject.parseObject(response); Integer code = jsonObject.getInteger("code"); if (!Objects.isNull(code) && code.equals(1)) { if (!Objects.isNull(code) && code.equals(200)) { if (!Objects.isNull(order)) { order.setReportOnce(5); orderService.updateById(order); } return XSR.ok("入库单上报完成!!"); } else { if (!Objects.isNull(order)) { int reportOnce = order.getReportOnce(); reportOnce ++; order.setReportOnce(reportOnce); orderService.updateById(order); } String msg = jsonObject.getString("message"); return XSR.error(Objects.isNull(msg) ? "上报失败!!" : msg); } } catch (Exception e) { if (!Objects.isNull(order)) { int reportOnce = order.getReportOnce(); reportOnce ++; order.setReportOnce(reportOnce); orderService.updateById(order); } log.error(e.getMessage(), e); return XSR.error(e.getMessage()); } } /** * 获取自定义请求头 * @author Ryan * @date 2025/12/29 9:11 * @return java.util.Map<java.lang.String,java.lang.Object> */ private Map<String, Object> getHeaderParam() { Map<String, Object> headerParam = new HashMap<>(); // headerParam.put("accept", "*/*"); // headerParam.put("connection", "Keep-Alive"); //设置请求连接的Token headerParam.put("api_key", "WMS"); headerParam.put("charset", "UTF-8"); headerParam.put("timestamp", new Date()); headerParam.put("format", "xml"); headerParam.put("signature", "c56ced444ed772098ffeb59537bbfa59"); return headerParam; } /* */ @@ -296,6 +341,8 @@ // 备货指示派工单(EO/SO)出库 order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getDispatch_no())); } else { throw new CoolException("单据类型不存在,不支持添加!!"); } } else { throw new CoolException("单据类型不存在,不支持添加!!"); @@ -340,7 +387,8 @@ if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) { // 入库 newOrder.setPakinPakoutStatus(1); newOrder.setDocType(Long.parseLong(params.getType())); Integer docType = OrderWkType.getDocType(params.getType()); newOrder.setDocType(Long.parseLong(docType + "")); newOrder.setNumber(params.getInv_no()); } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) { // 出库 @@ -593,4 +641,8 @@ }); } private String kopen() { return url + ":" + port + prefix; } } src/main/java/com/zy/asrs/entity/Order.java
@@ -220,6 +220,10 @@ @TableField("ship_code") private String shipCode; @ApiModelProperty("上报次数") @TableField("report_once") private Integer reportOnce; /** * 订单状态 */ src/main/java/com/zy/asrs/enums/OrderTypeEnum.java
@@ -2,7 +2,7 @@ public enum OrderTypeEnum { //上架派工单 PICKING(1, "上架派工单"), PICKING(0, "上架派工单"), //备货派工单 TRANSFER(2, "备货派工单"), INVENTORY(3, "盘点单"), src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -118,6 +118,7 @@ if (!result.isSuccess()) { log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); } } catch (Exception e) { log.error(e.getMessage()); log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -14,11 +14,11 @@ import com.zy.api.entity.StockAdjustParams; import com.zy.api.entity.StockUpOrderParams; import com.zy.api.entity.dto.XSR; import com.zy.api.enums.MatLocType; import com.zy.api.service.KopenApiService; import com.zy.asrs.entity.*; import com.zy.asrs.enums.OrderTypeEnum; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.CheckOrderDetlServiceImpl; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.OrderInAndOutUtil; @@ -47,8 +47,6 @@ @Service public class OrderSyncHandler extends AbstractHandler<String> { private final CheckOrderDetlServiceImpl checkOrderDetlService; @Autowired private JdbcTemplate jdbcTemplate; @Autowired @@ -67,10 +65,11 @@ private KopenApiService kopenApiService; @Autowired private MatService matService; @Autowired private LocDetlService locDetlService; @Autowired CheckOrderDetlService checkOrderDetlService; OrderSyncHandler(CheckOrderDetlServiceImpl checkOrderDetlService) { this.checkOrderDetlService = checkOrderDetlService; } @Transactional public ReturnT<String> startOrderIssuedOnceMore(Order order) { @@ -256,12 +255,13 @@ ReportOrderParam orderParam = new ReportOrderParam(); orderParam.setCompany_id(order.getCstmrName()) .setWms_id(order.getId() + "") .setOrder_no(order.getOrderNo()) // .setOrder_no(order.getOrderNo()) .setDispatch_no(order.getOrderNo()) .setType(order.getDocType() + "") .setInv_no(order.getNumber()) .setPm_tktid(order.getItemName()) .setUpdate_time(Utils.dateToStr(new Date(), "yyyy-MM-dd HH:mm:ss")) .setTarget_location(""); .setTarget_location("1"); List<ReportOrderParams> reportOrderParams = new ArrayList<>(); orderDetls.forEach(detl -> { @@ -270,6 +270,15 @@ throw new CoolException("物料不存在"); } ReportOrderParams itemParam = new ReportOrderParams(); LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>() .eq("matnr", detl.getMatnr()) .eq("supp_code", detl.getSuppCode()) .eq("order_no", detl.getOrderNo())); if (Objects.isNull(locDetl)) { throw new CoolException("库存明细不存在 ,请检查单据是否完成!!"); } // BS Code itemParam.setTotal_serial(detl.getThreeCode()) // 上报时,默认产品类型是null @@ -278,14 +287,11 @@ .setPro_komcode(detl.getMatnr()) // 上报时,默认产品id是供应商编码 .setPro_id(detl.getSuppCode()) // 上报时,默认来源位置是null .setLocation_no(null) // 上报时,默认目标位置是null .setLocation_type(null) .setLocation_no(locDetl.getZpallet()) .setSj_emp(locDetl.getModiUser$()) .setLocation_type(MatLocType.getMatTag(material.getTagId() + "")) // 上报时,默认上报时间是更新时间 .setSj_date(order.getUpdateBy().toString()) // 上报时,默认上报人是更新人 .setSj_emp(order.getUpdateBy$()) .setSj_date(Utils.dateToStr(order.getUpdateTime(), "yyyy-MM-dd HH:mm:ss") ) // 上报时,默认上报数量是订单数量 .setPick_qty(detl.getQty().intValue()) // 上报时,默认损坏数量是0 @@ -303,8 +309,11 @@ try { List<ReportOrderParam> orderParams = new ArrayList<>(); orderParams.add(orderParam); response = kopenApiService.getInDispatchResult(orderParams); if (order.getReportOnce() < 4) { response = kopenApiService.getInDispatchResult(orderParams, order); } else { return FAIL; } // if (true) { // success = true; // // 修改订单状态 4.完成 ===>> 6.已上报 src/main/java/com/zy/common/utils/HttpHandler.java
@@ -4,6 +4,7 @@ import okhttp3.*; import java.io.IOException; import java.util.Date; import java.util.Map; import java.util.Optional; import java.util.concurrent.TimeUnit; @@ -81,6 +82,13 @@ RequestBody body = RequestBody.create(MEDIA_TYPE, json); Request.Builder builder = headerBuilder.url((https?"https://":"http://")+uri+path); builder.header("Content-Type", "application/json;charset=UTF-8"); builder.header("api_key", "WMS"); builder.header("charset", "UTF-8"); builder.header("timestamp", "1443429483688"); // builder.header("timestamp", String.valueOf(new Date().getTime())); builder.header("format", "xml"); builder.header("signature", "c56ced444ed772098ffeb59537bbfa59"); request = builder.post(body).build(); } src/main/resources/application-dev.yml
@@ -12,7 +12,7 @@ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver username: sa password: sa@123 url: jdbc:sqlserver://172.24.103.147:1433;databasename=jsxsasrs url: jdbc:sqlserver://192.168.4.15:1433;databasename=jsxsasrs mvc: static-path-pattern: /** redis: @@ -84,7 +84,7 @@ # 开关 switch: #计时器上报开关 ErpReportOld: false ErpReportOld: true #获取单据开关 InboundOrderSwitch: false #登录接口开关 @@ -113,7 +113,9 @@ #KOPEN小松平台 kopen: url: webservice.kopen.com.cn port: 1482 prefix: /kc-api/api/wms #AGV调度 hlk: