自动化立体仓库 - WMS系统
zhangc
2025-01-07 ce43df438a4bbef5b9ffaed0a33a97db6e88fbf1
src/main/java/com/zy/asrs/task/handler/ReportDataHandler.java
@@ -2,12 +2,17 @@
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.MesLocDetl;
import com.zy.asrs.entity.ReportData;
import com.zy.asrs.entity.ReportDataLog;
import com.zy.asrs.entity.param.MesStock;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.MesLocDetlService;
import com.zy.asrs.service.ReportDataLogService;
import com.zy.asrs.service.ReportDataService;
import com.zy.asrs.task.AbstractHandler;
@@ -20,9 +25,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.Map;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * Created by vincent on 2020/7/7
@@ -42,6 +47,10 @@
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private MesLocDetlService mesLocDetlService;
    @Value("${mes.url}")
    private String url;
@@ -56,6 +65,9 @@
    @Value("${mes.pakoutReportPath}")
    private String pakoutReportPath;
    @Value("${mes.stock}")
    private String stock;
    @Transactional
@@ -90,7 +102,7 @@
    private String doHttpRequest(String requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) {
        String response = "false";
        String response = "fail";
        boolean success = false;
        try {
@@ -103,14 +115,75 @@
                throw new CoolException("mes接口调用失败,返回信息:" + jsonObject);
            }
            success = true;
            return "true";
            return response;
        } catch (Exception e) {
            log.error(e.getMessage());
            log.error("mes接口调用失败,返回信息:{}", e.getMessage());
            //throw new CoolException(e.getMessage());
        } finally {
            apiLogService.save(namespace, url + path, appkey, ip, requestParam, response, success);
        }
        return response;
    }
    @Transactional
    public ReturnT<String> stock(Map<String, Object> mesTokenInfo) {
        List<MesLocDetl> all = mesLocDetlService.selectList(new EntityWrapper<>());
        if (all != null) {
            List<Long> collect = all.stream().map(MesLocDetl::getId).collect(Collectors.toList());
            boolean del = true;
            int d = 1;
            while (del && collect.size() > 0) {
                if (collect.size() > d * 1000) {
                    mesLocDetlService.deleteBatchIds(collect.subList((d - 1) * 1000, d * 1000));
                } else {
                    mesLocDetlService.deleteBatchIds(collect.subList((d - 1) * 1000, collect.size()));
                    del = false;
                }
                d++;
            }
        }
        boolean flag = true;
        Map<String, Object> req = new HashMap<>();
        int i = 1;
        while (flag) {
            req.put("page", i);
            req.put("size", 1000);
            String result = doHttpRequest(JSONObject.toJSONString(req), mesTokenInfo, "同步MES库存", url, stock, null, "127.0.0.1");
            JSONObject jsonObject = JSONObject.parseObject(result);
            Object o = jsonObject.get("data");
            List<MesLocDetl> mesLocDetls = new ArrayList<>();
            MesLocDetl mesLocDetl;
            if (o != null) {
                JSONObject jsonObject1 = JSONObject.parseObject(o.toString());
                Object o1 = jsonObject1.get("list");
                if (o1 != null) {
                    List<MesStock> mesStocks = JSONArray.parseArray(o1.toString(), MesStock.class);
                    if (mesStocks.isEmpty()) {
                        flag = false;
                    }
                    for (MesStock mesStock : mesStocks) {
                        mesLocDetl = new MesLocDetl();
                        mesLocDetl.setMatnr(mesStock.getMaterialInfo().getMaterialCode());
                        mesLocDetl.setMaktx(mesStock.getMaterialInfo().getMaterialName());
                        mesLocDetl.setBatch(mesStock.getBatchNo());
                        mesLocDetl.setAnfme(mesStock.getOpAmount().getAmount().getAmount());
                        mesLocDetls.add(mesLocDetl);
                        mesLocDetlService.insert(mesLocDetl);
                    }
                } else {
                    flag = false;
                }
            }
            if (!mesLocDetls.isEmpty()) {
                //mesLocDetlService.insertBatch(mesLocDetls);
            }
            i++;
        }
        return SUCCESS;
    }
}