自动化立体仓库 - WMS系统
野心家
2 天以前 c3e47e5e70a9055b7d25c118eb1f7ec3c869e953
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -1,21 +1,30 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
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.WaitPakin;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import javafx.scene.input.DataFormat;
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.Iterator;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * Created by vincent on 2020/7/6
@@ -38,27 +47,24 @@
    private WaitPakinLogService waitPakinLogService;
    @Autowired
    private OrderService orderService;
    @Value("${mes.address.url}")
    private String url;
    @Value("${mes.address.outaddressSave}")
    private String outaddressSave;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private ConfigService configService;
    @Transactional
    public ReturnT<String> start(WrkMast wrkMast) {
        try {
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            // 修改订单状态 作业中 ===>> 已完成
            if (!Cools.isEmpty(wrkDetls)) {
                Iterator<WrkDetl> iterator = wrkDetls.iterator();
                while (iterator.hasNext()) {
                    WrkDetl wrkDetl = iterator.next();
                    if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                        orderService.checkComplete(wrkDetl.getOrderNo());
                        iterator.remove();
                    }
                }
            }
            // 入库 --------------------------------------------------------------------------------
            if (wrkMast.getWrkSts() == 5) {
                // 全板入库
        List<WrkDetl> wrkDetl = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = sdf.format(wrkMast.getModiTime());
        Config config=configService.selectConfigByCode("reportMes");
        if(config==null||!config.getValue().equals("Y")){
                if (wrkMast.getIoType() == 1) {
                // 全板入库
                    // 入库通知单
                    if (!Cools.isEmpty(wrkMast.getBarcode())) {
                        // 保存入库通知档历史档
@@ -70,30 +76,7 @@
                            exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo());
                        }
                    }
//                    // 手动入库生成单据 【 上报三方平台 】
//                    if (!Cools.isEmpty(wrkDetls)) {
//                        if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) {
//                            exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo());
//                        }
//                    }
                // 拣料再入库
                } else if (wrkMast.getIoType() == 53) {
//                    if (!Cools.isEmpty(wrkDetls)) {
//                        if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
//                            exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo());
//                        }
//                    }
                }
            // 出库 --------------------------------------------------------------------------------
            } else if (wrkMast.getWrkSts() == 15) {
//                if (!Cools.isEmpty(wrkDetls)) {
//                    if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
//                        exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo());
//                    }
//                }
            }
            // 保存工作主档历史档
            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                exceptionHandle("保存工作历史档[workNo={0}]失败", wrkMast.getWrkNo());
@@ -110,6 +93,156 @@
            if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
