自动化立体仓库 - WMS系统
*
L
3 小时以前 d7621e3cbf301453fe87ee584f34333378a5afb3
*
11个文件已修改
1个文件已添加
128 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasArmMast.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/OrderArmEndParam.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TaskArmCycleResultParam.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TaskArmWorkspaceStatusParam.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasArmMastMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasArmMastService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasArmMastServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderToSortLineScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasArmMastMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -26,7 +26,8 @@
public class OpenController extends BaseController {
    private static final boolean auth = true;
    private static final String  sign_arm = "|s|LABEL_0";
    private static final String  sign_arm_order = "|s|LABEL_";
    private static final String  sign_arm_sku = "|sku|LABEL_";
    public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
        add("ea1f0459efc02a79f046f982767939ae");
    }};
@@ -263,6 +264,9 @@
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        if (Cools.isEmpty(param.getArm_no())) {
            return R.error("机械臂编号[Arm_no]不能为空");
        }
        if (Cools.isEmpty(param.getOrder_id())) {
            return R.error("单据编号[order_id]不能为空");
        }
@@ -270,9 +274,9 @@
            return R.error("客人型号[pick_num]不能为空");
        }
        try{
            param.OrderIdTwo(sign_arm);
            param.OrderIdTwo(sign_arm_order,sign_arm_sku);
        } catch (Exception e){
            return R.error("单据编号[order_id]以"+sign_arm+"作为拆分标记拆分失败!!!");
            return R.error("单据编号[order_id]以 "+sign_arm_sku+" 与 "+sign_arm_order+" 作为拆分标记拆分失败!!!");
        }
        openService.taskArmCycleResult(param);
