自动化立体仓库 - WMS系统
Junjie
2023-03-14 163bdd3a71de83b9e36340be3fe6380b6758e4fd
Merge remote-tracking branch 'refs/remotes/origin/stasrs' into stasrs
8个文件已修改
4个文件已添加
267 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSendHandler.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -6,6 +6,7 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.service.OpenService;
import com.zy.common.model.DetlDto;
import com.zy.common.web.BaseController;
@@ -105,9 +106,10 @@
     */
    @RequestMapping("/stock/default/v1")
    public R queryStock(@RequestHeader(required = false) String appkey,
                        @RequestBody StockVo stockVo,
                        HttpServletRequest request) {
        auth(appkey, null, request);
        return R.ok().add(openService.queryStock());
        return R.ok().add(openService.queryStock(stockVo));
    }
    private void auth(String appkey, Object obj, HttpServletRequest request) {
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -58,7 +58,7 @@
    Double queryStockAnfme(String matnr, String batch);
    List<StockVo> queryStockTotal();
    List<StockVo> queryStockTotal(@Param("matnr")String matnr,@Param("batch")String batch);
    Integer sum();
src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -47,7 +47,7 @@
    Double queryStockAnfme(String matnr, String batch);
    List<StockVo> queryStockTotal();
    List<StockVo> queryStockTotal(StockVo stockVo);
    Integer sum();
src/main/java/com/zy/asrs/service/OpenService.java
@@ -32,7 +32,7 @@
    /**
     * 库存统计
     */
    List<StockVo> queryStock();
    List<StockVo> queryStock(StockVo stockVo);
    // ------------------------------------------
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -87,8 +87,10 @@
    }
    @Override
    public List<StockVo> queryStockTotal() {
        return this.baseMapper.queryStockTotal();
    public List<StockVo> queryStockTotal(StockVo stockVo) {
        String matnr=stockVo.getMatnr();
        String batch=stockVo.getBatch();
        return this.baseMapper.queryStockTotal(matnr,batch);
    }
    /**
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -335,8 +335,8 @@
    @Override
    @Transactional
    public List<StockVo> queryStock() {
        return locDetlService.queryStockTotal();
    public List<StockVo> queryStock(StockVo stockVo) {
        return locDetlService.queryStockTotal(stockVo);
    }
    @Override
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 = "10 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,89 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.core.exception.CoolException;
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) {
            log.info("连接erp服务器超时");
            return;
        }
        JSONObject data = null;
        try {
            data = (JSONObject) appTokenResp.get("data");
        } catch (Exception e) {
            System.out.println("获取appToken为空");
            throw new CoolException(e);
        }
        //获取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 = null;
            try {
                accessTokenData = (JSONObject) accessTokenResp.get("data");
            } catch (Exception e) {
                System.out.println("获取accessToken为空");
                throw new CoolException(e);
            }
            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:
src/main/resources/mapper/LocDetlMapper.xml
@@ -295,9 +295,15 @@
        select
        matnr,
        batch,
        count(anfme) as count
        sum(anfme) as count
        from asr_loc_detl
        where 1=1
        <if test="batch != null and batch != ''">
            and batch = #{batch}
        </if>
        <if test="matnr != null and matnr != ''">
            and matnr = #{matnr}
        </if>
        group by matnr,batch
    </select>
    <select id="sum" resultType="java.lang.Integer">