自动化立体仓库 - WMS系统
#
LSH
2023-09-17 66e452d698b2fda9d3be730907fb37054f109f5a
#
10个文件已修改
3个文件已添加
259 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocMast.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/BalconyWrkMastParam.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/BarcodeUploadScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/BareBoardScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/RailwayPlatformScheduler.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/BarcodeUploadHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/RailwayPlatformHandler.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -195,14 +195,14 @@
    }
    @RequestMapping("/truss/auth")
    @ManagerAuth(memo = "退库")
    @ManagerAuth(memo = "退库,1楼桁架退库")
    public R trussComb(@RequestBody TrussCombParam combParam){
        mobileService.trussComb(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/truss/comd/auth")
    @ManagerAuth(memo = "手动入库")
    @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库")
    public R trussComb2(@RequestBody PalletizingCompleteParam combParam){
        mobileService.trussComb2(combParam, getUserId());
        return R.ok("组托成功");
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -222,7 +222,7 @@
     * 中控:码垛完成下发入库信息
     */
    @PostMapping("/palletizing/complete/auth/v1")
    @AppAuth(memo = "中控:码垛完成下发入库信息")
    @AppAuth(memo = "中控(桁架):码垛完成下发入库信息")
    public synchronized R palletizingComplete(@RequestHeader(required = false) String appkey,
                                           @RequestBody PalletizingCompleteParam param,
                                           HttpServletRequest request) {
@@ -260,10 +260,10 @@
    /**
     * 中控:码垛完成下发入库信息  测试1
     *  测试1  入库前输送线写入托盘码,216站测试用
     */
    @PostMapping("/cs1/auth/v1")
    @AppAuth(memo = "中控:码垛前上报条码,生成测试工作档")
    @AppAuth(memo = "")
    public synchronized R cs1(@RequestHeader(required = false) String appkey,
                                              @RequestBody PalletizingCompleteParam param,
                                              HttpServletRequest request) {
@@ -273,10 +273,10 @@
    }
    /**
     * 中控:码垛完成下发入库信息  测试2
     *  测试2  清除托盘码,216站测试用 Copy
     */
    @PostMapping("/cs2/auth/v1")
    @AppAuth(memo = "中控:码垛完成下发入库信息,生成测试工作档")
    @AppAuth(memo = "")
    public synchronized R cs2(@RequestHeader(required = false) String appkey,
                                                @RequestBody PalletizingCompleteParam param,
                                                HttpServletRequest request) {
@@ -286,10 +286,10 @@
    }
    /**
     * 中控:码垛完成下发入库信息  测试3
     * 测试3
     */
    @PostMapping("/cs3/auth/v1")
    @AppAuth(memo = "中控:码垛完成下发入库信息,生成测试工作档")
    @AppAuth(memo = "")
    public synchronized R cs3(@RequestHeader(required = false) String appkey,
                                                @RequestBody PalletizingCompleteParam param,
                                                HttpServletRequest request) {
src/main/java/com/zy/asrs/entity/LocMast.java
@@ -50,6 +50,9 @@
    @TableField("loc_sts")
    private String locSts;
    /**
     * 徐工汉云拆垛标记  0: 未拆  1: 已拆  2:已处理可下一步(转历史档)
     */
    @ApiModelProperty(value= "")
    @TableField("sheet_no")
    private String sheetNo;
src/main/java/com/zy/asrs/entity/param/BalconyWrkMastParam.java
New file
@@ -0,0 +1,66 @@
package com.zy.asrs.entity.param;
import com.core.common.DateUtils;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * Created by vincent on 2020/6/28
 */
@Data
public class BalconyWrkMastParam {
    private Integer balcony;//        字符串    月台
    private String boxType;//    是    字符串    木箱类型
    private String uuid;//        字符串    时间戳
    private String createTime;//        字符串    创建时间yyyy-MM-dd HH:mm:ss
    private List<MatList> matLists;//        是    列表    拆垛货物信息(2箱,尾箱可能1箱)
    @Data
    public static class MatList{
        private String matnr;//    是    字符串    物料编码
        private String maktx;//        字符串    物料名称
        private String boxNo;//    是    字符串    木箱编号(唯一字段,出库依据,出库时按照木箱编号出库)
        private String position;//    是    字符串    木箱位置(拆垛时需要)
        private Double weight;//    是    小数型    重量
        private Integer anfme;//        数字型    木箱中铜箔数量
        private String batch;//        字符串    批次号
        private String specs;//        字符串    规格
        private List<MatDetlList> matDetlList;//        是    列表    木箱中铜箔信息
    }
    @Data
    public static class MatDetlList{
        private String boxNoDetl;//    是    字符串    铜箔编号(唯一字段)
        private String positionDetl;//    是    字符串    铜箔位置(拆垛时需要)
        private Double weightDetl;//    是    小数型    重量
        private String batchDetl;//        字符串    批次号
        private String specsDetl;//        字符串    规格
    }
    public BalconyWrkMastParam(){};
    public BalconyWrkMastParam(WrkMast wrkMast, List<WrkDetl> wrkDetls){
        this.uuid= String.valueOf(System.currentTimeMillis());
        this.createTime = DateUtils.convert(new Date());
        for (WrkDetl wrkDetl : wrkDetls){
            this.boxType = wrkDetl.getBrand();
            MatList matList = new MatList();
            matList.setMatnr(wrkDetl.getMatnr());
            matList.setMaktx(wrkDetl.getMaktx());
            matList.setBoxNo(wrkDetl.getBatch());
            matList.setPosition(wrkDetl.getOrigin());
            matList.setWeight(wrkDetl.getWeight());
            matList.setAnfme(wrkDetl.getAnfme().intValue());
            matList.setSpecs(wrkDetl.getSpecs());
            matList.setBatch(wrkDetl.getModel());
            this.matLists.add(matList);
        }
    };
}
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java
@@ -11,7 +11,9 @@
    private String barcode;//        字符串    托盘码
    private String palletizingNo;//    是    字符串    码垛位编号
    private String palletizingNo2;//    是    字符串    目标码垛位编号
    private String boxType;//    是    字符串    木箱类型
    private String uuid;//        字符串    时间戳
    private String createTime;//        字符串    创建时间
    private List<MatList> matLists;//        是    列表    拆垛货物信息(2箱,尾箱可能1箱)
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -79,9 +79,8 @@
    @Override
    @Transactional
    public void trussComb(TrussCombParam param, Long userId) {
//        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
//            throw new CoolException(BaseRes.PARAM);
//        }
        param.setUuid(String.valueOf(new Date().getTime()));
    }
    @Override
    @Transactional
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -654,11 +654,12 @@
        if (param.getLabResult().equals("OK")){
            wrkMast.setWrkSts(54L);
            wrkMast.setStaNo(144);
            if (!wrkMastService.updateById(wrkMast)){
                throw new CoolException("异常,请重新申请");
            }
        }else if (param.getLabResult().equals("NG")){
            wrkMast.setWrkSts(52L);
            wrkMast.setWrkSts(52L);//重新贴标
            if (!wrkMastService.updateById(wrkMast)){
                throw new CoolException("异常,请重新申请");
            }
@@ -819,7 +820,7 @@
        wrkMast.setIoTime(now);
        wrkMast.setWrkSts(51L); // 工作状态:生成入库ID
        wrkMast.setIoType(202); // 入出库状态:202.拆垛后出库
        wrkMast.setIoPri(13D); // 优先级
        wrkMast.setIoPri(99D); // 优先级
        wrkMast.setSourceStaNo(param.getDevNo$());
        wrkMast.setStaNo(140); //贴标站点
        // 操作人员数据
src/main/java/com/zy/asrs/task/BarcodeUploadScheduler.java
@@ -17,7 +17,7 @@
    private BarcodeUploadHandler barcodeUploadHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    private void execute(){//条码上传中控
        int[] staNos =new int[]{216,220};
        for (int staNo : staNos){
            ReturnT<String> result = barcodeUploadHandler.start(staNo);
src/main/java/com/zy/asrs/task/BareBoardScheduler.java
@@ -28,7 +28,7 @@
    private ConfigService configService;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    private void execute(){//自动调空板出库
        Config config = configService.selectById(10468);
        if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){
            bareBoardHandler.start();
src/main/java/com/zy/asrs/task/RailwayPlatformScheduler.java
New file
@@ -0,0 +1,30 @@
package com.zy.asrs.task;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.RailwayPlatformHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
 * Created by Monkey D. Luffy on 2023.09.17
 * 徐工汉云..............以下.............上饶江铜.............自动补空板
 */
@Component
public class RailwayPlatformScheduler {
    @Autowired
    private RailwayPlatformHandler railwayPlatformHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){//上报月台
        int[] staNos =new int[]{144};
        for (int staNo : staNos){
            ReturnT<String> result = railwayPlatformHandler.start(staNo);
            if (result.getCode()==200){
                break;
            }
        }
    }
}
src/main/java/com/zy/asrs/task/handler/BarcodeUploadHandler.java
@@ -53,7 +53,7 @@
    public ReturnT<String> start(int staNo) {
        try {
            BasDevp basDevp = basDevpService.selectById(staNo);
            if (!Cools.isEmpty(basDevp) && !Cools.isEmpty(basDevp.getBarcode()) && basDevp.getWrkNo()==9992){
            if (!Cools.isEmpty(basDevp) && !Cools.isEmpty(basDevp.getBarcode()) && basDevp.getWrkNo()==9992){ //上传前工作号跟电控约定为9992(你可以自定义)
                WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", basDevp.getBarcode()));
                if (Cools.isEmpty(waitPakin)){
                    ReturnT<String> result = null;
@@ -102,7 +102,7 @@
                            "上报erp系统",
                            erpUrl + erpPath,
                            null,
                            "127.0.0.1",
                            erpUrl,
                            JSON.toJSONString(combParam),
                            response,
                            success
src/main/java/com/zy/asrs/task/handler/RailwayPlatformHandler.java
New file
@@ -0,0 +1,121 @@
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.*;
import com.zy.asrs.entity.param.BalconyWrkMastParam;
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 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 java.util.List;
/**
 * Created by Monkey D. Luffy on 2023.09.17
 * 徐工汉云..............以下.............上饶江铜.............自动上报月台
 */
@Slf4j
@Service
@Transactional
public class RailwayPlatformHandler extends AbstractHandler<String> {
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private OrderService orderService;
    @Value("${srXghyErp.url}")
    private String erpUrl;
    @Value("${srXghyErp.railwayPlatformpath}")
    private String railwayPlatformpath;
    public ReturnT<String> start(int staNo) {
        try {
            BasDevp basDevp = basDevpService.selectById(staNo);
            if (!Cools.isEmpty(basDevp) && !Cools.isEmpty(basDevp.getWrkNo()) && basDevp.getWrkNo()<9990){
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()).eq("sta_no", staNo).eq("wrk_sts", 55L));
                if (!Cools.isEmpty(wrkMast)){
                    List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
                    BalconyWrkMastParam balconyWrkMastParam = new BalconyWrkMastParam(wrkMast, wrkDetls);
                    ReturnT<String> result = null;
                    for (int i=1;i<7;i++){
                        balconyWrkMastParam.setBalcony(i);
                        result = postMesData(railwayPlatformpath,balconyWrkMastParam);
//                        System.out.println(result);
                        if (result.getCode()==200){
                            return SUCCESS;
                        }else {
                            log.error("出库信息上传中控失败,月台编号{}",i);
                        }
                    }
                }
            }
        }catch (Exception e){
            log.error("异常!!!"+e);
            return FAIL;
        }
        return FAIL;
    }
    private ReturnT<String> postMesData(String erpPath,Object combParam){
        if(combParam != null){
            String response = "";
            boolean success = false;
            try {
                response = new HttpHandler.Builder()
                        .setUri(erpUrl)
                        .setPath(erpPath)
                        .setJson(JSON.toJSONString(combParam))
                        .build()
                        .doPost();
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getString("result").equals("Y")) {
                    success = true;
                } else {
                    log.error("请求接口失败!!!url:{};request:{};response:{}"+erpUrl+erpPath, JSON.toJSONString(combParam), response);
                    throw new CoolException("上报erp系统失败");
                }
            } catch (Exception e) {
                log.error("fail", e);
//                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg(e.getMessage());
            } finally {
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "上报erp系统",
                            erpUrl + erpPath,
                            null,
                            erpUrl,
                            JSON.toJSONString(combParam),
                            response,
                            success
                    );
                } catch (Exception e) { log.error("", e); }
            }
        }
        return SUCCESS;
    }
}
src/main/resources/application.yml
@@ -62,6 +62,7 @@
  url: 192.168.101.250:1082
  # 码垛位条码上报
  barcodeUploadPath: EosServer/PluginGateway.ashx?pluginid=DataIOHttp&func=senddata&userno=ASRS&sign=5DD885999945BA2F3DC9A61F1B857DB3&dataname=cprkwc
  railwayPlatformpath: EosServer/PluginGateway.ashx?pluginid=DataIOHttp&func=senddata&userno=ASRS&sign=5DD885999945BA2F3DC9A61F1B857DB3&dataname=cprkwc
  # 入库上报
  inPath: EosServer/PluginGateway.ashx?pluginid=DataIOHttp&func=senddata&userno=ASRS&sign=5DD885999945BA2F3DC9A61F1B857DB3&dataname=cprkwc
  # 出库上报