//                exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo());
            }
        }
        try {
            LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
            String GnBm ="";
            String Biaomc="";
            List<LinkedHashMap<String,Object>> Baocuncanshus = new ArrayList<LinkedHashMap<String,Object>>();
            LinkedHashMap<String,Object> Baocuncanshu=new LinkedHashMap<String,Object>();
            // 入库 --------------------------------------------------------------------------------
            if (wrkMast.getIoType() == 1) {
                GnBm = "bopp_ck1070d0e";
                Biaomc = "bopp_j000000";
                Baocuncanshu.put("bh","");
                Baocuncanshu.put("djlb","半成品入库");
                Baocuncanshu.put("rq",formattedDate);
                Baocuncanshu.put("startStorageId","");//起始位置
                Baocuncanshu.put("endStorageId","");//目标位置
                Baocuncanshu.put("tm_dp_wms",wrkMast.getBarcode());//托盘码
                Baocuncanshu.put("shbz","立库");//位置类别
                Baocuncanshu.put("bz","");//备注
                Baocuncanshu.put("ck","立库");//仓库
                Baocuncanshus.add(Baocuncanshu);
                // 出库 --------------------------------------------------------------------------------
            } else if (wrkMast.getIoType() == 101) {
                GnBm = "bopp_ck1090d0e";
                Biaomc = "bopp_j000000";
                Baocuncanshu.put("bh","");
                Baocuncanshu.put("djlb","普通调拨");
                Baocuncanshu.put("rq",formattedDate);
                Baocuncanshu.put("yck","布基半成品仓");
                Baocuncanshu.put("xck","复卷1#机起点");
                Baocuncanshu.put("bh_bopp_e050000","");
                Baocuncanshu.put("ykw","库位2");
                Baocuncanshu.put("bz","");//备注
                Baocuncanshu.put("xkw","FJ-01-01-01");
                Baocuncanshus.add(Baocuncanshu);
            }
            LinkedHashMap<String,Object> YongHuCanShu= new LinkedHashMap<String,Object>();
            YongHuCanShu.put("QianMingId","");
            map.put("YongHuCanShu",YongHuCanShu);
            LinkedHashMap<String,Object> QiTaCanShu= new LinkedHashMap<String,Object>();
            QiTaCanShu.put("GnBm",GnBm);
            QiTaCanShu.put("Operation", "1");
            QiTaCanShu.put("zid", "");
            QiTaCanShu.put("shbz", "");
            QiTaCanShu.put("shjg", "");
            List<LinkedHashMap<String,Object>> Caozuojihes = new ArrayList<LinkedHashMap<String,Object>>();
            LinkedHashMap<String,Object>Caozuojihe =new LinkedHashMap<String,Object>();
            Caozuojihe.put("Xh1","1");
            Caozuojihe.put("Xh2","1");
            Caozuojihe.put("Biaomc",Biaomc);
            Caozuojihe.put("Baocuncanshu",Baocuncanshus);
            Caozuojihes.add(Caozuojihe);
            LinkedHashMap<String,Object> Caozuojihe1=new LinkedHashMap<String,Object>();
            Caozuojihe1.put("Xh1","1");
            Caozuojihe1.put("Xh2","4");
            Caozuojihe1.put("Biaomc","bopp_j000101");
            List<LinkedHashMap<String,Object>> Baocuncanshus1 = new ArrayList<LinkedHashMap<String,Object>>();
            LinkedHashMap<String,Object> Baocuncanshu1=new LinkedHashMap<String,Object>();
            Baocuncanshu1.put("tm_xj",wrkDetl.get(0).getBatch());//唯一码
            Baocuncanshus1.add(Baocuncanshu1);
            Caozuojihe1.put("Baocuncanshu",Baocuncanshus1);
            Caozuojihes.add(Caozuojihe1);
            QiTaCanShu.put("Caozuojihe", Caozuojihes);
            map.put("QiTaCanShu",QiTaCanShu);
            HashMap<String,Object>hashMap=new HashMap<String,Object>();
            hashMap.put("Quanjucanshu","%7B%22XiTongCanShu%22%3A%7B%22xt_id%22%3A%2230077%22%2C%22xt_bm%22%3A%22undefined%22%2C%22xt_yhid%22%3A%22156%22%2C%22xt_yhms%22%3A%22%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86%E5%91%98%22%2C%22xt_yhbm%22%3A%22admin%22%2C%22xt_qyms%22%3A%221%22%2C%22xt_qyjc%22%3A%221%22%2C%22xt_jsms%22%3A%22%E7%AE%A1%E7%90%86%E5%91%98%22%2C%22xt_yuyan%22%3A%22%22%7D%2C%22NeiBuCanShu%22%3A%7B%7D%7D");
            String jsonString = JSON.toJSONString(map);
            HashMap<String,Object>hashMap1=new HashMap<String,Object>();
            hashMap1.put("CanShuJi",jsonString);
            String response = "";
            boolean success = false;
            try {
                response = new HttpHandler.Builder()
                        .setHeaders(hashMap)
                        .setUri(url)
                        .setPath(outaddressSave)
                        .setParams(hashMap1)
                        .build()
                        .doPost();
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getString("BianHao").equals("0000")) {
                    success=true;
                    if(wrkMast.getIoType() == 1){
                        // 全板入库
                        // 入库通知单
                        if (!Cools.isEmpty(wrkMast.getBarcode())) {
                            // 保存入库通知档历史档
                            if (!waitPakinLogService.save(wrkMast.getBarcode())) {
                                exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo());
                            }
                            // 删除入库通知档
                            if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) {
                                exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo());
                            }
                        }
                    }
                    // 保存工作主档历史档
                    if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                        exceptionHandle("保存工作历史档[workNo={0}]失败", wrkMast.getWrkNo());
                    }
                    // 删除工作主档
                    if (!wrkMastService.deleteById(wrkMast)) {
                        exceptionHandle("删除工作主档[workNo={0}]失败", wrkMast.getWrkNo());
                    }
                    // 保存工作明细档历史档
                    if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
//                exceptionHandle("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo());
                    }
                    // 删除工作明细档
                    if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
//                exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo());
                    }
                } else {
                    log.error("wms上报结果给mes失败!!!url:{};request:{};response:{}", url+"/"+outaddressSave, JSON.toJSONString(map), response);
                    throw new CoolException("wms上报结果给mes失败");
                }
            } catch (Exception e) {
                log.error("fail", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg(e.getMessage());
            } finally {
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "wms上报结果给mes",
                            url+"/"+outaddressSave,
                            null,
                            "127.0.0.1",
                            JSON.toJSONString(map),
                            response,
                            success
                    );
                } catch (Exception e) { log.error("", e); }
            }
        } catch (Exception e) {
            log.error("fail", e);
            e.printStackTrace();