自动化立体仓库 - WMS系统
75f6cc89772c2d87e2f36c381f188bc8b5b31434..1f7ecc91a42a8fa1984aa3b0c7ffe4b05dbee560
8 天以前 野心家
必须填写批号
1f7ecc 对比 | 目录
8 天以前 lsh
mes对接
c9c370 对比 | 目录
6个文件已修改
281 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 235 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/CodeRes.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/AdminInterceptor.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/license.lic 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -100,6 +100,9 @@
        if (param.getCombMats().size()>1){
            throw new CoolException("不允许混料===>>" + param.getBarcode());
        }
        if(Cools.isEmpty(param.getCombMats().get(0).getBatch())){
            throw new CoolException("批号(唯一码)不能为空===>>" + param.getBarcode());
        }
        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
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,62 +47,36 @@
    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 (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 (!Cools.isEmpty(wrkMast.getBarcode())) {
                    // 保存入库通知档历史档
                    if (!waitPakinLogService.save(wrkMast.getBarcode())) {
                        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());
//                        }
//                    }
                    // 删除入库通知档
                    if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) {
                        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();
src/main/java/com/zy/common/CodeRes.java
@@ -5,14 +5,14 @@
public interface CodeRes extends BaseRes {
    // user
    String USER_10001 = "1-账号不存在";
    String USER_10002 = "1-账号已被禁用";
    String USER_10003 = "1-密码错误";
    String USER_10001 = "10001-账号不存在";
    String USER_10002 = "10002-账号已被禁用";
    String USER_10003 = "10003-密码错误";
    String SYSTEM_20001 = "1-许可证已失效";
    String SYSTEM_20001 = "20001-许可证已失效";
    String EXIST_500 = "1-工作档/库存条码数据已存在";
    String PICK_600 = "1-拣料任务";
    String NO_COMB_700 = "1-请先组托";
    String EXIST_500 = "500-工作档/库存条码数据已存在";
    String PICK_600 = "600-拣料任务";
    String NO_COMB_700 = "700-请先组托";
}
src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -119,8 +119,8 @@
            User user = userService.selectById(userLogin.getUserId());
//            String deToken = Cools.deTokn(token, user.getPassword());
//            long timestamp = Long.parseLong(deToken.substring(0, 13));
            // 15分钟后过期
            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 900000){
            // 180分钟后过期
            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 10800000){
                Http.response(response, BaseRes.DENIED);
                return false;
            }
src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
  port: 8085
  port: 8086
  servlet:
    context-path: /@pom.build.finalName@
@@ -19,7 +19,7 @@
    host: localhost
    port: 6379
    database: 0
#    password: xltys1995
  #    password: xltys1995
  servlet:
    multipart:
      maxFileSize: 100MB
@@ -58,17 +58,17 @@
  # 右深库位排号
  doubleLocsRight: 4,8,12,16
  #是否开启wms下发任务给wcs
  workIssued-fig : true
  workIssued-fig: true
  #地址
  url : 192.168.110.100:8082
  url: 192.168.110.100:8082
  #wms下发任务给wcs
  workIssued : fromWms/taskReceive
  workIssued: fromWms/taskReceive
  #库位同步
  loc: fromWms/cargoNoSyn
  #入库站
  inDevp : 100
  inDevp: 100
  #出库站
  outDevp : 200
  outDevp: 200
# wms参数配置
wms-parameter:
  # 自动补空板功能开关
@@ -82,6 +82,15 @@
comb:
  limit: 5000
#mes对接
mes:
  switch:
    boo: false
  address:
    url: http://220.189.244.250:10082
    outaddressSave: hmxtapi/Yh_SP/TiJiaoShuJu_AnNui
#erp对接
erp:
@@ -107,7 +116,7 @@
    #结果上报(审核)单地址
    outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
  #  登录账号管理
  login :
  login:
    acctID: "647e849ab6fa0f"
    username: "llw"
    password: "666666"
src/main/resources/license.lic
Binary files differ