@@ -290,6 +294,9 @@
        auth(appkey, param, request);
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        if (Cools.isEmpty(param.getArm_no())) {
            return R.error("机械臂编号[Arm_no]不能为空");
        }
        if (Cools.isEmpty(param.getId())) {
            return R.error("单据编号[order_id]不能为空");
@@ -314,6 +321,9 @@
                                                 @RequestBody TaskArmErrorParam param,
                                                 HttpServletRequest request) {
        auth(appkey, param, request);
        if (Cools.isEmpty(param.getArm_no())) {
            return R.error("机械臂编号[Arm_no]不能为空");
        }
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
@@ -321,4 +331,32 @@
        return R.ok().add(param);
    }
    /**
     * 订单完成上报
     */
    @PostMapping("/arm/task/order_result")
    public synchronized R TaskArmWorkOrderStatus(@RequestHeader(required = false) String appkey,
                                                 @RequestBody OrderArmEndParam param,
                                                 HttpServletRequest request) {
        auth(appkey, param, request);
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        if (Cools.isEmpty(param.getArm_no())) {
            return R.error("机械臂编号[Arm_no]不能为空");
        }
        if (Cools.isEmpty(param.getOrder_id())) {
            return R.error("单据编号[order_id]不能为空");
        }
        try{
            param.OrderIdTwo(sign_arm_order,sign_arm_sku);
        } catch (Exception e){
            return R.error("单据编号[order_id]以 "+sign_arm_sku+" 与 "+sign_arm_order+" 作为拆分标记拆分失败!!!");
        }
        openService.taskArmWorkOrderStatus(param);
        return R.ok();
    }
}
src/main/java/com/zy/asrs/entity/BasArmMast.java
@@ -128,7 +128,7 @@
        this.upc = param.getUpc();
        this.supplier = param.getSupplier();
        this.createTime = param.getCreateTime();
        this.sortingLine = Integer.getInteger(param.getStaNo());
        this.sortingLine = Integer.parseInt(param.getStaNo());;
    }
    public BasArmMast(Integer armNo,Integer armDirection,Integer staNo,Integer sortingLine,Integer bindingTags,Long priority,Integer status,String matnr,String sku,String po,String upc,String supplier,String orderNo,Integer ctns,Long createTime,Long armError,String armMsg) {
src/main/java/com/zy/asrs/entity/param/OrderArmEndParam.java
New file
@@ -0,0 +1,26 @@
package com.zy.asrs.entity.param;
import lombok.Data;
/*
 *  Created by Monkey D. Luffy on 2025.09.09
 * */
@Data
public class OrderArmEndParam {
    //单据编号
    private String order_id;
    private int arm_no;
    private int done_num;//已完成的数量
    private int total_num;//预期需要完成的数量
    private String staNo;
    private String orderNo;
    private String sku;
    public void OrderIdTwo(String sign_order,String sign_sku){
        String[] split = order_id.split(sign_order);
        staNo = split[1];
        String[] split1 = split[0].split(sign_sku);
        orderNo = split1[1];
        sku = split1[0];
    }
}
src/main/java/com/zy/asrs/entity/param/TaskArmCycleResultParam.java
@@ -9,14 +9,18 @@
public class TaskArmCycleResultParam {
    //单据编号
    private String order_id;
    private int arm_no;
    //数量
    private String pick_num;
    private String staNo;
    private String orderNo;
    private String sku;
    public void OrderIdTwo(String sign){
        String[] split = order_id.split(sign);
        staNo = split[0];
        orderNo = split[1];
    public void OrderIdTwo(String sign_order,String sign_sku){
        String[] split = order_id.split(sign_order);
        staNo = split[1];
        String[] split1 = split[0].split(sign_sku);
        orderNo = split1[1];
        sku = split1[0];
    }
}
src/main/java/com/zy/asrs/entity/param/TaskArmWorkspaceStatusParam.java
@@ -8,6 +8,7 @@
@Data
public class TaskArmWorkspaceStatusParam {
    //单据编号
    private int arm_no;
    private String id;
    //数量
    private String type;//from|to,用于告知当前工作空间是抓取位还是放置位
src/main/java/com/zy/asrs/mapper/BasArmMastMapper.java
@@ -3,10 +3,12 @@
import com.zy.asrs.entity.BasArmMast;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasArmMastMapper extends BaseMapper<BasArmMast> {
    boolean updateArmMastStatus(@Param("armNo")int armNo, @Param("sortingLine")int sortingLine, @Param("status")int status, @Param("endStatus")int endStatus);
}
src/main/java/com/zy/asrs/service/BasArmMastService.java
@@ -4,5 +4,6 @@
import com.baomidou.mybatisplus.service.IService;
public interface BasArmMastService extends IService<BasArmMast> {
    boolean updateArmMastStatus(int armNo,int sortingLine,int status,int endStatus);
}
src/main/java/com/zy/asrs/service/OpenService.java
@@ -47,4 +47,5 @@
    void taskArmReport(TaskArmReportParam param);
    void taskArmCycleResult(TaskArmCycleResultParam param);
    void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param);
    void taskArmWorkOrderStatus(OrderArmEndParam param);
}
src/main/java/com/zy/asrs/service/impl/BasArmMastServiceImpl.java
@@ -8,5 +8,8 @@
@Service("basArmMastService")
public class BasArmMastServiceImpl extends ServiceImpl<BasArmMastMapper, BasArmMast> implements BasArmMastService {
    @Override
    public boolean updateArmMastStatus(int armNo,int sortingLine,int status,int endStatus){
        return this.baseMapper.updateArmMastStatus(armNo,sortingLine,status,endStatus);
    }
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -598,7 +598,7 @@
    @Transactional
    public void taskArmReport(TaskArmReportParam param) {
        BasArmMast basArmMast = new BasArmMast(param);
        List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().eq("sorting_line", basArmMast.getStaNo()));
        List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().eq("sorting_line", basArmMast.getSortingLine()));
        for (BasArm basArm : basArmList) {
            if (basArm.getStatus()!=1){
                continue;
@@ -615,6 +615,7 @@
        BasArmMast basArmMast = basArmMastService.selectOne(
                new EntityWrapper<BasArmMast>()
                        .eq("sorting_line", param.getStaNo())
                        .eq("arm_no", param.getArm_no())
                        .eq("status", 1)
        );
        if (Cools.isEmpty(basArmMast)){
@@ -630,15 +631,29 @@
    public void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param) {
        BasArmMast basArmMast = basArmMastService.selectOne(
                new EntityWrapper<BasArmMast>()
                        .eq("sta_no", Integer.getInteger(param.getId()))
                        .eq("sorting_line", Integer.getInteger(param.getId()))
                        .eq("arm_no", param.getArm_no())
                        .eq("status", 2)
        );
        if (Cools.isEmpty(basArmMast)){
            throw new CoolException("未查询到相关机械臂拆码垛任务!!!"+ JSON.toJSONString(param));
        }
        basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),2,3);
    }
//        basArmMast.setStatus(2);
//        basArmMastService.updateArmMastStatus(1,basArm.getSortingLine(),3,4);
    @Override
    @Transactional
    public void taskArmWorkOrderStatus(OrderArmEndParam param) {
        BasArmMast basArmMast = basArmMastService.selectOne(
                new EntityWrapper<BasArmMast>()
                        .eq("sorting_line", Integer.getInteger(param.getStaNo()))
                        .eq("arm_no", param.getArm_no())
                        .eq("status", 5)
        );
        if (Cools.isEmpty(basArmMast)){
            throw new CoolException("未查询到相关机械臂拆码垛任务!!!"+ JSON.toJSONString(param));
        }
        basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),5,6);
    }
}
src/main/java/com/zy/asrs/task/OrderToSortLineScheduler.java
@@ -37,7 +37,7 @@
        //获取未下发单据
        List<String> orderNos = orderService.AllStatusSatisfyOrder(0);
        if(orderNos == null || orderNos.isEmpty()) {
            log.info("未有新订单");
//            log.info("未有新订单");
            return;
        }
        //遍历单据
src/main/resources/mapper/BasArmMastMapper.xml
@@ -25,4 +25,13 @@
    </resultMap>
    <update id="updateArmMastStatus">
        update asr_bas_arm_mast
        set status = #{endStatus}
        where 1=1
          and arm_no = #{armNo}
          and sorting_line = #{sortingLine}
          and status = #{status}
    </update>
</mapper>