自动化立体仓库 - WMS系统
#
mrzhssss
2023-03-08 7a6e050823ac845867f2a78011961a31a873baad
#
1个文件已修改
4个文件已添加
226 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/task/ErpAccessTokenScheduler.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSendScheduler.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/ErpAccessTokenHandler.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSendHandler.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/ErpAccessTokenScheduler.java
New file
@@ -0,0 +1,25 @@
package com.zy.asrs.task;
import com.zy.asrs.task.handler.ErpAccessTokenHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ErpAccessTokenScheduler {
    public static String accessToken = "";
    @Autowired
    private ErpAccessTokenHandler erpAccessTokenHandler;
    @PostConstruct
    @Scheduled(cron = "* 15,30,45,59 * * * ?")
    private void accessToken(){
        erpAccessTokenHandler.getAccessToken();
    }
}
src/main/java/com/zy/asrs/task/OrderSendScheduler.java
New file
@@ -0,0 +1,33 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.handler.OrderSendHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class OrderSendScheduler {
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderSendHandler orderSendHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void looping(){
        List<Order> orders = orderService.selectList(new EntityWrapper<Order>()
                .eq("settle", "4")
                .le("item_id", 3));
        for (Order order : orders) {
            orderSendHandler.start(order);
        }
    }
}
src/main/java/com/zy/asrs/task/handler/ErpAccessTokenHandler.java
New file
@@ -0,0 +1,76 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.ErpAccessTokenScheduler;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.IOException;
@Service
@Slf4j
public class ErpAccessTokenHandler extends AbstractHandler<String> {
    private String erpIp = "http://10.100.221.19:81";
    public void getAccessToken() {
        JSONObject appTokenJson = new JSONObject();
        appTokenJson.put("appId","ESB");
        appTokenJson.put("appSecuret","123456789");
        appTokenJson.put("tenantid","ierp");
        appTokenJson.put("accountId","1492035591649364992");
        appTokenJson.put("language","zh_CN");
        JSONObject appTokenResp;
        //获取app_token,用app_token获取access_token
        try {
            appTokenResp = JSON.parseObject(new HttpHandler.Builder()
                    .setUri(erpIp)
                    .setPath("/ierp/api/getAppToken.do")
                    .setJson(appTokenJson.toJSONString())
                    .build()
                    .doPost());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        JSONObject data = (JSONObject) appTokenResp.get("data");
        //获取access_token
        if ((boolean) data.get("success")) {
            JSONObject accessTokenJson = new JSONObject();
            accessTokenJson.put("user","13800000000");
            accessTokenJson.put("apptoken",(String) data.get("app_token"));
            accessTokenJson.put("tenantid","ierp");
            accessTokenJson.put("accountId","1492035591649364992");
            accessTokenJson.put("usertype","Mobile");
            JSONObject accessTokenResp;
            //获取app_token,用app_token获取access_token
            try {
                accessTokenResp = JSON.parseObject(new HttpHandler.Builder()
                        .setUri(erpIp)
                        .setPath("/ierp/api/login.do")
                        .setJson(accessTokenJson.toJSONString())
                        .build()
                        .doPost());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            JSONObject accessTokenData = (JSONObject) accessTokenResp.get("data");
            if ((boolean)accessTokenData.get("success")) {
                ErpAccessTokenScheduler.accessToken = (String)accessTokenData.get("access_token");
                log.info("更新access_token, 新token为:" + (String)accessTokenData.get("access_token"));
            }
        }
    }
}
src/main/java/com/zy/asrs/task/handler/OrderSendHandler.java
New file
@@ -0,0 +1,88 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.ErpAccessTokenScheduler;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
@Transactional
public class OrderSendHandler extends AbstractHandler<String> {
    private static final String erpIp = "10.100.221.19:81";
    private static final String inPath = "/ierp/kapi/app/im/PurinbillApiPlugin";
    private static final String outPath = "/ierp/kapi/app/im/SaloutbillApiPlugin";
    @Autowired
    private OrderService orderService;
    @Autowired
    private DocTypeService docTypeService;
    public void start(Order order) {
        String accessToken = ErpAccessTokenScheduler.accessToken;
        if (accessToken.equals("")) {
            return;
        }
        HashMap<String, Object> header = new HashMap<>();
        header.put("accessToken",accessToken);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("orderNo",order.getOrderNo());
        HttpHandler.Builder prepBuilder = new HttpHandler.Builder()
                .setUri(erpIp)
                .setHeaders(header)
                .setJson(jsonObject.toJSONString());
        JSONObject respJson;
        //入库单据
        if (docTypeService.selectOne(new EntityWrapper<DocType>()
                .eq("doc_id",order.getDocType())).getPakin() == 1) {
            try {
                respJson = JSON.parseObject(
                        prepBuilder.setPath(inPath)
                        .build()
                        .doPost());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }else {
            //出库单据
            try {
                respJson = JSON.parseObject(
                prepBuilder.setPath(outPath)
                        .build()
                        .doPost());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        if ((boolean)respJson.get("success")) {
            orderService.updateSettle(order.getId(),6L,1L);
            log.info("单据:" + order.getOrderNo() + "回传成功,已更新单据状态");
        }else {
            order.setItemId(order.getItemId() + 1);
            orderService.updateById(order);
            log.info("单据:"+ order.getOrderNo()+" 回传失败,这是第" + order.getItemId() + "次回传");
            log.info(respJson.toJSONString());
        }
    }
}
src/main/resources/application.yml
@@ -10,8 +10,8 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
#    url: jdbc:sqlserver://10.10.10.100:1433;databasename=stasrs
    url: jdbc:sqlserver://192.168.4.15:1433;databasename=stasrs
    url: jdbc:sqlserver://10.10.10.100:1433;databasename=stasrs
#    url: jdbc:sqlserver://192.168.4.15:1433;databasename=stasrs
    username: sa
    password: sa@123
  mvc: