自动化立体仓库 - WMS系统
zjj
2024-11-19 d47f3a55e5f7b4328ad1bd2e059f03e5c0c4151a
#led task
2个文件已添加
6个文件已修改
243 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/command/LedCommand.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/MatDto.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkDetlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkDetlMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/command/LedCommand.java
New file
@@ -0,0 +1,53 @@
package com.zy.asrs.command;
import com.core.common.Cools;
import com.zy.asrs.entity.param.MatDto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * led命令报文
 * Created by vincent on 2020/8/11
 */
@Data
public class LedCommand extends Object {
    private String title;
    private Integer workNo;
    private Integer staNo;
    private Integer sourceStaNo;
    private String locNo;
    private String sourceLocNo;
    private List<MatDto> matDtos = new ArrayList<>();
    private boolean emptyMk = false;
    private Integer ioType;
    private String barcode;
    @Override
    public String toString() {
        StringBuffer s = new StringBuffer();
        s.append("工作号[" + this.workNo + "]\n");
        s.append("工作类型[" + this.title + "]\n");
        if (!Cools.isEmpty(this.barcode)) {
            s.append("托盘码[" + this.barcode + "]\n");
        }
        if (!this.emptyMk){
            for (MatDto matDto : matDtos) {
                s.append("[商品编码:" + matDto.getMatnr() + ", 数量:" + matDto.getCount() + "]\n");
            }
        }
        return s.toString();
    }
}
src/main/java/com/zy/asrs/entity/param/MatDto.java
New file
@@ -0,0 +1,63 @@
package com.zy.asrs.entity.param;
import lombok.Data;
/**
 * Created by vincent on 2020/8/6
 */
@Data
public class MatDto {
    // 物料编号
    private String matnr;
    // 物料名称
    private String maknx;
    private String batch;
    private String specs;
    // 客户信息
    private String manu;
    // 备注
    private String memo;
    // 物料数量
    private Double count;
    private Double total;
    public MatDto() {
    }
    public MatDto(String matnr, String maknx, String batch, String specs, String manu, String memo, Double count, Double total) {
        this.matnr = matnr;
        this.maknx = maknx;
        this.batch = batch;
        this.specs = specs;
        this.manu = manu;
        this.memo = memo;
        this.count = count;
        this.total = total;
    }
    public MatDto(String matNo, String maknx, Double count) {
        this.matnr = matNo;
        this.maknx = maknx;
        this.count = count;
    }
    public MatDto(String matNo, String maknx, Double count, String specs) {
        this.specs = specs;
        this.matnr = matNo;
        this.maknx = maknx;
        this.count = count;
    }
    public MatDto(String matNo, String maknx, Double count, Double total, String specs) {
        this.specs = specs;
        this.matnr = matNo;
        this.maknx = maknx;
        this.count = count;
        this.total = total;
    }
}
src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
@@ -30,4 +30,6 @@
    int updateIoTimeWms(@Param("workNo") Integer workNo, @Param("ioTime") Date ioTime);
    int updateIoTime(@Param("workNo") Integer workNo, @Param("ioTime") Date ioTime);
    List<WrkDetl> findByWorkNo(Integer workNo);
}
src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -26,4 +26,6 @@
    boolean updateIoTimeWms(Integer workNo, Date ioTime);
    boolean updateIoTime(Integer workNo, Date ioTime);
    List<WrkDetl> findByWorkNo(Integer wrkNo);
}
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -93,4 +93,8 @@
    public boolean updateIoTime(Integer workNo, Date ioTime) {
        return this.baseMapper.updateIoTime(workNo, ioTime) > 0;
    }
    @Override
    public List<WrkDetl> findByWorkNo(Integer workNo) {
        return this.baseMapper.findByWorkNo(workNo);
    }
}
src/main/java/com/zy/asrs/utils/Utils.java
@@ -529,14 +529,24 @@
            case 1:
                necessaryParameters[1] = 4;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 7;    //nearRow  最浅库位排
                necessaryParameters[3] = 6;    //nearRow  最浅库位排
                break;
            case 4:
                necessaryParameters[1] = 7;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 7;    //nearRow  最浅库位排
                break;
            case 7:
                necessaryParameters[1] = 9;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 11;    //nearRow  最浅库位排
                break;
            case 9:
                necessaryParameters[1] = 12;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 12;    //nearRow  最浅库位排
                break;
            case 9:
            case 12:
                necessaryParameters[1] = 14;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 14;    //nearRow  最浅库位排
