zy-asrs-wms/src/main/java/com/zy/asrs/wms/task/handler/WorkLogHandler.java
@@ -1,7 +1,15 @@
package com.zy.asrs.wms.task.handler;
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.wms.entity.Order;
import com.zy.asrs.common.wms.entity.WaitPakin;
import com.zy.asrs.common.wms.entity.WrkDetl;
import com.zy.asrs.common.wms.entity.WrkMast;
@@ -11,13 +19,13 @@
import com.zy.asrs.wms.task.core.ReturnT;
import lombok.extern.slf4j.Slf4j;
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 org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * Created by vincent on 2020/7/6
@@ -40,6 +48,17 @@
    private WaitPakinLogService waitPakinLogService;
    @Autowired
    private OrderService orderService;
    @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;
    // update asr_wrk_mast set inv_wh = 'Y', ove_mk = 'Y' where wrk_no =
    @Transactional
@@ -99,6 +118,77 @@
                }
            }
            if (!wrkDetlsKeyOrder.isEmpty()) {
                //上报念初ERP   【 上报三方平台 】
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
                String nowFormat = dateFormat.format(new Date());
                ArrayList<LinkedHashMap<String, Object>> mats = new ArrayList<>();
                String orderNo = "";
                for (WrkDetl wrkDetl : wrkDetlsKeyOrder) {
                    orderNo = wrkDetl.getOrderNo();
                    LinkedHashMap<String, Object> 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<String, Object> param = new LinkedHashMap<>();
                    param.put("Login", ERP_LOGIN);
                    param.put("DanType", order.getDocType$());
                    param.put("Date", nowFormat);
                    param.put("DanCode", 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 {
                            //上报失败
                            exceptionHandle("上报ERP失败[workNo={0}]失败", wrkMast.getWrkNo());
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        //异常上报失败
//                        exceptionHandle("上报ERP异常失败[workNo={0}]失败", wrkMast.getWrkNo());
                    } 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);
                    }
                }
            }
            // 保存工作主档历史档
            if (!wrkMastLogService.saveToHistory(wrkMast.getId())) {
                exceptionHandle("保存工作历史档[workNo={0}]失败", wrkMast.getWrkNo());