src/main/java/com/zy/common/web/WcsController.java
@@ -6,8 +6,10 @@
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.command.LedCommand;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.entity.param.MatDto;
import com.zy.asrs.entity.result.KeyValueVo;
import com.zy.asrs.service.*;
import com.zy.common.CodeRes;
@@ -56,9 +58,106 @@
    @Autowired
    private WebSocketServer webSocketServer;
    @PostMapping("/led/getTask")
    @ResponseBody
    public synchronized R getledTask(@RequestBody Map<String, String> param) {
        String taskNo = param.get("taskNo");
        String sta = param.get("sta");
        // 命令集合
        List<LedCommand> commands = new ArrayList<>();
        if ("0".equals(sta)) {
            // 工作档集合
            List<WrkMast> wrkMasts = new ArrayList<>();
            // 获取工作档数据
            WrkMast wrkMast = wrkMastService.selectById(taskNo);
            if (null == wrkMast) { return R.error(); }
            wrkMasts.add(wrkMast);
            // 组装命令
            LedCommand ledCommand = new LedCommand();
            ledCommand.setWorkNo(wrkMast.getWrkNo());
            ledCommand.setIoType(wrkMast.getIoType());
            wrkMasts.add(wrkMast);
            // 出库模式
            switch (wrkMast.getIoType()) {
                case 1:
                    ledCommand.setTitle("全板入库");
                    break;
                case 10:
                    ledCommand.setTitle("空板入库");
                    break;
                case 101:
                    ledCommand.setTitle("全板出库");
                    break;
                case 103:
                    ledCommand.setTitle("拣料出库");
                    break;
                case 104:
                    ledCommand.setTitle("并板出库");
                    break;
                case 107:
                    ledCommand.setTitle("盘点出库");
                    break;
                case 110:
                    ledCommand.setTitle("空板出库");
                    ledCommand.setEmptyMk(true);
                    break;
                default:
                    break;
            }
            ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
            ledCommand.setStaNo(wrkMast.getStaNo());
            ledCommand.setBarcode(wrkMast.getBarcode());
            if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
                wrkDetls.forEach(wrkDetl -> {
                    Double total = 0.0;
                    EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
                    LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
                    if (Cools.isEmpty(locDetl)) {
                        total = wrkDetl.getAnfme();
                    } else {
                        total = locDetl.getAnfme();
                    }
                    if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
                    }
                    if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
                    }
                    if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
                    }
                });
            }
            commands.add(ledCommand);
            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
            // 修改主档led标记
            for (WrkMast wrkMast1 : wrkMasts) {
                wrkMast1.setOveMk("Y");
                wrkMast1.setModiTime(new Date());
                if (wrkMastService.updateById(wrkMast1)) {
                    throw new CoolException("更新工作档失败");
                }
            }
        }
        Map<String,Object> map=new HashMap<String, Object>();
        map.put("to",sta);
        map.put("message",Cools.add("type", "task").add("taskList",commands));
        webSocketServer.onMessage(JSONObject.toJSONString(map),null,sta);
        return R.ok();
    }
    @PostMapping("/led/getError")
    @ResponseBody
    public synchronized R getLocNo(@RequestBody Map<String, String> param) {
    public synchronized R getledError(@RequestBody Map<String, String> param) {
        String sta = param.get("sta");
        String message = param.get("msg");
        if (Cools.isEmpty(sta) || Cools.isEmpty(message)) {
src/main/resources/mapper/WrkDetlMapper.xml
@@ -108,6 +108,10 @@
          and wrk_no = #{workNo}
    </update>
    <select id="findByWorkNo" resultMap="BaseResultMap">
        select wrk_no, matnr, maktx, anfme ,specs,batch from asr_wrk_detl where 1=1 and wrk_no = #{workNo}
    </select>
    <select id="selectPakoutQuery" resultMap="BaseResultMap">
        select
        awd.*